[Gnucash-changes] r11922 - gnucash/branches/goffice-update - Replace previous/fake goffice with real goffice-0.0.4 and libgsf-1.12.3.

Joshua Sled jsled at cvs.gnucash.org
Sun Nov 13 18:18:09 EST 2005


Author: jsled
Date: 2005-11-13 18:11:36 -0500 (Sun, 13 Nov 2005)
New Revision: 11922
Trac: http://svn.gnucash.org/trac/changeset/11922

Added:
   gnucash/branches/goffice-update/lib/goffice-0.0.4/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/AUTHORS
   gnucash/branches/goffice-update/lib/goffice-0.0.4/BUGS
   gnucash/branches/goffice-update/lib/goffice-0.0.4/COPYING
   gnucash/branches/goffice-update/lib/goffice-0.0.4/ChangeLog
   gnucash/branches/goffice-update/lib/goffice-0.0.4/INSTALL
   gnucash/branches/goffice-update/lib/goffice-0.0.4/MAINTAINERS
   gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/NEWS
   gnucash/branches/goffice-update/lib/goffice-0.0.4/README
   gnucash/branches/goffice-update/lib/goffice-0.0.4/aclocal.m4
   gnucash/branches/goffice-update/lib/goffice-0.0.4/config.guess
   gnucash/branches/goffice-update/lib/goffice-0.0.4/config.sub
   gnucash/branches/goffice-update/lib/goffice-0.0.4/configure
   gnucash/branches/goffice-update/lib/goffice-0.0.4/configure.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/depcomp
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice-plugins.mk
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice.mk
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file-priv.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-app.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-error-stack.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/goffice-app.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context-priv.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/module-plugin-defs.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-i18n.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-marshal.list
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvas.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvastypes.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/COPYING
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/get.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/internal.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/maketables.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/semantic.cache
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/study.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/goffice-data.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-config.h.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-features.h.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-priv.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/README
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/goffice-graph.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru-type-selector.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-eqn-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-cairo.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format-impl.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/formats.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marshalers.list
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-units.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-utils.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-win32-stub.def
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/svg-patterns.xml
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/install-sh
   gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-extract.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-merge.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-update.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/libgoffice-1.pc.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/ltmain.sh
   gnucash/branches/goffice-update/lib/goffice-0.0.4/missing
   gnucash/branches/goffice-update/lib/goffice-0.0.4/mkinstalldirs
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/area.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hboth.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hminus.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hplus.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-none.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vboth.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vminus.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vplus.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/boxplot.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bubble.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_boxplot_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bubble_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_3_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_3_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_contour_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_3_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_dropbar_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_dropbar_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_3_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_polar_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_3_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_ring_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_ring_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_3.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_1_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_1_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_2_1.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_2_2.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/column.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/doughnut.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/dropbar.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/linegraph.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/minmax.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/pie.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/polar.png
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/radar.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/scatter.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/stock.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/surface.xpm
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plot-types.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plugin.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plot-types.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plugin.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-series.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-ring-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plot-types.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plugin.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plot-types.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plugin.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plot-types.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plugin.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.glade
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plot-types.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plugin.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.h
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/plugin.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/reg-types.xml.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ChangeLog
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/Makefile.in.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/POTFILES.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/am.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/az.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/bg.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ca.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/cs.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/da.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/de.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/el.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_CA.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_GB.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/es.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/et.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fi.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fr.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ga.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/gl.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/he.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hr.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hu.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/it.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ja.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ko.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/lv.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ml.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/mr.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ms.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nb.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nl.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nn.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/no.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pl.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt_BR.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ro.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ru.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sk.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr at Latn.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sv.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/tr.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/uk.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/vi.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_CN.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_TW.po
   gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/
   gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.am
   gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.in
   gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/pie-demo.c
   gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/semantic.cache
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/AUTHORS
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/BUGS
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING.LIB
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/ChangeLog
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/HACKING
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/INSTALL
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/NEWS
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/README
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/TODO
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/acinclude.m4
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/aclocal.m4
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/compile
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.guess
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.sub
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/depcomp
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-docs.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-office-thumbnailer.1
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-overrides.txt
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-sections.txt
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf.types
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/api.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Bononbo.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Compression.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GIOChannel.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GnomeVFS.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfBlob.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfClipData.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Infile-reading-structed-files.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Input-from-unstructured-files.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-MS-OLE2.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Outfile-writing-structed-files.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Output-to-unstructured-files.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Reading-and-Writing-from-local-files-and-directories.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Structured-Blobs.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Text.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-XML-and-libxml.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Zip.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-memory.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-metadata.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-utils.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf.devhelp
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/home.png
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/into.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/io.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/ix01.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/left.png
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/misc.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/parsers.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/right.png
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/sources.html
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/style.css
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/up.png
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/blob.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/bonobo.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/compression.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnome-vfs.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-blob.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-clip-data.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-unused.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/infile.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/input.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/iochannel.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/memory.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/metadata.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/msole.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/outfile.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/output.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/stdio.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/text.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/utils.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/xml.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/zip.sgml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/version.xml.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/blob.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/bonobo.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/compression.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gnome-vfs.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-blob.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-clip-data.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/infile.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/input.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/iochannel.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/memory.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/metadata.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/msole.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/outfile.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/output.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/stdio.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/text.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/utils.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/xml.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/zip.xml
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-config.h.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-impl-utils.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-impl.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-impl.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-meta-names.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-impl.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-impl.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-impl.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-impl.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-utils.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf.h
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/version.c.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/gtk-doc.make
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/install-sh
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-extract.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-merge.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-update.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.pc.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.spec.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.pc.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.spec.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-win32-1.pc.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-zip.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/ltmain.sh
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/missing
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/mkinstalldirs
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/ChangeLog
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/Makefile.in.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/POTFILES.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/es.po
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/ChangeLog
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.defs
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.override
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsfmodule.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-bzip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cat-zip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-msole.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-zip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-dump-msole.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip1.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip2.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-input1.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-ls-zip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole-printf.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole1.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole2.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba-zip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-bzip.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip1.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip2.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-printf.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-outmem-printf.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-restore-msole.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-textline.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out-subdirs.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip1.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip2.c
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.am
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/gsf-office-thumbnailer.schemas.in
   gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/main.c
Removed:
   gnucash/branches/goffice-update/lib/goffice/
Modified:
   gnucash/branches/goffice-update/configure.in
   gnucash/branches/goffice-update/lib/Makefile.am
   gnucash/branches/goffice-update/src/gnome-utils/Makefile.am
   gnucash/branches/goffice-update/src/gnome-utils/gnc-html-graph-gog.c
Log:
Replace previous/fake goffice with real goffice-0.0.4 and libgsf-1.12.3.
- Import most of their configure.in's so they'll build in an integrated way.
- Modify them, as necessary, to be able to use {Gtk,Glib}-2.4 and Pango-1.6 if that's all that's available.
- Modify gnc-html-graph-gog.c to be less conditional.


Modified: gnucash/branches/goffice-update/configure.in
===================================================================
--- gnucash/branches/goffice-update/configure.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/configure.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -99,13 +99,6 @@
   ])
 ])
 
-## +jsled
-# copied from gnumeric for our lib/goffice/ stuffs.
-AC_CHECK_HEADERS(ieeefp.h ieee754.h)
-dnl Check for some functions
-AC_CHECK_FUNCS(random drand48 finite memmove mkdtemp uname times sysconf fmin)
-## --jsled
-
 STRUCT_TM_GMTOFF_CHECK
 SCANF_LLD_CHECK
 if test $am_cv_scanf_lld = "no"; then
@@ -441,76 +434,796 @@
 ### --------------------------------------------------------------------------
 ### for GOG/goffice...
 
-dnl If libgoffice-1 >= 0.0.3-2 and libgsf >= 1.12.2-1 are found, 
-dnl we need to omit lib/goffice and use the external library
-dnl because lib/goffice will not build with newer versions of libgsf.
+AC_MSG_CHECKING(for GTK - version >= 2.6.0)
+if $PKG_CONFIG 'gtk+-2.0 >= 2.6.0'
+then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(HAVE_GTK26,1,[System has gtk 2.6.0 or better])
+  HAVE_GTK26=yes
+else
+  AC_MSG_RESULT(no)
+fi
+AM_CONDITIONAL(HAVE_GTK26, test "x$HAVE_GTK26" = "xyes" )
 
-GOFFICE_REQUIRED=0.0.3
-GSF_REQUIRED=1.12.2
-AC_MSG_CHECKING([for GOffice and GSF])
-LIBGOFFICE_CFLAGS=`$PKG_CONFIG --silence-errors --cflags " libgoffice-1 >= $GOFFICE_REQUIRED"`
-LIBGOFFICE_LIBS=`$PKG_CONFIG --silence-errors --libs " libgoffice-1 >= $GOFFICE_REQUIRED"`
-LIBGSF_CFLAGS=`$PKG_CONFIG --silence-errors --cflags " libgsf-1 >= $GSF_REQUIRED"`
-LIBGSF_LIBS=`$PKG_CONFIG --silence-errors --libs " libgsf-1 >= $GSF_REQUIRED"`
-AC_SUBST(LIBGOFFICE_CFLAGS)
-AC_SUBST(LIBGOFFICE_LIBS)
 
-if test x"$LIBGOFFICE_LIBS" = x; then
-  AC_MSG_RESULT([No, GOffice not found, will build using internal goffice library.])
-  if test x"$LIBGSF_LIBS" != x; then
-    AC_MSG_NOTICE([Sorry, the internal goffice code cannot build with libgsf >= $GSF_REQUIRED.])
-    AC_MSG_ERROR([Please either install goffice or downgrade libgsf to earlier than $GSF_REQUIRED])
-    exit 1
-  fi
+AC_MSG_CHECKING(for pango version >= 1.8.0)
+if $PKG_CONFIG 'pango >= 1.8.0'
+then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(HAVE_PANGO18,1,[System has pango 1.8.0 or better])
+  HAVE_PANGO18=yes
 else
-  AC_MSG_RESULT([Yes, using GOffice])
-  AC_DEFINE(HAVE_GOFFICE,,[We have found an external GOffice])
-  HAVE_GOFFICE="use_external"
+  AC_MSG_RESULT(no)
 fi
-AM_CONDITIONAL(USE_LIBGOFFICE, [test x$HAVE_GOFFICE != x])
-AM_CONDITIONAL(USE_LIBGOFFICE, [test $HAVE_GOFFICE = "use_external"])
-AC_SUBST(USE_LIBGOFFICE)
+AM_CONDITIONAL(HAVE_PANGO18, test "x$HAVE_PANGO18" = "xyes" )
 
-###
-### GSF
-PKG_CHECK_MODULES(GSF, libgsf-1 >= 1.8.0
-                       libgsf-gnome-1 >= 1.8.0)
+
+# @@fixme 
+# use both PKG_CHECK_MODULES and `$PKG_CONFIG`; the first importantly sets
+# MUMBLE_{LIBS,CFLAGS}...
+# Q: What does PKG_CHECK_MODULES create?
+# A: Just _CFLAGS and _LIBS, apparently [pkg.m4]
+
+# $4=true => don't die in case of failure.
+PKG_CHECK_MODULES(GSF, libgsf-1 >= 1.12.2
+                       libgsf-gnome-1 >= 1.12.2,,true)
+if $PKG_CONFIG 'libgsf-1 >= 1.12.2'
+then
+  AC_DEFINE(HAVE_LIBGSF,1,[System has libgsf-1.12.2 or better])
+else
+  AC_MSG_NOTICE(using internally-packaged libgsf)
+  GSF_CFLAGS='-I${top_srcdir}/lib/libgsf-1.12.3'
+  GSF_LIBS='${top_builddir}/lib/libgsf-1.12.3/gsf/libgsf-1.la'
+fi
+AM_CONDITIONAL(HAVE_LIBGSF, test "x$HAVE_LIBGSF" = "xyes")
+AC_SUBST(GSF_CFLAGS)
 AC_SUBST(GSF_LIBS)
-AC_SUBST(GSF_CFLAGS)
 
-### libart
-PKG_CHECK_MODULES(ART, libart-2.0 >= 2.3.11)
-AC_SUBST(ART_LIBS)
-AC_SUBST(ART_CFLAGS)
+# $4=true => don't die if failure.
+PKG_CHECK_MODULES(GOFFICE, goffice >= 0.0.4,,true)
+if $PKG_CONFIG 'goffice >= 0.0.4'
+then
+  AC_DEFINE(HAVE_LIBGOFFICE,1,[System has goffice-0.0.4 or better])
+else
+  AC_MSG_NOTICE(using internally-packaged goffice)
+  GOFFICE_CFLAGS='-I${top_srcdir}/lib/goffice-0.0.4'
+  GOFFICE_LIBS='${top_builddir}/lib/goffice-0.0.4/goffice/libgoffice-1.la'
+fi
+AM_CONDITIONAL(HAVE_GOFFICE, test "x$HAVE_GOFFICE" = "xyes")
+AC_SUBST(GOFFICE_CFLAGS)
+AC_SUBST(GOFFICE_LIBS)
 
-### silence convention-difference from cut-n-paste'd gnumeric Makefile.am's:
-AM_CONDITIONAL(WITH_GNOME, true)
-# for lib/goffice/graph/plugins/plot_barcol/gog-1.5d.c's use of
-# goffice/graph/gog-error-bar.h:gog_error_bar_prefs, which is bounded by
-# WITH_GTK for some reason... :/
-AM_CONDITIONAL(WITH_GTK, true)
-AC_DEFINE(WITH_GTK, 1, [Define if UI is built])
+### ----------
 
-### gnome-print [= gnome-font]
-PKG_CHECK_MODULES(PRINT, libgnomeprint-2.2 >= 2.5.2)
-AC_SUBST(PRINT_LIBS)
-AC_SUBST(PRINT_CFLAGS)
+### +libgsf-1.12.3
 
-AC_ARG_VAR(GLIB_GENMARSHAL, [Absolute path of the glib-genmarshal executable.])
-AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
+AC_MSG_NOTICE('internal libgsf configuration')
 
-gog_plugindir='${GNC_LIBDIR}/plugins'
-# do this to minimize changes in the plugin makefiles...
-gnumeric_plugindir='${gog_plugindir}'
-AC_SUBST(gog_plugindir)
-AC_SUBST(gnumeric_plugindir)
-#AC_SUBST(pkglibdir) -- this breaks builds into /opt.
-gnumeric_icondir='${GNC_SHAREDIR}/pixmaps'
-AC_SUBST(gnumeric_icondir)
+m4_define([libgsf_version_major], [1])
+m4_define([libgsf_version_minor], [12])
+m4_define([libgsf_version_micro], [3])
+m4_define([libgsf_version_extra], [])
+m4_define([libgsf_full_version],
+    [libgsf_version_major.libgsf_version_minor.libgsf_version_micro[]libgsf_version_extra])
 
+AC_CONFIG_SRCDIR(lib/libgsf-1.12.3/gsf/gsf.h)
 
-# /GOG
+AC_SUBST(LIBGSF_MAJOR_VERSION, libgsf_version_major)
+AC_SUBST(LIBGSF_MINOR_VERSION, libgsf_version_minor)
+AC_SUBST(LIBGSF_MICRO_VERSION, libgsf_version_micro)
 
+dnl Version info for libraries = CURRENT:REVISION:AGE
+AC_SUBST(VERSION_INFO,
+m4_eval(libgsf_version_major + libgsf_version_minor)[]dnl
+:libgsf_version_micro:libgsf_version_minor)
+
+AC_CONFIG_HEADERS(lib/libgsf-1.12.3/gsf-config.h)
+
+AC_FUNC_FSEEKO
+AC_SYS_LARGEFILE
+
+dnl Checks for libraries.
+ifelse([
+  If we defined the module lists on the M4 level, we could have problems
+  with PKG_CHECK_MODULES from pkgconfig 0.16.0, which double quotes its
+  second argument (the module list).
+  As a handy workaround, we use shell variables.
+])
+dnl Modules common to libgsf and libgsf-gnome
+libgsf_reqs="
+    gobject-2.0 >= 2.4.0
+    glib-2.0 >= 2.4.0
+    libxml-2.0 >= 2.4.16
+"
+dnl Modules required for libgsf-gnome
+libgsf_gnome_reqs="
+    $libgsf_reqs
+    libbonobo-2.0 >= 2.0.0
+    gnome-vfs-2.0 >= 2.2.0
+    gnome-vfs-module-2.0 >= 2.2.0
+"
+PKG_CHECK_MODULES(LIBGSF, $libgsf_reqs)
+
+# this should come after `AC_PROG_CC'
+#ifdef([GNOME_COMPILE_WARNINGS],[GNOME_COMPILE_WARNINGS],)
+#CFLAGS="$CFLAGS $WARN_CFLAGS -DG_DISABLE_DEPRECATED"
+
+#if test "$GCC" = "yes"; then
+#	for option in -Wno-system-headers -Wfloat-equal -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wformat -Wnested-externs -Winline -Wdeclaration-after-statement -Wundef -W -Wmissing-noreturn -Wmissing-format-attribute; do
+#		SAVE_CFLAGS="$CFLAGS"
+#		CFLAGS="$CFLAGS $option"
+#		AC_MSG_CHECKING([whether gcc understands $option])
+#		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
+#			has_option=yes,
+#			has_option=no)
+#		if test $has_option = no; then
+#		  CFLAGS="$SAVE_CFLAGS"
+#		fi
+#		AC_MSG_RESULT($has_option)
+#		unset has_option
+#		unset SAVE_CFLAGS
+#	done
+#	unset option
+#fi
+
+AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
+if test $fdopen_works = no ; then
+	unset ac_cv_have_decl_fdopen
+	CFLAGS="$CFLAGS -D_POSIX_SOURCE"
+	AC_MSG_NOTICE([adding -D_POSIX_SOURCE to CFLAGS])
+	AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
+	if test $fdopen_works = no ; then
+		AC_MSG_ERROR([fdopen is not available])
+	fi
+fi
+
+# Unfortunately, -D_POSIX_SOURCE turns off struct timeval on Solaris
+AC_MSG_CHECKING([whether struct timeval is available])
+for try in 1 2; do
+	AC_COMPILE_IFELSE(
+		[AC_LANG_PROGRAM(
+			[[#include <sys/time.h>]],
+			[[struct timeval tv;]])],
+		struct_timeval_works=yes,
+		struct_timeval_works=no)
+	test $struct_timeval_works = yes && break
+	# Try this for the second attempt:
+	test $try = 1 && CFLAGS="$CFLAGS -D__EXTENSIONS__"
+done
+AC_MSG_RESULT($struct_timeval_works)
+if test $struct_timeval_works = no ; then
+	AC_MSG_ERROR([struct timeval is not available])
+fi
+
+AC_MSG_CHECKING([whether -D_BSD_SOURCE is needed for caddr_t])
+AC_COMPILE_IFELSE(
+	[AC_LANG_PROGRAM([[#include <sys/types.h>]], [[caddr_t ca]])],
+	need_bsd1=no,
+	need_bsd1=yes)
+AC_MSG_RESULT($need_bsd1)
+
+AC_MSG_CHECKING([whether -D_BSD_SOURCE is needed for lstat])
+AC_LINK_IFELSE([AC_LANG_PROGRAM(
+[[#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>]],
+[[void *ptr = &lstat]])],
+need_bsd2=no, need_bsd2=yes)
+AC_MSG_RESULT($need_bsd2)
+if test $need_bsd1 = yes -o $need_bsd2 = yes; then
+	CFLAGS="$CFLAGS -D_BSD_SOURCE"
+fi
+
+AC_TYPE_MODE_T
+AC_CHECK_HEADERS(fcntl.h malloc.h unistd.h io.h)
+AC_FUNC_MMAP
+
+AC_CHECK_FUNCS(chown)
+
+SAVE_CFLAGS=$CFLAGS
+SAVE_LIBS=$LIBS
+CFLAGS="$CFLAGS $LIBGSF_CFLAGS"
+LIBS="$LIBGSF_LIBS $LIBS"
+AC_MSG_CHECKING([for g_chmod])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <glib/gstdio.h>]], [[(void)g_chmod("/xxx",0777);]])],
+               [AC_DEFINE(HAVE_G_CHMOD, 1, [Define if g_chmod is available as macro or function])
+		AC_MSG_RESULT(yes)],
+	       [AC_MSG_RESULT(no)])
+AC_MSG_CHECKING([for g_access])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <glib/gstdio.h>]], [[(void)g_access("/xxx",0777);]])],
+               [AC_DEFINE(HAVE_G_ACCESS, 1, [Define if g_access is available as macro or function])
+		AC_MSG_RESULT(yes)],
+	       [AC_MSG_RESULT(no)])
+CFLAGS=$SAVE_CFLAGS
+LIBS=$SAVE_LIBS
+
+AC_MSG_CHECKING([whether macro S_ISREG is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[[#include <sys/types.h>
+#include <sys/stat.h>]],
+[[S_ISREG(S_IFMT);]])],
+	[macro_s_isreg=yes],
+	[AH_TEMPLATE([S_ISREG], [Define S_ISREG if stat.h doesn't])
+	 AC_DEFINE([S_ISREG(m)], [(((m) & S_IFMT) == S_IFREG)])
+	 macro_s_isreg=no])
+AC_MSG_RESULT($macro_s_isreg)
+
+AC_MSG_CHECKING([for native Win32])
+case $host in
+  *-*-mingw*)
+    native_win32=yes
+    ;;
+  *)
+    native_win32=no
+    ;;
+esac
+AC_MSG_RESULT([$native_win32])
+AM_CONDITIONAL(OS_WIN32, test "$native_win32" = yes)
+
+AC_MSG_CHECKING([for Win32 platform in general])
+case $host in
+  *-*-mingw*|*-*-cygwin*)
+    platform_win32=yes
+    ;;
+  *)
+    platform_win32=no
+    ;;
+esac
+AC_MSG_RESULT($platform_win32)
+AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = yes)
+
+##################################################
+# Checks for gtk-doc and docbook-tools
+##################################################
+gtk_doc_installed=true
+#ifdef([GTK_DOC_CHECK],[GTK_DOC_CHECK([1.0])],[gtk_doc_installed=false])
+# I would have liked to conditionalize this, but 
+# that appears to break other things http://bugzilla.gnome.org/show_bug.cgi?id=156399
+GTK_DOC_CHECK([1.0])
+AM_CONDITIONAL(GTK_DOC_INSTALLED, $gtk_doc_installed)
+
+dnl ***********************************************************************************
+# Check for zlib.
+_cppflags=$CPPFLAGS
+_ldflags=$LDFLAGS
+
+Z_DIR= Z_LIBS= Z_CPPFLAGS=
+
+AC_ARG_WITH(zlib,
+        [[  --with-zlib=DIR       use libz in DIR]],
+        [case $withval in
+         yes|no) ;;
+         *)     Z_DIR=$withval
+                CPPFLAGS="${CPPFLAGS} -I$withval/include"
+                LDFLAGS="${LDFLAGS} -L$withval/lib"
+                ;;
+         esac])
+
+if test "x$with_zlib" != xno; then
+        with_zlib=no
+        AC_CHECK_HEADER(zlib.h, [AC_CHECK_LIB(z, gzread, [with_zlib=yes])])
+fi
+if test "$with_zlib" = no; then
+        AC_MSG_ERROR([*** zlib is required])
+fi
+if test "x$Z_DIR" != "x"; then
+        Z_CPPFLAGS="-I$Z_DIR/include"
+        case $host in
+        *-*-solaris*)   Z_LIBS="-L$Z_DIR/lib -R$Z_DIR/lib -lz" ;;
+        *)              Z_LIBS="-L$Z_DIR/lib -lz" ;;
+        esac
+else
+        Z_LIBS="-lz"
+fi
+AC_SUBST(Z_CPPFLAGS)
+AC_SUBST(Z_LIBS)
+
+CPPFLAGS=${_cppflags}
+LDFLAGS=${_ldflags}
+
+dnl bz2
+dnl
+BZ2_LIBS=
+test_bz2=true
+AC_ARG_WITH(bz2,
+	[--{with,without}-bz2   Build additional wrappers for BZ2],
+	if test "x$withval" = xno; then
+		test_bz2=false
+	fi
+)
+
+with_bz2=false
+if test "x$test_bz2" = xtrue ; then
+   AC_CHECK_LIB(bz2, BZ2_bzDecompressInit, 
+		bz2_ok=yes,
+		bz2_ok=no
+		AC_MSG_WARN(*** BZ2 support disabled (BZ2 library not found) ***))
+
+   if test "$bz2_ok" = yes; then
+      AC_MSG_CHECKING([for bzlib.h])
+      AC_PREPROC_IFELSE(
+	[AC_LANG_SOURCE(
+	[[#include <stdio.h>
+	#undef PACKAGE
+	#undef VERSION
+	#undef HAVE_STDLIB_H
+	#include <bzlib.h>]])],
+        bz2_ok=yes,
+        bz2_ok=no)
+      AC_MSG_RESULT($bz2_ok)
+   fi
+
+   if test "$bz2_ok" = yes; then
+	AC_DEFINE(HAVE_BZ2, 1, [Is bzip2 available and enabled])
+	BZ2_LIBS="-lbz2"
+   else
+	AC_MSG_WARN(*** BZ2 support disabled (BZ2 header not found) ***)
+   fi
+else
+   AC_MSG_WARN([BZ2 support disabled, as requested (Use --with-bz2 to enable)])
+fi
+
+AC_SUBST(BZ2_LIBS)
+
+dnl ***********************************************************************************
+
+dnl gnome
+dnl
+want_gnome=auto
+AC_ARG_WITH(gnome,
+	[--{with,without}-gnome   Build additional wrappers for GNOME-VFS and BONOBO],
+	[case $withval in
+	yes) want_gnome=yes;;
+	no) want_gnome=no;;
+	esac[]dnl
+])
+have_gnome=no
+if  test $want_gnome = no ; then 
+    AC_MSG_WARN([GNOME support disabled, as requested (Use --with-gnome to enable)])
+else
+    PKG_CHECK_MODULES(LIBGSF_GNOME, $libgsf_gnome_reqs,
+	[have_gnome=yes],
+	[if test $want_gnome = yes; then
+	    AC_MSG_ERROR([GNOME support requested, but not available.])
+	 else
+	    AC_MSG_WARN([GNOME support disabled, unable to find required version of VFS and/or Bonobo])
+	 fi])
+fi
+AM_CONDITIONAL(WITH_LIBGSF_GNOME, test $have_gnome = yes)
+
+# GConf configuration
+dnl Don't publish the GCONFTOOL variable, AM_GCONF_SOURCE_2 has ``gconftool-2'' hardwired.
+GCONFTOOL=
+AC_CHECK_PROG([GCONFTOOL], [gconftool-2], [gconftool-2], [no])
+if test "x$GCONFTOOL" = "xno"; then
+    AC_MSG_WARN([thumbnailer will not be built, unable to find gconftool-2])
+else
+    AM_GCONF_SOURCE_2
+fi
+AM_CONDITIONAL(WITH_GCONF, test "x$GCONFTOOL" != "xno")
+
+LDFLAGS="-no-undefined $LDFLAGS"
+
+# turn off unneeded python support
+AM_CONDITIONAL(WITH_PYTHON, false)
+
+# -libgsf-1.12.3
+
+# +goffice-0.0.4
+
+AC_MSG_NOTICE('internal goffice configuration')
+
+m4_define([goffice_version_epoch], [0])
+m4_define([goffice_version_major], [0])
+m4_define([goffice_version_minor], [4])
+m4_define([goffice_version_extra], [])
+m4_define([goffice_full_version],
+    [goffice_version_epoch.goffice_version_major.goffice_version_minor[]goffice_version_extra])
+
+#AC_INIT([goffice], [goffice_full_version],
+#	[http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice])
+
+AC_CONFIG_SRCDIR(lib/goffice-0.0.4/goffice/goffice.h)
+
+AC_SUBST(GOFFICE_LIB_VERSION,
+m4_eval(goffice_version_epoch + goffice_version_major)[]dnl
+:goffice_version_minor:goffice_version_major)
+
+dnl This one is created by autoheader, ...
+AC_CONFIG_HEADERS(lib/goffice-0.0.4/goffice/goffice-config.h)
+
+dnl ... and this one is a small subset, maintained manually,
+dnl which will be installed.
+AC_CONFIG_HEADERS(lib/goffice-0.0.4/goffice/goffice-features.h)
+dnl
+dnl Make sure these two won't clash.  Put the following to goffice-config.h:
+AH_BOTTOM([/* Don't include goffice-features.h, it's a subset of goffice-config.h. */
+#define GOFFICE_FEATURES_H])
+
+dnl We use $host_os:
+#AC_CANONICAL_HOST
+
+AC_ISC_POSIX
+AC_PROG_CC
+AC_PROG_YACC
+AM_PROG_LEX
+AC_PROG_LN_S
+AM_PROG_LIBTOOL
+AC_STDC_HEADERS
+AC_SYS_LARGEFILE
+
+dnl Propagate Gnome-specific variable ACLOCAL_FLAGS to Makefile.
+AC_SUBST(ACLOCAL_AMFLAGS, $ACLOCAL_FLAGS)
+
+dnl The first call to PKG_CHECK_MODULES is inside an `if.'
+dnl We have to call PKG_PROG_PKG_CONFIG explicitly; otherwise it would
+dnl get expanded just before the first occurence of PKG_CHECK_MODULES
+dnl and might escape execution.
+PKG_PROG_PKG_CONFIG
+
+dnl *****************************
+#	libgsf-1		>= 1.12.2
+goffice_reqs="
+	glib-2.0		>= 2.4.8
+	gobject-2.0		>= 2.4.8
+	gmodule-2.0		>= 2.4.8
+	libxml-2.0		>= 2.4.12
+	pango			>= 1.6.0
+	pangoft2		>= 1.6.0
+"
+goffice_cairo_reqs="
+	cairo			>= 0.5.0
+"
+goffice_gtk_reqs="
+	gtk+-2.0		>= 2.4.14
+	libglade-2.0		>= 2.3.6
+	libgnomeprint-2.2	>= 2.8.2
+	libart-2.0		>= 2.3.11
+"
+goffice_gnome_reqs="
+	gconf-2.0
+	libgnomeui-2.0		>= 2.0.0
+	libgsf-gnome-1		>= 1.12.2
+"
+dnl *********************
+dnl Should we use cairo ?
+dnl *********************
+goffice_with_cairo=false
+AC_ARG_WITH(cairo, [  --{with,without}-cairo  Use cairo for graph rendering])
+if test "x$with_cairo" = xyes; then
+	cairo_msg="Enabled"
+	PKG_CHECK_MODULES(CAIRO, [$goffice_cairo_reqs])
+	AC_DEFINE(WITH_CAIRO, 1, [Define if goffice is build with cairo])
+	goffice_reqs="$goffice_reqs $goffice_cairo_reqs"
+	goffice_with_cairo=true
+else
+	cairo_msg="Disabled"
+	goffice_with_cairo=false
+fi 
+
+dnl *******************
+dnl Should we use gtk ?
+dnl *******************
+goffice_with_gtk=true
+AC_ARG_WITH(gtk, [  --without-gtk           Build without UI])
+if test "x$with_gtk" = xno; then
+	ui_msg="None (Gtk disabled by request)"
+	goffice_with_gtk=false
+else
+	dnl We shouldn't silently default to --without-gtk.
+	dnl If the requirements are not met, fail.
+	ui_msg="Gtk"
+	PKG_CHECK_MODULES(GTK, [$goffice_gtk_reqs])
+fi 
+
+goffice_with_gnome=$goffice_with_gtk
+if test "x$goffice_with_gtk" = "xtrue" ; then
+	AC_DEFINE(WITH_GTK, 1, [Define if UI is built])
+	goffice_reqs="$goffice_reqs $goffice_gtk_reqs"
+
+	dnl ************************************
+	dnl Are the GNOME extensions available ?
+	dnl ************************************
+
+	goffice_with_gnome=true
+	AC_ARG_WITH(gnome,
+		[  --{with,without}-gnome  Use GNOME extensions],
+		[if test "x$withval" = xno; then
+			goffice_with_gnome=false
+			ui_msg="Gtk+ (Gnome disabled by request)"
+		fi]
+	)
+	if test "x$goffice_with_gnome" = "xtrue"; then
+		PKG_CHECK_MODULES(GNOME, [$goffice_gnome_reqs],
+			[ui_msg="Gnome"],
+			[ui_msg="Gtk (missing gnome dependencies)" ; goffice_with_gnome=false])
+	fi
+
+	if test "x$goffice_with_gnome" = "xtrue"; then
+		AC_DEFINE(WITH_GNOME, 1, [Define if GNOME extensions are available])
+		goffice_reqs="$goffice_reqs $goffice_gnome_reqs"
+	fi
+fi
+AM_CONDITIONAL(WITH_CAIRO, $goffice_with_cairo)
+AM_CONDITIONAL(WITH_GTK,   $goffice_with_gtk)
+AM_CONDITIONAL(WITH_GNOME, $goffice_with_gnome)
+
+dnl ****************************
+dnl now that we have selected out libraries the whole collection in one
+dnl shot so that we can have a nice neat compile/link line
+dnl ****************************
+
+PKG_CHECK_MODULES(GOFFICE_DEPS, $goffice_reqs)
+
+dnl  Checks for Xft/XRender
+AC_CHECK_LIB(Xrender, XRenderFindFormat, 
+	[AC_SUBST(RENDER_LIBS, "-lXrender -lXext")
+	 AC_DEFINE(HAVE_RENDER, 1, [Define if libXrender is available.])],
+	[AC_SUBST(RENDER_LIBS, "")],
+	[-lXext])
+
+dnl *****************************
+AC_MSG_CHECKING([for Win32 platform])
+with_win32=no
+case $host_os in
+  mingw* | pw32* | cygwin*)
+    with_win32=yes
+    GOFFICE_PLUGIN_LDFLAGS="-Wl,--enable-runtime-pseudo-relo,--export-all-symbols $GOFFICE_PLUGIN_LDFLAGS"
+    AC_ARG_VAR(WINDRES, [The windres executable (used by win32 builds only).])
+    AC_CHECK_TOOL(WINDRES, windres, :)
+    ;;
+esac
+AC_MSG_RESULT($with_win32)
+AM_CONDITIONAL(WITH_WIN32, test $with_win32 = yes)
+
+dnl *****************************
+dnl FIXME: perhaps declare with AC_ARG_VAR?
+dnl	   If we use the initial value of a variable, we have to make it precious.
+dnl
+GOFFICE_PLUGIN_LDFLAGS="-avoid-version -no-undefined $GOFFICE_PLUGIN_LDFLAGS"
+GOFFICE_PLUGIN_LIBADD="\$(top_builddir)/lib/goffice-0.0.4/goffice/libgoffice-1.la $GOFFICE_DEPS_LIBS $GOFFICE_PLUGIN_LIBADD"
+AC_SUBST(GOFFICE_PLUGIN_LDFLAGS)
+AC_SUBST(GOFFICE_PLUGIN_LIBADD)
+
+dnl disable for in stable release, re-enable for development series
+# FIXME - we should enable these, but maybe not right now...  -jsled
+# CFLAGS="$CFLAGS -DG_DISABLE_DEPRECATED"
+# CFLAGS="$CFLAGS -DPANGO_DISABLE_DEPRECATED"
+# if test "x$goffice_with_gtk" = "xtrue"; then
+# 	CFLAGS="$CFLAGS -DGDK_PIXBUF_DISABLE_DEPRECATED"
+# 	CFLAGS="$CFLAGS -DGDK_DISABLE_DEPRECATED"
+# 	CFLAGS="$CFLAGS -DGDK_MULTIHEAD_SAFE"
+# 	CFLAGS="$CFLAGS -DGTK_DISABLE_DEPRECATED"
+# 	CFLAGS="$CFLAGS -DLIBGLADE_DISABLE_DEPRECATED"
+# fi
+# if test "x$goffice_with_gnome" = "xtrue"; then
+# 	CFLAGS="$CFLAGS -DGNOME_DISABLE_DEPRECATED"
+# 	CFLAGS="$CFLAGS -DBONOBO_DISABLE_DEPRECATED"
+# 	CFLAGS="$CFLAGS -DBONOBO_UI_DISABLE_DEPRECATED"
+# fi
+
+dnl ****************************
+dnl prep the pixmap generator
+dnl ****************************
+
+AC_ARG_VAR(GLIB_GENMARSHAL, [The glib-genmarshal executable.])
+AC_CHECK_PROG(GLIB_GENMARSHAL, glib-genmarshal, glib-genmarshal)
+
+AC_ARG_VAR(GDK_PIXBUF_CSOURCE, [The gdk-pixbuf-csource executable.])
+AC_CHECK_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, gdk-pixbuf-csource)
+
+## this should come after `AC_PROG_CC'
+#ifdef([GNOME_COMPILE_WARNINGS],
+#	[GNOME_COMPILE_WARNINGS] CFLAGS="$CFLAGS $WARN_CFLAGS",
+#	[]
+#)
+#set_more_warnings=yes
+#if test "$GCC" = "yes" -a "x$set_more_warnings" != "xno"; then
+#	for option in -Wsign-compare -Wpointer-arith -Wnested-externs -Wchar-subscripts -Wwrite-strings -Wdeclaration-after-statement -Wmissing-noreturn -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-format-attribute; do
+#		SAVE_CFLAGS="$CFLAGS"
+#		CFLAGS="$CFLAGS $option"
+#		AC_MSG_CHECKING([whether gcc understands $option])
+#		AC_TRY_COMPILE([], [],
+#			has_option=yes,
+#			has_option=no,)
+#		if test $has_option = no; then
+#		  CFLAGS="$SAVE_CFLAGS"
+#		fi
+#		AC_MSG_RESULT($has_option)
+#		unset has_option
+#		unset SAVE_CFLAGS
+#	done
+#	unset option
+#fi
+#AC_SUBST(WARN_CFLAGS)
+
+AC_CHECK_FUNC(gettimeofday,
+	[AC_DEFINE(HAVE_GETTIMEOFDAY, 1,
+		[Define if the gettimeofday function is available]
+	)])
+
+dnl M_PI
+AC_MSG_CHECKING([whether M_PI is available])
+AC_TRY_COMPILE([#include <math.h>], [double f = M_PI], works_without_bsd_source=yes, works_without_bsd_source=no)
+AC_MSG_RESULT($works_without_bsd_source)
+
+if test $works_without_bsd_source = no ; then
+	CFLAGS="$CFLAGS -D_BSD_SOURCE"
+	AC_MSG_CHECKING([whether M_PI is available with -D_BSD_SOURCE])
+	AC_TRY_COMPILE([#include <math.h>], [double f = M_PI], m_pi_works=yes, m_pi_works=no)
+	AC_MSG_RESULT($m_pi_works)
+	if test $m_pi_works = no ; then
+		AC_MSG_ERROR([M_PI is not available])
+	fi
+fi
+
+dnl
+dnl On Solaris finite() needs ieeefp.h
+dnl Either of these seem to signal IEEE754 math, see mathfunc.c
+dnl
+AC_CHECK_HEADERS(ieeefp.h ieee754.h)
+
+dnl Check for some functions
+AC_CHECK_FUNCS(random drand48 finite memmove mkdtemp uname times sysconf)
+
+dnl FIXME: Does this really belong here?
+AC_CHECK_FUNC(bind_textdomain_codeset,,[AC_CHECK_LIB(intl,bind_textdomain_codeset)])
+
+dnl isfinite is a macro on HPUX
+AC_TRY_COMPILE([#include <math.h>], [int a = isfinite(0.0)],
+	[AC_DEFINE(HAVE_ISFINITE, 1,
+		[Define if the isfinite() macro is available]
+	 )
+	], [])
+
+dnl
+dnl On BSD, we seem to need -lm for finite
+dnl
+if test $ac_cv_func_finite = no; then
+  AC_CHECK_LIB(m, finite,
+        [AC_DEFINE(HAVE_FINITE, 1,
+		[Define if the finite function is available]
+	 )
+         LIBS="$LIBS -lm"])
+fi
+
+dnl check for complete locale implementation
+AC_CHECK_HEADERS(langinfo.h)
+
+dnl Handle systems that have stuff in -lm.
+AC_CHECK_FUNCS(log)
+if test $ac_cv_func_log = no; then
+  AC_CHECK_LIB(m, log,
+        [AC_DEFINE(HAVE_LOG, 1,
+		[Define if the log function is available]
+	 )
+         LIBS="$LIBS -lm"])
+fi
+
+AC_DEFUN([GOFFICE_CHECK_FUNC],
+[AC_CHECK_FUNC([$1],
+	[],
+	[AC_DEFINE([GOFFICE_SUPPLIED_]AS_TR_CPP([$1]),
+		1,
+		[Define if G Office supplies $1.])])dnl
+])
+GOFFICE_CHECK_FUNC(log1p)
+GOFFICE_CHECK_FUNC(expm1)
+GOFFICE_CHECK_FUNC(asinh)
+GOFFICE_CHECK_FUNC(acosh)
+GOFFICE_CHECK_FUNC(atanh)
+
+float_msg=no
+EXTRA_LIBS= EXTRA_INCLUDES=
+AC_C_LONG_DOUBLE
+if test $ac_cv_c_long_double = yes; then
+    have_mandatory_funcs=yes
+    need_sunmath=0
+    sunmathlinkstuff='-L/opt/SUNWspro/lib -R/opt/SUNWspro/lib -lsunmath'
+    for ldfunc in fabsl logl log10l ceill floorl powl isnanl finitel; do
+	    AC_CHECK_FUNC($ldfunc,
+		  ,
+		  [AC_CHECK_LIB(m,
+		      $ldfunc,
+		      ,
+		      [AC_CHECK_LIB(sunmath,
+			  $ldfunc,
+			  [ if test $need_sunmath = 0; then
+				# FIXME: better idea?
+				LDFLAGS="$LDFLAGS $sunmathlinkstuff"
+				sunmathinclude=`ls -d /opt/SUNWspro/*/include/cc | sed '$!d'`
+				CPPFLAGS="$CPPFLAGS -I$sunmathinclude"
+			    fi
+			    need_sunmath=1 ],
+			  [have_mandatory_funcs=no],
+			  [-L/opt/SUNWspro/lib $GOFFICE_DEPS_LIBS])])])
+    done
+    if test $need_sunmath = 1; then
+	EXTRA_LIBS="$EXTRA_LIBS $sunmathlinkstuff"
+	EXTRA_INCLUDES="$EXTRA_INCLUDES -I$sunmathinclude"
+	AC_CHECK_HEADERS([sunmath.h floatingpoint.h],
+			 ,
+			 [AC_MSG_WARN([Long doubles require the $ac_header header.])
+			  have_mandatory_funcs=no])
+    fi
+    unset need_sunmath
+    unset sunmathlinkstuff
+    unset sunmathinclude
+
+    GOFFICE_CHECK_FUNC(modfl)
+    GOFFICE_CHECK_FUNC(ldexpl)
+    GOFFICE_CHECK_FUNC(frexpl)
+
+    AC_CHECK_FUNCS(strtold)
+    if test "$ac_cv_func_strtold" = yes; then
+	AC_MSG_CHECKING([if we must prototype strtold ourselves])
+	AC_TRY_RUN([#include <stdlib.h>
+		int main ()
+		{
+			const char *s = "+3.1415e+0";
+			char *theend;
+			long double res = strtold (s, &theend);
+			return !(*theend == 0 && finitel (res) &&
+				 res >= 3.14 && res <= 3.15);
+		}],
+		[AC_MSG_RESULT(no)],
+		[AC_MSG_RESULT(yes)
+		 AC_DEFINE([GOFFICE_SUPPLIED_STRTOLD], 1,
+			   [Define if G Office supplies strtold.])
+		],
+		[AC_MSG_RESULT(assuming not)])
+    else 
+	AC_DEFINE([GOFFICE_SUPPLIED_STRTOLD], 1,
+		  [Define if G Office supplies strtold.])
+	AC_CHECK_FUNCS(string_to_decimal decimal_to_quadruple)
+	if test "x$ac_cv_func_string_to_decimal" != "xyes" || \
+	   test "x$ac_cv_func_decimal_to_quadruple" != "xyes" || \
+	   test "x$ac_cv_header_floatingpoint_h" != "xyes"; then
+		AC_MSG_WARN([You lack the strtold function -- precision will be impaired])
+	fi
+    fi
+    if test "$have_mandatory_funcs" = yes; then
+	float_msg=yes
+	AC_DEFINE([GOFFICE_WITH_LONG_DOUBLE], 1,
+		  [Define if G Office supports long double.])
+    else
+	AC_MSG_WARN([Long double support disabled because of library problems])
+    fi
+    unset have_mandatory_funcs
+fi
+AC_SUBST(EXTRA_LIBS)
+AC_SUBST(EXTRA_INCLUDES)
+
+dnl ******************
+dnl * Config defaults
+dnl ******************
+dnl
+dnl These are changed in goffice.c for WIN32 packages
+AC_SUBST(goffice_datadir, '${datadir}/goffice/${GOFFICE_VERSION}')
+AC_SUBST(goffice_libdir, '${libdir}/goffice/${GOFFICE_VERSION}')
+AC_SUBST(goffice_icondir, '${datadir}/pixmaps/goffice')
+AC_SUBST(goffice_localedir, '${prefix}/${DATADIRNAME}/locale')
+dnl
+AC_SUBST(goffice_plugindir, '${goffice_libdir}/plugins')
+AC_SUBST(goffice_gladedir, '${goffice_datadir}/glade')
+
+dnl Export to goffice-config.h and goffice-features.h
+AC_DEFINE(GOFFICE_VERSION, "goffice_full_version",
+	[The version number of this release, possibly with additional suffix])
+AC_DEFINE(GO_VERSION_EPOCH, goffice_version_epoch,
+	[The Epoch of this release])
+AC_DEFINE(GO_VERSION_MAJOR, goffice_version_major,
+	[The Major version number of this release])
+AC_DEFINE(GO_VERSION_MINOR, goffice_version_minor,
+	[The Minor version number of this release])
+AC_DEFINE(GO_VERSION_EXTRA, "goffice_version_extra",
+	[Extra, possibly empty tag for this release])
+
+# -goffice-0.0.4
+
+# -gog2
+
+
 ### --------------------------------------------------------------------------
 ### Variables
 ### Set up all the initial variable values...
@@ -1267,23 +1980,47 @@
           lib/guile-www/Makefile
           lib/srfi/Makefile
           lib/libc/Makefile
-          lib/goffice/Makefile
-          lib/goffice/split/Makefile
-          lib/goffice/split/widgets/Makefile
-          lib/goffice/app/Makefile
-          lib/goffice/graph/Makefile
-          lib/goffice/graph/plugins/Makefile
-          lib/goffice/graph/plugins/plot_barcol/Makefile
-          lib/goffice/graph/plugins/plot_pie/Makefile
-          lib/goffice/graph/plugins/plot_radar/Makefile
-          lib/goffice/graph/plugins/plot_surface/Makefile
-          lib/goffice/graph/plugins/plot_xy/Makefile
-          lib/goffice/utils/Makefile
-          lib/goffice/gui-utils/Makefile
-          lib/goffice/drawing/Makefile
-          lib/goffice/pixmaps/Makefile
-          lib/goffice/cut-n-paste/Makefile
-          lib/goffice/cut-n-paste/pcre/Makefile
+          lib/libgsf-1.12.3/Makefile
+          lib/libgsf-1.12.3/doc/Makefile
+          lib/libgsf-1.12.3/gsf/Makefile
+          lib/libgsf-1.12.3/gsf-gnome/Makefile
+          lib/libgsf-1.12.3/gsf-win32/Makefile
+          lib/libgsf-1.12.3/tests/Makefile
+          lib/libgsf-1.12.3/python/Makefile
+          lib/libgsf-1.12.3/thumbnailer/Makefile
+          lib/libgsf-1.12.3/po/Makefile.in
+          lib/libgsf-1.12.3/gsf/version.c
+          lib/libgsf-1.12.3/doc/version.xml
+          lib/libgsf-1.12.3/libgsf-1.pc
+          lib/libgsf-1.12.3/libgsf-1.spec
+          lib/libgsf-1.12.3/libgsf-gnome-1.pc
+          lib/libgsf-1.12.3/libgsf-gnome-1.spec
+          lib/libgsf-1.12.3/libgsf-win32-1.pc
+          lib/libgsf-1.12.3/libgsf-zip
+          lib/goffice-0.0.4/Makefile
+          lib/goffice-0.0.4/libgoffice-1.pc
+          lib/goffice-0.0.4/goffice/Makefile
+          lib/goffice-0.0.4/goffice/app/Makefile
+          lib/goffice-0.0.4/goffice/utils/Makefile
+          lib/goffice-0.0.4/goffice/data/Makefile
+          lib/goffice-0.0.4/goffice/gtk/Makefile
+          lib/goffice-0.0.4/goffice/graph/Makefile
+          lib/goffice-0.0.4/goffice/drawing/Makefile
+          lib/goffice-0.0.4/goffice/ms-compat/Makefile
+          lib/goffice-0.0.4/goffice/cut-n-paste/Makefile
+          lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile
+          lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile
+          lib/goffice-0.0.4/plugins/Makefile
+          lib/goffice-0.0.4/plugins/plot_barcol/Makefile
+          lib/goffice-0.0.4/plugins/plot_pie/Makefile
+          lib/goffice-0.0.4/plugins/plot_radar/Makefile
+          lib/goffice-0.0.4/plugins/plot_xy/Makefile
+          lib/goffice-0.0.4/plugins/plot_surface/Makefile
+          lib/goffice-0.0.4/plugins/plot_boxes/Makefile
+          lib/goffice-0.0.4/plugins/reg_linear/Makefile
+          lib/goffice-0.0.4/pixmaps/Makefile
+          lib/goffice-0.0.4/po/Makefile.in
+          lib/goffice-0.0.4/tests/Makefile
           rpm/Makefile
           src/Makefile
           src/app-utils/Makefile
@@ -1426,4 +2163,6 @@
   QOF location ..........: $QOF_PREFIX
   QOF library dir .......: $QOF_LIB_DIR
   QOF backend config ....: $QOF_XML_DIR
+
+
 ])

Modified: gnucash/branches/goffice-update/lib/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -1,7 +1,10 @@
-if USE_LIBGOFFICE
 SUBDIRS = libc glib26 guile-www srfi
-else
-SUBDIRS = libc glib26 guile-www srfi goffice
+
+if !HAVE_GOFFICE
+if !HAVE_LIBGSF
+SUBDIRS += libgsf-1.12.3
 endif
+SUBDIRS += goffice-0.0.4
+endif
 
 EXTRA_DIST = README guppi-legend.patch

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/AUTHORS
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/AUTHORS	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/AUTHORS	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,8 @@
+Jody Goldberg, maintainer.
+Jean Brefort, Core charting engine.
+Emmanuel Pacaud, Many plot types for charting engine.
+Morten Welinder, Gnumeric hacker and leak plugging demi-god.
+Chris Lahey, number format engine, and powerpoint/escher code
+
+NOTE : Keep this in sync with the about dialog and the webpage.
+NOTE : Get an about dialog and a webpage :-)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/BUGS
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/BUGS	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/BUGS	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,278 @@
+    To report libgoffice bugs, please visit bugzilla.gnome.org.
+
+    This file is used as a scratch pad by developers.  It is a list of known
+issues that need to be addressed.  Divided into, things that will prevent
+release, and longer term bugs.
+
+-------------------------------------------------------------------------------
+Release Critical
+----------------
+
+    : src/cut-n-paste-code/goffice/gui-utils/go-format-sel.c:
+	g_warning ("TESTING TESTING 123 res = '%s'", res ? res : "(null)");
+
+    goffice/goffice/graph/gog-graph.c uses pointers as quarks.  That cannot
+    work.
+
+    goffice/goffice/utils/go-format.c: go_format_value don't use the format
+    argument.
+
+TODO
+----
+    0) Move gnome depends into a plugin
+	0.1) egg-recent-files
+    1) Format and number match rewrite
+	: Why does the number matching bother comparing against formats that are
+	  covered by 'General' ?
+	: When applying a currency symbol we need to store the NON-localized id.
+	: hour month and year format strings need to be internationalized.
+	    eg tt:ss instead of hh:ss for other locales.
+	: formats with AM/PM need to be internationalized.
+	: We do not format fractional seconds correctly.
+	: Parsing should handle embedded strings
+	: It incorrectly accepts mmm:ss as some sort of minute spec.
+	: When entering "ppp/qqq" into a cell with non-fractional format, do not
+	make it a fraction.
+	: Consider adding "%" to entry text when typing a text with a percentage
+	format.  (I.e., user has "44%" in cell and presses "5" -- that causes
+	"5%" to be shown the the cursor between "5" and "%".)
+
+    2) GOActionComboText
+	2.1) stub						(DONE)	
+	2.2) Move to TreeModel to simplify sharing
+	2.3) Support custom menu item
+    3) Plugin Framework
+	3.1) "De-activate all" should take the dependency tree
+	    into account and handle the python loader last.
+	- i18n support for third-party plugins.
+	- Add extra info (authors, etc.) to XML file.
+	- Beautify ErrorInfo dialog (it's ugly).
+	- Mark plugin as "broken" if deactivation failed.
+	3.2) pluginize paste types
+	3.3) plugin manager needs dependency tracking.  (Deactivate
+	  all python plugins before the python loader, for example.)
+
+1) graphs
+    1.1) Split plot xml file engine, type, and family plugins	(DONE)
+    1.2) Use the registered engines to create plots		(DONE)
+    1.3) XML
+	1.3.1) Use libglade code parse GObject properties	(DONE)
+	1.3.2) remove GdkColor from boxed type support		(DONE)
+	1.3.3) Walk GogObject tree and build DOM		(DONE)
+	1.3.4) Build GogObject treee from DOM			(DONE)
+	1.3.5) For flagged properties store value in DOM	(DONE)
+	1.3.6) Read properties from DOM				(DONE)
+	1.3.7) XMLWriter interface for extra object content 	(DONE)
+	1.3.8) Use it for series				(DONE)
+	1.3.9) Extend GOData to support deserialization		(DONE)
+	1.3.10) Implement deserialization for GnmData		(DONE)
+	1.3.11) Use the XMLWriter for series for all datasets	(DONE)
+	1.3.12) Persist names					(DONE)
+	1.3.13) Use XMLWriter for properties of type object	(DONE)
+	1.3.14) implement it for styles				(DONE)
+	1.3.15) position
+	1.3.16) image data
+    1.4) Decide on model vs view structure			(DONE)
+    1.5) Graph Guru						(DONE)
+	1.5.1) update when someone else changes the model	(DONE)
+	1.5.2) remove prop pages for deleted items		(DONE)
+	1.5.3) Keep state::chart,plot safe for typeselector	(DONE)
+	       in case they get deleted
+	1.5.4) Allow going backwards if there is only chart	(DONE)
+    1.6) data allocator in gnumeric				(DONE)
+	1.6.1) initial interface				(DONE)
+	1.6.2) generalize container to be a DataSet		(DONE)
+	1.6.3) editor to specify pref for vector or scalar	(DONE)
+    1.7) Single point formating
+	1.7.1) Basic						(DONE)
+	1.7.2) Improve selection of single points for pies	(DONE)
+    1.8) data sources						(DONE)
+	1.8.1) vector and scalar data sources from gnumeric	(DONE)
+	1.8.2) Add min/max elements to vector			(DONE)
+	1.8.3) const scalar value				(DONE)
+	1.8.4) const scalar string				(DONE)
+	1.8.5) const vector value				(DONE)
+	1.8.6) const vector string				(DONE)
+	1.8.7) translation of const vector strings		(DONE)
+    1.9) Pie Plot						(DONE)
+	1.9.1) Make the segments curve				(DONE)
+	1.9.2) extracted segments				(DONE)
+	1.9.3) Rings						(DONE)
+	1.9.4) extracting single wedges				(DONE)
+	1.9.5) formating single wedges				(DONE)
+    1.10) Bar/Col Plot						(DONE)
+	1.10.1) merge bar/col stack type bools into 1 enum	(DONE)
+	1.10.2) normal						(DONE)
+	1.10.3) stacked						(DONE)
+	1.10.4) percentage					(DONE)
+	1.10.5) Skip over bars/cols when too narrow
+	1.10.6) Work around bleed through with overlap 100	(DONE)
+	1.10.7) Check for short vectors				(DONE)
+	1.10.8) Clip when values are out of range		(DONE)
+	1.10.9) Support vary style by element for type=normal
+    1.11) Line/Area Plot					(DONE)
+	1.11.1)	Normal						(DONE)
+	1.11.2)	Stacked						(DONE)
+	1.11.3)	Percentage					(DONE)
+	1.11.4)	sub type with no-marker by default		(DONE)
+	1.11.5) center points on X index values for Line	(DONE)
+	1.11.6) handle missing points in unstacked lines	(DONE)
+    1.12) X/Y (Scatter) Plot
+	1.12.1) Add simple implementation			(DONE)
+	1.12.2) Take marker sizes into account at bounds	(DONE)
+	1.12.3) Bounds on 1 axis explicitly clip the other
+	1.12.4) Splined interpolation				(DONE)
+	1.12.5) Bubbles 					(DONE)
+    1.13) Decide on recalc strategy				(DONE)
+	1.13.1) Getting data from sheet -> graphs		(DONE)
+	1.13.2) linking unlinking				(DONE)
+    1.14) Axis management
+	1.14.1) Charts/plots have axis layout type		(DONE)
+	1.14.2) Add any missing axis when chart type is set	(DONE)
+	1.14.3) Remove any existing axis that do not correspond	(DONE)
+		to chart type.
+	1.14.2) Life cycle of plots/axis to maintain connection	(DONE)
+	1.14.3) UI for adding an axis				(DONE)
+	1.14.4) Only permit removal of unused axes		(DONE)
+	1.14.6) Create plot1.5d as base for bar/col & line	(DONE)
+	1.14.7) do range allocation and filtering in chart	(DONE)
+	1.14.7) Draw ticks and allocate space for them		(DONE)
+	1.14.8) Make the major labels optional			(DONE)
+	1.14.9) Add a font selector to the editor		(DONE)
+	1.14.10) Value formating (at least percentage and date)	(DONE)
+	1.14.11) Support index type axis			(DONE)
+	1.14.12) Use a map function (log, invert, date)		(DONE)
+	1.14.13) Allow a plot to select a different axis	(DONE)
+	1.14.14) Filter add plot in guru to matching types	(DONE)
+	1.14.15) Editor for min/max/major/minor			(DONE)
+	1.14.16) Respect user supplied min/max/major/minor	(DONE)
+	1.14.17) Draw major ticks in				(DONE)
+	1.14.18) Draw major ticks out				(DONE)
+	1.14.19) Draw minor ticks in				(DONE)
+	1.14.20) Draw minor ticks out				(DONE)
+	1.14.21) Why don't we honour selected font ?		(DONE)
+	1.14.22) Selectable label format for non-discrete data	(DONE)
+	1.14.23) Editor for label format			(DONE)
+	1.14.24) Persist label format				(DONE)
+	1.14.25) Auto selection of label format			(DONE)
+    1.15) per series plot type specific data			(DONE)
+    1.16) libart based render akin to guppicanvas.		(DONE)
+	1.16.1) Solid background fills				(DONE)
+	1.16.2) Gradient fills 					(DONE)
+	1.16.3) Pattern fills					(DONE)
+	1.16.4) Image fills					(DONE)
+	1.16.5) path						(DONE)
+	1.16.6) text						(DONE)
+	1.16.7) markers						(DONE)
+	1.16.8) Rework text drawing to _not_ use libart		(DONE)
+	1.16.9) Add anchor flags to draw_text			(DONE)
+	1.16.10) Clip text to keep it in bounds			(DONE)
+    1.19) Precedence						(DONE)
+	1.19.1) Sort GogObject::children 			(DONE)
+	1.19.2) Keep corresponding views in sync		(DONE)
+	1.19.3) Have guru maintain order for add/remove		(DONE)
+	1.19.4) api for changing order				(DONE)
+	1.19.5) Extend Guru to support changing precedence	(DONE)
+    1.20) GogStyle Editor page
+	1.20.1) fill type					(DONE)
+	    1.20.1.1) none					(DONE)
+	    1.20.1.2) solid					(DONE)
+	    1.20.1.3) basic gradients				(DONE)
+	    1.20.1.4) advanced gradients via combo		(DONE)
+	    1.20.1.5) pixmaps fills				(DONE)
+	    1.20.1.6) patterns					(DONE)
+	1.20.2) outline line pattern
+	1.20.3) font selector					(DONE)
+	1.20.4) Support 'auto' settings				(DONE)
+	    1.20.4.1) outline (colour)				(DONE)
+	    1.20.4.2) line (color)				(DONE)
+	    1.20.4.3) fill (colors)	 			(DONE)
+	    1.20.4.4) marker 					(DONE)
+	1.20.5) image selector
+	    1.20.5.1) drag destination for background images
+	    1.20.5.2) scale image preview                       (DONE)
+	    1.20.5.3) Use file selector with image preview	(DONE)
+	1.20.6) De-sensitize (out)line colour when size == -1
+    1.21) themes
+	1.21.1) Actually use the themes to initialize styles	(DONE)
+	1.21.2) load from xml
+	1.21.3) selector for graphs
+	1.21.4) How to change a graph's theme
+	1.21.5) Use Roles rather than Types to enumerate	(DONE)
+	1.21.5) Allow type aliases				(DONE)
+    1.22) Legend
+	1.22.1) Set up cardinality framework.			(DONE)
+	1.22.2) Get things to update when chart changes		(DONE)
+	1.22.2) smarter layout
+    1.23) Layout engine
+	1.23.1) In ChartView::size_allocate use the positions	(DONE)
+	1.23.2) For compass placement use the alignment flags	(DONE)
+	1.23.3) support NW, NE, SW, SE				(DONE)
+	1.23.4) Move ChartView::size_allocate -> GogView	(DONE)
+	1.24.5) Have Graph, Chart, Legend and Axis use it	(DONE)
+	1.23.6) Add some notion of padding			(DONE)
+	1.23.7) remove request_valid				(DONE)
+	1.23.8) pass in available space				(DONE)
+	1.23.9) How to support axis labels (siblings need
+		common residual)
+	1.23.10) Create a common base for outlined objects	(DONE)
+    1.24) Sizing units						(DONE)
+	1.24.1) Have the legend use pts to size swatches	(DONE)
+	1.24.2) Test renderers mapping between pts & pixels	(DONE)
+    1.25) Printing						(DONE)
+	1.25.1) gog-renderer-gnomeprint				(DONE)
+	1.25.2) sheet object wrapper for printing		(DONE)
+	1.25.3) paths						(DONE)
+	1.25.4) solid and empty polygons			(DONE)
+	1.25.5) image filled polygons				(DONE)
+	1.25.6) gradient filled polygons			(DONE)
+	1.25.7) measure text					(DONE)
+	1.25.8) draw text					(DONE)
+	1.25.9) why doesn't text appear in preview		(DONE)
+	1.25.10) why is font selection bogus			(DONE)
+	1.25.11) text anchors					(DONE)
+	1.25.12) Check the zoom handling for fonts		(DONE)
+    1.26) Move 'use_one_style' from pie -> plot with 1 series	(DONE)
+    1.27) Add a flag to gobject to go with its role indicating	(DONE)
+	whether the instance was autocreated or assigned.
+    1.28) Rethink GraphItem lifecyle to simplify removal	(DONE)
+    1.29) Extend GogObjectRole to include more handlers		(DONE)
+    1.30) Grid Object
+	1.30.1) Create						(DONE)
+	1.30.2) Theme it					(DONE)
+	1.30.3) Add or remove it depending on chart axis set	(DONE)
+	1.30.4) Render background				(DONE)
+	1.30.5) Support grid lines (added to axis)		(DONE)
+	1.30.6) XLS import of grid lines
+	1.30.7) XLS export of grid lines
+    1.31) SVG Render
+	1.31.1) Paths						(DONE)
+	1.31.2) Solid Fills					(DONE)
+	1.31.3) Gradient Fills					(DONE)
+	1.31.4) Pattern Fills					(DONE)
+	1.31.5) Image Fills					(DONE)
+	1.31.6) Markers						(DONE)
+	1.31.7) Text						(DONE)
+	1.31.8) Text alignment					(DONE)
+	1.31.9) Text clipping					(DONE)
+    1.32) Radar plots
+	1.32.1) line						(DONE)
+	1.32.2) area						(DONE)
+	1.32.3) axis labels					(DONE)
+	1.32.4) fix xls import of marker vs no marker
+    1.33) Contour plots				{Jean}
+	1.33.1) Initial implementation				(DONE)
+	1.33.2) GOMatrix					(DONE)
+	1.33.3) Axis changes
+	1.33.4) XLS import					(DONE)
+	1.33.4) XLS export
+
+Misc things to fix
+------------------
+
+	: Open guru, click on forward, then back. Now navigating through plot
+	list is very slow. That's because at each object addition/removal in
+	object tree, an object editor is created.
+
+	: Current GogGrid object is not used for grid display. We should rename
+        it to GogBackplane, GogWall or GogBackground.

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/COPYING
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/COPYING	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/COPYING	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/ChangeLog
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/ChangeLog	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/ChangeLog	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,6105 @@
+2005-09-08  Jody Goldberg <jody at gnome.org>
+
+	* Release 0.0.4
+
+2005-09-05  Jody Goldberg <jody at gnome.org>
+
+	* goffice/utils/format.c (go_format_number) : Show 0/??? for fractions
+	  with no integer component. [#315018]
+
+2005-09-05  Jody Goldberg <jody at gnome.org>
+
+	* goffice/utils/go-format-match.c (format_create_regexp) : match
+	  correct number of digits in denominator.
+
+2005-09-05  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/graph/gog-reg-curve.c (skip_invalid_toggled_cb): Move this
+	function next to gog_reg_curve_populate_editor, where it is used.
+	(gog_reg_curve_set_property), (gog_reg_curve_class_init): Fix consts.
+
+2005-09-05  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-reg-curve-prefs.glade: add a check box to allow
+	invalid data skipping [#312788].
+	* goffice/graph/gog-reg-curve.c: (skip_invalid_toggled_cb),
+	(gog_reg_curve_populate_editor), (gog_reg_curve_get_property),
+	(gog_reg_curve_set_property), (gog_reg_curve_class_init): ditto.
+	* goffice/graph/gog-reg-curve.h: add skip_invalid to GogRegCurve and
+	remove obsolete members.
+	* plugins/reg_linear/gog-lin-reg.c: (gog_lin_reg_curve_update): use
+	GogRegCurve::skip_invalid [#312788] and use code in go-regression.c.
+
+2005-09-04  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-renderer-svg.c (fill_properties): set fill pattern
+	opacity.
+
+2005-09-02  Jody Goldberg <jody at gnome.org>
+
+	* goffice/app/io-context.c (gnm_io_context_processing_file) : people
+	  do not want to see escaped uri's in the progress bar.
+
+2005-09-02  Jody Goldberg <jody at gnome.org>
+
+	* goffice/utils/format.c : Add GOFormatElement::forces_text.
+	(format_entry_ctor) : initialize it to FALSE.
+	(format_compile) : '@' sets it to TRUE.
+
+2005-08-31  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/utils/Makefile.am: add go-regression.* and go-rangefuncs.*
+	* goffice/utils/go-rangefunc.c: imported various functions from gnumeric
+	and build both double and long double versions if long double is available.
+	* goffice/utils/go-rangefunc.h: ditto.
+	* goffice/utils/go-regression.c: ditto.
+	* goffice/utils/go-regression.h: ditto.
+
+2005-08-29  Jody Goldberg <jody at gnome.org>
+
+	* goffice/utils/format-impl.h : s/StyleFormatEntry/GOFormatElement/
+	  Move the regexp into here from.
+	* goffice/utils/go-format.h : here.
+	  s/StyleFormat/GOFormat/
+
+2005-08-26  Jody Goldberg <jody at gnome.org>
+
+	* goffice/graph/gog-plot.c (gog_plot_new_series) : add some safety.
+	* goffice/graph/gog-data-set.c (gog_dataset_set_dim) : add some safety
+	  for invalid datasets, being careful to avoid leaking the new val.
+
+2005-08-24  Stepan Kasal  <kasal at ucw.cz>
+
+	The roles hash is now inherited by subclasses, with copy-on-write.
+
+	* goffice/graph/gog-object.h (GogObject) <roles_allocated>: New flag,
+	indicates whether this function is resposible to free the hash.
+	(gog_object_unregister_role): Removed.
+	* goffice/graph/gog-object.c (gog_object_unregister_role): Removed.
+	(gog_object_base_finalize): Free the hash, if it's ours.
+	(gog_object_base_init): Set roles_allocated to FALSE, indicating that
+	the inherited hash is read-only.
+	(gog_object_register_roles): When first used for a class, call ...
+	(gog_object_allocate_roles): ... this new function, which creates
+	a new hash and fill is with inherited values, if any, using...
+	(cb_copy_hash_table): ... this new helper function.
+
+	* goffice/graph/gog-series.c (gog_series_base_init): Nuke, moving the
+	roles registration code ...
+	(gog_series_class_init): ... here.
+	* plugins/plot_barcol/gog-1.5d.c (gog_series1_5d_base_class_finalize): Nuke.
+	* plugins/plot_xy/gog-xy.c (gog_xy_series_base_finalize): Nuke.
+
+2005-08-24  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/utils/go-math.c (go_math_init): Fix the bugzilla URL.
+
+2005-08-18  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-reg-curve.c (gog_reg_curve_view_render): clip to
+	residual area.
+	* plugins/plot_xy/gog-xy.c (gog_xy_view_render): don't clip children,
+	we want to be able to show equation outside of plot area.
+
+2005-08-18  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/utils/go-pattern.c (go_pattern_get_svg_path): Issue an
+	  error if the pattern is not found.
+	* plugins/plot_xy/gog-xy.c (gog_xy_view_render): Silence the compiler.
+
+2005-08-18  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Make GogRegEqn and GogLabel a derived class of GogText.
+
+	* goffice/graph/gog-reg-eqn.[ch]: removed.
+	* goffice/graph/Makefile.am: remove references to gog-reg-eqn.[ch].
+	* goffice/graph/gog-label.c: rename GogLabel class to GogText.
+	Implement GogLabel as a derived class of GogText and a GogDataSet
+	interface.
+	(gog_text_get_str): new.
+	Implement GogRegEqn as a derived class of GogText.
+	(gog_reg_eqn_populate_editor): remove code related to position.
+	(gog_reg_eqn_class_init): remove position properties.
+	rename GogLabelView to GogTextView.
+	(gog_text_view_render): get content from gog_text_get_str.
+	* goffice/graph/gog-reg-eqn-prefs.glade: fix layout. Remove position
+	widgets.
+	* goffice/graph/gog-reg-curve-prefs.glade: fix layout.
+
+2005-08-16  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Fix position constistency between discrete and linear axes. Enable
+	user set bounds for discrete axes [#309468].
+
+	* goffice/graph/gog-chart.c (gog_chart_map_new): th1 = maximum now, 
+	not maximum + 1.
+	(calc_polygon_parameters): ditto. take start theta (th0) into 
+	account.
+	* goffice/graph/gog-axis-line.c (axis_circle_render): ditto.
+	(radar_process): ditto.
+	* goffice/graph/gog-grid-line.c (gog_grid_line_view_render): ditto.
+	* goffice/graph/gog-grid.c (gog_grid_view_render): ditto.
+	* goffice/utils/go-math.c (go_rint): new.
+	* goffice/graph/gog-axis.c (map_discrete_calc_ticks): fix label when
+	minimum != 1.
+	(gog_axis_populate_editor): enable minimum et maximum editor for
+	discrete axes.
+	* plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_axis_get_bounds):
+	minimum = 1.0 now.
+	* plugins/plot_barcol/gog-barcol.c (gog_barcol_view_render): use GogChartMap
+	facilities. minimum = 1.0 now.
+	* plugins/plot_barcol/gog-line.c (gog_line_view_render): minimum = 1.0 now.
+	* plugins/plot_radar/gog-radar.c (gog_rt_plot_update): ditto.
+	(gog_rt_view_render): take start theta (th0) into account.
+	
+2005-08-17  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_boxes/gog-boxplot.c: (gog_box_plot_update),
+	(gog_box_plot_view_render), (float_compare),
+	(gog_box_plot_series_update): use raw data instead of min, max, median
+	and quartiles. Fixes #308136.
+	* plugins/plot_boxes/plot-types.xml.in: removed obsolete comment.
+
+2005-08-16  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* plugins/plot_xy/gog-xy.c (gog_xy_view_render): use GogChartMap
+	facilities.
+	* plugins/plot_barcol/gog-line.c (gog_line_view_render): ditto. be 
+	consistent with GogXYPlot. 
+
+2005-08-16  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/graph/gog-axis.c (gog_axis_get_grid_line): Fix typo
+	  in the comment.
+
+2005-08-15  Morten Welinder <terra at gnome.org>
+
+	* configure.in: Post release bump
+
+2005-08-15  Morten Welinder <terra at gnome.org>
+
+	* Release 0.0.3
+
+2005-08-15  Jean Brefort  <jean.brefort at normalesup.org>
+	* goffice/graph/gog-object-xml.c: (gog_object_new_from_xml): return NULL
+	if dynamic type is not available.
+
+2005-08-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-guru.c (cb_graph_guru_add_plot): call
+	gog_plot_guru_helper if plot is added from porerty editor page.
+
+2005-08-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis.c (map_bounds): minimum or maximum may be
+	NULL.
+	(map_log_bounds): ditto.
+	* goffice/graph/gog-series-lines.c (gog_series_lines_render): draw
+	sharp lines.
+	* plugins/plot_xy/gog-xy.c (gog_xy_view_render): draw drop lines from
+	point to axis start.
+
+2005-08-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/goffice-graph.h: new GOG_POSITION_IS_SPECIAL and
+	GOG_POSITION_IS_PADDING macros for determining GogPosition type.
+	Simple == test doesn't work.
+	* goffice/graph/gog-axis.c (gog_axis_view_padding_request): use these
+	macros.
+	(gog_axis_view_size_allocate): ditto.
+	* goffice/graph/gog-chart.c (gog_chart_view_size_allocate): ditto.
+	* goffice/graph/gog-graph.c (gog_graph_view_size_allocate): ditto.
+	* goffice/graph/gog-view.c (gog_view_padding_request_real): ditto.
+	(gog_view_size_allocate_real): ditto.
+	(gog_view_size_child_request): ditto.
+	* goffice/graph/gog-object.c (gog_object_position_cmp): ditto.
+	(gog_object_populate_editor): fix manual_toggle widget handling.
+	(cb_anchor_changed): set position to manual if anchor changes.
+
+2005-08-14  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Fix clipping of polar plots. Renamed all clip_push, clip_pop functions
+	to push_clip, pop_clip for consistency with push_style, pop_style.
+
+	* goffice/graph/gog-renderer-gnome-print.c 
+	(print_make_rectangle_path): removed.
+	(gog_renderer_gnome_print_push_clip): clipping region is a path now.
+	(gog_renderer_gnome_print_draw_path): clip dashed line to graph bbox.
+	(gog_renderer_gnome_print_draw_polygon): ditto.
+	(gog_graph_print_to_gnome_print): stire graph bbox.
+	* goffice/graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_push_clip):
+	handle clipping region as path, assuming nested region is included in
+	parent one.
+	(gog_renderer_pixbuf_pop_clip): free clip svp.
+	(gog_renderer_pixbuf_do_clip): new.
+	(gog_renderer_pixbuf_draw_path): call gog_renderer_pixbuf_do_clip.
+	clip dashed line to graph bbox.
+	(gog_renderer_pixbuf_draw_polygon): ditto.
+	* goffice/graph/gog-renderer-svg.c (gog_renderer_svg_push_clip): 
+	clipping region is a path now.
+	* goffice/graph/gog-renderer.c (gog_renderer_push_clip): ditto.
+	(gog_renderer_pop_clip): ditto. Free clip_path.
+	(gog_renderer_get_rectangle_vpath): new.
+	* goffice/graph/gog-view.c (gog_view_render): clipping region is a
+	path now.
+	* plugins/plot_barcol/gog-line.c (gog_line_view_render): ditto.
+	* plugins/plot_radar/gog-radar.c (gog_rt_plot_guru_helper): force
+	auto_dash to FALSE.
+	(gog_rt_view_render): add correct polar clipping.
+	(gog_rt_series_init_style): don't disable marker theming.
+	
+2005-08-14  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-series.c: (gog_series_class_init),
+	(gog_series_base_init): moved roles registering from class_init to
+	base_init.
+
+2005-08-13  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-chart.c: (calc_circle_parameters): fix a dangerous
+	comparison and avoid resulting infinite loops.
+
+2005-08-13  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-view.c (gog_view_info_at_point): walk the list in
+	reverse order.
+
+2005-08-12  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Add pattern support for SVG renderer [#310320].
+
+	* goffice/graph/gog-renderer-svg.c (fill_properties): add support for
+	patterns.
+	* goffice/utils/Makefile.am: install svg-patterns.xml in
+	goffice_datadir/patterns.
+	* goffice/utils/go-pattern.c: fix thin-rev-diag str in go_patterns.
+	(go_pattern_get_svg_path): new.
+	* goffice//utils/svg-patterns.xml: new.
+	
+2005-08-12  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-grid-line.c: (gog_grid_line_view_render):
+	fix a memory leak
+	* goffice/graph/gog-plot.c: (gog_plot_finalize): and one more.
+
+2005-08-12  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-object.c: (gog_object_clear_parent),
+	(gog_object_set_parent): do not set class before checking object validity.
+
+2005-08-11  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-format-match.c (format_create_regexp): Fix
+	buffer overrun problem exibited while loading file from #313150.
+
+2005-08-11  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/app/go-plugin-loader-module.c: updated to new
+	GSF_CLASS_FULL signature.
+	* goffice/app/io-context.c: ditto.
+	* goffice/graph/gog-axis-line.c: ditto.
+	* goffice/graph/gog-axis.c: ditto.
+	* goffice/graph/gog-error-bar.c: ditto.
+	* goffice/graph/gog-label.c: ditto.
+	* goffice/graph/gog-reg-curve.c: ditto.
+	* goffice/graph/gog-series.c: ditto.
+	* goffice/graph/gog-style.c: ditto.
+	* plugins/plot_barcol/gog-1.5d.c: updated to new
+	GSF_DYNAMIC_CLASS_FULL signature.
+	* plugins/plot_xy/gog-xy.c: ditto and use base_finalize instead
+	of class_finalize.
+
+2005-08-10  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (axis_circle_render): fix label
+	overlap of 0° and 360° ticks.
+
+	GogPlot::guru_helper implementation for automatic addition of objects
+	when creating graphs in guru.
+
+	* goffice/graph/gog-axis.c (role_grid_line_can_add): removed.
+	(role_grid_line_major_can_add): use new gog_axis_get_grid_line
+	function.
+	(role_grid_line_minor_post_add): ditto.
+	(gog_axis_get_grid_line): new.
+	* goffice/graph/gog-chart.c (role_plot_pre_remove): remove
+	GogChart::grid if new axis set is not compatible.
+	(role_grid_can_add): add GOG_AXIS_SET_RADAR in list of axis sets
+	compatible with GogGrid.
+	(gog_chart_axis_set_assign): don't handle GogGrid object here.
+	* goffice/graph/gog-guru.c (graph_typeselect_minor): remove current
+	chart, not only plot. Call GogPlot::guru_helper for additionnal
+	objects.
+	* goffice/graph/gog-plot.c (gog_plot_set_property): add new guru-hints
+	property, which is a semicolon separated list of hints for
+	GogPlot::guru_helper.
+	(gog_plot_get_property): ditto.
+	(gog_plot_class_init): ditto.
+	(gog_plot_guru_helper_add_grid_line): new.
+	(gog_plot_guru_helper): new.
+	* plugins/plot_barcol/plot_types.xml.in: add "backplane" hint for all
+	plots.
+	* plugins/plot_box_plot/plot_types.xml.in: ditto.
+	* plugins/plot_radar/gog-radar.c (gog_rt_plot_guru_helper): new.
+	Handle "circular-no-line" guru hint.
+	* plugins/plot_radar/plot-types.xml.in: add "circular-no-line" hint to
+	radar plots. add "major-grid" and "backplane" to polar plot.
+	* plugins/plot_xy/plot-types.xml.in: add "backplane" to all plots.
+	
+2005-08-10  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_barcol/gog-1.5d.c:
+	(gog_series1_5d_register_type): use base_finalize instead of
+	class_finalize since we have derived classes.
+
+2005-08-08  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* *: Updated FSF's address.
+
+2005-08-07  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/graph/Makefile.am (goffice_gladedir): Rename to ...
+	(gladedir): ..., to prevent conflicts--goffice_gladedir is AC_SUBSTed.
+	* goffice/gtk/Makefile.am (goffice_gladedir, gladedir): Likewise.
+
+2005-08-06  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/goffice.c: (libgoffice_init): add call to GOG_SERIES_LINES_TYPE.
+	* goffice/graph/Makefile.am: add gog-series-lines.[c,h].
+	* goffice/graph/gog-object.c: (gog_object_unregister_role): new function.
+	* goffice/graph/gog-object.h: ditto.
+	* goffice/graph/gog-series-lines.c: moved from plugins/plot_barcol.
+	* goffice/graph/gog-series-lines.h: ditto.
+	* plugins/plot_barcol/Makefile.am: remove gog-series-lines.[c,h].
+	* plugins/plot_barcol/gog-1.5d.c: (gog_series1_5d_class_finalize),
+	(gog_series1_5d_get_type), (gog_series1_5d_register_type),
+	(go_plugin_init): unregister roles when class is destroyed.
+	* plugins/plot_barcol/gog-barcol.c: update path to gog-series-lines.h.
+	* plugins/plot_barcol/gog-dropbar.c: ditto.
+	* plugins/plot_barcol/gog-line.c: ditto.
+	* plugins/plot_barcol/gog-minmax.c: ditto.
+	* plugins/plot_barcol/gog-series-lines.c: moved to goffice/graph/.
+	* plugins/plot_barcol/gog-series-lines.h: ditto.
+	* plugins/plot_xy/gog-xy.c: add horizontal and vertical droplines.
+	* plugins/plot_xy/gog-xy.h: ditto.
+
+2005-08-04  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/utils/go-line.c (go_line_build_bpath): do not access data
+	outside of allocated arrays.
+
+2005-08-04  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/utils/go-file.c: #include unistd.h, for dup().
+
+2005-08-04  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Allow user to delete all plots of a chart and re-add new plots with
+	different axis set.
+
+	* goffice/graph/gog-axis-line.c (gog_axis_base_get_crossed_axis_type):
+	handle GOG_AXIS_SET_UNKNOW.
+	(gog_axis_base_view_info_at_point): ditto. Do nothing.
+	(gog_axis_base_view_padding_request): ditto.
+	(gog_axis_base_view_render): ditto.
+	* goffice/graph/gog-chart.c (role_plot_pre_remove): if there's no plot
+	left, reset axis_set to GOG_AXIS_SET_UNKNOW.
+	(gog_chart_axis_set_assign): don't touch axes if axis_set ==
+	GOG_AXIS_SET_UNKNOW.
+	* goffice/graph/gog-guru.c (cb_graph_guru_delete_item): select parent
+	row after item is deleted, because if we do this before, parent->add
+	submenu is sometimes incorrect.
+
+2005-08-04  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (gog_axis_base_view_info_at_point):
+	handle GOG_AXIS_SET_XY_pseudo_3d.
+	* goffice/graph/gog-chart.c (gog_axis_set_from_str): new.
+	* goffice/graph/gog-guru.c (cb_plot_family_menu_create): show only
+	family with compatible axis set.
+	* goffice/graph/gog-label.c (gog_label_init_style): only change text
+	orientation if auto flag is TRUE.
+	* goffice/graph/gog-plot-engine.c (cb_pending_plot_types_load): load
+	axis_set from plot-types.xml.
+	(gog_plot_family_register): set axis_set.
+	* goffice/graph/gog-plot-impl.h: now store axis_set in GogPlotClass. No
+	need for GogPlot::axis_set_pref, GogPlot::axis_set_is_valid and
+	GogPlot::axis_set_assign.
+	* goffice/graph/gog-plot.c (gog_plot_axis_set_pref): use
+	GogPlot::axis_set.
+	(gog_plot_axis_set_is_valid): ditto.
+	(gog_plot_axis_set_assign): ditto.
+	* goffice/graph/gog-style.c (gog_style_assign): assign
+	GogStyle::text_layout.auto_angle too.
+	(gog_style_force_auto): init GogStyle::text_layout.auto_angle.
+	(gog_style_set_text_angle): force auto_angle to FALSE.
+	* goffice/gtk/goffice-gtk.c (go_gtk_button_new_with_stock): fix
+	compilation warning.
+	* plugins/plot_*/gog*.c: remove axis_set_pref, axis_set_is_valid,
+	axis_set_assign functions. Set GogPlotClass::axis_set value.
+	* plugins/plot_*/plot-types.xml.in: Add axis_set property.
+	
+2005-08-04  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* README, configure.in: Bumped libgsf requirements as
+	goffice/utils/go-file.c needs gsf_input_stdio_new_FILE which is only in
+	libgsf HEAD.
+
+2005-08-03  Jody Goldberg <jody at gnome.org>
+
+	* goffice/gtk/goffice-gtk.c (go_gtk_button_new_with_stock) : Use
+	  gtk_button_set_image to avoid the kludgery that broken settings.
+	(go_gtk_dialog_add_button) : merged from gnumeric.
+
+2005-08-03  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-file.c (go_file_open): Handle URIs like "fd://0".
+
+2005-08-03  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_text):
+	  Fix a typo; add an initialization to silence a warning.
+
+2005-08-03  Stepan Kasal  <kasal at ucw.cz>
+
+	In many Makefile.am's, use the "dist_" prefix instead of adding the
+	variable to EXTRA_DIST.
+	* goffice/graph/Makefile.am (cairo_sources, cairo_headers): Nuke;
+	  instead, append to the variables directly.
+
+2005-08-03  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Cairo renderer build fixes.
+
+	* goffice/graph/gog-renderer-cairo.c (gog_renderer_cairo_draw_text):
+	fix size.
+	(gog_renderer_cairo_get_text_OBR): ditto.
+	(gog_renderer_cairo_update): graph size is a property of GogGraph now.
+
+2005-07-28  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Who said text angle is not a style property ?
+
+	* goffice/graph/gog-axis-line.c (gog_axis_base_set_property): remove
+	label-angle property.
+	(gog_axis_base_get_property): ditto.
+	(gog_axis_base_class_init): ditto.
+	(gog_axis_base_set_label_angle): removed.
+	(cb_label_angle_changed): removed.
+	(gog_axis_base_populate_editor): remove UI for label angle.
+	* goffice/graph/gog-axis-prefs.glade: ditto.
+	* goffice/graph/gog-axis.c (role_label_post_add): removed.
+	(role_label_can_add): new.
+	(gog_axis_init_style): if axis is GOG_AXIS_PSEUDO_3D, no style.
+	* goffice/graph/gog-label.c (gog_label_set_angle): removed.
+	(gog_label_set_property): remove angle property.
+	(gog_label_get_property): ditto.
+	(gog_label_class_init): ditto.
+	(label_pref_state_free): removed.
+	(cb_angle_changed): removed.
+	(gog_label_populate_editor): remove UI for angle.
+	(gog_label_init_style): set text angle to 90 if parent is an Y axis.
+	* goffice/graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_text): text_angle is a style property.
+	* goffice/graph/gog-renderer-pixbuf.c
+	(gog_renderer_pixbuf_get_pango_layout): ditto.
+	* goffice/graph/gog-renderer-svg.c (gog_renderer_svg_draw_text):
+	ditto.
+	* goffice/graph/gog-renderer.c (gog_renderer_get_text_OBR): ditto.
+	(gog_renderer_push_style): no more
+	angle property in renderer.
+	(gog_renderer_pop_style): ditto.
+	(gog_renderer_set_text_angle): removed.
+	* goffice/graph/gog-style-prefs.glade: add a new UI for text layout
+	group.
+	* goffice/graph/gog-style (cb_angle_changed): new.
+	(text_layout_init): new.
+	(gog_style_assign): handle angle.
+	(gog_style_init): ditto.
+	(gog_style_text_layout_load): new.
+	(gog_style_text_layout_dom_save): new.
+	(gog_style_text_layout_sax_save): new.
+	(gog_style_persist_dom_load): handle angle.
+	(gog_style_persist_dom_save): ditto.
+	(gog_style_persist_sax_save): ditto.
+	(gog_style_is_different_size): ditto.
+	(gog_style_set_text_angle): new.
+	* goffice/graph/gog-styled-object.c (styled_object_populate_editor):
+	don't display style editor if there isn't any interresting fields.
+
+2005-07-27  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Code cleanup. Remove bbox parameter of GogRenderer:draw functions.
+	It was a previous attempt to do clipping, which is handled by
+	gog_renderer_clip_push and gog_renderer_clip_pop for quite a long
+	time now.
+	
+	Modified Files:
+
+	ChangeLog goffice/graph/gog-axis-line.c 
+	goffice/graph/gog-error-bar.c goffice/graph/gog-grid-line.c 
+	goffice/graph/gog-grid.c goffice/graph/gog-label.c 
+	goffice/graph/gog-legend.c goffice/graph/gog-outlined-object.c 
+	goffice/graph/gog-reg-curve.c goffice/graph/gog-reg-eqn.c 
+	goffice/graph/gog-renderer-cairo.c 
+	goffice/graph/gog-renderer-gnome-print.c 
+	goffice/graph/gog-renderer-impl.h 
+	goffice/graph/gog-renderer-pixbuf.c 
+	goffice/graph/gog-renderer-svg.c goffice/graph/gog-renderer.c 
+	goffice/graph/gog-renderer.h plugins/plot_barcol/gog-barcol.c 
+	plugins/plot_barcol/gog-dropbar.c 
+	plugins/plot_barcol/gog-line.c 
+	plugins/plot_barcol/gog-minmax.c 
+	plugins/plot_barcol/gog-series-lines.c 
+	plugins/plot_boxes/gog-boxplot.c plugins/plot_pie/gog-pie.c 
+	plugins/plot_radar/gog-radar.c 
+	plugins/plot_surface/gog-surface.c plugins/plot_xy/gog-xy.c 
+
+2005-07-27  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Text angle is not a font property.
+	Set default angle to 90° for y axes (#301582).
+	
+	* goffice/graph/gog-axis-line.c (gog_axis_base_class_init): install
+	label_angle property.
+	(gog_axis_base_set_property): handle label_angle property.
+	(gog_axis_base_get_property): ditto.
+	(gog_axis_base_set_label_angle): new.
+	(cb_label_angle_changed): new.
+	(gog_axis_base_populate_editor): init UI for label_angle.
+	(gog_axis_base_view_padding_request): set text angle.
+	(gog_axis_base_view_render): ditto.
+	* goffice/graph/gog-axis-prefs.glade: add UI for label angle.
+	* goffice/graph/gog-axis.c (role_label_post_add): new. Sets label
+	angle to 90° for y axis.
+	(gog_axis_class_init): add role_label_post_add.
+	* goffice/graph/gog-label-prefs.glade: new.
+	* goffice/graph/gog-label.c (gog_label_set_angle): new.
+	(gog_label_class_init): handle angle property.
+	(gog_label_set_property): ditto.
+	(gog_label_get_property): ditto.
+	(label_pref_state_free): new.
+	(cb_angle_changed): new.
+	(gog_label_populate_editor): add layout page for angle setting.
+	(gog_label_init): new.
+	(gog_label_view_size_request): set text angle.
+	(gog_label_view_render): ditto.
+	* goffice/graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_text): text_angle is a property of
+	renderer.
+	* goffice/graph/gog-renderer-pixbuf.c
+	(gog_renderer_pixbuf_get_pango_layout): ditto.
+	* goffice/graph/gog-renderer-svg.c (gog_renderer_svg_draw_text):
+	ditto.
+	* goffice/graph/gog-renderer.c (gog_renderer_push_style): reset text
+	angle.
+	(gog_renderer_pop_style): ditto.
+	(gog_renderer_set_text_angle): new.
+	(gog_renderer_get_text_OBR): text_angle is a property of renderer.
+	* goffice/graph/gog-style-prefs.glade: remove UI for angle.
+	* goffice/graph/gog-style.c (cb_rotation_angle_changed): removed.
+	(font_init): remove angle UI.
+	(gog_style_font_load): remove rotation_angle setting.
+	(gog_style_font_dom_save): ditto.
+	(gog_style_font_sax_save): ditto.							    
+
+2005-07-25  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-object-prefs.glade: remove chart preference
+	dialog and move it to gog-chart-prefs.glade.
+	* goffice/graph/gog-chart-prefs.glade: new.
+	* goffice/graph/gog-chart.c (cb_plot_area_changed): actually use
+	signal handlers.
+	(gog_chart_populate_editor): ditto.
+
+2005-07-25  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Implementation of manual position of graph objects.
+
+	* goffice/graph/goffice-graph.h: new modifier flags in
+	GogObjectPosition for manual position.
+	* goffice/graph/gog-axis.c (gog_axis_class_init): Label can be
+	positionned manually.
+	(gog_axis_view_padding_request): GOG_POSITION_MANUAL supersedes
+	GOG_POSITION_SPECIAL.
+	(gog_axis_view_size_allocate): handle GOG_POSITION_MANUAL case.
+	* goffice/graph/gog-chart-impl.h: plot_area stores plot area position
+	in fraction of chart size. new is_plot_area_manual flag.
+	* goffice/graph/gog-chart.c (gog_chart_set_property): new.
+	(gog_chart_get_property): handles plot-area and is-plot-area-manual
+	properties.
+	(chart_pref_state_free): new.
+	(cb_plot_area_changed): new.
+	(cb_manual_toggle_changed): new.
+	(gog_chart_populate_editor): new.
+	(gog_chart_class_init): reorder childs. Still need some work for a
+	nice display in object tree.  Install plot-area and 
+	is-plot_area-manual properties.
+	(gog_chart_get_plot_area): new.
+	(gog_chart_set_plot_area): new.
+	(gog_chart_view_get_plot_area): plot area extents are stored in
+	GogChartView::plot_area now.
+	(gog_chart_view_size_allocate): handle manual case.
+	(gog_chart_view_class_init): don't clip to chart area.
+	* graph/goffice/gog-control-foocanvas
+	(gog_control_foocanvas_set_property): remove logical_width_pts and
+	logical_height_pts properties. These are properties of GogGraph now.
+	(gog_control_foocanvas_get_property): ditto.
+	(gog_control_foocanvas_class_init): ditto.
+	* goffice/graph/gog-graph.c (gog_graph_set_property): handle new width-pts 
+	and height-pts properties.
+	(gog_graph_get_property): ditto.
+	(gog_graph_class_init): ditto. Chart and Title object can be
+	positionned manually.
+	(gog_graph_get_size): new.
+	(gog_graph_set_size): new.
+	* goffice/graph/gog-guru.c (cb_typesel_sample_plot_resize): don't
+	change graph logical size.
+	(cb_sample_pressed): don't change canvas scale.
+	(cb_canvas_select_item): center graph on canvas.
+	(cb_sample_plot_resize): calculate graph size to make it fit in canvas
+	area.
+	(graph_guru_init_format_page): don't change canvas scale.
+	* goffice/graph/gog-object.c (gog_object_set_property): handle new
+	position, position-is-manual and anchor properties.
+	(gog_object_get_property): ditto.
+	(gog_object_class_init): ditto.
+	(cb_position_changed): new.
+	(cb_manual_position_changed): new.
+	(cb_anchor_changed): new.
+	(gog_object_populate_editor): new UI for manual position setting.
+	(gog_role_cmp): test priority first, then compare allowable positions.
+	(gog_object_set_position_flags): emit a warning in case of wrong
+	flags.
+	(gog_object_get_manual_position): new.
+	(gog_object_set_manual_position): new.
+	(gog_object_get_manual_allocation): new.
+	* goffice/graph/gog-plot.c (gog_plot_populate_editor): allways call parent
+	populate_editor.
+	* goffice/graph/gog-renderer-pixbuf.c
+	(gog_renderer_pixbuf_get_text_OBR): use pango_layout_get_extents
+	instead of pango_layout_get_pixel_extents for more accuracy.
+	(gog_renderer_pixbuf_update): logical width and height of graph is a
+	property of GogGraph now.
+	* goffice/graph/gog-renderer.c (gog_renderer_set_property): remove
+	logical_width_pts and logical_height_pts properties.
+	(gog_renderer_get_property): ditto.
+	(gog_renderer_class_init): ditto.
+	* goffice/graph/gog-view.c (gog_view_size_allocate_real): handle
+	manual case.
+					    
+2005-07-22  Chris Lahey  <clahey at our.domain.is.not.set>
+
+	* goffice/drawing/god-drawing-renderer-gdk.c: Remove * .7 hack
+	since it's been fixed in parsing code.
+
+2005-07-21  Chris Lahey  <clahey at site>
+
+	* goffice/drawing/god-drawing-renderer-gdk.c,
+	goffice/drawing/god-paragraph-attributes.c,
+	goffice/drawing/god-paragraph-attributes.h: Add support for
+	setting whether the bullet is drawn for a particular paragraph.
+
+2005-07-19  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/grah/gog-axis-line.c (gog_axis_base_get_crossed_axis_type):
+	don't complain when axis_set = GOG_AXIS_SET_X.
+	(axis_line_get_bbox): scale tick len with gog_renderer_pt2r instead of
+	gog_renderer_pt2r_x.
+	(axis_line_render): ditto.
+	(axis_circle_get_bbox): ditto.
+	(axis_circle_render): ditto.
+	(x_process): use correct enum for label/tick side, which fixes a
+	display bug.
+
+2005-07-15  Dom Lachowicz <cinamod at hotmail.com>
+
+	* goffice/utils/go-file.c (go_get_mime_type): Free 'wuri' if mime lookup failed;
+	have function return "application/octet-stream" instead of "octet-string";
+	g_strdup() the "application/octet-stream" so that we don't try to free .text data
+	
+2005-07-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-legend.c (cb_render_elements): fix swatch,
+	line/marker position.
+
+2005-07-11  Morten Welinder  <terra at gnome.org>
+
+	* configure.in (set_more_warnings): Check for fdopen.
+
+	* goffice/utils/go-file.c (is_fd_uri): New function.
+	(go_file_create): Support URIs like "fd://1".
+
+2005-07-01  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/data/go-data-simple.c: (go_data_vector_str_load_values): set
+	vec->len (fixes a crash when pasting charts in abiword).
+	* goffice/graph/goffice-graph.h: change GOG_MS_DIM_* enum.
+	* goffice/graph/gog-data-set.c: (gog_dataset_dup_to_simple): fix export of
+	scalar strings.
+	* goffice/graph/gog-plot.c: (gog_plot_finalize),
+	(gog_plot_set_property), (gog_plot_get_property),
+	(gog_plot_class_init), (gog_plot_init): add "plot_group" property.
+	* goffice/graph/gog-plot.h:
+	* pixmaps/chart_dropbar_1_1.svg:
+	* pixmaps/chart_minmax_2_2.svg:
+	* plugins/plot_barcol/Makefile.am:
+	* plugins/plot_barcol/gog-1.5d.c: (go_plugin_init):
+	* plugins/plot_barcol/gog-dropbar.c: (gog_dropbar_plot_class_init):
+	update GOG_MS_DIM_*.
+	* plugins/plot_barcol/gog-minmax.c: (gog_minmax_axis_get_bounds):
+	set center_on_ticks to FALSE,
+	(gog_minmax_plot_class_init): update  GOG_MS_DIM_*.
+
+2005-06-26  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-theme.c: (gog_themes_init): add GogSeriesLines.
+	* plugins/plot_barcol/Makefile.am: add gog-series-lines.[c,h].
+	* plugins/plot_barcol/gog-1.5d.c: (gog_plot1_5d_init),
+	(series_lines_can_add), (series_lines_post_add),
+	(series_lines_pre_remove), (drop_lines_can_add),
+	(drop_lines_post_add), (drop_lines_pre_remove), (lines_can_add),
+	(lines_post_add), (lines_pre_remove), (gog_series1_5d_class_init),
+	(gog_series1_5d_init), (go_plugin_init): add support for various lines.
+	* plugins/plot_barcol/gog-1.5d.h: ditto.
+	* plugins/plot_barcol/gog-barcol.c: (gog_barcol_plot_init),
+	(gog_barcol_view_render): added series lines.
+	* plugins/plot_barcol/gog-dropbar.c: (gog_dropbar_plot_init),
+	(barcol_draw_rect), (gog_dropbar_view_render): added lines.
+	* plugins/plot_barcol/gog-line.c: (gog_line_plot_init),
+	(gog_area_plot_init), (gog_line_view_render): added drop lines.
+	* plugins/plot_barcol/gog-minmax.c: (gog_minmax_plot_init),
+	(gog_minmax_view_render): added lines.
+	* plugins/plot_barcol/gog-series-lines.c:
+	(gog_series_lines_init_style), (gog_series_lines_update),
+	(gog_series_lines_changed), (gog_series_lines_class_init),
+	(gog_series_lines_render): support for lines in various plots.
+	* plugins/plot_barcol/gog-series-lines.h: ditto.
+
+2005-06-24  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-legend.c: (cb_size_elements),
+	(gog_legend_view_size_request): use legned style to calculate elements
+	height.
+
+2005-06-21  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-renderer-cairo.c (grc_invert_pixbuf_RB): new.
+	(grc_draw_polygon): implement repeated image texture.
+	(grc_get_marker_surface): use grc_invert_pixbuf_RB.
+	(gog_renderer_cairo_update): ditto.
+
+2005-06-21  Jon K Hellan  <hellan at acm.org>
+
+	* goffice/graph/gog-control-foocanvas.c
+	(gog_control_foocanvas_update):  Fix typo.
+
+2005-06-21  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	New cairo renderer. Option at compile time (--with-cairo).
+	
+	* configure.in: add optional cairo dependency.
+	* goffice/graph/gog-control-foocanvas.c
+	(gog_control_foocanvas_set_property): use cairo renderer if enabled.
+	(gog_control_foocanvas_draw): ditto.
+	(gog_control_foocanvas_update): ditto.
+	(gog_control_foocanvas_class_init): ditto.
+	* goffice/graph/gog-renderer-cairo.[ch]: new files.
+	* goffice/utils/go-pattern.c (go_pattern_get_pattern): new.
+	
+2005-06-20  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_barcol/gog-1.5d.c: (gog_plot1_5d_update),
+	(gog_series1_5d_finalize), (gog_series1_5d_class_init): fixed error bar
+	leaks.
+
+2005-06-20  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/formats.c (find_currency): Special hack to accept
+	a quoted euro character.
+	(pattern_account): Remove stray "}".
+
+2005-06-20  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-guru.c: (cb_canvas_select_item): fixed one more leak.
+
+2005-06-20  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-guru.c: (cb_canvas_select_item): add missing
+	g_object_unref call.
+	* goffice/graph/gog-series.c: (regression_curve_can_add): fixed the test.
+	* goffice/graph/gog-style.c: (gog_style_set_image_preview): return if
+	pix == NULL (#308307).
+
+2005-06-16  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (axis_line_render): remove kludge for
+	ticks not centered on labels.
+	* goffice/graph/gog-axis.c (map_discrete_calc_ticks): separate
+	handling of ticks from handling of labels.
+	(gog_axis_update): allways set GogAxis::center_on_ticks from
+	GogBounds.
+	* plugins/plot_radar/gog-radar.c (gog_radar_plot_axis_get_bounds):
+	set center_on_ticks=TRUE explicitely.
+
+2005-06-13  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Support for rotated text and text color.
+
+	* goffice/graph/gog-axis-line.c (get_point_to_segment_distance):
+	moved to go-geometry.c.
+	(update_bbox): ditto.
+	(overlap): removed.
+	(compute_angles): removed.
+	(axis_line_point): use go_geometry_point_to_segment.
+	(axis_line_get_bbox): handle rotated text case. Use
+	go_geometry_cartesian_to_polar. side is an enum now.
+	(axis_line_render): ditto.
+	(axis_circle_get_bbox): ditto.
+	(axis_circle_render): ditto.
+	(xy_process): side is an enum.
+	(radar_process): ditto.
+	* goffice/graph/gog-label.c (gog_label_view_size_request): use
+	gog_renderer_get_text_AABR.
+	(gog_label_view_render): ditto.
+	* goffice/graph/gog-legend.c (cb_size_elements): ditto.
+	* goffice/graph/gog-reg-eqn.c
+	(gog_reg_eqn_view_render): ditto.
+	* goffice/graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_text): handle rotated text and color.
+	(gog_renderer_gnome_print_get_text_OBR): new. 
+	* goffice/graph/gog-renderer-pixbuf.c (get_rotated_layout_bounds):
+	new.
+	(gog_renderer_pixbuf_get_pango_layout): handle rotation angle.
+	(gog_renderer_pixbuf_draw_text): ditto. Handle special n * pi / 2
+	angles separately for performance.
+	(gog_renderer_pixbuf_get_text_OBR): new. 
+	* goffice/graph/gog-renderer-svg.c (gog_renderer_svg_get_text_OBR):
+	ditto.
+	(gog_renderer_svg_draw_text): handle rotation angle and color.
+	* goffice/graph/gog-renderer.c (gog_renderer_get_text_OBR): new. 
+	(gog_renderer_get_text_AABR): new. Replaces measure_text.
+	* goffice/graph/gog-style-prefs.glade: add widgets for text rotation
+	angle and text color.
+	* goffice/graph/gog-style.c (cb_rotation_angle_changed): new.
+	(cb_font_color_changed): new.
+	(font_init): load widgets for text rotation and color.
+	(gog_style_font_load): load rotation angle.
+	(gog_style_font_save): save rotation angle.
+	(gog_style_font_sax_save): ditto.
+	(gog_style_is_different_size): different angles means different sizes.
+	* goffice/utils/go-geometry.[ch]: new files. Collection of geometry
+	related functions.
+	
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 0.0.2
+
+2005-06-11  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* goffice/gtk/Makefile.am: Fix typos.
+
+2005-06-09  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-libxml-extras.c (xml_node_get_enum,
+	xml_node_set_enum): New functions.
+	(xml_node_get_int, xml_node_get_double): Improve error handling.
+
+2005-06-08  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* goffice/gtk/htmlhelp-stub.c:
+	* goffice/gtk/htmlhelp-stub.h:
+	* goffice/gtk/libhtmlhelp-stub.def: Remove
+	* goffice/gtk/Makefile.am: Remove libgoffice-html-help-stub.la
+	  it no longer belongs here.
+
+	* goffice/Makefile.am:
+	* goffice/gtk/goffice-gtk.c:
+	* goffice/utils/Makefile.am: Now stubs for Win32 are placed in
+	  libgoffice-win32-stub.la
+
+	* goffice/utils/goffice-win32-stub.def:
+	* goffice/utils/win32-stub.c:
+	* goffice/utils/win32-stub.h: New
+
+	* goffice/utils/go-file.[ch] (go_get_mime_type): Use
+	  FindMimeFromData() on Win32. Fall back to "text/plain" if
+	  no mime type is matched. [#304074]
+
+2005-06-06  Jody Goldberg <jody at gnome.org>
+
+	* goffice/app/go-plugin.c : Don't inherit from GTypeModule
+	  contain one and use it as long as we are active.
+
+2005-06-06  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-math.c (log1p): Define if needed.
+
+2005-06-05  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-data-set.c: (gog_dataset_dup_to_simple): add a helper
+	function to convert data to simple data.
+	* goffice/graph/gog-data-set.h: ditto.
+	* goffice/graph/gog-object.c: (dataset_dup), (gog_object_dup): add an
+	optional data converter to gog_object_dup and define a default one.
+	* goffice/graph/gog-object.h: ditto.
+	* goffice/graph/gog-graph.c: use new gog_object_dup syntax.
+
+2005-06-05  Jody Goldberg <jody at gnome.org>
+
+	* goffice/app/go-plugin.c (go_plugin_get_type_module) : new in
+	  preparation of change to GOPlugin.
+
+2005-06-05  Jody Goldberg <jody at gnome.org>
+
+	* goffice/app/go-plugin.c (go_plugin_activate) : add a
+	  g_type_module_use
+	(go_plugin_deactivate) : and an unuse.  Things are still broken on
+	  exit.
+
+2005-06-04  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+	
+	* goffice/graph/gog-object (gog_object_populate_editor): remove
+	g_message call.
+
+2005-06-04  Jody Goldberg <jody at gnome.org>
+
+	* plugins/plot_xy/plot-types.xml.in : XY priority 100
+	* plugins/plot_barcol/plot-types.xml.in : COL priority 90
+	  BAR priority 80
+
+	* goffice/graph/gog-guru.c (cb_plot_families_init) : select if the
+	  current item is a higher priority than anything we've seen.
+	(graph_guru_type_selector_new) : don't connect to the signal handler
+	  until after we select the default type.  Sort the list of families.
+	  We need to prune this list.
+
+	* goffice/graph/gog-plot-engine.c (cb_pending_plot_types_load) : load
+	  a priority for each family to allow for a reasonable default.
+
+2005-06-04  Jody Goldberg <jody at gnome.org>
+
+	* goffice/gtk/go-format-sel.c (nfs_init) : suppress warning.
+	(generate_preview) : put the args in the right order and remove the
+	  debug spew.
+
+2005-06-04  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_surface/gog-surface.c: (gog_contour_view_render):
+	fixed appearance, libart warnings and a major bug.
+
+2005-06-03  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Require libgsf 1.12.1; GSF_DYNAMIC_CLASS has changed.
+
+2005-06-02  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/Makefile.am: add gog-object-prefs.glade
+	* goffice/graph/gog-graph.c (gog_graph_class_init): position of chart
+	and title can be manual.
+	* goffice/graph/gog-object-prefs.glade: new.
+	* goffice/graph/gog-object.c (gog_editor_get_notebook): first page
+	is the default page.
+	(gog_object_set_property): handle compass and alignment properties.
+	(gog_object_get_property): ditto.
+	(object_pref_state_free): new.
+	(cb_compass_changed): new.
+	(cb_alignment_changed): new.
+	(gog_object_populate_editor): new. It handles only compass and alignment
+	flags.
+	(gog_object_class_init): install compass and alignment properties.
+	(gog_object_get_pos): renamed to gog_object_get_position_flags. Add a
+	mask parameter in order to get only a subset of position flags.
+	(gog_object_set_pos): renamed to gog_object_set_position_flags. Add a
+	mask parameter.
+	* goffice/graph/gog-style-prefs.glade: move line widgets to the left.
+	It improves consistency of widget position when navigating through
+	object tree.
+	* goffice/graph/gog-styled-object.c (styled_object_populate_editor):
+	call parent method.
+	
+2005-06-01  Jody Goldberg <jody at gnome.org>
+
+	* goffice/utils/go-format.c (go_format_value_gstring) : pull over from
+	  gnumeric with a simplified structure to handle only ints and
+	  doubles.
+	(go_style_format_condition) : ditto.
+
+2005-05-30  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_surface/xl-surface.c: (xl_contour_plot_build_matrix):
+	set num-elements of the first series, not the last one.
+
+2005-05-29  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-object.c: (gog_object_dup),
+	(gog_object_dup_with_values): rewrote to share identical code.
+
+2005-05-28  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-object.h: added missing declaration
+	(gog_object_dup_with_values).
+
+2005-05-28  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-object.c: (gog_object_dup_with_values):
+	new function aimed at export charts. 
+
+2005-05-27  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* goffice/utils/go-file.c (go_shell_arg_to_uri):
+	revert changes made by me in yesterday.
+	(go_shell_argv_to_glib_encoding): New. For Win32 we need to
+	get argv[] in utf-16 and convert them to utf-8 under NT
+	and use g_locale_to_utf() under Win9x.
+
+2005-05-27  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_barcol/gog-dropbar.c: (gog_dropbar_view_render): fixed
+	bars width and position.
+	* plugins/plot_barcol/plot-types.xml.in: ditto.
+
+2005-05-27  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/gtk/go-format-sel.c: (nfs_init): make the shortcut for currency
+	symbol selection work (#305635).
+
+2005-05-27  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/data/go-data-simple.c: (go_data_vector_val_as_str),
+	(go_data_vector_val_from_str), (go_data_vector_str_finalize),
+	(go_data_vector_str_dup), (go_data_vector_str_as_str),
+	(go_data_vector_str_from_str), (go_data_vector_str_load_len),
+	(go_data_vector_str_load_values), (go_data_vector_str_get_value),
+	(go_data_matrix_val_as_str), (go_data_matrix_val_from_str): fixed various
+	concerns related to the abigochart plugin.
+
+2005-05-26  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	[#305010]
+	* goffice/graph/gog-error-bar-prefs.glade: remove gnome requirement. 
+	* plugins/plot_pie/gog-pie-series-prefs.glade: ditto.
+	* plugins/plot_pie/gog-ring-prefs.glade: ditto.
+	
+2005-05-26  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* goffice/utils/go-file.c (go_shell_arg_to_uri): Convert
+	file name from system codepage to utf8 (glib/win32 now uses
+	utf8). [#304874]
+
+2005-05-25  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in (PKG_PROG_PKG_CONFIG): Rephrase the explanation.
+
+2005-05-24  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/format.c (format_remove_decimal): In the fallback
+	code, remove a decimals from all subformats.
+	(find_currency): Accept quotes around the currency.  Fixes
+	recognition of accounting formats.  [#305314]  [#305313]
+
+2005-05-23  Morten Welinder  <terra at gnome.org>
+
+	* goffice/gtk/goffice-gtk.c (go_gtk_file_sel_dialog,
+	go_gtk_select_image): Insist on getting a toplevel.  (It
+	determines, for one thing, what screen to use.)
+	* goffice/graph/gog-style.c (cb_image_file_select): Provide a
+	toplevel.  Fixes #305009.
+
+2005-05-22  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_barcol/gog-1.5d.c: (gog_series1_5d_update): Fix a trivial
+	bug.
+
+2005-05-20  Morten Welinder  <terra at gnome.org>
+
+	* goffice/gtk/goffice-gtk.c (go_access): Fix return type to int as
+	we return -1 sometimes.
+
+	* configure.in (set_more_warnings): Don't use -Wcrazy.
+
+2005-05-20  Stepan Kasal  <kasal at ucw.cz>
+
+	* plugins/plot_barcol/gog-dropbar.c (gog_dropbar_view_render):
+	  Remove unused variables.
+
+2005-05-20  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/goffice-graph.h: change GOG_MS_DIM_TYPES value and
+	add new ones.
+	* goffice/graph/gog-axis.c: (gog_axis_set_property): remove labels
+	and ticks for GOG_AXIS_PSEUDO_3D (enhance export to excel).
+	* pixmaps/Makefile.am: add icons for minmax and dropbar plots.
+	* plugins/plot_barcol/Makefile.am: add minmx and dropbar support.
+	* plugins/plot_barcol/gog-1.5d.c: (gog_plot1_5d_update),
+	(gog_series1_5d_update), (gog_series1_5d_populate_editor),
+	(go_plugin_init): ditto.
+	* plugins/plot_barcol/gog-barcol.c: ditto.
+	(gog_barcol_plot_populate_editor): ditto.
+	* plugins/plot_barcol/gog-dropbar.c: (gog_dropbar_plot_type_name),
+	(gog_dropbar_plot_class_init), (barcol_draw_rect),
+	(gog_dropbar_view_render), (gog_dropbar_view_info_at_point),
+	(gog_dropbar_view_class_init): ditto.
+	* plugins/plot_barcol/gog-dropbar.h: ditto.
+	* plugins/plot_barcol/gog-minmax-prefs.glade: ditto.
+	* plugins/plot_barcol/gog-minmax.c: (gog_minmax_series_init_style),
+	(gog_minmax_series_class_init), (gog_minmax_plot_set_property),
+	(gog_minmax_plot_get_property), (gog_minmax_plot_type_name),
+	(gog_minmax_axis_get_bounds), (cb_gap_changed),
+	(gog_minmax_plot_populate_editor), (gog_minmax_swap_x_and_y),
+	(gog_minmax_plot_class_init), (gog_minmax_plot_init),
+	(gog_minmax_view_render), (gog_minmax_view_info_at_point),
+	(gog_minmax_view_class_init): ditto.
+	* plugins/plot_barcol/gog-minmax.h: ditto.
+	* plugins/plot_barcol/plot-types.xml.in: ditto.
+	* plugins/plot_barcol/plugin.xml.in: ditto.
+
+2005-05-19  Jody Goldberg <jody at gnome.org>
+
+	* goffice/data/go-data-simple.c (go_data_vector_val_as_str) : use
+	  format_get_row_sep.
+
+2005-05-19  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis.c (map_discrete_calc_ticks): remove kludge by
+	using center_on_ticks.
+	* goffice/graph/gog-plot.c (gog_plot_get_axis_bounds): defaults
+	center_on_ticks to TRUE.
+	* plugins/plot_barcol/gog-barcol.c (gog_barcol_axis_get_bounds):
+	center_on_ticks = FALSE.
+	
+2005-05-18  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis.c (map_discrete_init): scale doesn't depend
+	on center_on_ticks.
+	(map_discrete): ditto.
+	(map_discrete_to_view): ditto.
+	(map_discrete_from_view): ditto.
+	(map_discrete_calc_ticks): tick_nbr doesn't depend on center_on_ticks.
+	* goffice/graph/gog-axis-line.c (gog_axis_base_populate_editor): don't
+	show layout page for GOG_AXIS_PSEUDO_3D. Call inherited
+	populate_editor if gui==NULL.
+	* plugins/plot_surface/gog-surface.c
+	(gog_contour_plot_axis_get_bounds): maxima = num_elements - 1.0
+	* plugins/plot_surface/xl-surface.c 
+	(xl_contour_plot_axis_get_bounds): ditto.
+
+2005-05-17  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/data/go-data-simple.c: (go_data_vector_val_get_value),
+	(go_data_vector_val_get_str): check args to avoid a segfault.
+
+2005-05-16  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/graph/gog-reg-curve.c (gog_reg_curve_get_value_at): Make
+	  this function static, without any declaration at the top.
+
+	* goffice/utils/go-file.h (go_get_mime_type): Change the return type
+	  to `const gchar *'.
+	* goffice/utils/go-file.c: ditto.
+
+	* goffice/utils/format.c (beyond_precision, beyond_precisionl):
+	  Move the declarations to the top, into an #ifdef DEFINE_COMMON.
+
+	* plugins/plot_surface/xl-surface.c (xl_contour_plot_axis_get_bounds):
+	  Make this more readable by moving part of the body ...
+	(get_y_vector): ... to this new function.
+
+	* tests/pie-demo.c (main): Adapt to the changed type of arg 1 of
+	  go_data_vector_str_new.
+
+2005-05-14  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Supply GOFFICE_PLUGIN_LIBADD on all platforms, not just
+	win32, in order to get complete dependency information in the plugins.
+	Use -no-undefined in GOFFICE_PLUGIN_LDFLAGS on all platforms to ensure
+	complete dependency information at link time.
+	Update the BUG-REPORT argument to AC_INIT now that bugzilla.gnome.org
+	has a "libgoffice" product.
+	Enable a number of additional warnings (when available) for which the
+	current code base is already virtually clean.
+
+2005-05-12  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/data/go-data-simple.h (go_data_vector_str_new): Change the
+	  type of the first parameter from (char**) back to (char const*const*)
+	* goffice/data/go-data-simple.c: Do the same and adapt the code.
+
+2005-05-12  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-marker.c (go_marker_selector): Plug leak.
+	Avoid const for non-const parameter.
+
+	* goffice/gtk/go-action-combo-pixmaps.c
+	(go_action_combo_pixmaps_create_tool_item): Take toolbar settings
+	into account.
+
+	* goffice/gtk/go-action-combo-color.c (make_icon): Multihead fix.
+
+	* goffice/gtk/goffice-gtk.c (update_preview_cb): Multihead fix.
+
+	* goffice/gtk/go-action-combo-stack.c
+	(go_action_combo_stack_create_tool_item): Take theme into account.
+
+2005-05-12  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/data/go-data-simple.c: (go_data_matrix_val_as_str),
+	(go_data_matrix_val_from_str): always use a semicolon as row
+	separator.
+
+2005-05-11  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* pixmaps/chart_dropbar_1_1.png: update icon.
+	* pixmaps/chart_dropbar_1_1.svg: ditto.
+	* pixmaps/chart_dropbar_1_2.png: ditto.
+	* pixmaps/chart_dropbar_1_2.svg: ditto.
+	* pixmaps/chart_minmax_1_1.png: ditto.
+	* pixmaps/chart_minmax_1_1.svg: ditto.
+	* pixmaps/chart_minmax_1_2.png: ditto.
+	* pixmaps/chart_minmax_1_2.svg: ditto.
+	* pixmaps/chart_minmax_2_1.png: new icon.
+	* pixmaps/chart_minmax_2_1.svg: ditto.
+	* pixmaps/chart_minmax_2_2.png: ditto.
+	* pixmaps/chart_minmax_2_2.svg: ditto.
+
+2005-05-11  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* pixmaps/chart_dropbar_1_1.png: New icon.
+	* pixmaps/chart_dropbar_1_1.svg: ditto.
+	* pixmaps/chart_dropbar_1_2.png: ditto.
+	* pixmaps/chart_dropbar_1_2.svg: ditto.
+	* pixmaps/chart_minmax_1_1.png: ditto.
+	* pixmaps/chart_minmax_1_1.svg: ditto.
+	* pixmaps/chart_minmax_1_2.png: ditto.
+	* pixmaps/chart_minmax_1_2.svg: ditto.
+	* pixmaps/dropbar.xpm: ditto.
+	* pixmaps/minmax.xpm: ditto.
+
+2005-05-11  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* plugins/plot_surface/gog-surface.c:
+	(gog_contour_plot_class_init): limit series number to 1.
+
+2005-05-10  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-chart.c (gog_chart_map_free): unref map::chart.
+
+2005-05-10  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* configure.in: add linear regressions in scatter plots.
+	* goffice/goffice.c: (libgoffice_init): ditto.
+	* goffice/graph/Makefile.am: ditto.
+	* goffice/graph/goffice-graph.h: ditto.
+	* goffice/graph/gog-guru.c: (cb_graph_guru_add_reg_curve),
+	(cb_reg_curve_type_menu_create), (reg_curve_type_menu_create),
+	(cb_attr_tree_selection_change): ditto.
+	* goffice/graph/gog-object-xml.c: (gog_object_new_from_xml): ditto.
+	* goffice/graph/gog-plot-engine.c: ditto.
+	(gog_reg_curve_engine_service_get_description),
+	(gog_reg_curve_engine_service_class_init),
+	(gog_reg_curve_new_by_name), (cb_pending_reg_curve_types_load),
+	(pending_reg_curves_types_load), (gog_reg_curve_service_read_xml),
+	(gog_reg_curve_service_get_description),
+	(gog_reg_curve_service_init), (gog_reg_curve_service_class_init),
+	(gog_plugin_services_init), (gog_reg_curve_type_free),
+	(create_reg_curve_types), (gog_reg_curve_types): ditto.
+	* goffice/graph/gog-plot-engine.h: ditto.
+	* goffice/graph/gog-reg-curve-prefs.glade: ditto.
+	* goffice/graph/gog-reg-curve.c: (gog_reg_curve_init_style),
+	(gog_reg_curve_populate_editor), (gog_reg_curve_finalize),
+	(gog_reg_curve_type_name), (gog_reg_curve_class_init),
+	(gog_reg_curve_init), (gog_reg_curve_dataset_dims),
+	(gog_reg_curve_dataset_get_elem),
+	(gog_reg_curve_dataset_dim_changed), (gog_reg_curve_dataset_init),
+	(gog_reg_curve_new_by_type), (gog_reg_curve_get_value_at),
+	(gog_reg_curve_get_equation), (gog_reg_curve_get_R2),
+	(gog_reg_curve_get_bounds), (gog_reg_curve_view_render),
+	(gog_reg_curve_view_size_allocate),
+	(gog_reg_curve_view_class_init): ditto.
+	* goffice/graph/gog-reg-curve.h: ditto.
+	* goffice/graph/gog-reg-eqn-prefs.glade: ditto.
+	* goffice/graph/gog-reg-eqn.c: (cb_text_pos_changed),
+	(cb_text_visibility_changed), (gog_reg_eqn_set_property),
+	(gog_reg_eqn_get_property), (gog_reg_eqn_init_style),
+	(gog_reg_eqn_populate_editor), (gog_reg_eqn_type_name),
+	(gog_reg_eqn_class_init), (gog_reg_eqn_init),
+	(gog_reg_eqn_view_render), (gog_reg_eqn_view_class_init): ditto.
+	* goffice/graph/gog-reg-eqn.h: ditto.
+	* goffice/graph/gog-series-impl.h: ditto.
+	* goffice/graph/gog-series.c: (regression_curve_can_add),
+	(regression_curve_post_add), (regression_curve_pre_remove),
+	(gog_series_class_init), (gog_series_init): ditto.
+	* goffice/graph/gog-theme.c: (gog_themes_init): ditto.
+	* plugins/Makefile.am: ditto.
+	* plugins/plot_xy/gog-xy.c: (gog_xy_view_render),
+	(gog_xy_view_size_allocate), (gog_xy_view_class_init),
+	(gog_xy_series_view_render), (gog_xy_series_view_size_allocate),
+	(gog_xy_series_view_class_init), (gog_xy_series_update),
+	(gog_xy_series_init), (gog_xy_series_class_init): ditto.
+	* plugins/reg_linear/Makefile.am: ditto.
+	* plugins/reg_linear/gog-lin-reg.c: (gog_lin_reg_curve_update),
+	(gog_lin_reg_curve_get_value_at), (gog_lin_reg_curve_get_equation),
+	(gog_lin_reg_curve_get_R2), (gog_lin_reg_curve_finalize),
+	(gog_lin_reg_curve_class_init), (gog_lin_reg_curve_init),
+	(go_plugin_init), (go_plugin_shutdown): ditto.
+	* plugins/reg_linear/gog-lin-reg.h: ditto.
+	* plugins/reg_linear/plugin.xml.in: ditto.
+	* plugins/reg_linear/reg-types.xml.in: ditto.
+	* po/POTFILES.in: ditto.
+	* plugins/plot_surface/xl-surface.c:
+	(xl_contour_plot_axis_get_bounds): fixed a compilation warning.
+
+2005-05-10  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump
+
+2005-05-09  Jody Goldberg <jody at gnome.org>
+
+	* Release 0.0.1
+
+2005-05-09  Jody Goldberg <jody at gnome.org>
+
+	* tests/pie-demo.c (main) : update
+
+2005-05-09  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* plugins/plot_radar/gog-radar.c (gog_rt_view_render): warning fix.
+
+2005-05-09  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (gog_axis_base_get_crossed_axis_type):
+	handle GOG_AXIS_SET_XY_pseudo_3d case.
+	(axis_line_get_bbox): fix label offset.
+	(axis_line_render): ditto.
+	(axis_circle_get_bbox): take ticks into account. Use GogChartMap.
+	(axis_circle_render): if axis is polar, use bezier paths by calling
+	gog_renderer_draw_arc. Draw ticks. Use GogChartMap.
+	(x_process): new.
+	(xy_process): use GogChartMap. 
+	(calc_polygon_parameters): removed.
+	(radar_process): implement padding_request for radial axes. 
+	(gog_axis_base_view_info_at_point): handle GOG_AXIS_SET_X.
+	(gog_axis_base_view_padding_request): ditto.
+	(gog_axis_base_view_render): ditto.
+	* goffice/graph/gog-axis.c (map_bounds): new.
+	(map_linear_auto_bound): handle auto bounds for non discrete circular
+	axis.
+	(map_linear_calc_ticks): place major ticks to a multiple of major
+	step.
+	(map_log_bounds): new.
+	(gog_axis_map_get_extents): new.
+	(gog_axis_map_get_bounds): new.
+	(role_grid_line_major_can_add): can be TRUE for non discrete 
+	GOG_AXIS_CIRCULAR.
+	(role_grid_line_minor_post_add): ditto.
+	(role_axis_line_can_add): can be TRUE for GOG_AXIS_RADIAL.
+	(gog_axis_set_property): changing invert flag invalidates layout.
+	(gog_axis_populate_editor): don't show map type selector for
+	GOG_AXIS_CIRCULAR.
+	(gog_axis_is_inverted): new.
+	* goffice/graph/gog-chart.c (calc_polygon_parameters): new.
+	(calc_circle_parameters): new.
+	(null_map_2D): new.
+	(x_map_2D_to_view): new.
+	(xy_map_2D_to_view): new.
+	(polar_map_2D_to_view): new.
+	(gog_chart_map_get_polar_parms): new.
+	(gog_chart_map_new): needs pointers to axes of the axis set now.
+	handle GOG_AXIS_SET_X, GOG_AXIS_SET_RADAR and
+	GOG_AXIS_SET_XY_pseudo_3d.
+	(gog_chart_map_2D): removed.
+	(gog_chart_map_2D_to_view): new.
+	(gog_chart_map_get_axis_map): new.
+	(gog_chart_map_is_valid): new.
+	(gog_chart_axis_set_assign): handle GOG_AXIS_SET_RADAR.
+	* goffice/graph/gog-grid-line.c (calc_polygon_parameters): removed.
+	(gog_grid_line_view_render): handle polar plots.
+	* goffice/graph/gog-grid.c (gog_grid_view_render): handle polar and
+	radar plots.
+	* goffice/graph/gog-renderer-gnome-print.c
+	(draw_bezier_path): new.
+	(gog_renderer_gnome_print_draw_bezier_path): use draw_bezier_path.
+	(gog_renderer_gnome_print_draw_bezier_polygon): new.
+	* goffice/graph/gog-renderer-pixbuf.c
+	(gog_renderer_pixbuf_draw_polygon): fix transparency rendering. Idea
+	stolen from gnome-print.
+	(gog_renderer_pixbuf_draw_bezier_polygon): new.
+	* goffice/graph/gog-renderer-svg.c (fill_properties): new.
+	(gog_renderer_svg_draw_bezier_polygon): new.
+	* goffice/graph/gog-renderer.c 
+	(gog_renderer_get_ring_wedge_vpath): new.
+	(gog_renderer_draw_ring_wedge): new.
+	(gog_renderer_draw_pie_wedge): new.
+	(gog_renderer_draw_arc): new.
+	* plugins/plot_radar/gog-radar.c: renamed GogRadarPlot to GogRTPlot,
+	as base of GogRadarPlot and GogPolarPlot.
+	New GogRadarPlot and GogPolarPlot classes.
+	Renamed GogRadarView class to GogRTView class.
+	(gog_rt_view_render): handle radar and polar plots.
+	Renamed GogRadarSeries class to GogRTSeries.
+	* plugins/plot_radar/plot-types.xml.in: add polar plots.
+	* plugins/plot_radar/plugin.xml.in: ditto.
+	
+2005-05-09  Morten Welinder  <terra at gnome.org>
+
+	* goffice/graph/gog-style.c (cb_font_changed): C99, const, and
+	type fixes.
+
+2005-05-09  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/data/go-data-simple.c: (go_data_matrix_val_as_str),
+	(go_data_matrix_val_from_str): made things work.
+	* plugins/plot_surface/gog-surface.c: (gog_contour_plot_update),
+	(gog_contour_view_render): avoid crashes and weird displays
+	when there are no data for the axis.
+	* plugins/plot_surface/xl-surface.c (xl_contour_plot_build_matrix):
+	fix a vector length problem and replace nan by 0. to be xl compatible.
+
+2005-05-08  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/data/go-data-simple.c: (go_data_vector_str_from_str):
+	fix an infinite loop condition.
+	* plugins/gog-surface.c: fixed several critical bugs.
+
+2005-05-07  Jean Brefort  <jean.brefort at normalesup.org>
+	* goffice/graph/gog-legend.c: (cb_render_elements): use style
+	for legend font.
+	* goffice/graph/gog-style.c: (cb_font_changed): make things work,
+	at least for now
+	* goffice/gtk/go-font-sel.c: (style_selected): fixed it,
+	(go_font_sel_set_style): added a warning.
+
+2005-05-07  Morten Welinder  <terra at gnome.org>
+
+	* goffice/gtk/go-action-combo-color.c (go_action_combo_color_new):
+	Don't set ->icon here, but make it when needed.  Fixes #302880.
+	(make_icon): New function.
+
+2005-05-07  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/data/go-data-simple.c: (go_data_vector_val_finalize),
+	(go_data_vector_val_dup), (go_data_vector_val_as_str),
+	(go_data_vector_val_from_str), (go_data_vector_val_class_init),
+	(go_data_vector_val_new), (cb_strings_destroy_notify),
+	(go_data_vector_str_finalize), (go_data_vector_str_dup),
+	(go_data_vector_str_as_str), (go_data_vector_str_from_str),
+	(go_data_vector_str_class_init), (go_data_vector_str_init),
+	(go_data_vector_str_new),
+	(go_data_vector_str_set_translation_domain),
+	(go_data_matrix_val_finalize), (go_data_matrix_val_dup),
+	(go_data_matrix_val_eq), (go_data_matrix_val_load_size),
+	(go_data_matrix_val_load_values), (go_data_matrix_val_get_value),
+	(go_data_matrix_val_get_str), (go_data_matrix_val_as_str),
+	(go_data_matrix_val_from_str), (go_data_matrix_val_class_init),
+	(go_data_matrix_val_new): add GODataMatrixVal class and add
+	serialization to GODataVectorVal and GODataVectorStr.
+	* goffice/data/go-data-simple.h: add GODataMatrixVal class and
+	enhanced vectors.
+	* goffice/data/go-data.c: (go_data_matrix_get_value),
+	(go_data_matrix_get_str): check if row and column are valid.
+	* goffice/gtk/go-color-palette.c: (create_color_sel): set opacity (see
+	#302387).
+	* goffice/gtk/go-format-sel.c: use go_setlocale instead of gnm_setlocale.
+	* goffice/utils/format.c: (go_setlocale),
+	(go_set_untranslated_bools): renamed two gnm functions.
+	* goffice/utils/format.h: ditto.
+	* plugins/plot_surface/xl-surface.c: updated args to go_data_vector_str_new
+	(xl_contour_plot_axis_get_bounds): updated args to go_data_vector_str_new.
+
+2005-05-07  Jody Goldberg <jody at gnome.org>
+
+	* goffice/graph/gog-object-xml.c (gog_dataset_sax_save) : use
+	  g_snprintf it is more portable.
+	(gog_dataset_dom_save) : ditto.
+	* goffice/utils/go-libxml-extras.c (xml_node_set_double) : ditto.
+
+2005-05-06  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-chart.c (plot_render): new.
+	(gog_chart_view_render): render plot marked with render_before_axes
+	before axes, but after grid and background.
+	* goffice/graph/gog-plot.c (gog_plot_init): default render_before_axes
+	to FALSE.
+	* plugings/plot_barcol/gog-line.c (gog_area_plot_init):
+	render_before_axes = TRUE.
+	* plugins/plot_radar/gog-radar.c (gog_radar_area_plot_init): ditto.
+	* plugins/plot_surface/gog-surface.c (gog_contour_plot_init): ditto.
+
+2005-05-05  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-glib-extras.c (go_object_properties_free,
+	go_object_properties_collect, go_object_properties_apply): New
+	functions.
+
+2005-05-04  Morten Welinder  <terra at gnome.org>
+
+	* goffice/gtk/go-combo-box.c (go_combo_box_style_set): New
+	function.
+	(go_combo_box_class_init): Hook up go_combo_box_style_set and
+	define add-tearoffs widget style property.
+
+2005-05-04  Jody Goldberg <jody at gnome.org>
+
+	* goffice/app/go-plugin-service.c (plugin_service_new) : minor leak.
+
+2005-05-01  Jon K Hellan  <hellan at acm.org>
+
+	* goffice/gtk/goffice-gtk.[ch] (go_mime_to_image_format): New. Get
+	image format for mime type.
+	(go_image_format_to_mime): New. Get mime types for image format.
+
+2005-04-29  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-plot.c: added missing header.
+
+2005-04-29  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-glib-extras.c (go_object_toggle): New function.
+
+2005-04-28  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in (WITH_WIN32): Fix the case command for $host_os,
+	add the "pw32*" pattern.
+	(AC_CANONICAL_HOST): Call explicitly, we use $host_os.
+	(WINDRES): Add an AC_ARG_VAR declaration.
+
+2005-04-28  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* configure.in: Remove OS_WIN32 and combine PLATFORM_WIN32
+	and WITH_WIN32.
+
+	* goffice/Makefile.am: Use WITH_WIN32
+
+2005-04-28  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-plot.c: (cb_axis_changed): initialize value.
+
+2005-04-21  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in (GOFFICE_LIB_VERSON): Rename to ...
+	(GOFFICE_LIB_VERSION): ... and compute statically, by m4_eval.
+	* goffice/Makefile.am (goffice-paths.h): Also depends on Makefile.
+	* plugins/plot_barcol/Makefile.am, plugins/plot_pie/Makefile.am:
+	* plugins/plot_xy/Makefile.am: Don't list glade files in xml_DATA.
+
+2005-04-20  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* goffice/gtk/go-action-combo-text.c: Add a new property
+	"case-sensitive".
+
+2005-04-19  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/utils/Makefile.am (SUFFIXES): Remove, Automake deduces it
+	  (at least Automake >= 1.7).
+
+2005-04-18  Stepan Kasal  <kasal at ucw.cz>
+
+	* plugins/plot_surface/xl-surface.c (xl_contour_plot_build_matrix):
+	Don't initialize `ptr' twice; do initialize `series'.
+
+2005-04-18  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/utils/go-gradient.h (GOGradientDirection): Properly terminate
+	  with GO_GRADIENT_MAX.
+	* goffice/utils/go-gradient.c (grad_dir_names): No need to include the
+	  enum number in the structure; code adapted.
+	* goffice/utils/go-marker.c: Don't omit libart includes when !WITH_GTK;
+	(marker_shape_names): Merge into marker_shapes; adapt code.
+	(marker_shapes): Use macros to shorten the definition.
+	(marker_update_pixbuf, go_marker_finalize, go_marker_set_shape):
+	(go_marker_set_outline_color, go_marker_set_fill_color):
+	(go_marker_set_size): Factor out common code ...
+	(marker_free_pixbuf): ... to a new static function.
+	(SELECTOR_PIXBUF_SIZE, SELECTOR_MARKER_SIZE): Remove unused defines.
+	* goffice/utils/go-marker.h (pixbuf): If !WITH_GTK, rename this to ...
+	(pixbuf_placeholder): ..., so that noone can actually use it.
+	* goffice/utils/go-pattern.c (pattern_names): Merge into go_patterns;
+	  adapt code.
+	* goffice/utils/go-pattern.h (go_pattern_selector): Omit if !WITH_GTK.
+
+2005-04-18  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Call PKG_PROG_PKG_CONFIG explicitly.
+
+2005-04-15  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Fix the appearance of help strings.
+
+2005-04-12  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/utils/go-file.c: #include libgnomevfs/gnome-vfs-mime-utils.h;
+	  this file comes via gsf-input-gnomevfs.h and gnome-vfs.h in current
+	  version, but not in my gnome-vfs 2.4.2.
+	* goffice/graph/gog-plot.c (gog_plot_update_3d): Cosmetic fix.
+
+2005-04-10  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/goffice-graph.h: allow use of GOG_AXIS_PSEUDO_3D.
+	* goffice/graph/gog-axis-line.c: add pseudo 3d axis support.
+	(gog_axis_base_view_padding_request), (gog_axis_base_view_render):
+	* goffice/graph/gog-axis.c: (gog_axis_calc_ticks): ditto.
+	* goffice/graph/gog-chart.c: (gog_chart_map_new),
+	(gog_chart_map_2D), (role_grid_can_add), (pseudo_3d_axis_can_add),
+	(pseudo_3d_axis_post_add), (gog_chart_axis_set_assign): ditto.
+	* goffice/graph/gog-plot-impl.h: ditto.
+	* goffice/graph/gog-plot.c: (gog_plot_class_init),
+	(gog_plot_foreach_elem), (gog_plot_get_axis), (gog_plot_update_3d): ditto.
+	* goffice/graph/gog-plot.h: ditto.
+	* plugins/plot_surface/Makefile.am: ass xl-surface.*.
+	* plugins/plot_surface/gog-contour-prefs.c: removed deprecated code and
+	added "transposed" property managing.
+	* plugins/plot_surface/gog-contour-prefs.glade: ditto.
+	* plugins/plot_surface/gog-surface.c: rewrote to use pseudo 3d axis.
+	* plugins/plot_surface/gog-surface.h: ditto.
+	* plugins/plot_surface/plugin.xml.in: added xl compatibility contours plots
+	* plugins/plot_surface/xl-surface.c: ditto.
+	* plugins/plot_surface/xl-surface.h: ditto.
+
+2005-04-08  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* goffice/gtk/Makefile.am: use -export-symbols to link with
+	libhtmlhelp-stub.def
+
+2005-04-07  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-renderer-svg.c: avoid use of
+	g_string_append_printf.
+
+2005-04-07  Morten Welinder  <terra at gnome.org>
+
+	* goffice/gtk/goffice-gtk.c (go_gtk_url_is_writeable): Use
+	go_access.  No need to define G_IS_DIR_SEPARATOR anymore.
+	(go_access): Copied from gsf while we're waiting for glib.
+
+2005-04-07  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-renderer-svg.c: Avoid locale changes by using
+	g_ascii_dtostr.  Fixes 172726.
+
+2005-04-07  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-guru.c: (cb_attr_tree_selection_change): don't
+	scroll to selection if nothing is selected.
+
+2005-04-06  Morten Welinder  <terra at gnome.org>
+
+	* plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_set_property): Add
+	missing "break;"
+
+	* goffice/utils/datetime.c (datetime_isoweeknum): Replace by
+	g_date_get_iso8601_week_of_year.
+	* configure.in: Require glib 2.6.4.
+
+2005-04-04  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/format.c (go_format_number): Do at least a small
+	attempt at getting fractional seconds right.
+
+2005-04-02  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/goffice.c: (libgoffice_init), (libgoffice_shutdown): call
+	number_format_init/shutdown.
+
+2005-04-01  Jody Goldberg <jody at gnome.org>
+
+	* goffice/utils/regutf8.c : include string.h to suppress warning about
+	  implicit decl of strlen
+
+2005-04-01  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-glib-extras.c (go_guess_encoding): Try exotic
+	encodings guess by libxml.
+
+	* goffice/drawing/god-property-table.h: Use canonical property
+	names.
+
+	* goffice/gtk/goffice-gtk.c (go_gtk_select_image): Moderately
+	cheesy way of saving where we were last time.
+
+2005-04-01  Stepan Kasal  <kasal at ucw.cz>
+
+	s/INCLUDES/AM_CPPFLAGS/  "automake -Wall" has told me this.
+
+	* goffice/libgoffice-1.pc.in: Move ...
+	* libgoffice-1.pc.in: ... here.
+	* Makefile.am, goffice/Makefile.am, configure.in: Adapt to the move.
+	* goffice/utils/Makefile.am (non-intermediate): New dummy rule; see
+		http://bugzilla.gnome.org/show_bug.cgi?id=172211 and
+		http://bugzilla.gnome.org/show_bug.cgi?id=172212
+	(.list.c, .list.h): Remove $(GLIB_GENMARSHAL); it didn't work
+	  anyway, the prerequisities of an implicit rule are ignored.
+	* configure.in (GLIB_GENMARSHAL): Full path is not needed.
+	(GOFFICE_CFLAGS): No need to amend this.
+
+2005-03-31  Morten Welinder  <terra at gnome.org>
+
+	* goffice/app/go-plugin-service.c (go_plugin_file_saver_save): If
+	we failed to load the plugin, set an error on the output.
+
+2005-03-30  Ivan, Wong Yat Cheung <email at ivanwong.info>
+
+	* configure.in:
+	* plugins/plot_*/Makefile.am: modify GOFFICE_PLUGIN_LDFLAGS and
+	  add add GOFFICE_PLUGIN_LIBADD. They help when
+	  host_os == win32.
+
+	* goffice/Makefile.am: -export-all-symbols is not the
+	  final solution. Will remove it when we have GO_API or
+	  any other solution.
+
+	* goffice/goffice-priv.h:
+	* goffice/goffice.c:
+	* goffice/app/go-plugin.c: use go_sys_lib_dir ()
+
+	* goffice/gtk/Makefile.am: libgoffice-html-help-stub.la
+
+2005-03-30  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-object.c (gog_editor_free): free editor.
+
+2005-03-30  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/regutf8.c: Import Gnumeric's non-gui search stuff.
+	Make it a gobject.
+	(go_search_replace_set_search_text,
+	go_search_replace_set_replace_text): Be paranoid.
+
+2005-03-29  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* pixmaps/chart_polar_1_1.[png,svg]: new.
+	* pixmaps/polar.[png,svg]: new.
+
+2005-03-28  Morten Welinder  <terra at gnome.org>
+
+	* .../*.c: Use canonical property names.
+
+	* goffice/utils/go-libxml-extras.c
+	(e_xml_get_child_by_name_by_lang): Use g_get_language_names.
+
+	* goffice/utils/Makefile.am (libgoffice_utils_la_HEADERS): Remove
+	go-locale.[ch].
+
+2005-03-27  Morten Welinder  <terra at gnome.org>
+
+	* goffice/gtk/go-combo-box.c (go_combo_box_init): Use canonical
+	property names.
+	(go_combo_popup_tear_off): Ditto.
+
+	* goffice/gtk/go-action-combo-text.c
+	(go_action_combo_create_tool_item): Ditto.
+
+	* goffice/gtk/go-action-combo-stack.c
+	(go_action_combo_stack_create_tool_item): Ditto.
+
+	* goffice/gtk/go-action-combo-color.c (go_action_combo_color_new):
+	Ditto.
+
+2005-03-27  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/app/error-info.h: add missing G_BEGIN_DECLS and G_END_DECLS.
+	* goffice/app/file-priv.h: ditto.
+	* goffice/app/file.h: ditto.
+	* goffice/app/go-cmd-context-impl.h: ditto.
+	* goffice/app/go-cmd-context.h: ditto.
+	* goffice/app/go-error-stack.h: ditto.
+	* goffice/app/go-object.h: ditto.
+	* goffice/app/go-plugin-loader-module.h: ditto.
+	* goffice/app/go-plugin-loader.h: ditto.
+	* goffice/app/go-plugin-service.h: ditto.
+	* goffice/app/go-plugin.h: ditto.
+	* goffice/app/go-service.h: ditto.
+	* goffice/app/io-context-priv.h: ditto.
+	* goffice/app/io-context.h: ditto.
+	* goffice/app/module-plugin-defs.h: ditto.
+	* goffice/data/go-data-simple.h: ditto.
+	* goffice/graph/gog-error-bar.h: ditto.
+	* goffice/graph/gog-renderer.h: ditto.
+	* goffice/ms-compat/go-ms-parser.h: ditto.
+	* goffice/ms-compat/god-drawing-ms.h: ditto.
+	* goffice/utils/datetime.h: ditto.
+	* goffice/utils/go-math.h: ditto.
+
+2005-03-25  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in (GOFFICE_WITHOUT_GTK, GOFFICE_WITH_GNOME): Rename
+	  these defines back to WITH_GTK and WITH_GNOME.
+	(GOFFICE_WITH_GTK, GOFFICE_WITH_GNOME): Rename the Automake
+	  conditionals back to WITH_GTK and WITH_GNOME, too.
+
+2005-03-24  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/app/module-plugin-defs.h (GOFFICE_MODULE_PLUGIN_INFO_DECL):
+	  Removed, it's not used.
+
+2005-03-24  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/Makefile.am (goffice-paths.h): Rewrite the rule,
+	  goffice-paths.sh* is no longer used.
+	(EXTRA_DIST, noinst_HEADERS): No longer needed.
+	* goffice/goffice-paths.sh.in: Removed.
+	* configure.in: Don't generate goffice-paths.sh, rearrange the
+	  goffice_* AC_SUBSTs.
+	* goffice/goffice.c (LIBGOFFICE_VERSION): Renamed to GOFFICE_VERSION.
+	(libgoffice_lib_dir): Comment out in the WIN32 block, since the
+	  declaration is already commented out.
+
+2005-03-23  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Generate goffice-features.h as a header file, subset
+	  of goffice-config.h.
+	* goffice/goffice-config.h.in: Adjust the template.
+
+2005-03-22  Stepan Kasal  <kasal at ucw.cz>
+
+	* autogen.sh: REQUIRED_AUTOCONF_VERSION=2.54  We already required
+	  that indirectly, by asking for Automake >= 1.7.2.
+	* configure.in: AC_PREREQ(2.54)
+	  - don't default to --without-gtk even if the reqs are not met;
+	  - don't generate stamp.h; the issue is solved by Automake 1.7.2;
+	    see info '(autoconf)Automatic Remaking' for details.
+	* stamp.h.in: Nuke.
+	* .cvsignore: Remove stamp*.
+	* goffice/.cvsignore: Remove depcomp.
+	* po/POTFILES.in: Remove goffice/cut-n-paste/pcre/printint.c.
+
+2005-03-23  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* plugins/plot_radar/gog-radar.c (gog_radar_view_render): handle
+	inverted circular axis.
+
+2005-03-22  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (radar_process): fix padding request
+	for circular axis.
+
+2005-03-22  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (gog_axis_base_get_property): handle
+	GOG_AXIS_AUTO.
+	(gog_axis_base_set_position_auto): removed.
+	(gog_axis_base_set_position): handle GOG_AXIS_AUTO.
+	(xy_process): ditto.
+	* goffice/graph/gog-axis-line.h: add GOG_AXIS_AUTO to GogAxisPosition.
+
+2005-03-22  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	Add support for axis selection.
+
+	* goffice/graph/gog-axis-line.c (get_point_to_segment_distance): new.
+	(axis_line_point): new.
+	(axis_circle_point): new.
+	(axis_cirlce_render): render as polygon if num_radii > 0.0
+	cos (x - pi/2) = sin (x) 
+	sin (x - pi/2) = -cos (x)
+	(xy_process): handle point routine now.
+	(radar_process) : ditto.
+	(gog_axis_base_view_info_at_point): new.
+	(gog_axis_base_view_padding_request): pass action parameter to process
+	functions.
+	(gog_axis_base_view_render): ditto.
+	* goffice/graph/gog-grid-line.c (gog_grid_line_info_at_point): new.
+	Just return FALSE for now.
+
+2005-03-22  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-graph.c (gog_graph_force_update): replace if
+	statement by a while loop, since an object update may trigger a
+	update request for an other object.
+	* goffice/graph/gog-renderer-gnome-print.c
+	(gog_graph_print_to_gnome_print): force model update before rendering.
+	* goffice/graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_update):
+	ditto.
+	* goffice/graph/gog-renderer-svg.c (gog_graph_export_to_svg): ditto.
+	* plugins/plot_barcol/gog-line.c (gog_line_view_render): revert
+	previous broken fix (2005-03-17).
+	* tests/pie-demo.c (main): gog_chart_get_cardinality is not needed
+	anymore.
+
+2005-03-21  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* configure.in: change test/Makefile to tests/Makefile
+
+2005-03-21  Christopher James Lahey  <clahey at ximian.com
+
+	* goffice/drawing/Makefile.am, goffice/ms-compat/Makefile.am:
+	Export header files.
+
+2005-03-21  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (gog_axis_base_set_position_auto):
+	convenience function that places an axis line in the first free
+	position.
+	(cb_position_toggled): search all the axes with the same type, not
+	just parent one.
+	(axis_line_get_bbox): correct placement of axis labels.
+	(axis_line_render): ditto.
+	(axis_circle_get_bbox): ditto.
+	(axis_circle_render): ditto.
+	* goffice/graph/gog-axis.c (role_axis_line_post_add): use
+	gog_axis_base_set_position_auto.
+	(gog_axis_view_padding_request): restore padding hack.
+	(gog_axis_view_size_allocate): ditto.
+	* goffice/graph/gog-chart.c (axis_post_add): place axis in the first
+	free position.
+
+2005-03-21  Stepan Kasal  <kasal at ucw.cz>
+
+	* MAINTAINERS: New file, two beings selected as victims -- one human
+	  and one demi-god.
+	* Makefile.am (EXTRA_DIST): Add README NEWS BUGS MAINTAINERS AUTHORS.
+	* README: In the requirements, state that we require pango 1.8.1, and
+	  fix the Debian name of the pango package; delete intltool, it's
+	  distributed with the package.
+	* configure.in: Delete the requirement for libgnomeprintui.
+
+2005-03-20  Jody Goldberg <jody at gnome.org>
+
+	* goffice/gtk/go-format-sel.c (fmt_dialog_enable_widgets) : make sure
+	  the current selection is visible.
+
+	* goffice/goffice.c (libgoffice_init) : look in the right place.
+
+2005-03-19  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/gtk/go-graph-widget.c: (go_graph_widget_size_allocate),
+	(go_graph_widget_set_property), (go_graph_widget_get_property),
+	(go_graph_widget_class_init), (go_graph_widget_init): add abd use
+	aspect-ratio property.
+	* test/pie-demo.c: (main): add a title and a lengend.
+
+2005-03-18  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis.c (map_discrete): inverted is in
+	GogAxisMap::axis->inverted.
+	(map_discrete_to_view): ditto.
+	(map_discrete_from_view): ditto.
+	(map_linear_from_view) :ditto.
+	(map_linear_to_view): ditto.
+	(map_log_to_view): ditto.
+	(map_log_from_view): ditto.
+	(gog_axis_map_from_view): ditto.
+	(gog_axis_map_to_view): ditto.
+	(map_baseline): new.
+	(map_log_finite): new.
+	(map_log_baseline): new.
+	(gog_axis_map_finite): new. Returns TRUE if value means something in
+	this map.
+	(gog_axis_map_get_baseline): new. Returns the baseline for the given
+	map, in view coordinates, clipped to offset and offset+length, where
+	offset and length are the parameters of gog_axis_map_new.
+ 	* goffice/graph/gog-error-bar.c (gog_error_bar_render): do not try to
+	render error bar if a part of it is not at a valid coordinate.
+	* plugins/plot_barcol/gog-barcol.c (gog_barcol_view_render): replace
+	go_finite tests by gog_axis_map_finite.
+	* plugins/plot_radar/gog-radar.c (gog_radar_view_render): ditto.
+	* plugins/plot_xy/gog-xy.c: ditto.
+	* plugins/plot_barcol/gog-line.c (gog_line_view_render): ditto. Use
+	gog_axis_map_get_baseline for y_zero.
+
+2005-03-17  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* plugins/plot_barcol/gog-line.c (gog_line_view_render): Don't free
+	memory with invalid pointers.
+
+2005-03-16  Stepan Kasal  <kasal at ucw.cz>
+
+	* autogen.sh: Require intltool >= 0.27.2 and explain why;
+	  fix IFS handling; cosmetic changes.
+	* configure.in: Cosmetics.
+	* goffice/libgoffice-1.pc.in: Change the "Name:" to libGOffice,
+	  and put a command with a hint for anon cvs.
+
+2005-03-16  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis.c (map_discrete_auto_bound): do not set auto
+	cross point.
+	
+2005-03-16  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/utils/go-line.c (go_line_build_vpath),
+	(go_line_build_bpath): fix new point test.
+
+2005-03-16  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* test/pie-demo.c: fix compilation warnings and add some comments.
+
+2005-03-15  Morten Welinder  <terra at gnome.org>
+
+	* goffice/cut-n-paste/pcre/pcre.c (pcre_exec): Backport another
+	UMR fix.
+
+2005-03-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/graph/gog-axis-line.c (axis_line_get_bbox): remove extra
+	gog_axis_map_new.
+	(gog_axis_base_view_padding_request): handle GOG_AXIS_SET_X like
+	GOG_AXIS_SET_XY.
+	(gog_axis_base_view_render): ditto.
+	* goffice/graph/gog-chart.c (gog_chart_map_new): ditto.
+	(gog_chart_map_2D): ditto.
+	* goffice/graph/gog-axis.c (role_axis_line_can_add): adding an axis
+	line is only relevant for GOG_AXIS_SET_XY for now.
+	(gog_axis_class_init): add role_axis_line_can_add.
+	* goffice/graph/gog-plot.c (gog_plot_populate_editor): axis selection
+	is only relevant for GOG_AXIS_SET_XY.
+	(gog_plot_set_axis_by_id): don't try to find an axis if id = 0,
+	GogObject::id starts at 1.
+	* plugins/plot_boxes/gog-xy.c (gog_bubble_plot_populate_editor):
+	call parent::populate_editor.
+	* plugins/plot_boxes/gog-boxplot.c (gog_box_plot_populate_editor):
+	ditto.
+	(gog_box_plot_view_render): free x_map.
+	
+2005-03-15  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/graph/Makefile.am: Distribute gog-axis-line-impl.h.
+
+2005-03-15  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-axis.c: (map_discrete_calc_ticks): limit ticks number
+	to GOG_AXIS_MAX_TICK_NBR (fix a crash when importing xl log axis).
+
+2005-03-15  Stepan Kasal  <kasal at ucw.cz>
+
+	Also undo the changes connected with the changes in configure.in, ...
+
+	* plugins/plot_barcol/Makefile.am, plugins/plot_boxes/Makefile.am,
+	plugins/plot_pie/Makefile.am, plugins/plot_radar/Makefile.am,
+	plugins/plot_surface/Makefile.am, plugins/plot_xy/Makefile.am: ...here.
+
+2005-03-14  Morten Welinder  <terra at gnome.org>
+
+	* configure.in: Undo last change.  Test links with gcc, not $LD.
+
+	* goffice/utils/format.c: Compile plain double version first as
+	gdb sets breakpoints only for first copy.
+	(go_format_number): Disable strange number scaling for ".".
+	[#167274]
+
+2005-03-14  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-axis.c: (gog_axis_get_entry): fixed test for
+	GogAxisElemType arg (GOG_AXIS_ELEM_MAX_ENTRY instead of GOG_AXIS_ELEM_MAX).
+
+2005-03-13  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/goffice.c (libgoffice_init): add GogAxisLine object.
+	* goffice/graph/Makefile.am: add gog-axis-line.[ch]
+	* goffice/graph/goffice-graph.h: add GogAxisLine object. Add new
+	object position GOG_POSITION_PADDING.
+	* goffice/graph/gog-axis-prefs.glade: Rework of axis property pages,
+	now called Scale and Layout.
+	* goffice/graph/gog-axis-line.[ch], gog-axis-line-impl.h: new. 
+	Contains an implementation of what is needed to actually draw an
+	axis on screen, which was previously provided by GogAxis, in 
+	GogAxisBase and GogAxisBaseView.
+	* goffice/graph/gog-axis.c: GogAxis is now derived from GogAxisBase.
+	Tick settings and position are now property of GogAxisBase.
+	(create_invalid_axis_ticks): allways generate tick labels.
+	(map_discrete_calc_ticks): ditto. 
+	(map_linear_calc_ticks): ditto.
+	(map_log_calc_ticks): ditto.
+	(role_label_post_add): removed.
+	(role_axis_line_post_add): new. Set axis line position to an unused
+	position.
+	(gog_axis_set_property): removed tick and position settings.
+	(gog_axis_get_property): ditto.
+	(cb_pos_changed): removed.
+	(gog_axis_editor): renamed to populate_editor. Use new GogEditor API.
+	Removed everything related to tick and position settings.
+	(gog_axis_class_init): Change position type of Label childs to
+	GOG_POSITION_SPECIAL. Add AxisLine as possible child. Removed tick and
+	position properties.
+	(gog_axis_init): removed tick and position settings.
+	(gog_axis_dataset_get_elem): cross location is a member of
+	GogAxisBase.
+	(gog_axis_get_pos): removed.
+	(gog_axis_is_center_on_ticks): new.
+	(gog_axis_view_padding_request): padding is now calculated in
+	GogAxisBaseView.
+	(gog_axis_view_size_request): removed.
+	(gog_axis_view_size_allocate): new. handle axis titles.
+	(draw_axis_from_a_to_b): removed.
+	(gog_axis_view_render_children): removed.
+	(gog_axis_view_render): rendering is now in GogAxisBaseView.
+	* goffice/graph/gog-chart.c (gog_chart_map_new),
+	(gog_chart_map_2D), (gog_chart_map_free): new.
+	(gog_chart_class_init): Axis position type is GOG_POSITION_PADDING
+	now.
+	(gog_chart_axis_set): renamed to gog_chart_get_axis_set.
+	(gog_chart_get_axis): renamed to gog_chart_get_axes.
+	(gog_chart_view_get_plot_area): no need to store plot_area. It's in
+	GogView::residual.
+	(child_request): removed.
+	(gog_chart_view_size_allocate): Do not handle axis padding request
+	here.
+	* goffice/graph/gog-grid-line.c (gog_grid_line_view_render): better
+	placement of radar plots.
+	* goffice/graph/gog-guru.c (cb_attr_tree_selection_change):
+	no need to handle editor type since gog_object_get_editor allways
+	returns a notebook now.
+	* goffice/graph/gog-label.c (gog_label_populate_editor): Use new
+	GogEditor API.	
+	* goffice/graph/gog-legend.c (gog_legend_populate_editor): ditto.
+	* goffice/graph/gog-series.c (gog_series_element_populate_editor):
+	ditto.
+	(gog_series_populate_editor): ditto.
+	* goffice/graph/gog-style.c (font_init): ditto.
+	(gog_style_populate_editor): ditto.
+	(style_editor): ditto.
+	(gog_style_editor): renamed to gog_style_get_editor.
+	(gog_styled_object_editor): removed.
+	(gog_style_handle_notebook): removed.
+	* goffice/graph/gog-object.c (gog_editor_new), (gog_editor_add_page),
+	(gog_editor_set_store_page), (gog_editor_get_notebook),
+	(gog_editor_free): new.
+	GogObject::id is an int now. This id is unique for a given object type
+	and on the same level in the object tree.
+	(gog_object_set_property): persist id now.
+	(gog_object_get_property): ditto.
+	(gog_object_class_init): ditto.
+	(gog_object_is_same_type): new.
+	(gog_object_generate_name): store auto_name and don't return anything.
+	(gog_object_get_id): new.
+	(gog_object_generate_id): new.
+	(gog_object_set_id): new.
+	(gog_object_get_name): return GogObject::auto_name.
+	(gog_object_position_cmp): GOG_POSITION_PADDING and
+	GOG_POSITION_SPECIAL are equivalent.
+	(gog_object_get_editor): use new GogEditor API.
+	(gog_object_set_parent): id is an int now.
+	* goffice/graph/gog-plot.c (cb_axis_changed): new.
+	(gog_plot_populate_editor): new.
+	(gog_plot_set_property): store axis reference now.
+	(gog_plot_get_property): ditto.
+	(gog_plot_class_init): ditto.
+	(gog_plot_set_axis_by_id): new.
+	(gog_plot_get_axis_id): new.
+	* goffice/graph/gog-styled-object.c (styled_object_populate_editor):
+	use new GogEditor API.
+	* goffice/graph/gog-theme.c (gog_themes_init): handle GogAxisLine
+	objects.
+	* goffice/graph/gog-view.c: GogView::padding_request : new.
+	(gog_view_padding_request_real): new.
+	(gog_view_padding_request): new.
+	* plugins/plot_barcol/gog-1_5d.c (gog_series1_5d_populate_editor):
+	use GogEditor API.
+	* plugins/plot_barcol/gog-barcol.c (gog_barcol_plot_populate_editor):
+	ditto.
+	* plugins/plot_boxes/gog-boxplot.c (gog_box_plot_populate_editor):
+	ditto.
+	(gog_box_plot_view_render): draw sharp rectangles.
+	* plugins/plot_pie/gog-pie-prefs.glade: layout fixes.
+	* plugins/plot_pie/gog-pie-series.glade: ditto.
+	* plugins/plot_pie/gog-pie.c (gog_pie_series_element_populate_editor):
+	use GogEditor API.
+	(gog_pie_plot_populate_editor): ditto.
+	(gog_ring_plot_populate_editor): ditto.
+	* plugins/plot_radar/gog-radar.c (gog_radar_plot_axis_get_bounds):
+	maxima is num_elements - 1.
+	(gog_radar_view_render): better radar plot placement.
+	* plugins/plot_surface/gog-surface.c
+	(gog_contour_plot_populate_editor): use GogEditor API.
+	* plugins/plot_xy/gog-xy.c (gog_bubble_plot_populate_editor): ditto.
+	(gog_xy_series_populate_editor): ditto.
+	
+		
+2005-03-13  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Link -Wl,-O1 if the linker supports it; see
+	http://people.redhat.com/drepper/dsohowto.pdf for background.
+	* configure.in: Link -Wl,-z,defs if the linker supports it
+	* plugins/plot_barcol/Makefile.am, plugins/plot_boxes/Makefile.am,
+	plugins/plot_pie/Makefile.am, plugins/plot_radar/Makefile.am,
+	plugins/plot_surface/Makefile.am, plugins/plot_xy/Makefile.am: except
+	for the plugins.
+
+2005-03-13  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/gtk/Makefile.am: add go-graph-widget.*.
+	* goffice/gtk/go-font-sel.c: (canvas_size_changed): display sample
+	text centered in the canvas.
+	* goffice/gtk/go-graph-widget.c: new GOGraphWidget class.
+	* goffice/gtk/go-graph-widget.h: ditto.
+	* test/Makefile.am: add pie-demo sample program.
+	* test/pie-demo.c: simple sample program.
+
+2005-03-12  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/format.c (go_render_number): Add epsilon early and
+	permanently.  Fix significant digit check.
+
+2005-03-11  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/format.c (go_render_number): Fix two
+	trailing-zeros bugs.
+
+	* goffice/utils/Makefile.am (.list.c): Add include of
+	goffice/goffice-config.h when building this.
+
+	* goffice/utils/go-libxml-extras.c (xml_node_set_gocolor): Don't
+	go via GdkColor which we may not have.
+
+	* goffice/utils/regutf8.c (go_regexp_quote): Renamed from
+	gnumeric_regexp_quote.
+
+2005-03-11  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Propagate ACLOCAL_FLAGS, so that it's available
+	  in the Makefile for the aclocal.m4 rule.
+	(goffice_reqs): Require pango 1.8.1; it is not good if we
+	  _slightly_ differ from gnumeric.
+
+2005-03-09  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/datetime.h (WEEKNUM_METHOD_SUNDAY): Define using
+	enum.
+
+	* goffice/utils/datetime.c (datetime_weeknum,
+	datetime_g_days_between, datetime_g_months_between,
+	datetime_g_years_between): Use g_return_val_if_fail, not g_assert.
+
+	* goffice/utils/format.c: Fix long double compilation.
+
+2005-03-08  Jody Goldberg <jody at gnome.org>
+
+	The last of the code dependencies on gnumeric.  Now I just need to
+	move the icons.
+	* goffice/gtk/go-action-combo-color.c (go_action_combo_color_new) :
+	  use gtk_icon_theme_load_icon in place of gnm_app_get_pixbuf.
+	* goffice/gtk/goffice-gtk.c (update_preview_cb) : ditto.
+
+2005-03-08  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in (AC_OUTPUT, AC_CONFIG_FILES): Use AC_CONFIG_FILES and
+	  call AC_OUTPUT with no parameters; this was already available in
+	  autoconf 2.52.
+
+2005-03-07  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* goffice/Makefile.am: Fixed inter-library dependencies; fix towards
+	  -Wl,-z,defs buildability.
+	* goffice/graph/gog-grid-line.h, goffice/gtk/go-action-combo-stack.c,
+	  goffice/ms-compat/god-drawing-ms.c: Switch to traditional C comments,
+	  to be buildable by gcc -ansi.
+
+2005-03-07  Morten Welinder  <terra at gnome.org>
+
+	* configure.in: Pare down long double support checks to what is
+	needed.
+	* goffice/goffice-config.h: Don't install this, ...
+	* goffice/goffice-features.h: ... install this one instead.
+
+2005-03-07  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Don't default to --without-gtk if gtk libs are not
+	  found; remove checks for gconf, Corba and GNU make, as they are
+	  not used in goffice; improve quoting and make use of AC_SUBST/2.
+	* goffice/app/Makefile.am (UNUSED): List the unused files lingering
+	  in the CVS, ...
+	(EXTRA_DIST): ... and distribute them.
+	* goffice/gtk/Makefile.am (UNUSED, EXTRA_DIST): Likewise.
+	* goffice/cut-n-paste/pcre/Makefile.am: Refresh.
+
+2005-03-07  Morten Welinder  <terra at gnome.org>
+
+	* configure.in: Use largefile apis.
+
+	* goffice/utils/go-libxml-extras.c (go_xml_parse_file):
+	New replacement for xmlParseFile.  All users changed.
+
+	* goffice/utils/go-math.c (go_math_init): Verify properties of
+	go_nanl, go_pinfl, and go_ninfl.
+
+	* goffice/utils/format.c (number_format_init): Fix initialization
+	of beyond_precision and beyond_precisionl.
+
+2005-03-06  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/graph/gog-axis.c: (map_discrete_to_view),
+	(map_discrete_from_view), (map_linear_to_view),
+	(map_linear_from_view), (map_log_to_view), (map_log_from_view),
+	(gog_axis_map_from_view), (gog_axis_map_to_view),
+	(draw_axis_from_a_to_b), (gog_axis_view_render): changed map_to_canvas to
+	map_to_view and added gog_axis_map_from_canvas and support.
+	* goffice/graph/gog-axis.h: ditto.
+	* goffice/graph/gog-error-bar.c: (gog_error_bar_render): ditto.
+	* goffice/graph/gog-grid-line.c: (gog_grid_line_view_render): ditto.
+	* plugins/plot_barcol/gog-barcol.c: (barcol_draw_rect): ditto.
+	* plugins/plot_barcol/gog-line.c: (gog_line_view_render): ditto.
+	* plugins/plot_boxes/gog-boxplot.c: (gog_box_plot_view_render): ditto.
+	* plugins/plot_radar/gog-radar.c: (gog_radar_view_render): ditto.
+	* plugins/plot_surface/gog-surface.c: (gog_contour_view_render): ditto.
+	* plugins/plot_xy/gog-xy.c: (gog_xy_view_render): ditto.
+
+2005-03-06  Jon K Hellan  <hellan at acm.org>
+
+	* goffice/utils/go-file.c (go_get_mime_type): New.
+
+2005-03-06  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice/app/go-plugin.c (go_plugins_init): append goffice plugin
+	directory to plugin_dirs list.
+	(go_plugins_get_plugin_dir): new.
+
+2005-03-04  Jody Goldberg <jody at gnome.org>
+
+	* goffice/app/module-plugin-defs.h : remove the ugly go_get_current_plugin
+	  and the PLUGIN & PLUGIN_CLASS macras.
+
+2005-03-04  Morten Welinder  <terra at gnome.org>
+
+	* goffice/utils/go-math.c (go_finite): Make this a function and
+	add a fallback definition.
+
+	* goffice/graph/gog-renderer-pixbuf.c
+	(gog_renderer_pixbuf_finalize): No need to call
+	go_pango_fc_font_map_cache_clear.
+	(gog_renderer_pixbuf_get_pango_context): Use Gimp's leak
+	work-around instead.
+
+	* goffice/utils/go-font.c (go_fonts_list_families,
+	go_fonts_list_sizes): New function.  Rework all references to
+	go_fonts_family_names, go_fonts_font_size_names,
+	go_fonts_font_size_pts to use these.  (This gets rid of one more
+	direct -- and wrong -- reference to the ft2 pango backend.)
+	(go_pango_fc_font_map_cache_clear): Remove.
+
+	* goffice/utils/go-math.c (go_stern_brocot): Use double, not
+	float.
+
+	* goffice/utils/go-glib-extras.c (go_mem_chunk_new): Drop
+	references to gnm_float.
+
+2005-03-04  Stepan Kasal  <kasal at ucw.cz>
+
+	* goffice/cut-n-paste/foocanvas/foo-canvas.c: Refresh.
+
+2005-03-02  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* goffice/gtk/goffice-gtk.c: Use gsf_input_textline_utf8_gets()
+	to read .hhmap file which stores topic_string-context_id pairs.
+	Become more verbose when topic is not found.
+	go_gtk_notice_(nonmodal_)dialog/go_gtk_query_yes_no now
+	accept va_arg.
+
+2005-03-02  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Add check for Xrender.
+	* goffice-plugins.mk (INCLUDES): Fix.
+	* goffice/cut-n-paste/foocanvas/*: Refresh.
+
+2005-02-28  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* goffice/utils/go-glib-extras.c: replaced gnumeric-config.h by
+	goffice-config.h
+	* goffice/gtk/go-action-combo-pixmaps.h: updated gui-utils to gtk
+	for includes paths.
+	* goffice/gtk/go-font-sel.c: ditto.
+	* goffice/gtk/go-format-sel.c: ditto.
+	* goffice/utils/go-glib-extras.c: ditto.
+	* goffice/utils/go-gradient.c: ditto.
+	* goffice/utils/go-line.c: ditto.
+	* goffice/utils/go-marker.c: ditto.
+	* goffice/utils/go-pattern.c: ditto.
+	* plugins/plot_barcol/gog-barcol-prefs.c: ditto.
+	* plugins/plot_boxes/gog-boxplot.c: ditto.
+	* plugins/plot_pie/gog-pie-prefs.c: ditto.
+	* plugins/plot_surface/gog-contour-prefs.c: ditto.
+	* plugins/plot_xy/gog-bubble-prefs.c: ditto.
+
+2005-02-28  Christopher James Lahey  <clahey at clahey.net>
+
+	* configure.in, goffice-plugins.mk: Changed gnumeric to goffice
+	here.
+
+2005-02-27  Christopher James Lahey  <clahey at clahey.net>
+
+	* Makefile.am (pkgconfigdir), configure.in (AC_OUTPUT): Create and
+	install libgoffice-1.pc.
+
+2005-02-27  Christopher James Lahey  <clahey at clahey.net>
+
+	* libgoffice-1.pc.in: New file.
+
+2005-02-27  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : Quick and dirty subset of gnumeric
+
+2005-02-26  Jody Goldberg <jody at gnome.org>
+
+	* graph/Makefile.am : move the plugins into the root dir
+	  so that the plugins can link against libgoffice
+
+2005-02-22  Morten Welinder  <terra at gnome.org>
+
+	* gui-utils/go-gui-utils.c (filter_images): If we have no
+	mime-type, fall back to checking the extension against what
+	gdk-pixbuf supports.  Adapted from bug #164589.
+
+2005-02-17  Stepan Kasal  <kasal at ucw.cz>
+
+	* Makefile.am (INCLUDES): Remove -I$(top_srcdir)/src/cut-n-paste-code/goffice.
+	Fix the remaining includes.
+	* goffice.c (go_sys_icon_dir): Fix typo.
+
+2005-02-17  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* gui-utils/go-gui-utils.c: include errno.h
+	(go_help_display): link is part of paths.
+			   
+2005-02-16  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* graph/gog-renderer-pixbuf.c: (gog_renderer_pixbuf_draw_path): rewrite to
+	use large paths at once and have better dashes support
+	* graph/plugins/plot_xy/gog-xy.c: (gog_xy_view_render): render path at once
+	and use ART_PATH_STROKE_CAP_ROUND for better rendering of large lines.
+	* utils/go-line.c: (go_line_build_vpath): new function, builds a vpath from
+	a set of points.
+	* utils/go-line.h: ditto.
+
+2005-02-16  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-file.c (go_url_check_extension) : pull down from gnumeric
+
+	* gui-utils/go-gui-utils.c (go_gtk_button_new_with_stock) : renamed
+	  from go_gtk_button_new_with_stock_image.
+	(go_libglade_new) : use go_sys_data_dir.
+	(go_gtk_widget_disable_focus) : renamed from go_widget_disable_focus.
+	(go_pango_measure_string) : renamed from go_measure_string.
+	(go_gtk_window_set_transient) : renamed from go_window_set_transient.
+	(go_gtk_nonmodal_dialog) : renamed from gnumeric_non_modal_dialog.
+	(go_gtk_file_sel_dialog) : renamed from gnumeric_dialog_file_selection.
+	(go_gtk_select_image) : renamed from gui_image_file_select.
+	(gui_get_image_save_info) : pulled in from gnumeric.
+	(go_atk_setup_label) : renamed from gnm_setup_label_atk.
+	(go_help_display) : pulled down from gnumeric and made generic.
+	(go_gtk_help_button_init) : ditto.
+	(go_gtk_url_is_writeable) : ditto.
+	(go_gtk_dialog_run) : pulled from gnumeric
+	(go_gtk_notice_dialog) : ditto.
+	(go_gtk_notice_nonmodal_dialog) : ditto.
+	(go_gtk_query_yes_no) : ditto.
+
+	* gui-utils/Makefile.am : Add libhtml_stub
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_init) : init the
+	  dpis.
+	(gog_renderer_pixbuf_get_pango_context) : use the stored calculated
+	  dpi rather than gconf
+	(gog_renderer_pixbuf_update) : store the dpi
+
+	* goffice.c (libgoffice_init) : init the paths.  We may want to expand
+	  this at some point to allow cmd-line or env-var override.
+	(go_sys_data_dir) : new.
+	(go_sys_icon_dir) : new.
+
+2005-02-15  Stepan Kasal  <kasal at ucw.cz>
+
+	* gui-utils/go-marshalers.list: Remove, merge with ...
+	* utils/go-marshalers.list: ... this one, adjust all callers.
+	* gui-utils/Makefile.am: Nuke the rules for go-marshalers.
+	* utils/Makefile.am: Typo.
+	* goffice.mk (INCLUDES): Add $(builddir)/../cut-n-paste-code,
+	  for the generated header goffice/utils/go-marshalers.h.
+
+2005-02-11  Morten Welinder  <terra at gnome.org>
+
+	* gui-utils/go-combo-text.c (cb_list_changed): Plug leak.
+
+	* utils/go-font.c (go_fonts_init): Copy family names instead of
+	relying on pango leak.  Destroy fontmap only after we get the
+	names out.
+
+	* gui-utils/go-format-sel.c (generate_preview): Avoid crash in
+	g_warning.
+
+2005-02-09  Stepan Kasal  <kasal at ucw.cz>
+
+	* app/error-info.h: Change the guard to GO_ERROR_INFO_H.
+
+2005-02-08  Jon K Hellan  <hellan at acm.org>
+
+	* utils/format.h: Include numbers.h.
+	(render_number): Make declaration match	definition. 
+
+2005-02-08  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-font.c (go_fonts_init): Plug leak.
+
+2005-02-08  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.5.0
+
+2005-02-05  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-gnome-print.c (get_font): Return a
+	PangoFontDescription, not a GnomeFont.  All callers changed.
+
+2005-02-04  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_finalize):
+	Remove old #ifdef HAVE_foo stuff.
+	* graph/gog-renderer-gnome-print.c: Ditto.
+
+2005-02-03  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* graph/gog-axis.c: (map_linear_auto_bound): change < to >, fix #164593.
+
+2005-01-25  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_boxes/gog-boxplot.c (gog_box_plot_pref) : fix
+	  signature.
+
+2005-01-24  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* graph/goffice-graph.h: add GOG_AXIS_SET_X.
+	* graph/gog-chart.c: (role_grid_can_add),
+	(gog_chart_axis_set_assign), (gog_chart_view_size_allocate): add grid
+	when we have only an X axis.
+	* graph/plugins/Makefile.am: add box-plots plugin
+	* graph/plugins/plot_boxes/Makefile.am: new plugin.
+	* graph/plugins/plot_boxes/gog-boxplot-prefs.glade:
+	* graph/plugins/plot_boxes/gog-boxplot.c: ditto.
+	* graph/plugins/plot_boxes/gog-boxplot.h: ditto.
+	* graph/plugins/plot_boxes/plot-types.xml.in: ditto.
+	* graph/plugins/plot_boxes/plugin.xml.in: ditto.
+	* pixmaps/Makefile.am: add box-plots pixmaps.
+	* pixmaps/boxplot.xpm: ditto.
+	* pixmaps/chart_boxplot_1_1.png: ditto.
+	* pixmaps/chart_boxplot_1_1.svg: ditto.
+
+2005-01-22  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* graph/gog-renderer-gnome-print.c:
+	(gog_renderer_gnome_print_draw_bezier_path),
+	(gog_renderer_gnome_print_class_init): add Bezier paths support.
+	* graph/gog-renderer-impl.h: ditto.
+	* graph/gog-renderer-pixbuf.c:
+	(gog_renderer_pixbuf_draw_bezier_path),
+	(gog_renderer_pixbuf_class_init): ditto.
+	* graph/gog-renderer-svg.c: (gog_renderer_svg_draw_bezier_path),
+	(gog_renderer_svg_class_init): ditto.
+	* graph/gog-renderer.c: (gog_renderer_draw_bezier_path): ditto.
+	* graph/gog-renderer.h: ditto.
+	* graph/plugins/plot_xy/gog-xy.c: (gog_xy_set_property),
+	(gog_xy_get_property), (gog_xy_plot_class_init),
+	(gog_xy_view_render): add spline interpolation support.
+	* graph/plugins/plot_xy/gog-xy.h: ditto.
+	* graph/plugins/plot_xy/plot-types.xml.in: ditto.
+	* pixmaps/Makefile.am: install chart_scatter_3_3.png.
+	* utils/go-line.c: (go_line_build_bpath): new function, builds a Bezier path
+	from an array of points.
+	* utils/go-line.h: add go_line_build_bpath.
+
+2005-01-17  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.4.2
+
+2005-01-14  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=163939
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_update) : zero
+	  sized views are not relevent, and does not require any redrawing.
+
+2005-01-11  Morten Welinder  <terra at gnome.org>
+
+	* gui-utils/go-combo-text.c (go_combo_text_init): Bind to the
+	treeview's cursor_changed signal, not the selection's changed
+	signal.  [#163412].
+
+2005-01-06  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-math.c (go_fake_floor, go_fake_ceil): Fix negative
+	case.
+
+2005-01-05  Jean Brefort <jean.brefort at normalesup.org>
+
+	* pixmaps/Makefile.am: add chart_contour_1_1.png.
+	* pixmaps/chart_contour_1_1.png: new icon by Emmanuel Pacaud.
+	* pixmaps/chart_contour_1_1.svg: ditto.
+	* pixmaps/chart_contour_1_2.png: ditto.
+	* pixmaps/chart_contour_1_2.svg: ditto.
+	* pixmaps/chart_scatter_3_3.png: ditto.
+	* pixmaps/chart_scatter_3_3.png: ditto.
+	* graph/plugins/plot_surface/plot_types.xml.in: use chart_contour_1_1.png.
+
+
+2005-01-05  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-series.c (gog_series_get_element): Fix NULL/FALSE
+	confusion.
+
+2004-12-17  Jody Goldberg <jody at gnome.org>
+
+	From Ivan Wong :
+	http://bugzilla.gnome.org/show_bug.cgi?id=159860
+	* utils/go-file.c (go_url_show) : Use ShellExecute on win32
+
+2004-12-17  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/plot-xy/gog-xy.c (gog_xy_series_init_style): don't disable
+	theming.
+
+2004-12-17  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-series.c (gog_series_dataset_dim_changed): resize for every
+	label change.
+	* graph/gog-axis.c (gog_axis_update): no need to force resize for 
+	discrete axis, it's handled by gog_series_dataset_dim_changed.
+	
+2004-12-15  Morten Welinder  <terra at gnome.org>
+
+	* gui-utils/go-action-combo-stack.c (get_key_at_path): Don't crash
+	if we don't get an iter.
+	(cb_motion_notify_event): Handle empty tree case.
+
+2004-12-09  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.4.1
+
+2004-12-09  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-file.c (go_url_show) : patch the problems morten pointed
+	  out and finish the '%1' subsitution.
+
+2004-12-08  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-file.c (go_url_show) : new with a win32 and non-gnome wrapper
+
+2004-12-01  Jody Goldberg <jody at gnome.org>
+
+	* goffice.mk (INCLUDES) : remove GNUMERIC_ICON_DIR
+
+2004-11-28  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.4.0
+
+2004-11-19  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-style.c (gog_style_gradient_load): call
+	  gog_style_set_fill_brightness in order to correctly initialize start
+	  and end colors.
+
+2004-11-18  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (create_invalid_axis_ticks): add a flag to note
+	create "##" labels.
+	* graph/gog-guru.c (cb_attr_tree_selection_change): scroll to selected
+	row.
+
+2004-11-14  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-renderer-pixbuf.c (line_size): width <= 0. is hairline.
+	* graph/gog-renderer.c (gog_render_line_size): ditto.
+	* graph/gog-style.c (cb_outline_size_changed): round to 2 significant
+	digits since sometimes adj->value returns 1E-17 instead of zero.
+	(cb_line_size_changed): ditto.
+	(gog_style_apply_theme): handle dash_type property.
+	(gog_style_gradient_sax_save): fix brightness test to be consistent
+	with dom_save.
+	(gog_style_gradient_load): start-color and end-coilor were inverted.
+	(gog_style_is_outline_visible): line is visible for all width values.
+	(gog_style_is_line_visible): ditto.
+	(gog_style_force_auto): handle auto_dash.
+ 	* graph/plugins/plot_xyt/gog-xy.c (gog_xy_series_init_style): handle
+	dash_type property.
+
+2004-11-14  Andreas J. Guelzow <aguelzow at taliesin.ca>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=152514
+	* graph/gog-guru.c (graph_guru_init_ok_button): new
+	(graph_guru_init): call graph_guru_init_ok_button
+	(gog_guru): initialize state->editing
+
+2004-11-07  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.93
+
+2004-10-31  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.92
+
+2004-11-01  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=157048
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render): fix
+	leak.
+
+2004-10-30  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=152765
+	* graph/gog-guru.c (graph_guru_init_format_page): delete_button is
+	really a button now, so connect "clicked" signal instead of
+	"activate".
+	* graph/gog-guru.glade: replace "Delete" menuitem by a button as a
+	workaround of gtk+ bug #155336.
+
+2004-10-29  Morten Welinder  <terra at gnome.org>
+
+	* cut-n-paste/pcre/pcre.c (ord2utf8): Fix ABR.  (Fixed in PCRE
+	5.0, but I don't want to upgrade right now.)
+
+2004-10-27  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-line.c (go_line_clip_vpath): Make sure "reject" is
+	initialized.
+	(GOLineDashDesc): Do not rely on C99 features.
+
+2004-10-27  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-style.c (gog_style_gradient_load): fix brightness case.
+
+2004-10-26  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render): fix
+	marker for missing data.
+
+2004-10-26  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=152585
+	* grah/gog-axis.c (gog_axis_update): allways emit changed signal for
+	discrete axis, since labels may have changed.
+	* plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_update): call
+	gog_axis_bound_changed if GogSeries1_5D->index_changed == TRUE.
+	(gog_series1_5d_dim_changed): new. Used to set index_changed to TRUE
+	when vector dim_i == 0 changed.
+				      
+2004-10-25  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (draw_axis_from_a_to_b): use
+	gog_style_is_line_visible instead of checking line width.
+	(gog_axis_view_render): ditto.
+	* graph/gog-label.c (gog_label_view_render): draw sharp rectangle
+	around label.
+	* graph/gog-legend.c (cb_render_elements): draw sharp sample line and
+	sharp rectangle around elements.
+	(gog_legend_class_init): set clip to TRUE in order to avoid sample
+	lines to extend beyond legend area.
+	* graph/gog-outlined-object.c (gog_outlined_view_size_request): use
+	gog_style_is_line_visible instead of checking for positive line width.
+	(gog_outlined_view_size_allocate): ditto.
+	(gog_outlined_view_render): draw sharp rectangle.
+	* graph/gog-renderer-gnome-print.c (set_dash): new.
+	(gog_renderer_gnome_print_draw_path): honor dash setting. Clip dashed path
+	in order to avoid huge memory allocation and crash for very long
+	lines.
+	(gog_renderer_gnome_print_draw_polygon): ditto.
+	* graph/gog-renderer-impl.h: add GogRenderer::line_dash and
+	GogRenderer::outline_dash members.
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_clip_push): fix
+	clip area rounding.
+	(line_size): new. Same as gog_renderer_line_size, but don't round
+	width < 1.0 .
+	(gog_renderer_pixbuf_line_size): use line_size.
+	(gog_renderer_pixbuf_sharp_path): fix rounding.
+	(gog_renderer_pixbuf_draw_path): honor dash setting.
+	(gog_renderer_pixbuf_draw_polygon): ditto.
+	* graph/gog-renderer-svg.c (gog_renderer_svg_clip_push): use C locale
+	for double to string conversion.
+	(stroke_dasharray): new.
+	(gog_renderer_svg_draw_path): honor dash setting.
+	(gog_renderer_svg_draw_polygon): ditto.
+	* graph/gog-renderer.c: define a hair line width and set it to 0.24pt.
+	(gog_renderer_finalize): free line_dash and outline_dash.
+	(update_dash): new. 
+	(gog_renderer_push_style): call update_dash.
+	(gog_renderer_pop_style): ditto.
+	(gog_renderer_clip_push): keep a pointer to the current clip.
+	(gog_renderer_clip_pop): ditto.
+	(draw_rectangle): new.
+	(gog_renderer_draw_sharp_rectangle): new.
+	(gog_renderer_line_size): return GOG_RENDERER_HAIR_LINE_WIDTH instead
+	of 1.0 for style->line.width == 0.0 .
+	* graph/gog-style-prefs.glade: add dash type combos.
+	* graph/gog-style.c (cb_outline_dash_type_changed): new.
+	(cb_line_dash_type_changed): new.
+	(outline_init): add dash selector.
+	(line_init): ditto.
+	(gog_style_line_load): load dash settings.
+	(gog_style_line_dom_save): save dash settings.
+	(gog_style_line_sax_save): ditto.
+	(gog_style_is_different_size): check dash_type.
+	(gog_style_is_outline_visible): new.
+	(gog_style_is_line_visible): check dash_type.
+	* graph/gog-theme.c (gog_themes_init): use dash_type.
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render): don't
+	draw sharp path.
+	* utils/go-line.[ch]: new.	
+
+2004-10-13  Jean Brefort <jean.brefort at normalesup.org>
+
+	* graph/gog-axis.c: add center_on_ticks boolean to force centering labels
+	on ticks for discree mapped axis.
+	* graph/gog-plot.h: ditto.
+	* graph/gog-plot.c: ditto.
+
+2004-10-19  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-file.c (go_dirname_from_uri): New function.
+
+2004-10-13  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (gog_axis_dim_changed): call gog_axis_update in
+	order to refresh labels and ticks.
+
+2004-10-13  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_get_entry): Remove band-aid no longer
+	needed.  (Although files created in the past few days will have
+	the vector type in the file.)
+
+2004-10-13  Jean Brefort <jean.brefort at normalesup.org>
+
+	* graph/gog-axis.c: (make_dim_editor): replace TRUE by GO_DATA_SCALAR in the
+	call to gog_data_allocator_editor.
+	* graph/gog-label.c: (gog_label_editor): ditto.
+	* graph/gog-series.c: (gog_series_editor): ditto.
+
+2004-10-13  Jean Brefort <jean.brefort at normalesup.org>
+
+	* graph/gog-plot-impl.h: added a foreach_elem member in GogPlotClass
+	* graph/gog-plot.c: (gog_plot_foreach_elem): calls Klass->foreach_elem
+	when not NULL to override default legends management.
+	* graph/gog-renderer-gnome-print.c: (draw_path): add ART_MOVETO_OPEN case,
+	(gog_renderer_gnome_print_measure_text): fix a bad sign.
+	* graph/gog-renderer-svg.c: (draw_path): add ART_MOVETO_OPEN case.
+
+2004-10-12  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-axis.h (GogAxisTickTypes): Fix namespace.
+
+	* graph/gog-axis.c (GogAxisElemType): Name this type.
+	(gog_axis_get_entry): Use GogAxisElemType, not unsigned int, for
+	the index argument.
+
+2004-10-12  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-axis.c (map_linear_auto_bound): Fix gnm_float/double
+	confusion.
+	(gog_axis_get_entry): Temporary fix for user-defined axis limits.
+
+2004-10-11  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-series.c (gog_series_finalize): Plug leak.
+
+2004-10-11  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/Makefile.am : drop the dock code we're not going to be
+	  using it before 1.4
+
+2004-10-02  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=154664
+	* graph/gog-guru.glade: set width and height request for sample area
+	and object list.
+
+2004-10-09  Jean Brefort <jean.brefort at normalesup.org>
+
+	* graph/go-data.c: (go_data_matrix_emit_changed),
+	(go_data_matrix_class_init), (go_data_matrix_get_size),
+	(go_data_matrix_get_values), (go_data_matrix_get_value),
+	(go_data_matrix_get_str), (go_data_matrix_get_minmax): new GOMatix class.
+	* graph/go-data.h: ditto.
+	* graph/go-data-impl.h: ditto.
+	* graph/goffice-graph.h: ditto. Added GODataType enumerated type.
+	* graph/gog-data-allocator.c: (gog_data_allocator_editor): Replaced
+	"gboolean prefers_scalar" by "GODataType data_type". 
+	* graph/gog-data-allocator.h: ditto.
+	* graph/gog-error-bar.c: (cb_type_changed), (gog_error_bar_prefs): 
+	* graph/gog-series.c: (gog_series_editor): ditto.
+	* graph/plugins/plot_surface/Makefile.am: new contour plots.
+	* graph/plugins/plot_surface/gog-contour-prefs.c: ditto.
+	* graph/plugins/plot_surface/gog-contour-prefs.glade: ditto.
+	* graph/plugins/plot_surface/gog-surface.c: ditto.
+	* graph/plugins/plot_surface/gog-surface.h: ditto.
+	* graph/plugins/plot_surface/plot-types.xml.in: ditto.
+	* graph/plugins/plot_surface/plugin.xml.in: ditto.
+
+2004-10-08  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-object.c (gog_object_dup) : copy the position.
+
+2004-10-06  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-control-foocanvas.c (gog_control_foocanvas_update) : Fix
+	  redraw.  There were two bugs.
+	  1) foocanvas_group_update was wiping tbe bounds (things always look
+	     like they move)
+	  2) We were not requesting a redraw for the old position before
+	     moving.
+
+2004-10-05  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.91
+
+2004-10-03  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-control-foocanvas.c :  Make the class definition public to
+	  make it easier to graft on an additional interface in the app.  We
+	  may not need this later if SheetObject moves down into goffice
+
+2004-10-02  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=152672
+	* graph/gog-theme.c (gog_themes_init): set pattern background to
+	white, even when automatic pattern style is NONE.
+	* graph/gog-label.c (gog_label_editor): fix layout.
+	(gog_label_view_render): add padding
+	when outline > 0. or pattern != NONE.
+	* graph/gog-outlined-object.c (gog_outlined_view_size_request): ditto.
+	(gog_outlined_view_size_allocate): ditto.
+	* graph/gog-style.c (gog_style_is_different_size): changing pattern
+	type can change object size.
+
+2004-09-29  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-guru-type-selector.glade: new.
+	* graph/Makefile.am: add gog-guru-type-selector.glade.
+	* graph/gog-axis-prefs.glade: fix layout.
+	* graph/gog-axis.c (make_dim_editor): ditto.
+	(gog_axis_editor): ditto.
+	* graph/gog-guru.c (cb_attr_tree_selection_change): allways use a
+	notebook, but hide tabs when there's only one page.
+	(graph_guru_type_selector_new): load layout from glade file.
+	* graph/gog-guru-glade: remove scrollbar around property notebook.
+	Make object menu unshrinkable. Fix layout.
+	* graph/gog-series.c (gog_series_element_editor): fix layout.
+	* graph/gog-style.c (font_int): ditto.
+	* graph/plugins/plot_barcol/gog-barcol-prefs.glade: ditto.
+	* graph/plugins/plot_pie/gog-pie-series.glade: ditto.
+	* graph/plugins/plot_pie/gog-ring-prefs.glade: ditto.
+	* graph/plugins/plot_xye/gog-xy-prefs.glade: ditto.
+		
+2004-09-29  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=153402
+	* graph/plugins/gog-radar-prefs.c: removed.
+	* graph/plugins/gog-radar-prefs.glade: removed.
+	* graph/plugins/gog-radar.c: removed reference to plot editor.
+	* graph/plugins/Makefile.am: removed reference to
+	gog-radar-prefs.[c,glade].
+
+2004-09-29  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_finalize):
+	Conditionalise the use of pango_context_get_font_map.
+
+2004-09-28  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-font.c (go_pango_fc_font_map_cache_clear): New
+	function, wrapping pango_fc_font_map_cache_clear (which isn't
+	public).
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_finalize): Call
+	go_pango_fc_font_map_cache_clear.
+
+	* utils/go-color.c (go_color_to_pango): Add is_fore argument and
+	export.
+
+2004-09-28  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_view_info_at_point):
+	disable automatic point creation for ring plot, since it
+	doesn't work. For pie plot, don't create new point when it already
+	exists, but select it.
+
+2004-09-28  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=153401
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_view_render): fix special
+	inner arc handling test (has_hole :) ).
+
+2004-09-27  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-math.c (go_fake_ceil): New function.
+
+	* utils/go-file.c (go_url_encode): Make this half-way decent.
+	(go_url_decode): Make this O(n) too.
+
+	* libpresent/ppt-parsing-helper.h: Add header guard.
+
+2004-09-27  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-renderer-gnome-print.c
+	(gog_graph_print_to_gnome_print): Conditionalize call to
+	gnome_print_pango_create_layout.
+
+2004-09-26  Jody Goldberg <jody at gnome.org>
+
+	From : Yukihiro Nakai  <nakai at gnome.gr.jp>
+	http://bugzilla.gnome.org/show_bug.cgi?id=148550
+	* utils/go-file.c (go_url_decode) : new
+	(go_url_encode) : new.  I'm not sure these belong in go vs gsf
+	  but lets keep them here for now until they get fleshed out.
+
+2004-09-25  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-error-bar-prefs.glade: 12 px between label and control.
+	* graph/gog-style-prefs.glade: 12 px padding. Use GtkAlignment for
+	group layout.
+	* graph/gog-style.c: use new layout.
+	
+2004-09-25  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-error-bar-prefs.glade: layout rework.
+	* graph/gog-error-bar.c (cb_type_changed): use new layout. Hide styles
+	when category is none.
+	(gog_error_bar_prefs): ditto.
+
+2004-09-23  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (gog_axis_view_render): draw_minor and draw_major
+	only if line_width > 0.
+	* grapg/gog-theme.c (gog_themes_init): initialize GogGrid outline.
+
+2004-09-23  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (gog_axis_view_render): Calculate major_out even if
+	line_width <= 0, because it's needed for label positionning.
+
+2004-09-23  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c: make GogGridLine as child of GogAxis.
+	(role_grid_line_can_add): new.
+	(role_grid_line_major_can_add): new.
+	(role_grid_line_minor_can_add): new.
+	(role_grid_line_major_post_add): new.
+	(role_grid_line_minor_post_add): new.
+	(gog_axis_view_class_init): add grid line roles.
+	(gog_axis_view_render_children): new. Don't render grid lines here.
+	(gog_axis_view_render): call gog_axis_view_render_children. Free
+	axis_list.
+	* graph/gog-chart.c
+	(gog_chart_view_class_init): set call_parent_render to FALSE.
+	(grid_line_render): new. Render minor grid, then major.
+	(gog_chart_view_render): new. Kludge for grid lines rendering before
+	axis.
+	* graph/gog-grid-line.c: add new is_minor property and remove type
+	property.
+	(gog_grid_line_is_minor): new.
+	(gog_grid_line_view_render): implement radar grid.
+	* graph/gog-grid.c: Remove grid line roles.
+	(role_grid_line_can_add): removed.
+	(role_grid_x_major_can_add): removed.
+	(role_grid_x_minor_can_add): removed.
+	(role_grid_y_major_can_add): removed.
+	(role_grid_y_minor_can_add): removed.
+	(role_grid_x_major_post_add): removed.
+	(role_grid_x_minor_post_add): removed.
+	(role_grid_y_major_post_add): removed.
+	(role_grid_y_minor_post_add): removed.
+	(gog_grid_view_render): sharpen polygon.
+	(gog_grid_init_style): add OUTLINE property.
+	* graph/gog-outlined-object.c: add a call_parent_render class
+	property. Deafult to TRUE.
+	* graph/gog-theme.c (gog_themes_init): add MajorGrid and MinorGrid
+	themes. Remove X-MajorGrid, Y-MajorGrid, X-MinorGrid, Y-MinorGrid
+	themes.
+				     
+2004-09-23  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_text): Get the right kind of size.
+	(gog_renderer_gnome_print_measure_text): Use layout method here
+	too.
+
+2004-09-22  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_text): Print using pango layouts.
+	Adapted from code by Yaacov Zamir <kzamir at walla.co.il>.
+
+2004-09-21  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=153289
+	* graph/gog-axis.c (gog_axis_editor): hide minor tick properties when
+	editing discrete axis properties.
+	* grah/gog-axis-prefs.glade: name minor tick frame.
+
+2004-09-20  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* pixmaps: make color order consistent and rerender png from svg with
+	inkscape instead of rsvg.
+
+2004-09-20  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* goffice.c: new GogGridLine type.
+	* graph/gog-axis.c (map_discrete_calc_ticks): allways calc major and
+	minor ticks.
+	(map_linear_calc_ticks): ditto.
+	(map_log_calc_ticks): ditto.
+	(gog_axis_get_ticks): return tick list and tick number now.
+	(gog_axis_view_render): since all ticks are in cache, only draw them
+	if they are visibles.
+	* graph/gog-grid-line.[ch]: new.
+	* graph/gog-grid.c (gog_grid_init_style): use only fill property.
+	(role_grid_line_can_add): new.
+	(role_grid_x_major_can_add): new.
+	(role_grid_x_minor_can_add): new.
+	(role_grid_y_major_can_add): new.
+	(role_grid_y_minor_can_add): new.
+	(role_grid_x_major_post_add): new.
+	(role_grid_x_minor_post_add): new.
+	(role_grid_y_major_post_add): new.
+	(role_grid_y_minor_post_add): new.
+	(gog_grid_class_init): register new grid line roles.
+	* graph/gog-theme.c: register theme for new grid line objects.
+	
+2004-09-20  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=153146
+	* graph/plugins/plot_radar/gog-radar.c (gog_radar_view_render): Check
+	if series is valid before trying to render it.
+
+2004-09-19  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=152615
+	* pixmaps: new consistent charting icon set (based on a Jimmac work).
+
+2004-09-16  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-error-bar.c (gog_error_bar_get_min_max): get values from
+	outside of loop.
+	(gog_error_bar_get_bounds): add assertions. Use
+	go_data_vector_get_value.
+
+2004-09-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=152499
+	* graph/gog-error-bar.c (gog_error_bar_get_minmax): check whether
+	associated GogSeries is valid.
+
+2004-09-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-error-bar.c (gog_error_bar_get_minmax): add assertions.
+
+2004-09-14  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (gog_axis_map_is_valid): add assertion.
+
+2004-09-09  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-series.c (gog_series_element_set_index) : new to handle
+	  theming properly.
+	(gog_series_element_set_property) : use it here.
+	(gog_series_element_init_style) : and here.
+	(role_series_element_allocate) : and here.
+
+2004-09-10  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_draw_text): remove
+	remaining unref.
+	
+2004-09-10  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=152201
+	* graph/gog-axis.c (map_discrete_auto_bound): Set automatic maximum
+	number of major and lables to 100.
+	(gog_axis_view_render): don't draw axis + ticks in one path.
+	* graph/gog-renderer-pixbuf.c: cache pango layout.
+	(gog_renderer_pixbuf_get_pango_layout): new.
+	(gog_renderer_pixbuf_get_pango_context): new.
+	(gog_renderer_pixbuf_push_style): new. unref pango_layout.
+	(gog_renderer_pixbuf_push_style): ditto.
+				
+2004-09-08  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.90
+
+2004-09-07  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=151530
+	tick label truncated by chart outline
+	http://bugzilla.gnome.org/show_bug.cgi?id=151527
+	pb when exporting to svg a chart without outline
+	http://bugzilla.gnome.org/show_bug.cgi?id=127203
+	X axis labels centre on chart, not on axis
+	
+	* graph/goffice-graph.h: new GogViewPadding type.
+	* graph/gog-axis.c (map_log_to_canvas): DBL_MIN is not -DBL_MAX.
+	(gog_axis_view_padding_request): new.
+	(gog_axis_view_size_request): just call gog_view_size_child_request.
+	(gog_axis_view_size_allocate): remove.
+	(gog_axis_view_render): stop libart path to third element in case of
+	  line_width <= 0. Fix label dropping. Use Chart->plot_area for axis
+	  drawing.
+	* graph/gog-chart.c (gog_chart_view_get_plot_area): new.
+	(child_request): new.
+	(gog_chart_view_size_allocate): axis now request space around
+	  residual. Store residual in Chart->plot_area.
+	* graph/gog-label.c (gog_label_view_render): draw rectangle here,
+	  since in gog_outlined_object, rectangle around label is clipped to
+	  view->allocation.
+	* graph/gog-renderer-pixbuf.c (draw_text): don't clip text, to be
+	  consistent with svg and gnome-print renderer.
+	
+2004-09-06  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-color-palette.c (go_color_palette_setup) : warning
+	  suppression
+
+2004-09-05  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=151628
+	* graph/gog-guru.c (cb_typesel_sample_plot_resize) : hard code the
+	  zoom when recalculating the size.  The sample graph is only zoomed
+	  when visible.
+
+2004-09-05  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (graph_guru_type_selector_new) : Add a light bulb
+	  to the 'show sample' button to make it stand out a bit more
+
+	* graph/gog-guru.c (graph_guru_type_selector_new) : Make the sample
+	  canvas the main resizeable element in the type selector.
+
+2004-09-01  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-gradient.c : conditionalize selector on WITH_GTK
+	* utils/go-pattern.c : ditto
+	* utils/go-marker.c : conditionalize selector and the use of GdkPixbuf
+
+	* utils/go-color.c : Remove unnecessary include of color-combo
+	  and conditionalize the gdk support routines in case we do not have
+	  gtk.
+
+2004-09-03  Morten Welinder  <terra at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-1.5d.c
+	(gog_series1_5d_populate_editor): Terminate g_object_get call by
+	NULL, not 0.
+
+2004-09-02  Morten Welinder  <terra at gnome.org>
+
+	* graph/plugins/plot_radar/gog-radar-prefs.glade: Someone
+	accidentally cut the guts of this.  Add vary-style button that the
+	code appears to want.
+
+2004-08-31  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=151529
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render): set series to to
+	right value for marker drawing.
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render): use
+	right index when walking through path for marker drawing.
+								  
+2004-08-30  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-plot-engine.c (gog_plot_new_by_name): Ick.  We need to
+	keep a GObject ref in addition to the GnmPlugin ref.
+
+2004-08-29  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.2
+
+2004-08-26  Morten Welinder  <terra at gnome.org>
+
+	* goffice.c (libgoffice_shutdown): Showdown plugin services.
+
+	* graph/gog-plot-engine.c (gog_plot_new_by_name): Handle inactive
+	plugins.  Mark plugins as used.
+	(gog_plugin_services_shutdown): New function.
+
+2004-08-25  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_view_render) : don't leak an axis map for
+	  discrete axes
+
+2004-08-24  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-file.c (go_file_split_uris): New function for
+	text/uri-list parsing.
+
+2004-08-23  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-plot-engine.c (create_plot_families): New function.
+	(gog_plot_family_by_name, gog_plot_families): Ensure we have
+	families.
+
+2004-08-20  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-error-bar.c (gog_error_bar_prefs): Arrange for gui to
+	be unref'd.
+
+2004-08-18  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (map_linear_calc_ticks): fix tick number
+	calculation.
+	(overlap): use already defined MAX / MIN.
+
+2004-08-17  Morten Welinder  <terra at gnome.org>
+
+	* goffice.c (libgoffice_init): Call gsf_init.
+
+2004-08-17  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render):
+	don't clip markers to plot area.
+
+2004-08-17  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (create_invalid_axis_ticks): new.
+	(map_[log,discrete,linear]_init): when axis is not valid, init data
+	for special invalid axis rendering.
+	(map_[log,discrete,linear]_calc_ticks): when axis is not valid, return
+	a special set of ticks/labels.
+	(gog_axis_map_is_valid): new.
+	(gog_axis_map_new): set the map->is_valid flag. Default to FALSE if
+	there's no init function.
+	* graph/plugins/plot_barcol/gog-barcol.c (gog_barcol_view_render): use
+	gog_axis_map_is_valid.
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render): idem.
+	* graph/plugins/plot_radar/gog-radar.c (gog_radar_view_render): idem.
+	Add support for mapping.
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render): don't clip
+	markers to plot area, but to chart area.
+							
+2004-08-17  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-stisyle.c (cb_image_file_select): is_save parameter to
+	gui_image_file_select no longer needed.
+
+2004-08-13  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (gog_axis_editor): don't show preferences for
+	circular axis.
+	(overlap): new.
+	(draw_axis_from_a_to_b): use gog_axis_map and draw labels.
+	(gog_axis_view_render): at least width of the '0' char between two
+	labels for GOG_AXIS_X.
+	* graph/gog-view.h: remove call_parent_render and add a clip flag.
+	* graph/gog-chart.c (gog_chart_view_render): removed.
+	(gog_chart_view_class_init): set clip to TRUE.
+	* graph/gog-outlined-object.c: allways call parent render.
+	* graph/gog-renderer-gnome-print.c: change start/stop_clipping to
+	clip_push/pop.
+	* graph/gog-renderer-svg.c: change start/stop_clipping to
+	clip_push/pop.
+	(gog_renderer_draw_text): add xml child in current node instead of
+	first doc child.
+	* graph/gog-renderer-pixbuf: change start/stop_clipping to
+	clip_push/pop.
+	(gog_renderer_pixbuf_clip_push): add multilevel clipping capability.
+	(gog_renderer_pixbuf_print_clip_pop): idem.
+	* graph/gog-renderer.c: change start/stop_clipping to clip_push/pop
+	and add a clip stack to handle mutilevel clipping.
+	* graph/gog-view.c (gog_view_class_init): set default clip flag to
+	FALSE.
+	(gog_view_render): if klass->clip is TRUE, call to clip_push/pop
+	functions.
+	* graph/plugins/plot_barcol/gog-barcol.c: set klass->clip to TRUE.
+	* graph/plugins/plot_barcol/gog-line.c: idem.
+	* graph/plugins/plot_xy/gog-xy.c: idem.
+	* graph/plugins/plot_radar/gog-radar.c: idem.
+
+2004-08-09  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (map_[log,linear,discrete]_init) : add arguments
+	for direct mapping to canvas coordinates.
+	(gog_axis_map_new) : idem. 
+	(map_[log,linear,discrete]_to_canvas : new.
+	(gog_axis_map_to_canvas) : new.
+	(map_discrete) : handle barcol / area,line correctly.
+	(map_log_auto_bounds): be smarter in case of min <= 0.
+	(gog_axis_render) : draw axis/ticks in one call. Drop labels when they
+	overlap.
+	* graph/gog-error-bar.c (gog_error_bar_get_bounds) : return relative
+	values of errors instead of absolute values.
+	(gog_error_bar_get_min_max) : adapt to new gog_error_bar_get_bounds.
+	(gog_error_bar_render) : use gog_axis_map functions.
+	* graph/gog-grid.c (gog_grid_render) : remove kludge.
+	* grapg/gog-renderer-gnome-print.c (gog_graph_print_to_gnome_print) :
+	add a workaround for a bug in libgnomeprint.
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_start_clipping) :
+	rendering fix.
+	(gog_renderer_pixbuf_line_size) : new.
+	(gog_renderer_pixbuf_sharp_path) : new. Tweak a path for sharp
+	rendering with libart.
+	(gog_renderer_pixbuf_draw_marker) : zoom support for markers. Fix
+	marker position.
+	* graph/gog-renderer.c (gog_renderer_draw_sharp_path) : new.
+	(gog_renderer_draw_sharp_polygon) : new.
+	(gog_renderer_line_size) : remove kludge.
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_axis_get_bounds)
+	: maxima = num_elements - 1.
+	* graph/plugins/plot_barcol/gog-barcol.c
+	(gog_barcol_update_stacked_and_percentage) : adapt
+	to new gog_error_bar_get_bounds.
+	(gog_barcol_axis_get_bounds) : new.
+	(barcol_draw_rest) : remove kludge.
+	(gog_barcol_view_render) : use gog_axis_map functions.
+	* graph/plugins/plot_barcol/gog-line.c
+	(gog_line_update_stacked_and_percentage) : adapt
+	to new gog_error_bar_get_bounds.
+	(gog_line_view_render) : use gog_axis_map functions.
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_plot_render) : use
+	gog_axis_map_to_canvas and new gog_error_bar_get_bounds.
+	* utils/go-marker.c (go_marker_get_pixbuf) : add a scale argument.
+	
+2004-07-29  Morten Welinder  <terra at gnome.org>
+
+	* gui-utils/go-action-combo-pixmaps.c
+	(go_action_combo_pixmaps_create_menu_item): Let's initialize item
+	before we use it.
+
+2004-07-28  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis-prefs.glade: HIGification.
+	* graph/gog-axis.c (get_adjusted_tick_array): new.
+	(map_[discrete,linear,log]_init): new. Init for map functions.
+	(map_[discrete,linear,log]): new. Map data to visible plot area.
+	(map_[discrete,linear,log]_auto_bound): new. Calculate auto bounds and
+	tick spacing.
+	(map_[discrete,linear,log]_calc_ticks): new. Calculate position of
+	major ticks,minor ticks and labels.
+	(gog_axis_map_new),
+	(gog_axis_map),
+	(gog_axis_map_free): new. For use in plot view rendering functions.
+	(gog_axis_set_ticks): new. Put tick and label positions in axis->ticks.
+	(gog_axis_auto_bound),
+	(gog_axis_calc_ticks): new.
+	(gog_axis_set_property): check if update or calc_ticks is needed.
+	(gog_axis_update): makes use of gog_axis_set_ticks and
+	gog_axis_auto_bound.
+	(gog_axis_editor): hide map combobox if axis is discrete.
+	(gog_axis_view_render): use axis->ticks for rendering.
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render): use new map
+	functions.					       
+	
+2004-07-22  Christopher James Lahey  <clahey at ximian.com>
+
+	* libpresent/Makefile.am (libgoffice_libpresent_la_SOURCES): Added
+	ppt-parsing-helper.c and ppt-parsing-helper.h.
+
+	* libpresent/god-drawing-ms-client-handler-ppt.c: Handle
+	TextBytesAtom and StyleTextPropAtom.
+
+	* libpresent/god-drawing-ms-client-handler-ppt.h: Added parameter
+	fonts.
+
+	* libpresent/load-ppt.c: Moved StyleTextPropAtom parsing to
+	ppt-parsing-helper.c.
+
+	* libpresent/ppt-parsing-helper.c,
+	libpresent/ppt-parsing-helper.h: Moved StyleTextPropAtom parsing
+	here.  Improved StyleTextPropAtom parsing.
+
+	* test/dump-ppt-records.c: Improved StyleTextPropAtom parsing.
+
+2004-07-20  Christopher James Lahey  <clahey at ximian.com>
+
+	* libpresent/load-ppt.c (handle_atom), test/dump-ppt-records.c
+	(handle_atom): Improved StyleTextPropAtom parsing.
+
+2004-07-20  Christopher James Lahey  <clahey at ximian.com>
+
+	* libpresent/load-ppt.c (handle_atom): Missing NULL.
+
+2004-07-20  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/god-drawing-renderer-gdk.c (draw_text),
+	drawing/god-paragraph-attributes.c,
+	drawing/god-paragraph-attributes.h, libpresent/load-ppt.c: Support
+	default paragraph attributes and support bullets and alignment.
+
+	* libpresent/present-view.c: Added space and backspace bindings
+	(these don't work since the widget doesn't get focus.)
+
+	* test/dump-ppt-records.c (handle_atom): Handle TxMasterStyleAtom
+	better.
+
+	* test/test-view-ppt.c: Added q and escape bindings.
+
+2004-07-19  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.1
+
+2004-07-19  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-action-combo-pixmaps.c : switch from inline pixbufs to
+	  stock ids.
+
+	* gui-utils/go-action-combo-color.c
+	(go_action_combo_color_set_color):  implement
+
+2004-07-13  Christopher James Lahey  <clahey at ximian.com>
+
+	* libpresent/load-ppt.c (handle_atom): Parse fonts.
+
+	* test/dump-ppt-records.c (handle_atom): Print a bunch of info
+	about default attributes.
+
+2004-07-12  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_view_info_at_point) :
+	  expand this to offer name and override creation.
+
+	* graph/gog-view.c (gog_view_info_at_point) :  expand this interface a
+	  bit. I'm still not happy with it.
+
+	* graph/gog-series.c :  keep a sorted list of overrides in place
+
+	* graph/gog-plot.c (gog_plot_foreach_elem) :  handle point overrides
+
+	* graph/gog-object.c (gog_object_emit_changed) :  handle updates for
+	  objects not yet connected to parents.
+
+2004-07-11  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/Makefile.am (libgoffice_drawing_la_SOURCES): Added
+	god-default-attributes.c and god-default-attributes.h.
+
+	* drawing/god-default-attributes.c,
+	drawing/god-default-attributes.h: Default pango and paragraph
+	attributes per indent level.
+
+	* drawing/god-drawing-renderer-gdk.c: Handle default attributes.
+	Rework character attributes.
+
+	* drawing/god-text-model.c, drawing/god-text-model.h: Added indent
+	and default attributes concepts.
+
+	* libpresent/load-ppt.c (handle_atom): Parse TxMasterStyleAtom.
+
+	* libpresent/present-presentation.c,
+	libpresent/present-presentation.h: Added a default default
+	attributes object per text type.
+
+	* libpresent/present-text.c: Added a property to store a pointer
+	to the main presentation object.
+
+	* test/dump-ppt-records.c: Parse TxMasterStyleAtom.
+
+2004-07-08  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (cb_canvas_select_item) : handle the zoom
+
+	* graph/gog-theme.c (gog_themes_init) : Add a global alias for
+	  GogSeriesElement -> GogSeries
+	(gog_theme_find_element) : Look up theme local and global aliases for
+	  classes.
+	(gog_theme_add_alias) : new.
+
+2004-07-08  Jody Goldberg <jody at gnome.org>
+
+	* goffice.c (libgoffice_init) : Add SeriesElement to be pedantic
+
+2004-07-06  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-graph.c (gog_graph_init) : apply theme style for graphs
+	  to do a full init.
+
+2004-07-04  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-styled-object.c (gog_styled_object_parent_changed) :
+	    initialize the style completely using the theme when we have a
+	    theme.
+
+2004-07-04  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/god-drawing-renderer-gdk.c (draw_text): Handle
+	char_attributes.
+
+	* drawing/god-text-model.c, drawing/god-text-model.h
+	(real_god_text_model_set_paragraph_attributes): Fixed up this
+	function a bit.
+	(real_god_text_model_set_pango_attributes): Implemented this
+	function.  Changed it to take GList instead of PangoAttrList.
+
+	* libpresent/load-ppt.c (handle_atom): Implemented parsing
+	character attributes.
+
+2004-07-02  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-theme.c (map_area_series_solid_default) : simplify now
+	  that we're just filling in the color no need to twiddle types
+
+	* graph/gog-style.c : rework GogStyle::fill share pattern:fore/back
+	and gradient:start/end.
+	merge all the different auto flags.  
+	initialize the gradient brightness to -1 to avoid starting with black
+	Change fill from union to struct to simplify changing fill types
+	Allow themed gradient fills
+
+2004-06-30  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/god-text-model.c
+	(real_god_text_model_set_paragraph_attributes): Oh yeah, the
+	character count should increase as you iterate through the
+	paragraph.
+
+	* libpresent/load-ppt.c (handle_atom): Pass in the position in the
+	text instead of the position in the file.  That might be a good
+	idea.
+
+2004-06-29  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/Makefile.am (libgoffice_drawing_la_SOURCES): Added
+	god-paragraph-attributes.c and god-paragraph-attributes.h.
+
+	* drawing/god-drawing-renderer-gdk.c (draw_text): Draw each
+	paragraph separately with some paragraph formatting.
+
+	* drawing/god-paragraph-attributes.c,
+	drawing/god-paragraph-attributes.h: New file to handle attributes
+	of a paragraph.
+
+	* drawing/god-text-model.c, drawing/god-text-model.h: Store as a
+	list of paragraphs.  Store some formatting information.
+
+	* libpresent/load-ppt.c: Load some of the paragraph formatting
+	from ppt.
+
+	* test/dump-ppt-records: Attempted to parse BaseTextPropAtom.
+
+	* test/test-view-ppt.c (main): Fullscreen the window.
+
+2004-06-23  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* Makefile.am: Added cut-n-paste subdir.
+	* cut-n-paste/Makefile.am: New file.
+	* cut-n-paste/pcre/Makefile.am: pcre tree moved from gnumeric.
+	* cut-n-paste/pcre/get.c: (pcre_get_stringnumber),
+	(pcre_copy_substring), (pcre_copy_named_substring),
+	(pcre_get_substring_list), (pcre_free_substring_list),
+	(pcre_get_substring), (pcre_get_named_substring),
+	(pcre_free_substring): ditto, changed gnumeric_* to go_*
+	* cut-n-paste/pcre/internal.h: ditto.
+	* cut-n-paste/pcre/maketables.c: (pcre_maketables): ditto.
+	* cut-n-paste/pcre/pcre.c: (make_pcre_default_tables), (ord2utf8),
+	(pcre_version), (pcre_info), (pcre_fullinfo), (pcre_config),
+	(pchars), (check_escape), (is_counted_repeat),
+	(read_repeat_counts), (first_significant_code), (find_fixedlength),
+	(find_bracket), (find_recurse), (could_be_empty_branch),
+	(could_be_empty), (check_posix_syntax), (check_posix_name),
+	(adjust_recurse), (compile_branch), (compile_regex), (is_anchored),
+	(is_startline), (find_firstassertedchar), (valid_utf8),
+	(pcre_compile), (match_ref), (match_xclass), (match), (pcre_exec):
+	* cut-n-paste/pcre/pcre.h: ditto.
+	* cut-n-paste/pcre/pcreposix.c: (pcre_posix_error_code),
+	(go_regerror), (go_regfree), (go_regcomp), (go_regexec):
+	* cut-n-paste/pcre/pcreposix.h: ditto.
+	* cut-n-paste/pcre/printint.c: (print_char), (print_internals): ditto.
+	* cut-n-paste/pcre/study.c: (set_bit), (set_start_bits),
+	(pcre_study): ditto.
+	* goffice.c: (libgoffice_init): Added call to go_math_init.
+	* graph/go-data-simple.c: (go_data_scalar_str_get_value),
+	(go_data_vector_str_get_value),
+	(go_data_vector_str_set_translation_domain): use new go_nan and functions in utils/go-math.*
+	* graph/go-data.c: (go_data_vector_get_value): ditto.
+	* graph/gog-axis.c: (gog_axis_get_entry), (gog_axis_update),
+	(cb_enable_dim), (cb_axis_bound_changed), (gog_axis_get_bounds),
+	(gog_axis_num_markers), (gog_axis_view_render): ditto.
+	* graph/gog-error-bar.c: (gog_error_bar_get_bounds): ditto.
+	* graph/gog-plot.c: (gog_plot_get_axis_bounds): ditto.
+	* graph/plugins/plot_barcol/gog-1.5d.c:
+	(gog_plot1_5d_axis_get_bounds): ditto.
+	* graph/plugins/plot_barcol/gog-barcol.c:
+	(gog_barcol_update_stacked_and_percentage),
+	(gog_barcol_view_render): ditto.
+	* graph/plugins/plot_barcol/gog-line.c:
+	(gog_line_update_stacked_and_percentage), (gog_line_view_render): ditto.
+	* graph/plugins/plot_pie/gog-pie.c: (gog_pie_view_render),
+	(gog_pie_series_update): ditto.
+	* graph/plugins/plot_radar/gog-radar.c:
+	(gog_radar_plot_axis_get_bounds), (gog_radar_view_render):
+	* graph/plugins/plot_xy/gog-xy.c: (gog_2d_plot_update),
+	(gog_2d_plot_axis_get_bounds), (gog_xy_view_render): ditto.
+	* utils/go-marker.c: ditto.
+	* utils/Makefile.am: Added go_math.[c,h]
+	* utils/go-math.c: (go_math_init), (go_add_epsilon),
+	(go_sub_epsilon), (go_fake_floor), (go_fake_trunc): imported from gnumeric.
+	* utils/go-math.h: ditto.
+
+2004-06-20  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_view_render) : Ensure that the line
+	  extends out far enough for the first and last tick.
+
+	* graph/gog-theme.c (map_area_series_solid_default) : honour the new
+	  disable_theming flag.
+	* graph/gog-style.c (gog_style_is_completely_auto) : new.
+
+2004-06-16  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-file.c (go_filename_to_uri): Handle "//" and "/./"
+	parts in filenames.
+
+	* graph/gog-style.c (cb_image_file_select): Handle change in
+	gui_image_file_select's signature.  (Barely.)
+
+	* utils/go-file.c (go_file_create): New function.
+
+2004-06-15  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-file.c (go_basename_from_uri): Better WITH_GNOME
+	implementation that handles fragments and methods.
+
+2004-06-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-1.5d.c : tack on a placeholder 'in_3d'
+	  attribute to simplify roundtripping for xls.
+
+2004-06-11  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-file.c: New file.
+
+2004-06-11  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis-prefs.glade : add a combobox for map selection.
+	* graph/gog-axis.c : add a map description structure. remove log_scale
+	boolean property of GogAxis, and add a new named map property.
+	(map_init_linear),
+	(map_linear),
+	(map_init_log),
+	(map_log),
+	(gog_axis_map_set_by_num),
+	(gog_axis_map_populate_combo),
+	(gog_axis_map_set),
+	(gog_axis_map_init),
+	(gog_axis_map),
+	(gog_axis_map_destroy) : new.
+	(gog_axis_editor) : handle map combobox.
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render) : use map
+	functions.
+	
+2004-06-05  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_get_entry) : add some protection now that
+	  this is public.
+	  (gog_axis_is_discrete) : ditto.
+
+	* graph/gog-style.c : add sax exporters
+	* graph/gog-error-bar.c : ditto
+
+	* graph/gog-object-xml.h : s/GogPersistDOM/GogPersist
+	* graph/gog-object-xml.c : add sax exporters
+	  (go_xml_out_add_color) : new.
+
+	* utils/go-font.c : Added some conditional leak debug tools
+
+2004-06-01  Morten Welinder  <terra at gnome.org>
+
+	* gui-utils/go-combo-text.c (go_combo_text_set_text): Plug leak.
+
+2004-05-31  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-view.c (gog_view_find_child_view) : new
+
+2004-05-31  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-series.c (gog_series_get_plot) : new.
+
+	* graph/gog-axis.c (gog_axis_get_entry) : rename from axis_get_entry
+	  and make public.
+
+2004-05-24  Jody Goldberg <jody at gnome.org>
+
+	* graph/go-data-simple.c (go_data_vector_str_get_str) : enable the
+	  translation mechanism
+
+2004-05-26  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* gui-utils/Makefile.am: added go-combo-text.h
+	* gui-utils/go-action-combo-text.c: (cb_entry_changed),
+	(go_action_combo_create_tool_item),
+	(go_action_combo_text_set_entry):
+	* gui-utils/go-combo-text.h: was gnumeric-combo-text.h
+	* gui-utils/go-combo-text.c: was gnumeric-combo-text.c,
+	replaced GtkList by GtkTreeView
+	* gui-utils/go-marshalers.list: added BOOLEAN:POINTER
+
+2004-05-23  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-chart.c (gog_chart_view_class_init) : set call_parent_render
+	to FALSE.
+	* graph/gog-outlined-object.c (gog_outlined_view_render) : call parent
+	render method only if call_parent_render is TRUE;
+	(gog_outlined_view_class_init) : set call_parent_render to TRUE;
+	* graph/gog-outlined-object.h : add a call_parent_render boolean.
+
+2004-05-20  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=142212
+	* graph/plugins/plot-barcol/gog-line.c (gog_line_view_render) : don't
+	use '0' if Y value is missing.
+	
+2004-05-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer-svg.c (gog_renderer_svg_measure_text) : use
+	  logical rather than ink extents.
+	(gog_renderer_pixbuf_draw_text) : ditto.
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_text) : ditto.
+	(gog_renderer_pixbuf_draw_text) : ditto.
+
+	* graph/gog-axis.c (gog_axis_view_size_request) : tick labels for
+	  discrete axes are below the line not the major tick marks.
+	(gog_axis_view_render) : ditto
+
+	* graph/gog-renderer-svg.c (make_layout) : cache the context.
+	(gog_renderer_pixbuf_finalize) : unref cached contexts.
+	(gog_renderer_pixbuf_class_init) : connect the new finalize.
+
+	* graph/gog-style.c (gog_style_is_different_size) : line width change
+	  for axis changes size.
+
+	* graph/gog-axis.c (gog_axis_view_render) : don't allocate size for
+	  ticks if the lines are invisible.
+
+	* graph/gog-plot.c (gog_plot_get_axis_bounds) : add some safety.
+          This will be called for things like a pie when adding one while
+	  something with an still exists.
+
+	* graph/gog-guru.c (cb_attr_tree_selection_change) : be more forgiving
+	  about when a user can go back to select a plot.  If there is only
+	  one chart, or one plot things are unambiguous.
+
+	* drawing/god-property-table.h : sync with the extensions in the xls
+	  importer to handle gradients and richtext.
+
+	* drawing/god-property-table.c (god_property_table_get_markup) : new.
+	(god_property_table_set_markup) : ditto.
+
+2004-05-11  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* graph/gog-renderer-pixbuf.c: (make_layout),
+	(gog_renderer_pixbuf_update): replaced deprecated pango_ft2_get_context.
+	* graph/gog-renderer-svg.c: (make_layout): ditto.
+	* graph/gog-style-prefs.glade: replaced GtkOptionMenu by GtkComboBox.
+	* graph/gog-style.c: (cb_gradient_style_changed),
+	(fill_gradient_init), (cb_image_style_changed), (fill_image_init),
+	(cb_fill_type_changed), (fill_init): ditto.
+
+2004-05-10  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-plot.c (gog_plot_foreach_elem) : pass the index of the
+	  iteration, not the absolute for has-legend situations
+
+	* graph/gog-series.c (gog_series_set_property) : update cardinality if
+	  has-legend changes.
+	(gog_series_editor) : Add a quick 'show in legend' toggle
+
+2004-05-07  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-theme.c (gog_themes_init) : sync the default theme with
+	  XL's notion of things so that we do not theme away auto settings on
+	  import.  Specificly Give chart's the background and make graph
+	  empty.
+
+	*  */Makefile.am : use goffice.mk for include paths
+
+2004-05-03  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=136363
+	* graph/gog-style.c (gog_style_apply_theme) : Do not theme the fonts
+	  it over rides the user selection because there is no 'auto' flag.
+
+2004-05-06  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-gradient.c (go_gradient_dir_from_str,
+	go_gradient_dir_as_str): Use G_N_ELEMENTS.
+	(grad_dir_names[]): Constify.
+	(go_gradient_selector): Eliminate elements table.
+
+2004-04-29  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=141405
+	* drawing/god-drawing-renderer-gdk.c
+	(god_drawing_renderer_gdk_render_shape) : explicitly set alignment for
+	  now.  Set layout bounds so that we wrap.
+
+2004-04-19  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=127411
+	* graph/gog-chart.c (gog_chart_view_render) : render the style.
+
+2004-04-17  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_xy/gog-xy.c (gog_bubble_plot_class_init) : Do not
+	  replicate ms dim types.  That breaks xls import.
+	(gog_xy_plot_class_init) : ditto.
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_class_init) : ditto
+
+2004-04-15  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-error-bar.c (gog_error_bar_prefs): Look for pixmaps in
+	the right directory.
+
+2004-04-08  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* graph/plugins/plot_barcol/gog-1.5d.c: (gog_plot1_5d_update),
+	(gog_plot1_5d_axis_get_bounds), (gog_plot1_5d_class_init),
+	(gog_series1_5d_set_property), (gog_series1_5d_get_property),
+	(gog_series1_5d_populate_editor), (gog_series1_5d_class_init),
+	(gog_series1_5d_init): Add error bars support.
+	* graph/plugins/plot_barcol/gog-1.5d.h: ditto.
+	* graph/plugins/plot_barcol/gog-barcol.c: ditto.
+	(gog_barcol_update_stacked_and_percentage),
+	(gog_barcol_view_render): ditto.
+	* graph/plugins/plot_barcol/gog-line.c: ditto.
+	(gog_line_update_stacked_and_percentage), (gog_line_view_render): ditto.
+	* graph/plugins/plot_xy/gog-xy.c: (gog_2d_plot_update): use gog_error_bar_is_visible instead
+	of detailed tests.
+
+2004-04-05  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=139205
+	* gui-utils/go-action-combo-stack.c
+	(go_action_combo_stack_create_menu_item) : There's no reason to set a
+	  default label not only was it ugly, but it disabled the nice utility
+	  code in GtkAction::connect_proxy that would set 'use_underline' for us
+
+2004-03-30  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=138532
+	* graph/plugins/plot_radar/gog-radar.c (gog_radar_plot_update) : don't
+	  use an invalid series for anything.
+
+2004-03-28  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.0
+
+2004-03-26  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/Makefile.am (libgoffice_drawing_la_SOURCES): Added
+	god-drawing-renderer-gdk.c, god-drawing-renderer-gdk.h,
+	god-drawing-view.c, and god-drawing-view.h.
+
+	* drawing/god-drawing-renderer-gdk.c,
+	drawing/god-drawing-renderer-gdk.h: New class.  Renders a drawing
+	to a gdk drawable.
+
+	* drawing/god-drawing-view.c, god-drawing-view.h: New class.
+	Widget to display a drawing.
+
+	* drawing/god-drawing.c, drawing/god-drawing.h: Added a background
+	shape.
+
+	* drawing/god-image.c: Call gdk_pixbuf_loader_close.
+
+	* drawing/god-property-table.c, drawing/god-property-table.h:
+	Added length type and fixed up flag type.  Added a bunch of types.
+
+	* drawing/god-shape.c: Allow a NULL anchor.
+
+	* libpresent/Makefile.am (libgoffice_libpresent_la_SOURCES): Added
+	present-view.c and present-view.h.
+
+	* libpresent/load-ppt.c: Handle the DocumentAtom.
+
+	* libpresent/present-presentation.c,
+	libpresent/present-presentation.h: Added extents and notes_extents
+	fields.
+
+	* libpresent/present-view.c, libpresent/present-view.h: New class.
+	Widget to display a presentation.
+
+	* ms-compat/god-image-ms.c: Added a bunch of EscherOPT fields.
+	Handle the patriarch and background shapes more cleanly.
+
+	* test/.cvsignore: Added test-view-ppt.
+
+	* test/Makefile.am (test_view_ppt_SOURCES): Added test-view-ppt.c.
+
+	* test/test-ppt.c: Handle the separate patriarch and background
+	shapes.
+
+	* test/test-view-ppt.c: New Class.  Tests present-view.c.
+
+	* utils/go-units.h: Added new unit EMU.  (360000 EMUs per
+	centimeter, 914400 EMUs per inch, 12700 EMUs per point.)
+
+2004-03-22  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/Makefile.am (libgoffice_drawing_la_SOURCES): Added
+	god-image.c, god-image.h, god-image-store.c, and
+	god-image-store.h.
+
+	* drawing/god-drawing-group.c, drawing/god-drawing-group.h: Added
+	an image store to the drawing group.  Implemented
+	god_drawing_group_new.
+
+	* drawing/god-drawing.c, drawing/god-drawing.h: Gave each drawing
+	a link to its drawing group.
+
+	* drawing/god-image-store.c, drawing/god-image-store.h: New class.
+	An array of images.
+
+	* drawing/god-image.c, drawing/god-image.h: An image or a
+	placeholder for an image.  Includes the original data as well as a
+	loaded pixbuf.
+
+	* libpresent/load-ppt.c: Actually store the drawings in the slides
+	and the drawing groups in the presentations.  Load the pictures
+	into the drawing group.
+
+	* libpresent/present-presentation.c,
+	libpresent/present-presentation.h: Added a drawing group here.
+
+	* libpresent/present-slide.c, libpresent/present-slide.h: Added a
+	drawing here.
+
+	* ms-compat/Makefile.am (libgoffice_ms_compat_la_SOURCES): Added
+	god-image-ms.c and god-image-ms.h.
+
+	* ms-compat/god-drawing-ms.c, ms-compat/god-drawing-ms.h: Actually
+	do drawing group loads and load up the image store as we go.
+	Added a function to handle parsing of images not in the main
+	Escher stream.
+
+	* ms-compat/god-image-ms.c, ms-compat/god-image-ms.h: New class.
+	Just a god_image with a hash that's used at load time.
+
+	* test/test-ppt.c: Moved dumping the Drawings here since they're
+	included in the slides now so it makes more sense to dump them
+	here than in load-ppt.c.
+
+2004-03-22  Morten Welinder  <terra at gnome.org>
+
+	* libpresent/load-ppt.c (handle_atom): The usual fix.
+
+2004-03-21  Christopher James Lahey  <clahey at ximian.com>
+
+	* ms-compat/god-drawing-ms.c (handle_atom),
+	test/dump-ppt-records.c (handle_atom): Moved some of the debugging
+	stuff from god-drawing-ms to dump-ppt-records.
+
+2004-03-20  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/god-anchor.c (god_anchor_finalize),
+	ms-compat/god-drawing-ms-client-handler.c
+	(god_drawing_ms_client_handler_finalize): Chain the finalize
+	function.
+
+	* libpresent/Makefile.am (libgoffice_libpresent_la_SOURCES): Added
+	present-presentation.c, present-presentation.h, present-slide.c,
+	present-slide.h, present-text.c, present-text.h.
+
+	* libpresent/god-drawing-ms-client-handler-ppt.c,
+	libpresent/god-drawing-ms-client-handler-ppt.h: Add a PresentSlide
+	so that we can parse OutlineTextRefAtom and link it up to the
+	outline.
+
+	* libpresent/load-ppt.c, libpresent/load-ppt.h: Changed it to use
+	PresentPresentation.  Pass a PresentSlide into the client_handler
+	if the PPDrawing is a child of a Slide.
+
+	* libpresent/present-presentation.c,
+	libpresent/present-presentation.h, libpresent/present-slide.c,
+	libpresent/present-slide.h, libpresent/present-text.c,
+	libpresent/present-text.h: New classes.  A presentation, a slide,
+	and a piece of text on a slide.
+
+	* test/test-ppt.c: Changed this to use PresentPresentation.
+
+2004-03-19  Christopher James Lahey  <clahey at ximian.com>
+
+	* libpresent/god-drawing-ms-client-handler-ppt.c
+	(god_drawing_ms_client_handler_ppt_handle_client_text): Handles
+	simple cases with text inside of a shape in Escher.
+
+	* libpresent/load-ppt.c (dump_shape): Print text if there is any.
+
+	* ms-compat/go-ms-parser.c (go_ms_parser_read): Only read the data
+	if there's a handler.
+
+	* ms-compat/god-drawing-ms-client-handler.c,
+	ms-compat/god-drawing-ms-client-handler.h: Make it so subclasses
+	can specify whether they want the super class to read the data
+	from the input stream.
+
+	* ms-compat/god-drawing-ms.c (handle_atom): Handle
+	EscherClientTextbox by calling the client handler.
+
+2004-03-18  Christopher James Lahey  <clahey at ximian.com>
+
+	* ms-compat/go-ms-parser.c, ms-compat/go-ms-parser.h
+	(go_ms_parser_read): Included the record type as a field in the
+	record structure.
+
+	* test/.cvsignore, test/Makefile.am: Added dump-ppt-records.
+
+	* test/dump-ppt-records.c: New test app to list all the records in
+	a ppt file.
+
+2004-03-18  Christopher James Lahey  <clahey at ximian.com>
+
+	* drawing/god-shape.c, drawing/god-shape.h: Each shape has an
+	anchor.  Added functions to get the children of a shape.
+
+	* graph/gog-legend.c (gog_legend_init),
+	graph/gog-outlined-object.c (gog_outlined_object_init),
+	graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_update),
+	graph/gog-renderer-svg.c (make_layout), graph/gog-renderer.c
+	(gog_renderer_init): Cast to double before calling
+	GO_.._TO_.. unit conversion functions.
+
+	* libpresent/Makefile.am (libgoffice_libpresent_la_SOURCES): Added
+	god-drawing-ms-client-handler-ppt.c and
+	god-drawing-ms-client-handler-ppt.h.
+
+	* libpresent/god-drawing-ms-client-handler-ppt.c,
+	libpresent/god-drawing-ms-client-handler-ppt.h: New class.
+	Handles client functions for PPT.
+
+	* libpresent/load-ppt.c: Added #include <gnumeric-config.h>.
+	Created a GodDrawingMsClientHandlerPpt for use in parsing.  Added
+	code to dump the Escher drawing for testing purposes.
+
+	* ms-compat/Makefile.am (libgoffice_ms_compat_la_SOURCES): Added
+	god-drawing-ms-client-handler.c and
+	god-drawing-ms-client-handler.h.
+
+	* ms-compat/god-drawing-ms-client-handler.c,
+	ms-compat/god-drawing-ms-client-handler.h: New class.  Allows
+	Escher parser to let the host application handle Client records.
+
+	* ms-compat/god-drawing-ms.c, ms-compat/god-drawing-ms.h: Use
+	GodDrawingMsClientHandler to parse EscherClientAnchor records.
+
+	* test/.cvsignore: Ignore test-ppt.
+
+	* test/test-ppt.c: Fixed include here.  Added #include
+	<gnumeric-config.h>
+
+	* utils/go-unit.h: Changed these to use the math in whatever type
+	the input is.  If you pass a double, it uses double math.  If you
+	pass an integer type, it uses integer math.
+
+2004-03-18  Morten Welinder  <terra at gnome.org>
+
+	* libpresent/*.h: Add header guards.
+
+2004-03-16  Christopher James Lahey  <clahey at ximian.com>
+
+	* Makefile.am (SUBDIRS): Added libpresent and test.
+
+	* drawing/Makefile.am (libgoffice_drawing_la_SOURCES): Added
+	god-anchor.c and god-anchor.h.
+
+	* drawing/Makefile.am, drawing/god-drawing-group.c,
+	drawing/god-drawing.c, drawing/god-drawing.h,
+	drawing/god-property-table.c, drawing/god-shape.c,
+	drawing/god-shape.h, drawing/god-text-model.c,
+	ms-compat/Makefile.am, ms-compat/go-ms-parser.c,
+	ms-compat/god-drawing-ms.c, ms-compat/god-drawing-ms.h:
+	Standardized #include lines.
+
+	* utils/go-units.h: Added an underlying unit and added a type for
+	storing lengths.  Added point and rect types.
+
+2004-03-16  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-error-bar-prefs.glade: Don't start visible.
+
+2004-03-16  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-error-bar.c (gog_error_bar_persist_dom_save): Constify
+	and avoid errors.
+
+	* graph/gog-graph.c (gog_graph_validate_chart_layout): Initialize
+	graph.
+
+	* drawing/god-property-table.c (god_property_table_finalize): Chain up.
+	* drawing/god-shape.c (god_shape_dispose): Chain up.
+	* drawing/god-text-model.c (god_text_model_finalize): Chain up.
+	* drawing/god-drawing-group.c (god_drawing_group_finalize): Chain
+	up.
+
+	* gui-utils/go-action-combo-text.c
+	(go_tool_combo_text_finalize): Add dummy chain.
+
+	* graph/plugins/plot_xy/gog-xy.c (gog_2d_plot_update): Initialize
+	series.
+	(gog_xy_series_finalize, gog_2d_finalize): Skip pointless tests.
+
+2004-03-16  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* Makefile.am: restore data subdir
+	* data/Makefile.am: add error bars icons
+	*data/bar-*.png: new icons for error bars editor.
+	* goffice.c: (libgoffice_init): add GOD_ERROR_BAR_TYPE
+	* graph/Makefile.am: add gog-error-bar.*
+	* graph/goffice-graph.h: add GogErrorBar struct
+	* graph/gog-object-xml.c: (gog_object_write_property):
+	set success to FLASE when the object does not exist.
+	* graph/gog-series-impl.h: add populate_editor in GogSeriesClass
+	* graph/gog-series.c: (gog_series_editor): add pages for error bars.
+	* graph/gog-error-bar-prefs.glade:
+	* graph/gog-error-bar.[c,h]: new files.
+	* graph/plugins/plot_xy/gog-xy.c: (gog_2d_plot_update),
+	(gog_xy_plot_class_init), (gog_bubble_plot_class_init),
+	(gog_xy_view_render), (gog_xy_series_init),
+	(gog_xy_series_finalize), (gog_xy_series_set_property),
+	(gog_xy_series_get_property), (gog_xy_series_populate_editor),
+	(gog_xy_series_class_init): add support for error bars.
+
+2004-03-15  Morten Welinder  <terra at gnome.org>
+
+	* gui-utils/go-combo-box.c (go_combo_box_destroy): Plug leaks.
+
+2004-03-15  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=135621
+	* graph/gog-axis.c (gog_axis_render) : fix rounding issue.
+	
+2004-03-07  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_radar/gog-radar.c (gog_radar_plot_type_name) :
+	  remove the starting angle pref.  That is better handled by the axis.
+
+2004-03-13  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* graph/plugins/plot_xy/gog-xy.c: (gog_xy_view_render),
+	(gog_xy_series_update), (gog_xy_series_init_style): fixed tests about bubble plots.
+
+2004-03-13  Christopher James Lahey  <clahey at ximian.com>
+
+	* Makefile.am (SUBDIRS): Added drawing and ms-compat.
+	(libgoffice_la_LIBADD): Added drawing/libgoffice-drawing.la and
+	ms-compat/libgoffice/ms-compat.la.
+
+2004-03-12  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-series.c (gog_series_element_class_init): Apply the
+	usual fix.
+
+2004-03-11  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/plugins/plot_xy/gog-xy.c : draw markers when they are in plot
+	area and a margin half marker size wide (partly fix 135621).
+	
+2004-03-09  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-object.c : make use_parent_as_proxy a class property
+	instead of an instance one.
+	* graph/gog-style.c : defines a new GogStyledObject derived
+	GogSeriesElement object for storing of single element style overrides.
+	(gog_series_class_init) : declares a new GogObjectRole for use of
+	GogSeriesElement objects. Set use_parent_as_proxy as true.
+	(gog_series_get_elements) : returns the GList of GogSeriesElement
+	children of GogSeries.
+	(gog_series_get_valid_element_index) : returns the next or previous
+	index which is not already used by a GogSeriesElement children of
+	GogSeries.
+	* graph/gog-style.c : remove unused implementation of
+	GogStyleExtension and old gog_series_element_style code.
+	(gog_style_editor) : remove code related to GogStyleExtension.
+	(gog_style_assing) : idem.
+	(gog_style_persist_dom_load) : idem.
+	(gog_style_persist_dom_save) : idem.
+	* graph/gog-syled-object.c (gog_styled_object_set_property) : use of
+	gog_styled_object_set_style.
+	(gog_styled_object_set_style)  : new.
+	* graph/plugins/plot_pie/gog-pie-series-element-prefs.glade : new.
+	* graph/plugins/plot_pie/gog-pie-prefs.c (gog_pie_series_element_pref)
+	: new.
+	* graph/plugins/plot_pie/gog-pie.c : define a new GogSeriesElement
+	derived GogPieSeriesElement object for storage of separation and style
+	of single elements.
+	(gog_pie_view_render) : handle single element style overrides.
+	* graph/plugins/plot_pie/gog-ring-prefs.glade : fix climb_rate, digits
+	and adjustment properties of the separation spin_button.
+	
+2004-03-03  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=136088
+	* graph/gog-object-xml.c (gog_object_write_property) : Add a
+	  GOG_PARAM_FORCE_SAVE to save a parameter even if the value is the
+	  same as the default.
+	* graph/gog-plot.c (gog_plot_class_init) : Use it here to always store
+	  the vary_style_by_element property.
+
+2004-02-27  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-theme.c (map_area_series_solid_default) : don't set colors
+	  for image fills.
+	(map_area_series_solid_guppi) : ditto.
+
+2004-02-23  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_radar/gog-radar.c : use
+	  'default-style-has-markers' rather than 'markers' to be consistent.
+	(gog_radar_plot_update) : store the minima and maxima from all the
+	  series.
+	(gog_radar_plot_axis_get_bounds) : renamed from gog_radar_plot_axis_bounds 
+	  for consistency.  Set the bounds for a radial axis more generally.
+	  We want the outbound to be hard (unscaled) and the inner rounded.
+
+2004-02-22  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-chart.c (gog_chart_view_size_allocate) : only position th
+	  axis, not all the children.
+
+	* graph/plugins/plot_radar/gog-radar.c
+	(gog_radar_view_render_series) : Just alloca the max numbr of points
+	  aka model::num_elements, and don't free alloca-ed memory.
+
+2004-02-22  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/plugins/plot_radar/gog-radar.c 
+	(gog_plot_radar_render_series) : use g_new instead of g_alloca for
+	allocation of path.
+	
+2004-02-21  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-locale.c : Some cut-n-paste for the without_gnome case
+
+	* gui-utils/go-action-combo-text.c : some initial implementation
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_plot_foreach_elem) :
+	  handle mismatched numbers of elements and labels.
+	(gog_pie_view_render) : take the outline into account when sizing.
+
+	* graph/gog-style.h : add weak notion of centered image.  This needs
+	  to be stronger to specify alignement.
+
+	* graph/gog-style.c (gog_style_set_fill_image_filename) : new.
+	(cb_image_file_select) : Use it.
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_polygon) :
+	supported centered images.
+
+	* graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_polygon) : support centered images.
+
+	* graph/gog-object.c (gog_object_get_children) : add a filter parm.
+	(gog_object_get_child_by_role) : new utility routine.
+
+	* graph/gog-legend.c (gog_legend_update) : set up the editor properly
+	  for fonts.
+
+	* graph/gog-graph.c (gog_graph_view_size_allocate) : typo.  Only
+	  effected manually created plots
+
+	* graph/gog-control-foocanvas.c (gog_control_foocanvas_draw) : make
+	  more resistent to out of memory situations.
+
+	* graph/go-data-simple.c : Add some quick and dirty constant vectors
+	  for double [], and char const *[].  These could certainly be more
+	  robust.
+
+	From Michael Devine <mdevine at cs.stanford.edu> :
+	* graph/goffice-graph.h : Add a first pass at 'radar' plots
+	* graph/gog-axis.c : ditto.
+	* goffice/graph/gog-chart.c : ditto
+
+2004-02-13  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-style.c (gog_style_extension_editor): Fix declaration
+	and check order.
+
+2004-02-13  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-style.[ch] : new GogStyleExtension object.
+	(gog_style_assign) : handle extension.
+	(gog_style_editor) : shows extension editor if it exists.
+	(gog_style_get_extension) : new.
+	(gog_style_set_extension) : new.
+	* graph/gog-series : add a new style_extension_type field in
+	GogSeriesDesc, and use it in gog_series_init_style.
+	
+2004-02-09  Morten Welinder  <terra at gnome.org>
+
+	* graph/plugins/plot_xy/gog-bubble-prefs.glade: Do not start
+	visible.
+
+2004-02-09  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* graph/plugins/plot_xy/gog-xy.c: (gog_xy_view_render): replaced
+	test series.num_dim == 3 by GOG_IS_BUBBLE_PLOT
+	* graph/plugins/plot_xy/gog-xy.h: fixed GOG_IS_BUBBLE_PLOT
+
+2004-02-04  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-color-palette.c (cb_menu_custom_activate) : don't show
+	  until after the signal in case a handler is marking the dialog as a
+	  transient.
+	(cb_combo_custom_clicked) : ditto.
+
+2004-02-02  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* graph/plugins/plot_xy/gog-xy.c: fixed several warnings
+
+2004-02-02  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-combo-color.c (cb_preview_clicked) : return the real
+	  is_custom state.
+
+	* gui-utils/go-color-palette.c (handle_color_sel) : simplify and just
+	  return the color caller can emit the signal, and store the new
+	  colour.
+	(cb_combo_custom_response) : store results.
+	(cb_menu_default_activate) : ditto.
+	(cb_menu_color_activate) : ditto.
+	(cb_menu_custom_response) : ditto.
+	(set_color) : store when something is a custom of default.
+	(go_color_palette_get_current_color) : return a flag indicating if
+	  this is custom.
+
+2004-02-01  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-color-palette.c (handle_color_sel) : destroy before we
+	  emit in case the custom dialog handler played with the wrapper
+	  actions (eg desensitized them)
+
+	* gui-utils/go-combo-color.c (cb_proxy_custom_dialog) : pop the combo
+	  down when the custom dialog goes up.
+
+2004-01-29  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c (cb_gradient_type_changed) : store the last
+	  selected type.
+	(populate_gradient_combo) : default to that when changing fill type to
+	  gradient.
+
+	* graph/gog-style-prefs.glade : fix mnemonics to not clash.
+
+	* gui-utils/go-action-combo-stack.c
+	(go_action_combo_stack_create_tool_item) : patch leak
+
+	* utils/go-marker.c (go_marker_selector) :
+	  go_combo_pixmaps_add_element absorbs a ref to the pixbuf, don't lose
+	  control of it.  Handle shape=none nicely too.
+
+2004-01-29  Morten Welinder  <terra at gnome.org>
+
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render): Attempt
+	fix.
+
+2004-01-28  Andreas J. Guelzow <aguelzow at taliesin.ca>
+
+	* graph/plugins/plot_xy/gog-xy.c: fix 2 syntax errors to make it
+	  compile
+
+2004-01-28  Jean Brefort  <jean.brefort at ac-dijon.fr>
+
+	* graph/plugins/plot_xy/Makefile.am:
+	* graph/plugins/plot_xy/gog-bubble-prefs.glade:
+	* graph/plugins/plot_xy/gog-bubble-prefs.c:
+	* graph/plugins/plot_xy/gog-xy.c:
+	* graph/plugins/plot_xy/gog-xy.h:
+		added support for bubble plots options
+
+2004-01-24  Jon K Hellan  <hellan at acm.org>
+
+	* gui-utils/go-dock.c (go_dock_class_init): Initialize parent_class.
+
+	* gui-utils/go-dock-item.c (go_dock_item_class_init): Ditto.
+
+	* gui-utils/go-dock-band.c (go_dock_band_class_init): Ditto.
+
+2004-01-24  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_xy/gog-xy.c : suppress warning
+
+	* gui-utils/go-action-combo-text.c (go_action_combo_text_set_entry) :
+	  implement.
+
+	* gui-utils/go-action-combo-stack.c
+	(go_action_combo_stack_create_tool_item) : set the relief here too.
+	  We're close to having a GOActionCombo base for this.
+
+2004-01-23  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-action-combo-stack.c : tweak to make it sorta work.
+	  I do not like the kludgy approach required by our not supporting
+	  arguments to GtkAction::activate
+
+2004-01-22  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-action-combo-pixmaps.c : rewrite.
+
+2004-01-17  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-action-combo-color.c (cb_color_changed) : Use the
+	  supplied color directly.
+	(go_action_combo_color_create_menu_item) : connect up the activate signal.
+
+2004-01-22 Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+	* graph/gog-style.c (gog_style_editor) : edit a GogStyle, not
+	GogStyledObject.
+	(gog_styled_object_editor) : new.
+	* graph/gog-axis.c : use gog_styled_object_editor instead of
+	gog_style_editor.
+	* graph/gog-label.c : ditto.
+	* graph/gog-series.c : ditto.
+	* graph/gog-styled-object.c : ditto. rename gog_styled_object_editor
+	to styled_object_editor.
+
+2004-01-17 Jean Brefort <jean.brefort at ac-dijon.fr>
+	* graph/plugins/plot_xy/* : add initial support for bubble plots
+
+2004-01-16  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-action-combo-stack.c (go_action_combo_stack_push) :
+	  operate on the combo, not the toolitem wrapper.
+	(go_action_combo_stack_pop) : ditto.
+	(go_action_combo_stack_truncate) : ditto.
+
+2004-01-16  Jon K Hellan  <hellan at acm.org>
+
+	* gui-utils/go-action-combo-stack.c (go_action_combo_stack_push) 
+	(go_action_combo_stack_pop): Fix typos.
+
+2004-01-14  Jody Goldberg <jody at gnome.org>
+
+	* gui-utils/go-action-combo-color.c
+	(go_action_combo_color_create_menu_item) : some initial work on
+	  producing a menu.  Its not bad, but the combo needs alot of cleanup
+	  before it can migrate.
+
+2003-12-23  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.2.3
+
+2003-12-22  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_editor) : set the current format.
+
+2003-12-19  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-format.c (go_format_eq) : new.
+	(go_format_as_XL) : new
+	(go_format_new_from_XL) : new
+
+	* graph/gog-axis.c (gog_axis_editor) : add a format selection page for
+	  non-discrete axis.
+
+2003-12-18  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=129445
+	* graph/gog-style.c (gog_style_assign) : transfer the
+	  needs_obj_defaults field.
+	(gog_style_init) : init needs_obj_defaults field to TRUE.
+	(gog_style_persist_dom_load) : persisted styles do not need object
+	  defaults.
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_series_init_style) :
+	  respect the needs_obj_defaults.
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_series_init_style) : ditto.
+
+	* graph/gog-axis.c (gog_axis_get_marker) : Use go_format to handle the
+	  markers.
+
+	* utils/go-format.c : A quick cheesy wrapper to GnmFormat in
+	  preparation for sucking it down here.
+
+2003-12-14  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-pattern.c (go_pattern_selector) : fix leak.
+	* utils/go-gradient.c (go_gradient_selector) : fix leak.
+	* utils/go-marker.c (go_marker_selector) : fix leak.
+
+2003-12-14  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=128874
+	* graph/gog-axis.c (gog_axis_finalize) : unref labels.
+	(gog_axis_update) : ref them here.
+
+2003-11-26  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.2.2
+
+2003-11-18  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-styled-object.c (gog_styled_object_set_property) : dup the
+	  style to avoid themes stomping on shared styles.  refcounting is not
+	  an ideal semantic for GogStyle.
+
+2003-11-17  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-object-xml.c (gog_object_write_property): Plug leak.
+
+2003-11-15  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_view_render) : support minor ticks and
+	  tune placement to work around anti-aliasing blur.
+
+	* graph/gog-grid.c (gog_grid_view_render) : tune the cheat to work
+	  around anti-aliasing blur.
+
+2003-11-14  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=126775
+	* graph/gog-axis.c (gog_axis_update) : be smarter when min == max.
+
+2003-11-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (cb_obj_children_reordered) : implement.
+	(cb_reordered_find) : new.
+
+	* graph/gog-object.c (gog_object_can_reorder) : implement.
+
+2003-11-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-barcol.c (gog_barcol_view_render) :
+	  avoid the potential for trouble for a series with only zeros.
+
+2003-11-12  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (graph_guru_init_format_page) : store the
+	  precedence widgets.
+	(cb_attr_tree_selection_change) : adjust sensitivity of the precedence
+	  elements.
+
+2003-11-11  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c (marker_init) : fix leak.
+
+	* graph/gog-guru.c (cb_attr_tree_selection_change) : work around a
+	  probable bug in GtkViewport by adding an extra GtkFrame inside the
+	  viewport and using that.
+
+2003-11-11  Morten Welinder  <terra at gnome.org>
+
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render): Use finite
+	consistently.
+
+2003-11-11  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-pattern.c (go_pattern_selector) : add auto support.
+
+	* utils/go-marker.c : move the default handling where it belongs.
+
+	* utils/go-color.c (go_color_to_gdk) : new.
+
+	* graph/plugins/plot_barcol/plot-types.xml.in : include non-marker
+	  variants.
+	* graph/plugins/plot_xy/plot-types.xml.in : include non-marker, and
+	 barcol non-line variants.
+
+	* graph/gog-theme.c : respect the auto flags here.
+
+	* graph/gog-styled-object.c (gog_styled_object_apply_theme) : new.
+	(gog_styled_object_set_property) : Use it here.
+	(gog_styled_object_parent_changed) : and here.
+	(gog_styled_object_editor) : provide a default impl.
+	(gog_styled_object_get_auto_style) : new.
+
+	* graph/gog-style.c :
+	    - Add support for auto* flags for the marker here, not GoMarker.
+	    - Support restoring auto for shapes and colours
+
+	* graph/gog-series.c (gog_series_init_style) : new.  Gives us finer
+	  control of what is themable.
+
+	* graph/gog-guru.c : Simplify our lives and only have 1 prop sheet at
+	  any given time.  No need to worry about updating when something
+	  changes externally (styles or dimensions)
+
+	* graph/gog-chart.c : Use the default editor and init_style
+	* graph/gog-graph.c : ditto
+
+	* graph/gog-axis.c : convert from ::interesting_fields -> ::init_style
+	* graph/gog-grid.c : ditto.
+	* graph/gog-label.c : ditto.
+	* graph/gog-legend.c : ditto.
+
+2003-11-05  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-marker.h : I don't want GtkWidget in these headers
+
+2003-11-04  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=125986
+	* graph/gog-style.c (gog_style_merge) : A cheesy solution to the
+	  current lack of clarity on the theming.  We only have a
+	  colour.is_auto flag, so only assign the colour.  This means that
+	  lines and outlines can only theme the colour, not the width or the
+	  pattern.  Which seems reasonably until we have a plan for defining
+	  'autoness' for those attributes.
+
+2003-11-03  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=126056
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render) : differentiate
+	  between missing and bad strings.  X axis strings are indicies, Y
+	  axis strings are 0.
+
+2003-11-02  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c (gog_style_editor) : Add a weakref so that we can
+	  disconnect the signal if the object is destroyed.
+
+	* graph/gog-axis.c (make_dim_editor) : Use closures to avoid having a
+	  callback after a widget has been destroyed.
+
+2003-11-02  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+  
+  	http://bugzilla.gnome.org/show_bug.cgi?id=125419
+	* graph/gog-renderer.[ch] (gog_renderer_start_clipping),
+	(gog_renderer_stop_clipping) : new. Implement clipping of drawing.
+  	Only one level of clipping is allowed. 
+	* graph/gog-renderer[svg, pixbuf, gnome-print] 
+	(gog_renderer_.._start_clipping),
+	(gog_renderer_.._stop_clipping) : new.
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_path),
+	(gog_renderer_pixbuf_draw_polygon),
+	(gog_renderer_pixbuf_draw_text) : handle offset for drawing when
+	clipping.
+	* graph/gog-rendere-gnome-print.c (make_rectangle_path) : new;
+	* graph/gog-chart.c (gog_chart_render) : new. Use the same clipping
+ 	region for all plots.
+  	
+2003-11-01 Jean Brefort <jean.brefort at ac-dijon.fr>
+
+	* graph/gog-renderer-svg.c: added scale parameter to gog_graph_export_to_svg.
+	* graph/gog-renderer-svg.c: implement gog_renderer_svg_measure_text and
+	gog_renderer_svg_draw_text.
+
+2003-11-01  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-barcol.c
+	(gog_barcol_plot_class_init) : set the default to match the real
+	  default so that things persist properly.
+
+2003-10-30  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-plot.c (gog_plot_get_cardinality) : Set the index even if
+	  the series is invald.  This makes like easier when adding a series.
+
+	* graph/gog-style.c (gog_object_set_style) : block style change
+	  signals.
+	(gog_style_pref_state_free) : disconnect the style change handler.
+	(gog_style_editor) : monitor style changed signals.
+	(cb_style_changed) : new.
+
+	* graph/gog-series.c (gog_series_set_index) : signal when the style
+	  changes.
+
+	* graph/gog-object.c (gog_object_get_editor) : force an update before
+	  creating an editor to avoid flicker later.
+	* graph/gog-graph.c (gog_graph_force_update) : new.
+
+2003-10-29  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (cb_axis_bound_changed) : update all the auto
+	  bounds when anything changes.
+
+2003-10-28  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render) : be lazy and
+	  do the clipping in the renderer rather than here.  It will make
+	  life easier when we add splines.
+
+2003-10-27  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=125619
+	* graph/gog-axis.c (gog_axis_editor) : init the high/low button
+
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render) : clip
+	  markers and lines.
+
+	* graph/gog-renderer-pixbuf.c (clip_path) : new.
+	(gog_renderer_pixbuf_draw_path) : support the new clipping argument.
+	(gog_renderer_pixbuf_draw_polygon) : ditto.
+
+2003-10-23  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=125045
+	* graph/gog-axis.c (gog_axis_view_render) : clip correctly and space
+	  the ticks based on the actual tick values, not just their index.
+	(gog_axis_num_markers) : return a step fraction too.
+
+2003-10-21  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer.c (gog_renderer_init) : init zoom to 1.
+	* graph/gog-renderer-gnome-print.c (gog_graph_print_to_gnome_print) :
+	  ditto.
+
+2003-10-14  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/gog-axis.c (axis_get_entry) : Add a user_defined parameter in
+	order to know if the returned value is defined by user or computed.
+	(gog_axis_update) : Use user defined bound for the tick spacing
+	calculation.
+	(gog_axis_num_markers) : round to nearest value instead of the
+	automatic double to int cast that removes the fractionnal part.
+	
+2003-10-18  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-chart-impl.h : Inherit from GogOutlinedObject and use the
+	  padding there.
+	* graph/gog-graph-impl.h : ditto.
+	* graph/gog-label.c : ditto.
+	* graph/gog-legend.c : ditto.
+
+	* graph/gog-chart.c (gog_chart_get_property) : padding is in outlined
+	  object now.
+	(gog_chart_set_property) : delete.
+	(gog_chart_class_init) : delete set_prop method and padding_pts prop
+	(gog_chart_init) : delete padding_pts.
+	(gog_chart_view_size_allocate) : use outlined view.
+	(gog_chart_view_render) : ditto.
+	(gog_chart_view_class_init) : just use render in outlined view.
+
+	* graph/gog-graph.c (gog_graph_set_property) : remove PADDING
+	(gog_graph_get_property) : ditto.
+	(gog_graph_class_init) : ditto.
+	(gog_graph_init) : we don't inherit directly from StyledObject anymore
+	(gog_graph_view_size_allocate) : use OutlinedView.
+	(gog_graph_view_render) : ditto.
+	(gog_graph_view_class_init) : ditto.
+
+	* graph/Makefile.am : Add gog-outlined-object.[ch]
+
+2003-10-13  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=122546
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_update) : Update
+	  the index axis if our labels change.  This problem does not apply to
+	  XY plots because their x bounds will change when a dim is set or
+	  cleared.
+
+2003-10-08  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.2.1
+
+2003-10-06 Jean Brefort <jean.brefort at ac-dijon.fr>
+ 
+ 	* graph/gog-renderer-svg.c (gog_renderer_svg_draw_polygon) : use go_pattern_is_solid.
+ 	(gog_renderer_svg_draw_marker) : implemented.
+
+2003-10-08  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (role_label_post_add) : put y axis labels to the
+	  left or right not at the top.
+	(gog_axis_class_init) : enable y axis labels
+
+2003-10-07  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_dataset_dims) : enable setting the cross
+	  point.
+
+2003-10-07  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_update): Fake floor, not fake trunc.
+
+2003-10-06  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-plot.c (gog_plot_get_axis_bounds): Return NULL, not
+	FALSE.
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_point): Ditto.
+
+2003-10-05  Jon K Hellan  <hellan at acm.org>
+
+	* utils/go-pattern.c (go_pattern_selector): gtk_combo_box renamed
+	to gnm_combo_box.
+
+	* utils/go-marker.c (go_marker_selector): Ditto.
+
+	* utils/go-gradient.c (go_gradient_selector): Ditto.
+
+	* graph/gog-style.c (create_color_combo): Ditto.
+
+2003-10-05  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* graph/gog-guru.c: #include gtkliststore.h to fix build.
+
+2003-09-30  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render) : we
+	  already winnowed out the invalid series, no need to flag them.
+	* graph/plugins/plot_barcol/gog-barcol.c (gog_barcol_view_render) :
+	  ditto.
+
+2003-09-28  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c (gog_style_is_marker_visible) : Use the
+	  interesting field too.
+	(gog_style_assign) : Assign the interesting flags too.
+
+	* graph/gog-legend.c (cb_size_elements) : see if anything has a marker
+	(gog_legend_view_size_request) : if any of the elements has a marker
+	  rather than a swatch we need 3x swatch width.
+	(cb_render_elements) : If entry has a marker draw the line and marker
+	(gog_legend_view_render) : Prep for drawing markers if any exist.
+
+2003-09-29  Morten Welinder  <terra at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render):
+	Survive getting a NULL vals, even though that might be a symptom
+	of something else.
+
+	* graph/gog-object.c (gog_object_dup): Plug leak.
+
+	* graph/gog-object-xml.c (gog_object_new_from_xml): Plug leaks.
+
+2003-09-23  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.h : delete unused enum GogAxisTickLevel.
+	  Publicize the data elements.
+	(gog_axis_update) : Manually handle the epsilon shifts so that we can
+	  ignore sign.
+ 
+2003-09-22  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-view.c (cb_remove_child) : doh!
+
+2003-09-21  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (make_layout) : scale the font size
+	  manually to work around.
+	    http://bugzilla.gnome.org/show_bug.cgi?id=121543
+
+2003-09-15 Jean Brefort <jean.brefort at ac-dijon.fr>
+
+	* graph/gog-renderer-svg.c : added gradient support.
+
+	* utils/go-gradient.c (go_gradient_setup): changed vector for oblique gradients.
+
+2003-09-20  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_axis_bounds) :
+	  only valid series can contribute to an index dimension.
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_plot_axis_bounds) : ditto.
+
+	* graph/gog-renderer-gnome-print.c (get_font) : respect zoom.
+
+	* graph/gog-style.c (font_init) : set the font _before_ connecting the
+	  signal. doh!
+
+2003-09-16  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-theme.c (gog_themes_init) : change the default theme for
+	Adrian.
+
+2003-09-16  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (make_layout): Change to way font
+	description is set so that it will work both before and after the
+	fix to http://bugzilla.gnome.org/show_bug.cgi?id=121543.
+
+2003-09-15  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-label.c (gog_label_view_size_request) : empty labels are
+	  of size 0,0 not 1,1
+
+	* graph/gog-view.c (gog_view_size_allocate_real) : don't pad if the
+	  child is 0 sized.
+	(gog_view_size_child_request) : ditto.
+
+	* graph/gog-axis.c (gog_axis_num_markers) : we can't use the max_val
+	  as a fallback if there is no data defining it.
+
+2003-09-15  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-marker.c (go_marker_selector): Terminate the array as
+	it is shorter than we tell the pixbuf combo.
+
+2003-09-15  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.2.0
+
+2003-09-15  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer.c (gog_renderer_measure_text) : pango does not
+	  like measuring ""
+	(gog_renderer_draw_text) : ditto.
+
+2003-09-15  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_view_render) : clipping the label text in
+	  the iterating dimension is a bad idea, we want to clip whole labels,
+	  not the individual lines.
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_view_render) : only draw
+	  the first series for a pie.  Things can sneak in.
+
+	* utils/go-font.c (go_font_init) : make default font smaller
+
+	* graph/gog-object.c (gog_object_get_pos) : new.
+	(gog_object_set_pos) : new.
+
+2003-09-14  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_editor) : We ignore the bounds for a
+	  discrete axis.
+	(gog_axis_update) : store information pertaining to axes with discrete
+	  enumerations.
+	(gog_axis_editor) : discrete enumerations do not allow for manual boun
+	  changes.
+	(gog_axis_num_markers) : handle discrete enumerations.
+	(gog_axis_get_marker) : ditto.
+	(gog_axis_view_size_request) : ditto.
+	(gog_axis_view_render) : rework to support in and out ticks.
+	  Support discrete enumerations.
+	(gog_axis_is_discrete) : new.
+	(gog_axis_get_ticks) : new.
+
+	* graph/gog-renderer.c (gog_renderer_draw_text) : revamp the interface
+	  yet again to make parameters clearer.
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_text) : adjsut
+	  to the new interface and imrpve clipping support.
+	* graph/gog-renderer-gnome-print.c (gog_renderer_gnome_print_draw_text) :
+	  adjust to the new interface, add support for anchors.
+
+2003-09-14  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* gog-style-prefs.glade: `colour' should be `color'
+
+2003-09-14  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-renderer-gnome-print.c: replace calls of
+	  gnome_font_find_closest_from_weight_slant with
+	  gnm_font_find_closest_from_weight_slant
+
+2003-09-14  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (axis_get_entry) : new utility.
+	(gog_axis_get_bounds) : use it here.
+	(gog_axis_num_markers) : here.
+	(gog_axis_get_marker) : and here.
+	(role_label_can_add) : new.
+	(gog_axis_class_init) : use it here to disable labels on the Y axis
+	  until we can get a smarter layout engine.
+
+2003-09-14  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_update) : yet another layer of heuristic
+	  to handle -1 .. 1 better.
+	(gog_axis_get_marker) : force to 0.
+
+	* graph/plugins/plot_barcol/gog-barcol.c (gog_barcol_view_render) :
+	  Get the bounds from the value axis. (fixes bar plots)
+
+2003-09-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (cb_enable_dim) : get smarter and handle
+	  transitions to from auto state.
+
+2003-09-13  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-style.c (cb_fg_color_changed, cb_bg_color_changed,
+	cb_fill_gradient_start_color, cb_fill_gradient_end_color): Update
+	is_auto and pattern_fore_auto, pattern_back_auto,
+	gradient_start_auto, gradient_end_auto flags.
+	(gog_style_merge): Only merge color attributes for fill.
+	(gog_style_init): Initialize attern_fore_auto, pattern_back_auto,
+	gradient_start_auto, gradient_end_auto flags
+
+	* graph/gog-style.h: Add non-persistent auto flags for each color
+	element in fill.
+
+2003-09-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (role_label_post_add) : be smarter about
+	  positioning.
+
+	* graph/gog-view.c (gog_view_size_child_request) : hard code some
+	  inter-child padding.  We can be more elegant in the future.
+	(gog_view_size_allocate_real) : ditto.
+
+	* graph/gog-axis.c (gog_axis_view_size_request) : request space for
+	  children too.
+
+2003-09-13  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-legend.c (cb_render_elements): Allow for floating
+	point inaccuracies when deciding if there is room for an element.
+
+2003-09-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_view_render) : support index
+	  axis for X.
+	(gog_xy_series_update) : ditto.
+
+	* graph/gog-axis.c (gog_axis_editor) : we want font too.
+	  Align the Auto header nicely.
+	(make_dim_editor) : some initial work to give the Auto button's some
+	  feedback.
+
+	* graph/gog-style.c (cb_line_color_changed) : set auto_color.
+	(cb_outline_color_changed) : ditto.
+
+2003-09-13  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-chart.c (gog_chart_axis_set_assign) : clear_parent clears
+	  ::grid, store the pointer for a moment so that we can free it.
+
+	* utils/go-color.c (color_combo_get_gocolor) : cheap hack to support
+	  alpha channel despite interface limitations.  It only works for
+	  custom colours, but thats the most important case.
+	(color_combo_set_gocolor) : init the custom picker too to ensure that
+	  alpha gets set correctly.
+
+	* utils/go-gradient.c (go_gradient_selector) : no need to free images,
+	  have the combo absorb them.
+	* utils/go-pattern.c (go_pattern_selector) : ditto.
+	  fix cut-n-paste-o the first
+	  'Thin Diagonal Crosshatch' was actually
+	  'Thin Diagonal Stripe'
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_text) : leak.
+
+2003-09-12  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_set_property) : fix typos.
+	(gog_axis_view_render) : actually support some of the tick options.
+	(gog_axis_editor) : hook up some of the controls.
+
+	* graph/gog-chart.c (gog_chart_axis_set_assign) : add or remove a grid
+	  depending on the axis set.
+
+2003-09-11  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-object-xml.c (gog_object_write_property) : don't bother
+	  saving parameters with default values.
+
+	* graph/plugins/plot_barcol/gog-line.c (gog_line_view_render) :
+	  respect axis bounds.
+
+	* graph/gog-axis.c (gog_axis_view_render) : invert alignment of text
+	  and support tick marks.
+	(gog_axis_view_size_request) : Make axis labels optional, and allocate
+	  size for major and minor ticks.
+	(gog_axis_class_init) : Lots of new options.
+	(gog_axis_get_property) : ditto, not all of them are supported yet.
+	(gog_axis_set_property) : ditto, not all of them are supported yet.
+	(gog_axis_update) : Add pull to 0, and step doubling heuristics.
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_text) : Clip
+	  text trying to draw out of the physical bounds.
+
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_axis_bounds) :
+	  fix cut-n-paste-o.
+
+2003-09-10  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.1.90
+
+2003-09-09  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-styled-object.c (gog_styled_object_parent_changed) : set
+	  the interesting fields when all the parents are in place.
+
+	* graph/gog-renderer.h : Add an anchor parm to draw_text and clean up
+	  the semantics of size.
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_text) : handle
+	  the various anchor types.
+
+	* graph/gog-axis.c : Some initial work at generating bounds, and
+	  drawing axis values.
+
+	* graph/gog-view.c (gog_view_render) : filter objects with invalid
+	  size.  eg a user makes the plot too small to be useful.
+
+2003-09-09  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_update) :
+	  percentage charts logicly limit -1 .. 1
+
+	* graph/plugins/plot_xy/gog-xy.c (gog_xy_plot_update) : no logical min
+	  or max.
+
+2003-09-08  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/plot-types.xml.in : fix icons to match
+	  reality.  All lines currently have markers by default.
+
+	* graph/plugins/plot_barcol/gog-line.c
+	(gog_line_update_stacked_and_percentage) : Generate the correct bounds.
+
+	* graph/plugins/plot_barcol/gog-barcol.c
+	(gog_barcol_update_stacked_and_percentage) : Why special case 0..1
+	(gog_barcol_view_render) : handle bound clipping.
+
+2003-09-08  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-renderer-svg.c (gog_renderer_svg_draw_marker): New
+	dummy implementation.
+	(gog_renderer_svg_class_init): Use it.
+
+2003-09-08  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c (cb_fill_gradient_end_color) : throw the update
+	  into a timer to decrease flicker.
+	  Works around a bug in older libarts.
+	(gog_style_set_fill_brightness) : new.
+	(cb_gradient_brightness_value_changed) : actually hide the brightness.
+	(cb_gradient_style_changed) : ditto.
+	(fill_gradient_init) : ditto.
+
+	* graph/gog-renderer-svg.c (gog_graph_export_to_svg) : convert
+	  interface to use libgsf.
+
+2003-09-07 Jean Brefort <jean.brefort at ac-dijon.fr>
+
+	* utils/go-gradient.c (go_gradient_setup): added a small value to gradient->c for
+	  vertical gradients to avoid a line whith the bad color at the top of the area.
+	* graph/gog-style.c: handle brightness in gradients.
+	* graph/gog-renderer-svg.[c,h]: new files to handle svg export (not
+	fully implemented).
+	* graph/Makefile.am: added gog-renderer-svg.[c,h].
+
+2003-09-07  Jody Goldberg <jody at gnome.org>
+
+	* utils/go-marker.c (go_marker_selector) : Add marker names.
+
+2003-09-07  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* utils/go-marker.c : removed unused property and signal stuff.
+	(go_marker_selector) : new.
+	* graph/gog-style.c (populate_marker_combo) : new.
+	(marker_init) : use the marker combo.
+	* graph/gog-style-prefs.glade : removed marker option menu.
+	* graph/gog-renderer-gnome-print.c 
+	(gog_renderer_gnome_print_draw_marker): returns when one of the path
+	is NULL (fix a crash).
+	
+2003-09-07  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-styled-object.c (gog_styled_object_set_property) : set the
+	  interesting field for a style.
+	(gog_styled_object_init) : ditto.
+	(gog_styled_object_interesting_fields) : default to outline & fill.
+
+	* graph/gog-style.c (gog_style_persist_dom_save) : only save
+	  interesting fields.
+
+	* graph/gog-series.c (gog_series_interesting_fields) : new.
+	(gog_series_class_init) : hook it up.
+	* graph/gog-legend.c (gog_legend_interesting_fields) : new.
+	(gog_legend_class_init) : hook it up.
+	* graph/gog-label.c (gog_label_interesting_fields) : new.
+	(gog_label_class_init) : hook it up.
+	* graph/gog-axis.c (gog_axis_interesting_fields) : new.
+	(gog_axis_class_init) : hook it up.
+
+2003-09-07  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c (gog_style_line_load) : support auto_color flags.
+	(gog_style_line_save) : ditto.
+	(gog_style_fill_load) : handle is_auto.
+	(gog_style_fill_save) : ditto.
+
+	* graph/gog-legend.c (gog_legend_view_render) : tune the padding.
+	(cb_render_elements) : ditto.
+
+2003-09-06  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-theme.c (gog_theme_init_style): Merge styles instead
+	of assigning style from theme.
+	(map_area_series_solid_default): Only change elements which hold
+	auto values.
+
+	* utils/go-marker.[ch] (go_marker_shape_from_str,
+	go_marker_shape_as_str): Move from gog-style.c and rename.
+	(go_marker_is_auto): New. Tests if marker is different from
+	default. Should really test if user has chosen the marker
+	explicitly.
+
+	* graph/gog-style.c (gog_style_merge): Implement.
+	(str_as_marker_shape, marker_shape_as_str):Move to utils/go-marker
+	and rename.
+	(gog_style_marker_load, gog_style_marker_save): Use renamed
+	version of above functions.
+	(gog_style_persist_dom_load): Mark style elements read from file
+	as non-auto (for now).
+
+2003-09-06  Jon K Hellan  <hellan at acm.org>
+
+	* utils/go-pattern.[ch] (go_pattern_as_str, go_pattern_as_str): Move
+	from gog-style.c and rename.
+
+	* utils/go-gradient.[ch] (go_gradient_dir_from_str) 
+	(go_gradient_dir_as_str): Ditto.
+
+	* graph/gog-style.c (str_as_pattern, pattern_as_str,
+	str_as_grad_dir, grad_dir_as_str): Move to utils/go-pattern /
+	go-gradient and rename.
+	(gog_style_gradient_load, gog_style_gradient_save,
+	gog_style_fill_load, gog_style_fill_save): Use renamed version of
+	above functions.
+
+2003-09-05  Jon K Hellan  <hellan at acm.org>
+
+	* utils/go-color.[ch] (go_color_from_str, go_color_as_str):
+	New. Convert color to/from string.
+
+	* graph/gog-style.c (str_as_fill_style, fill_style_as_str):
+	New. Convert fill style to/from string.
+	(str_as_pattern, pattern_as_str): New. Convert pattern to/from
+	string.
+	(str_as_grad_dir, grad_dir_as_str): New. Convert gradient
+	direction to/from string.
+	(str_as_marker_shape, marker_shape_as_str): New. Convert marker
+	shape to/from string.
+	(gog_style_line_load, gog_style_line_save): New. Load/save a
+	line/outline style.
+	(gog_style_gradient_load, gog_style_gradient_save): New. Load/save
+	a gradient.
+	(gog_style_fill_load, gog_style_fill_save): New. Load/save a fill.
+	(gog_style_marker_load, gog_style_marker_save): New. Load/save a
+	marker.
+	(gog_style_font_load, gog_style_font_save): New. Load/save a font.
+	(gog_style_persist_dom_load, gog_style_persist_dom_save):
+	Implement.
+
+	* graph/gog-object-xml.c (gog_object_set_arg_full) : Don't expect
+	GObject type name as entity content.
+	(gog_object_write_property): Don't save GObject type name as
+	entity content.
+
+2003-09-04  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_update) : don't
+	  force 0.  That will be handled at the axis level.
+
+	* graph/gog-style.c : move the marker editor back into the main style
+	  editor rather than being distinct.
+
+2003-09-03  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* utils/go-marker.[ch] : new.
+	* graph/gog-pixbuf-renderer.c : add draw_marker method.
+	* graph/gog-gnome-print-renderer.c : idem.
+	* graph/gog-renderer.c : idem.
+	* graph/gog-style-prefs.glade : update marker editor
+	* graph/gog-style.c (cb_marker_changed) : new.
+	(marker_init) : use editor in gog-marker.c.
+	(gog_style_pref_state_free) : free marker pointer.
+	(gog_style_assign) : handle marker pointer.
+	(gog_style_finalize) : idem.
+	(gog_style_init) : init marker pointer.
+	* graph/gog-theme.c (map_area_series_solid_default)
+	(map_area_series_solid_guppi) : initialize marker properties.
+	* graph/plugins/plot_barcol/gog-line.c
+	(gog_line_view_render) : draw markers.
+
+2003-09-03  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-legend.c (cb_render_elements) : clip before things
+	  overflow.
+
+2003-09-03  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.h : add GogStyle::font::color
+	* graph/gog-style.c (gog_style_init) : init font::color
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_text) :
+	  composite manually cause libart was dog slow when using the approach
+	  in librsvg.
+
+2003-09-03  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-label.c (gog_label_view_size_request) : take outline
+	  into account.
+
+	* graph/gog-legend.c (gog_legend_view_render) : don't over draw space
+	  allocated to children, and actually measure the text.
+	(gog_legend_editor) : add.
+
+	* graph/gog-view.c (gog_view_size_child_request) : new utility to
+	  build up a size requestfor the children around the request for the
+	  parent.
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_plot_foreach_elem) :
+	  handle case with no series.
+
+2003-09-03  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-object-xml.c (gog_object_set_arg_full): Plug leak.
+
+2003-09-01  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (make_layout) : kludge a patch for font
+	  scaling.
+
+2003-09-01  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_xy/gog-xy.c : An initial skeleton, because I
+	  accidentally deleted the last one.  Useless.
+
+	* graph/gog-style.c (gog_object_get_style) : fix leak.
+	(fill_init) : do not assign the style as part of the initialization.
+ 
+	* graph/gog-renderer-pixbuf.c (make_layout) : another failing attempt
+	  to get font sizes to change.
+
+	* graph/gog-renderer-gnome-print.c : An initial pass at font support.
+	  Untested, and unlikely to work out of the box.
+
+2003-08-29  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-axis.c (gog_axis_class_init): Plug leak.
+
+	* utils/go-pattern.c (go_pattern_selector): Free the pixel data.
+
+	* graph/gog-guru.c (graph_typeselect_minor): Handle ->plot
+	changing underneath us.
+
+	* utils/go-font.c (go_font_init): Since the key is a pango font
+	description, not a go-font, use proper hash and equal functions.
+
+2003-08-29  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_view_render) : go
+	  clockwise to avoid having ArtRender think the figure is inside out.
+
+2003-08-28  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer-impl.h : Add font_removed.
+
+2003-08-28  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_plot_class_init) : pie
+	  series need outlines and fills.
+
+	* graph/gog-theme.c (gog_theme_element_free) : new.
+	(gog_theme_element_hash) : ditto.
+	(gog_theme_element_eq) : ditto.
+	(gog_themes_shutdown) : new to avoid leaking.
+	(gog_theme_finalize) : handle lookup by role.
+	(gog_theme_init) : ditto.
+	(gog_theme_add_element) : ditto.
+	(gog_theme_init_style) : rework to clarify precedence.
+	    1) <parent_type>::<role>
+	    2) ::<role>
+	    3) object_type
+
+	* graph/gog-style.c (gog_style_assign) : Use GOFont.
+	(gog_style_finalize) : ditto.
+	(gog_style_init) : ditto.
+	(gog_style_set_font) : new,
+
+	* goffice.c (libgoffice_init) : init fonts.
+	(libgoffice_shutdown) : shutdown fonts and themes.
+
+	* utils/go-font.c : new utility class to ref count fonts.
+
+2003-08-28  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-gradient.c (go_gradient_selector): Clean a bit.
+
+	* graph/gog-style.c (gog_style_pref_state_free): Don't unref NULL
+	images.
+	(gog_style_set_image_preview): Handle setting the same picture,
+	just in case.
+
+2003-08-27  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style.c (gog_style_set_image_preview): add 
+	  argument to gnm_pixbuf_intelligent_scale call
+	(cb_image_file_select) use preview_file_selection_set_filename
+	  rather than gtk_file_selection_set_filename
+	(fill_image_init): set minimum preview size
+
+2003-08-27  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style.c (gog_style_set_image_preview): new
+	(cb_image_file_select): use gtk_image_set_from_pixbuf
+	(fill_image_init): initialize state->fill.image.image
+	(cb_fill_type_changed): store original size image
+	(gog_style_pref_state_free): free state->fill.image.image
+	* graph/gog-style-prefs.glade: add size label to image-fill 
+	  preview
+
+2003-08-26  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style.c (cb_image_file_select): use 
+	  preview_file_selection_new and not
+	  gnumeric_dialog_image_file_selection
+	
+2003-08-26  Morten Welinder  <terra at gnome.org>
+
+	* utils/go-pattern.c (go_pattern_selector): Get the args to
+	gdk_pixbuf_new right.  Plug leak.
+
+	* utils/go-gradient.c (go_gradient_setup): New function.
+	(go_gradient_selector): Use go_gradient_setup.  Make return type
+	sane.
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_polygon):
+	Use go_gradient_setup.
+
+	* graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_polygon): Use go_gradient_setup.
+
+2003-08-25  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style.c (cb_image_file_select): use
+	  gnumeric_dialog_image_file_selection
+	
+2003-08-25  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_polygon) : remove double
+	  gonme_print_grestore
+
+2003-08-24  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (cb_graph_guru_clicked) :clear the tmp value that
+	  was refing the graph.
+
+2003-08-24  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-guru.c (gog_guru): store and ref gclosure
+	(graph_guru_state_destroy): unref closure
+	(cb_graph_guru_clicked): invoke gclosure
+	* graph/gog-guru.h (gog_guru): use gclosure
+
+2003-08-23  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_update) : doh!
+
+2003-08-22  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-object.c (gog_role_cmp) : use the new priority field to
+	  be smarter.
+	(gog_object_dup) : Use the new go_data_dup.
+	(gog_object_set_parent) : use gog_role_cmp instead of just using the
+	  position.
+
+2003-08-21  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (gog_guru) : use gog_graph_dup now that styles
+	  work.
+
+	* graph/gog-object.c (gog_object_dup) : doh! dst = src works better
+	  than src = src.
+
+2003-08-21  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.1.20
+
+2003-08-21  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-object-xml.c (gog_object_new_from_xml) : don't mark newly
+	  reconstituted objects as explititly typed unless they really were.
+	(gog_dataset_save) : patch leak.
+
+	* graph/gog-object.c (gog_object_dup) : new.
+
+2003-08-21  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-axis-prefs.glade : Remove the ticks menu.  I'll handle it
+	  via roles later.
+
+	* graph/gog-axis.c (gog_axis_editor) : we're only interested in the
+	  line characteristics.
+
+	* utils/go-units.h : fix arg names
+
+	* graph/gog-chart.c (gog_chart_class_init) : add padding_pts.
+	* graph/gog-graph.c (gog_graph_class_init) : typo.
+
+2003-08-19  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer.c (gog_renderer_draw_rectangle) : handle outlines
+	  properly.
+
+2003-08-14  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style-prefs.glade: shuffle fill-image widgets again
+
+2003-08-14  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-style.c (cb_fill_type_changed): Don't unref the old
+	image if it is NULL.
+
+2003-08-14  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-chart.c (role_plot_post_add) : don't set the axis twice
+	  for the first plot.  Add a post condition to keep us honest.
+
+2003-08-12  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c (fill_image_init) : store the filename
+	(cb_image_file_select) : ditto.
+	(cb_fill_type_changed) : use it here to support restoring the image
+	  filaname even though all we have is the image.
+
+2003-08-13  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style-prefs.glade: shuffle fill-image widgets
+	* graph/gog-guru.glade: increase default size and increase
+	  default style portion
+
+2003-08-13  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style-prefs.glade: align fill-image widgets
+
+2003-08-12  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style-prefs.glade: improve spacing, add scoll window
+
+2003-08-12  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-style-prefs.glade: add some missed label names
+
+2003-08-10  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c : re-enable image handling and cache the pixbuf.
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_polygon) : The
+	  style stores the pixbuf now, no need to reload the damn thing from
+	  disk every time we use it.
+
+	* graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_polygon) : Use a convenience routine
+	(print_image) : new convenience routine.
+
+2003-08-11  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/plugins/plot_pie/gog-pie-prefs.c (cb_center_size_changed):
+	  scale between display and storage
+	(gog_ring_plot_pref): ditto
+	* graph/plugins/plot_pie/gog-ring-prefs.glade: center_size spin
+	  button should range from 0 to 95 in steps of 5
+
+2003-08-09  Andreas J. Guelzow  <aguelzow at taliesin.ca>
+
+	* graph/gog-guru.c: add correct helpfile address
+
+2003-08-01  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_finalize): Plug
+	leak.
+
+	* graph/gog-style.c (gog_style_class_init): Plug leaks.
+
+2003-08-01  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_path) : use
+	  the line characteristics, not outline.
+	* graph/gog-renderer-gnome-print.c
+	(gog_renderer_gnome_print_draw_path) : ditto.
+
+	* graph/gog-theme.c (gog_themes_init) : set the line width.
+	(map_area_series_solid_default) : line colour seems to start at an
+	  offset to area colours.
+	(map_area_series_solid_guppi) : set the line colour too.
+
+2003-07-31  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-series.c (gog_series_set_index) : always init the style,
+	  don't be cheap.  When loading index is initialized to 0, so the
+	  first series would not get styled because it did not look like
+	  anything changed.
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_view_render) : fix
+	  interpretation of the center_size parameter.  Thanks tino.
+
+	* graph/gog-plot.c (gog_plot_init) : copy the plot descriptor from the
+	  class to the plot here for use cases that use g_object_new.
+	* graph/gog-plot-engine.c (gog_plot_new_by_name) : rather than here
+	  where it gets missed.
+
+	* graph/gog-legend.c (gog_legend_parent_changed) : catch object name
+	  changes in the chart and trigger an update.
+
+	* graph/gog-graph.c (cb_graph_idle) : clear the handler before doing
+	  the update so that a handler can queue an update for another object.
+
+2003-07-30  Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+
+	* graph/plugins/plot_barcol/gog-line.[ch]: new. Line and Area support.
+	* graph/plugins/plot_barcol/gog-1.d.[ch]: new. Defines base class for
+	gog-line and gog-barcol.
+	* graph/plugins/plot_barcol/plot-types.xml.in: add support for are and
+	line plots.
+	* graph/plugins/plot_barcol/plugin.xml.in: add are and line engines.
+
+2003-07-19  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-chart.c (gog_chart_get_axis) : new.
+
+2003-07-19  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/plot-types.xml.in : for stacked and
+	  percentage set the overlap to 100.
+
+2003-07-17  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_barcol/gog-barcol.c : Request XY axis set.
+
+	* graph/gog-data-set.c (gog_dataset_set_dim_internal) : always fire an
+	  update.
+
+2003-07-09  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-object-xml.h : fix guards
+
+2003-07-07  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-legend.c (gog_legend_parent_changed) : chain upwards.
+	* graph/gog-series.c (gog_series_parent_changed) : ditto.
+
+2003-07-06  Andreas J. Guelzow <aguelzow at taliesin.ca>
+
+	* graph/plugins/plot_pie/gog-ring-prefs.glade: colour -> color
+
+2003-07-06  Andreas J. Guelzow <aguelzow at taliesin.ca>
+
+	* graph/plugins/plot_pie/gog-pie-prefs.glade: colour -> color
+
+2003-07-03  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-style.c (init_solid_page, init_gradient_page) 
+	(init_gradient_page, gog_style_editor): Turn off color combo
+	tearoff behaviour in dialogs.
+
+2003-07-02  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer.c (gog_renderer_init) : tweak the default size to
+	  produce a better proportion.
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_view_render) : some minor
+	  cleanup.
+
+	* graph/plugins/plot_pie/gog-pie-prefs.glade : fix units of separation
+	  spinner.
+
+2003-06-29  Jody Goldberg <jody at gnome.org>
+
+	For Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+	* graph/plugins/plot_pie/gog-pie.c : Handle rings
+
+2003-06-27  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-plot.c (gog_plot_set_property) : don't allow setting
+	  vary_style_by_element if the plot does not permit it in the current
+	  state.
+	(gog_plot_get_property) : be anal.
+
+	* graph/plugins/plot_barcol/gog-barcol.c
+	(gog_barcol_supports_vary_style_by_element) : new.
+
+2003-06-27  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-plot-impl.h : Add GogPlotClass::supports_vary_by_element
+
+2003-06-26  Morten Welinder  <terra at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_polygon):
+	Fix gradients.
+
+2003-06-25  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-plot-engine.c (gog_plot_type_service_finalize) : still
+	  incomplete, but the lists definitely need to be freed.
+
+2003-06-25  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-data-allocator.c (gog_dataset_get_type) : fix
+	  cut-n-paste-o.
+
+2003-06-25 Jean Brefort <jean.brefort at ac-dijon.fr>
+
+	* graph/gog-renderer-gnome-print.c: use alpha channel when
+	  printing gradients
+
+2003-06-20    Jean Brefort <jean.brefort at ac-dijon.fr>
+
+	* graph/gog-renderer-gnome-print.c (gog_renderer_gnome_print_draw_polygon):
+	  unref the pixmaps
+
+2003-06-22  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_plot_set_property) : vary
+	  style by element handled in plot now.
+	(gog_pie_plot_get_property) : ditto.
+	(gog_pie_plot_cardinality) : deleted.
+	(gog_pie_plot_foreach_elem) : doh!  USe the label we just calculated.
+	(gog_pie_view_render) : implement general extracted slices.
+
+	* graph/gog-theme.c (gog_theme_get_name) : new util.
+
+	* graph/gog-style.c : Implement the hooks for serialization but have
+	  not actually written them yet.
+
+	* graph/gog-series.c (gog_series_editor) : add a notebook wrapper to
+	  allow changing style and data.
+	(gog_series_init) : set GogObject::use_parent_as_proxy flag.
+	(gog_series_dataset_dims) new.
+
+	* graph/gog-plot.c (gog_plot_set_property) : handle the
+	  'vary_style_by_element' at this level.
+	(gog_plot_get_cardinality) : ditto.
+
+	* graph/gog-object.c (gog_object_emit_changed) : Add
+	  'use_parent_as_proxy' utility to make life easier for things like
+	  series that will not have individual views.  This will fire a
+	  changed signal from their plots.
+
+	* graph/gog-legend.c (gog_legend_parent_changed) : new.  ensure we get
+	  updated when chart cardinality changes.
+	(gog_legend_update) : new.
+
+	* graph/gog-label.c (gog_label_editor) : fix.
+	(gog_label_class_init) : fix.
+	(gog_label_dims) : added to handle the extension to dataset interface.
+
+	* graph/gog-guru.glade : remove frame wrapping the prop notebook.
+
+	* graph/gog-guru.c (prop_notebook_set_current_page) : new util.
+	  to cleanup the handling of prop pages.  Only show the border if the
+	  prop page is not a notebook.  This keeps the layout visually
+	  similar in both cases.
+	(cb_select_prop_page) : use it here.
+	(cb_attr_tree_selection_change) : and here.
+	(graph_guru_type_selector_new) : remove the useless notebook wrapping
+	  the type selector.  It gives us more space and forces an initial
+	  selection.
+
+	* graph/gog-graph.c (gog_graph_set_property) : add a 'theme-name'
+	  property to facilitate serialization.
+
+	* graph/gog-data-allocator.c (gog_dataset_dims) : extension to the
+	  dataset interface to facilitate serialization.
+
+	* graph/gog-chart.c (gog_chart_get_property) : new.  Needed a way to
+	  signal that the cardinality had changed, and a read only property
+	  with a notify handler seemed cleaner than a stand alone signal.
+	  Looking back at that decision, it seems ugly.  Might revisit this
+	  later.
+
+	* graph/gog-axis.c : hook up the dataset interface to prepare for
+	 serializing all the flags.
+
+	* graph/go-data-impl.h (GOData) : extend interface to require a
+	  'from_str' operation to allow serialization to xml.
+	* graph/go-data.c (go_data_from_str) : wrapper.
+
+	* graph/Makefile.am : Add gog-object-xml.[ch]
+
+2003-06-14    Jean Brefort <jean.brefort at ac-dijon.fr>
+
+	* graph/gog-style.c (gog_style_editor): move a bad placed g_signal_connect
+	* graph/gog-style.c (gog_style_copy): duplicate filename if useful
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_polygon):
+	  added missing white spaces (purely cosmetic)
+	* graph/gog-renderer-pixbuf.c (go_color_to_artpix): removed static
+	* graph/gog-renderer-gnome-print.c (gog_renderer_gnome_print_draw_polygon):
+	  added image and gradient support
+
+2003-06-13  Jon K Hellan  <hellan at acm.org>
+
+	* graph/gog-style.c (gog_style_editor) : Use the new 
+	color_combo_set_instant_apply flag.
+
+2003-06-12  Jody Goldberg <jody at gnome.org>
+
+	* graph/goffice-graph.h : remove POSITION_FILL
+	  It does no good to have random thought experiments floating around.
+
+2003-06-12  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (graph_guru_type_selector_new) : add an accelerator
+	  for the plot family selector.
+
+2003-06-10  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-view.c (gog_view_size_allocate) : Use the new debug macro.
+	(cb_model_changed) : ditto.
+	* graph/gog-object.c (gog_object_update) : and here.
+
+	* graph/goffice-graph.h : Add trivial d() debugging macro so that
+	  normal folk don't get deluged with debug spew.
+	* graph/lib.c : store goffice_graph_debug_level here.
+
+	* graph/gog-renderer-gnome-print.c * (gog_renderer_gnome_print_draw_text) :
+	  implement trivial version.  Need to decide how to handle fonts.
+
+2003-06-10  Jody Goldberg <jody at gnome.org>
+
+	* graph/plugins/plot_pie/gog-pie.c (gog_pie_series_update) :
+	  handle series before they are valid.
+	* graph/plugins/plot_barcol/gog-barcol.c (gog_barcol_series_update) : ditto.
+
+	* graph/gog-object.c (gog_object_set_parent) : call the role's
+	  post_add routine then objects parent_changed before signaling its
+	  addition.
+	(gog_object_add_by_role) : set_parent calls the role functions, not us.
+
+2003-06-07    Jean Brefort <jean.brefort at ac-dijon.fr>
+
+	* graph/gog-style.c (gog_style_editor) :
+	* graph/gog-style.h (struct _GogStyle) :
+	* graph/gog-style-prefs.glade :
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_draw_polygon) : Start work on image
+
+2003-06-07  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.1.19
+
+2003-06-07  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.1.18
+
+2003-06-07  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-view.c (gog_view_queue_resize) : invalidate the allocation
+	  too if there is no parent.
+
+2003-06-06  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-chart.c (gog_chart_set_position) : simplify.
+	* graph/gog-graph.c (gog_graph_validate_chart_layout) : new.
+
+	* graph/gog-guru.c (cb_sample_pressed) : set the zoom here.
+	(cb_sample_released) : and unset it here so that the icons don't get
+	  shrunk.
+
+2003-06-04  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* graph/gog-style.h: Fixed include of command-context.h to make it work
+	for builds outside the source dir.
+
+2003-06-04  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-object.c (gog_object_generate_name) : return NULL, not FALSE
+
+2003-06-03  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* graph/gog-guru.h: Fixed include of command-context.h to make it work
+	for builds outside the source dir.
+
+2003-06-02  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-legend.c (cb_render_elements) : quick and dirty draw the
+	  text.  Still lots of work needed to measure things properly and do a
+	  more dynamic layout.
+
+	* graph/gog-guru.c (cb_typesel_sample_plot_resize) : use the canvas zoom
+	(cb_sample_plot_resize) : ditto.
+	(graph_guru_init_format_page) : ditto.
+	(graph_guru_type_selector_new) : ditto.
+
+	* graph/gog-renderer-pixbuf.c (make_layout) : new.
+	(gog_renderer_pixbuf_draw_text) : new. simple handler no rotation yet.
+	(gog_renderer_pixbuf_measure_text) : new.
+	(gog_art_renderer_new) : new utility.
+	(gog_renderer_pixbuf_draw_polygon) : used here.
+
+	* graph/gog-control-foocanvas.c (gog_control_foocanvas_draw) : another
+	  speed up by using regions rather tha nthe bounding rect of the expose.
+	  Thanks to AlexL for pointing out that this will help us when
+	  multiple exposes are compressed into 1 event and we do better to
+	  clip against the distinct sub regions, than the bounding box of all
+	  of them.
+	(gog_control_foocanvas_update) : make life easier and pass the zoom to
+	  the renderer.
+
+2003-06-02  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-style.c : minor warning suppression and format style
+	  tidying.
+
+2003-06-01  Jean Brefort <jean.brefort at ac-dijon.fr>
+	* graph/gog-style.h : new gradient styles,
+		fill type accessible only if GOG_STYLE_FILL is used
+	* graph/gog-style.c : Enhanced gradient selector
+	* graph/gog-renderer-pixbuf.c : Support for new gradient types
+	* graph/gog-themes.c : Top to bottom gradient in Guppi theme
+
+2003-05-31  Jody Goldberg <jody at gnome.org>
+
+	For Jean Brefort <jean.brefort at ac-dijon.fr>
+	* graph/gog-style.c (gog_style_editor) : Start work on gradient
+	  selector.
+
+2003-05-31  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_update) : fix
+	  canvas warnings about tryingto queue an update from an update
+	  handler.
+
+2003-05-30  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-theme.c (gog_themes_init) : make default them fill legend
+	  with white.
+
+	* graph/plugins/plot_barcol/gog-barcol.c (barcol_draw_rect) : smooth
+	  the anti-aliasing fuzziness in the libart backend for hairline
+	  outlines.
+
+	* graph/gog-chart.c (gog_chart_view_size_allocate) : support
+	  positions of NE, NW, SE, SW so that we can handle XL's 'corner'
+	  legends.
+
+	* graph/gog-control-foocanvas.c (gog_control_foocanvas_draw) : big
+	  speed win.  Only draw the piece of the chart that was exposed.
+
+	* graph/gog-plot.c (gog_plot_request_cardinality_update) : we may add
+	  a series before assigning to a chart.
+
+	* graph/gog-theme.c (gog_themes_init) : default and guppi themes were
+	  inverted for legends.
+
+	* graph/gog-chart.c (gog_chart_class_init) : default to centering
+	  legends.
+
+2003-05-30  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-chart.c (gog_chart_view_render) : re-enable.
+
+	* graph/gog-renderer-pixbuf.c (gog_renderer_pixbuf_update) :
+	  When the scale changes size requests are invalidated.
+
+	* graph/gog-renderer.c (gog_renderer_invalidate_size_requests) : new.
+	* graph/gog-view.c (gog_view_invalidate_sizes) : new.
+
+	* graph/gog-legend.c (gog_legend_view_render) : typo.  pad is in Y
+	  coordinates.
+
+	* graph/gog-plot.c (role_series_post_add) : adding a series changes
+	  the cardinality.
+	(role_series_pre_remove) : ditto.
+	(gog_plot_update) : delete.  Already handled at the chart level.
+	(gog_plot_init) : Make sure cardinailty is initially valid so that we
+	  queue an an update request as necessary when it really
+	  does change.
+
+	* graph/gog-chart.c (gog_chart_view_size_allocate) : support the
+	  alignment flags and enforce clipping.
+	(role_plot_post_add) : adding a plot changes the cardinality.
+	(role_plot_pre_remove) : ditto.
+	(gog_chart_init) : Make sure cardinailty is initially valid so that we
+	  queue an an update request as necessary when it really
+	  does change.
+
+2003-05-29  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-renderer.c (gog_renderer_outline_size) : keep widths >= 1
+
+	* graph/plugins/plot_barcol/gog-barcol.c (barcol_draw_rect) : clip to
+	  integer sizes to decrease amount of bleed through due to antialiasing.
+
+2003-05-27  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-legend.c : make the swatch sizes properties.
+
+	* graph/gog-guru.c (cb_typesel_sample_plot_resize) : fix sizing.
+	(cb_sample_plot_resize) : ditto.
+
+	* graph/gog-renderer.c (gog_renderer_set_property) : doh!
+	  set the values if they are _different_ not the same.
+
+2003-05-26  Jody Goldberg <jody at gnome.org>
+
+	* graph/gog-guru.c (graph_guru_set_page) : we can't run the
+	  typeselector without a chart selected.
+	(cb_graph_guru_add_plot) : the child_added handler already populates
+	  things.
+	(cb_find_child_added) : It may happen that something else will add an
+	  item while we're editing, and the change of focus may not be
+	  welcome,  However, it is far more likely that we just added it.
+
+	* graph/gog-object.c (gog_object_is_deletable) : don't let the guru
+	  delete the top level graph.
+
+	* graph/gog-guru.glade : Add border to the menu bar to align it with
+	  the scrolled window.
+	Add a 'Precedence' menu.
+
+2003-05-25  Jody Goldberg <jody at gnome.org>
+
+	The code is in CVS time to start keeping a changelog.

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/INSTALL
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/INSTALL	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/INSTALL	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,229 @@
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/MAINTAINERS
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/MAINTAINERS	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/MAINTAINERS	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2 @@
+Email: jody at gnome.org
+Email: terra at gnome.org

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,16 @@
+# Makefile.am for goffice
+
+SUBDIRS = goffice tests pixmaps plugins po
+
+EXTRA_DIST = README NEWS BUGS MAINTAINERS AUTHORS \
+	goffice.mk \
+	goffice-plugins.mk \
+	intltool-extract.in	\
+	intltool-update.in	\
+	intltool-merge.in
+DISTCLEANFILES = intltool-extract intltool-merge intltool-update
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libgoffice-1.pc
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,670 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# Makefile.am for goffice
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+SUBDIRS = goffice tests pixmaps plugins po
+
+EXTRA_DIST = README NEWS BUGS MAINTAINERS AUTHORS \
+	goffice.mk \
+	goffice-plugins.mk \
+	intltool-extract.in	\
+	intltool-update.in	\
+	intltool-merge.in
+
+DISTCLEANFILES = intltool-extract intltool-merge intltool-update
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libgoffice-1.pc
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES = libgoffice-1.pc
+DIST_SOURCES =
+DATA = $(pkgconfig_DATA)
+
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \
+	$(top_srcdir)/goffice.mk AUTHORS COPYING ChangeLog INSTALL \
+	Makefile.am NEWS aclocal.m4 config.guess config.sub configure \
+	configure.in depcomp install-sh libgoffice-1.pc.in ltmain.sh \
+	missing mkinstalldirs
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
+
+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+	cd $(srcdir) && $(AUTOCONF)
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in 
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+libgoffice-1.pc: $(top_builddir)/config.status libgoffice-1.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+install-pkgconfigDATA: $(pkgconfig_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
+	@list='$(pkgconfig_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f; \
+	done
+
+uninstall-pkgconfigDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pkgconfig_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  rm -f $(DESTDIR)$(pkgconfigdir)/$$f; \
+	done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	else \
+	  include_option=--include; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = .
+distdir = $(PACKAGE)-$(VERSION)
+
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkinstalldirs) $(distdir)/. $(distdir)/po
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	$(am__remove_distdir)
+	GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
+	  && rm -f $(distdir).tar.gz \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@echo "$(distdir).tar.gz is ready for distribution" | \
+	  sed 'h;s/./=/g;p;x;p;x'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-pkgconfigDATA
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-recursive ctags \
+	ctags-recursive dist dist-all dist-bzip2 dist-gzip distcheck \
+	distclean distclean-generic distclean-libtool \
+	distclean-recursive distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am dvi-recursive info info-am \
+	info-recursive install install-am install-data install-data-am \
+	install-data-recursive install-exec install-exec-am \
+	install-exec-recursive install-info install-info-am \
+	install-info-recursive install-man install-pkgconfigDATA \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-pkgconfigDATA \
+	uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/NEWS
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/NEWS	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/NEWS	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,101 @@
+goffice 0.0.4:
+
+Emmanuel Pacaud:
+	* Fix polar plot clipping.
+	* Fix line/area/barcol data position.
+	* Let user change bounds for discrete axes [#309468].
+
+Jean Brefort:
+	* Box-plots use raw data [#308136].
+
+Jody:
+	* GOFormat now matches against all tuples.
+	* Add GORotationSel from Gnumeric.
+	* fixed number of digits for denominator regexp [#144112]
+
+--------------------------------------------------------------------------
+goffice 0.0.3:
+
+Emmanuel Pacaud:
+	* Add support for manual position/size of graph objects.
+	* Add rotated text support.
+	* Add optional cairo renderer.
+	* Fix swatch position in legends.
+	* Sample graph in guru has the same aspect ratio than the edited graph
+	  [#150458].
+	* Displays Y axis labels vertically by default [#301582].
+	* Add pattern support for SVG output [#310320].
+
+Jean Brefort:
+	* Add series lines in bars and columns plots.
+	* Add drop lines in lines and xy plots.
+	* Add lines to min/max plots and dropbars.
+
+Morten:
+	* Fix problem with currency formats and problem with Euro [#305313].
+	* Support fd://1 syntax for go_file_create.
+	* Fix ABR (or worse) for formats ending in "[$...]".
+
+--------------------------------------------------------------------------
+goffice 0.0.2:
+
+Emmanuel Pacaud:
+	* Make compass position and alignment of graph object persistent and
+	add a GUI for these properties [#124322].
+	* Fix some libglade warnings [#305010].
+	* Fix contour plots axes.
+	
+Ivan, Y.C. Wong:
+	* Fix encoding bug when open file with non-ascii name in shell.
+	* Fix Mime Type detection on Win32 [#304074].
+
+Jean Brefort:
+	* Add linear regressions in scatter plots.
+	* Fix shotcut in format selector [#305635].
+	* Add MinMax and DropBar plots.
+	* Fixed various concerns in contour plots.
+
+J.H.M. Dassen (Ray):
+	* Ensure at link time that the shared objects, both the library and
+	  the plugins, contain complete dependency information for all
+	  symbols they use from elsewhere.
+
+Jody:
+	* Fix foocanvas's show/hide item for widgets.
+	* Fix the format selector preview.
+	* Improve selection of a default plot style.
+
+Morten:
+	* Fix theme bug.  [#303707]
+	* Fix insert-image criticals.  [#305009]
+	
+--------------------------------------------------------------------------
+goffice 0.0.1
+
+Emmanuel Pacaud:
+	* Add support for polar plots.
+	* Add multiple axes support for xy, line, barcol, bubble plots.
+	* Fix axis rendering order for contour, area and radar plots.
+	* avoid use of setlocale in svg renderer. [#172726]
+	* Add radar axis labels [#152695]
+	* Fix crash in print preview with log plots. [#170547]
+	* Fix crahs when deleting a serie. [#166403]
+	* Fix transparency in pixbuf renderer. [159368]
+
+Jean Brefort
+	* Fixed opacity problem in color selector (#135434)
+
+Jody:
+	* Split from gnumeric
+
+Ivan Wong:
+        * Become more robust when reading .hhmap files and finding help
+        topics on Win32.
+
+Morten:
+	* Fix various old number rendering bugs.  [#170000]
+	* Update to PCRE 5.0
+	* Give GOComboBox a themable add-tearoffs style.
+	* Fix icon sizes in color action combos.  [#302880]
+
+--------------------------------------------------------------------------

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/README
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/README	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/README	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+GOffice -- A glib/gtk set of document centric objects and utilities
+Jody Goldberg <jody at gnome.org>
+
+There are common operations for document centric applications that are
+conceptually simple, but complex to implement fully.
+    - plugins
+    - load/save documents
+    - undo/redo
+
+To report goffice bugs, please visit bugzilla.gnome.org.
+
+goffice is licensed under the terms of the GNU GPL included in the
+file COPYING.
+
+Requirements
+------------
+
+You need:				Debian package name
+	glib		>= 2.6.0	libglib2.0-dev
+	gtk+		>= 2.6.0	libgtk2.0-dev
+	pango		>= 1.8.1	libpango1.0-dev
+	libgnomeprint	>= 2.8.2	libgnomeprint2.2-dev
+	libgsf		>= 1.12.2	libgsf-1-dev
+	libglade	>= 2.3.6	libglade2-dev
+	gnome-xml   	>= 2.4.12	libxml2-dev
+	libart   	>= 2.3.11	libart-2.0-dev
+	NOTE: gnome-xml is also known as libxml
+
+Mailing lists
+-------------
+
+   There is a mailing list used to discuss Gnumeric, to subscribe
+send a mail to:
+
+	gnumeric-list-request at gnome.org
+
+   And in the body of the message write "subscribe"
+
+   An archive of the mailing lists is available in:
+
+	http://www.gnome.org/mailing-lists/archives/gnumeric-list/

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/aclocal.m4
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/aclocal.m4	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/aclocal.m4	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,7683 @@
+# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 10
+
+AC_PREREQ([2.54])
+
+# Autoconf 2.50 wants to disallow AM_ names.  We explicitly allow
+# the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG(AMTAR, tar)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+	 [AM_AUTOMAKE_VERSION([1.7.9])])
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+
+# Copyright 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+#  -*- Autoconf -*-
+
+
+# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+# Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_AUX_DIR_EXPAND], [
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# serial 5						-*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
+
+# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+	s/\\\\$//
+	p
+	n
+	/\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Check to see how 'make' treats includes.	-*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# AM_CONDITIONAL                                              -*- Autoconf -*-
+
+# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 5
+
+AC_PREREQ(2.52)
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.])
+fi])])
+
+# Add --enable-maintainer-mode option to configure.
+# From Jim Meyering
+
+# Copyright 1996, 1998, 2000, 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode is disabled by default
+  AC_ARG_ENABLE(maintainer-mode,
+[  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer],
+      USE_MAINTAINER_MODE=$enableval,
+      USE_MAINTAINER_MODE=no)
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 47 AC_PROG_LIBTOOL
+# Debian $Rev: 214 $
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+         [],
+         [m4_define([AC_PROVIDE_IFELSE],
+	         [m4_ifdef([AC_PROVIDE_$1],
+		           [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+  ])])
+dnl And a similar setup for Fortran 77 support
+  AC_PROVIDE_IFELSE([AC_PROG_F77],
+    [AC_LIBTOOL_F77],
+    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+      [AC_LIBTOOL_GCJ],
+      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+	[AC_LIBTOOL_GCJ],
+      [ifdef([AC_PROG_GCJ],
+	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([A][M_PROG_GCJ],
+	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([LT_AC_PROG_GCJ],
+	     [define([LT_AC_PROG_GCJ],
+		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+    [AC_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+[$]*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "[$]0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+  ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$5], , :, [$5])
+else
+    ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                          [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+     else
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$4], , :, [$4])
+else
+    ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+ *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_unknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+   ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+    	  lt_cv_dlopen_self_static, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+   test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_AC_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         AC_MSG_RESULT([yes])
+       else
+  AC_MSG_RESULT([no])
+fi
+       ;;
+   *)
+  AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+        [include additional configurations @<:@automatic@:>@])],
+    [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    AC_MSG_WARN([output file `$ofile' does not exist])
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+    else
+      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+    "") ;;
+    *)  AC_MSG_ERROR([invalid tag name: $tagname])
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      AC_MSG_ERROR([tag name \"$tagname\" already exists])
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && test "X$CXX" != "Xno"; then
+	  AC_LIBTOOL_LANG_CXX_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+	  AC_LIBTOOL_LANG_F77_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+	  AC_LIBTOOL_LANG_GCJ_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+	AC_LIBTOOL_LANG_RC_CONFIG
+	;;
+
+      *)
+	AC_MSG_ERROR([Unsupported tag name: $tagname])
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+  fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+    [AC_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+        ;;
+      *)
+	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	*/dev/null*)
+	  lt_cv_path_NM="$tmp_nm -p"
+	  break
+	  ;;
+	*)
+	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	  ;;
+	esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided, it is assumed to be `libltdl'.  LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'.  LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!).  If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, lt_dlinit,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    LTDLINCL=
+  fi
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+#
+# Check for any special shared library compilation flags.
+#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+    ;;
+  esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+  AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+  if echo "$old_CC $old_CFLAGS " | grep "[[ 	]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ 	]]" >/dev/null; then :
+  else
+    AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+    _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+  darwin* | rhapsody*)
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case "$host_os" in
+    rhapsody* | darwin1.[[012]])
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[[012]])
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    output_verbose_link_cmd='echo'
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+    _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+  else
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+  fi
+    ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+  AC_PROG_LD
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    _LT_AC_TAGVAR(archive_cmds, $1)=''
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	else
+	  # We have old collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	fi
+      esac
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      _LT_AC_SYS_LIBPATH_AIX
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	_LT_AC_SYS_LIBPATH_AIX
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	# -bexpall does not export symbols beginning with underscore (_)
+	_LT_AC_TAGVAR(always_export_symbols, $1)=yes
+	# Exported symbols can be pulled into shared objects from archives
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	# This is similar to how AIX traditionally builds it's shared libraries.
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+    # as there is no search path for DLLs.
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+    _LT_AC_TAGVAR(always_export_symbols, $1)=no
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+  ;;
+
+  darwin* | rhapsody*)
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case "$host_os" in
+    rhapsody* | darwin1.[[012]])
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[[012]])
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    lt_int_apple_cc_single_mod=no
+    output_verbose_link_cmd='echo'
+    if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+      lt_int_apple_cc_single_mod=yes
+    fi
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    else
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    fi
+    _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+  else
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+  fi
+    ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      ghcx)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  freebsd-elf*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  freebsd* | kfreebsd*-gnu)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC)
+      # FIXME: insert proper C++ library support
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    aCC)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+        ;;
+      ia64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        ;;
+      *)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+    ia64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    *)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      aCC)
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case "$host_cpu" in
+	    ia64*|hppa*64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC)
+	# SGI C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+	  else
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+	;;
+    esac
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc)
+	# Intel C++
+	with_gnu_ld=yes
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      cxx)
+	# Compaq C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry $objdir/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	 _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  sco*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      lcc)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.2, 5.x and Centerline C++
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx)
+	# Green Hills C++ Compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars.  Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    _LT_AC_TAGVAR(compiler, $1) \
+    _LT_AC_TAGVAR(CC, $1) \
+    _LT_AC_TAGVAR(LD, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+    _LT_AC_TAGVAR(old_archive_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+    _LT_AC_TAGVAR(predep_objects, $1) \
+    _LT_AC_TAGVAR(postdep_objects, $1) \
+    _LT_AC_TAGVAR(predeps, $1) \
+    _LT_AC_TAGVAR(postdeps, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(archive_cmds, $1) \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(postinstall_cmds, $1) \
+    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+    _LT_AC_TAGVAR(no_undefined_flag, $1) \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+    _LT_AC_TAGVAR(hardcode_automatic, $1) \
+    _LT_AC_TAGVAR(module_cmds, $1) \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(exclude_expsyms, $1) \
+    _LT_AC_TAGVAR(include_expsyms, $1); do
+
+    case $var in
+    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(module_cmds, $1) | \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\[$]0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+    ;;
+  esac
+
+ifelse([$1], [],
+  [cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  AC_MSG_NOTICE([creating $ofile])],
+  [cfgfile="$ofile"])
+
+  cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+])
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris* | sysv5*)
+  symcode='[[BDRT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    if test "$host_cpu" != ia64; then
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    case "$host_cpu" in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC)
+	    # KAI C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  icpc)
+	    # Intel C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  cxx)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC)
+	    # Rational C++ 2.4.1
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx)
+	    # Digital/Compaq C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      sco*)
+	case $cc_basename in
+	  CC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.x
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc)
+	    # Lucid
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC)
+	    # NonStop-UX NCC 3.20
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      unixware*)
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      ccc*)
+        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  linux*)
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+  ;;
+  *)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+],[
+  runpath_var=
+  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_AC_TAGVAR(archive_cmds, $1)=
+  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+  _LT_AC_TAGVAR(module_cmds, $1)=
+  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(always_export_symbols, $1)=no
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_AC_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=no
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
+      fi
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
+      runpath_var=LD_RUN_PATH
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_AC_TAGVAR(archive_cmds, $1)=''
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  else
+  	  # We have old collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 _LT_AC_SYS_LIBPATH_AIX
+	 _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      # see comment about different semantics on the GNU ld section
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    bsdi4*)
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      case "$host_os" in
+      rhapsody* | darwin1.[[012]])
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[[012]])
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+      ;;
+
+    dgux*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    openbsd*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	   ;;
+	 *)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+      esac
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[[78]]* | unixware7*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv5*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_AC_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && break
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+SED=$lt_cv_path_SED
+])
+AC_MSG_RESULT([$SED])
+])
+
+
+dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 2 IT_PROG_INTLTOOL
+AC_DEFUN([IT_PROG_INTLTOOL],
+[
+
+if test -n "$1"; then
+    AC_MSG_CHECKING(for intltool >= $1)
+
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
+    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }'  < ${ac_aux_dir}/intltool-update.in`
+    changequote({{,}})
+    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
+    changequote([,])
+
+    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+    else
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool $1 or later.])
+	exit 1
+    fi
+fi
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' 
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+
+AC_SUBST(INTLTOOL_DESKTOP_RULE)
+AC_SUBST(INTLTOOL_DIRECTORY_RULE)
+AC_SUBST(INTLTOOL_KEYS_RULE)
+AC_SUBST(INTLTOOL_PROP_RULE)
+AC_SUBST(INTLTOOL_OAF_RULE)
+AC_SUBST(INTLTOOL_PONG_RULE)
+AC_SUBST(INTLTOOL_SERVER_RULE)
+AC_SUBST(INTLTOOL_SHEET_RULE)
+AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
+AC_SUBST(INTLTOOL_UI_RULE)
+AC_SUBST(INTLTOOL_XAM_RULE)
+AC_SUBST(INTLTOOL_KBD_RULE)
+AC_SUBST(INTLTOOL_XML_RULE)
+AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+AC_SUBST(INTLTOOL_CAVES_RULE)
+AC_SUBST(INTLTOOL_SCHEMAS_RULE)
+AC_SUBST(INTLTOOL_THEME_RULE)
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+AC_SUBST(INTLTOOL_EXTRACT)
+AC_SUBST(INTLTOOL_MERGE)
+AC_SUBST(INTLTOOL_UPDATE)
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+   AC_MSG_ERROR([perl not found; required for intltool])
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   AC_MSG_ERROR([perl 5.x required for intltool])
+fi
+if test "x$2" != "xno-xml"; then
+   AC_MSG_CHECKING([for XML::Parser])
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       AC_MSG_RESULT([ok])
+   else
+       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+   fi
+fi
+
+AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv)
+AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
+AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
+AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
+
+# Remove file type tags (using []) from po/POTFILES.
+
+ifdef([AC_DIVERSION_ICMDS],[
+  AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
+     [mv -f po/POTFILES po/POTFILES.tmp
+      sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
+      rm -f po/POTFILES.tmp
+     ]dnl
+  AC_DIVERT_POP()
+],[
+  ifdef([AC_CONFIG_COMMANDS_PRE],[
+    AC_CONFIG_COMMANDS_PRE([
+       [mv -f po/POTFILES po/POTFILES.tmp
+        sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
+        rm -f po/POTFILES.tmp
+       ]dnl
+    ])
+  ])
+])
+
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+AC_CONFIG_COMMANDS([intltool], [
+
+intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
+               -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
+               -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
+               -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
+               -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
+               -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+  > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+  rm -f intltool-extract.out
+else
+  mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+  > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+  rm -f intltool-merge.out
+else
+  mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+  > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+  rm -f intltool-update.out
+else
+  mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+], INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
+MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
+XGETTEXT='${INTLTOOL_XGETTEXT}')
+
+])
+
+# deprecated macros
+AC_DEFUN([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL($@)])
+
+
+# isc-posix.m4 serial 2 (gettext-0.11.2)
+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# This file is not needed with autoconf-2.53 and newer.  Remove it in 2005.
+
+# This test replaces the one in autoconf.
+# Currently this macro should have the same name as the autoconf macro
+# because gettext's gettext.m4 (distributed in the automake package)
+# still uses it.  Otherwise, the use in gettext.m4 makes autoheader
+# give these diagnostics:
+#   configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
+#   configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
+
+undefine([AC_ISC_POSIX])
+
+AC_DEFUN([AC_ISC_POSIX],
+  [
+    dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
+    AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
+  ]
+)
+
+
+# Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+AC_PREREQ(2.50)
+
+# AM_PROG_LEX
+# -----------
+# Autoconf leaves LEX=: if lex or flex can't be found.  Change that to a
+# "missing" invocation, for better error output.
+AC_DEFUN([AM_PROG_LEX],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
+AC_REQUIRE([AC_PROG_LEX])dnl
+if test "$LEX" = :; then
+  LEX=${am_missing_run}flex
+fi])
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=m4_ifval([$1], [$1], [0.9.0])
+	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		PKG_CONFIG=""
+	fi
+		
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+        PKG_CHECK_EXISTS([$3],
+                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+			 [pkg_failed=yes])
+else
+	pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+if test $pkg_failed = yes; then
+	$1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" 1>&AS_MESSAGE_LOG_FD
+
+	ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the $1_CFLAGS and $1_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.])],
+		[$4])
+elif test $pkg_failed = untried; then
+	ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the $1_CFLAGS and $1_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+		[$4])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+dnl GNOME_COMPILE_WARNINGS
+dnl Turn on many useful compiler warnings
+dnl For now, only works on GCC
+AC_DEFUN([GNOME_COMPILE_WARNINGS],[
+    dnl ******************************
+    dnl More compiler warnings
+    dnl ******************************
+
+    AC_ARG_ENABLE(compile-warnings, 
+                  AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
+                                 [Turn on compiler warnings]),,
+                  [enable_compile_warnings="m4_default([$1],[yes])"])
+
+    warnCFLAGS=
+    if test "x$GCC" != xyes; then
+	enable_compile_warnings=no
+    fi
+
+    warning_flags=
+    realsave_CFLAGS="$CFLAGS"
+
+    case "$enable_compile_warnings" in
+    no)
+	warning_flags=
+	;;
+    minimum)
+	warning_flags="-Wall"
+	;;
+    yes)
+	warning_flags="-Wall -Wmissing-prototypes"
+	;;
+    maximum|error)
+	warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+	CFLAGS="$warning_flags $CFLAGS"
+	for option in -Wno-sign-compare; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		AC_MSG_CHECKING([whether gcc understands $option])
+		AC_TRY_COMPILE([], [],
+			has_option=yes,
+			has_option=no,)
+		CFLAGS="$SAVE_CFLAGS"
+		AC_MSG_RESULT($has_option)
+		if test $has_option = yes; then
+		  warning_flags="$warning_flags $option"
+		fi
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+	if test "$enable_compile_warnings" = "error" ; then
+	    warning_flags="$warning_flags -Werror"
+	fi
+	;;
+    *)
+	AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
+	;;
+    esac
+    CFLAGS="$realsave_CFLAGS"
+    AC_MSG_CHECKING(what warning flags to pass to the C compiler)
+    AC_MSG_RESULT($warning_flags)
+
+    AC_ARG_ENABLE(iso-c,
+                  AC_HELP_STRING([--enable-iso-c],
+                                 [Try to warn if code is not ISO C ]),,
+                  [enable_iso_c=no])
+
+    AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
+    complCFLAGS=
+    if test "x$enable_iso_c" != "xno"; then
+	if test "x$GCC" = "xyes"; then
+	case " $CFLAGS " in
+	    *[\ \	]-ansi[\ \	]*) ;;
+	    *) complCFLAGS="$complCFLAGS -ansi" ;;
+	esac
+	case " $CFLAGS " in
+	    *[\ \	]-pedantic[\ \	]*) ;;
+	    *) complCFLAGS="$complCFLAGS -pedantic" ;;
+	esac
+	fi
+    fi
+    AC_MSG_RESULT($complCFLAGS)
+
+    WARN_CFLAGS="$warning_flags $complCFLAGS"
+    AC_SUBST(WARN_CFLAGS)
+])
+
+dnl For C++, do basically the same thing.
+
+AC_DEFUN([GNOME_CXX_WARNINGS],[
+  AC_ARG_ENABLE(cxx-warnings,
+                AC_HELP_STRING([--enable-cxx-warnings=@<:@no/minimum/yes@:>@]
+                               [Turn on compiler warnings.]),,
+                [enable_cxx_warnings="m4_default([$1],[minimum])"])
+
+  AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
+  warnCXXFLAGS=
+  if test "x$GCC" != xyes; then
+    enable_compile_warnings=no
+  fi
+  if test "x$enable_cxx_warnings" != "xno"; then
+    if test "x$GCC" = "xyes"; then
+      case " $CXXFLAGS " in
+      *[\ \	]-Wall[\ \	]*) ;;
+      *) warnCXXFLAGS="-Wall -Wno-unused" ;;
+      esac
+
+      ## -W is not all that useful.  And it cannot be controlled
+      ## with individual -Wno-xxx flags, unlike -Wall
+      if test "x$enable_cxx_warnings" = "xyes"; then
+	warnCXXFLAGS="$warnCXXFLAGS -Wshadow -Woverloaded-virtual"
+      fi
+    fi
+  fi
+  AC_MSG_RESULT($warnCXXFLAGS)
+
+   AC_ARG_ENABLE(iso-cxx,
+                 AC_HELP_STRING([--enable-iso-cxx],
+                                [Try to warn if code is not ISO C++ ]),,
+                 [enable_iso_cxx=no])
+
+   AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
+   complCXXFLAGS=
+   if test "x$enable_iso_cxx" != "xno"; then
+     if test "x$GCC" = "xyes"; then
+      case " $CXXFLAGS " in
+      *[\ \	]-ansi[\ \	]*) ;;
+      *) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
+      esac
+
+      case " $CXXFLAGS " in
+      *[\ \	]-pedantic[\ \	]*) ;;
+      *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
+      esac
+     fi
+   fi
+  AC_MSG_RESULT($complCXXFLAGS)
+
+  WARN_CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
+  AC_SUBST(WARN_CXXFLAGS)
+])
+
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper at cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl. 
+# Owen Taylor <otaylor at redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor at redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version 
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+#
+# Modified to require ngettext
+# Matthias Clasen <mclasen at redhat.com> 08/06/2004
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't 
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+  [AC_CHECK_HEADERS([locale.h])
+    if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1,
+        [Define if your <locale.h> file defines LC_MESSAGES.])
+    fi
+  fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  /*)
+  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in ifelse([$5], , $PATH, [$5]); do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if [$3]; then
+	ac_cv_path_$1="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+  ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+  dnl NLS is obligatory
+  [USE_NLS=yes
+    AC_SUBST(USE_NLS)
+
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    AC_CHECK_HEADER(libintl.h,
+     [gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+        [AC_TRY_LINK([
+#include <libintl.h>
+],
+         [return !ngettext ("","", 1)],
+	  gt_cv_func_ngettext_libc=yes,
+          gt_cv_func_ngettext_libc=no)
+        ])
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+	      AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+        	[AC_TRY_LINK([
+#include <libintl.h>
+],
+	          [return !dgettext ("","")],
+		  gt_cv_func_dgettext_libc=yes,
+	          gt_cv_func_dgettext_libc=no)
+        	])
+      fi
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        AC_CHECK_FUNCS(bind_textdomain_codeset)
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+	 || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+        
+        AC_CHECK_LIB(intl, bindtextdomain,
+	    [AC_CHECK_LIB(intl, ngettext,
+		    [AC_CHECK_LIB(intl, dgettext,
+			          gt_cv_func_dgettext_libintl=yes)])])
+
+	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+	  AC_MSG_CHECKING([if -liconv is needed to use gettext])
+	  AC_MSG_RESULT([])
+  	  AC_CHECK_LIB(intl, ngettext,
+          	[AC_CHECK_LIB(intl, dcgettext,
+		       [gt_cv_func_dgettext_libintl=yes
+			libintl_extra_libs=-liconv],
+			:,-liconv)],
+		:,-liconv)
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          AC_CHECK_FUNCS(bind_textdomain_codeset)
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+  
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+  
+      if test "$gt_cv_have_gettext" = "yes"; then
+	AC_DEFINE(HAVE_GETTEXT,1,
+	  [Define if the GNU gettext() function is already present or preinstalled.])
+	GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+	if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+	  AC_CHECK_FUNCS(dcgettext)
+	  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+	  GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+	    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+	  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+			 return _nl_msg_cat_cntr],
+	    [CATOBJEXT=.gmo 
+             DATADIRNAME=share],
+	    [case $host in
+	    *-*-solaris*)
+	    dnl On Solaris, if bind_textdomain_codeset is in libc,
+	    dnl GNU format message catalog is always supported,
+            dnl since both are added to the libc all together.
+	    dnl Hence, we'd like to go with DATADIRNAME=share and
+	    dnl and CATOBJEXT=.gmo in this case.
+            AC_CHECK_FUNC(bind_textdomain_codeset,
+	      [CATOBJEXT=.gmo 
+               DATADIRNAME=share],
+	      [CATOBJEXT=.mo
+               DATADIRNAME=lib])
+	    ;;
+	    *)
+	    CATOBJEXT=.mo
+            DATADIRNAME=lib
+	    ;;
+	    esac])
+          LIBS="$glib_save_LIBS"
+	  INSTOBJEXT=.mo
+	else
+	  gt_cv_have_gettext=no
+	fi
+      fi
+    ])
+
+    if test "$gt_cv_have_gettext" = "yes" ; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [always defined to indicate that i18n is enabled])
+    fi
+
+    dnl Test whether we really found GNU xgettext.
+    if test "$XGETTEXT" != ":"; then
+      dnl If it is not GNU xgettext we define it as : so that the
+      dnl Makefiles still can work.
+      if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        AC_MSG_RESULT(
+	  [found xgettext program is not GNU xgettext; ignore it])
+        XGETTEXT=":"
+      fi
+    fi
+
+    # We need to process the po/ directory.
+    POSUB=po
+
+    AC_OUTPUT_COMMANDS(
+      [case "$CONFIG_FILES" in *po/Makefile.in*)
+        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+      esac])
+
+    dnl These rules are solely for the distribution goal.  While doing this
+    dnl we only have to keep exactly one list of the available catalogs
+    dnl in configure.in.
+    for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(CATALOGS)
+    AC_SUBST(CATOBJEXT)
+    AC_SUBST(DATADIRNAME)
+    AC_SUBST(GMOFILES)
+    AC_SUBST(INSTOBJEXT)
+    AC_SUBST(INTLLIBS)
+    AC_SUBST(PO_IN_DATADIR_TRUE)
+    AC_SUBST(PO_IN_DATADIR_FALSE)
+    AC_SUBST(POFILES)
+    AC_SUBST(POSUB)
+  ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation 
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by 
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+  [AC_REQUIRE([AC_PROG_CC])dnl
+   AC_REQUIRE([AC_HEADER_STDC])dnl
+   
+   GLIB_LC_MESSAGES
+   GLIB_WITH_NLS
+
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+ 	   # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
+
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+   dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+   dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+   dnl Try to locate is.
+   MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+   AC_SUBST(MKINSTALLDIRS)
+
+   dnl Generate list of files to be processed by xgettext which will
+   dnl be included in po/Makefile.
+   test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+	< $srcdir/po/POTFILES.in > po/POTFILES
+  ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+if test "x$CATOBJEXT" = "x.mo" ; then
+  localedir=`eval echo "${libdir}/locale"`
+else
+  localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+  [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/config.guess
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/config.guess	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/config.guess	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1466 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-08-03'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    x86:Interix*:[34]*)
+	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+	exit ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#ifdef __INTEL_COMPILER
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/config.guess
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/config.sub
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/config.sub	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/config.sub	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1579 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-07-08'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| ms1 \
+	| msp430 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m32c)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| ms1-* \
+	| msp430-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	m32c-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16c)
+		basic_machine=cr16c-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/config.sub
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/configure
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/configure	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/configure	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,28301 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59 for goffice 0.0.4.
+#
+# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice>.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='goffice'
+PACKAGE_TARNAME='goffice'
+PACKAGE_VERSION='0.0.4'
+PACKAGE_STRING='goffice 0.0.4'
+PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice'
+
+ac_unique_file="goffice/goffice.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot GOFFICE_LIB_VERSION MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL INTLTOOL_ICONV INTLTOOL_MSGFMT INTLTOOL_MSGMERGE INTLTOOL_XGETTEXT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE YACC LEX LEXLIB LEX_OUTPUT_ROOT LN_S EGREP ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ACLOCAL_AMFLAGS PKG_CONFIG ac_pt_PKG_CONFIG CAIRO_CFLAGS CAIRO_LIBS GTK_CFLAGS GTK_LIBS GNOME_CFLAGS GNOME_LIBS WITH_CAIRO_TRUE WITH_CAIRO_FALSE WITH_GTK_TRUE WITH_GTK_FALSE WITH_GNOME_TRUE WITH_GNOME_FALSE GOFFICE_CFLAGS GOFFICE_LIBS RENDER_LIBS WINDRES ac_ct_WINDRES WITH_WIN32_TRUE WITH_WIN32_FALSE GOFFICE_PLUGIN_LDFLAGS GOFFICE_PLUGIN_LIBADD GLIB_GENMARSHAL GDK_PIXBUF_CSOURCE WARN_CFLAGS ALL_LINGUAS GETTEXT_PACKAGE USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO!
 _IN_DATA
DIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS EXTRA_LIBS EXTRA_INCLUDES goffice_datadir goffice_libdir goffice_icondir goffice_localedir goffice_plugindir goffice_gladedir LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+	      localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+ac_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_cv_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_cv_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_env_CAIRO_CFLAGS_set=${CAIRO_CFLAGS+set}
+ac_env_CAIRO_CFLAGS_value=$CAIRO_CFLAGS
+ac_cv_env_CAIRO_CFLAGS_set=${CAIRO_CFLAGS+set}
+ac_cv_env_CAIRO_CFLAGS_value=$CAIRO_CFLAGS
+ac_env_CAIRO_LIBS_set=${CAIRO_LIBS+set}
+ac_env_CAIRO_LIBS_value=$CAIRO_LIBS
+ac_cv_env_CAIRO_LIBS_set=${CAIRO_LIBS+set}
+ac_cv_env_CAIRO_LIBS_value=$CAIRO_LIBS
+ac_env_GTK_CFLAGS_set=${GTK_CFLAGS+set}
+ac_env_GTK_CFLAGS_value=$GTK_CFLAGS
+ac_cv_env_GTK_CFLAGS_set=${GTK_CFLAGS+set}
+ac_cv_env_GTK_CFLAGS_value=$GTK_CFLAGS
+ac_env_GTK_LIBS_set=${GTK_LIBS+set}
+ac_env_GTK_LIBS_value=$GTK_LIBS
+ac_cv_env_GTK_LIBS_set=${GTK_LIBS+set}
+ac_cv_env_GTK_LIBS_value=$GTK_LIBS
+ac_env_GNOME_CFLAGS_set=${GNOME_CFLAGS+set}
+ac_env_GNOME_CFLAGS_value=$GNOME_CFLAGS
+ac_cv_env_GNOME_CFLAGS_set=${GNOME_CFLAGS+set}
+ac_cv_env_GNOME_CFLAGS_value=$GNOME_CFLAGS
+ac_env_GNOME_LIBS_set=${GNOME_LIBS+set}
+ac_env_GNOME_LIBS_value=$GNOME_LIBS
+ac_cv_env_GNOME_LIBS_set=${GNOME_LIBS+set}
+ac_cv_env_GNOME_LIBS_value=$GNOME_LIBS
+ac_env_GOFFICE_CFLAGS_set=${GOFFICE_CFLAGS+set}
+ac_env_GOFFICE_CFLAGS_value=$GOFFICE_CFLAGS
+ac_cv_env_GOFFICE_CFLAGS_set=${GOFFICE_CFLAGS+set}
+ac_cv_env_GOFFICE_CFLAGS_value=$GOFFICE_CFLAGS
+ac_env_GOFFICE_LIBS_set=${GOFFICE_LIBS+set}
+ac_env_GOFFICE_LIBS_value=$GOFFICE_LIBS
+ac_cv_env_GOFFICE_LIBS_set=${GOFFICE_LIBS+set}
+ac_cv_env_GOFFICE_LIBS_value=$GOFFICE_LIBS
+ac_env_WINDRES_set=${WINDRES+set}
+ac_env_WINDRES_value=$WINDRES
+ac_cv_env_WINDRES_set=${WINDRES+set}
+ac_cv_env_WINDRES_value=$WINDRES
+ac_env_GLIB_GENMARSHAL_set=${GLIB_GENMARSHAL+set}
+ac_env_GLIB_GENMARSHAL_value=$GLIB_GENMARSHAL
+ac_cv_env_GLIB_GENMARSHAL_set=${GLIB_GENMARSHAL+set}
+ac_cv_env_GLIB_GENMARSHAL_value=$GLIB_GENMARSHAL
+ac_env_GDK_PIXBUF_CSOURCE_set=${GDK_PIXBUF_CSOURCE+set}
+ac_env_GDK_PIXBUF_CSOURCE_value=$GDK_PIXBUF_CSOURCE
+ac_cv_env_GDK_PIXBUF_CSOURCE_set=${GDK_PIXBUF_CSOURCE+set}
+ac_cv_env_GDK_PIXBUF_CSOURCE_value=$GDK_PIXBUF_CSOURCE
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures goffice 0.0.4 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of goffice 0.0.4:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer
+  --enable-static[=PKGS]
+                          build static libraries [default=no]
+  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors
+  --enable-shared[=PKGS]
+                          build shared libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-largefile     omit support for large files
+  --enable-compile-warnings=[no/minimum/yes/maximum/error]
+                          Turn on compiler warnings
+  --enable-iso-c          Try to warn if code is not ISO C
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]
+                          include additional configurations [automatic]
+  --{with,without}-cairo  Use cairo for graph rendering
+  --without-gtk           Build without UI
+  --{with,without}-gnome  Use GNOME extensions
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  PKG_CONFIG  path to pkg-config utility
+  CAIRO_CFLAGS
+              C compiler flags for CAIRO, overriding pkg-config
+  CAIRO_LIBS  linker flags for CAIRO, overriding pkg-config
+  GTK_CFLAGS  C compiler flags for GTK, overriding pkg-config
+  GTK_LIBS    linker flags for GTK, overriding pkg-config
+  GNOME_CFLAGS
+              C compiler flags for GNOME, overriding pkg-config
+  GNOME_LIBS  linker flags for GNOME, overriding pkg-config
+  GOFFICE_CFLAGS
+              C compiler flags for GOFFICE, overriding pkg-config
+  GOFFICE_LIBS
+              linker flags for GOFFICE, overriding pkg-config
+  WINDRES     The windres executable (used by win32 builds only).
+  GLIB_GENMARSHAL
+              The glib-genmarshal executable.
+  GDK_PIXBUF_CSOURCE
+              The gdk-pixbuf-csource executable.
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice>.
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+	   test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd "$ac_popdir"
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+goffice configure 0.0.4
+generated by GNU Autoconf 2.59
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by goffice $as_me 0.0.4, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+	echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+am__api_version="1.7"
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+  program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+ # test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='goffice'
+ VERSION='0.0.4'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+
+
+
+
+GOFFICE_LIB_VERSION=0:4:0
+
+
+          ac_config_headers="$ac_config_headers goffice/goffice-config.h"
+
+
+          ac_config_headers="$ac_config_headers goffice/goffice-features.h"
+
+
+
+
+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+    # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+  enableval="$enable_maintainer_mode"
+  USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi;
+  echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
+
+
+if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+# Make --disable-static the default
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=no
+fi;
+
+
+
+
+
+if test -n "0.27.2"; then
+    echo "$as_me:$LINENO: checking for intltool >= 0.27.2" >&5
+echo $ECHO_N "checking for intltool >= 0.27.2... $ECHO_C" >&6
+
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo 0.27.2 | awk -F. '{ printf "%d", $1 * 100 + $2; }'`
+    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $2; }'  < ${ac_aux_dir}/intltool-update.in`
+
+    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($2, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
+
+
+    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+	echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
+echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6
+    else
+	echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool 0.27.2 or later." >&5
+echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool 0.27.2 or later." >&6
+	exit 1
+    fi
+fi
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+
+
+
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_PERL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL
+
+if test -n "$INTLTOOL_PERL"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5
+echo "${ECHO_T}$INTLTOOL_PERL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$INTLTOOL_PERL"; then
+   { { echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5
+echo "$as_me: error: perl not found; required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   { { echo "$as_me:$LINENO: error: perl 5.x required for intltool" >&5
+echo "$as_me: error: perl 5.x required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test "x" != "xno-xml"; then
+   echo "$as_me:$LINENO: checking for XML::Parser" >&5
+echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+   else
+       { { echo "$as_me:$LINENO: error: XML::Parser perl module is required for intltool" >&5
+echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+fi
+
+# Extract the first word of "iconv", so it can be a program name with args.
+set dummy iconv; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_ICONV+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_ICONV in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_ICONV="$INTLTOOL_ICONV" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_ICONV="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_ICONV" && ac_cv_path_INTLTOOL_ICONV="iconv"
+  ;;
+esac
+fi
+INTLTOOL_ICONV=$ac_cv_path_INTLTOOL_ICONV
+
+if test -n "$INTLTOOL_ICONV"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_ICONV" >&5
+echo "${ECHO_T}$INTLTOOL_ICONV" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_MSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_MSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_MSGFMT="$INTLTOOL_MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_MSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_MSGFMT" && ac_cv_path_INTLTOOL_MSGFMT="msgfmt"
+  ;;
+esac
+fi
+INTLTOOL_MSGFMT=$ac_cv_path_INTLTOOL_MSGFMT
+
+if test -n "$INTLTOOL_MSGFMT"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_MSGFMT" >&5
+echo "${ECHO_T}$INTLTOOL_MSGFMT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_MSGMERGE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_MSGMERGE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_MSGMERGE="$INTLTOOL_MSGMERGE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_MSGMERGE="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_MSGMERGE" && ac_cv_path_INTLTOOL_MSGMERGE="msgmerge"
+  ;;
+esac
+fi
+INTLTOOL_MSGMERGE=$ac_cv_path_INTLTOOL_MSGMERGE
+
+if test -n "$INTLTOOL_MSGMERGE"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_MSGMERGE" >&5
+echo "${ECHO_T}$INTLTOOL_MSGMERGE" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_XGETTEXT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_XGETTEXT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_XGETTEXT="$INTLTOOL_XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_XGETTEXT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_XGETTEXT" && ac_cv_path_INTLTOOL_XGETTEXT="xgettext"
+  ;;
+esac
+fi
+INTLTOOL_XGETTEXT=$ac_cv_path_INTLTOOL_XGETTEXT
+
+if test -n "$INTLTOOL_XGETTEXT"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_XGETTEXT" >&5
+echo "${ECHO_T}$INTLTOOL_XGETTEXT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+# Remove file type tags (using []) from po/POTFILES.
+
+
+
+
+
+
+
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+          ac_config_commands="$ac_config_commands intltool"
+
+
+
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+          ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+	;;
+    conftest.$ac_ext )
+	# This is the source file.
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	# FIXME: I believe we export ac_cv_exeext for Libtool,
+	# but it would be cool to find out if it's true.  Does anybody
+	# maintain Libtool? --akim.
+	export ac_cv_exeext
+	break;;
+    * )
+	break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  export ac_cv_exeext
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std1 is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std1.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+
+
+        echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5
+echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6
+if test "${ac_cv_lib_cposix_strerror+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcposix  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char strerror ();
+int
+main ()
+{
+strerror ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_cposix_strerror=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_cposix_strerror=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5
+echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6
+if test $ac_cv_lib_cposix_strerror = yes; then
+  LIBS="$LIBS -lcposix"
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std1 is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std1.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+for ac_prog in 'bison -y' byacc
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_YACC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$YACC"; then
+  ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_YACC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+  echo "$as_me:$LINENO: result: $YACC" >&5
+echo "${ECHO_T}$YACC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
+
+for ac_prog in flex lex
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_LEX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$LEX"; then
+  ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LEX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+  echo "$as_me:$LINENO: result: $LEX" >&5
+echo "${ECHO_T}$LEX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$LEX" && break
+done
+test -n "$LEX" || LEX=":"
+
+if test -z "$LEXLIB"
+then
+  echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5
+echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6
+if test "${ac_cv_lib_fl_yywrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char yywrap ();
+int
+main ()
+{
+yywrap ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_fl_yywrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_fl_yywrap=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_fl_yywrap" >&5
+echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6
+if test $ac_cv_lib_fl_yywrap = yes; then
+  LEXLIB="-lfl"
+else
+  echo "$as_me:$LINENO: checking for yywrap in -ll" >&5
+echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6
+if test "${ac_cv_lib_l_yywrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ll  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char yywrap ();
+int
+main ()
+{
+yywrap ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_l_yywrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_l_yywrap=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_l_yywrap" >&5
+echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6
+if test $ac_cv_lib_l_yywrap = yes; then
+  LEXLIB="-ll"
+fi
+
+fi
+
+fi
+
+if test "x$LEX" != "x:"; then
+  echo "$as_me:$LINENO: checking lex output file root" >&5
+echo $ECHO_N "checking lex output file root... $ECHO_C" >&6
+if test "${ac_cv_prog_lex_root+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # The minimal lex program is just a single line: %%.  But some broken lexes
+# (Solaris, I think it was) want two %% lines, so accommodate them.
+cat >conftest.l <<_ACEOF
+%%
+%%
+_ACEOF
+{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5
+  (eval $LEX conftest.l) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+if test -f lex.yy.c; then
+  ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+  ac_cv_prog_lex_root=lexyy
+else
+  { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
+echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
+echo "${ECHO_T}$ac_cv_prog_lex_root" >&6
+rm -f conftest.l
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
+echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent. Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
+ac_save_LIBS=$LIBS
+LIBS="$LIBS $LEXLIB"
+cat >conftest.$ac_ext <<_ACEOF
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_lex_yytext_pointer=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_save_LIBS
+rm -f "${LEX_OUTPUT_ROOT}.c"
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
+echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define YYTEXT_POINTER 1
+_ACEOF
+
+fi
+
+fi
+if test "$LEX" = :; then
+  LEX=${am_missing_run}flex
+fi
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi;
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && break
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+SED=$lt_cv_path_SED
+
+fi
+
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+        ;;
+      *)
+	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	*/dev/null*)
+	  lt_cv_path_NM="$tmp_nm -p"
+	  break
+	  ;;
+	*)
+	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	  ;;
+	esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 5237 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice ##
+## ------------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+  CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_F77" && break
+done
+
+  F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:6794:" \
+     "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+ *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDRT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  AR=$ac_ct_AR
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    lt_prog_cc_shlib='-belf'
+    ;;
+  esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | grep "[ 	]$lt_prog_cc_shlib[ 	]" >/dev/null; then :
+  else
+    { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:7826: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:7830: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic='-Kpic'
+      lt_prog_compiler_static='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:8059: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:8063: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:8119: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:8123: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        archive_expsym_cmds="$tmp_archive_cmds"
+      fi
+      link_all_deplibs=no
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.012|aix4.012.*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L=yes
+  	  hardcode_libdir_flag_spec='-L$libdir'
+  	  hardcode_libdir_separator=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec=' '
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      archive_cmds_need_lc=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+	allow_undefined_flag='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec='-all_load $convenience'
+      link_all_deplibs=yes
+    else
+      ld_shlibs=no
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld='+b $libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=no
+      hardcode_shlibpath_var=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec=
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc=no
+        else
+	  archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var " || \
+   test "X$hardcode_automatic"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 10307 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 10405 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+  darwin* | rhapsody*)
+  if test "$GCC" = yes; then
+    archive_cmds_need_lc=no
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    output_verbose_link_cmd='echo'
+    archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+    module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    hardcode_direct=no
+    hardcode_automatic=yes
+    hardcode_shlibpath_var=unsupported
+    whole_archive_flag_spec='-all_load $convenience'
+    link_all_deplibs=yes
+  else
+    ld_shlibs=no
+  fi
+    ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+  withval="$with_tags"
+  tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && test "X$CXX" != "Xno"; then
+	  ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.012|aix4.012.*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct_CXX=yes
+	else
+	  # We have old collect2
+	  hardcode_direct_CXX=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L_CXX=yes
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  hardcode_libdir_separator_CXX=
+	fi
+      esac
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag_CXX="-z nodefs"
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	no_undefined_flag_CXX=' ${wl}-bernotok'
+	allow_undefined_flag_CXX=' ${wl}-berok'
+	# -bexpall does not export symbols beginning with underscore (_)
+	always_export_symbols_CXX=yes
+	# Exported symbols can be pulled into shared objects from archives
+	whole_archive_flag_spec_CXX=' '
+	archive_cmds_need_lc_CXX=yes
+	# This is similar to how AIX traditionally builds it's shared libraries.
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+
+  darwin* | rhapsody*)
+  if test "$GXX" = yes; then
+    archive_cmds_need_lc_CXX=no
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag_CXX='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag_CXX='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    lt_int_apple_cc_single_mod=no
+    output_verbose_link_cmd='echo'
+    if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+      lt_int_apple_cc_single_mod=yes
+    fi
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    else
+      archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    fi
+    module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    hardcode_direct_CXX=no
+    hardcode_automatic_CXX=yes
+    hardcode_shlibpath_var_CXX=unsupported
+    whole_archive_flag_spec_CXX='-all_load $convenience'
+    link_all_deplibs_CXX=yes
+  else
+    ld_shlibs_CXX=no
+  fi
+    ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      ghcx)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  freebsd12*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | kfreebsd*-gnu)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+	hardcode_libdir_separator_CXX=:
+        ;;
+      ia64*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+        ;;
+      *)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+	export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      aCC)
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case "$host_cpu" in
+	    ia64*|hppa*64*)
+	      archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	      ;;
+	    *)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC)
+	# SGI C++
+	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+	  else
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	link_all_deplibs_CXX=yes
+	;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc)
+	# Intel C++
+	with_gnu_ld=yes
+	archive_cmds_need_lc_CXX=no
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      cxx)
+	# Compaq C++
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx)
+	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx)
+	allow_undefined_flag_CXX=' -expect_unresolved \*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry $objdir/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sco*)
+    archive_cmds_need_lc_CXX=no
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      lcc)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.2, 5.x and Centerline C++
+	no_undefined_flag_CXX=' -zdefs'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-R$libdir'
+	hardcode_shlibpath_var_CXX=no
+	case $host_os in
+	  solaris2.0-5 | solaris2.0-5.*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	link_all_deplibs_CXX=yes
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx)
+	# Green Hills C++ Compiler
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    case "$host_cpu" in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  icpc)
+	    # Intel C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  cxx)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      sco*)
+	case $cc_basename in
+	  CC)
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      unixware*)
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:12582: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:12586: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:12642: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:12646: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  linux*)
+    link_all_deplibs_CXX=no
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_CXX=no
+        else
+	  archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var CXX" || \
+   test "X$hardcode_automatic_CXX"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 14011 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 14109 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_F77='-Kpic'
+      lt_prog_compiler_static_F77='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14936: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:14940: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14996: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:15000: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds_F77="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        archive_expsym_cmds_F77="$tmp_archive_cmds"
+      fi
+      link_all_deplibs_F77=no
+    else
+      ld_shlibs_F77=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.012|aix4.012.*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_F77=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_F77=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77=' '
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      archive_cmds_need_lc_F77=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+	allow_undefined_flag_F77='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag_F77='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag_F77='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag_F77='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77='-all_load $convenience'
+      link_all_deplibs_F77=yes
+    else
+      ld_shlibs_F77=no
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_F77='-L$libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_F77='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_F77=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_F77=
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var F77" || \
+   test "X$hardcode_automatic_F77"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:17041: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:17045: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-KPIC'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_GCJ='-Kpic'
+      lt_prog_compiler_static_GCJ='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_GCJ='-Kconform_pic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:17274: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:17278: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:17334: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:17338: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_GCJ=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds_GCJ="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        archive_expsym_cmds_GCJ="$tmp_archive_cmds"
+      fi
+      link_all_deplibs_GCJ=no
+    else
+      ld_shlibs_GCJ=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_GCJ=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.012|aix4.012.*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_GCJ=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_GCJ=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_GCJ=yes
+  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+  	  hardcode_libdir_separator_GCJ=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_GCJ="-z nodefs"
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_GCJ=' ${wl}-bernotok'
+	  allow_undefined_flag_GCJ=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_GCJ=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_GCJ=' '
+	  archive_cmds_need_lc_GCJ=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      archive_cmds_need_lc_GCJ=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+	allow_undefined_flag_GCJ='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag_GCJ='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ='-all_load $convenience'
+      link_all_deplibs_GCJ=yes
+    else
+      ld_shlibs_GCJ=no
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=yes
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_GCJ='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+	  hardcode_direct_GCJ=no
+        ;;
+	motorola)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_GCJ=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_GCJ=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_GCJ=
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var GCJ" || \
+   test "X$hardcode_automatic_GCJ"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 19522 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 19620 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	;;
+
+      *)
+	{ { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# Check whether --enable-largefile or --disable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+  enableval="$enable_largefile"
+
+fi;
+if test "$enable_largefile" != no; then
+
+  echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+     	 # IRIX 6.2 and later do not support large files by default,
+     	 # so use the C compiler's -n32 option if that helps.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+     	 rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+     	 CC="$CC -n32"
+     	 rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_largefile_CC=' -n32'; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+	 break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  while :; do
+  ac_cv_sys_file_offset_bits=no
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_file_offset_bits=64; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
+if test "$ac_cv_sys_file_offset_bits" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+
+fi
+rm -f conftest*
+  echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_large_files+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  while :; do
+  ac_cv_sys_large_files=no
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_large_files=1; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+echo "${ECHO_T}$ac_cv_sys_large_files" >&6
+if test "$ac_cv_sys_large_files" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+
+fi
+rm -f conftest*
+fi
+
+
+ACLOCAL_AMFLAGS=$ACLOCAL_FLAGS
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+
+if test -n "$ac_pt_PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  PKG_CONFIG=$ac_pt_PKG_CONFIG
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	else
+		echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+		PKG_CONFIG=""
+	fi
+
+fi
+
+goffice_reqs="
+	glib-2.0		>= 2.4.4
+	gobject-2.0		>= 2.4.4
+	gmodule-2.0		>= 2.4.4
+	libgsf-1		>= 1.12.2
+	libxml-2.0		>= 2.4.12
+	pango			>= 1.6.0
+	pangoft2		>= 1.6.0
+"
+goffice_cairo_reqs="
+	cairo			>= 0.5.0
+"
+goffice_gtk_reqs="
+	gtk+-2.0		>= 2.4.14
+	libglade-2.0		>= 2.3.6
+	libgnomeprint-2.2	>= 2.8.2
+	libart-2.0		>= 2.3.11
+"
+goffice_gnome_reqs="
+	gconf-2.0
+	libgnomeui-2.0		>= 2.0.0
+	libgsf-gnome-1		>= 1.12.2
+"
+
+goffice_with_cairo=false
+
+# Check whether --with-cairo or --without-cairo was given.
+if test "${with_cairo+set}" = set; then
+  withval="$with_cairo"
+
+fi;
+if test "x$with_cairo" = xyes; then
+	cairo_msg="Enabled"
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for CAIRO" >&5
+echo $ECHO_N "checking for CAIRO... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_cairo_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_cairo_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "$goffice_cairo_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_cairo_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_cairo_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "$goffice_cairo_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+
+if test $pkg_failed = yes; then
+	CAIRO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$goffice_cairo_reqs"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$CAIRO_PKG_ERRORS" 1>&5
+
+	{ { echo "$as_me:$LINENO: error: Package requirements ($goffice_cairo_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the CAIRO_CFLAGS and CAIRO_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&5
+echo "$as_me: error: Package requirements ($goffice_cairo_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the CAIRO_CFLAGS and CAIRO_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&2;}
+   { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the CAIRO_CFLAGS and CAIRO_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the CAIRO_CFLAGS and CAIRO_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+	CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
+	CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	:
+fi
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_CAIRO 1
+_ACEOF
+
+	goffice_reqs="$goffice_reqs $goffice_cairo_reqs"
+	goffice_with_cairo=true
+else
+	cairo_msg="Disabled"
+	goffice_with_cairo=false
+fi
+
+goffice_with_gtk=true
+
+# Check whether --with-gtk or --without-gtk was given.
+if test "${with_gtk+set}" = set; then
+  withval="$with_gtk"
+
+fi;
+if test "x$with_gtk" = xno; then
+	ui_msg="None (Gtk disabled by request)"
+	goffice_with_gtk=false
+else
+			ui_msg="Gtk"
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for GTK" >&5
+echo $ECHO_N "checking for GTK... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_gtk_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_gtk_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "$goffice_gtk_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_gtk_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_gtk_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "$goffice_gtk_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+
+if test $pkg_failed = yes; then
+	GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$goffice_gtk_reqs"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$GTK_PKG_ERRORS" 1>&5
+
+	{ { echo "$as_me:$LINENO: error: Package requirements ($goffice_gtk_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the GTK_CFLAGS and GTK_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&5
+echo "$as_me: error: Package requirements ($goffice_gtk_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the GTK_CFLAGS and GTK_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&2;}
+   { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the GTK_CFLAGS and GTK_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the GTK_CFLAGS and GTK_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+	GTK_CFLAGS=$pkg_cv_GTK_CFLAGS
+	GTK_LIBS=$pkg_cv_GTK_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	:
+fi
+fi
+
+goffice_with_gnome=$goffice_with_gtk
+if test "x$goffice_with_gtk" = "xtrue" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_GTK 1
+_ACEOF
+
+	goffice_reqs="$goffice_reqs $goffice_gtk_reqs"
+
+
+	goffice_with_gnome=true
+
+# Check whether --with-gnome or --without-gnome was given.
+if test "${with_gnome+set}" = set; then
+  withval="$with_gnome"
+  if test "x$withval" = xno; then
+			goffice_with_gnome=false
+			ui_msg="Gtk+ (Gnome disabled by request)"
+		fi
+
+fi;
+	if test "x$goffice_with_gnome" = "xtrue"; then
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for GNOME" >&5
+echo $ECHO_N "checking for GNOME... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_gnome_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_gnome_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GNOME_CFLAGS=`$PKG_CONFIG --cflags "$goffice_gnome_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_gnome_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_gnome_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GNOME_LIBS=`$PKG_CONFIG --libs "$goffice_gnome_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+
+if test $pkg_failed = yes; then
+	GNOME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$goffice_gnome_reqs"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$GNOME_PKG_ERRORS" 1>&5
+
+	ui_msg="Gtk (missing gnome dependencies)" ; goffice_with_gnome=false
+elif test $pkg_failed = untried; then
+	ui_msg="Gtk (missing gnome dependencies)" ; goffice_with_gnome=false
+else
+	GNOME_CFLAGS=$pkg_cv_GNOME_CFLAGS
+	GNOME_LIBS=$pkg_cv_GNOME_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	ui_msg="Gnome"
+fi
+	fi
+
+	if test "x$goffice_with_gnome" = "xtrue"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_GNOME 1
+_ACEOF
+
+		goffice_reqs="$goffice_reqs $goffice_gnome_reqs"
+	fi
+fi
+
+
+if $goffice_with_cairo; then
+  WITH_CAIRO_TRUE=
+  WITH_CAIRO_FALSE='#'
+else
+  WITH_CAIRO_TRUE='#'
+  WITH_CAIRO_FALSE=
+fi
+
+
+
+if $goffice_with_gtk; then
+  WITH_GTK_TRUE=
+  WITH_GTK_FALSE='#'
+else
+  WITH_GTK_TRUE='#'
+  WITH_GTK_FALSE=
+fi
+
+
+
+if $goffice_with_gnome; then
+  WITH_GNOME_TRUE=
+  WITH_GNOME_FALSE='#'
+else
+  WITH_GNOME_TRUE='#'
+  WITH_GNOME_FALSE=
+fi
+
+
+
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for GOFFICE" >&5
+echo $ECHO_N "checking for GOFFICE... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GOFFICE_CFLAGS=`$PKG_CONFIG --cflags "$goffice_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$goffice_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$goffice_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_GOFFICE_LIBS=`$PKG_CONFIG --libs "$goffice_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+
+if test $pkg_failed = yes; then
+	GOFFICE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$goffice_reqs"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$GOFFICE_PKG_ERRORS" 1>&5
+
+	{ { echo "$as_me:$LINENO: error: Package requirements ($goffice_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the GOFFICE_CFLAGS and GOFFICE_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&5
+echo "$as_me: error: Package requirements ($goffice_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the GOFFICE_CFLAGS and GOFFICE_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&2;}
+   { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the GOFFICE_CFLAGS and GOFFICE_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the GOFFICE_CFLAGS and GOFFICE_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+	GOFFICE_CFLAGS=$pkg_cv_GOFFICE_CFLAGS
+	GOFFICE_LIBS=$pkg_cv_GOFFICE_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	:
+fi
+
+echo "$as_me:$LINENO: checking for XRenderFindFormat in -lXrender" >&5
+echo $ECHO_N "checking for XRenderFindFormat in -lXrender... $ECHO_C" >&6
+if test "${ac_cv_lib_Xrender_XRenderFindFormat+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lXrender -lXext $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char XRenderFindFormat ();
+int
+main ()
+{
+XRenderFindFormat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_Xrender_XRenderFindFormat=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_Xrender_XRenderFindFormat=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderFindFormat" >&5
+echo "${ECHO_T}$ac_cv_lib_Xrender_XRenderFindFormat" >&6
+if test $ac_cv_lib_Xrender_XRenderFindFormat = yes; then
+  RENDER_LIBS="-lXrender -lXext"
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RENDER 1
+_ACEOF
+
+else
+  RENDER_LIBS=""
+
+fi
+
+
+echo "$as_me:$LINENO: checking for Win32 platform" >&5
+echo $ECHO_N "checking for Win32 platform... $ECHO_C" >&6
+with_win32=no
+case $host_os in
+  mingw* | pw32* | cygwin*)
+    with_win32=yes
+    GOFFICE_PLUGIN_LDFLAGS="-Wl,--enable-runtime-pseudo-relo,--export-all-symbols $GOFFICE_PLUGIN_LDFLAGS"
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
+set dummy ${ac_tool_prefix}windres; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_WINDRES+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$WINDRES"; then
+  ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_WINDRES="${ac_tool_prefix}windres"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+WINDRES=$ac_cv_prog_WINDRES
+if test -n "$WINDRES"; then
+  echo "$as_me:$LINENO: result: $WINDRES" >&5
+echo "${ECHO_T}$WINDRES" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_WINDRES"; then
+  ac_ct_WINDRES=$WINDRES
+  # Extract the first word of "windres", so it can be a program name with args.
+set dummy windres; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_WINDRES+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_WINDRES"; then
+  ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_WINDRES="windres"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_WINDRES" && ac_cv_prog_ac_ct_WINDRES=":"
+fi
+fi
+ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES
+if test -n "$ac_ct_WINDRES"; then
+  echo "$as_me:$LINENO: result: $ac_ct_WINDRES" >&5
+echo "${ECHO_T}$ac_ct_WINDRES" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  WINDRES=$ac_ct_WINDRES
+else
+  WINDRES="$ac_cv_prog_WINDRES"
+fi
+
+    ;;
+esac
+echo "$as_me:$LINENO: result: $with_win32" >&5
+echo "${ECHO_T}$with_win32" >&6
+
+
+if test $with_win32 = yes; then
+  WITH_WIN32_TRUE=
+  WITH_WIN32_FALSE='#'
+else
+  WITH_WIN32_TRUE='#'
+  WITH_WIN32_FALSE=
+fi
+
+
+GOFFICE_PLUGIN_LDFLAGS="-avoid-version -no-undefined $GOFFICE_PLUGIN_LDFLAGS"
+GOFFICE_PLUGIN_LIBADD="\$(top_builddir)/goffice/libgoffice-1.la $GOFFICE_LIBS $GOFFICE_PLUGIN_LIBADD"
+
+
+
+CFLAGS="$CFLAGS -DG_DISABLE_DEPRECATED"
+CFLAGS="$CFLAGS -DPANGO_DISABLE_DEPRECATED"
+if test "x$goffice_with_gtk" = "xtrue"; then
+	CFLAGS="$CFLAGS -DGDK_PIXBUF_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DGDK_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DGDK_MULTIHEAD_SAFE"
+	CFLAGS="$CFLAGS -DGTK_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DLIBGLADE_DISABLE_DEPRECATED"
+fi
+if test "x$goffice_with_gnome" = "xtrue"; then
+	CFLAGS="$CFLAGS -DGNOME_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DBONOBO_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DBONOBO_UI_DISABLE_DEPRECATED"
+fi
+
+
+
+# Extract the first word of "glib-genmarshal", so it can be a program name with args.
+set dummy glib-genmarshal; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_GLIB_GENMARSHAL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$GLIB_GENMARSHAL"; then
+  ac_cv_prog_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GLIB_GENMARSHAL="glib-genmarshal"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+GLIB_GENMARSHAL=$ac_cv_prog_GLIB_GENMARSHAL
+if test -n "$GLIB_GENMARSHAL"; then
+  echo "$as_me:$LINENO: result: $GLIB_GENMARSHAL" >&5
+echo "${ECHO_T}$GLIB_GENMARSHAL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+
+# Extract the first word of "gdk-pixbuf-csource", so it can be a program name with args.
+set dummy gdk-pixbuf-csource; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_GDK_PIXBUF_CSOURCE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$GDK_PIXBUF_CSOURCE"; then
+  ac_cv_prog_GDK_PIXBUF_CSOURCE="$GDK_PIXBUF_CSOURCE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GDK_PIXBUF_CSOURCE="gdk-pixbuf-csource"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+GDK_PIXBUF_CSOURCE=$ac_cv_prog_GDK_PIXBUF_CSOURCE
+if test -n "$GDK_PIXBUF_CSOURCE"; then
+  echo "$as_me:$LINENO: result: $GDK_PIXBUF_CSOURCE" >&5
+echo "${ECHO_T}$GDK_PIXBUF_CSOURCE" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+## this should come after `AC_PROG_CC'
+
+
+    # Check whether --enable-compile-warnings or --disable-compile-warnings was given.
+if test "${enable_compile_warnings+set}" = set; then
+  enableval="$enable_compile_warnings"
+
+else
+  enable_compile_warnings="yes"
+fi;
+
+    warnCFLAGS=
+    if test "x$GCC" != xyes; then
+	enable_compile_warnings=no
+    fi
+
+    warning_flags=
+    realsave_CFLAGS="$CFLAGS"
+
+    case "$enable_compile_warnings" in
+    no)
+	warning_flags=
+	;;
+    minimum)
+	warning_flags="-Wall"
+	;;
+    yes)
+	warning_flags="-Wall -Wmissing-prototypes"
+	;;
+    maximum|error)
+	warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+	CFLAGS="$warning_flags $CFLAGS"
+	for option in -Wno-sign-compare; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		echo "$as_me:$LINENO: checking whether gcc understands $option" >&5
+echo $ECHO_N "checking whether gcc understands $option... $ECHO_C" >&6
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  has_option=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_option=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+		CFLAGS="$SAVE_CFLAGS"
+		echo "$as_me:$LINENO: result: $has_option" >&5
+echo "${ECHO_T}$has_option" >&6
+		if test $has_option = yes; then
+		  warning_flags="$warning_flags $option"
+		fi
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+	if test "$enable_compile_warnings" = "error" ; then
+	    warning_flags="$warning_flags -Werror"
+	fi
+	;;
+    *)
+	{ { echo "$as_me:$LINENO: error: Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" >&5
+echo "$as_me: error: Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+    CFLAGS="$realsave_CFLAGS"
+    echo "$as_me:$LINENO: checking what warning flags to pass to the C compiler" >&5
+echo $ECHO_N "checking what warning flags to pass to the C compiler... $ECHO_C" >&6
+    echo "$as_me:$LINENO: result: $warning_flags" >&5
+echo "${ECHO_T}$warning_flags" >&6
+
+    # Check whether --enable-iso-c or --disable-iso-c was given.
+if test "${enable_iso_c+set}" = set; then
+  enableval="$enable_iso_c"
+
+else
+  enable_iso_c=no
+fi;
+
+    echo "$as_me:$LINENO: checking what language compliance flags to pass to the C compiler" >&5
+echo $ECHO_N "checking what language compliance flags to pass to the C compiler... $ECHO_C" >&6
+    complCFLAGS=
+    if test "x$enable_iso_c" != "xno"; then
+	if test "x$GCC" = "xyes"; then
+	case " $CFLAGS " in
+	    *\ \	-ansi\ \	*) ;;
+	    *) complCFLAGS="$complCFLAGS -ansi" ;;
+	esac
+	case " $CFLAGS " in
+	    *\ \	-pedantic\ \	*) ;;
+	    *) complCFLAGS="$complCFLAGS -pedantic" ;;
+	esac
+	fi
+    fi
+    echo "$as_me:$LINENO: result: $complCFLAGS" >&5
+echo "${ECHO_T}$complCFLAGS" >&6
+
+    WARN_CFLAGS="$warning_flags $complCFLAGS"
+
+ CFLAGS="$CFLAGS $WARN_CFLAGS"
+set_more_warnings=yes
+if test "$GCC" = "yes" -a "x$set_more_warnings" != "xno"; then
+	for option in -Wsign-compare -Wpointer-arith -Wnested-externs -Wchar-subscripts -Wwrite-strings -Wdeclaration-after-statement -Wmissing-noreturn -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-format-attribute; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		echo "$as_me:$LINENO: checking whether gcc understands $option" >&5
+echo $ECHO_N "checking whether gcc understands $option... $ECHO_C" >&6
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  has_option=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_option=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+		if test $has_option = no; then
+		  CFLAGS="$SAVE_CFLAGS"
+		fi
+		echo "$as_me:$LINENO: result: $has_option" >&5
+echo "${ECHO_T}$has_option" >&6
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+fi
+
+
+echo "$as_me:$LINENO: checking whether fdopen is declared" >&5
+echo $ECHO_N "checking whether fdopen is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_fdopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fdopen
+  char *p = (char *) fdopen;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_fdopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_fdopen=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_fdopen" >&5
+echo "${ECHO_T}$ac_cv_have_decl_fdopen" >&6
+if test $ac_cv_have_decl_fdopen = yes; then
+  fdopen_works=yes
+else
+  fdopen_works=no
+fi
+
+if test $fdopen_works = no ; then
+	unset ac_cv_have_decl_fdopen
+	CFLAGS="$CFLAGS -D_POSIX_SOURCE"
+	{ echo "$as_me:$LINENO: adding -D_POSIX_SOURCE to CFLAGS" >&5
+echo "$as_me: adding -D_POSIX_SOURCE to CFLAGS" >&6;}
+	echo "$as_me:$LINENO: checking whether fdopen is declared" >&5
+echo $ECHO_N "checking whether fdopen is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_fdopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fdopen
+  char *p = (char *) fdopen;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_fdopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_fdopen=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_fdopen" >&5
+echo "${ECHO_T}$ac_cv_have_decl_fdopen" >&6
+if test $ac_cv_have_decl_fdopen = yes; then
+  fdopen_works=yes
+else
+  fdopen_works=no
+fi
+
+	if test $fdopen_works = no ; then
+		{ { echo "$as_me:$LINENO: error: fdopen is not available" >&5
+echo "$as_me: error: fdopen is not available" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+fi
+
+# Unfortunately, -D_POSIX_SOURCE turns off struct timeval on Solaris
+echo "$as_me:$LINENO: checking whether struct timeval is available" >&5
+echo $ECHO_N "checking whether struct timeval is available... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/time.h>
+int
+main ()
+{
+struct timeval tv;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  struct_timeval_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+struct_timeval_works=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $struct_timeval_works" >&5
+echo "${ECHO_T}$struct_timeval_works" >&6
+
+if test $struct_timeval_works = no ; then
+	CFLAGS="$CFLAGS -D__EXTENSIONS__"
+	echo "$as_me:$LINENO: checking whether struct timeval is available with -D__EXTENSIONS__" >&5
+echo $ECHO_N "checking whether struct timeval is available with -D__EXTENSIONS__... $ECHO_C" >&6
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/time.h>
+int
+main ()
+{
+struct timeval tv;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  struct_timeval_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+struct_timeval_works=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+	echo "$as_me:$LINENO: result: $struct_timeval_works" >&5
+echo "${ECHO_T}$struct_timeval_works" >&6
+	if test $struct_timeval_works = no ; then
+		{ { echo "$as_me:$LINENO: error: struct timeval is not available" >&5
+echo "$as_me: error: struct timeval is not available" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+fi
+
+echo "$as_me:$LINENO: checking for gettimeofday" >&5
+echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
+if test "${ac_cv_func_gettimeofday+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define gettimeofday to an innocuous variant, in case <limits.h> declares gettimeofday.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define gettimeofday innocuous_gettimeofday
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gettimeofday (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef gettimeofday
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gettimeofday ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
+choke me
+#else
+char (*f) () = gettimeofday;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != gettimeofday;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_gettimeofday=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_gettimeofday=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_gettimeofday" >&5
+echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
+if test $ac_cv_func_gettimeofday = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTIMEOFDAY 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking whether M_PI is available" >&5
+echo $ECHO_N "checking whether M_PI is available... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+double f = M_PI
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  works_without_bsd_source=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+works_without_bsd_source=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $works_without_bsd_source" >&5
+echo "${ECHO_T}$works_without_bsd_source" >&6
+
+if test $works_without_bsd_source = no ; then
+	CFLAGS="$CFLAGS -D_BSD_SOURCE"
+	echo "$as_me:$LINENO: checking whether M_PI is available with -D_BSD_SOURCE" >&5
+echo $ECHO_N "checking whether M_PI is available with -D_BSD_SOURCE... $ECHO_C" >&6
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+double f = M_PI
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  m_pi_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+m_pi_works=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+	echo "$as_me:$LINENO: result: $m_pi_works" >&5
+echo "${ECHO_T}$m_pi_works" >&6
+	if test $m_pi_works = no ; then
+		{ { echo "$as_me:$LINENO: error: M_PI is not available" >&5
+echo "$as_me: error: M_PI is not available" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+fi
+
+ALL_LINGUAS="am az bg ca cs da de el en_CA en_GB es et fi fr ga gl he hr hu it ja ko lv ml mr ms nb nl nn no pl pt pt_BR ro ru sk sr sr at Latn sv tr uk vi zh_CN zh_TW"
+
+
+GETTEXT_PACKAGE=goffice
+
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+
+for ac_header in locale.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice ##
+## ------------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_locale_h = yes; then
+    echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
+if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  am_cv_val_LC_MESSAGES=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+am_cv_val_LC_MESSAGES=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
+    if test $am_cv_val_LC_MESSAGES = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LC_MESSAGES 1
+_ACEOF
+
+    fi
+  fi
+     USE_NLS=yes
+
+
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    if test "${ac_cv_header_libintl_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking libintl.h usability" >&5
+echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <libintl.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking libintl.h presence" >&5
+echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <libintl.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: libintl.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice ##
+## ------------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_libintl_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+
+fi
+if test $ac_cv_header_libintl_h = yes; then
+  gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      echo "$as_me:$LINENO: checking for ngettext in libc" >&5
+echo $ECHO_N "checking for ngettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_ngettext_libc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !ngettext ("","", 1)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gt_cv_func_ngettext_libc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gt_cv_func_ngettext_libc=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5
+echo "${ECHO_T}$gt_cv_func_ngettext_libc" >&6
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+	      echo "$as_me:$LINENO: checking for dgettext in libc" >&5
+echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_dgettext_libc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !dgettext ("","")
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gt_cv_func_dgettext_libc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gt_cv_func_dgettext_libc=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
+echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6
+      fi
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+
+for ac_func in bind_textdomain_codeset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+	 || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+        echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char bindtextdomain ();
+int
+main ()
+{
+bindtextdomain ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_bindtextdomain=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_bindtextdomain=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
+if test $ac_cv_lib_intl_bindtextdomain = yes; then
+  echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char ngettext ();
+int
+main ()
+{
+ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_ngettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_ngettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
+if test $ac_cv_lib_intl_ngettext = yes; then
+  echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
+echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dgettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dgettext ();
+int
+main ()
+{
+dgettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_dgettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6
+if test $ac_cv_lib_intl_dgettext = yes; then
+  gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+fi
+
+
+	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+	  echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5
+echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6
+	  echo "$as_me:$LINENO: result: " >&5
+echo "${ECHO_T}" >&6
+  	  echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char ngettext ();
+int
+main ()
+{
+ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_ngettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_ngettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
+if test $ac_cv_lib_intl_ngettext = yes; then
+  echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5
+echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dcgettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dcgettext ();
+int
+main ()
+{
+dcgettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_dcgettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dcgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6
+if test $ac_cv_lib_intl_dcgettext = yes; then
+  gt_cv_func_dgettext_libintl=yes
+			libintl_extra_libs=-liconv
+else
+  :
+fi
+
+else
+  :
+fi
+
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+
+for ac_func in bind_textdomain_codeset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+
+      if test "$gt_cv_have_gettext" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTEXT 1
+_ACEOF
+
+	# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case "$MSGFMT" in
+  /*)
+  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
+	ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
+  ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != "no"; then
+  echo "$as_me:$LINENO: result: $MSGFMT" >&5
+echo "${ECHO_T}$MSGFMT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+	if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+
+for ac_func in dcgettext
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+	  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+
+if test -n "$GMSGFMT"; then
+  echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+echo "${ECHO_T}$GMSGFMT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+	  # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case "$XGETTEXT" in
+  /*)
+  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
+	ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+  ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+  echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+echo "${ECHO_T}$XGETTEXT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+	  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+			 return _nl_msg_cat_cntr
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  CATOBJEXT=.gmo
+             DATADIRNAME=share
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+case $host in
+	    *-*-solaris*)
+	    	                	    	                echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
+echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6
+if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char bind_textdomain_codeset (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef bind_textdomain_codeset
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char bind_textdomain_codeset ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset)
+choke me
+#else
+char (*f) () = bind_textdomain_codeset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != bind_textdomain_codeset;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_bind_textdomain_codeset=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_bind_textdomain_codeset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
+echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6
+if test $ac_cv_func_bind_textdomain_codeset = yes; then
+  CATOBJEXT=.gmo
+               DATADIRNAME=share
+else
+  CATOBJEXT=.mo
+               DATADIRNAME=lib
+fi
+
+	    ;;
+	    *)
+	    CATOBJEXT=.mo
+            DATADIRNAME=lib
+	    ;;
+	    esac
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+          LIBS="$glib_save_LIBS"
+	  INSTOBJEXT=.mo
+	else
+	  gt_cv_have_gettext=no
+	fi
+      fi
+
+fi
+
+
+
+    if test "$gt_cv_have_gettext" = "yes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NLS 1
+_ACEOF
+
+    fi
+
+        if test "$XGETTEXT" != ":"; then
+                  if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
+        XGETTEXT=":"
+      fi
+    fi
+
+    # We need to process the po/ directory.
+    POSUB=po
+
+              ac_config_commands="$ac_config_commands default-1"
+
+
+                for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+
+
+
+
+
+
+
+
+
+
+
+
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+ 	   # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       echo "$as_me:$LINENO: result: $LINGUAS" >&5
+echo "${ECHO_T}$LINGUAS" >&6
+     fi
+
+          if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+            MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+
+
+         test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+	< $srcdir/po/POTFILES.in > po/POTFILES
+
+
+
+
+for ac_header in ieeefp.h ieee754.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice ##
+## ------------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+
+
+for ac_func in random drand48 finite memmove mkdtemp uname times sysconf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
+echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6
+if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char bind_textdomain_codeset (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef bind_textdomain_codeset
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char bind_textdomain_codeset ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset)
+choke me
+#else
+char (*f) () = bind_textdomain_codeset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != bind_textdomain_codeset;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_bind_textdomain_codeset=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_bind_textdomain_codeset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
+echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6
+if test $ac_cv_func_bind_textdomain_codeset = yes; then
+  :
+else
+
+echo "$as_me:$LINENO: checking for bind_textdomain_codeset in -lintl" >&5
+echo $ECHO_N "checking for bind_textdomain_codeset in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_bind_textdomain_codeset+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char bind_textdomain_codeset ();
+int
+main ()
+{
+bind_textdomain_codeset ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_bind_textdomain_codeset=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_bind_textdomain_codeset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bind_textdomain_codeset" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_bind_textdomain_codeset" >&6
+if test $ac_cv_lib_intl_bind_textdomain_codeset = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBINTL 1
+_ACEOF
+
+  LIBS="-lintl $LIBS"
+
+fi
+
+fi
+
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <math.h>
+int
+main ()
+{
+int a = isfinite(0.0)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISFINITE 1
+_ACEOF
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_func_finite = no; then
+  echo "$as_me:$LINENO: checking for finite in -lm" >&5
+echo $ECHO_N "checking for finite in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_finite+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char finite ();
+int
+main ()
+{
+finite ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_finite=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_finite=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_finite" >&5
+echo "${ECHO_T}$ac_cv_lib_m_finite" >&6
+if test $ac_cv_lib_m_finite = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FINITE 1
+_ACEOF
+
+         LIBS="$LIBS -lm"
+fi
+
+fi
+
+
+for ac_header in langinfo.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice ##
+## ------------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_func in log
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+if test $ac_cv_func_log = no; then
+  echo "$as_me:$LINENO: checking for log in -lm" >&5
+echo $ECHO_N "checking for log in -lm... $ECHO_C" >&6
+if test "${ac_cv_lib_m_log+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char log ();
+int
+main ()
+{
+log ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_m_log=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_m_log=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_m_log" >&5
+echo "${ECHO_T}$ac_cv_lib_m_log" >&6
+if test $ac_cv_lib_m_log = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LOG 1
+_ACEOF
+
+         LIBS="$LIBS -lm"
+fi
+
+fi
+
+
+echo "$as_me:$LINENO: checking for log1p" >&5
+echo $ECHO_N "checking for log1p... $ECHO_C" >&6
+if test "${ac_cv_func_log1p+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define log1p to an innocuous variant, in case <limits.h> declares log1p.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define log1p innocuous_log1p
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char log1p (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef log1p
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char log1p ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_log1p) || defined (__stub___log1p)
+choke me
+#else
+char (*f) () = log1p;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != log1p;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_log1p=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_log1p=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_log1p" >&5
+echo "${ECHO_T}$ac_cv_func_log1p" >&6
+if test $ac_cv_func_log1p = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_LOG1P 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for expm1" >&5
+echo $ECHO_N "checking for expm1... $ECHO_C" >&6
+if test "${ac_cv_func_expm1+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define expm1 to an innocuous variant, in case <limits.h> declares expm1.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define expm1 innocuous_expm1
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char expm1 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef expm1
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char expm1 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_expm1) || defined (__stub___expm1)
+choke me
+#else
+char (*f) () = expm1;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != expm1;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_expm1=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_expm1=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_expm1" >&5
+echo "${ECHO_T}$ac_cv_func_expm1" >&6
+if test $ac_cv_func_expm1 = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_EXPM1 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for asinh" >&5
+echo $ECHO_N "checking for asinh... $ECHO_C" >&6
+if test "${ac_cv_func_asinh+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define asinh to an innocuous variant, in case <limits.h> declares asinh.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define asinh innocuous_asinh
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char asinh (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef asinh
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char asinh ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_asinh) || defined (__stub___asinh)
+choke me
+#else
+char (*f) () = asinh;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != asinh;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_asinh=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_asinh=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_asinh" >&5
+echo "${ECHO_T}$ac_cv_func_asinh" >&6
+if test $ac_cv_func_asinh = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_ASINH 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for acosh" >&5
+echo $ECHO_N "checking for acosh... $ECHO_C" >&6
+if test "${ac_cv_func_acosh+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define acosh to an innocuous variant, in case <limits.h> declares acosh.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define acosh innocuous_acosh
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char acosh (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef acosh
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char acosh ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_acosh) || defined (__stub___acosh)
+choke me
+#else
+char (*f) () = acosh;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != acosh;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_acosh=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_acosh=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_acosh" >&5
+echo "${ECHO_T}$ac_cv_func_acosh" >&6
+if test $ac_cv_func_acosh = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_ACOSH 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for atanh" >&5
+echo $ECHO_N "checking for atanh... $ECHO_C" >&6
+if test "${ac_cv_func_atanh+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define atanh to an innocuous variant, in case <limits.h> declares atanh.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define atanh innocuous_atanh
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char atanh (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef atanh
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char atanh ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_atanh) || defined (__stub___atanh)
+choke me
+#else
+char (*f) () = atanh;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != atanh;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_atanh=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_atanh=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_atanh" >&5
+echo "${ECHO_T}$ac_cv_func_atanh" >&6
+if test $ac_cv_func_atanh = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_ATANH 1
+_ACEOF
+
+fi
+
+
+float_msg=no
+EXTRA_LIBS= EXTRA_INCLUDES=
+echo "$as_me:$LINENO: checking for working long double with more range or precision than double" >&5
+echo $ECHO_N "checking for working long double with more range or precision than double... $ECHO_C" >&6
+if test "${ac_cv_c_long_double+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <float.h>
+	  long double foo = 0.0;
+int
+main ()
+{
+static int test_array [1 - 2 * !(/* Using '|' rather than '||' catches a GCC 2.95.2 x86 bug.  */
+	  (DBL_MAX < LDBL_MAX) | (LDBL_EPSILON < DBL_EPSILON)
+	  | (DBL_MAX_EXP < LDBL_MAX_EXP) | (DBL_MANT_DIG < LDBL_MANT_DIG))];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_long_double=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_long_double=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_long_double" >&5
+echo "${ECHO_T}$ac_cv_c_long_double" >&6
+if test $ac_cv_c_long_double = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_DOUBLE 1
+_ACEOF
+
+fi
+
+if test $ac_cv_c_long_double = yes; then
+    have_mandatory_funcs=yes
+    need_sunmath=0
+    sunmathlinkstuff='-L/opt/SUNWspro/lib -R/opt/SUNWspro/lib -lsunmath'
+    for ldfunc in fabsl logl log10l ceill floorl powl isnanl finitel; do
+	    as_ac_var=`echo "ac_cv_func_$ldfunc" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ldfunc" >&5
+echo $ECHO_N "checking for $ldfunc... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ldfunc to an innocuous variant, in case <limits.h> declares $ldfunc.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ldfunc innocuous_$ldfunc
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ldfunc (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ldfunc
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ldfunc ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ldfunc) || defined (__stub___$ldfunc)
+choke me
+#else
+char (*f) () = $ldfunc;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ldfunc;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  :
+else
+
+as_ac_Lib=`echo "ac_cv_lib_m_$ldfunc" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ldfunc in -lm" >&5
+echo $ECHO_N "checking for $ldfunc in -lm... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ldfunc ();
+int
+main ()
+{
+$ldfunc ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Lib=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Lib=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+else
+  as_ac_Lib=`echo "ac_cv_lib_sunmath_$ldfunc" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ldfunc in -lsunmath" >&5
+echo $ECHO_N "checking for $ldfunc in -lsunmath... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Lib+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsunmath -L/opt/SUNWspro/lib $GOFFICE_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ldfunc ();
+int
+main ()
+{
+$ldfunc ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Lib=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Lib=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+   if test $need_sunmath = 0; then
+				# FIXME: better idea?
+				LDFLAGS="$LDFLAGS $sunmathlinkstuff"
+				sunmathinclude=`ls -d /opt/SUNWspro/*/include/cc | sed '$!d'`
+				CPPFLAGS="$CPPFLAGS -I$sunmathinclude"
+			    fi
+			    need_sunmath=1
+else
+  have_mandatory_funcs=no
+fi
+
+fi
+
+fi
+
+    done
+    if test $need_sunmath = 1; then
+	EXTRA_LIBS="$EXTRA_LIBS $sunmathlinkstuff"
+	EXTRA_INCLUDES="$EXTRA_INCLUDES -I$sunmathinclude"
+
+
+for ac_header in sunmath.h floatingpoint.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice ##
+## ------------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+  { echo "$as_me:$LINENO: WARNING: Long doubles require the $ac_header header." >&5
+echo "$as_me: WARNING: Long doubles require the $ac_header header." >&2;}
+			  have_mandatory_funcs=no
+fi
+
+done
+
+    fi
+    unset need_sunmath
+    unset sunmathlinkstuff
+    unset sunmathinclude
+
+    echo "$as_me:$LINENO: checking for modfl" >&5
+echo $ECHO_N "checking for modfl... $ECHO_C" >&6
+if test "${ac_cv_func_modfl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define modfl to an innocuous variant, in case <limits.h> declares modfl.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define modfl innocuous_modfl
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char modfl (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef modfl
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char modfl ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_modfl) || defined (__stub___modfl)
+choke me
+#else
+char (*f) () = modfl;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != modfl;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_modfl=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_modfl=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_modfl" >&5
+echo "${ECHO_T}$ac_cv_func_modfl" >&6
+if test $ac_cv_func_modfl = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_MODFL 1
+_ACEOF
+
+fi
+
+    echo "$as_me:$LINENO: checking for ldexpl" >&5
+echo $ECHO_N "checking for ldexpl... $ECHO_C" >&6
+if test "${ac_cv_func_ldexpl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define ldexpl to an innocuous variant, in case <limits.h> declares ldexpl.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define ldexpl innocuous_ldexpl
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char ldexpl (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef ldexpl
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char ldexpl ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_ldexpl) || defined (__stub___ldexpl)
+choke me
+#else
+char (*f) () = ldexpl;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != ldexpl;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_ldexpl=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_ldexpl=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_ldexpl" >&5
+echo "${ECHO_T}$ac_cv_func_ldexpl" >&6
+if test $ac_cv_func_ldexpl = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_LDEXPL 1
+_ACEOF
+
+fi
+
+    echo "$as_me:$LINENO: checking for frexpl" >&5
+echo $ECHO_N "checking for frexpl... $ECHO_C" >&6
+if test "${ac_cv_func_frexpl+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define frexpl to an innocuous variant, in case <limits.h> declares frexpl.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define frexpl innocuous_frexpl
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char frexpl (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef frexpl
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char frexpl ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_frexpl) || defined (__stub___frexpl)
+choke me
+#else
+char (*f) () = frexpl;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != frexpl;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_frexpl=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_frexpl=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_frexpl" >&5
+echo "${ECHO_T}$ac_cv_func_frexpl" >&6
+if test $ac_cv_func_frexpl = yes; then
+  :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_FREXPL 1
+_ACEOF
+
+fi
+
+
+
+for ac_func in strtold
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    if test "$ac_cv_func_strtold" = yes; then
+	echo "$as_me:$LINENO: checking if we must prototype strtold ourselves" >&5
+echo $ECHO_N "checking if we must prototype strtold ourselves... $ECHO_C" >&6
+	if test "$cross_compiling" = yes; then
+  echo "$as_me:$LINENO: result: assuming not" >&5
+echo "${ECHO_T}assuming not" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+		int main ()
+		{
+			const char *s = "+3.1415e+0";
+			char *theend;
+			long double res = strtold (s, &theend);
+			return !(*theend == 0 && finitel (res) &&
+				 res >= 3.14 && res <= 3.15);
+		}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_STRTOLD 1
+_ACEOF
+
+
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+    else
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_SUPPLIED_STRTOLD 1
+_ACEOF
+
+
+
+for ac_func in string_to_decimal decimal_to_quadruple
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+	if test "x$ac_cv_func_string_to_decimal" != "xyes" || \
+	   test "x$ac_cv_func_decimal_to_quadruple" != "xyes" || \
+	   test "x$ac_cv_header_floatingpoint_h" != "xyes"; then
+		{ echo "$as_me:$LINENO: WARNING: You lack the strtold function -- precision will be impaired" >&5
+echo "$as_me: WARNING: You lack the strtold function -- precision will be impaired" >&2;}
+	fi
+    fi
+    if test "$have_mandatory_funcs" = yes; then
+	float_msg=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_WITH_LONG_DOUBLE 1
+_ACEOF
+
+    else
+	{ echo "$as_me:$LINENO: WARNING: Long double support disabled because of library problems" >&5
+echo "$as_me: WARNING: Long double support disabled because of library problems" >&2;}
+    fi
+    unset have_mandatory_funcs
+fi
+
+
+
+goffice_datadir='${datadir}/goffice/${VERSION}'
+
+goffice_libdir='${libdir}/goffice/${VERSION}'
+
+goffice_icondir='${datadir}/pixmaps/goffice'
+
+goffice_localedir='${prefix}/${DATADIRNAME}/locale'
+
+goffice_plugindir='${goffice_libdir}/plugins'
+
+goffice_gladedir='${goffice_datadir}/glade'
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GOFFICE_VERSION "0.0.4"
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GO_VERSION_EPOCH 0
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GO_VERSION_MAJOR 0
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GO_VERSION_MINOR 4
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define GO_VERSION_EXTRA ""
+_ACEOF
+
+
+                                                                                                                                                                                                                                                ac_config_files="$ac_config_files Makefile libgoffice-1.pc goffice/Makefile goffice/app/Makefile goffice/utils/Makefile goffice/data/Makefile goffice/gtk/Makefile goffice/graph/Makefile goffice/drawing/Makefile goffice/ms-compat/Makefile goffice/cut-n-paste/Makefile goffice/cut-n-paste/foocanvas/Makefile goffice/cut-n-paste/pcre/Makefile plugins/Makefile plugins/plot_barcol/Makefile plugins/plot_pie/Makefile plugins/plot_radar/Makefile plugins/plot_xy/Makefile plugins/plot_surface/Makefile plugins/plot_boxes/Makefile plugins/reg_linear/Makefile pixmaps/Makefile po/Makefile.in tests/Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+       mv -f po/POTFILES po/POTFILES.tmp
+        sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
+        rm -f po/POTFILES.tmp
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_CAIRO_TRUE}" && test -z "${WITH_CAIRO_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_CAIRO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_CAIRO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_GTK_TRUE}" && test -z "${WITH_GTK_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_GTK\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_GTK\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_GNOME_TRUE}" && test -z "${WITH_GNOME_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_GNOME\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_GNOME\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_WIN32_TRUE}" && test -z "${WITH_WIN32_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by goffice $as_me 0.0.4, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf at gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+goffice config.status 0.0.4
+configured by $0, generated by GNU Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
+MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
+XGETTEXT='${INTLTOOL_XGETTEXT}'
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "libgoffice-1.pc" ) CONFIG_FILES="$CONFIG_FILES libgoffice-1.pc" ;;
+  "goffice/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/Makefile" ;;
+  "goffice/app/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/app/Makefile" ;;
+  "goffice/utils/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/utils/Makefile" ;;
+  "goffice/data/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/data/Makefile" ;;
+  "goffice/gtk/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/gtk/Makefile" ;;
+  "goffice/graph/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/graph/Makefile" ;;
+  "goffice/drawing/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/drawing/Makefile" ;;
+  "goffice/ms-compat/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/ms-compat/Makefile" ;;
+  "goffice/cut-n-paste/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/cut-n-paste/Makefile" ;;
+  "goffice/cut-n-paste/foocanvas/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/cut-n-paste/foocanvas/Makefile" ;;
+  "goffice/cut-n-paste/pcre/Makefile" ) CONFIG_FILES="$CONFIG_FILES goffice/cut-n-paste/pcre/Makefile" ;;
+  "plugins/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;;
+  "plugins/plot_barcol/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/plot_barcol/Makefile" ;;
+  "plugins/plot_pie/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/plot_pie/Makefile" ;;
+  "plugins/plot_radar/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/plot_radar/Makefile" ;;
+  "plugins/plot_xy/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/plot_xy/Makefile" ;;
+  "plugins/plot_surface/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/plot_surface/Makefile" ;;
+  "plugins/plot_boxes/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/plot_boxes/Makefile" ;;
+  "plugins/reg_linear/Makefile" ) CONFIG_FILES="$CONFIG_FILES plugins/reg_linear/Makefile" ;;
+  "pixmaps/Makefile" ) CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;;
+  "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+  "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+  "intltool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+  "goffice/goffice-config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS goffice/goffice-config.h" ;;
+  "goffice/goffice-features.h" ) CONFIG_HEADERS="$CONFIG_HEADERS goffice/goffice-features.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s, at SHELL@,$SHELL,;t t
+s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s, at exec_prefix@,$exec_prefix,;t t
+s, at prefix@,$prefix,;t t
+s, at program_transform_name@,$program_transform_name,;t t
+s, at bindir@,$bindir,;t t
+s, at sbindir@,$sbindir,;t t
+s, at libexecdir@,$libexecdir,;t t
+s, at datadir@,$datadir,;t t
+s, at sysconfdir@,$sysconfdir,;t t
+s, at sharedstatedir@,$sharedstatedir,;t t
+s, at localstatedir@,$localstatedir,;t t
+s, at libdir@,$libdir,;t t
+s, at includedir@,$includedir,;t t
+s, at oldincludedir@,$oldincludedir,;t t
+s, at infodir@,$infodir,;t t
+s, at mandir@,$mandir,;t t
+s, at build_alias@,$build_alias,;t t
+s, at host_alias@,$host_alias,;t t
+s, at target_alias@,$target_alias,;t t
+s, at DEFS@,$DEFS,;t t
+s, at ECHO_C@,$ECHO_C,;t t
+s, at ECHO_N@,$ECHO_N,;t t
+s, at ECHO_T@,$ECHO_T,;t t
+s, at LIBS@,$LIBS,;t t
+s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s, at INSTALL_DATA@,$INSTALL_DATA,;t t
+s, at CYGPATH_W@,$CYGPATH_W,;t t
+s, at PACKAGE@,$PACKAGE,;t t
+s, at VERSION@,$VERSION,;t t
+s, at ACLOCAL@,$ACLOCAL,;t t
+s, at AUTOCONF@,$AUTOCONF,;t t
+s, at AUTOMAKE@,$AUTOMAKE,;t t
+s, at AUTOHEADER@,$AUTOHEADER,;t t
+s, at MAKEINFO@,$MAKEINFO,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at install_sh@,$install_sh,;t t
+s, at STRIP@,$STRIP,;t t
+s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s, at INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s, at AWK@,$AWK,;t t
+s, at SET_MAKE@,$SET_MAKE,;t t
+s, at am__leading_dot@,$am__leading_dot,;t t
+s, at GOFFICE_LIB_VERSION@,$GOFFICE_LIB_VERSION,;t t
+s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+s, at MAINT@,$MAINT,;t t
+s, at INTLTOOL_DESKTOP_RULE@,$INTLTOOL_DESKTOP_RULE,;t t
+s, at INTLTOOL_DIRECTORY_RULE@,$INTLTOOL_DIRECTORY_RULE,;t t
+s, at INTLTOOL_KEYS_RULE@,$INTLTOOL_KEYS_RULE,;t t
+s, at INTLTOOL_PROP_RULE@,$INTLTOOL_PROP_RULE,;t t
+s, at INTLTOOL_OAF_RULE@,$INTLTOOL_OAF_RULE,;t t
+s, at INTLTOOL_PONG_RULE@,$INTLTOOL_PONG_RULE,;t t
+s, at INTLTOOL_SERVER_RULE@,$INTLTOOL_SERVER_RULE,;t t
+s, at INTLTOOL_SHEET_RULE@,$INTLTOOL_SHEET_RULE,;t t
+s, at INTLTOOL_SOUNDLIST_RULE@,$INTLTOOL_SOUNDLIST_RULE,;t t
+s, at INTLTOOL_UI_RULE@,$INTLTOOL_UI_RULE,;t t
+s, at INTLTOOL_XAM_RULE@,$INTLTOOL_XAM_RULE,;t t
+s, at INTLTOOL_KBD_RULE@,$INTLTOOL_KBD_RULE,;t t
+s, at INTLTOOL_XML_RULE@,$INTLTOOL_XML_RULE,;t t
+s, at INTLTOOL_XML_NOMERGE_RULE@,$INTLTOOL_XML_NOMERGE_RULE,;t t
+s, at INTLTOOL_CAVES_RULE@,$INTLTOOL_CAVES_RULE,;t t
+s, at INTLTOOL_SCHEMAS_RULE@,$INTLTOOL_SCHEMAS_RULE,;t t
+s, at INTLTOOL_THEME_RULE@,$INTLTOOL_THEME_RULE,;t t
+s, at INTLTOOL_EXTRACT@,$INTLTOOL_EXTRACT,;t t
+s, at INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t
+s, at INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t
+s, at INTLTOOL_PERL@,$INTLTOOL_PERL,;t t
+s, at INTLTOOL_ICONV@,$INTLTOOL_ICONV,;t t
+s, at INTLTOOL_MSGFMT@,$INTLTOOL_MSGFMT,;t t
+s, at INTLTOOL_MSGMERGE@,$INTLTOOL_MSGMERGE,;t t
+s, at INTLTOOL_XGETTEXT@,$INTLTOOL_XGETTEXT,;t t
+s, at build@,$build,;t t
+s, at build_cpu@,$build_cpu,;t t
+s, at build_vendor@,$build_vendor,;t t
+s, at build_os@,$build_os,;t t
+s, at host@,$host,;t t
+s, at host_cpu@,$host_cpu,;t t
+s, at host_vendor@,$host_vendor,;t t
+s, at host_os@,$host_os,;t t
+s, at CC@,$CC,;t t
+s, at CFLAGS@,$CFLAGS,;t t
+s, at LDFLAGS@,$LDFLAGS,;t t
+s, at CPPFLAGS@,$CPPFLAGS,;t t
+s, at ac_ct_CC@,$ac_ct_CC,;t t
+s, at EXEEXT@,$EXEEXT,;t t
+s, at OBJEXT@,$OBJEXT,;t t
+s, at DEPDIR@,$DEPDIR,;t t
+s, at am__include@,$am__include,;t t
+s, at am__quote@,$am__quote,;t t
+s, at AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s, at AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s, at AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s, at CCDEPMODE@,$CCDEPMODE,;t t
+s, at am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s, at am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s, at YACC@,$YACC,;t t
+s, at LEX@,$LEX,;t t
+s, at LEXLIB@,$LEXLIB,;t t
+s, at LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t
+s, at LN_S@,$LN_S,;t t
+s, at EGREP@,$EGREP,;t t
+s, at ECHO@,$ECHO,;t t
+s, at AR@,$AR,;t t
+s, at ac_ct_AR@,$ac_ct_AR,;t t
+s, at RANLIB@,$RANLIB,;t t
+s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s, at CPP@,$CPP,;t t
+s, at CXX@,$CXX,;t t
+s, at CXXFLAGS@,$CXXFLAGS,;t t
+s, at ac_ct_CXX@,$ac_ct_CXX,;t t
+s, at CXXDEPMODE@,$CXXDEPMODE,;t t
+s, at am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s, at am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s, at CXXCPP@,$CXXCPP,;t t
+s, at F77@,$F77,;t t
+s, at FFLAGS@,$FFLAGS,;t t
+s, at ac_ct_F77@,$ac_ct_F77,;t t
+s, at LIBTOOL@,$LIBTOOL,;t t
+s, at ACLOCAL_AMFLAGS@,$ACLOCAL_AMFLAGS,;t t
+s, at PKG_CONFIG@,$PKG_CONFIG,;t t
+s, at ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t
+s, at CAIRO_CFLAGS@,$CAIRO_CFLAGS,;t t
+s, at CAIRO_LIBS@,$CAIRO_LIBS,;t t
+s, at GTK_CFLAGS@,$GTK_CFLAGS,;t t
+s, at GTK_LIBS@,$GTK_LIBS,;t t
+s, at GNOME_CFLAGS@,$GNOME_CFLAGS,;t t
+s, at GNOME_LIBS@,$GNOME_LIBS,;t t
+s, at WITH_CAIRO_TRUE@,$WITH_CAIRO_TRUE,;t t
+s, at WITH_CAIRO_FALSE@,$WITH_CAIRO_FALSE,;t t
+s, at WITH_GTK_TRUE@,$WITH_GTK_TRUE,;t t
+s, at WITH_GTK_FALSE@,$WITH_GTK_FALSE,;t t
+s, at WITH_GNOME_TRUE@,$WITH_GNOME_TRUE,;t t
+s, at WITH_GNOME_FALSE@,$WITH_GNOME_FALSE,;t t
+s, at GOFFICE_CFLAGS@,$GOFFICE_CFLAGS,;t t
+s, at GOFFICE_LIBS@,$GOFFICE_LIBS,;t t
+s, at RENDER_LIBS@,$RENDER_LIBS,;t t
+s, at WINDRES@,$WINDRES,;t t
+s, at ac_ct_WINDRES@,$ac_ct_WINDRES,;t t
+s, at WITH_WIN32_TRUE@,$WITH_WIN32_TRUE,;t t
+s, at WITH_WIN32_FALSE@,$WITH_WIN32_FALSE,;t t
+s, at GOFFICE_PLUGIN_LDFLAGS@,$GOFFICE_PLUGIN_LDFLAGS,;t t
+s, at GOFFICE_PLUGIN_LIBADD@,$GOFFICE_PLUGIN_LIBADD,;t t
+s, at GLIB_GENMARSHAL@,$GLIB_GENMARSHAL,;t t
+s, at GDK_PIXBUF_CSOURCE@,$GDK_PIXBUF_CSOURCE,;t t
+s, at WARN_CFLAGS@,$WARN_CFLAGS,;t t
+s, at ALL_LINGUAS@,$ALL_LINGUAS,;t t
+s, at GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t
+s, at USE_NLS@,$USE_NLS,;t t
+s, at MSGFMT@,$MSGFMT,;t t
+s, at GMSGFMT@,$GMSGFMT,;t t
+s, at XGETTEXT@,$XGETTEXT,;t t
+s, at CATALOGS@,$CATALOGS,;t t
+s, at CATOBJEXT@,$CATOBJEXT,;t t
+s, at DATADIRNAME@,$DATADIRNAME,;t t
+s, at GMOFILES@,$GMOFILES,;t t
+s, at INSTOBJEXT@,$INSTOBJEXT,;t t
+s, at INTLLIBS@,$INTLLIBS,;t t
+s, at PO_IN_DATADIR_TRUE@,$PO_IN_DATADIR_TRUE,;t t
+s, at PO_IN_DATADIR_FALSE@,$PO_IN_DATADIR_FALSE,;t t
+s, at POFILES@,$POFILES,;t t
+s, at POSUB@,$POSUB,;t t
+s, at MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+s, at EXTRA_LIBS@,$EXTRA_LIBS,;t t
+s, at EXTRA_INCLUDES@,$EXTRA_INCLUDES,;t t
+s, at goffice_datadir@,$goffice_datadir,;t t
+s, at goffice_libdir@,$goffice_libdir,;t t
+s, at goffice_icondir@,$goffice_icondir,;t t
+s, at goffice_localedir@,$goffice_localedir,;t t
+s, at goffice_plugindir@,$goffice_plugindir,;t t
+s, at goffice_gladedir@,$goffice_gladedir,;t t
+s, at LIBOBJS@,$LIBOBJS,;t t
+s, at LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at abs_srcdir@,$ac_abs_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s, at builddir@,$ac_builddir,;t t
+s, at abs_builddir@,$ac_abs_builddir,;t t
+s, at top_builddir@,$ac_top_builddir,;t t
+s, at abs_top_builddir@,$ac_abs_top_builddir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
+ac_dB='[	 ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 # Do quote $f, to prevent DOS paths from being IFS'd.
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*\)\(([^)]*)\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[	 ]*#[	 ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[	 ]*#[	 ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X$ac_file : 'X\(//\)[^/]' \| \
+	 X$ac_file : 'X\(//\)$' \| \
+	 X$ac_file : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_dest" : 'X\(//\)[^/]' \| \
+	 X"$ac_dest" : 'X\(//\)$' \| \
+	 X"$ac_dest" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    intltool )
+
+intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
+               -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
+               -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
+               -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
+               -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
+               -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+  > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+  rm -f intltool-extract.out
+else
+  mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+  > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+  rm -f intltool-merge.out
+else
+  mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+  > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+  rm -f intltool-update.out
+else
+  mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+ ;;
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+	s/\\\\$//
+	p
+	n
+	/\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+    default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*)
+        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+      esac ;;
+  esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+echo "
+
+Configuration:
+
+	Source code location:	${srcdir}
+	Compiler:		${CC}
+	Compiler flags:		${CFLAGS}
+	Long double support:	${float_msg}
+
+	Cairo support:		${cairo_msg}
+	UI:			${ui_msg}
+"


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/configure
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/configure.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/configure.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/configure.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,503 @@
+-*- mode: m4 -*-
+dnl We require Automake 1.7.2, which requires Autoconf 2.54.
+dnl (It needs _AC_AM_CONFIG_HEADER_HOOK, for example.)
+AC_PREREQ(2.54)
+
+m4_define([goffice_version_epoch], [0])
+m4_define([goffice_version_major], [0])
+m4_define([goffice_version_minor], [4])
+m4_define([goffice_version_extra], [])
+m4_define([goffice_full_version],
+    [goffice_version_epoch.goffice_version_major.goffice_version_minor[]goffice_version_extra])
+
+dnl Emphasize some of the checks.
+m4_define([BIG_CHECKING], [AC_MSG_CHECKING([
+======== $1])])
+
+AC_INIT([goffice], [goffice_full_version],
+	[http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice])
+
+AC_CONFIG_SRCDIR(goffice/goffice.h)
+AM_INIT_AUTOMAKE([dist-bzip2])
+
+dnl Version info for libraries = CURRENT:REVISION:AGE
+dnl
+dnl FIXME: This formula is wrong.  --kasal
+dnl
+AC_SUBST(GOFFICE_LIB_VERSION,
+m4_eval(goffice_version_epoch + goffice_version_major)[]dnl
+:goffice_version_minor:goffice_version_major)
+
+dnl This one is created by autoheader, ...
+AC_CONFIG_HEADERS(goffice/goffice-config.h)
+
+dnl ... and this one is a small subset, maintained manually,
+dnl which will be installed.
+AC_CONFIG_HEADERS(goffice/goffice-features.h)
+dnl
+dnl Make sure these two won't clash.  Put the following to goffice-config.h:
+AH_BOTTOM([/* Don't include goffice-features.h, it's a subset of goffice-config.h. */
+#define GOFFICE_FEATURES_H])
+
+AM_MAINTAINER_MODE
+
+# Make --disable-static the default
+AC_DISABLE_STATIC
+
+dnl We need intltool >= 0.27.2 to extract the UTF-8 chars from source code
+AC_PROG_INTLTOOL([0.27.2])
+
+dnl We use $host_os:
+AC_CANONICAL_HOST
+
+AC_ISC_POSIX
+AC_PROG_CC
+AC_PROG_YACC
+AM_PROG_LEX
+AC_PROG_LN_S
+AM_PROG_LIBTOOL
+AC_STDC_HEADERS
+AC_SYS_LARGEFILE
+
+dnl Propagate Gnome-specific variable ACLOCAL_FLAGS to Makefile.
+AC_SUBST(ACLOCAL_AMFLAGS, $ACLOCAL_FLAGS)
+
+dnl The first call to PKG_CHECK_MODULES is inside an `if.'
+dnl We have to call PKG_PROG_PKG_CONFIG explicitly; otherwise it would
+dnl get expanded just before the first occurence of PKG_CHECK_MODULES
+dnl and might escape execution.
+PKG_PROG_PKG_CONFIG
+
+dnl *****************************
+goffice_reqs="
+	glib-2.0		>= 2.4.8
+	gobject-2.0		>= 2.4.8
+	gmodule-2.0		>= 2.4.8
+	libgsf-1		>= 1.12.2
+	libxml-2.0		>= 2.4.12
+	pango			>= 1.6.0
+	pangoft2		>= 1.6.0
+"
+goffice_cairo_reqs="
+	cairo			>= 0.5.0
+"
+goffice_gtk_reqs="
+	gtk+-2.0		>= 2.4.14
+	libglade-2.0		>= 2.3.6
+	libgnomeprint-2.2	>= 2.8.2
+	libart-2.0		>= 2.3.11
+"
+goffice_gnome_reqs="
+	gconf-2.0
+	libgnomeui-2.0		>= 2.0.0
+	libgsf-gnome-1		>= 1.12.2
+"
+
+dnl *********************
+dnl Should we use cairo ?
+dnl *********************
+goffice_with_cairo=false
+AC_ARG_WITH(cairo, [  --{with,without}-cairo  Use cairo for graph rendering])
+if test "x$with_cairo" = xyes; then
+	cairo_msg="Enabled"
+	PKG_CHECK_MODULES(CAIRO, [$goffice_cairo_reqs])
+	AC_DEFINE(WITH_CAIRO, 1, [Define if goffice is build with cairo])
+	goffice_reqs="$goffice_reqs $goffice_cairo_reqs"
+	goffice_with_cairo=true
+else
+	cairo_msg="Disabled"
+	goffice_with_cairo=false
+fi 
+
+dnl *******************
+dnl Should we use gtk ?
+dnl *******************
+goffice_with_gtk=true
+AC_ARG_WITH(gtk, [  --without-gtk           Build without UI])
+if test "x$with_gtk" = xno; then
+	ui_msg="None (Gtk disabled by request)"
+	goffice_with_gtk=false
+else
+	dnl We shouldn't silently default to --without-gtk.
+	dnl If the requirements are not met, fail.
+	ui_msg="Gtk"
+	PKG_CHECK_MODULES(GTK, [$goffice_gtk_reqs])
+fi 
+
+goffice_with_gnome=$goffice_with_gtk
+if test "x$goffice_with_gtk" = "xtrue" ; then
+	AC_DEFINE(WITH_GTK, 1, [Define if UI is built])
+	goffice_reqs="$goffice_reqs $goffice_gtk_reqs"
+
+	dnl ************************************
+	dnl Are the GNOME extensions available ?
+	dnl ************************************
+
+	goffice_with_gnome=true
+	AC_ARG_WITH(gnome,
+		[  --{with,without}-gnome  Use GNOME extensions],
+		[if test "x$withval" = xno; then
+			goffice_with_gnome=false
+			ui_msg="Gtk+ (Gnome disabled by request)"
+		fi]
+	)
+	if test "x$goffice_with_gnome" = "xtrue"; then
+		PKG_CHECK_MODULES(GNOME, [$goffice_gnome_reqs],
+			[ui_msg="Gnome"],
+			[ui_msg="Gtk (missing gnome dependencies)" ; goffice_with_gnome=false])
+	fi
+
+	if test "x$goffice_with_gnome" = "xtrue"; then
+		AC_DEFINE(WITH_GNOME, 1, [Define if GNOME extensions are available])
+		goffice_reqs="$goffice_reqs $goffice_gnome_reqs"
+	fi
+fi
+AM_CONDITIONAL(WITH_CAIRO, $goffice_with_cairo)
+AM_CONDITIONAL(WITH_GTK,   $goffice_with_gtk)
+AM_CONDITIONAL(WITH_GNOME, $goffice_with_gnome)
+
+dnl ****************************
+dnl now that we have selected out libraries the whole collection in one
+dnl shot so that we can have a nice neat compile/link line
+dnl ****************************
+
+PKG_CHECK_MODULES(GOFFICE, $goffice_reqs)
+
+dnl  Checks for Xft/XRender
+AC_CHECK_LIB(Xrender, XRenderFindFormat, 
+	[AC_SUBST(RENDER_LIBS, "-lXrender -lXext")
+	 AC_DEFINE(HAVE_RENDER, 1, [Define if libXrender is available.])],
+	[AC_SUBST(RENDER_LIBS, "")],
+	[-lXext])
+
+dnl *****************************
+AC_MSG_CHECKING([for Win32 platform])
+with_win32=no
+case $host_os in
+  mingw* | pw32* | cygwin*)
+    with_win32=yes
+    GOFFICE_PLUGIN_LDFLAGS="-Wl,--enable-runtime-pseudo-relo,--export-all-symbols $GOFFICE_PLUGIN_LDFLAGS"
+    AC_ARG_VAR(WINDRES, [The windres executable (used by win32 builds only).])
+    AC_CHECK_TOOL(WINDRES, windres, :)
+    ;;
+esac
+AC_MSG_RESULT($with_win32)
+AM_CONDITIONAL(WITH_WIN32, test $with_win32 = yes)
+
+dnl *****************************
+dnl FIXME: perhaps declare with AC_ARG_VAR?
+dnl	   If we use the initial value of a variable, we have to make it precious.
+dnl
+GOFFICE_PLUGIN_LDFLAGS="-avoid-version -no-undefined $GOFFICE_PLUGIN_LDFLAGS"
+GOFFICE_PLUGIN_LIBADD="\$(top_builddir)/goffice/libgoffice-1.la $GOFFICE_LIBS $GOFFICE_PLUGIN_LIBADD"
+AC_SUBST(GOFFICE_PLUGIN_LDFLAGS)
+AC_SUBST(GOFFICE_PLUGIN_LIBADD)
+
+dnl disable for in stable release, re-enable for development series
+CFLAGS="$CFLAGS -DG_DISABLE_DEPRECATED"
+CFLAGS="$CFLAGS -DPANGO_DISABLE_DEPRECATED"
+if test "x$goffice_with_gtk" = "xtrue"; then
+	CFLAGS="$CFLAGS -DGDK_PIXBUF_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DGDK_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DGDK_MULTIHEAD_SAFE"
+	CFLAGS="$CFLAGS -DGTK_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DLIBGLADE_DISABLE_DEPRECATED"
+fi
+if test "x$goffice_with_gnome" = "xtrue"; then
+	CFLAGS="$CFLAGS -DGNOME_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DBONOBO_DISABLE_DEPRECATED"
+	CFLAGS="$CFLAGS -DBONOBO_UI_DISABLE_DEPRECATED"
+fi
+
+dnl ****************************
+dnl prep the pixmap generator
+dnl ****************************
+
+AC_ARG_VAR(GLIB_GENMARSHAL, [The glib-genmarshal executable.])
+AC_CHECK_PROG(GLIB_GENMARSHAL, glib-genmarshal, glib-genmarshal)
+
+AC_ARG_VAR(GDK_PIXBUF_CSOURCE, [The gdk-pixbuf-csource executable.])
+AC_CHECK_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, gdk-pixbuf-csource)
+
+## this should come after `AC_PROG_CC'
+ifdef([GNOME_COMPILE_WARNINGS],
+	[GNOME_COMPILE_WARNINGS] CFLAGS="$CFLAGS $WARN_CFLAGS",
+	[]
+)
+set_more_warnings=yes
+if test "$GCC" = "yes" -a "x$set_more_warnings" != "xno"; then
+	for option in -Wsign-compare -Wpointer-arith -Wnested-externs -Wchar-subscripts -Wwrite-strings -Wdeclaration-after-statement -Wmissing-noreturn -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-format-attribute; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		AC_MSG_CHECKING([whether gcc understands $option])
+		AC_TRY_COMPILE([], [],
+			has_option=yes,
+			has_option=no,)
+		if test $has_option = no; then
+		  CFLAGS="$SAVE_CFLAGS"
+		fi
+		AC_MSG_RESULT($has_option)
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+fi
+AC_SUBST(WARN_CFLAGS)
+
+AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
+if test $fdopen_works = no ; then
+	unset ac_cv_have_decl_fdopen
+	CFLAGS="$CFLAGS -D_POSIX_SOURCE"
+	AC_MSG_NOTICE([adding -D_POSIX_SOURCE to CFLAGS])
+	AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
+	if test $fdopen_works = no ; then
+		AC_MSG_ERROR([fdopen is not available])
+	fi
+fi
+
+# Unfortunately, -D_POSIX_SOURCE turns off struct timeval on Solaris
+AC_MSG_CHECKING([whether struct timeval is available])
+AC_TRY_COMPILE([#include <sys/time.h>], [struct timeval tv;], struct_timeval_works=yes, struct_timeval_works=no)
+AC_MSG_RESULT($struct_timeval_works)
+
+if test $struct_timeval_works = no ; then
+	CFLAGS="$CFLAGS -D__EXTENSIONS__"
+	AC_MSG_CHECKING([whether struct timeval is available with -D__EXTENSIONS__])
+	AC_TRY_COMPILE([#include <sys/time.h>], [struct timeval tv;], struct_timeval_works=yes, struct_timeval_works=no)
+	AC_MSG_RESULT($struct_timeval_works)
+	if test $struct_timeval_works = no ; then
+		AC_MSG_ERROR([struct timeval is not available])
+	fi
+fi
+
+AC_CHECK_FUNC(gettimeofday,
+	[AC_DEFINE(HAVE_GETTIMEOFDAY, 1,
+		[Define if the gettimeofday function is available]
+	)])
+
+dnl M_PI
+AC_MSG_CHECKING([whether M_PI is available])
+AC_TRY_COMPILE([#include <math.h>], [double f = M_PI], works_without_bsd_source=yes, works_without_bsd_source=no)
+AC_MSG_RESULT($works_without_bsd_source)
+
+if test $works_without_bsd_source = no ; then
+	CFLAGS="$CFLAGS -D_BSD_SOURCE"
+	AC_MSG_CHECKING([whether M_PI is available with -D_BSD_SOURCE])
+	AC_TRY_COMPILE([#include <math.h>], [double f = M_PI], m_pi_works=yes, m_pi_works=no)
+	AC_MSG_RESULT($m_pi_works)
+	if test $m_pi_works = no ; then
+		AC_MSG_ERROR([M_PI is not available])
+	fi
+fi
+
+dnl **************************************************
+AC_SUBST(ALL_LINGUAS,
+"am az bg ca cs da de el en_CA en_GB es et fi fr ga gl he hr hu it ja ko lv ml mr ms nb nl nn no pl pt pt_BR ro ru sk sr sr at Latn sv tr uk vi zh_CN zh_TW")
+
+AC_SUBST(GETTEXT_PACKAGE, goffice)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
+	[The package name, for gettext])
+AM_GLIB_GNU_GETTEXT
+
+dnl
+dnl On Solaris finite() needs ieeefp.h
+dnl Either of these seem to signal IEEE754 math, see mathfunc.c
+dnl
+AC_CHECK_HEADERS(ieeefp.h ieee754.h)
+
+dnl Check for some functions
+AC_CHECK_FUNCS(random drand48 finite memmove mkdtemp uname times sysconf)
+
+dnl FIXME: Does this really belong here?
+AC_CHECK_FUNC(bind_textdomain_codeset,,[AC_CHECK_LIB(intl,bind_textdomain_codeset)])
+
+dnl isfinite is a macro on HPUX
+AC_TRY_COMPILE([#include <math.h>], [int a = isfinite(0.0)],
+	[AC_DEFINE(HAVE_ISFINITE, 1,
+		[Define if the isfinite() macro is available]
+	 )
+	], [])
+
+dnl
+dnl On BSD, we seem to need -lm for finite
+dnl
+if test $ac_cv_func_finite = no; then
+  AC_CHECK_LIB(m, finite,
+        [AC_DEFINE(HAVE_FINITE, 1,
+		[Define if the finite function is available]
+	 )
+         LIBS="$LIBS -lm"])
+fi
+
+dnl check for complete locale implementation
+AC_CHECK_HEADERS(langinfo.h)
+
+dnl Handle systems that have stuff in -lm.
+AC_CHECK_FUNCS(log)
+if test $ac_cv_func_log = no; then
+  AC_CHECK_LIB(m, log,
+        [AC_DEFINE(HAVE_LOG, 1,
+		[Define if the log function is available]
+	 )
+         LIBS="$LIBS -lm"])
+fi
+
+AC_DEFUN([GOFFICE_CHECK_FUNC],
+[AC_CHECK_FUNC([$1],
+	[],
+	[AC_DEFINE([GOFFICE_SUPPLIED_]AS_TR_CPP([$1]),
+		1,
+		[Define if G Office supplies $1.])])dnl
+])
+GOFFICE_CHECK_FUNC(log1p)
+GOFFICE_CHECK_FUNC(expm1)
+GOFFICE_CHECK_FUNC(asinh)
+GOFFICE_CHECK_FUNC(acosh)
+GOFFICE_CHECK_FUNC(atanh)
+
+float_msg=no
+EXTRA_LIBS= EXTRA_INCLUDES=
+AC_C_LONG_DOUBLE
+if test $ac_cv_c_long_double = yes; then
+    have_mandatory_funcs=yes
+    need_sunmath=0
+    sunmathlinkstuff='-L/opt/SUNWspro/lib -R/opt/SUNWspro/lib -lsunmath'
+    for ldfunc in fabsl logl log10l ceill floorl powl isnanl finitel; do
+	    AC_CHECK_FUNC($ldfunc,
+		  ,
+		  [AC_CHECK_LIB(m,
+		      $ldfunc,
+		      ,
+		      [AC_CHECK_LIB(sunmath,
+			  $ldfunc,
+			  [ if test $need_sunmath = 0; then
+				# FIXME: better idea?
+				LDFLAGS="$LDFLAGS $sunmathlinkstuff"
+				sunmathinclude=`ls -d /opt/SUNWspro/*/include/cc | sed '$!d'`
+				CPPFLAGS="$CPPFLAGS -I$sunmathinclude"
+			    fi
+			    need_sunmath=1 ],
+			  [have_mandatory_funcs=no],
+			  [-L/opt/SUNWspro/lib $GOFFICE_LIBS])])])
+    done
+    if test $need_sunmath = 1; then
+	EXTRA_LIBS="$EXTRA_LIBS $sunmathlinkstuff"
+	EXTRA_INCLUDES="$EXTRA_INCLUDES -I$sunmathinclude"
+	AC_CHECK_HEADERS([sunmath.h floatingpoint.h],
+			 ,
+			 [AC_MSG_WARN([Long doubles require the $ac_header header.])
+			  have_mandatory_funcs=no])
+    fi
+    unset need_sunmath
+    unset sunmathlinkstuff
+    unset sunmathinclude
+
+    GOFFICE_CHECK_FUNC(modfl)
+    GOFFICE_CHECK_FUNC(ldexpl)
+    GOFFICE_CHECK_FUNC(frexpl)
+
+    AC_CHECK_FUNCS(strtold)
+    if test "$ac_cv_func_strtold" = yes; then
+	AC_MSG_CHECKING([if we must prototype strtold ourselves])
+	AC_TRY_RUN([#include <stdlib.h>
+		int main ()
+		{
+			const char *s = "+3.1415e+0";
+			char *theend;
+			long double res = strtold (s, &theend);
+			return !(*theend == 0 && finitel (res) &&
+				 res >= 3.14 && res <= 3.15);
+		}],
+		[AC_MSG_RESULT(no)],
+		[AC_MSG_RESULT(yes)
+		 AC_DEFINE([GOFFICE_SUPPLIED_STRTOLD], 1,
+			   [Define if G Office supplies strtold.])
+		],
+		[AC_MSG_RESULT(assuming not)])
+    else 
+	AC_DEFINE([GOFFICE_SUPPLIED_STRTOLD], 1,
+		  [Define if G Office supplies strtold.])
+	AC_CHECK_FUNCS(string_to_decimal decimal_to_quadruple)
+	if test "x$ac_cv_func_string_to_decimal" != "xyes" || \
+	   test "x$ac_cv_func_decimal_to_quadruple" != "xyes" || \
+	   test "x$ac_cv_header_floatingpoint_h" != "xyes"; then
+		AC_MSG_WARN([You lack the strtold function -- precision will be impaired])
+	fi
+    fi
+    if test "$have_mandatory_funcs" = yes; then
+	float_msg=yes
+	AC_DEFINE([GOFFICE_WITH_LONG_DOUBLE], 1,
+		  [Define if G Office supports long double.])
+    else
+	AC_MSG_WARN([Long double support disabled because of library problems])
+    fi
+    unset have_mandatory_funcs
+fi
+AC_SUBST(EXTRA_LIBS)
+AC_SUBST(EXTRA_INCLUDES)
+
+dnl ******************
+dnl * Config defaults
+dnl ******************
+dnl
+dnl These are changed in goffice.c for WIN32 packages
+AC_SUBST(goffice_datadir, '${datadir}/goffice/${VERSION}')
+AC_SUBST(goffice_libdir, '${libdir}/goffice/${VERSION}')
+AC_SUBST(goffice_icondir, '${datadir}/pixmaps/goffice')
+AC_SUBST(goffice_localedir, '${prefix}/${DATADIRNAME}/locale')
+dnl
+AC_SUBST(goffice_plugindir, '${goffice_libdir}/plugins')
+AC_SUBST(goffice_gladedir, '${goffice_datadir}/glade')
+
+dnl Export to goffice-config.h and goffice-features.h
+AC_DEFINE(GOFFICE_VERSION, "goffice_full_version",
+	[The version number of this release, possibly with additional suffix])
+AC_DEFINE(GO_VERSION_EPOCH, goffice_version_epoch,
+	[The Epoch of this release])
+AC_DEFINE(GO_VERSION_MAJOR, goffice_version_major,
+	[The Major version number of this release])
+AC_DEFINE(GO_VERSION_MINOR, goffice_version_minor,
+	[The Minor version number of this release])
+AC_DEFINE(GO_VERSION_EXTRA, "goffice_version_extra",
+	[Extra, possibly empty tag for this release])
+
+AC_CONFIG_FILES([
+Makefile
+libgoffice-1.pc
+goffice/Makefile
+goffice/app/Makefile
+goffice/utils/Makefile
+goffice/data/Makefile
+goffice/gtk/Makefile
+goffice/graph/Makefile
+goffice/drawing/Makefile
+goffice/ms-compat/Makefile
+goffice/cut-n-paste/Makefile
+goffice/cut-n-paste/foocanvas/Makefile
+goffice/cut-n-paste/pcre/Makefile
+plugins/Makefile
+plugins/plot_barcol/Makefile
+plugins/plot_pie/Makefile
+plugins/plot_radar/Makefile
+plugins/plot_xy/Makefile
+plugins/plot_surface/Makefile
+plugins/plot_boxes/Makefile
+plugins/reg_linear/Makefile
+pixmaps/Makefile
+po/Makefile.in
+tests/Makefile
+])
+AC_OUTPUT
+
+echo "
+
+Configuration:
+
+	Source code location:	${srcdir}
+	Compiler:		${CC}
+	Compiler flags:		${CFLAGS}
+	Long double support:	${float_msg}
+
+	Cairo support:		${cairo_msg}
+	UI:			${ui_msg}
+"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/depcomp
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/depcomp	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/depcomp	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,479 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/depcomp
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,59 @@
+SUBDIRS = utils data app graph gtk drawing ms-compat cut-n-paste
+
+lib_LTLIBRARIES = libgoffice-1.la
+
+libgoffice_1_la_LIBADD = 			\
+	cut-n-paste/pcre/libpcre.la		\
+	utils/libgoffice-utils.la		\
+	app/libgoffice-app.la			\
+	data/libgoffice-data.la			\
+	gtk/libgoffice-gtk.la			\
+	cut-n-paste/foocanvas/libfoocanvas.la		\
+	graph/libgoffice-graph.la		\
+	drawing/libgoffice-drawing.la		\
+	ms-compat/libgoffice-ms-compat.la	\
+	$(GOFFICE_DEPS_LIBS)
+
+libgoffice_1_la_LDFLAGS = -version-info $(GOFFICE_LIB_VERSION)
+if WITH_WIN32
+libgoffice_1_la_LDFLAGS += -no-undefined -Wl,-export-all-symbols
+libgoffice_1_la_LIBADD += utils/libgoffice-win32-stub.la
+endif
+
+BUILT_SOURCES =	goffice-paths.h
+CLEANFILES = $(BUILT_SOURCES)
+
+libgoffice_1_la_SOURCES = 	\
+	$(BUILT_SOURCES)	\
+	goffice.c		\
+	goffice-priv.h
+if !HAVE_GLIB26
+  libgoffice_1_la_SOURCES += glib24_26-compat.c
+endif
+
+libgoffice_1_ladir = $(goffice_include_dir)
+libgoffice_1_la_HEADERS = 	\
+	goffice-features.h	\
+	goffice.h
+if !HAVE_GLIB26
+  libgoffice_1_la_HEADERS += glib24_26-compat.h
+endif
+
+# Depends on this Makefile, because it uses make variables.
+goffice-paths.h: Makefile
+	@echo 'creating $@'
+	@( \
+	echo '/* This file has been automatically generated.  Do not edit. */'; \
+	echo ''; \
+	echo '#ifndef GOFFICE_PATHS_H'; \
+	echo '#define GOFFICE_PATHS_H'; \
+	echo ''; \
+	echo '#define GOFFICE_DATADIR "$(goffice_datadir)"'; \
+	echo '#define GOFFICE_LIBDIR "$(goffice_libdir)"'; \
+	echo '#define GOFFICE_ICONDIR "$(goffice_icondir)"'; \
+	echo '#define GOFFICE_LOCALEDIR "$(goffice_localedir)"'; \
+	echo ''; \
+	echo '#endif /* GOFFICE_PATHS_H */'; \
+	) >$@
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,753 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ at WITH_WIN32_TRUE@am__append_1 = -no-undefined -Wl,-export-all-symbols
+ at WITH_WIN32_TRUE@am__append_2 = utils/libgoffice-win32-stub.la
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = utils data app graph gtk drawing ms-compat cut-n-paste
+
+lib_LTLIBRARIES = libgoffice-1.la
+
+libgoffice_1_la_LIBADD = \
+	cut-n-paste/pcre/libpcre.la		\
+	utils/libgoffice-utils.la		\
+	app/libgoffice-app.la			\
+	data/libgoffice-data.la			\
+	gtk/libgoffice-gtk.la			\
+	cut-n-paste/foocanvas/libfoocanvas.la		\
+	graph/libgoffice-graph.la		\
+	drawing/libgoffice-drawing.la		\
+	ms-compat/libgoffice-ms-compat.la	\
+	$(GOFFICE_LIBS)\
+$(am__append_2)
+
+libgoffice_1_la_LDFLAGS = -version-info $(GOFFICE_LIB_VERSION) $(am__append_1)
+
+BUILT_SOURCES = goffice-paths.h
+CLEANFILES = $(BUILT_SOURCES)
+
+libgoffice_1_la_SOURCES = \
+	$(BUILT_SOURCES)	\
+	goffice.c		\
+	goffice-priv.h
+
+
+libgoffice_1_ladir = $(goffice_include_dir)
+libgoffice_1_la_HEADERS = \
+	goffice-features.h	\
+	goffice.h
+
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = goffice-config.h goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+ at WITH_WIN32_TRUE@libgoffice_1_la_DEPENDENCIES = \
+ at WITH_WIN32_TRUE@	cut-n-paste/pcre/libpcre.la \
+ at WITH_WIN32_TRUE@	utils/libgoffice-utils.la \
+ at WITH_WIN32_TRUE@	app/libgoffice-app.la data/libgoffice-data.la \
+ at WITH_WIN32_TRUE@	gtk/libgoffice-gtk.la \
+ at WITH_WIN32_TRUE@	cut-n-paste/foocanvas/libfoocanvas.la \
+ at WITH_WIN32_TRUE@	graph/libgoffice-graph.la \
+ at WITH_WIN32_TRUE@	drawing/libgoffice-drawing.la \
+ at WITH_WIN32_TRUE@	ms-compat/libgoffice-ms-compat.la \
+ at WITH_WIN32_TRUE@	utils/libgoffice-win32-stub.la
+ at WITH_WIN32_FALSE@libgoffice_1_la_DEPENDENCIES = \
+ at WITH_WIN32_FALSE@	cut-n-paste/pcre/libpcre.la \
+ at WITH_WIN32_FALSE@	utils/libgoffice-utils.la \
+ at WITH_WIN32_FALSE@	app/libgoffice-app.la data/libgoffice-data.la \
+ at WITH_WIN32_FALSE@	gtk/libgoffice-gtk.la \
+ at WITH_WIN32_FALSE@	cut-n-paste/foocanvas/libfoocanvas.la \
+ at WITH_WIN32_FALSE@	graph/libgoffice-graph.la \
+ at WITH_WIN32_FALSE@	drawing/libgoffice-drawing.la \
+ at WITH_WIN32_FALSE@	ms-compat/libgoffice-ms-compat.la
+am__objects_1 =
+am_libgoffice_1_la_OBJECTS = $(am__objects_1) goffice.lo
+libgoffice_1_la_OBJECTS = $(am_libgoffice_1_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I. -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/goffice.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgoffice_1_la_SOURCES)
+HEADERS = $(libgoffice_1_la_HEADERS)
+
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = $(libgoffice_1_la_HEADERS) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice.mk Makefile.am goffice-config.h.in \
+	goffice-features.h.in
+DIST_SUBDIRS = $(SUBDIRS)
+SOURCES = $(libgoffice_1_la_SOURCES)
+
+all: $(BUILT_SOURCES) goffice-config.h goffice-features.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+goffice-config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/goffice-config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status goffice/goffice-config.h
+
+$(srcdir)/goffice-config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	touch $(srcdir)/goffice-config.h.in
+
+goffice-features.h: stamp-h2
+	@if test ! -f $@; then \
+	  rm -f stamp-h2; \
+	  $(MAKE) stamp-h2; \
+	else :; fi
+
+stamp-h2: $(srcdir)/goffice-features.h.in $(top_builddir)/config.status
+	@rm -f stamp-h2
+	cd $(top_builddir) && $(SHELL) ./config.status goffice/goffice-features.h
+
+$(srcdir)/goffice-features.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	touch $(srcdir)/goffice-features.h.in
+
+distclean-hdr:
+	-rm -f goffice-config.h stamp-h1 goffice-features.h stamp-h2
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-1.la: $(libgoffice_1_la_OBJECTS) $(libgoffice_1_la_DEPENDENCIES) 
+	$(LINK) -rpath $(libdir) $(libgoffice_1_la_LDFLAGS) $(libgoffice_1_la_OBJECTS) $(libgoffice_1_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/goffice.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgoffice_1_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_1_laHEADERS: $(libgoffice_1_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_1_ladir)
+	@list='$(libgoffice_1_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_1_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_1_ladir)/$$f"; \
+	  $(libgoffice_1_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_1_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_1_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_1_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_1_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_1_ladir)/$$f; \
+	done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) goffice-config.h.in goffice-features.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	else \
+	  include_option=--include; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS) goffice-config.h.in goffice-features.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) goffice-config.h.in goffice-features.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) goffice-config.h.in goffice-features.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LTLIBRARIES) $(HEADERS) goffice-config.h \
+		goffice-features.h
+installdirs: installdirs-recursive
+installdirs-am:
+	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(libgoffice_1_ladir)
+
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-libgoffice_1_laHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgoffice_1_laHEADERS
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libLTLIBRARIES clean-libtool \
+	clean-recursive ctags ctags-recursive distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-recursive distclean-tags distdir \
+	dvi dvi-am dvi-recursive info info-am info-recursive install \
+	install-am install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
+	install-info install-info-am install-info-recursive \
+	install-libLTLIBRARIES install-libgoffice_1_laHEADERS \
+	install-man install-recursive install-strip installcheck \
+	installcheck-am installdirs installdirs-am \
+	installdirs-recursive maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+	pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+	tags-recursive uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-libLTLIBRARIES \
+	uninstall-libgoffice_1_laHEADERS uninstall-recursive
+
+
+# Depends on this Makefile, because it uses make variables.
+goffice-paths.h: Makefile
+	@echo 'creating $@'
+	@( \
+	echo '/* This file has been automatically generated.  Do not edit. */'; \
+	echo ''; \
+	echo '#ifndef GOFFICE_PATHS_H'; \
+	echo '#define GOFFICE_PATHS_H'; \
+	echo ''; \
+	echo '#define GOFFICE_DATADIR "$(goffice_datadir)"'; \
+	echo '#define GOFFICE_LIBDIR "$(goffice_libdir)"'; \
+	echo '#define GOFFICE_ICONDIR "$(goffice_icondir)"'; \
+	echo '#define GOFFICE_LOCALEDIR "$(goffice_localedir)"'; \
+	echo ''; \
+	echo '#endif /* GOFFICE_PATHS_H */'; \
+	) >$@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,54 @@
+noinst_LTLIBRARIES = libgoffice-app.la
+
+noinst_HEADERS = \
+	file-priv.h \
+	io-context-priv.h
+
+libgoffice_app_la_SOURCES = \
+	go-doc.c 			\
+	go-doc-control.c 		\
+	\
+	go-plugin.c 			\
+	go-plugin-loader.c 		\
+	go-plugin-loader-module.c 	\
+	go-plugin-service.c 		\
+	\
+	file.c				\
+	error-info.c			\
+	io-context.c			\
+	go-cmd-context.c
+
+libgoffice_app_ladir = $(goffice_include_dir)/app
+libgoffice_app_la_HEADERS = 	\
+	goffice-app.h			\
+	\
+	go-doc.h 			\
+	go-doc-impl.h 			\
+	go-doc-control.h 		\
+	go-doc-control-impl.h 		\
+	go-plugin.h 			\
+	go-plugin-loader.h 		\
+	go-plugin-loader-module.h 	\
+	module-plugin-defs.h 		\
+	go-plugin-service.h 		\
+	go-plugin-service-impl.h	\
+	file.h				\
+	error-info.h			\
+	io-context.h			\
+	io-context-priv.h		\
+	go-cmd-context.h		\
+	go-cmd-context-impl.h
+
+# This list should be empty when we reach a stable phase.
+UNUSED = \
+	go-app.h \
+	go-error-stack.h \
+	go-object.c \
+	go-object.h \
+	go-service.c \
+	go-service.h \
+	go-service-impl.h
+
+EXTRA_DIST = $(UNUSED)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,602 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LTLIBRARIES = libgoffice-app.la
+
+noinst_HEADERS = \
+	file-priv.h \
+	io-context-priv.h
+
+
+libgoffice_app_la_SOURCES = \
+	go-doc.c 			\
+	go-doc-control.c 		\
+	\
+	go-plugin.c 			\
+	go-plugin-loader.c 		\
+	go-plugin-loader-module.c 	\
+	go-plugin-service.c 		\
+	\
+	file.c				\
+	error-info.c			\
+	io-context.c			\
+	go-cmd-context.c
+
+
+libgoffice_app_ladir = $(goffice_include_dir)/app
+libgoffice_app_la_HEADERS = \
+	goffice-app.h			\
+	\
+	go-doc.h 			\
+	go-doc-impl.h 			\
+	go-doc-control.h 		\
+	go-doc-control-impl.h 		\
+	go-plugin.h 			\
+	go-plugin-loader.h 		\
+	go-plugin-loader-module.h 	\
+	module-plugin-defs.h 		\
+	go-plugin-service.h 		\
+	go-plugin-service-impl.h	\
+	file.h				\
+	error-info.h			\
+	io-context.h			\
+	io-context-priv.h		\
+	go-cmd-context.h		\
+	go-cmd-context-impl.h
+
+
+# This list should be empty when we reach a stable phase.
+UNUSED = \
+	go-app.h \
+	go-error-stack.h \
+	go-object.c \
+	go-object.h \
+	go-service.c \
+	go-service.h \
+	go-service-impl.h
+
+
+EXTRA_DIST = $(UNUSED)
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice/app
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libgoffice_app_la_LDFLAGS =
+libgoffice_app_la_LIBADD =
+am_libgoffice_app_la_OBJECTS = go-doc.lo go-doc-control.lo go-plugin.lo \
+	go-plugin-loader.lo go-plugin-loader-module.lo \
+	go-plugin-service.lo file.lo error-info.lo io-context.lo \
+	go-cmd-context.lo
+libgoffice_app_la_OBJECTS = $(am_libgoffice_app_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/error-info.Plo ./$(DEPDIR)/file.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-cmd-context.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-doc-control.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-doc.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-plugin-loader-module.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-plugin-loader.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-plugin-service.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-plugin.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/io-context.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgoffice_app_la_SOURCES)
+HEADERS = $(libgoffice_app_la_HEADERS) $(noinst_HEADERS)
+
+DIST_COMMON = $(libgoffice_app_la_HEADERS) $(noinst_HEADERS) \
+	$(srcdir)/Makefile.in $(top_srcdir)/goffice.mk Makefile.am
+SOURCES = $(libgoffice_app_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/app/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-app.la: $(libgoffice_app_la_OBJECTS) $(libgoffice_app_la_DEPENDENCIES) 
+	$(LINK)  $(libgoffice_app_la_LDFLAGS) $(libgoffice_app_la_OBJECTS) $(libgoffice_app_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/error-info.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/file.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-cmd-context.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-doc-control.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-doc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-plugin-loader-module.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-plugin-loader.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-plugin-service.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-plugin.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/io-context.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgoffice_app_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_app_laHEADERS: $(libgoffice_app_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_app_ladir)
+	@list='$(libgoffice_app_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_app_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_app_ladir)/$$f"; \
+	  $(libgoffice_app_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_app_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_app_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_app_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_app_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_app_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_app_ladir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libgoffice_app_laHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libgoffice_app_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libgoffice_app_laHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-libgoffice_app_laHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,202 @@
+/*
+ * error-info.c: ErrorInfo structure.
+ *
+ * Author:
+ *   Zbigniew Chyla (cyba at gnome.pl)
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/app/error-info.h>
+
+#include <stdio.h>
+#include <errno.h>
+
+struct _ErrorInfo {
+	gchar *msg;
+	GOSeverity severity;
+	GSList *details;          /* list of ErrorInfo */
+};
+
+ErrorInfo *
+error_info_new_str (char const *msg)
+{
+	ErrorInfo *error = g_new (ErrorInfo, 1);
+	error->msg = g_strdup (msg);
+	error->severity = GO_ERROR;
+	error->details  = NULL;
+	return error;
+}
+
+ErrorInfo *
+error_info_new_vprintf (GOSeverity severity, char const *msg_format,
+			va_list args)
+{
+	ErrorInfo *error;
+
+	g_return_val_if_fail (severity >= GO_WARNING, NULL);
+	g_return_val_if_fail (severity <= GO_ERROR, NULL);
+
+	error = g_new (ErrorInfo, 1);
+	error->msg = g_strdup_vprintf (msg_format, args);
+	error->severity = severity;
+	error->details = NULL;
+	return error;
+}
+
+
+ErrorInfo *
+error_info_new_printf (char const *msg_format, ...)
+{
+	ErrorInfo *error;
+	va_list args;
+
+	va_start (args, msg_format);
+	error = error_info_new_vprintf (GO_ERROR, msg_format, args);
+	va_end (args);
+
+	return error;
+}
+
+ErrorInfo *
+error_info_new_str_with_details (char const *msg, ErrorInfo *details)
+{
+	ErrorInfo *error = error_info_new_str (msg);
+	error_info_add_details (error, details);
+	return error;
+}
+
+ErrorInfo *
+error_info_new_str_with_details_list (char const *msg, GSList *details)
+{
+	ErrorInfo *error = error_info_new_str (msg);
+	error_info_add_details_list (error, details);
+	return error;
+}
+
+ErrorInfo *
+error_info_new_from_error_list (GSList *errors)
+{
+	ErrorInfo *error;
+
+	switch (g_slist_length (errors)) {
+	case 0:
+		error = NULL;
+		break;
+	case 1:
+		error = (ErrorInfo *) errors->data;
+		g_slist_free (errors);
+		break;
+	default:
+		error = error_info_new_str_with_details_list (NULL, errors);
+		break;
+	}
+
+	return error;
+}
+
+ErrorInfo *
+error_info_new_from_errno (void)
+{
+	return error_info_new_str (g_strerror (errno));
+}
+
+void
+error_info_add_details (ErrorInfo *error, ErrorInfo *details)
+{
+	g_return_if_fail (error != NULL);
+
+	if (details == NULL)
+		;
+	else if (details->msg == NULL) {
+		error->details = g_slist_concat (error->details, details->details);
+		g_free (details);
+	} else
+		error->details = g_slist_append (error->details, details);
+}
+
+void
+error_info_add_details_list (ErrorInfo *error, GSList *details)
+{
+	GSList *new_details_list, *l, *ll;
+
+	g_return_if_fail (error != NULL);
+
+	new_details_list = NULL;
+	for (l = details; l != NULL; l = l->next) {
+		ErrorInfo *details_error = l->data;
+		if (details_error->msg == NULL) {
+			for (ll = details_error->details; ll != NULL; ll = ll->next)
+				new_details_list = g_slist_prepend (new_details_list, l->data);
+			g_free (details_error);
+		} else
+			new_details_list = g_slist_prepend (new_details_list, details_error);
+	}
+	g_slist_free (details);
+	new_details_list = g_slist_reverse (new_details_list);
+	error->details = g_slist_concat (error->details, new_details_list);
+}
+
+void
+error_info_free (ErrorInfo *error)
+{
+	GSList *l;
+
+	if (error == NULL)
+		return;
+
+	g_free (error->msg);
+	for (l = error->details; l != NULL; l = l->next)
+		error_info_free ((ErrorInfo *) l->data);
+
+	g_slist_free (error->details);
+	g_free(error);
+}
+
+static void
+error_info_print_with_offset (ErrorInfo *error, gint offset)
+{
+	GSList *l;
+
+	if (error->msg != NULL) {
+		char c = 'E';
+
+		if (error->severity == GO_WARNING)
+			c = 'W';
+		fprintf (stderr, "%*s%c %s\n", offset, "", c, error->msg);
+		offset += 2;
+	}
+	for (l = error->details; l != NULL; l = l->next)
+		error_info_print_with_offset ((ErrorInfo *) l->data, offset);
+}
+
+void
+error_info_print (ErrorInfo *error)
+{
+	g_return_if_fail (error != NULL);
+
+	error_info_print_with_offset (error, 0);
+}
+
+char const *
+error_info_peek_message (ErrorInfo *error)
+{
+	g_return_val_if_fail (error != NULL, NULL);
+
+	return error->msg;
+}
+
+GSList *
+error_info_peek_details (ErrorInfo *error)
+{
+	g_return_val_if_fail (error != NULL, NULL);
+
+	return error->details;
+}
+
+GOSeverity
+error_info_peek_severity (ErrorInfo *error)
+{
+	g_return_val_if_fail (error != NULL, GO_ERROR);
+
+	return error->severity;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/error-info.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,39 @@
+#ifndef GO_ERROR_INFO_H
+#define GO_ERROR_INFO_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GO_WARNING = 1,
+	GO_ERROR
+} GOSeverity;
+
+ErrorInfo *error_info_new_str			(char const *msg);
+ErrorInfo *error_info_new_printf		(char const *msg_format, ...) G_GNUC_PRINTF (1, 2);
+ErrorInfo *error_info_new_vprintf		(GOSeverity severity,
+						 char const *msg_format,
+						 va_list args);
+ErrorInfo *error_info_new_str_with_details	(char const *msg, ErrorInfo *details);
+ErrorInfo *error_info_new_str_with_details_list (char const *msg, GSList *details);
+ErrorInfo *error_info_new_from_error_list	(GSList *errors);
+ErrorInfo *error_info_new_from_errno		(void);
+void	   error_info_add_details		(ErrorInfo *error, ErrorInfo *details);
+void	   error_info_add_details_list	  	(ErrorInfo *error, GSList *details);
+void	   error_info_free			(ErrorInfo *error);
+void	   error_info_print			(ErrorInfo *error);
+char const*error_info_peek_message		(ErrorInfo *error);
+GSList	  *error_info_peek_details		(ErrorInfo *error);
+GOSeverity error_info_peek_severity		(ErrorInfo *error);
+
+#define GO_INIT_RET_ERROR_INFO(ret_error) \
+G_STMT_START { \
+	g_assert (ret_error != NULL); \
+	*ret_error = NULL; \
+} G_STMT_END
+
+G_END_DECLS
+
+#endif /* GO_ERROR_INFO_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file-priv.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file-priv.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file-priv.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,95 @@
+#ifndef GO_FILE_PRIV_H
+#define GO_FILE_PRIV_H
+
+#include <goffice/app/goffice-app.h>
+
+G_BEGIN_DECLS
+
+/*
+ * GOFileOpener
+ */
+
+#define GO_FILE_OPENER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GO_FILE_OPENER, GOFileOpenerClass))
+#define IS_GO_FILE_OPENER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GO_FILE_OPENER))
+
+#define GO_FILE_OPENER_METHOD(obj,name) \
+        ((GO_FILE_OPENER_CLASS (G_OBJECT_GET_CLASS (obj)))->name)
+
+struct _GOFileOpenerClass {
+	GObjectClass parent_class;
+
+	gboolean  (*can_probe) (GOFileOpener const *fo,
+				FileProbeLevel pl);
+	gboolean  (*probe) (GOFileOpener const *fo,
+	                    GsfInput *input,
+	                    FileProbeLevel pl);
+	void      (*open)  (GOFileOpener const *fo,
+			    gchar const *opt_enc,
+	                    IOContext *io_context,
+	                    gpointer  fixme_fixme_workbook_view,
+	                    GsfInput *input);
+};
+
+struct _GOFileOpener {
+	GObject parent;
+
+	gchar	*id;
+	gchar	*description;
+	GSList	*suffixes;
+	GSList	*mimes;
+	gboolean encoding_dependent;
+
+	GOFileOpenerProbeFunc probe_func;
+	GOFileOpenerOpenFunc  open_func;
+};
+
+void go_file_opener_setup (GOFileOpener *fo, const gchar *id,
+			    const gchar *description,
+			    GSList *suffixes,
+			    GSList *mimes,
+			    gboolean encoding_dependent,
+			    GOFileOpenerProbeFunc probe_func,
+			    GOFileOpenerOpenFunc open_func);
+
+/*
+ * GOFileSaver
+ */
+
+#define GO_FILE_SAVER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GO_FILE_SAVER, GOFileSaverClass))
+#define IS_GO_FILE_SAVER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GO_FILE_SAVER))
+
+#define GO_FILE_SAVER_METHOD(obj,name) \
+        ((GO_FILE_SAVER_CLASS (G_OBJECT_GET_CLASS (obj)))->name)
+
+struct _GOFileSaverClass {
+	GObjectClass parent_class;
+
+	void (*save) (GOFileSaver const *fs,
+	              IOContext *io_context,
+	              gconstpointer wbv,
+	              GsfOutput *output);
+};
+
+struct _GOFileSaver {
+	GObject parent;
+
+	gchar                *id;
+	const gchar          *mime_type;
+	gchar                *extension;
+	gchar                *description;
+	gboolean              overwrite_files;
+	FileFormatLevel               format_level;
+	FileSaveScope                 save_scope;
+	GOFileSaverSaveFunc         save_func;
+};
+
+void go_file_saver_setup (GOFileSaver *fs,
+                            const gchar *id,
+                            const gchar *extension,
+                            const gchar *description,
+                            FileFormatLevel level,
+                            GOFileSaverSaveFunc save_func);
+
+G_END_DECLS
+
+#endif /* GO_FILE_PRIV_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,869 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * file.c: File loading and saving routines
+ *
+ * Authors:
+ *   Miguel de Icaza (miguel at kernel.org)
+ *   Zbigniew Chyla (cyba at gnome.pl)
+ */
+#include <goffice/goffice-config.h>
+#include <goffice/utils/go-file.h>
+#include <goffice/utils/go-glib-extras.h>
+#include <goffice/app/file.h>
+#include <goffice/app/file-priv.h>
+#include <goffice/app/error-info.h>
+#include <goffice/app/io-context.h>
+
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-output.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <string.h>
+#include <glib/gi18n.h>
+
+static void
+go_file_opener_init (GOFileOpener *fo)
+{
+	fo->id = NULL;
+	fo->description = NULL;
+	fo->probe_func = NULL;
+	fo->open_func = NULL;
+}
+
+static void
+go_file_opener_finalize (GObject *obj)
+{
+	GOFileOpener *fo;
+
+	g_return_if_fail (IS_GO_FILE_OPENER (obj));
+
+	fo = GO_FILE_OPENER (obj);
+	g_free (fo->id);
+	g_free (fo->description);
+	g_slist_foreach (fo->suffixes, (GFunc)g_free, NULL);
+	g_slist_free (fo->suffixes);
+	g_slist_foreach (fo->mimes, (GFunc)g_free, NULL);
+	g_slist_free (fo->mimes);
+
+	G_OBJECT_CLASS (g_type_class_peek (G_TYPE_OBJECT))->finalize (obj);
+}
+
+static gboolean
+go_file_opener_can_probe_real (GOFileOpener const *fo, FileProbeLevel pl)
+{
+	return fo->probe_func != NULL;
+}
+
+static gboolean
+go_file_opener_probe_real (GOFileOpener const *fo, GsfInput *input,
+                             FileProbeLevel pl)
+{
+	gboolean ret = FALSE;
+
+	if (fo->probe_func != NULL) {
+		ret =  fo->probe_func (fo, input, pl);
+		gsf_input_seek (input, 0, G_SEEK_SET);
+	}
+	return ret;
+}
+
+static void
+go_file_opener_open_real (GOFileOpener const *fo, gchar const *opt_enc, 
+			   IOContext *io_context,
+			   gpointer FIXME_FIXME_workbook_view,
+			   GsfInput *input)
+{
+	if (fo->open_func != NULL) {
+		if (fo->encoding_dependent)
+			((GOFileOpenerOpenFuncWithEnc)fo->open_func) 
+				(fo, opt_enc, io_context, FIXME_FIXME_workbook_view, input);
+		else
+			fo->open_func (fo, io_context, FIXME_FIXME_workbook_view, input);
+	} else
+		gnumeric_io_error_unknown (io_context);
+}
+
+static void
+go_file_opener_class_init (GOFileOpenerClass *klass)
+{
+	G_OBJECT_CLASS (klass)->finalize = go_file_opener_finalize;
+
+	klass->can_probe = go_file_opener_can_probe_real;
+	klass->probe = go_file_opener_probe_real;
+	klass->open = go_file_opener_open_real;
+}
+
+GSF_CLASS (GOFileOpener, go_file_opener,
+	   go_file_opener_class_init, go_file_opener_init,
+	   G_TYPE_OBJECT)
+
+/**
+ * go_file_opener_setup:
+ * @fo          : Newly created GOFileOpener object
+ * @id          : Optional ID of the opener (or NULL)
+ * @description : Description of supported file format
+ * @encoding_dependent: whether the opener depends on an encoding sel.
+ * @probe_func  : Optional pointer to "probe" function (or NULL)
+ * @open_func   : Pointer to "open" function
+ *
+ * Sets up GOFileOpener object, newly created with g_object_new function.
+ * This is intended to be used only by GOFileOpener derivates.
+ * Use go_file_opener_new, if you want to create GOFileOpener object.
+ */
+void
+go_file_opener_setup (GOFileOpener *fo, gchar const *id,
+                        gchar const *description,
+			GSList *suffixes,
+			GSList *mimes,
+		        gboolean encoding_dependent,
+                        GOFileOpenerProbeFunc probe_func,
+                        GOFileOpenerOpenFunc open_func)
+{
+	g_return_if_fail (IS_GO_FILE_OPENER (fo));
+
+	fo->id = g_strdup (id);
+	fo->description = g_strdup (description);
+	fo->suffixes = suffixes;
+	fo->mimes = mimes;
+
+	fo->encoding_dependent = encoding_dependent;
+	fo->probe_func = probe_func;
+	fo->open_func = open_func;
+}
+
+/**
+ * go_file_opener_new:
+ * @id          : Optional ID of the opener (or NULL)
+ * @description : Description of supported file format
+ * @probe_func  : Optional pointer to "probe" function (or NULL)
+ * @open_func   : Pointer to "open" function
+ *
+ * Creates new GOFileOpener object. Optional @id will be used
+ * after registering it with go_file_opener_register function.
+ *
+ * Return value: newly created GOFileOpener object.
+ */
+GOFileOpener *
+go_file_opener_new (gchar const *id,
+                      gchar const *description,
+		      GSList *suffixes,
+		      GSList *mimes,
+                      GOFileOpenerProbeFunc probe_func,
+                      GOFileOpenerOpenFunc open_func)
+{
+	GOFileOpener *fo;
+
+	fo = GO_FILE_OPENER (g_object_new (TYPE_GO_FILE_OPENER, NULL));
+	go_file_opener_setup (fo, id, description, suffixes, mimes, FALSE,
+			       probe_func, open_func);
+
+	return fo;
+}
+
+/**
+ * go_file_opener_new_with_enc:
+ * @id          : Optional ID of the opener (or NULL)
+ * @description : Description of supported file format 
+ * @probe_func  : Optional pointer to "probe" function (or NULL)
+ * @open_func   : Pointer to "open" function    
+ *   
+ * Creates new GOFileOpener object. Optional @id will be used
+ * after registering it with go_file_opener_register function.
+ *      
+ * Return value: newly created GOFileOpener object.
+ */
+
+GOFileOpener *
+go_file_opener_new_with_enc (gchar const *id,
+		     gchar const *description,
+		     GSList *suffixes,
+		     GSList *mimes,
+		     GOFileOpenerProbeFunc probe_func,
+		     GOFileOpenerOpenFuncWithEnc open_func)
+{
+        GOFileOpener *fo;
+
+        fo = GO_FILE_OPENER (g_object_new (TYPE_GO_FILE_OPENER, NULL));
+        go_file_opener_setup (fo, id, description, suffixes, mimes, TRUE,
+                               probe_func, (GOFileOpenerOpenFunc)open_func);
+        return fo;
+}
+
+
+
+
+gchar const *
+go_file_opener_get_id (GOFileOpener const *fo)
+{
+	g_return_val_if_fail (IS_GO_FILE_OPENER (fo), NULL);
+
+	return fo->id;
+}
+
+gchar const *
+go_file_opener_get_description (GOFileOpener const *fo)
+{
+	g_return_val_if_fail (IS_GO_FILE_OPENER (fo), NULL);
+
+	return fo->description;
+}
+
+gboolean 
+go_file_opener_is_encoding_dependent (GOFileOpener const *fo)
+{
+        g_return_val_if_fail (IS_GO_FILE_OPENER (fo), FALSE);
+	
+	return fo->encoding_dependent;
+}
+
+gboolean
+go_file_opener_can_probe (GOFileOpener const *fo, FileProbeLevel pl)
+{
+	g_return_val_if_fail (IS_GO_FILE_OPENER (fo), FALSE);
+
+	return GO_FILE_OPENER_METHOD (fo, can_probe) (fo, pl);
+}
+
+GSList const *
+go_file_opener_get_suffixes (GOFileOpener const *fo)
+{
+	g_return_val_if_fail (IS_GO_FILE_OPENER (fo), NULL);
+	return fo->suffixes;
+}
+GSList const *
+go_file_opener_get_mimes (GOFileOpener const *fo)
+{
+	g_return_val_if_fail (IS_GO_FILE_OPENER (fo), NULL);
+	return fo->mimes;
+}
+
+
+/**
+ * go_file_opener_probe:
+ * @fo      : GOFileOpener object
+ * @input   : The input source
+ *
+ * Checks if a given file is supported by the opener.
+ *
+ * Return value: TRUE, if the opener can read given file and FALSE
+ *               otherwise.
+ */
+gboolean
+go_file_opener_probe (GOFileOpener const *fo, GsfInput *input, FileProbeLevel pl)
+{
+	g_return_val_if_fail (IS_GO_FILE_OPENER (fo), FALSE);
+	g_return_val_if_fail (GSF_IS_INPUT (input), FALSE);
+
+#if 0
+	g_print ("Trying format %s at level %d...\n",
+		 go_file_opener_get_id (fo),
+		 (int)pl);
+#endif
+	return GO_FILE_OPENER_METHOD (fo, probe) (fo, input, pl);
+}
+
+/**
+ * go_file_opener_open:
+ * @fo          : GOFileOpener object
+ * @opt_enc     : Optional encoding
+ * @io_context  : Context for i/o operation
+ * @wbv         : Workbook View
+ * @input       : Gsf input stream
+ *
+ * Reads content of @file_name file into workbook @wbv is attached to.
+ * Results are reported using @io_context object, use
+ * gnumeric_io_error_occurred to find out if operation was successful.
+ * The state of @wbv and its workbook is undefined if operation fails, you
+ * should destroy them in that case.
+ */
+void
+go_file_opener_open (GOFileOpener const *fo, gchar const *opt_enc,
+		      IOContext *io_context,
+		      gpointer FIXME_FIXME_workbook_view, GsfInput *input)
+{
+	g_return_if_fail (IS_GO_FILE_OPENER (fo));
+	g_return_if_fail (GSF_IS_INPUT (input));
+
+	GO_FILE_OPENER_METHOD (fo, open) (fo, opt_enc, io_context, FIXME_FIXME_workbook_view, input);
+}
+
+/*
+ * GOFileSaver
+ */
+
+static void
+go_file_saver_init (GOFileSaver *fs)
+{
+	fs->id = NULL;
+	fs->extension = NULL;
+	fs->mime_type = NULL;
+	fs->description = NULL;
+	fs->overwrite_files = TRUE;
+	fs->format_level = FILE_FL_NEW;
+	fs->save_scope = FILE_SAVE_WORKBOOK;
+	fs->save_func = NULL;
+}
+
+static void
+go_file_saver_finalize (GObject *obj)
+{
+	GOFileSaver *fs;
+
+	g_return_if_fail (IS_GO_FILE_SAVER (obj));
+
+	fs = GO_FILE_SAVER (obj);
+	g_free (fs->id);
+	g_free (fs->extension);
+	g_free (fs->description);
+
+	G_OBJECT_CLASS (g_type_class_peek (G_TYPE_OBJECT))->finalize (obj);
+}
+
+static void
+go_file_saver_save_real (GOFileSaver const *fs, IOContext *io_context,
+			  gconstpointer FIXME_FIXME_workbook_view, GsfOutput *output)
+{
+	if (fs->save_func == NULL) {
+		gnumeric_io_error_unknown (io_context);
+		return;
+	}
+
+	fs->save_func (fs, io_context, FIXME_FIXME_workbook_view, output);
+}
+
+static void
+go_file_saver_class_init (GOFileSaverClass *klass)
+{
+	G_OBJECT_CLASS (klass)->finalize = go_file_saver_finalize;
+
+	klass->save = go_file_saver_save_real;
+}
+
+GSF_CLASS (GOFileSaver, go_file_saver,
+	   go_file_saver_class_init, go_file_saver_init,
+	   G_TYPE_OBJECT)
+
+/**
+ * go_file_saver_setup:
+ * @fs          : Newly created GOFileSaver object
+ * @id          : Optional ID of the saver (or NULL)
+ * @extension   : Optional default extension of saved files (or NULL)
+ * @description : Description of supported file format
+ * @level       : File format level
+ * @save_func   : Pointer to "save" function
+ *
+ * Sets up GOFileSaver object, newly created with g_object_new function.
+ * This is intended to be used only by GOFileSaver derivates.
+ * Use go_file_saver_new, if you want to create GOFileSaver object.
+ */
+void
+go_file_saver_setup (GOFileSaver *fs, gchar const *id,
+                       gchar const *extension,
+                       gchar const *description,
+                       FileFormatLevel level,
+                       GOFileSaverSaveFunc save_func)
+{
+	g_return_if_fail (IS_GO_FILE_SAVER (fs));
+
+	fs->id = g_strdup (id);
+	fs->mime_type = NULL;
+
+#warning mime disabled
+#if 0
+	gchar *tmp = g_strdup_printf ("SomeFile.%s", extension);
+	gnome_mime_type_or_default (tmp,
+	    "application/application/x-gnumeric");
+	g_free (tmp);
+#endif
+	fs->extension = g_strdup (extension);
+	fs->description = g_strdup (description);
+	fs->format_level = level;
+	fs->save_func = save_func;
+}
+
+/**
+ * go_file_saver_new:
+ * @id          : Optional ID of the saver (or NULL)
+ * @extension   : Optional default extension of saved files (or NULL)
+ * @description : Description of supported file format
+ * @level       : File format level
+ * @save_func   : Pointer to "save" function
+ *
+ * Creates new GOFileSaver object. Optional @id will be used
+ * after registering it with go_file_saver_register or
+ * go_file_saver_register_as_default function.
+ *
+ * Return value: newly created GOFileSaver object.
+ */
+GOFileSaver *
+go_file_saver_new (gchar const *id,
+                     gchar const *extension,
+                     gchar const *description,
+                     FileFormatLevel level,
+                     GOFileSaverSaveFunc save_func)
+{
+	GOFileSaver *fs;
+
+	fs = GO_FILE_SAVER (g_object_new (TYPE_GO_FILE_SAVER, NULL));
+	go_file_saver_setup (fs, id, extension, description, level, save_func);
+
+	return fs;
+}
+
+void
+go_file_saver_set_save_scope (GOFileSaver *fs, FileSaveScope scope)
+{
+	g_return_if_fail (IS_GO_FILE_SAVER (fs));
+	g_return_if_fail (scope < FILE_SAVE_LAST);
+
+	fs->save_scope = scope;
+}
+
+FileSaveScope
+go_file_saver_get_save_scope (GOFileSaver const *fs)
+{
+	g_return_val_if_fail (IS_GO_FILE_SAVER (fs), FILE_SAVE_WORKBOOK);
+
+	return fs->save_scope;
+}
+
+gchar const *
+go_file_saver_get_id (GOFileSaver const *fs)
+{
+	g_return_val_if_fail (IS_GO_FILE_SAVER (fs), NULL);
+
+	return fs->id;
+}
+
+gchar const *
+go_file_saver_get_mime_type (GOFileSaver const *fs)
+{
+	g_return_val_if_fail (IS_GO_FILE_SAVER (fs), NULL);
+
+	return fs->mime_type;
+}
+
+gchar const *
+go_file_saver_get_extension (GOFileSaver const *fs)
+{
+	g_return_val_if_fail (IS_GO_FILE_SAVER (fs), NULL);
+
+	return fs->extension;
+}
+
+gchar const *
+go_file_saver_get_description (GOFileSaver const *fs)
+{
+	g_return_val_if_fail (IS_GO_FILE_SAVER (fs), NULL);
+
+	return fs->description;
+}
+
+FileFormatLevel
+go_file_saver_get_format_level (GOFileSaver const *fs)
+{
+	g_return_val_if_fail (IS_GO_FILE_SAVER (fs), FILE_FL_NEW);
+
+	return fs->format_level;
+}
+
+/**
+ * go_file_saver_save:
+ * @fs          : GOFileSaver object
+ * @io_context  : Context for i/o operation
+ * @wbv         : Workbook View
+ * @output      : Output stream
+ *
+ * Saves @wbv and the workbook it is attached to into @output stream.
+ * Results are reported using @io_context object, use
+ * gnumeric_io_error_occurred to find out if operation was successful.
+ * It's possible that @file_name is created and contain some data if
+ * operation fails, you should remove the file in that case.
+ */
+void
+go_file_saver_save (GOFileSaver const *fs, IOContext *io_context,
+		     gconstpointer FIXME_FIXME_workbook_view,
+		     GsfOutput *output)
+{
+	char *file_name;
+
+	g_return_if_fail (IS_GO_FILE_SAVER (fs));
+	g_return_if_fail (GSF_IS_OUTPUT (output));
+
+	if (GSF_IS_OUTPUT_STDIO (output)) {
+		file_name = (char *) gsf_output_name (output);
+
+		if (file_name == NULL) {
+			ErrorInfo *save_error = error_info_new_str(
+				_("Not a valid UTF-8 filename."));
+			gnumeric_io_error_info_set (io_context, save_error);
+			return;
+		}
+		
+		if (!fs->overwrite_files &&
+		    g_file_test ((file_name), G_FILE_TEST_EXISTS)) {
+			ErrorInfo *save_error;
+
+			save_error = error_info_new_str_with_details (
+				_("Saving over old files of this type is disabled for safety."),
+				error_info_new_str (
+					_("You can turn this safety feature off by editing appropriate plugin.xml file.")));
+			gnumeric_io_error_info_set (io_context, save_error);
+			return;
+		}
+	}
+
+	GO_FILE_SAVER_METHOD (fs, save) (fs, io_context, FIXME_FIXME_workbook_view, output);
+}
+
+/**
+ * go_file_saver_set_overwrite_files:
+ * @fs          : GOFileSaver object
+ * @overwrite   : A boolean value saying whether the saver should overwrite
+ *                existing files.
+ *
+ * Changes behaviour of the saver when saving a file. If @overwrite is set
+ * to TRUE, existing file will be overwritten. Otherwise, the saver will
+ * report an error without saving anything.
+ */
+void
+go_file_saver_set_overwrite_files (GOFileSaver *fs, gboolean overwrite)
+{
+	g_return_if_fail (IS_GO_FILE_SAVER (fs));
+
+	fs->overwrite_files = overwrite;
+}
+
+
+/*
+ * ------
+ */
+
+typedef struct {
+	gint priority;
+	GOFileSaver *saver;
+} DefaultFileSaver;
+
+static GHashTable *file_opener_id_hash = NULL,
+                  *file_saver_id_hash = NULL;
+static GList *file_opener_list = NULL, *file_opener_priority_list = NULL;
+static GList *file_saver_list = NULL, *default_file_saver_list = NULL;
+
+static gint
+cmp_int_less_than (gconstpointer list_i, gconstpointer i)
+{
+	return !(GPOINTER_TO_INT (list_i) < GPOINTER_TO_INT (i));
+}
+
+/**
+ * go_file_opener_register:
+ * @fo          : GOFileOpener object
+ * @priority    : Opener's priority
+ *
+ * Adds @fo opener to the list of available file openers, making it
+ * available for Gnumeric i/o routines. The opener is registered with given
+ * @priority. The priority is used to determine the order in which openers
+ * will be tried when reading a file. The higher the priority, the sooner it
+ * will be tried. Default XML-based Gnumeric file opener is registered at
+ * priority 50. Recommended range for @priority is [0, 100].
+ * Reference count for the opener is incremented inside the function, but
+ * you don't have to (and shouldn't) call g_object_unref on it if it's
+ * floating object (for example, when you pass object newly created with
+ * go_file_opener_new and not referenced anywhere).
+ */
+void
+go_file_opener_register (GOFileOpener *fo, gint priority)
+{
+	gint pos;
+	gchar const *id;
+
+	g_return_if_fail (IS_GO_FILE_OPENER (fo));
+	g_return_if_fail (priority >=0 && priority <= 100);
+
+	pos = go_list_index_custom (file_opener_priority_list,
+	                           GINT_TO_POINTER (priority),
+	                           cmp_int_less_than);
+	file_opener_priority_list = g_list_insert (
+	                            file_opener_priority_list,
+	                            GINT_TO_POINTER (priority), pos);
+	file_opener_list = g_list_insert (file_opener_list, fo, pos);
+	g_object_ref (G_OBJECT (fo));
+
+	id = go_file_opener_get_id (fo);
+	if (id != NULL) {
+		if (file_opener_id_hash	== NULL)
+			file_opener_id_hash = g_hash_table_new (&g_str_hash, &g_str_equal);
+		g_hash_table_insert (file_opener_id_hash, (gpointer) id, fo);
+	}
+}
+
+/**
+ * go_file_opener_unregister:
+ * @fo          : GOFileOpener object previously registered using
+ *                go_file_opener_register
+ *
+ * Removes @fo opener from list of available file openers. Reference count
+ * for the opener is decremented inside the function.
+ */
+void
+go_file_opener_unregister (GOFileOpener *fo)
+{
+	gint pos;
+	GList *l;
+	gchar const *id;
+
+	g_return_if_fail (IS_GO_FILE_OPENER (fo));
+
+	pos = g_list_index (file_opener_list, fo);
+	g_return_if_fail (pos != -1);
+	l = g_list_nth (file_opener_list, pos);
+	file_opener_list = g_list_remove_link (file_opener_list, l);
+	g_list_free_1 (l);
+	l = g_list_nth (file_opener_priority_list, pos);
+	file_opener_priority_list = g_list_remove_link (file_opener_priority_list, l);
+	g_list_free_1 (l);
+
+	id = go_file_opener_get_id (fo);
+	if (id != NULL) {
+		g_hash_table_remove (file_opener_id_hash, (gpointer) id);
+		if (g_hash_table_size (file_opener_id_hash) == 0) {
+			g_hash_table_destroy (file_opener_id_hash);
+			file_opener_id_hash = NULL;
+		}
+	}
+
+	g_object_unref (G_OBJECT (fo));
+}
+
+static gint
+default_file_saver_cmp_priority (gconstpointer a, gconstpointer b)
+{
+	DefaultFileSaver const *dfs_a = a, *dfs_b = b;
+
+	return dfs_b->priority - dfs_a->priority;
+}
+
+/**
+ * go_file_saver_register:
+ * @fs          : GOFileSaver object
+ *
+ * Adds @fs saver to the list of available file savers, making it
+ * available for the user when selecting file format for save.
+ */
+void
+go_file_saver_register (GOFileSaver *fs)
+{
+	gchar const *id;
+
+	g_return_if_fail (IS_GO_FILE_SAVER (fs));
+
+	file_saver_list = g_list_prepend (file_saver_list, fs);
+	g_object_ref (G_OBJECT (fs));
+
+	id = go_file_saver_get_id (fs);
+	if (id != NULL) {
+		if (file_saver_id_hash	== NULL)
+			file_saver_id_hash = g_hash_table_new (&g_str_hash,
+							       &g_str_equal);
+		g_hash_table_insert (file_saver_id_hash, (gpointer) id, fs);
+	}
+}
+
+/**
+ * go_file_saver_register_as_default:
+ * @fs          : GOFileSaver object
+ * @priority    : Saver's priority
+ *
+ * Adds @fs saver to the list of available file savers, making it
+ * available for the user when selecting file format for save.
+ * The saver is also marked as default saver with given priority.
+ * When Gnumeric needs default file saver, it chooses the one with the
+ * highest priority. Recommended range for @priority is [0, 100].
+ */
+void
+go_file_saver_register_as_default (GOFileSaver *fs, gint priority)
+{
+	DefaultFileSaver *dfs;
+
+	g_return_if_fail (IS_GO_FILE_SAVER (fs));
+	g_return_if_fail (priority >=0 && priority <= 100);
+
+	go_file_saver_register (fs);
+
+	dfs = g_new (DefaultFileSaver, 1);
+	dfs->priority = priority;
+	dfs->saver = fs;
+	default_file_saver_list = g_list_insert_sorted (
+	                          default_file_saver_list, dfs,
+	                          default_file_saver_cmp_priority);
+}
+
+/**
+ * go_file_saver_unregister:
+ * @fs          : GOFileSaver object previously registered using
+ *                go_file_saver_register or go_file_saver_register_as_default
+ *
+ * Removes @fs saver from list of available file savers. Reference count
+ * for the saver is decremented inside the function.
+ */
+void
+go_file_saver_unregister (GOFileSaver *fs)
+{
+	GList *l;
+	gchar const *id;
+
+	g_return_if_fail (IS_GO_FILE_SAVER (fs));
+
+	l = g_list_find (file_saver_list, fs);
+	g_return_if_fail (l != NULL);
+	file_saver_list = g_list_remove_link (file_saver_list, l);
+	g_list_free_1 (l);
+
+	id = go_file_saver_get_id (fs);
+	if (id != NULL) {
+		g_hash_table_remove (file_saver_id_hash, (gpointer) id);
+		if (g_hash_table_size (file_saver_id_hash) == 0) {
+			g_hash_table_destroy (file_saver_id_hash);
+			file_saver_id_hash = NULL;
+		}
+	}
+
+	for (l = default_file_saver_list; l != NULL; l = l->next) {
+		if (((DefaultFileSaver *) l->data)->saver == fs) {
+			default_file_saver_list = g_list_remove_link (default_file_saver_list, l);
+			g_free (l->data);
+			g_list_free_1 (l);
+			break;
+		}
+	}
+
+	g_object_unref (G_OBJECT (fs));
+}
+
+/**
+ * go_file_saver_get_default:
+ *
+ * Returns file saver registered as default saver with the highest priority.
+ * Reference count for the saver is NOT incremented.
+ *
+ * Return value: GOFileSaver object or NULL if default saver is not
+ *               available.
+ */
+GOFileSaver *
+go_file_saver_get_default (void)
+{
+	if (default_file_saver_list == NULL)
+		return NULL;
+
+	return ((DefaultFileSaver *) default_file_saver_list->data)->saver;
+}
+
+/**
+ * go_file_saver_for_mime_type:
+ * @mime_type: A mime type
+ *
+ * Returns a file saver that claims to save files with given mime type.
+ *
+ * Return value: GOFileSaver object or NULL if no suitable file saver could
+ *               be found.
+ */
+GOFileSaver *
+go_file_saver_for_mime_type (gchar const *mime_type)
+{
+	GList *l;
+
+	for (l = file_saver_list; l != NULL; l = l->next) {
+		if (!strcmp (go_file_saver_get_mime_type (l->data), mime_type)) {
+			return (l->data);
+		}
+	}
+	return (NULL);
+}
+
+/**
+ * go_file_saver_for_file_name :
+ * @file_name :
+ *
+ * Searches for file opener with given @filename, registered using
+ * go_file_opener_register
+ *
+ * Return value: GOFileOpener object or NULL if opener cannot be found.
+ **/
+GOFileSaver *
+go_file_saver_for_file_name (char const *file_name)
+{
+	GList *l;
+	char const *extension = gsf_extension_pointer (file_name);
+
+	for (l = file_saver_list; l != NULL; l = l->next)
+		if (!strcmp (go_file_saver_get_extension (l->data), extension))
+			return l->data;
+	return NULL;
+}
+
+/**
+ * go_file_opener_for_id:
+ * @id          : File opener's ID
+ *
+ * Searches for file opener with given @id, registered using
+ * go_file_opener_register
+ *
+ * Return value: GOFileOpener object or NULL if opener cannot be found.
+ */
+GOFileOpener *
+go_file_opener_for_id (gchar const *id)
+{
+	g_return_val_if_fail (id != NULL, NULL);
+
+	if (file_opener_id_hash == NULL)
+		return NULL;
+	return GO_FILE_OPENER (g_hash_table_lookup (file_opener_id_hash, id));
+}
+
+/**
+ * go_file_saver_for_id:
+ * @id          : File saver's ID
+ *
+ * Searches for file saver with given @id, registered using
+ * go_file_saver_register or register_file_opener_as_default.
+ *
+ * Return value: GOFileSaver object or NULL if saver cannot be found.
+ */
+GOFileSaver *
+go_file_saver_for_id (gchar const *id)
+{
+	g_return_val_if_fail (id != NULL, NULL);
+
+	if (file_saver_id_hash == NULL)
+		return NULL;
+	return GO_FILE_SAVER (g_hash_table_lookup (file_saver_id_hash, id));
+}
+
+/**
+ * get_file_savers:
+ *
+ * Returns the list of registered file savers (using go_file_saver_register or
+ * go_file_saver_register_as_default).
+ *
+ * Return value: list of GOFileSaver objects, which you shouldn't modify.
+ */
+GList *
+get_file_savers (void)
+{
+	return file_saver_list;
+}
+
+/**
+ * get_file_openers:
+ *
+ * Returns the list of registered file openers (using go_file_opener_register).
+ *
+ * Return value: list of GOFileOpener objects, which you shouldn't modify.
+ */
+GList *
+get_file_openers (void)
+{
+	return file_opener_list;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/file.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,148 @@
+#ifndef _GOFFICE_FILE_H_
+#define _GOFFICE_FILE_H_
+
+#include <glib-object.h>
+#include <gsf/gsf.h>
+#include <goffice/app/goffice-app.h>
+
+G_BEGIN_DECLS
+
+/*
+ * File format levels. They are ordered. When we save a file, we
+ * remember the name, but not if we already have a name at a higher level.
+ * When created, workbooks are assigned a name at level FILE_FL_NEW.
+ */
+typedef enum {
+	FILE_FL_NONE,            /* No name assigned, won't happen */
+	FILE_FL_WRITE_ONLY,      /* PostScript etc, won't be remembered */
+	FILE_FL_NEW,             /* Wb just created */
+	FILE_FL_MANUAL,          /* Save gets punted to save as */
+	FILE_FL_MANUAL_REMEMBER, /* Ditto, but remember in history */
+	FILE_FL_AUTO,            /* Save will save to this filename */
+	FILE_FL_LAST
+} FileFormatLevel;
+
+/*
+ * FileSaveScope specifies what information file saver can save in a file.
+ * Many savers can save the whole workbook (with all sheets), but others
+ * save only current sheet, usually because of file format limitations.
+ */
+typedef enum {
+	FILE_SAVE_WORKBOOK,
+	FILE_SAVE_SHEET,
+	FILE_SAVE_RANGE,
+	FILE_SAVE_LAST
+} FileSaveScope;
+
+/*
+ * GOFileOpener
+ */
+
+typedef struct _GOFileOpenerClass GOFileOpenerClass;
+
+#define TYPE_GO_FILE_OPENER             (go_file_opener_get_type ())
+#define GO_FILE_OPENER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GO_FILE_OPENER, GOFileOpener))
+#define IS_GO_FILE_OPENER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GO_FILE_OPENER))
+
+typedef gboolean (*GOFileOpenerProbeFunc) (GOFileOpener const *fo,
+					    GsfInput *input,
+					    FileProbeLevel pl);
+typedef void     (*GOFileOpenerOpenFunc) (GOFileOpener const *fo,
+					   IOContext *io_context,
+					   gpointer FIXME_FIXME_workbook_view,
+					   GsfInput *input);
+typedef void     (*GOFileOpenerOpenFuncWithEnc) (GOFileOpener const *fo,
+						  gchar const *enc,
+						  IOContext *io_context,
+						  gpointer FIXME_FIXME_workbook_view,
+						  GsfInput *input);
+
+GType go_file_opener_get_type (void);
+
+GOFileOpener *go_file_opener_new (char const *id,
+				    char const *description,
+				    GSList *suffixes,
+				    GSList *mimes,
+				    GOFileOpenerProbeFunc probe_func,
+				    GOFileOpenerOpenFunc open_func);
+GOFileOpener *go_file_opener_new_with_enc (char const *id,
+					     char const *description,
+					     GSList *suffixes,
+					     GSList *mimes,
+					     GOFileOpenerProbeFunc probe_func,
+					     GOFileOpenerOpenFuncWithEnc open_func);
+
+
+gboolean     go_file_opener_probe (GOFileOpener const *fo, GsfInput *input,
+				    FileProbeLevel pl);
+void         go_file_opener_open (GOFileOpener const *fo, gchar const *opt_enc,
+				   IOContext *io_context,
+				   gpointer  FIXME_FIXME_workbook_view,
+				   GsfInput *input);
+
+char const *go_file_opener_get_id		  (GOFileOpener const *fo);
+char const *go_file_opener_get_description	  (GOFileOpener const *fo);
+gboolean    go_file_opener_is_encoding_dependent (GOFileOpener const *fo);
+gboolean    go_file_opener_can_probe		  (GOFileOpener const *fo,
+						   FileProbeLevel pl);
+GSList const *go_file_opener_get_suffixes	  (GOFileOpener const *fo);
+GSList const *go_file_opener_get_mimes	  	  (GOFileOpener const *fo);
+
+/*
+ * GOFileSaver
+ */
+
+typedef struct _GOFileSaverClass GOFileSaverClass;
+
+#define TYPE_GO_FILE_SAVER             (go_file_saver_get_type ())
+#define GO_FILE_SAVER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GO_FILE_SAVER, GOFileSaver))
+#define IS_GO_FILE_SAVER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GO_FILE_SAVER))
+
+typedef void (*GOFileSaverSaveFunc) (GOFileSaver const *fs,
+				      IOContext *io_context,
+				      gconstpointer FIXME_FIXME_workbook_view,
+				      GsfOutput *output);
+GType go_file_saver_get_type (void);
+
+GOFileSaver *go_file_saver_new (char const *id,
+				  char const *extension,
+				  char const *description,
+				  FileFormatLevel level,
+				  GOFileSaverSaveFunc save_func);
+
+void          go_file_saver_set_save_scope (GOFileSaver *fs, FileSaveScope scope);
+FileSaveScope go_file_saver_get_save_scope (GOFileSaver const *fs);
+
+void         go_file_saver_save (GOFileSaver const *fs, IOContext *io_context,
+				  gconstpointer FIXME_FIXME_workbook_view,
+				  GsfOutput *output);
+void         go_file_saver_set_overwrite_files	(GOFileSaver *fs,
+						 gboolean overwrite);
+char const *go_file_saver_get_id	  	(GOFileSaver const *fs);
+char const *go_file_saver_get_extension	(GOFileSaver const *fs);
+char const *go_file_saver_get_mime_type	(GOFileSaver const *fs);
+char const *go_file_saver_get_description	(GOFileSaver const *fs);
+FileFormatLevel go_file_saver_get_format_level	(GOFileSaver const *fs);
+
+/*
+ *
+ */
+
+GList *get_file_openers (void);
+void		 go_file_opener_unregister (GOFileOpener *fo);
+void		 go_file_opener_register   (GOFileOpener *fo, gint priority);
+GOFileOpener	*go_file_opener_for_id	    (char const *id);
+
+GList *get_file_savers (void);
+void go_file_saver_unregister	(GOFileSaver *fs);
+void go_file_saver_register	(GOFileSaver *fs);
+void go_file_saver_register_as_default (GOFileSaver *fs, gint priority);
+
+GOFileSaver	*go_file_saver_get_default (void);
+GOFileSaver	*go_file_saver_for_mime_type	(char const *mime_type);
+GOFileSaver	*go_file_saver_for_file_name	(char const *file_name);
+GOFileSaver	*go_file_saver_for_id		(char const *id);
+
+G_END_DECLS
+
+#endif /* _GOFFICE_FILE_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-app.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-app.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-app.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,52 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-app.h :  A GOffice appument
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_APP_H
+#define GO_APP_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_APP_TYPE	    (go_app_get_type ())
+#define GO_APP(o)	    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_APP_TYPE, GOApp))
+#define IS_GO_APP(o)	    (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_APP_TYPE))
+
+GType go_app_get_type (void);
+
+/* FIXME : should be in GOContext which App inherits from */
+GOPlugin *go_app_get_plugin (char const *id);
+
+/* TODO : I suspect these should be lookups of some sort
+ *  eg go_app_find_in_lib_dir (GOApp const *app, subdir);
+ *  or possibly
+ *     go_app_foreach_lib_dir (GOApp const *app, gboolean (*handler)(path, userdata));
+ **/
+char	 *go_app_sys_lib_dir    (GOApp const *app, char const *subdir);
+char	 *go_app_sys_data_dir   (GOApp const *app, char const *subdir);
+char	 *go_app_sys_plugin_dir (GOApp const *app);
+
+/* FIXME : Seems gui specific, move to gui-utils */
+char	 *go_app_sys_glade_dir  (GOApp const *app);
+
+G_END_DECLS
+
+#endif /* GO_APP_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,33 @@
+#ifndef GO_CMD_CONTEXT_IMPL_H
+#define GO_CMD_CONTEXT_IMPL_H
+
+#include <goffice/app/go-cmd-context.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GTypeInterface base;
+
+	char *  (*get_password)		(GOCmdContext *gcc,
+					 char const *filename);
+	void    (*set_sensitive)	(GOCmdContext *gcc,
+					 gboolean sensitive);
+	struct {
+		void (*error)		(GOCmdContext *gcc, GError *err);
+		void (*error_info)  	(GOCmdContext *gcc, ErrorInfo *err);
+	} error;
+
+	void    (*progress_set)		(GOCmdContext *gcc, float val);
+	void    (*progress_message_set)	(GOCmdContext *gcc, gchar const *msg);
+} GOCmdContextClass;
+
+#define GO_CMD_CONTEXT_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST((k), GO_CMD_CONTEXT_TYPE, GOCmdContextClass))
+#define IS_GO_CMD_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), GO_CMD_CONTEXT_TYPE))
+
+/* protected, these do not really belong here, they are associated with io-context */
+void  go_cmd_context_progress_set	  (GOCmdContext *gcc, float f);
+void  go_cmd_context_progress_message_set (GOCmdContext *gcc, char const *msg);
+
+G_END_DECLS
+
+#endif /* GO_CMD_CONTEXT_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,155 @@
+/*
+ * go-cmd-context.c : Error dispatch utilities.
+ *
+ * Author:
+ * 	Jody Goldberg <jody at gnome.org>
+ *
+ * (C) 1999-2004 Jody Goldberg
+ */
+#include <goffice/goffice-config.h>
+#include "go-cmd-context-impl.h"
+#include <goffice/app/goffice-app.h>
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+#define GCC_CLASS(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GO_CMD_CONTEXT_TYPE, GOCmdContextClass))
+
+static GError *
+format_message (GQuark id, char const *message)
+{
+	char const *msg = message ? message : "";
+	return g_error_new_literal (id, 0, msg);
+}
+
+void
+go_cmd_context_error (GOCmdContext *context, GError *err)
+{
+	g_return_if_fail (IS_GO_CMD_CONTEXT (context));
+	GCC_CLASS (context)->error.error (context, err);
+}
+
+void
+go_cmd_context_error_info (GOCmdContext *context, ErrorInfo *stack)
+{
+	g_return_if_fail (IS_GO_CMD_CONTEXT (context));
+	GCC_CLASS (context)->error.error_info (context, stack);
+}
+
+void
+go_cmd_context_error_system (GOCmdContext *context, char const *message)
+{
+	GError *err = format_message (go_error_system (), message);
+	go_cmd_context_error (context, err);
+	g_error_free (err);
+}
+
+void
+go_cmd_context_error_import (GOCmdContext *context, char const *message)
+{
+	GError *err = format_message (go_error_import (), message);
+	go_cmd_context_error (context, err);
+	g_error_free (err);
+}
+
+void
+go_cmd_context_error_export (GOCmdContext *context, char const *message)
+{
+	GError *err = format_message (go_error_export (), message);
+	go_cmd_context_error (context, err);
+	g_error_free (err);
+}
+
+void
+go_cmd_context_error_invalid (GOCmdContext *context, char const *msg, char const *val)
+{
+	GError *err = g_error_new (go_error_invalid(), 0, "Invalid %s : '%s'", msg, val);
+	go_cmd_context_error (context, err);
+	g_error_free (err);
+}
+
+GQuark
+go_error_system (void)
+{
+	static GQuark quark;
+	if (!quark)
+		quark = g_quark_from_static_string ("go_error_system");
+	return quark;
+}
+GQuark
+go_error_import (void)
+{
+	static GQuark quark;
+	if (!quark)
+		quark = g_quark_from_static_string ("go_error_import");
+	return quark;
+}
+GQuark
+go_error_export (void)
+{
+	static GQuark quark;
+	if (!quark)
+		quark = g_quark_from_static_string ("go_error_export");
+	return quark;
+}
+GQuark
+go_error_invalid (void)
+{
+	static GQuark quark;
+	if (!quark)
+		quark = g_quark_from_static_string ("go_error_invalid");
+	return quark;
+}
+
+void
+go_cmd_context_progress_set (GOCmdContext *context, gfloat f)
+{
+	g_return_if_fail (IS_GO_CMD_CONTEXT (context));
+
+	GCC_CLASS (context)->progress_set (context, f);
+}
+
+void
+go_cmd_context_progress_message_set (GOCmdContext *context, gchar const *msg)
+{
+	g_return_if_fail (IS_GO_CMD_CONTEXT (context));
+
+	if (msg == NULL)
+		msg = " ";
+	GCC_CLASS (context)->progress_message_set (context, msg);
+}
+
+char *
+go_cmd_context_get_password (GOCmdContext *cc, char const *filename)
+{
+	g_return_val_if_fail (IS_GO_CMD_CONTEXT (cc), NULL);
+
+	return GCC_CLASS (cc)->get_password (cc, filename);
+}
+
+void
+go_cmd_context_set_sensitive (GOCmdContext *cc, gboolean sensitive)
+{
+	g_return_if_fail (IS_GO_CMD_CONTEXT (cc));
+
+	GCC_CLASS (cc)->set_sensitive (cc, sensitive);
+}
+
+GType
+go_cmd_context_get_type (void)
+{
+	static GType go_cmd_context_type = 0;
+
+	if (!go_cmd_context_type) {
+		static GTypeInfo const go_cmd_context_info = {
+			sizeof (GOCmdContextClass),	/* class_size */
+			NULL,				/* base_init */
+			NULL,				/* base_finalize */
+		};
+
+		go_cmd_context_type = g_type_register_static (G_TYPE_INTERFACE,
+			"GOCmdContext", &go_cmd_context_info, 0);
+	}
+
+	return go_cmd_context_type;
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-cmd-context.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,55 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-cmd-context.h: 
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_CMD_CONTEXT_H
+#define GO_CMD_CONTEXT_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_CMD_CONTEXT_TYPE        (go_cmd_context_get_type ())
+#define GO_CMD_CONTEXT(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_CMD_CONTEXT_TYPE, GOCmdContext))
+#define IS_GO_CMD_CONTEXT(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_CMD_CONTEXT_TYPE))
+
+GType  go_cmd_context_get_type (void);
+
+void   go_cmd_context_error	    (GOCmdContext *cc, GError *err);
+char  *go_cmd_context_get_password  (GOCmdContext *cc, char const *fname);
+void   go_cmd_context_set_sensitive (GOCmdContext *cc, gboolean flag);
+
+/* utility routines for common errors */
+void   go_cmd_context_error_system  (GOCmdContext *cc, char const *msg);
+void   go_cmd_context_error_import  (GOCmdContext *cc, char const *msg);
+void   go_cmd_context_error_export  (GOCmdContext *cc, char const *msg);
+void   go_cmd_context_error_invalid (GOCmdContext *cc,
+				     char const *msg, char const *val);
+void   go_cmd_context_error_info    (GOCmdContext *cc, ErrorInfo *stack);
+
+/* An initial set of std errors */
+GQuark go_error_system  (void);
+GQuark go_error_import  (void);
+GQuark go_error_export  (void);
+GQuark go_error_invalid (void);
+
+G_END_DECLS
+
+#endif /* GO_CMD_CONTEXT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-doc-impl.h : Implementation details of a GOffice Document
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_DOC_CONTROL_IMPL_H
+#define GO_DOC_CONTROL_IMPL_H
+
+#include <goffice/app/go-doc-control.h>
+
+G_BEGIN_DECLS
+
+struct _GODocControl {
+	GObject		 base;
+
+	struct {
+	} state[GO_DOC_CONTROL_STATE_MAX];
+};
+
+typedef struct {
+	GObjectClass	base;
+} GODocControlClass;
+
+#define GO_DOC_CONTROL_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k),   GO_DOC_CONTROL_TYPE, GODocControlClass))
+#define IS_GO_DOC_CONTROL_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k),   GO_DOC_CONTROL_TYPE))
+#define GO_DOC_CONTROL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GO_DOC_CONTROL_TYPE, GODocControlClass))
+
+G_END_DECLS
+
+#endif /* GO_DOC_CONTROL_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-doc-control.c : A controller for GOffice Document
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/app/goffice-app.h>
+#include <goffice/app/go-doc-control-impl.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+static void
+go_doc_control_class_init (GObjectClass *klass)
+{
+}
+
+static void
+go_doc_control_init (GODocControl *obj)
+{
+}
+
+GSF_CLASS (GODocControl, go_doc_control,
+	   go_doc_control_class_init, go_doc_control_init,
+	   G_TYPE_OBJECT)
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-control.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,43 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-doc.h :  A GOffice document
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_DOC_CONTROL_H
+#define GO_DOC_CONTROL_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_DOC_CONTROL_TYPE	    (go_doc_control_get_type ())
+#define GO_DOC_CONTROL(o)	    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DOC_CONTROL_TYPE, GODocControl))
+#define IS_GO_DOC_CONTROL(o)	    (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DOC_CONTROL_TYPE))
+
+typedef enum {
+	GO_DOC_CONTROL_STATE_NORMAL = 0,
+	GO_DOC_CONTROL_STATE_FULLSCREEN,
+	GO_DOC_CONTROL_STATE_MAX
+} GODocControlState;
+
+GType go_doc_control_get_type (void);
+
+G_END_DECLS
+
+#endif /* GO_DOC_CONTROL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,42 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-doc-impl.h : Implementation details of a GOffice Document
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_DOC_IMPL_H
+#define GO_DOC_IMPL_H
+
+#include <goffice/app/go-doc.h>
+
+G_BEGIN_DECLS
+
+struct _GODoc {
+	GObject		 base;
+};
+
+typedef struct {
+	GObjectClass	base;
+} GODocClass;
+
+#define GO_DOC_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), GO_DOC_TYPE, GODocClass))
+#define IS_GO_DOC_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GO_DOC_TYPE))
+#define GO_DOC_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GO_DOC_TYPE, GODocClass))
+
+G_END_DECLS
+
+#endif /* GO_DOC_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-doc.c : A GOffice Document
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/app/goffice-app.h>
+#include <goffice/app/go-doc-impl.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+static void
+go_doc_class_init (GObjectClass *klass)
+{
+}
+
+static void
+go_doc_init (GODoc *obj)
+{
+}
+
+GSF_CLASS (GODoc, go_doc,
+	   go_doc_class_init, go_doc_init,
+	   G_TYPE_OBJECT)
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-doc.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,52 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-doc.h :  A GOffice document
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_DOC_H
+#define GO_DOC_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_DOC_TYPE	    (go_doc_get_type ())
+#define GO_DOC(o)	    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DOC_TYPE, GODoc))
+#define IS_GO_DOC(o)	    (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DOC_TYPE))
+
+GType go_doc_get_type (void);
+
+#if 0
+GODoc   *go_doc_new_from_input  (GsfInput *input,
+				 GODocImporter const *fmt,
+				 GOIOContext *context,
+				 gchar const *encoding);
+GODoc   *go_doc_new_from_uri	(char const *uri,
+				 GnmFileOpener const *fmt,
+				 GOIOContext *context, 
+				 gchar const *encoding);
+gboolean go_doc_save		(GODoc *doc, GOIOContext *context);
+gboolean go_doc_save_as		(GODoc *doc, GODocExporter *fmt, char const *uri,
+				 GOIOContext *cc);
+gboolean go_doc_sendto		(GODoc *doc, GOIOContext *cc);
+#endif
+
+G_END_DECLS
+
+#endif /* GO_DOC_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-error-stack.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-error-stack.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-error-stack.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,37 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-error-stack.h : A tree of errors
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_ERROR_STACK_H
+#define GO_ERROR_STACK_H
+
+#include <glib-object.h>
+#include <goffice/app/goffice-app.h>
+
+G_BEGIN_DECLS
+
+GOErrorStack *go_error_stack_new (GOErrorStack *parent,
+				   char const *fmt, ...) G_GNUC_PRINTF (2, 3);
+void go_error_stack_add_child	  (GOErrorStack *estack, GOErrorStack *child);
+void go_error_stack_dump	  (GOErrorStack *estack);
+void go_error_stack_free	  (GOErrorStack *estack);
+
+G_END_DECLS
+
+#endif /* GO_ERROR_STACK_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,134 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-object.c : 
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/app/go-object.h>
+#include <goffice/app/go-service-impl.h>
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/go-error-stack.h>
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+struct _GOServiceObject {
+	GOService	base;
+
+	char	*primary_type;
+	GSList	*interfaces;
+};
+typedef GOServiceClass GOServiceObjectClass;
+
+static GObjectClass *go_service_object_parent_class;
+
+static GHashTable *plugin_types = NULL;
+
+static void
+go_service_object_finalize (GObject *obj)
+{
+	go_service_object_finalize->finalize (obj);
+}
+
+static char *
+go_service_object_description (G_GNUC_UNUSED GOService *s)
+{
+	return g_strdup (_("Objects"));
+}
+
+static void
+go_service_object_class_init (GObjectClass *gobj_class)
+{
+	GOServiceClass *serv_class = (GOServiceClass *)gobj_class;
+	go_combo_box_parent_class = g_type_class_peek_parent (gobj_class);
+	gobj_class->finalize = go_service_object_finalize;
+	serv_class->description = go_service_object_description;
+	plugin_types = g_hash_table_new (g_str_hash, g_str_equal);
+}
+
+GSF_CLASS (GOServiceObject, go_service_object,
+           go_service_object_class_init, NULL,
+           GO_SERVICE_TYPE)
+
+char const *
+go_service_object_primary_type (GOServiceObject const *service)
+{
+	g_return_val_if_fail (IS_GO_SERVICE_OBJECT (service), NULL);
+	return service->primary_type;
+}
+
+GSList const *
+go_service_object_interfaces (GOServiceObject const *service)
+{
+	g_return_val_if_fail (IS_GO_SERVICE_OBJECT (service), NULL);
+	return service->interfaces;
+}
+
+/****************************************************************************/
+
+gpointer
+go_object_new_valist (char const *type, char const *first_prop, va_list args)
+{
+	GType t = g_type_from_name (type);
+
+	if (t == 0) {
+		GOService *service = plugin_types ?
+			g_hash_table_lookup (plugin_types, type) : NULL;
+		GOPlugin *plugin;
+		GOErrorStack *err;
+
+		g_return_val_if_fail (service != NULL, NULL);
+
+		plugin = go_service_get_plugin (service);
+
+		if (!go_plugin_is_enabled (plugin))
+			return NULL;
+
+		if (!go_plugin_is_loaded (plugin))
+			err = go_plugin_load (plugin);
+
+		if (err == NULL) {
+			t = g_type_from_name (type);
+			if (t == 0)
+				err = go_error_stack_new (err,
+					_("Loading plugin '%s' that contains the object '%s'"),
+					go_plugin_get_id (plugin), type);;
+		}
+		if (err != NULL) {
+			go_error_stack_dump (err);
+			go_error_stack_free (err);
+			return NULL;
+		}
+
+		g_return_val_if_fail (type != 0, NULL);
+	}
+	return g_object_new_valist (t, first_prop, args);
+}
+
+gpointer
+go_object_new (char const *type, char const *first_prop, ...)
+{
+	gpointer res;
+	va_list args;
+
+	va_start (args, first_prop);
+	res = go_object_new_valist (type, first_prop, args);
+	va_end (args);
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-object.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-object.h : A GOPlugin aware wrapper for g_object_new
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_OBJECT_H
+#define GO_OBJECT_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+gpointer go_object_new        (char const *type, char const *first_prop, ...);
+gpointer go_object_new_valist (char const *type, char const *first_prop,
+			       va_list vargs);
+
+/*****************************************************************************/
+
+#define GO_SERVICE_OBJECT_TYPE  (go_service_object_get_type ())
+#define GO_SERVICE_OBJECT(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_SERVICE_OBJECT_TYPE, GOServiceObject))
+#define IS_GO_SERVICE_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_SERVICE_OBJECT_TYPE))
+typedef struct _GOServiceObject	GOServiceObject;
+GType go_service_object_get_type (void);
+
+char const   *go_service_object_primary_type (GOServiceObject const *service);
+GSList const *go_service_object_interfaces   (GOServiceObject const *service);
+
+G_END_DECLS
+
+#endif /* GO_OBJECT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,409 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * plugin-loader-module.c: Support for "g_module" (shared libraries) plugins.
+ *
+ * Author: Zbigniew Chyla (cyba at gnome.pl)
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-plugin-loader-module.h"
+#include "module-plugin-defs.h"
+
+#include <goffice/app/file.h>
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/go-plugin-service.h>
+#include <goffice/app/go-plugin-loader.h>
+#include <goffice/app/error-info.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-output.h>
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxml/xmlmemory.h>
+#include <glib/gi18n.h>
+#include <string.h>
+
+static void go_plugin_loader_module_set_attributes (GOPluginLoader *loader, GHashTable *attrs, ErrorInfo **ret_error);
+static void go_plugin_loader_module_load_base (GOPluginLoader *loader, ErrorInfo **ret_error);
+static void go_plugin_loader_module_unload_base (GOPluginLoader *loader, ErrorInfo **ret_error);
+
+static void go_plugin_loader_module_load_service_file_opener (GOPluginLoader *loader, GOPluginService *service, ErrorInfo **ret_error);
+static void go_plugin_loader_module_load_service_file_saver (GOPluginLoader *loader, GOPluginService *service, ErrorInfo **ret_error);
+static void go_plugin_loader_module_load_service_plugin_loader (GOPluginLoader *loader, GOPluginService *service, ErrorInfo **ret_error);
+
+static GHashTable *go_plugin_loader_module_known_deps = NULL;
+
+void
+go_plugin_loader_module_register_version (char const *id, char const *version)
+{
+	if (NULL == go_plugin_loader_module_known_deps)
+		go_plugin_loader_module_known_deps =
+			g_hash_table_new (g_str_hash, g_str_equal);
+	g_hash_table_replace (go_plugin_loader_module_known_deps,
+		(gpointer)id, (gpointer)version);
+}
+
+static void
+go_plugin_loader_module_set_attributes (GOPluginLoader *loader, GHashTable *attrs,
+					ErrorInfo **err)
+{
+	GOPluginLoaderModule *loader_module = GO_PLUGIN_LOADER_MODULE (loader);
+	gchar *module_file_name = g_hash_table_lookup (attrs, "module_file");
+
+	if (module_file_name != NULL)
+		loader_module->module_file_name = g_strdup (module_file_name);
+	else
+		*err = error_info_new_str ( _("Module file name not given."));
+}
+
+static ErrorInfo *
+check_version (GOPluginModuleDepend const *deps, guint32 num_deps, char const *module_file)
+{
+	unsigned i;
+	char const *ver;
+
+	if (deps == NULL && num_deps != 0)
+		return error_info_new_printf (
+			_("Module \"%s\" has an inconsistent dependency list."),
+			module_file);
+
+	g_return_val_if_fail (go_plugin_loader_module_known_deps != NULL, NULL);
+
+	for (i = 0; i < num_deps ; i++) {
+		if (deps[i].key == NULL)
+			return error_info_new_printf (
+				_("Module \"%s\" depends on an invalid null dependency."),
+				module_file);
+		ver = g_hash_table_lookup (go_plugin_loader_module_known_deps, deps[i].key);
+		if (ver == NULL)
+			return error_info_new_printf (
+				_("Module \"%s\" depends on an unknown dependency '%s'."),
+				module_file, deps[i].key);
+
+		if (strcmp (ver, deps[i].version))
+			return error_info_new_printf (
+				_("Module \"%s\" was built with version %s of %s, but this executable supplied version %s."),
+				module_file, deps[i].version, deps[i].key, ver);
+	}
+	return NULL;
+}
+
+static void
+go_plugin_loader_module_load_base (GOPluginLoader *loader, ErrorInfo **err)
+{
+	GOPluginLoaderModule *loader_module = GO_PLUGIN_LOADER_MODULE (loader);
+	gchar *full_module_file_name;
+	GModule *handle;
+	GOPluginModuleHeader const *go_plugin_header = NULL;
+	GOPluginModuleDepend const *go_plugin_depends = NULL;
+
+	GO_INIT_RET_ERROR_INFO (err);
+	if (!g_module_supported ()) {
+		*err = error_info_new_str (
+			_("Dynamic module loading is not supported in this system."));
+		return;
+	}
+
+	full_module_file_name = g_build_filename (go_plugin_get_dir_name (
+		go_plugin_loader_get_plugin (loader)),
+		loader_module->module_file_name, NULL);
+	handle = g_module_open (full_module_file_name, 0);
+	if (handle == NULL) {
+		*err = error_info_new_printf (
+			_("Unable to open module file \"%s\"."),
+			full_module_file_name);
+		error_info_add_details (*err, error_info_new_str (g_module_error()));
+	} else {
+		g_module_symbol (handle, "go_plugin_header", (gpointer) &go_plugin_header);
+		g_module_symbol (handle, "go_plugin_depends", (gpointer) &go_plugin_depends);
+		if (go_plugin_header == NULL) {
+			*err = error_info_new_printf (
+				_("Module \"%s\" doesn't contain (\"go_plugin_header\" symbol)."),
+				full_module_file_name);
+		} else if (go_plugin_header->magic_number != GOFFICE_MODULE_PLUGIN_MAGIC_NUMBER) {
+			*err = error_info_new_printf (
+				_("Module \"%s\" has an invalid magic number."),
+				full_module_file_name);
+		} else if (NULL == (*err = check_version (go_plugin_depends,  go_plugin_header->num_depends, full_module_file_name))) {
+			loader_module->handle = handle;
+			g_module_symbol (handle, "go_plugin_init", (gpointer)&loader_module->plugin_init);
+			g_module_symbol (handle, "go_plugin_shutdown", (gpointer)&loader_module->plugin_shutdown);
+			if (loader_module->plugin_init != NULL)
+				(loader_module->plugin_init) (go_plugin_loader_get_plugin (loader), NULL);
+		} 
+
+		if (*err != NULL)
+			g_module_close (handle);
+	}
+	g_free (full_module_file_name);
+}
+
+static void
+go_plugin_loader_module_unload_base (GOPluginLoader *loader, ErrorInfo **ret_error)
+{
+	GOPluginLoaderModule *loader_module = GO_PLUGIN_LOADER_MODULE (loader);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (loader_module->plugin_shutdown != NULL) {
+		loader_module->plugin_shutdown (go_plugin_loader_get_plugin (loader), NULL);
+	}
+	if (!g_module_close (loader_module->handle)) {
+		*ret_error = error_info_new_printf (
+			_("Unable to close module file \"%s\"."),
+			loader_module->module_file_name);
+		error_info_add_details (*ret_error, error_info_new_str (g_module_error()));
+	}
+	loader_module->handle = NULL;
+	loader_module->plugin_init = NULL;
+	loader_module->plugin_shutdown = NULL;
+}
+
+static void
+go_plugin_loader_module_init (GOPluginLoaderModule *loader_module)
+{
+	g_return_if_fail (IS_GO_PLUGIN_LOADER_MODULE (loader_module));
+
+	loader_module->module_file_name = NULL;
+	loader_module->handle = NULL;
+}
+
+static void
+go_plugin_loader_module_finalize (GObject *obj)
+{
+	GOPluginLoaderModule *loader_module = GO_PLUGIN_LOADER_MODULE (obj);
+	g_free (loader_module->module_file_name);
+	loader_module->module_file_name = NULL;
+	G_OBJECT_CLASS (g_type_class_peek (G_TYPE_OBJECT))->finalize (obj);
+}
+
+static void
+go_plugin_loader_module_class_init (GObjectClass *gobject_class)
+{
+	gobject_class->finalize = go_plugin_loader_module_finalize;
+	go_plugin_loader_module_register_version ("goffice", GOFFICE_API_VERSION);
+}
+
+static void
+go_plugin_loader_init (GOPluginLoaderClass *go_plugin_loader_class)
+{
+	go_plugin_loader_class->set_attributes = go_plugin_loader_module_set_attributes;
+	go_plugin_loader_class->load_base = go_plugin_loader_module_load_base;
+	go_plugin_loader_class->unload_base = go_plugin_loader_module_unload_base;
+	go_plugin_loader_class->load_service_file_opener = go_plugin_loader_module_load_service_file_opener;
+	go_plugin_loader_class->load_service_file_saver = go_plugin_loader_module_load_service_file_saver;
+	go_plugin_loader_class->load_service_plugin_loader = go_plugin_loader_module_load_service_plugin_loader;
+}
+
+GSF_CLASS_FULL (GOPluginLoaderModule, go_plugin_loader_module,
+	   NULL, NULL, go_plugin_loader_module_class_init, NULL,
+	   go_plugin_loader_module_init, G_TYPE_OBJECT, 0,
+	   GSF_INTERFACE (go_plugin_loader_init, GO_PLUGIN_LOADER_TYPE))
+
+/*
+ * Service - file_opener
+ */
+
+typedef struct {
+	gboolean (*module_func_file_probe) (GOFileOpener const *fo, GsfInput *input,
+					    FileProbeLevel pl);
+	void (*module_func_file_open) (GOFileOpener const *fo, IOContext *io_context,
+				       gpointer FIXME_FIXME_workbook_view,
+				       GsfInput *input);
+} ServiceLoaderDataFileOpener;
+
+static gboolean
+go_plugin_loader_module_func_file_probe (GOFileOpener const *fo, GOPluginService *service,
+					  GsfInput *input, FileProbeLevel pl)
+{
+	ServiceLoaderDataFileOpener *loader_data;
+
+	g_return_val_if_fail (IS_GO_PLUGIN_SERVICE_FILE_OPENER (service), FALSE);
+	g_return_val_if_fail (input != NULL, FALSE);
+
+	loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
+	return loader_data->module_func_file_probe (fo, input, pl);
+}
+
+static void
+go_plugin_loader_module_func_file_open (GOFileOpener const *fo, GOPluginService *service,
+					 IOContext *io_context,
+					 gpointer   FIXME_FIXME_workbook_view,
+					 GsfInput  *input)
+{
+	ServiceLoaderDataFileOpener *loader_data;
+
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE_FILE_OPENER (service));
+	g_return_if_fail (input != NULL);
+
+	loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
+	loader_data->module_func_file_open (fo, io_context,
+		FIXME_FIXME_workbook_view, input);
+}
+
+static void
+go_plugin_loader_module_load_service_file_opener (GOPluginLoader *loader,
+						  GOPluginService *service,
+						  ErrorInfo **ret_error)
+{
+	GOPluginLoaderModule *loader_module = GO_PLUGIN_LOADER_MODULE (loader);
+	gchar *func_name_file_probe, *func_name_file_open;
+	gpointer module_func_file_probe = NULL, module_func_file_open = NULL;
+
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE_FILE_OPENER (service));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	func_name_file_probe = g_strconcat (
+		plugin_service_get_id (service), "_file_probe", NULL);
+	g_module_symbol (loader_module->handle, func_name_file_probe, &module_func_file_probe);
+	func_name_file_open = g_strconcat (
+		plugin_service_get_id (service), "_file_open", NULL);
+	g_module_symbol (loader_module->handle, func_name_file_open, &module_func_file_open);
+	if (module_func_file_open != NULL) {
+		PluginServiceFileOpenerCallbacks *cbs;
+		ServiceLoaderDataFileOpener *loader_data;
+
+		cbs = plugin_service_get_cbs (service);
+		cbs->plugin_func_file_probe = go_plugin_loader_module_func_file_probe;
+		cbs->plugin_func_file_open = go_plugin_loader_module_func_file_open;
+
+		loader_data = g_new (ServiceLoaderDataFileOpener, 1);
+		loader_data->module_func_file_probe = module_func_file_probe;
+		loader_data->module_func_file_open = module_func_file_open;
+		g_object_set_data_full (
+					G_OBJECT (service), "loader_data", loader_data, g_free);
+	} else {
+		*ret_error = error_info_new_printf (
+			_("Module file \"%s\" has invalid format."),
+			loader_module->module_file_name);
+		error_info_add_details (*ret_error, error_info_new_printf (
+			_("File doesn't contain \"%s\" function."), func_name_file_open));
+	}
+	g_free (func_name_file_probe);
+	g_free (func_name_file_open);
+}
+
+/*
+ * Service - file_saver
+ */
+
+typedef struct {
+	void (*module_func_file_save) (GOFileSaver const *fs, IOContext *io_context,
+				       gconstpointer FIXME_FIXME_workbook_view,
+				       GsfOutput *output);
+} ServiceLoaderDataFileSaver;
+
+static void
+go_plugin_loader_module_func_file_save (GOFileSaver const *fs, GOPluginService *service,
+					 IOContext *io_context,
+					 gconstpointer FIXME_FIXME_workbook_view,
+					 GsfOutput *output)
+{
+	ServiceLoaderDataFileSaver *loader_data;
+
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE_FILE_SAVER (service));
+	g_return_if_fail (GSF_IS_OUTPUT (output));
+
+	loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
+	loader_data->module_func_file_save (fs, io_context,
+		FIXME_FIXME_workbook_view, output);
+}
+
+static void
+go_plugin_loader_module_load_service_file_saver (GOPluginLoader *loader,
+						 GOPluginService *service,
+						 ErrorInfo **ret_error)
+{
+	GOPluginLoaderModule *loader_module = GO_PLUGIN_LOADER_MODULE (loader);
+	gchar *func_name_file_save;
+	gpointer module_func_file_save = NULL;
+
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE_FILE_SAVER (service));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	func_name_file_save = g_strconcat (
+					   plugin_service_get_id (service), "_file_save", NULL);
+	g_module_symbol (loader_module->handle, func_name_file_save, &module_func_file_save);
+	if (module_func_file_save != NULL) {
+		PluginServiceFileSaverCallbacks *cbs;
+		ServiceLoaderDataFileSaver *loader_data;
+
+		cbs = plugin_service_get_cbs (service);
+		cbs->plugin_func_file_save = go_plugin_loader_module_func_file_save;
+
+		loader_data = g_new (ServiceLoaderDataFileSaver, 1);
+		loader_data->module_func_file_save = module_func_file_save;
+		g_object_set_data_full (
+					G_OBJECT (service), "loader_data", loader_data, g_free);
+	} else {
+		*ret_error = error_info_new_printf (
+			_("Module file \"%s\" has invalid format."),
+			loader_module->module_file_name);
+		error_info_add_details (*ret_error, error_info_new_printf (
+			_("File doesn't contain \"%s\" function."),
+			func_name_file_save));
+	}
+	g_free (func_name_file_save);
+}
+
+/*
+ * Service - plugin_loader
+ */
+
+typedef struct {
+	GType (*module_func_get_loader_type) (ErrorInfo **ret_error);
+} ServiceLoaderDataPluginLoader;
+
+static GType
+go_plugin_loader_module_func_get_loader_type (GOPluginService *service,
+					       ErrorInfo **ret_error)
+{
+	ServiceLoaderDataPluginLoader *loader_data;
+	ErrorInfo *error = NULL;
+	GType loader_type;
+
+	g_return_val_if_fail (IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER (service), 0);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	loader_data = g_object_get_data (G_OBJECT (service), "loader_data");
+	loader_type = loader_data->module_func_get_loader_type (&error);
+	if (error == NULL) {
+		return loader_type;
+	} else {
+		*ret_error = error;
+		return (GType) 0;
+	}
+}
+
+static void
+go_plugin_loader_module_load_service_plugin_loader (GOPluginLoader *loader,
+						    GOPluginService *service,
+						    ErrorInfo **ret_error)
+{
+	GOPluginLoaderModule *loader_module = GO_PLUGIN_LOADER_MODULE (loader);
+	gchar *func_name_get_loader_type;
+	gpointer module_func_get_loader_type = NULL;
+
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER (service));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	func_name_get_loader_type = g_strconcat (
+		plugin_service_get_id (service), "_get_loader_type", NULL);
+	g_module_symbol (loader_module->handle, func_name_get_loader_type,
+			 &module_func_get_loader_type);
+	if (module_func_get_loader_type != NULL) {
+		PluginServicePluginLoaderCallbacks *cbs;
+		ServiceLoaderDataPluginLoader *loader_data;
+
+		cbs = plugin_service_get_cbs (service);
+		cbs->plugin_func_get_loader_type = go_plugin_loader_module_func_get_loader_type;
+
+		loader_data = g_new (ServiceLoaderDataPluginLoader, 1);
+		loader_data->module_func_get_loader_type = module_func_get_loader_type;
+		g_object_set_data_full (G_OBJECT (service),
+			"loader_data", loader_data, g_free);
+	} else
+		*ret_error = error_info_new_printf (
+			_("Module doesn't contain \"%s\" function."),
+			func_name_get_loader_type);
+	g_free (func_name_get_loader_type);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader-module.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,33 @@
+#ifndef GO_PLUGIN_LOADER_MODULE_H
+#define GO_PLUGIN_LOADER_MODULE_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+#include <gmodule.h>
+
+G_BEGIN_DECLS
+
+#define GO_PLUGIN_LOADER_MODULE_TYPE		(go_plugin_loader_module_get_type ())
+#define GO_PLUGIN_LOADER_MODULE(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_LOADER_MODULE_TYPE, GOPluginLoaderModule))
+#define IS_GO_PLUGIN_LOADER_MODULE(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_LOADER_MODULE_TYPE))
+#define GO_PLUGIN_LOADER_MODULE_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GO_PLUGIN_LOADER_MODULE_TYPE, GOPluginLoaderModuleClass))
+#define IS_GO_PLUGIN_LOADER_MODULE_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GO_PLUGIN_LOADER_MODULE_TYPE))
+
+typedef struct {
+	GObject	base;
+
+	gchar *module_file_name;
+	GModule *handle;
+
+	void (*plugin_init)	(GOPlugin *plugin, GOCmdContext *cc);
+	void (*plugin_shutdown) (GOPlugin *plugin, GOCmdContext *cc);
+} GOPluginLoaderModule;
+typedef GObjectClass GOPluginLoaderModuleClass;
+
+GType go_plugin_loader_module_get_type (void);
+
+void go_plugin_loader_module_register_version (char const *id, char const *ver);
+
+G_END_DECLS
+
+#endif /* GO_PLUGIN_LOADER_MODULE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,181 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * go-plugin-loader.c: Base class for plugin loaders.
+ *
+ * Author: Zbigniew Chyla (cyba at gnome.pl)
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/app/go-plugin-loader.h>
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/go-plugin-service.h>
+#include <goffice/app/error-info.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+#define PL_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_INTERFACE ((o), GO_PLUGIN_LOADER_TYPE, GOPluginLoaderClass))
+
+gboolean
+go_plugin_loader_is_base_loaded (GOPluginLoader *loader)
+{
+	return g_object_get_data (G_OBJECT (loader), "is-base-loaded") != NULL;
+}
+GOPlugin *
+go_plugin_loader_get_plugin (GOPluginLoader *l)
+{
+	return g_object_get_data (G_OBJECT (l), "plugin");
+}
+
+void
+go_plugin_loader_set_plugin (GOPluginLoader *l, GOPlugin *p)
+{
+	g_object_set_data (G_OBJECT (l), "plugin", p);
+}
+
+void
+go_plugin_loader_set_attributes (GOPluginLoader *loader, GHashTable *attrs,
+				 ErrorInfo **err)
+{
+	g_return_if_fail (IS_GO_PLUGIN_LOADER (loader));
+
+	GO_INIT_RET_ERROR_INFO (err);
+	if (PL_GET_CLASS (loader)->set_attributes)
+		PL_GET_CLASS (loader)->set_attributes (loader, attrs, err);
+	else
+		*err = error_info_new_printf (_("Loader has no set_attributes method.\n"));
+}
+
+void
+go_plugin_loader_load_base (GOPluginLoader *loader, ErrorInfo **err)
+{
+	GOPluginLoaderClass *go_plugin_loader_class;
+
+	g_return_if_fail (IS_GO_PLUGIN_LOADER (loader));
+	g_return_if_fail (!go_plugin_loader_is_base_loaded (loader));
+
+	go_plugin_loader_class = PL_GET_CLASS (loader);
+	if (go_plugin_loader_class->load_base != NULL)
+		go_plugin_loader_class->load_base (loader, err);
+	else
+		*err = error_info_new_printf (_("Loader has no load_base method.\n"));
+	if (*err == NULL)
+		g_object_set_data (G_OBJECT (loader), "is-base-loaded", GINT_TO_POINTER (1));
+}
+
+void
+go_plugin_loader_unload_base (GOPluginLoader *loader, ErrorInfo **err)
+{
+	GOPluginLoaderClass *go_plugin_loader_class;
+
+	g_return_if_fail (IS_GO_PLUGIN_LOADER (loader));
+
+	go_plugin_loader_class = PL_GET_CLASS (loader);
+	if (go_plugin_loader_class->unload_base != NULL) {
+		go_plugin_loader_class->unload_base (loader, err);
+		if (*err == NULL)
+			g_object_set_data (G_OBJECT (loader), "is-base-loaded", NULL);
+	}
+}
+
+void
+go_plugin_loader_load_service (GOPluginLoader *l, GOPluginService *s, ErrorInfo **err)
+{
+	GOPluginLoaderClass *klass;
+	void (*load_service_method) (GOPluginLoader *, GOPluginService *, ErrorInfo **) = NULL;
+
+	g_return_if_fail (IS_GO_PLUGIN_LOADER (l));
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE (s));
+	g_return_if_fail (go_plugin_loader_is_base_loaded (l));
+
+	GO_INIT_RET_ERROR_INFO (err);
+
+	klass = PL_GET_CLASS (l);
+	if (klass->service_load && (klass->service_load) (l, s, err))
+		return;
+
+	if (IS_GO_PLUGIN_SERVICE_FILE_OPENER (s)) {
+		load_service_method = klass->load_service_file_opener;
+	} else if (IS_GO_PLUGIN_SERVICE_FILE_SAVER (s)) {
+		load_service_method = klass->load_service_file_saver;
+	} else if (IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER (s)) {
+		load_service_method = klass->load_service_plugin_loader;
+	} else if (IS_GO_PLUGIN_SERVICE_SIMPLE (s)) {
+		load_service_method = NULL;
+	} else {
+		*err = error_info_new_printf (_("Service '%s' not supported by l."),
+			G_OBJECT_TYPE_NAME (s));
+	}
+	if (load_service_method != NULL)
+		load_service_method (l, s, err);
+
+	if (*err == NULL) {
+		gpointer num_services = g_object_get_data (G_OBJECT (l), "num-services");
+		g_object_set_data (G_OBJECT (l), "num-services",
+		    GINT_TO_POINTER (GPOINTER_TO_INT (num_services) + 1));;
+	}
+}
+
+void
+go_plugin_loader_unload_service (GOPluginLoader *l, GOPluginService *s, ErrorInfo **err)
+{
+	GOPluginLoaderClass *klass;
+	void (*unload_service_method) (GOPluginLoader *, GOPluginService *, ErrorInfo **) = NULL;
+	ErrorInfo *error = NULL;
+
+	g_return_if_fail (IS_GO_PLUGIN_LOADER (l));
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE (s));
+
+	GO_INIT_RET_ERROR_INFO (err);
+
+	klass = PL_GET_CLASS (l);
+	if (klass->service_unload && (klass->service_unload) (l, s, err))
+		return;
+
+	if (IS_GO_PLUGIN_SERVICE_FILE_OPENER (s)) {
+		unload_service_method = klass->unload_service_file_opener;
+	} else if (IS_GO_PLUGIN_SERVICE_FILE_SAVER (s)) {
+		unload_service_method = klass->unload_service_file_saver;
+	} else if (IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER (s)) {
+		unload_service_method = klass->unload_service_plugin_loader;
+	} else if (IS_GO_PLUGIN_SERVICE_SIMPLE (s)) {
+		unload_service_method = NULL;
+	} else
+		*err = error_info_new_printf (_("Service '%s' not supported by l."),
+			G_OBJECT_TYPE_NAME (s));
+
+	if (unload_service_method != NULL)
+		unload_service_method (l, s, &error);
+	if (error == NULL) {
+		gpointer num_services = g_object_get_data (G_OBJECT (l), "num-services");
+		g_return_if_fail (num_services != NULL);
+		g_object_set_data (G_OBJECT (l), "num-services",
+		    GINT_TO_POINTER (GPOINTER_TO_INT (num_services) - 1));;
+		if (GPOINTER_TO_INT (num_services) == 1) {
+			go_plugin_loader_unload_base (l, &error);
+			error_info_free (error);
+		}
+	} else
+		*err = error;
+}
+
+GType
+go_plugin_loader_get_type (void)
+{
+	static GType go_plugin_loader_type = 0;
+
+	if (!go_plugin_loader_type) {
+		static GTypeInfo const go_plugin_loader_info = {
+			sizeof (GOPluginLoaderClass),	/* class_size */
+			NULL,				/* base_init */
+			NULL,				/* base_finalize */
+		};
+
+		go_plugin_loader_type = g_type_register_static (G_TYPE_INTERFACE,
+			"GOPluginLoader", &go_plugin_loader_info, 0);
+	}
+
+	return go_plugin_loader_type;
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-loader.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,50 @@
+#ifndef GO_PLUGIN_LOADER_H
+#define GO_PLUGIN_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include <libxml/tree.h>
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/goffice-app.h>
+
+G_BEGIN_DECLS
+
+#define GO_PLUGIN_LOADER_TYPE		(go_plugin_loader_get_type ())
+#define GO_PLUGIN_LOADER(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_LOADER_TYPE, GOPluginLoader))
+#define IS_GO_PLUGIN_LOADER(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_LOADER_TYPE))
+#define GO_PLUGIN_LOADER_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GO_PLUGIN_LOADER_TYPE, GOPluginLoaderClass))
+#define IS_GO_PLUGIN_LOADER_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GO_PLUGIN_LOADER_TYPE))
+
+typedef struct {
+	GTypeInterface base;
+
+	void (*load_base)		(GOPluginLoader *l, ErrorInfo **err);
+	void (*unload_base)		(GOPluginLoader *l, ErrorInfo **err);
+	void (*set_attributes)		(GOPluginLoader *l, GHashTable *attrs, ErrorInfo **err);
+	gboolean (*service_load)	(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+	gboolean (*service_unload)	(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+
+	void (*load_service_file_opener)	(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+	void (*unload_service_file_opener)	(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+
+	void (*load_service_file_saver)		(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+	void (*unload_service_file_saver)	(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+
+	void (*load_service_plugin_loader)	(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+	void (*unload_service_plugin_loader)	(GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+} GOPluginLoaderClass;
+
+GType	   go_plugin_loader_get_type (void);
+void	   go_plugin_loader_set_attributes (GOPluginLoader *l, GHashTable *attrs,
+					    ErrorInfo **err);
+GOPlugin *go_plugin_loader_get_plugin	   (GOPluginLoader *l);
+void	   go_plugin_loader_set_plugin	   (GOPluginLoader *l, GOPlugin *p);
+void	   go_plugin_loader_load_base	   (GOPluginLoader *l, ErrorInfo **err);
+void	   go_plugin_loader_unload_base	   (GOPluginLoader *l, ErrorInfo **err);
+void	   go_plugin_loader_load_service   (GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+void	   go_plugin_loader_unload_service (GOPluginLoader *l, GOPluginService *s, ErrorInfo **err);
+gboolean   go_plugin_loader_is_base_loaded (GOPluginLoader *l);
+
+G_END_DECLS
+
+#endif /* GO_PLUGIN_LOADER_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,82 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-graph-item-impl.h :  Implementation details for the abstract graph-item
+ * 			interface
+ *
+ * Copyright (C) 2001 Zbigniew Chyla (cyba at gnome.pl)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GO_PLUGIN_SERVICE_IMPL_H
+#define GO_PLUGIN_SERVICE_IMPL_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+#include <libxml/tree.h>
+
+G_BEGIN_DECLS
+
+struct _GOPluginService {
+	GObject   g_object;
+
+	char   *id;
+	GOPlugin *plugin;
+	gboolean is_loaded;
+
+	/* protected */
+	gpointer cbs_ptr;
+	gboolean is_active;
+
+	/* private */
+	char *saved_description;
+};
+
+typedef struct{
+	GObjectClass g_object_class;
+
+	void (*read_xml) (GOPluginService *service, xmlNode *tree, ErrorInfo **ret_error);
+	void (*activate) (GOPluginService *service, ErrorInfo **ret_error);
+	void (*deactivate) (GOPluginService *service, ErrorInfo **ret_error);
+	char *(*get_description) (GOPluginService *service);
+} GOPluginServiceClass;
+
+#define GPS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GO_PLUGIN_SERVICE_TYPE, GOPluginServiceClass))
+#define GPS_GET_CLASS(o) GPS_CLASS (G_OBJECT_GET_CLASS (o))
+
+typedef struct{
+	GOPluginServiceClass plugin_service_class;
+	GHashTable *pending; /* has service instances by type names */
+} PluginServiceGObjectLoaderClass;
+
+struct _PluginServiceGObjectLoader {
+	GOPluginService plugin_service;
+};
+
+#define GPS_GOBJECT_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GO_PLUGIN_SERVICE_TYPE, PluginServiceGObjectLoaderClass))
+#define GPS_GOBJECT_LOADER_GET_CLASS(o) GPS_GOBJECT_LOADER_CLASS (G_OBJECT_GET_CLASS (o))
+
+typedef struct{
+	GOPluginServiceClass plugin_service_class;
+} PluginServiceSimpleClass;
+
+struct _PluginServiceSimple {
+	GOPluginService plugin_service;
+};
+
+G_END_DECLS
+
+#endif /* GO_PLUGIN_SERVICE_IMPL_H */
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1182 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-plugin-service.c: Plugin services - reading XML info, activating, etc.
+ *                   (everything independent of plugin loading method)
+ *
+ * Author: Zbigniew Chyla (cyba at gnome.pl)
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-plugin-service.h"
+#include "go-plugin-service-impl.h"
+
+#include <goffice/app/error-info.h>
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/file.h>
+#include <goffice/app/file-priv.h>
+#include <goffice/app/io-context.h>
+#include <goffice/utils/go-glib-extras.h>
+#include <goffice/utils/go-libxml-extras.h>
+
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-output.h>
+#include <libxml/globals.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#include <glib/gi18n.h>
+
+#include <string.h>
+
+static GHashTable *services = NULL;
+
+static FileFormatLevel
+parse_format_level_str (gchar const *format_level_str, FileFormatLevel def)
+{
+	FileFormatLevel	format_level;
+
+	if (format_level_str == NULL) {
+		format_level = def;
+	} else if (g_ascii_strcasecmp (format_level_str, "none") == 0) {
+		format_level = FILE_FL_NONE;
+	} else if (g_ascii_strcasecmp (format_level_str, "write_only") == 0) {
+		format_level = FILE_FL_WRITE_ONLY;
+	} else if (g_ascii_strcasecmp (format_level_str, "new") == 0) {
+		format_level = FILE_FL_NEW;
+	} else if (g_ascii_strcasecmp (format_level_str, "manual") == 0) {
+		format_level = FILE_FL_MANUAL;
+	} else if (g_ascii_strcasecmp (format_level_str, "manual_remember") == 0) {
+		format_level = FILE_FL_MANUAL_REMEMBER;
+	} else if (g_ascii_strcasecmp (format_level_str, "auto") == 0) {
+		format_level = FILE_FL_AUTO;
+	} else {
+		format_level = def;
+	}
+
+	return format_level;
+}
+
+static GHashTable *
+get_plugin_file_savers_hash (GOPlugin *plugin)
+{
+	GHashTable *hash;
+
+	hash = g_object_get_data (G_OBJECT (plugin), "file_savers_hash");
+	if (hash == NULL) {
+		hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+		g_object_set_data_full (
+			G_OBJECT (plugin), "file_savers_hash",
+			hash, (GDestroyNotify) g_hash_table_destroy);
+	}
+
+	return hash;
+}
+
+
+static void
+plugin_service_init (GObject *obj)
+{
+	GOPluginService *service = GO_PLUGIN_SERVICE (obj);
+
+	service->id = NULL;
+	service->is_active = FALSE;
+	service->is_loaded = FALSE;
+	service->plugin = NULL;
+	service->cbs_ptr = NULL;
+	service->saved_description = NULL;
+}
+
+static void
+plugin_service_finalize (GObject *obj)
+{
+	GOPluginService *service = GO_PLUGIN_SERVICE (obj);
+	GObjectClass *parent_class;
+
+	g_free (service->id);
+	service->id = NULL;
+	g_free (service->saved_description);
+	service->saved_description = NULL;
+
+	parent_class = g_type_class_peek (G_TYPE_OBJECT);
+	parent_class->finalize (obj);
+}
+
+static void
+plugin_service_class_init (GObjectClass *gobject_class)
+{
+	GOPluginServiceClass *plugin_service_class = GPS_CLASS (gobject_class);
+
+	gobject_class->finalize = plugin_service_finalize;
+	plugin_service_class->read_xml = NULL;
+	plugin_service_class->activate = NULL;
+	plugin_service_class->deactivate = NULL;
+	plugin_service_class->get_description = NULL;
+}
+
+GSF_CLASS (GOPluginService, plugin_service,
+	   plugin_service_class_init, plugin_service_init,
+           G_TYPE_OBJECT)
+
+
+/****************************************************************************/
+
+/*
+ * PluginServiceGeneral
+ */
+
+typedef struct{
+	GOPluginServiceClass plugin_service_class;
+} PluginServiceGeneralClass;
+
+struct _PluginServiceGeneral {
+	GOPluginService plugin_service;
+	PluginServiceGeneralCallbacks cbs;
+};
+
+
+static void
+plugin_service_general_init (GObject *obj)
+{
+	PluginServiceGeneral *service_general = GO_PLUGIN_SERVICE_GENERAL (obj);
+
+	GO_PLUGIN_SERVICE (obj)->cbs_ptr = &service_general->cbs;
+	service_general->cbs.plugin_func_init = NULL;
+	service_general->cbs.plugin_func_cleanup = NULL;
+}
+
+static void
+plugin_service_general_activate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	PluginServiceGeneral *service_general = GO_PLUGIN_SERVICE_GENERAL (service);
+	ErrorInfo *error = NULL;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	plugin_service_load (service, &error);
+	if (error != NULL) {
+		*ret_error = error_info_new_str_with_details (
+		             _("Error while loading plugin service."),
+		             error);
+		return;
+	}
+	g_return_if_fail (service_general->cbs.plugin_func_init != NULL);
+	service_general->cbs.plugin_func_init (service, &error);
+	if (error != NULL) {
+		*ret_error = error_info_new_str_with_details (
+		             _("Initializing function inside plugin returned error."),
+		             error);
+		return;
+	}
+	service->is_active = TRUE;
+}
+
+static void
+plugin_service_general_deactivate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	PluginServiceGeneral *service_general = GO_PLUGIN_SERVICE_GENERAL (service);
+	ErrorInfo *error = NULL;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	g_return_if_fail (service_general->cbs.plugin_func_cleanup != NULL);
+	service_general->cbs.plugin_func_cleanup (service, &error);
+	if (error != NULL) {
+		*ret_error = error_info_new_str_with_details (
+		             _("Cleanup function inside plugin returned error."),
+		             error);
+		return;
+	}
+	service->is_active = FALSE;
+}
+
+static char *
+plugin_service_general_get_description (GOPluginService *service)
+{
+	return g_strdup (_("General"));
+}
+
+static void
+plugin_service_general_class_init (GObjectClass *gobject_class)
+{
+	GOPluginServiceClass *plugin_service_class = GPS_CLASS (gobject_class);
+
+	plugin_service_class->activate = plugin_service_general_activate;
+	plugin_service_class->deactivate = plugin_service_general_deactivate;
+	plugin_service_class->get_description = plugin_service_general_get_description;
+}
+
+GSF_CLASS (PluginServiceGeneral, plugin_service_general,
+           plugin_service_general_class_init, plugin_service_general_init,
+           GO_PLUGIN_SERVICE_TYPE)
+
+/****************************************************************************/
+
+/*
+ * PluginServiceFileOpener
+ */
+
+typedef struct _GOPluginFileOpener GOPluginFileOpener;
+static GOPluginFileOpener *go_plugin_file_opener_new (GOPluginService *service);
+
+struct _InputFileSaveInfo {
+	gchar *saver_id_str;
+	FileFormatLevel format_level;
+};
+
+typedef struct _InputFileSaveInfo InputFileSaveInfo;
+
+
+typedef struct{
+	GOPluginServiceClass plugin_service_class;
+} PluginServiceFileOpenerClass;
+
+struct _PluginServiceFileOpener {
+	GOPluginService plugin_service;
+
+	gint priority;
+	gboolean has_probe;
+	gchar *description;
+	GSList *suffixes;	/* list of char * */
+	GSList *mimes;		/* list of char * */
+
+	GOFileOpener *opener;
+	PluginServiceFileOpenerCallbacks cbs;
+};
+
+
+static void
+plugin_service_file_opener_init (GObject *obj)
+{
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (obj);
+
+	GO_PLUGIN_SERVICE (obj)->cbs_ptr = &service_file_opener->cbs;
+	service_file_opener->description = NULL;
+	service_file_opener->suffixes = NULL;
+	service_file_opener->mimes = NULL;
+	service_file_opener->opener = NULL;
+	service_file_opener->cbs.plugin_func_file_probe = NULL;
+	service_file_opener->cbs.plugin_func_file_open = NULL;
+}
+
+static void
+plugin_service_file_opener_finalize (GObject *obj)
+{
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (obj);
+	GObjectClass *parent_class;
+
+	g_free (service_file_opener->description);
+	service_file_opener->description = NULL;
+	go_slist_free_custom (service_file_opener->suffixes, g_free);
+	service_file_opener->suffixes = NULL;
+	go_slist_free_custom (service_file_opener->mimes, g_free);
+	service_file_opener->mimes = NULL;
+	if (service_file_opener->opener != NULL) {
+		g_object_unref (service_file_opener->opener);
+		service_file_opener->opener = NULL;
+	}
+
+	parent_class = g_type_class_peek (GO_PLUGIN_SERVICE_TYPE);
+	parent_class->finalize (obj);
+}
+
+static void
+plugin_service_file_opener_read_xml (GOPluginService *service, xmlNode *tree, ErrorInfo **ret_error)
+{
+	int priority;
+	gboolean has_probe;
+	xmlNode *information_node;
+	gchar *description;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (xml_node_get_int (tree, "priority", &priority))
+		priority = CLAMP (priority, 0, 100);
+	else
+		priority = 50;
+
+	if (!xml_node_get_bool (tree, "probe", &has_probe))
+		has_probe = TRUE;
+
+	information_node = e_xml_get_child_by_name (tree, (xmlChar *)"information");
+	if (information_node != NULL) {
+		xmlNode *node;
+		xmlChar *val;
+
+		node = e_xml_get_child_by_name_by_lang (
+		       information_node, "description");
+		if (node != NULL) {
+			val = xmlNodeGetContent (node);
+			description = g_strdup ((gchar *)val);
+			xmlFree (val);
+		} else {
+			description = NULL;
+		}
+	} else {
+		description = NULL;
+	}
+	if (description != NULL) {
+		GSList *suffixes = NULL, *mimes = NULL;
+		char *tmp;
+		xmlNode *list, *node;
+		PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (service);
+
+		list = e_xml_get_child_by_name (tree, (xmlChar *)"suffixes");
+		if (list != NULL) {
+			for (node = list->xmlChildrenNode; node != NULL; node = node->next)
+				if (strcmp (node->name, "suffix") == 0 &&
+				    (tmp = xmlNodeGetContent (node)) != NULL)
+					GO_SLIST_PREPEND (suffixes, tmp);
+		}
+		GO_SLIST_REVERSE (suffixes);
+
+		list = e_xml_get_child_by_name (tree, (xmlChar *)"mime-types");
+		if (list != NULL) {
+			for (node = list->xmlChildrenNode; node != NULL; node = node->next)
+				if (strcmp (node->name, "mime-type") == 0 &&
+				    (tmp = xmlNodeGetContent (node)) != NULL)
+					GO_SLIST_PREPEND (mimes, tmp);
+		}
+		GO_SLIST_REVERSE (mimes);
+
+		service_file_opener->priority = priority;
+		service_file_opener->has_probe = has_probe;
+		service_file_opener->description = description;
+		service_file_opener->suffixes	= suffixes;
+		service_file_opener->mimes	= mimes;
+	} else {
+		*ret_error = error_info_new_str (_("File opener has no description"));
+	}
+}
+
+static void
+plugin_service_file_opener_activate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (service);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	service_file_opener->opener = GO_FILE_OPENER (go_plugin_file_opener_new (service));
+	go_file_opener_register (service_file_opener->opener,
+				  service_file_opener->priority);
+	service->is_active = TRUE;
+}
+
+static void
+plugin_service_file_opener_deactivate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (service);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	go_file_opener_unregister (service_file_opener->opener);
+	service->is_active = FALSE;
+}
+
+static char *
+plugin_service_file_opener_get_description (GOPluginService *service)
+{
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (service);
+
+	return g_strdup_printf (
+		_("File opener - %s"), service_file_opener->description);
+}
+
+static void
+plugin_service_file_opener_class_init (GObjectClass *gobject_class)
+{
+	GOPluginServiceClass *plugin_service_class = GPS_CLASS (gobject_class);
+
+	gobject_class->finalize = plugin_service_file_opener_finalize;
+	plugin_service_class->read_xml = plugin_service_file_opener_read_xml;
+	plugin_service_class->activate = plugin_service_file_opener_activate;
+	plugin_service_class->deactivate = plugin_service_file_opener_deactivate;
+	plugin_service_class->get_description = plugin_service_file_opener_get_description;
+}
+
+GSF_CLASS (PluginServiceFileOpener, plugin_service_file_opener,
+           plugin_service_file_opener_class_init, plugin_service_file_opener_init,
+           GO_PLUGIN_SERVICE_TYPE)
+
+
+/** GOPluginFileOpener class **/
+
+#define TYPE_GO_PLUGIN_FILE_OPENER             (go_plugin_file_opener_get_type ())
+#define GO_PLUGIN_FILE_OPENER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GO_PLUGIN_FILE_OPENER, GOPluginFileOpener))
+#define GO_PLUGIN_FILE_OPENER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GO_PLUGIN_FILE_OPENER, GOPluginFileOpenerClass))
+#define IS_GO_PLUGIN_FILE_OPENER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GO_PLUGIN_FILE_OPENER))
+
+GType go_plugin_file_opener_get_type (void);
+
+typedef struct {
+	GOFileOpenerClass parent_class;
+} GOPluginFileOpenerClass;
+
+struct _GOPluginFileOpener {
+	GOFileOpener parent;
+
+	GOPluginService *service;
+};
+
+static void
+go_plugin_file_opener_init (GOPluginFileOpener *fo)
+{
+	fo->service = NULL;
+}
+
+static gboolean
+go_plugin_file_opener_can_probe (GOFileOpener const *fo, FileProbeLevel pl)
+{
+	GOPluginFileOpener *pfo = GO_PLUGIN_FILE_OPENER (fo);
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (pfo->service);
+	if (pl == FILE_PROBE_FILE_NAME)
+		return service_file_opener->suffixes != NULL;
+	return service_file_opener->has_probe;
+}
+
+static gboolean
+go_plugin_file_opener_probe (GOFileOpener const *fo, GsfInput *input,
+                               FileProbeLevel pl)
+{
+	GOPluginFileOpener *pfo = GO_PLUGIN_FILE_OPENER (fo);
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (pfo->service);
+
+	g_return_val_if_fail (GSF_IS_INPUT (input), FALSE);
+
+	if (pl == FILE_PROBE_FILE_NAME && service_file_opener->suffixes != NULL) {
+		GSList *ptr;
+		gchar const *extension;
+		gchar *lowercase_extension;
+
+		if (gsf_input_name (input) == NULL)
+			return FALSE;
+		extension = gsf_extension_pointer (gsf_input_name (input));
+		if (extension == NULL)
+			return FALSE;
+
+		lowercase_extension = g_utf8_strdown (extension, -1);
+		for (ptr = service_file_opener->suffixes; ptr != NULL ; ptr = ptr->next)
+			if (0 == strcmp (lowercase_extension, ptr->data))
+				break;
+		g_free (lowercase_extension);
+		return ptr != NULL;
+	}
+
+	if (service_file_opener->has_probe) {
+		ErrorInfo *ignored_error = NULL;
+
+		plugin_service_load (pfo->service, &ignored_error);
+		if (ignored_error != NULL) {
+			error_info_print (ignored_error);
+			error_info_free (ignored_error);
+			return FALSE;
+		} else if (service_file_opener->cbs.plugin_func_file_probe == NULL) {
+			return FALSE;
+		} else {
+			gboolean res = service_file_opener->cbs.plugin_func_file_probe (fo, pfo->service, input, pl);
+			gsf_input_seek (input, 0, G_SEEK_SET);
+			return res;
+		}
+	} else {
+		return FALSE;
+	}
+}
+
+static void
+go_plugin_file_opener_open (GOFileOpener const *fo, gchar const *unused_enc,
+			     IOContext *io_context,
+			     gpointer FIXME_FIXME_workbook_view,
+			     GsfInput *input)
+
+{
+	GOPluginFileOpener *pfo = GO_PLUGIN_FILE_OPENER (fo);
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (pfo->service);
+	ErrorInfo *error = NULL;
+
+	g_return_if_fail (GSF_IS_INPUT (input));
+
+	plugin_service_load (pfo->service, &error);
+	if (error != NULL) {
+		gnumeric_io_error_info_set (io_context, error);
+		gnumeric_io_error_push (io_context, error_info_new_str (
+		                        _("Error while reading file.")));
+		return;
+	}
+
+	g_return_if_fail (service_file_opener->cbs.plugin_func_file_open != NULL);
+	service_file_opener->cbs.plugin_func_file_open (fo, pfo->service, io_context, FIXME_FIXME_workbook_view, input);
+}
+
+static void
+go_plugin_file_opener_class_init (GOPluginFileOpenerClass *klass)
+{
+	GOFileOpenerClass *go_file_opener_klass = GO_FILE_OPENER_CLASS (klass);
+
+	go_file_opener_klass->can_probe = go_plugin_file_opener_can_probe;
+	go_file_opener_klass->probe = go_plugin_file_opener_probe;
+	go_file_opener_klass->open = go_plugin_file_opener_open;
+}
+
+GSF_CLASS (GOPluginFileOpener, go_plugin_file_opener,
+	   go_plugin_file_opener_class_init, go_plugin_file_opener_init,
+	   TYPE_GO_FILE_OPENER)
+
+static GSList *
+go_str_slist_dup (GSList *l)
+{
+	GSList *res = NULL;
+	for ( ; l != NULL ; l = l->next)
+		res = g_slist_prepend (res, g_strdup (l->data));
+	return g_slist_reverse (res);
+}
+
+static GOPluginFileOpener *
+go_plugin_file_opener_new (GOPluginService *service)
+{
+	PluginServiceFileOpener *service_file_opener = GO_PLUGIN_SERVICE_FILE_OPENER (service);
+	GOPluginFileOpener *fo;
+	gchar *opener_id;
+
+	opener_id = g_strconcat (
+		go_plugin_get_id (service->plugin), ":", service->id, NULL);
+	fo = GO_PLUGIN_FILE_OPENER (g_object_new (TYPE_GO_PLUGIN_FILE_OPENER, NULL));
+	go_file_opener_setup (GO_FILE_OPENER (fo), opener_id,
+		service_file_opener->description,
+		go_str_slist_dup (service_file_opener->suffixes),
+		go_str_slist_dup (service_file_opener->mimes),
+		FALSE, NULL, NULL);
+	fo->service = service;
+	g_free (opener_id);
+
+	return fo;
+}
+
+/** -- **/
+
+
+/*
+ * PluginServiceFileSaver
+ */
+
+typedef struct _GOPluginFileSaver GOPluginFileSaver;
+static GOPluginFileSaver *go_plugin_file_saver_new (GOPluginService *service);
+
+
+typedef struct{
+	GOPluginServiceClass plugin_service_class;
+} PluginServiceFileSaverClass;
+
+struct _PluginServiceFileSaver {
+	GOPluginService plugin_service;
+
+	gchar *file_extension;
+	FileFormatLevel format_level;
+	gchar *description;
+	gint   default_saver_priority;
+	FileSaveScope save_scope;
+	gboolean overwrite_files;
+
+	GOFileSaver *saver;
+	PluginServiceFileSaverCallbacks cbs;
+};
+
+
+static void
+plugin_service_file_saver_init (GObject *obj)
+{
+	PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (obj);
+
+	GO_PLUGIN_SERVICE (obj)->cbs_ptr = &service_file_saver->cbs;
+	service_file_saver->file_extension = NULL;
+	service_file_saver->description = NULL;
+	service_file_saver->cbs.plugin_func_file_save = NULL;
+	service_file_saver->saver = NULL;
+}
+
+static void
+plugin_service_file_saver_finalize (GObject *obj)
+{
+	PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (obj);
+	GObjectClass *parent_class;
+
+	g_free (service_file_saver->file_extension);
+	service_file_saver->file_extension = NULL;
+	g_free (service_file_saver->description);
+	service_file_saver->description = NULL;
+	if (service_file_saver->saver != NULL) {
+		g_object_unref (service_file_saver->saver);
+		service_file_saver->saver = NULL;
+	}
+
+	parent_class = g_type_class_peek (GO_PLUGIN_SERVICE_TYPE);
+	parent_class->finalize (obj);
+}
+
+static void
+plugin_service_file_saver_read_xml (GOPluginService *service, xmlNode *tree, ErrorInfo **ret_error)
+{
+	gchar *file_extension;
+	xmlNode *information_node;
+	gchar *description;
+	gchar *format_level_str, *save_scope_str;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	file_extension = xml_node_get_cstr (tree, "file_extension");
+	format_level_str = xml_node_get_cstr (tree, "format_level");
+	save_scope_str = xml_node_get_cstr (tree, "save_scope");
+	information_node = e_xml_get_child_by_name (tree, (xmlChar *)"information");
+	if (information_node != NULL) {
+		xmlNode *node;
+		xmlChar *val;
+
+		node = e_xml_get_child_by_name_by_lang (
+		       information_node, "description");
+		if (node != NULL) {
+			val = xmlNodeGetContent (node);
+			description = g_strdup ((gchar *)val);
+			xmlFree (val);
+		} else {
+			description = NULL;
+		}
+	} else {
+		description = NULL;
+	}
+	if (description != NULL) {
+		PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (service);
+
+		service_file_saver->file_extension = file_extension;
+		service_file_saver->description = description;
+		service_file_saver->format_level = parse_format_level_str (format_level_str,
+		                                                           FILE_FL_WRITE_ONLY);
+		if (!xml_node_get_int (tree, "default_saver_priority", &(service_file_saver->default_saver_priority)))
+			service_file_saver->default_saver_priority = -1;
+
+		service_file_saver->save_scope = FILE_SAVE_WORKBOOK;
+		if (save_scope_str) {
+			if (g_ascii_strcasecmp (save_scope_str, "sheet") == 0)
+				service_file_saver->save_scope 
+					= FILE_SAVE_SHEET;
+			else if (g_ascii_strcasecmp (save_scope_str, 
+						     "range") == 0) {
+				service_file_saver->save_scope 
+					= FILE_SAVE_RANGE;
+			}
+		}
+		if (!xml_node_get_bool (tree, "overwrite_files", &(service_file_saver->overwrite_files)))
+			service_file_saver->overwrite_files = TRUE;
+	} else {
+		*ret_error = error_info_new_str (_("File saver has no description"));
+		g_free (file_extension);
+	}
+	g_free (format_level_str);
+	g_free (save_scope_str);
+}
+
+static void
+plugin_service_file_saver_activate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (service);
+	GHashTable *file_savers_hash;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	service_file_saver->saver = GO_FILE_SAVER (go_plugin_file_saver_new (service));
+	if (service_file_saver->default_saver_priority < 0) {
+		go_file_saver_register (service_file_saver->saver);
+	} else {
+		go_file_saver_register_as_default (service_file_saver->saver,
+						    service_file_saver->default_saver_priority);
+	}
+	file_savers_hash = get_plugin_file_savers_hash (service->plugin);
+	g_assert (g_hash_table_lookup (file_savers_hash, service->id) == NULL);
+	g_hash_table_insert (file_savers_hash, g_strdup (service->id), service_file_saver->saver);
+	service->is_active = TRUE;
+}
+
+static void
+plugin_service_file_saver_deactivate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (service);
+	GHashTable *file_savers_hash;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	file_savers_hash = get_plugin_file_savers_hash (service->plugin);
+	g_hash_table_remove (file_savers_hash, service->id);
+	go_file_saver_unregister (service_file_saver->saver);
+	service->is_active = FALSE;
+}
+
+static char *
+plugin_service_file_saver_get_description (GOPluginService *service)
+{
+	PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (service);
+
+	return g_strdup_printf (
+		_("File saver - %s"), service_file_saver->description);
+}
+
+static void
+plugin_service_file_saver_class_init (GObjectClass *gobject_class)
+{
+	GOPluginServiceClass *plugin_service_class = GPS_CLASS (gobject_class);
+
+	gobject_class->finalize = plugin_service_file_saver_finalize;
+	plugin_service_class->read_xml = plugin_service_file_saver_read_xml;
+	plugin_service_class->activate = plugin_service_file_saver_activate;
+	plugin_service_class->deactivate = plugin_service_file_saver_deactivate;
+	plugin_service_class->get_description = plugin_service_file_saver_get_description;
+}
+
+GSF_CLASS (PluginServiceFileSaver, plugin_service_file_saver,
+           plugin_service_file_saver_class_init, plugin_service_file_saver_init,
+           GO_PLUGIN_SERVICE_TYPE)
+
+
+/** GOPluginFileSaver class **/
+
+#define TYPE_GO_PLUGIN_FILE_SAVER             (go_plugin_file_saver_get_type ())
+#define GO_PLUGIN_FILE_SAVER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GO_PLUGIN_FILE_SAVER, GOPluginFileSaver))
+#define GO_PLUGIN_FILE_SAVER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GO_PLUGIN_FILE_SAVER, GOPluginFileSaverClass))
+#define IS_GO_PLUGIN_FILE_SAVER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GO_PLUGIN_FILE_SAVER))
+
+GType go_plugin_file_saver_get_type (void);
+
+typedef struct {
+	GOFileSaverClass parent_class;
+} GOPluginFileSaverClass;
+
+struct _GOPluginFileSaver {
+	GOFileSaver parent;
+
+	GOPluginService *service;
+};
+
+static void
+go_plugin_file_saver_init (GOPluginFileSaver *fs)
+{
+	fs->service = NULL;
+}
+
+static void
+go_plugin_file_saver_save (GOFileSaver const *fs, IOContext *io_context,
+			    gconstpointer FIXME_FIXME_workbook_view,
+			    GsfOutput *output)
+{
+	GOPluginFileSaver *pfs = GO_PLUGIN_FILE_SAVER (fs);
+	PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (pfs->service);
+	ErrorInfo *error = NULL;
+
+	g_return_if_fail (GSF_IS_OUTPUT (output));
+
+	plugin_service_load (pfs->service, &error);
+	if (error != NULL) {
+		gnumeric_io_error_info_set (io_context, error);
+		gnumeric_io_error_push (io_context, error_info_new_str (
+		                        _("Error while loading plugin for saving.")));
+		if (!gsf_output_error (output))
+			gsf_output_set_error (output, 0, _("Failed to load plugin for saving"));
+		return;
+	}
+
+	g_return_if_fail (service_file_saver->cbs.plugin_func_file_save != NULL);
+	service_file_saver->cbs.plugin_func_file_save (fs, pfs->service, io_context, FIXME_FIXME_workbook_view, output);
+}
+
+static void
+go_plugin_file_saver_class_init (GOPluginFileSaverClass *klass)
+{
+	GOFileSaverClass *go_file_saver_klass = GO_FILE_SAVER_CLASS (klass);
+
+	go_file_saver_klass->save = go_plugin_file_saver_save;
+}
+
+GSF_CLASS (GOPluginFileSaver, go_plugin_file_saver,
+	   go_plugin_file_saver_class_init, go_plugin_file_saver_init,
+	   TYPE_GO_FILE_SAVER)
+
+static GOPluginFileSaver *
+go_plugin_file_saver_new (GOPluginService *service)
+{
+	GOPluginFileSaver *fs;
+	PluginServiceFileSaver *service_file_saver = GO_PLUGIN_SERVICE_FILE_SAVER (service);
+	gchar *saver_id;
+
+	saver_id = g_strconcat (
+		go_plugin_get_id (service->plugin), ":", service->id, NULL);
+	fs = GO_PLUGIN_FILE_SAVER (g_object_new (TYPE_GO_PLUGIN_FILE_SAVER, NULL));
+	go_file_saver_setup (GO_FILE_SAVER (fs), saver_id,
+	                       service_file_saver->file_extension,
+	                       service_file_saver->description,
+	                       service_file_saver->format_level,
+	                       NULL);
+	go_file_saver_set_save_scope (GO_FILE_SAVER (fs),
+	                                service_file_saver->save_scope);
+	go_file_saver_set_overwrite_files (GO_FILE_SAVER (fs),
+	                                     service_file_saver->overwrite_files);
+	fs->service = service;
+	g_free (saver_id);
+
+	return fs;
+}
+
+/*
+ * PluginServicePluginLoader
+ */
+
+typedef struct{
+	GOPluginServiceClass plugin_service_class;
+} PluginServicePluginLoaderClass;
+
+struct _PluginServicePluginLoader {
+	GOPluginService plugin_service;
+	PluginServicePluginLoaderCallbacks cbs;
+};
+
+
+static void
+plugin_service_plugin_loader_init (GObject *obj)
+{
+	PluginServicePluginLoader *service_plugin_loader = GO_PLUGIN_SERVICE_PLUGIN_LOADER (obj);
+
+	GO_PLUGIN_SERVICE (obj)->cbs_ptr = &service_plugin_loader->cbs;
+}
+
+GType
+plugin_service_plugin_loader_generate_type (GOPluginService *service, ErrorInfo **ret_error)
+{
+	PluginServicePluginLoader *service_plugin_loader = GO_PLUGIN_SERVICE_PLUGIN_LOADER (service);
+	ErrorInfo *error = NULL;
+	GType loader_type;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	plugin_service_load (service, &error);
+	if (error == NULL) {
+		loader_type = service_plugin_loader->cbs.plugin_func_get_loader_type (
+			service, &error);
+		if (error == NULL)
+			return loader_type;
+		*ret_error = error;
+	} else {
+		*ret_error = error_info_new_str_with_details (
+		             _("Error while loading plugin service."),
+		             error);
+	}
+	return G_TYPE_NONE;
+}
+
+static void
+plugin_service_plugin_loader_activate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	gchar *full_id;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	full_id = g_strconcat (
+		go_plugin_get_id (service->plugin), ":", service->id, NULL);
+	go_plugins_register_loader (full_id, service);
+	g_free (full_id);
+	service->is_active = TRUE;
+}
+
+static void
+plugin_service_plugin_loader_deactivate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	gchar *full_id;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	full_id = g_strconcat (
+		go_plugin_get_id (service->plugin), ":", service->id, NULL);
+	go_plugins_unregister_loader (full_id);
+	g_free (full_id);
+	service->is_active = FALSE;
+}
+
+static char *
+plugin_service_plugin_loader_get_description (GOPluginService *service)
+{
+	return g_strdup (_("Plugin loader"));
+}
+
+static void
+plugin_service_plugin_loader_class_init (GObjectClass *gobject_class)
+{
+	GOPluginServiceClass *plugin_service_class = GPS_CLASS (gobject_class);
+
+	plugin_service_class->activate = plugin_service_plugin_loader_activate;
+	plugin_service_class->deactivate = plugin_service_plugin_loader_deactivate;
+	plugin_service_class->get_description = plugin_service_plugin_loader_get_description;
+}
+
+GSF_CLASS (PluginServicePluginLoader, plugin_service_plugin_loader,
+           plugin_service_plugin_loader_class_init, plugin_service_plugin_loader_init,
+           GO_PLUGIN_SERVICE_TYPE)
+
+/**************************************************************************
+ * PluginServiceGObjectLoader
+ */
+
+static char *
+plugin_service_gobject_loader_get_description (GOPluginService *service)
+{
+	return g_strdup (_("GObject loader"));
+}
+
+static void
+plugin_service_gobject_loader_read_xml (GOPluginService *service,
+					G_GNUC_UNUSED xmlNode *tree,
+					G_GNUC_UNUSED ErrorInfo **ret_error)
+{
+	PluginServiceGObjectLoaderClass *gobj_loader_class = GPS_GOBJECT_LOADER_GET_CLASS (service);
+	g_return_if_fail (gobj_loader_class->pending != NULL);
+	g_hash_table_replace (gobj_loader_class->pending, service->id, service);
+}
+
+static void
+plugin_service_gobject_loader_class_init (PluginServiceGObjectLoaderClass *gobj_loader_class)
+{
+	GOPluginServiceClass *psc = GPS_CLASS (gobj_loader_class);
+
+	psc->get_description	= plugin_service_gobject_loader_get_description;
+	psc->read_xml		= plugin_service_gobject_loader_read_xml;
+	gobj_loader_class->pending = NULL;
+}
+
+GSF_CLASS (PluginServiceGObjectLoader, plugin_service_gobject_loader,
+           plugin_service_gobject_loader_class_init, NULL,
+           GO_PLUGIN_SERVICE_SIMPLE_TYPE)
+
+/**************************************************************************
+ * PluginServiceSimple
+ */
+
+static void
+plugin_service_simple_activate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	service->is_active = TRUE;
+}
+
+static void
+plugin_service_simple_deactivate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	service->is_active = FALSE;
+}
+
+static void
+plugin_service_simple_class_init (GObjectClass *gobject_class)
+{
+	GOPluginServiceClass *psc = GPS_CLASS (gobject_class);
+
+	psc->activate		= plugin_service_simple_activate;
+	psc->deactivate		= plugin_service_simple_deactivate;
+}
+
+GSF_CLASS (PluginServiceSimple, plugin_service_simple,
+           plugin_service_simple_class_init,
+	   NULL,
+           GO_PLUGIN_SERVICE_TYPE)
+
+/* ---------------------------------------------------------------------- */
+
+void
+plugin_service_load (GOPluginService *service, ErrorInfo **ret_error)
+{
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE (service));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+
+	if (service->is_loaded)
+		return;
+	go_plugin_load_service (service->plugin, service, ret_error);
+	if (*ret_error == NULL)
+		service->is_loaded = TRUE;
+}
+
+void
+plugin_service_unload (GOPluginService *service, ErrorInfo **ret_error)
+{
+	ErrorInfo *error = NULL;
+
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE (service));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (!service->is_loaded) {
+		return;
+	}
+	go_plugin_unload_service (service->plugin, service, &error);
+	if (error == NULL) {
+		service->is_loaded = FALSE;
+	} else {
+		*ret_error = error;
+	}
+}
+
+GOPluginService *
+plugin_service_new (GOPlugin *plugin, xmlNode *tree, ErrorInfo **ret_error)
+{
+	GOPluginService *service = NULL;
+	char *type_str;
+	ErrorInfo *service_error = NULL;
+	GOPluginServiceCreate ctor;
+
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+	g_return_val_if_fail (tree != NULL, NULL);
+	g_return_val_if_fail (strcmp (tree->name, "service") == 0, NULL);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	type_str = xml_node_get_cstr (tree, "type");
+	if (type_str == NULL) {
+		*ret_error = error_info_new_str (_("No \"type\" attribute on \"service\" element."));
+		return NULL;
+	}
+
+	ctor = g_hash_table_lookup (services, type_str);
+	if (ctor == NULL) {
+		*ret_error = error_info_new_printf (_("Unknown service type: %s."), type_str);
+		g_free (type_str);
+		return NULL;
+	}
+	g_free (type_str);
+
+	service = g_object_new (ctor(), NULL);
+	service->plugin = plugin;
+	service->id = xml_node_get_cstr (tree, "id");
+	if (service->id == NULL)
+		service->id = g_strdup ("default");
+
+	if (GPS_GET_CLASS (service)->read_xml != NULL) {
+		GPS_GET_CLASS (service)->read_xml (service, tree, &service_error);
+		if (service_error != NULL) {
+			*ret_error = error_info_new_str_with_details (
+				_("Error reading service information."), service_error);
+			g_object_unref (service);
+			service = NULL;
+		}
+	}
+
+	return service;
+}
+
+char const *
+plugin_service_get_id (GOPluginService *service)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN_SERVICE (service), NULL);
+
+	return service->id;
+}
+
+char const *
+plugin_service_get_description (GOPluginService *service)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN_SERVICE (service), NULL);
+
+	if (service->saved_description == NULL) {
+		service->saved_description = GPS_GET_CLASS (service)->get_description (service);
+	}
+
+	return service->saved_description;
+}
+
+GOPlugin *
+plugin_service_get_plugin (GOPluginService *service)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN_SERVICE (service), NULL);
+
+	return service->plugin;
+}
+
+gpointer
+plugin_service_get_cbs (GOPluginService *service)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN_SERVICE (service), NULL);
+	g_return_val_if_fail (service->cbs_ptr != NULL, NULL);
+
+	return service->cbs_ptr;
+}
+
+void
+plugin_service_activate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE (service));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (service->is_active) {
+		return;
+	}
+#ifdef PLUGIN_ALWAYS_LOAD
+	{
+		ErrorInfo *load_error = NULL;
+
+		plugin_service_load (service, &load_error);
+		if (load_error != NULL) {
+			*ret_error = error_info_new_str_with_details (
+				_("We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) "
+				  "but loading failed."), load_error);
+			return;
+		}
+	}
+#endif
+	GPS_GET_CLASS (service)->activate (service, ret_error);
+}
+
+void
+plugin_service_deactivate (GOPluginService *service, ErrorInfo **ret_error)
+{
+	g_return_if_fail (IS_GO_PLUGIN_SERVICE (service));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (!service->is_active) {
+		return;
+	}
+	GPS_GET_CLASS (service)->deactivate (service, ret_error);
+	if (*ret_error == NULL) {
+		ErrorInfo *ignored_error = NULL;
+
+		service->is_active = FALSE;
+		/* FIXME */
+		plugin_service_unload (service, &ignored_error);
+		error_info_free (ignored_error);
+	}
+}
+
+/*****************************************************************************/
+
+void
+plugin_services_init (void)
+{
+	static struct {
+		char const *type_str;
+		GOPluginServiceCreate ctor;
+	} const builtin_services[] = {
+		{ "general",		plugin_service_general_get_type},
+		{ "file_opener",	plugin_service_file_opener_get_type},
+		{ "file_saver",		plugin_service_file_saver_get_type},
+		{ "plugin_loader",	plugin_service_plugin_loader_get_type},
+/* base classes, not really for direct external use,
+ * put here for expositional purposes
+ */
+#if 0
+		{ "gobject_loader",	plugin_service_gobject_loader_get_type}
+		{ "simple",		plugin_service_simple_get_type}
+#endif
+	};
+	unsigned i;
+
+	g_return_if_fail (services == NULL);
+
+	services = g_hash_table_new (g_str_hash, g_str_equal);
+	for (i = 0; i < G_N_ELEMENTS (builtin_services); i++)
+		plugin_service_define (builtin_services[i].type_str,
+				       builtin_services[i].ctor);
+}
+
+void
+plugin_services_shutdown (void)
+{
+	g_return_if_fail (services != NULL);
+	g_hash_table_destroy (services);
+	services = NULL;
+}
+
+/**
+ * Allow the definition of new service types
+ **/
+void
+plugin_service_define (char const *type_str, GOPluginServiceCreate ctor)
+{
+	g_return_if_fail (services != NULL);
+
+	g_return_if_fail (NULL == g_hash_table_lookup (services, type_str));
+
+	g_hash_table_insert (services, (gpointer)type_str, ctor);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin-service.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,112 @@
+#ifndef PLUGIN_SERVICE_H
+#define PLUGIN_SERVICE_H
+
+#include <goffice/app/goffice-app.h>
+#include <goffice/app/go-plugin.h>
+#include <glib.h>
+#include <gmodule.h>
+#include <libxml/tree.h>
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+#define GO_PLUGIN_SERVICE_TYPE         (plugin_service_get_type ())
+#define GO_PLUGIN_SERVICE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_TYPE, GOPluginService))
+#define IS_GO_PLUGIN_SERVICE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_TYPE))
+
+GType plugin_service_get_type (void);
+
+#define GO_PLUGIN_SERVICE_GENERAL_TYPE  (plugin_service_general_get_type ())
+#define GO_PLUGIN_SERVICE_GENERAL(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_GENERAL_TYPE, PluginServiceGeneral))
+#define IS_GO_PLUGIN_SERVICE_GENERAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_GENERAL_TYPE))
+
+GType plugin_service_general_get_type (void);
+typedef struct _PluginServiceGeneral PluginServiceGeneral;
+typedef struct {
+	void (*plugin_func_init) (GOPluginService *service, ErrorInfo **ret_error);
+	void (*plugin_func_cleanup) (GOPluginService *service, ErrorInfo **ret_error);
+} PluginServiceGeneralCallbacks;
+
+#define GO_PLUGIN_SERVICE_FILE_OPENER_TYPE  (plugin_service_file_opener_get_type ())
+#define GO_PLUGIN_SERVICE_FILE_OPENER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_FILE_OPENER_TYPE, PluginServiceFileOpener))
+#define IS_GO_PLUGIN_SERVICE_FILE_OPENER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_FILE_OPENER_TYPE))
+
+GType plugin_service_file_opener_get_type (void);
+typedef struct _PluginServiceFileOpener PluginServiceFileOpener;
+typedef struct {
+	/* plugin_func_file_probe may be NULL */
+	gboolean (*plugin_func_file_probe) (
+	         GOFileOpener const *fo, GOPluginService *service,
+	         GsfInput *input, FileProbeLevel pl);
+	void     (*plugin_func_file_open) (
+	         GOFileOpener const *fo, GOPluginService *service,
+	         IOContext *io_context, gpointer fixme_workbook_view,
+		 GsfInput *input);
+} PluginServiceFileOpenerCallbacks;
+
+
+#define GO_PLUGIN_SERVICE_FILE_SAVER_TYPE  (plugin_service_file_saver_get_type ())
+#define GO_PLUGIN_SERVICE_FILE_SAVER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_FILE_SAVER_TYPE, PluginServiceFileSaver))
+#define IS_GO_PLUGIN_SERVICE_FILE_SAVER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_FILE_SAVER_TYPE))
+
+GType plugin_service_file_saver_get_type (void);
+typedef struct _PluginServiceFileSaver PluginServiceFileSaver;
+typedef struct {
+	void  (*plugin_func_file_save) (
+	      GOFileSaver const *fs, GOPluginService *service,
+	      IOContext *io_context, gconstpointer fixme_workbook_view,
+	      GsfOutput *output);
+} PluginServiceFileSaverCallbacks;
+
+#define GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE  (plugin_service_plugin_loader_get_type ())
+#define GO_PLUGIN_SERVICE_PLUGIN_LOADER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE, PluginServicePluginLoader))
+#define IS_GO_PLUGIN_SERVICE_PLUGIN_LOADER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_PLUGIN_LOADER_TYPE))
+
+GType plugin_service_plugin_loader_get_type (void);
+typedef struct _PluginServicePluginLoader PluginServicePluginLoader;
+typedef struct {
+	GType (*plugin_func_get_loader_type) (
+	      GOPluginService *service, ErrorInfo **ret_error);
+} PluginServicePluginLoaderCallbacks;
+
+GType plugin_service_plugin_loader_generate_type (GOPluginService *service,
+                                                  ErrorInfo **ret_error);
+
+/****************************************************************************/
+
+#define GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE  (plugin_service_gobject_loader_get_type ())
+#define GO_PLUGIN_SERVICE_GOBJECT_LOADER(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE, PluginServiceGObjectLoader))
+#define IS_GO_PLUGIN_SERVICE_GOBJECT_LOADER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE))
+
+GType plugin_service_gobject_loader_get_type (void);
+typedef struct _PluginServiceGObjectLoader PluginServiceGObjectLoader;
+
+/****************************************************************************/
+#define GO_PLUGIN_SERVICE_SIMPLE_TYPE  (plugin_service_simple_get_type ())
+#define GO_PLUGIN_SERVICE_SIMPLE(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_SERVICE_SIMPLE_TYPE, PluginServiceSimple))
+#define IS_GO_PLUGIN_SERVICE_SIMPLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_SERVICE_SIMPLE_TYPE))
+
+GType plugin_service_simple_get_type (void);
+typedef struct _PluginServiceSimple PluginServiceSimple;
+
+/****************************************************************************/
+
+GOPluginService  *plugin_service_new (GOPlugin *plugin, xmlNode *tree, ErrorInfo **ret_error);
+char const     *plugin_service_get_id (GOPluginService *service);
+char const     *plugin_service_get_description (GOPluginService *service);
+GOPlugin      *plugin_service_get_plugin (GOPluginService *service);
+gpointer	plugin_service_get_cbs (GOPluginService *service);
+void		plugin_service_activate (GOPluginService *service, ErrorInfo **ret_error);
+void		plugin_service_deactivate (GOPluginService *service, ErrorInfo **ret_error);
+void		plugin_service_load   (GOPluginService *service, ErrorInfo **ret_error);
+void		plugin_service_unload (GOPluginService *service, ErrorInfo **ret_error);
+
+typedef GType (*GOPluginServiceCreate) (void);
+void plugin_services_init     (void);
+void plugin_services_shutdown (void);
+void plugin_service_define    (char const *type_str,
+			       GOPluginServiceCreate ctor);
+
+G_END_DECLS
+
+#endif /* PLUGIN_SERVICE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1827 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Support for dynamically-loaded Gnumeric plugin components.
+ *
+ * Authors:
+ *  Old plugin engine:
+ *    Tom Dyas (tdyas at romulus.rutgers.edu)
+ *    Dom Lachowicz (dominicl at seas.upenn.edu)
+ *  New plugin engine:
+ *    Zbigniew Chyla (cyba at gnome.pl)
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/goffice-priv.h>
+#include <goffice/goffice-paths.h>
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/go-plugin-service.h>
+#include <goffice/app/go-plugin-loader.h>
+#include <goffice/app/go-plugin-loader-module.h>
+#include <goffice/app/go-cmd-context.h>
+#include <goffice/app/error-info.h>
+
+#include <goffice/utils/go-glib-extras.h>
+#include <goffice/utils/go-libxml-extras.h>
+#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxml/xmlmemory.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <glib-object.h>
+#include <glib/gi18n.h>
+#include <gmodule.h>
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <locale.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#define PLUGIN_INFO_FILE_NAME          "plugin.xml"
+#define PLUGIN_ID_VALID_CHARS          "_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
+
+#define BUILTIN_LOADER_MODULE_ID       "Gnumeric_Builtin:module"
+
+static GHashTable *plugins_marked_for_deactivation_hash = NULL;
+static GSList *available_plugins = NULL;
+static GSList *go_plugin_dirs = NULL;
+static GHashTable *available_plugins_id_hash = NULL;
+
+static GHashTable *loader_services = NULL;
+static GType	   go_default_loader_type;
+
+static void plugin_get_loader_if_needed (GOPlugin *plugin, ErrorInfo **ret_error);
+static void go_plugin_read (GOPlugin *plugin, const gchar *dir_name, ErrorInfo **ret_error);
+static void go_plugin_load_base (GOPlugin *plugin, ErrorInfo **ret_error);
+
+/*
+ * GOPlugin
+ */
+
+typedef struct {
+	gchar *plugin_id;
+	GOPlugin *plugin;             /* don't use directly */
+	gboolean force_load;
+} PluginDependency;
+
+struct _GOPlugin {
+	GObject base;
+
+	gboolean has_full_info;
+	gchar   *dir_name;
+	gchar   *id;
+
+	gchar   *name;
+	gchar   *description;
+	gboolean require_explicit_enabling;
+
+	gboolean     is_active;
+	gint	     use_refcount;
+	GTypeModule *type_module;
+
+	GSList *dependencies;
+	gchar *loader_id;
+	GHashTable *loader_attrs;
+	GOPluginLoader *loader;
+	GSList *services;
+
+	char *saved_textdomain;
+};
+
+typedef struct _GOPluginClass GOPluginClass;
+struct _GOPluginClass {
+	GTypeModuleClass parent_class;
+
+	/* signals */
+	void (*state_changed)		(GOPluginClass *gpc);
+	void (*can_deactivate_changed)	(GOPluginClass *gpc);
+};
+
+enum {
+	STATE_CHANGED,
+	CAN_DEACTIVATE_CHANGED,
+	LAST_SIGNAL
+};
+
+static guint go_plugin_signals[LAST_SIGNAL];
+static GObjectClass *parent_class = NULL;
+
+static void plugin_dependency_free (gpointer data);
+
+static void
+go_plugin_message (gint level, const gchar *format, ...)
+{
+#ifdef PLUGIN_DEBUG
+	va_list args;
+
+	if (level <= PLUGIN_DEBUG) {
+		va_start (args, format);
+		vprintf (format, args);
+		va_end (args);
+	}
+#endif
+}
+static void
+go_plugin_init (GObject *obj)
+{
+	GOPlugin *plugin = GO_PLUGIN (obj);
+
+	plugin->id = NULL;
+	plugin->dir_name = NULL;
+	plugin->has_full_info = FALSE;
+	plugin->saved_textdomain = NULL;
+	plugin->require_explicit_enabling = FALSE;
+}
+
+static void
+go_plugin_finalize (GObject *obj)
+{
+	GOPlugin *plugin = GO_PLUGIN (obj);
+
+	if (plugin->type_module != NULL) {
+		g_type_module_unuse (plugin->type_module);
+		plugin->type_module = NULL;
+	}
+
+	g_free (plugin->id);
+	plugin->id = NULL;
+	g_free (plugin->dir_name);
+	plugin->dir_name = NULL;
+	if (plugin->has_full_info) {
+		plugin->has_full_info = FALSE;
+		g_free (plugin->name);
+		g_free (plugin->description);
+		go_slist_free_custom (plugin->dependencies, plugin_dependency_free);
+		g_free (plugin->loader_id);
+		if (plugin->loader_attrs != NULL) {
+			g_hash_table_destroy (plugin->loader_attrs);
+		}
+		if (plugin->loader != NULL) {
+			g_object_unref (plugin->loader);
+		}
+		go_slist_free_custom (plugin->services, g_object_unref);
+	}
+	g_free (plugin->saved_textdomain);
+	plugin->saved_textdomain = NULL;
+
+	parent_class->finalize (obj);
+}
+
+
+static void
+go_plugin_class_init (GObjectClass *gobject_class)
+{
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	gobject_class->finalize = go_plugin_finalize;
+
+	go_plugin_signals[STATE_CHANGED] = g_signal_new (
+		"state_changed",
+		G_TYPE_FROM_CLASS (gobject_class),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GOPluginClass, state_changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__VOID,
+		G_TYPE_NONE, 0);
+	go_plugin_signals[CAN_DEACTIVATE_CHANGED] = g_signal_new (
+		"can_deactivate_changed",
+		G_TYPE_FROM_CLASS (gobject_class),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GOPluginClass, can_deactivate_changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__VOID,
+		G_TYPE_NONE, 0);
+}
+
+GSF_CLASS (GOPlugin, go_plugin, go_plugin_class_init, go_plugin_init,
+           G_TYPE_OBJECT)
+
+static GOPlugin *
+go_plugin_new_from_xml (const gchar *dir_name, ErrorInfo **ret_error)
+{
+	GOPlugin *plugin;
+	ErrorInfo *error;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	plugin = g_object_new (GO_PLUGIN_TYPE, NULL);
+	go_plugin_read (plugin, dir_name, &error);
+	if (error == NULL) {
+		plugin->has_full_info = TRUE;
+	} else {
+		*ret_error = error;
+		g_object_unref (plugin);
+		plugin = NULL;
+	}
+
+	return plugin;
+}
+
+static GOPlugin *
+go_plugin_new_with_id_and_dir_name_only (const gchar *id, const gchar *dir_name)
+{
+	GOPlugin *plugin = g_object_new (GO_PLUGIN_TYPE, NULL);
+	plugin->id = g_strdup (id);
+	plugin->dir_name = g_strdup (dir_name);
+	plugin->has_full_info = FALSE;
+	return plugin;
+}
+
+
+/*
+ * PluginFileState - information about plugin.xml files used in previous
+ *                   and current Gnumeric session.
+ */
+
+typedef struct {
+	gchar *dir_name;
+	gchar *file_state;
+	gchar *plugin_id;
+	enum {PLUGIN_OLD_UNUSED, PLUGIN_OLD_USED, PLUGIN_NEW} age;
+} PluginFileState;
+
+static gboolean plugin_file_state_hash_changed;
+static GHashTable *plugin_file_state_dir_hash;
+
+static gchar *
+get_file_state_as_string (const gchar *file_name)
+{
+	struct stat st;
+
+	if (stat (file_name, &st) == -1) {
+		return NULL;
+	}
+
+	return g_strdup_printf (
+		"%ld:%ld:%ld:%ld",
+		(long int) st.st_dev, (long int) st.st_ino,
+		(long int) st.st_size, (long int) st.st_mtime);
+}
+
+static gchar *
+plugin_file_state_as_string (PluginFileState *state)
+{
+	return g_strdup_printf ("%s|%s|%s", state->plugin_id, state->file_state,
+	                        state->dir_name);
+}
+
+static PluginFileState *
+plugin_file_state_from_string (const gchar *str)
+{
+	PluginFileState *state;
+	gchar **strv;
+
+	strv = g_strsplit (str, "|", 3);
+	if (strv[0] == NULL || strv[1] == NULL || strv[2] == NULL) {
+		g_strfreev (strv);
+		return NULL;
+	}
+	state = g_new (PluginFileState, 1);
+	state->plugin_id = strv[0];
+	state->file_state = strv[1];
+	state->dir_name = strv[2];
+	state->age = PLUGIN_OLD_UNUSED;
+	g_free (strv);
+
+	return state;
+}
+
+static void
+plugin_file_state_free (gpointer data)
+{
+	PluginFileState *state = data;
+
+	g_free (state->dir_name);
+	g_free (state->file_state);
+	g_free (state->plugin_id);
+	g_free (state);
+}
+
+/* --- */
+
+static gboolean
+go_plugin_read_full_info_if_needed_error_info (GOPlugin *plugin, ErrorInfo **ret_error)
+{
+	ErrorInfo *read_error;
+	gchar *old_id, *old_dir_name;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (plugin->has_full_info) {
+		return TRUE;
+	}
+
+	old_id = plugin->id;
+	old_dir_name = plugin->dir_name;
+	go_plugin_read (plugin, old_dir_name, &read_error);
+	if (read_error == NULL && strcmp (plugin->id, old_id) == 0) {
+		/* id and dir_name pointers are guaranteed to be valid during plugin's lifetime */
+		g_free (plugin->id);
+		g_free (plugin->dir_name);
+		plugin->id = old_id;
+		plugin->dir_name = old_dir_name;
+		plugin->has_full_info = TRUE;
+	} else {
+		go_plugin_message (1, "Can't read plugin.xml file for %s.\n", old_id);
+		if (read_error == NULL) {
+			read_error = error_info_new_printf (
+			             _("File contains plugin info with invalid id (%s), expected %s."),
+			             plugin->id, old_id);
+		}
+		*ret_error = error_info_new_str_with_details (
+		             _("Couldn't read plugin info from file."),
+		             read_error);
+		g_free (old_id);
+		g_free (old_dir_name);
+	}
+
+	return *ret_error == NULL;
+}
+
+static gboolean
+go_plugin_read_full_info_if_needed (GOPlugin *plugin)
+{
+	ErrorInfo *error;
+
+	if (go_plugin_read_full_info_if_needed_error_info (plugin, &error)) {
+		return TRUE;
+	} else {
+		g_warning ("go_plugin_read_full_info_if_needed: couldn't read plugin info from file.");
+		error_info_print (error);
+		error_info_free (error);
+		return FALSE;
+	}
+}
+
+/*
+ * Accessor functions
+ */
+
+/**
+ * go_plugin_get_textdomain:
+ * @plugin      : The plugin
+ *
+ * Returns plugin's textdomain for use with textdomain(3) and d*gettext(3)
+ * functions.
+ */
+const gchar *
+go_plugin_get_textdomain (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+
+	if (plugin->saved_textdomain == NULL) {
+		plugin->saved_textdomain = g_strconcat ("gnumeric__", plugin->id, NULL);
+	}
+
+	return plugin->saved_textdomain;
+}
+
+/**
+ * go_plugin_is_active:
+ * @plugin      : The plugin
+ *
+ * Returns : TRUE if @plugin is active and FALSE otherwise.
+ */
+gboolean
+go_plugin_is_active (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), FALSE);
+
+	if (!plugin->has_full_info) {
+		return FALSE;
+	}
+	return plugin->is_active;
+}
+
+/**********************************************************/
+typedef GTypeModule		GOPluginTypeModule;
+typedef GTypeModuleClass	GOPluginTypeModuleClass;
+static gboolean go_plugin_type_module_load   (GTypeModule *module) { return TRUE; }
+static void	go_plugin_type_module_unload (GTypeModule *module) { }
+static void
+go_plugin_type_module_class_init (GTypeModuleClass *gtm_class)
+{
+	gtm_class->load   = go_plugin_type_module_load;
+	gtm_class->unload = go_plugin_type_module_unload;
+}
+static GSF_CLASS (GOPluginTypeModule, go_plugin_type_module,
+	go_plugin_type_module_class_init, NULL,
+	G_TYPE_TYPE_MODULE)
+
+/**********************************************************/
+
+/**
+ * go_plugin_get_type_module :
+ * @plugin : #GOPlugin
+ *
+ * Return the GTypeModule associated with the plugin creating it if necessary.
+ **/
+GTypeModule *
+go_plugin_get_type_module (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+	g_return_val_if_fail (plugin->is_active, NULL);
+
+	if (NULL == plugin->type_module) {
+		plugin->type_module = g_object_new (go_plugin_type_module_get_type (), NULL);
+		g_type_module_use (plugin->type_module);
+	}
+	return plugin->type_module;
+}
+
+/**
+ * go_plugin_get_dir_name:
+ * @plugin      : The plugin
+ *
+ * Returns the name of the directory in which @plugin is located.
+ * Returned string is != NULL and stays valid during @plugin's lifetime.
+ */
+const gchar *
+go_plugin_get_dir_name (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+
+	return plugin->dir_name;
+}
+
+/**
+ * go_plugin_get_id:
+ * @plugin      : The plugin
+ *
+ * Returns the ID of @plugin (unique string used for idenfification of
+ * plugin).
+ * Returned string is != NULL and stays valid during @plugin's lifetime.
+ */
+const gchar *
+go_plugin_get_id (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+
+	return plugin->id;
+}
+
+/**
+ * go_plugin_get_name:
+ * @plugin      : The plugin
+ *
+ * Returns textual name of @plugin. If the real name is not available
+ * for some reason, automatically generated string will be returned.
+ * Returned string is != NULL and stays valid during @plugin's lifetime.
+ */
+const gchar *
+go_plugin_get_name (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+
+	if (!go_plugin_read_full_info_if_needed (plugin)) {
+		return _("Unknown name");
+	}
+	return plugin->name;
+}
+
+/**
+ * go_plugin_get_description:
+ * @plugin      : The plugin
+ *
+ * Returns textual description of @plugin or NULL if description is not
+ * available.
+ * Returned string stays valid during @plugin's lifetime.
+ */
+const gchar *
+go_plugin_get_description (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+
+	if (!go_plugin_read_full_info_if_needed (plugin)) {
+		return NULL;
+	}
+	return plugin->description;
+}
+
+/**
+ * go_plugin_is_loaded:
+ * @plugin      : The plugin
+ *
+ * Returns : TRUE if @plugin is loaded and FALSE otherwise.
+ */
+gboolean
+go_plugin_is_loaded (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), FALSE);
+	return	plugin->has_full_info &&
+		plugin->loader != NULL &&
+		go_plugin_loader_is_base_loaded (plugin->loader);
+}
+
+/* - */
+
+/**
+ * plugins_register_loader:
+ * @loader_id     : Loader's id
+ * @service       : Plugin service of type "plugin_loader"
+ *
+ * Registers new type of plugin loader identified by @loader_id (identifier
+ * consists of loader's plugin id and service id concatenated using colon).
+ * All requests to create new loader object of this type will be passed to
+ * @service.
+ * This function is intended for use by GOPluginService objects.
+ */
+void
+go_plugins_register_loader (const gchar *loader_id, GOPluginService *service)
+{
+	g_return_if_fail (loader_id != NULL);
+	g_return_if_fail (service != NULL);
+
+	g_hash_table_insert (loader_services, g_strdup (loader_id), service);
+}
+
+/**
+ * plugins_unregister_loader:
+ * @loader_id     : Loader's id
+ *
+ * Unregisters a type of plugin loader identified by @loader_id. After
+ * callingthis function Gnumeric will be unable to load plugins supported
+ * by the specified loader.
+ * This function is intended for use by GOPluginService objects.
+ */
+void
+go_plugins_unregister_loader (const gchar *loader_id)
+{
+	g_return_if_fail (loader_id != NULL);
+
+	g_hash_table_remove (loader_services, loader_id);
+}
+
+static GType
+get_loader_type_by_id (const gchar *id_str, ErrorInfo **ret_error)
+{
+	GOPluginService *loader_service;
+	ErrorInfo *error;
+	GType loader_type;
+
+	g_return_val_if_fail (id_str != NULL, G_TYPE_NONE);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (strcmp (id_str, BUILTIN_LOADER_MODULE_ID) == 0)
+		return go_default_loader_type;
+
+	loader_service = g_hash_table_lookup (loader_services, id_str);
+	if (loader_service == NULL) {
+		*ret_error = error_info_new_printf (
+		             _("Unsupported loader type \"%s\"."),
+		             id_str);
+		return G_TYPE_NONE;
+	}
+	loader_type = plugin_service_plugin_loader_generate_type (
+	              loader_service, &error);
+	if (error != NULL) {
+		*ret_error = error_info_new_printf (
+		             _("Error while preparing loader \"%s\"."),
+		             id_str);
+		error_info_add_details (*ret_error, error);
+		return G_TYPE_NONE;
+	}
+
+	return loader_type;
+}
+
+static GOPlugin *
+plugin_dependency_get_plugin (PluginDependency *dep)
+{
+	g_return_val_if_fail (dep != NULL, NULL);
+
+	if (dep->plugin == NULL)
+		dep->plugin = go_plugins_get_plugin_by_id (dep->plugin_id);
+	return dep->plugin;
+}
+
+static GSList *
+go_plugin_read_dependency_list (xmlNode *tree)
+{
+	GSList *dependency_list = NULL;
+	xmlNode *node;
+
+	g_return_val_if_fail (tree != NULL, NULL);
+	g_return_val_if_fail (strcmp (tree->name, "dependencies") == 0, NULL);
+
+	for (node = tree->xmlChildrenNode; node != NULL; node = node->next) {
+		if (strcmp (node->name, "dep_plugin") == 0) {
+			gchar *plugin_id;
+
+			plugin_id = xmlGetProp (node, (xmlChar *)"id");
+			if (plugin_id != NULL) {
+				PluginDependency *dep;
+
+				dep = g_new (PluginDependency, 1);
+				dep->plugin_id = plugin_id;
+				dep->plugin = NULL;
+				if (!xml_node_get_bool (node, "force_load", &(dep->force_load)))
+					dep->force_load = FALSE;
+				GO_SLIST_PREPEND (dependency_list, dep);
+			}
+		}
+	}
+
+	return g_slist_reverse (dependency_list);
+}
+
+static GSList *
+go_plugin_read_service_list (GOPlugin *plugin, xmlNode *tree, ErrorInfo **ret_error)
+{
+	GSList *service_list = NULL;
+	GSList *error_list = NULL;
+	xmlNode *node;
+	gint i;
+
+	g_return_val_if_fail (tree != NULL, NULL);
+
+	node = e_xml_get_child_by_name (tree, (xmlChar *)"services");
+	if (node == NULL)
+		return NULL;
+	node = node->xmlChildrenNode;
+	for (i = 0; node != NULL; i++, node = node->next) {
+		if (strcmp (node->name, "service") == 0) {
+			GOPluginService *service;
+			ErrorInfo *service_error;
+
+			service = plugin_service_new (plugin, node, &service_error);
+
+			if (service != NULL) {
+				g_assert (service_error == NULL);
+				GO_SLIST_PREPEND (service_list, service);
+			} else {
+				ErrorInfo *error;
+
+				error = error_info_new_printf (
+				        _("Error while reading service #%d info."),
+				        i);
+				error_info_add_details (error, service_error);
+				GO_SLIST_PREPEND (error_list, error);
+			}
+		}
+	}
+	if (error_list != NULL) {
+		GO_SLIST_REVERSE (error_list);
+		*ret_error = error_info_new_from_error_list (error_list);
+		go_slist_free_custom (service_list, g_object_unref);
+		return NULL;
+	} else {
+		return g_slist_reverse (service_list);
+	}
+}
+
+static GHashTable *
+go_plugin_read_loader_attrs (xmlNode *tree)
+{
+	xmlNode *node;
+	GHashTable *hash;
+
+	g_return_val_if_fail (tree != NULL, NULL);
+	g_return_val_if_fail (strcmp (tree->name, "loader") == 0, NULL);
+
+	hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+	for (node = tree->xmlChildrenNode; node != NULL; node = node->next) {
+		if (strcmp (node->name, "attribute") == 0) {
+			gchar *name, *value;
+
+			name = xmlGetProp (node, (xmlChar *)"name");
+			if (name != NULL) {
+				if (g_hash_table_lookup (hash, name) == NULL) {
+					value = xmlGetProp (node, (xmlChar *)"value");
+					g_hash_table_insert (hash, name, value);
+				} else {
+					g_warning ("Duplicated \"%s\" attribute in plugin.xml file.", name);
+					g_free (name);
+				}
+			}
+		}
+	}
+
+	return hash;
+}
+
+static void
+plugin_dependency_free (gpointer data)
+{
+	PluginDependency *dep = data;
+
+	g_return_if_fail (dep != NULL);
+
+	g_free (dep->plugin_id);
+	g_free (dep);
+}
+
+static void
+go_plugin_read (GOPlugin *plugin, const gchar *dir_name, ErrorInfo **ret_error)
+{
+	gchar *file_name;
+	xmlDocPtr doc;
+	gchar *id, *name, *description;
+	xmlNode *tree, *information_node, *dependencies_node, *loader_node;
+	GSList *dependency_list;
+	gchar *loader_id;
+	GHashTable *loader_attrs;
+	gboolean require_explicit_enabling = FALSE;
+
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+	g_return_if_fail (dir_name != NULL);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	file_name = g_build_filename (dir_name, PLUGIN_INFO_FILE_NAME, NULL);
+	doc = go_xml_parse_file (file_name);
+	if (doc == NULL || doc->xmlRootNode == NULL || strcmp (doc->xmlRootNode->name, "plugin") != 0) {
+		if (access (file_name, R_OK) != 0) {
+			*ret_error = error_info_new_printf (
+			             _("Can't read plugin info file (\"%s\")."),
+			             file_name);
+		} else {
+			*ret_error = error_info_new_printf (
+			             _("File \"%s\" is not valid plugin info file."),
+			             file_name);
+		}
+		g_free (file_name);
+		xmlFreeDoc (doc);
+		return;
+	}
+	tree = doc->xmlRootNode;
+	id = xmlGetProp (tree, (xmlChar *)"id");
+	information_node = e_xml_get_child_by_name (tree, (xmlChar *)"information");
+	if (information_node != NULL) {
+		xmlNode *node;
+		xmlChar *val;
+
+		node = e_xml_get_child_by_name_by_lang (information_node, "name");
+		if (node != NULL) {
+			val = xmlNodeGetContent (node);
+			name = g_strdup ((gchar *)val);
+			xmlFree (val);
+		} else
+			name = NULL;
+
+		node = e_xml_get_child_by_name_by_lang (information_node, "description");
+		if (node != NULL) {
+			val = xmlNodeGetContent (node);
+			description = g_strdup ((gchar *)val);
+			xmlFree (val);
+		} else
+			description = NULL;
+		if (e_xml_get_child_by_name (information_node, (xmlChar const *)"require_explicit_enabling"))
+			require_explicit_enabling = TRUE;
+	} else {
+		name = NULL;
+		description = NULL;
+	}
+	dependencies_node = e_xml_get_child_by_name (tree, (xmlChar *)"dependencies");
+	if (dependencies_node != NULL) {
+		dependency_list = go_plugin_read_dependency_list (dependencies_node);
+	} else {
+		dependency_list = NULL;
+	}
+	loader_node = e_xml_get_child_by_name (tree, (xmlChar *)"loader");
+	if (loader_node != NULL) {
+		char *p;
+
+		loader_id = xmlGetProp (loader_node, (xmlChar *)"type");
+		if (loader_id != NULL && (p = strchr (loader_id, ':')) != NULL) {
+			loader_attrs = go_plugin_read_loader_attrs (loader_node);
+			if (strcmp (loader_id, BUILTIN_LOADER_MODULE_ID) != 0) {
+				PluginDependency *dep;
+
+				/* Add loader's plugin to the list of dependencies */
+				dep = g_new (PluginDependency, 1);
+				dep->plugin_id = g_strndup (loader_id, p - loader_id);
+				dep->plugin = NULL;
+				dep->force_load = FALSE;
+				GO_SLIST_PREPEND (dependency_list, dep);
+			}
+		} else {
+			loader_id = NULL;
+			loader_attrs = NULL;
+		}
+	} else {
+		loader_id = NULL;
+		loader_attrs = NULL;
+	}
+	if (id != NULL && name != NULL && loader_id != NULL &&
+	    id[strspn (id, PLUGIN_ID_VALID_CHARS)] == '\0') {
+		ErrorInfo *services_error = NULL;
+		plugin->dir_name = g_strdup (dir_name);
+		plugin->id = id;
+		plugin->name = name;
+		plugin->description = description;
+		plugin->require_explicit_enabling = require_explicit_enabling;
+		plugin->is_active = FALSE;
+		plugin->use_refcount = 0;
+		plugin->type_module  = NULL;
+		plugin->dependencies = dependency_list;
+		plugin->loader_id = loader_id;
+		plugin->loader_attrs = loader_attrs;
+		plugin->loader = NULL;
+		plugin->services = go_plugin_read_service_list (plugin, tree, &services_error);
+
+		if (services_error != NULL) {
+			*ret_error = error_info_new_printf (
+				_("Errors while reading services for plugin with id=\"%s\"."),
+				id);
+			error_info_add_details (*ret_error, services_error);
+		} else
+			go_plugin_message (4, "Read plugin.xml file for %s.\n", plugin->id);
+	} else {
+		if (id != NULL) {
+			GSList *error_list = NULL;
+
+			if (id[strspn (id, PLUGIN_ID_VALID_CHARS)] != '\0') {
+				GO_SLIST_PREPEND (error_list, error_info_new_printf (
+					_("Plugin id contains invalid characters (%s)."), id));
+			}
+			if (name == NULL) {
+				GO_SLIST_PREPEND (error_list, error_info_new_str (
+					_("Unknown plugin name.")));
+			}
+			if (loader_id == NULL) {
+				GO_SLIST_PREPEND (error_list, error_info_new_printf (
+					_("No loader defined or loader id invalid for plugin with id=\"%s\"."), id));
+			}
+			g_assert (error_list != NULL);
+			GO_SLIST_REVERSE (error_list);
+			*ret_error = error_info_new_from_error_list (error_list);
+		} else
+			*ret_error = error_info_new_str (_("Plugin has no id."));
+
+		go_slist_free_custom (dependency_list, plugin_dependency_free);
+		g_free (plugin->loader_id);
+		if (plugin->loader_attrs != NULL)
+			g_hash_table_destroy (plugin->loader_attrs);
+		g_free (id);
+		g_free (name);
+		g_free (description);
+	}
+	g_free (file_name);
+	xmlFreeDoc (doc);
+}
+
+static void
+plugin_get_loader_if_needed (GOPlugin *plugin, ErrorInfo **ret_error)
+{
+	GType loader_type;
+	ErrorInfo *error;
+
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (!go_plugin_read_full_info_if_needed_error_info (plugin, ret_error)) {
+		return;
+	}
+	if (plugin->loader != NULL) {
+		return;
+	}
+	loader_type = get_loader_type_by_id (plugin->loader_id, &error);
+	if (error == NULL) {
+		ErrorInfo *error;
+		GOPluginLoader *loader = g_object_new (loader_type, NULL);
+		go_plugin_loader_set_attributes (loader, plugin->loader_attrs, &error);
+		if (error == NULL) {
+			plugin->loader = loader;
+			go_plugin_loader_set_plugin (loader, plugin);
+		} else {
+			g_object_unref (loader);
+			loader = NULL;
+			*ret_error = error_info_new_printf (
+			             _("Error initializing plugin loader (\"%s\")."),
+			             plugin->loader_id);
+			error_info_add_details (*ret_error, error);
+		}
+	} else {
+		*ret_error = error;
+	}
+}
+
+/**
+ * go_plugin_activate:
+ * @plugin      : The plugin
+ * @ret_error   : Pointer used to report errors
+ *
+ * Activates @plugin together with all its dependencies.
+ * In case of error the plugin won't be activated and detailed error
+ * information will be returned using @ret_error.
+ */
+void
+go_plugin_activate (GOPlugin *plugin, ErrorInfo **ret_error)
+{
+	GSList *error_list = NULL;
+	GSList *l;
+	gint i;
+	static GSList *activate_stack = NULL;
+
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (g_slist_find (activate_stack, plugin) != NULL) {
+		*ret_error = error_info_new_str (
+				     _("Detected cyclic plugin dependencies."));
+		return;
+	}
+	if (!go_plugin_read_full_info_if_needed_error_info (plugin, ret_error)) {
+		return;
+	}
+	if (plugin->is_active) {
+		return;
+	}
+
+	/* Activate plugin dependencies */
+	GO_SLIST_PREPEND (activate_stack, plugin);
+	GO_SLIST_FOREACH (plugin->dependencies, PluginDependency, dep,
+		GOPlugin *dep_plugin;
+
+		dep_plugin = plugin_dependency_get_plugin (dep);
+		if (dep_plugin != NULL) {
+			ErrorInfo *dep_error;
+
+			go_plugin_activate (dep_plugin, &dep_error);
+			if (dep_error != NULL) {
+				ErrorInfo *new_error;
+
+				new_error = error_info_new_printf (
+					_("Couldn't activate plugin with id=\"%s\"."), dep->plugin_id);
+				error_info_add_details (new_error, dep_error);
+				GO_SLIST_PREPEND (error_list, new_error);
+			}
+		} else {
+			GO_SLIST_PREPEND (error_list, error_info_new_printf (
+				_("Couldn't find plugin with id=\"%s\"."), dep->plugin_id));
+		}
+	);
+	g_assert (activate_stack != NULL && activate_stack->data == plugin);
+	activate_stack = g_slist_delete_link (activate_stack, activate_stack);
+	if (error_list != NULL) {
+		*ret_error = error_info_new_str (
+				     _("Error while activating plugin dependencies."));
+		error_info_add_details_list (*ret_error, error_list);
+		return;
+	}
+
+	for (l = plugin->services, i = 0; l != NULL; l = l->next, i++) {
+		GOPluginService *service = l->data;
+		ErrorInfo *service_error;
+
+		plugin_service_activate (service, &service_error);
+		if (service_error != NULL) {
+			ErrorInfo *error;
+
+			error = error_info_new_printf (
+				_("Error while activating plugin service #%d."), i);
+			error_info_add_details (error, service_error);
+			GO_SLIST_PREPEND (error_list, error);
+		}
+	}
+	if (error_list != NULL) {
+		*ret_error = error_info_new_from_error_list (error_list);
+		/* FIXME - deactivate activated services */
+		return;
+	}
+	GO_SLIST_FOREACH (plugin->dependencies, PluginDependency, dep,
+		go_plugin_use_ref (plugin_dependency_get_plugin (dep));
+	);
+	plugin->is_active = TRUE;
+	g_signal_emit (G_OBJECT (plugin), go_plugin_signals[STATE_CHANGED], 0);
+}
+
+/**
+ * go_plugin_deactivate:
+ * @plugin      : The plugin
+ * @ret_error   : Pointer used to report errors
+ *
+ * Dectivates @plugin. Its dependencies will NOT be automatically
+ * deactivated.
+ * In case of error the plugin won't be deactivated and detailed error
+ * information will be returned using @ret_error.
+ */
+void
+go_plugin_deactivate (GOPlugin *plugin, ErrorInfo **ret_error)
+{
+	GSList *error_list = NULL;
+	GSList *l;
+	gint i;
+
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (!plugin->has_full_info || !plugin->is_active) {
+		return;
+	}
+	if (plugin->use_refcount > 0) {
+		*ret_error = error_info_new_str ("Plugin is still in use.");
+		return;
+	}
+	for (l = plugin->services, i = 0; l != NULL; l = l->next, i++) {
+		GOPluginService *service = l->data;
+		ErrorInfo *service_error;
+
+		plugin_service_deactivate (service, &service_error);
+		if (service_error != NULL) {
+			ErrorInfo *error;
+
+			error = error_info_new_printf (
+				_("Error while deactivating plugin service #%d."), i);
+			error_info_add_details (error, service_error);
+			GO_SLIST_PREPEND (error_list, error);
+		}
+	}
+	if (error_list != NULL) {
+		*ret_error = error_info_new_from_error_list (error_list);
+		/* FIXME - some services are still active (or broken) */
+	} else {
+		plugin->is_active = FALSE;
+		GO_SLIST_FOREACH (plugin->dependencies, PluginDependency, dep,
+			go_plugin_use_unref (plugin_dependency_get_plugin (dep));
+		);
+		if (plugin->loader != NULL) {
+			g_object_unref (plugin->loader);
+			plugin->loader = NULL;
+		}
+	}
+	g_signal_emit (G_OBJECT (plugin), go_plugin_signals[STATE_CHANGED], 0);
+}
+
+/**
+ * go_plugin_can_deactivate:
+ * @plugin       : The plugin
+ *
+ * Tells if the plugin can be deactivated using go_plugin_deactivate.
+ *
+ * Returns : TRUE if @plugin can be deactivated and FALSE otherwise.
+ */
+gboolean
+go_plugin_can_deactivate (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), FALSE);
+
+	if (!plugin->is_active) {
+		return FALSE;
+	}
+	if (!go_plugin_read_full_info_if_needed (plugin)) {
+		return FALSE;
+	}
+	return plugin->use_refcount == 0;
+}
+
+static void
+go_plugin_load_base (GOPlugin *plugin, ErrorInfo **ret_error)
+{
+	ErrorInfo *error;
+	GSList *error_list = NULL;
+	static GSList *load_stack = NULL;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (g_slist_find (load_stack, plugin) != NULL) {
+		*ret_error = error_info_new_str (
+				     _("Detected cyclic plugin dependencies."));
+		return;
+	}
+	if (go_plugin_is_loaded (plugin)) {
+		return;
+	}
+	if (!go_plugin_read_full_info_if_needed_error_info (plugin, ret_error)) {
+		return;
+	}
+	plugin_get_loader_if_needed (plugin, &error);
+	if (error != NULL) {
+		*ret_error = error_info_new_str_with_details (
+		             _("Cannot load plugin loader."),
+		             error);
+		return;
+	}
+
+	/* Load plugin dependencies */
+	GO_SLIST_PREPEND (load_stack, plugin);
+	GO_SLIST_FOREACH (plugin->dependencies, PluginDependency, dep,
+		GOPlugin *dep_plugin;
+		ErrorInfo *dep_error;
+
+		if (!dep->force_load) {
+			continue;
+		}
+		dep_plugin = plugin_dependency_get_plugin (dep);
+		if (dep_plugin != NULL) {
+			plugin_get_loader_if_needed (dep_plugin, &dep_error);
+			if (dep_error == NULL) {
+				go_plugin_load_base (dep_plugin, &dep_error);
+			} else {
+				dep_error = error_info_new_str_with_details (
+				             _("Cannot load plugin loader."),
+				             dep_error);
+			}
+			if (dep_error != NULL) {
+				ErrorInfo *new_error;
+
+				new_error = error_info_new_printf (
+					_("Couldn't load plugin with id=\"%s\"."), dep->plugin_id);
+				error_info_add_details (new_error, dep_error);
+				GO_SLIST_PREPEND (error_list, new_error);
+			}
+		} else {
+			GO_SLIST_PREPEND (error_list, error_info_new_printf (
+				_("Couldn't find plugin with id=\"%s\"."), dep->plugin_id));
+		}
+	);
+	g_assert (load_stack != NULL && load_stack->data == plugin);
+	load_stack = g_slist_delete_link (load_stack, load_stack);
+	if (error_list != NULL) {
+		*ret_error = error_info_new_str (
+				     _("Error while loading plugin dependencies."));
+		error_info_add_details_list (*ret_error, error_list);
+		return;
+	}
+
+	go_plugin_loader_load_base (plugin->loader, &error);
+	if (error != NULL) {
+		*ret_error = error;
+		return;
+	}
+	g_signal_emit (G_OBJECT (plugin), go_plugin_signals[STATE_CHANGED], 0);
+}
+
+/**
+ * go_plugin_load_service:
+ * @plugin       : The plugin
+ * @service     : Plugin service
+ * @ret_error   : Pointer used to report errors
+ *
+ * Loads base part of the plugin if is not loaded and then loads given
+ * plugin service (prepares necessary part of the plugin for direct use).
+ * This function is intended for use by GOPluginService objects.
+ */
+void
+go_plugin_load_service (GOPlugin *plugin, GOPluginService *service, ErrorInfo **ret_error)
+{
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+	g_return_if_fail (service != NULL);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	go_plugin_load_base (plugin, ret_error);
+	if (*ret_error != NULL) {
+		return;
+	}
+	go_plugin_loader_load_service (plugin->loader, service, ret_error);
+}
+
+/**
+ * go_plugin_unload_service:
+ * @plugin       : The plugin
+ * @service     : Plugin service
+ * @ret_error   : Pointer used to report errors
+ *
+ * ...
+ * This function is intended for use by GOPluginService objects.
+ */
+void
+go_plugin_unload_service (GOPlugin *plugin, GOPluginService *service, ErrorInfo **ret_error)
+{
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+	g_return_if_fail (plugin->loader != NULL);
+	g_return_if_fail (service != NULL);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	if (!go_plugin_read_full_info_if_needed_error_info (plugin, ret_error)) {
+		return;
+	}
+	go_plugin_loader_unload_service (plugin->loader, service, ret_error);
+}
+
+/**
+ * go_plugin_use_ref:
+ * @plugin      : The plugin
+ */
+void
+go_plugin_use_ref (GOPlugin *plugin)
+{
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+	g_return_if_fail (plugin->is_active);
+
+	plugin->use_refcount++;
+	if (plugin->use_refcount == 1) {
+		g_signal_emit (G_OBJECT (plugin), go_plugin_signals[CAN_DEACTIVATE_CHANGED], 0);
+	}
+}
+
+/**
+ * go_plugin_use_unref:
+ * @plugin      : The plugin
+ */
+void
+go_plugin_use_unref (GOPlugin *plugin)
+{
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+	g_return_if_fail (plugin->is_active);
+	g_return_if_fail (plugin->use_refcount > 0);
+
+	plugin->use_refcount--;
+	if (plugin->use_refcount == 0) {
+		g_signal_emit (G_OBJECT (plugin), go_plugin_signals[CAN_DEACTIVATE_CHANGED], 0);
+	}
+}
+
+/**
+ * go_plugin_get_dependencies_ids:
+ * @plugin      : The plugin
+ *
+ * Returns the list of identifiers of plugins that @plugin depends on.
+ * All these plugins will be automatically activated before activating
+ * the @plugin itself.
+ * The caller must free the returned list together with the strings it
+ * points to (use go_slist_free_custom (list, g_free) to do this).
+ */
+GSList *
+go_plugin_get_dependencies_ids (GOPlugin *plugin)
+{
+	GSList *list = NULL;
+
+	GO_SLIST_FOREACH (plugin->dependencies, PluginDependency, dep,
+		GO_SLIST_PREPEND (list, g_strdup (dep->plugin_id));
+	);
+
+	return g_slist_reverse (list);
+}
+
+/**
+ * go_plugin_get_services:
+ * @plugin      : The plugin
+ *
+ */
+GSList *
+go_plugin_get_services (GOPlugin *plugin)
+{
+	g_return_val_if_fail (IS_GO_PLUGIN (plugin), NULL);
+
+	return plugin->services;
+}
+
+/*
+ * May return NULL without errors (is XML file doesn't exist)
+ */
+static GOPlugin *
+go_plugin_read_for_dir (const gchar *dir_name, ErrorInfo **ret_error)
+{
+	GOPlugin *plugin = NULL;
+	gchar *file_name;
+	gchar *file_state;
+	PluginFileState *state;
+	ErrorInfo *plugin_error;
+
+	g_return_val_if_fail (dir_name != NULL, NULL);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	file_name = g_build_filename (dir_name, PLUGIN_INFO_FILE_NAME, NULL);
+	file_state = get_file_state_as_string (file_name);
+	if (file_state == NULL) {
+		g_free (file_name);
+		return NULL;
+	}
+	state = g_hash_table_lookup (plugin_file_state_dir_hash, dir_name);
+	if (state != NULL && strcmp (state->file_state, file_state) == 0) {
+		plugin = go_plugin_new_with_id_and_dir_name_only (state->plugin_id, state->dir_name);
+		state->age = PLUGIN_OLD_USED;
+	} else if ((plugin = go_plugin_new_from_xml (dir_name, &plugin_error)) != NULL) {
+		g_assert (plugin_error == NULL);
+		if (state == NULL) {
+			state = g_new (PluginFileState, 1);
+			state->dir_name = g_strdup (dir_name);
+			state->file_state = g_strdup (file_state);
+			state->plugin_id = g_strdup (go_plugin_get_id (plugin));
+			state->age = PLUGIN_NEW;
+			g_hash_table_insert (plugin_file_state_dir_hash, state->dir_name, state);
+		} else {
+			if (strcmp (state->plugin_id, plugin->id) == 0) {
+				state->age = PLUGIN_OLD_USED;
+			} else {
+				state->age = PLUGIN_NEW;
+			}
+			g_free (state->file_state);
+			g_free (state->plugin_id);
+			state->file_state = g_strdup (file_state);
+			state->plugin_id = g_strdup (go_plugin_get_id (plugin));
+		}
+		plugin_file_state_hash_changed = TRUE;
+	} else {
+		*ret_error = error_info_new_printf (
+		             _("Errors occurred while reading plugin informations from file \"%s\"."),
+		             file_name);
+		error_info_add_details (*ret_error, plugin_error);
+	}
+	g_free (file_name);
+	g_free (file_state);
+
+	return plugin;
+}
+
+/*
+ * May return partial list and some error info.
+ */
+static GSList *
+go_plugin_list_read_for_subdirs_of_dir (const gchar *dir_name, ErrorInfo **ret_error)
+{
+	GSList *plugins = NULL;
+	GDir *dir;
+	char const *d_name;
+	GSList *error_list = NULL;
+
+	g_return_val_if_fail (dir_name != NULL, NULL);
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	dir = g_dir_open (dir_name, 0, NULL);
+	if (dir == NULL)
+		return NULL;
+
+	while ((d_name = g_dir_read_name (dir)) != NULL) {
+		gchar *full_entry_name;
+		ErrorInfo *error;
+		GOPlugin *plugin;
+
+		if (strcmp (d_name, ".") == 0 || strcmp (d_name, "..") == 0)
+			continue;
+		full_entry_name = g_build_filename (dir_name, d_name, NULL);
+		plugin = go_plugin_read_for_dir (full_entry_name, &error);
+		if (plugin != NULL) {
+			GO_SLIST_PREPEND (plugins, plugin);
+		}
+		if (error != NULL) {
+			GO_SLIST_PREPEND (error_list, error);
+		}
+		g_free (full_entry_name);
+	}
+	if (error_list != NULL) {
+		GO_SLIST_REVERSE (error_list);
+		*ret_error = error_info_new_from_error_list (error_list);
+	}
+	g_dir_close (dir);
+
+	return g_slist_reverse (plugins);
+}
+
+/*
+ * May return partial list and some error info.
+ */
+static GSList *
+go_plugin_list_read_for_subdirs_of_dir_list (GSList *dir_list, ErrorInfo **ret_error)
+{
+	GSList *plugins = NULL;
+	GSList *dir_iterator;
+	GSList *error_list = NULL;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	for (dir_iterator = dir_list; dir_iterator != NULL; dir_iterator = dir_iterator->next) {
+		gchar *dir_name;
+		ErrorInfo *error;
+		GSList *dir_plugin_info_list;
+
+		dir_name = (gchar *) dir_iterator->data;
+		dir_plugin_info_list = go_plugin_list_read_for_subdirs_of_dir (dir_name, &error);
+		if (error != NULL) {
+			GO_SLIST_PREPEND (error_list, error);
+		}
+		if (dir_plugin_info_list != NULL) {
+			GO_SLIST_CONCAT (plugins, dir_plugin_info_list);
+		}
+	}
+	if (error_list != NULL) {
+		GO_SLIST_REVERSE (error_list);
+		*ret_error = error_info_new_from_error_list (error_list);
+	}
+
+	return plugins;
+}
+
+/*
+ * May return partial list and some error info.
+ */
+static GSList *
+go_plugin_list_read_for_all_dirs (ErrorInfo **ret_error)
+{
+	return go_plugin_list_read_for_subdirs_of_dir_list (go_plugin_dirs, ret_error);
+}
+
+/**
+ * plugin_db_activate_plugin_list:
+ * @plugins     : The list of plugins
+ * @ret_error   : Pointer used to report errors
+ *
+ * Activates all plugins in the list. If some of the plugins cannot be
+ * activated, the function reports this via @ret_error (errors don't
+ * affect plugins activated successfully).
+ */
+void
+go_plugin_db_activate_plugin_list (GSList *plugins, ErrorInfo **ret_error)
+{
+	GSList *error_list = NULL;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	GO_SLIST_FOREACH (plugins, GOPlugin, plugin,
+		ErrorInfo *error;
+
+		go_plugin_activate (plugin, &error);
+		if (error != NULL) {
+			ErrorInfo *new_error;
+
+			new_error = error_info_new_printf (
+			            _("Couldn't activate plugin \"%s\" (ID: %s)."),
+			            plugin->name, plugin->id);
+			error_info_add_details (new_error, error);
+			GO_SLIST_PREPEND (error_list, new_error);
+		}
+	);
+	if (error_list != NULL) {
+		GO_SLIST_REVERSE (error_list);
+		*ret_error = error_info_new_from_error_list (error_list);
+	}
+}
+
+/**
+ * plugin_db_deactivate_plugin_list:
+ * @plugins     : The list of plugins
+ * @ret_error   : Pointer used to report errors
+ *
+ * Deactivates all plugins in the list. If some of the plugins cannot be
+ * deactivated, the function reports this via @ret_error (errors don't
+ * affect plugins deactivated successfully).
+ */
+void
+go_plugin_db_deactivate_plugin_list (GSList *plugins, ErrorInfo **ret_error)
+{
+	GSList *error_list = NULL;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+	GO_SLIST_FOREACH (plugins, GOPlugin, plugin,
+		ErrorInfo *error;
+
+		go_plugin_deactivate (plugin, &error);
+		if (error != NULL) {
+			ErrorInfo *new_error;
+
+			new_error = error_info_new_printf (
+			            _("Couldn't deactivate plugin \"%s\" (ID: %s)."),
+			            plugin->name, plugin->id);
+			error_info_add_details (new_error, error);
+			GO_SLIST_PREPEND (error_list, new_error);
+		}
+	);
+	if (error_list != NULL) {
+		GO_SLIST_REVERSE (error_list);
+		*ret_error = error_info_new_from_error_list (error_list);
+	}
+}
+
+/**
+ * plugins_get_available_plugins:
+ *
+ * Returns the list of available plugins. The returned value must not be
+ * freed and stays valid until calling plugins_rescan or plugins_shutdown.
+ **/
+GSList *
+go_plugins_get_available_plugins (void)
+{
+	return available_plugins;
+}
+
+/**
+ * plugins_get_active_plugins:
+ *
+ * Returns the list of active plugins.  The caller needs to free the list, but
+ * not the content.
+ **/
+GSList *
+go_plugins_get_active_plugins (void)
+{
+	GSList *active_list = NULL;
+
+	GO_SLIST_FOREACH (available_plugins, GOPlugin, plugin,
+		if (go_plugin_is_active (plugin) &&
+		    !go_plugin_db_is_plugin_marked_for_deactivation (plugin)) {
+			GO_SLIST_PREPEND (active_list, (gpointer) go_plugin_get_id (plugin));
+		}
+	);
+	return g_slist_reverse (active_list);
+}
+
+/**
+ * plugins_get_plugin_by_id:
+ * @plugin_id    : String containing plugin ID
+ *
+ * Returns GOPlugin object for plugin with ID equal to @plugin_id or NULL
+ * if there's no plugin available with given id.
+ * Function returns "borrowed" reference, use g_object_ref if you want to
+ * be sure that plugin won't disappear.
+ */
+GOPlugin *
+go_plugins_get_plugin_by_id (const gchar *plugin_id)
+{
+	g_return_val_if_fail (plugin_id != NULL, NULL);
+
+	return g_hash_table_lookup (available_plugins_id_hash, plugin_id);
+}
+
+/**
+ * plugin_db_mark_plugin_for_deactivation:
+ * ...
+ */
+void
+go_plugin_db_mark_plugin_for_deactivation (GOPlugin *plugin, gboolean mark)
+{
+	g_return_if_fail (IS_GO_PLUGIN (plugin));
+
+	if (mark) {
+		if (plugins_marked_for_deactivation_hash == NULL) {
+			plugins_marked_for_deactivation_hash = g_hash_table_new (&g_str_hash, &g_str_equal);
+		}
+		g_hash_table_insert (plugins_marked_for_deactivation_hash, plugin->id, plugin);
+	} else {
+		if (plugins_marked_for_deactivation_hash != NULL) {
+			g_hash_table_remove (plugins_marked_for_deactivation_hash, plugin->id);
+		}
+	}
+}
+
+/**
+ * plugin_db_is_plugin_marked_for_deactivation:
+ * ...
+ */
+gboolean
+go_plugin_db_is_plugin_marked_for_deactivation (GOPlugin *plugin)
+{
+	return plugins_marked_for_deactivation_hash != NULL &&
+	       g_hash_table_lookup (plugins_marked_for_deactivation_hash, plugin->id) != NULL;
+}
+
+static void
+ghf_set_state_old_unused (gpointer key, gpointer value, gpointer unused)
+{
+	PluginFileState *state = value;
+
+	state->age = PLUGIN_OLD_UNUSED;
+}
+
+/**
+ * plugins_rescan:
+ * @ret_error       : Pointer used to report errors
+ * @ret_new_plugins : Optional pointer to return list of new plugins
+ *
+ *
+ */
+void
+go_plugins_rescan (ErrorInfo **ret_error, GSList **ret_new_plugins)
+{
+	GSList *error_list = NULL;
+	ErrorInfo *error;
+	GSList *new_available_plugins;
+	GHashTable *new_available_plugins_id_hash;
+	GSList *removed_plugins = NULL, *added_plugins = NULL, *still_active_ids = NULL;
+
+	GO_INIT_RET_ERROR_INFO (ret_error);
+
+	/* re-read plugins list from disk */
+	g_hash_table_foreach (plugin_file_state_dir_hash, ghf_set_state_old_unused, NULL);
+	new_available_plugins = go_plugin_list_read_for_all_dirs (&error);
+	if (error != NULL) {
+		GO_SLIST_PREPEND (error_list, error_info_new_str_with_details (
+			_("Errors while reading info about available plugins."), error));
+	}
+
+	/* Find and (try to) deactivate not any longer available plugins */
+	new_available_plugins_id_hash = g_hash_table_new (g_str_hash, g_str_equal);
+	GO_SLIST_FOREACH (new_available_plugins, GOPlugin, plugin,
+		g_hash_table_insert (
+			new_available_plugins_id_hash, (char *) go_plugin_get_id (plugin), plugin);
+	);
+	GO_SLIST_FOREACH (available_plugins, GOPlugin, plugin,
+		GOPlugin *found_plugin;
+
+		found_plugin = g_hash_table_lookup (
+			new_available_plugins_id_hash, go_plugin_get_id (plugin));
+		if (found_plugin == NULL ||
+		    strcmp (go_plugin_get_dir_name (found_plugin),
+		            go_plugin_get_dir_name (plugin)) != 0) {
+			GO_SLIST_PREPEND (removed_plugins, plugin);
+		}
+	);
+	g_hash_table_destroy (new_available_plugins_id_hash);
+	go_plugin_db_deactivate_plugin_list (removed_plugins, &error);
+	if (error != NULL) {
+		GO_SLIST_PREPEND (error_list, error_info_new_str_with_details (
+			_("Errors while deactivating plugins that are no longer on disk."), error));
+	}
+	GO_SLIST_FOREACH (removed_plugins, GOPlugin, plugin,
+		if (go_plugin_is_active (plugin)) {
+			GO_SLIST_PREPEND (still_active_ids, (char *) go_plugin_get_id (plugin));
+		} else {
+			GO_SLIST_REMOVE (available_plugins, plugin);
+			g_hash_table_remove (available_plugins_id_hash, go_plugin_get_id (plugin));
+			g_object_unref (plugin);
+		}
+	);
+	g_slist_free (removed_plugins);
+	if (still_active_ids != NULL) {
+		GString *s;
+
+		s = g_string_new (still_active_ids->data);
+		GO_SLIST_FOREACH (still_active_ids->next, const char, id,
+			g_string_append (s, ", ");
+			g_string_append (s, id);
+		);
+		GO_SLIST_PREPEND (error_list, error_info_new_printf (
+			_("The following plugins are no longer on disk but are still active:\n"
+			  "%s.\nYou should restart this program now."), s->str));
+		g_string_free (s, TRUE);
+		go_slist_free_custom (still_active_ids, g_free);
+	}
+
+	/* Find previously not available plugins */
+	GO_SLIST_FOREACH (new_available_plugins, GOPlugin, plugin,
+		GOPlugin *old_plugin;
+
+		old_plugin = g_hash_table_lookup (
+			available_plugins_id_hash, go_plugin_get_id (plugin));
+		if (old_plugin == NULL) {
+			GO_SLIST_PREPEND (added_plugins, plugin);
+			g_object_ref (plugin);
+		}
+	);
+	go_slist_free_custom (new_available_plugins, g_object_unref);
+	if (ret_new_plugins != NULL) {
+		*ret_new_plugins = g_slist_copy (added_plugins);
+	}
+	GO_SLIST_FOREACH (added_plugins, GOPlugin, plugin,
+		g_hash_table_insert (
+			available_plugins_id_hash, (char *) go_plugin_get_id (plugin), plugin);
+	);
+	GO_SLIST_CONCAT (available_plugins, added_plugins);
+
+	/* handle errors */
+	if (error_list != NULL) {
+		*ret_error = error_info_new_from_error_list (g_slist_reverse (error_list));
+	}
+}
+
+static void
+ghf_collect_new_plugins (gpointer ignored,
+			 PluginFileState *s, GSList **plugin_list)
+{
+	if (s->age == PLUGIN_NEW) {
+		GOPlugin *plugin = go_plugins_get_plugin_by_id (s->plugin_id);
+		if (plugin != NULL && !plugin->require_explicit_enabling)
+			GO_SLIST_PREPEND (*plugin_list, plugin);
+	}
+}
+
+static void
+go_plugins_set_dirs (GSList *plugin_dirs)
+{
+	if (go_plugin_dirs != plugin_dirs) {
+		g_slist_foreach (go_plugin_dirs, (GFunc) g_free, NULL);
+		g_slist_free (go_plugin_dirs);
+		go_plugin_dirs = plugin_dirs;
+	}
+}
+
+/**
+ * go_plugins_init:
+ * @context     : #GOCmdContext used to report errors
+ *
+ * Initializes the plugin subsystem. Don't call this function more than
+ * once.
+ */
+void
+go_plugins_init (GOCmdContext *context,
+		 GSList const *known_states,
+		 GSList const *active_plugins,
+		 GSList *plugin_dirs,
+		 gboolean activate_new_plugins,
+		 GType  default_loader_type)
+{
+	GSList *error_list = NULL;
+	ErrorInfo *error;
+	GSList *plugin_list;
+
+	plugin_dirs = g_slist_append (plugin_dirs, go_plugins_get_plugin_dir ());
+
+	go_default_loader_type = default_loader_type;
+	go_plugins_set_dirs (plugin_dirs);
+
+	loader_services = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+	/* initialize hash table with information about known plugin.xml files */
+	plugin_file_state_dir_hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, plugin_file_state_free);
+	GO_SLIST_FOREACH (known_states, char, state_str,
+		PluginFileState *state;
+
+		state = plugin_file_state_from_string (state_str);
+		if (state != NULL)
+			g_hash_table_insert (plugin_file_state_dir_hash, state->dir_name, state);
+	);
+	plugin_file_state_hash_changed = FALSE;
+
+	/* collect information about the available plugins */
+	available_plugins = go_plugin_list_read_for_all_dirs (&error);
+	available_plugins_id_hash = g_hash_table_new (g_str_hash, g_str_equal);
+	GO_SLIST_FOREACH (available_plugins, GOPlugin, plugin,
+		g_hash_table_insert (
+			available_plugins_id_hash,
+			(gpointer) go_plugin_get_id (plugin), plugin);
+	);
+	if (error != NULL) {
+		GO_SLIST_PREPEND (error_list, error_info_new_str_with_details (
+			_("Errors while reading info about available plugins."), error));
+	}
+
+	/* get descriptors for all previously active plugins */
+	plugin_list = NULL;
+	GO_SLIST_FOREACH (active_plugins, char, plugin_id,
+		GOPlugin *plugin = go_plugins_get_plugin_by_id (plugin_id);
+		if (plugin != NULL)
+			GO_SLIST_PREPEND (plugin_list, plugin);
+	);
+
+	/* get descriptors for new plugins */
+	if (activate_new_plugins)
+		g_hash_table_foreach (
+			plugin_file_state_dir_hash,
+			(GHFunc) ghf_collect_new_plugins,
+			&plugin_list);
+
+	plugin_list = g_slist_reverse (plugin_list);
+	go_plugin_db_activate_plugin_list (plugin_list, &error);
+	g_slist_free (plugin_list);
+	if (error != NULL) {
+		GO_SLIST_PREPEND (error_list, error_info_new_str_with_details (
+			_("Errors while activating plugins."), error));
+	}
+
+	/* report initialization errors */
+	if (error_list != NULL) {
+		GO_SLIST_REVERSE (error_list);
+		error = error_info_new_str_with_details_list (
+		        _("Errors while initializing plugin system."),
+		        error_list);
+
+		go_cmd_context_error_info (context, error);
+		error_info_free (error);
+	}
+}
+
+static void
+ghf_collect_used_plugin_state_strings (gpointer key, gpointer value, gpointer user_data)
+{
+	PluginFileState *state = value;
+	GSList **strings = user_data;
+
+	if (state->age != PLUGIN_OLD_UNUSED) {
+		GO_SLIST_PREPEND (*strings, plugin_file_state_as_string (state));
+	}
+}
+
+/**
+ * plugins_shutdown:
+ *
+ * Shuts down the plugin subsystem. Call this function only once before
+ * exiting the application. Some plugins may be left active or in broken
+ * state, so calling plugins_init again will NOT work properly.
+ */
+GSList *
+go_plugins_shutdown (void)
+{
+	GSList *used_plugin_state_strings = NULL;
+	ErrorInfo *ignored_error;
+
+	if (plugins_marked_for_deactivation_hash != NULL) {
+		g_hash_table_destroy (plugins_marked_for_deactivation_hash);
+	}
+
+	/* deactivate all plugins */
+	go_plugin_db_deactivate_plugin_list (available_plugins, &ignored_error);
+	error_info_free (ignored_error);
+
+	/* update information stored in gconf database
+	 * about known plugin.xml files and destroy hash table */
+	g_hash_table_foreach (
+		plugin_file_state_dir_hash,
+		ghf_collect_used_plugin_state_strings,
+		&used_plugin_state_strings);
+	if (!plugin_file_state_hash_changed &&
+	    g_hash_table_size (plugin_file_state_dir_hash) == g_slist_length (used_plugin_state_strings)) {
+		go_slist_free_custom (used_plugin_state_strings, g_free);
+		used_plugin_state_strings = NULL;
+	}
+
+	g_hash_table_destroy (plugin_file_state_dir_hash);
+	g_hash_table_destroy (loader_services);
+	g_hash_table_destroy (available_plugins_id_hash);
+	go_slist_free_custom (available_plugins, g_object_unref);
+
+	return used_plugin_state_strings;
+}
+
+char *
+go_plugins_get_plugin_dir (void)
+{
+	return g_build_filename (go_sys_lib_dir (), "plugins", NULL);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-plugin.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,67 @@
+#ifndef GO_PLUGIN_H
+#define GO_PLUGIN_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/*
+ * Use "#define PLUGIN_DEBUG x" to enable some plugin related debugging
+ * messages.
+#undef PLUGIN_DEBUG
+ * Define PLUGIN_ALWAYS_LOAD to disable loading on demand feature
+ */
+
+#define GO_PLUGIN_TYPE	(go_plugin_get_type ())
+#define GO_PLUGIN(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_PLUGIN_TYPE, GOPlugin))
+#define IS_GO_PLUGIN(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_PLUGIN_TYPE))
+
+GType	go_plugin_get_type (void);
+
+void         go_plugin_activate (GOPlugin *plugin, ErrorInfo **ret_error);
+void         go_plugin_deactivate (GOPlugin *plugin, ErrorInfo **ret_error);
+gboolean     go_plugin_is_active (GOPlugin *plugin);
+gboolean     go_plugin_can_deactivate (GOPlugin *plugin);
+void         go_plugin_load_service (GOPlugin *plugin, GOPluginService *service, ErrorInfo **ret_error);
+void         go_plugin_unload_service (GOPlugin *plugin, GOPluginService *service, ErrorInfo **ret_error);
+gboolean     go_plugin_is_loaded (GOPlugin *plugin);
+void         go_plugin_use_ref (GOPlugin *plugin);
+void         go_plugin_use_unref (GOPlugin *plugin);
+
+GTypeModule *go_plugin_get_type_module	(GOPlugin *plugin);
+char const  *go_plugin_get_dir_name	(GOPlugin *plugin);
+char const  *go_plugin_get_id		(GOPlugin *plugin);
+char const  *go_plugin_get_name		(GOPlugin *plugin);
+char const  *go_plugin_get_description	(GOPlugin *plugin);
+char const  *go_plugin_get_textdomain	(GOPlugin *plugin);
+GSList      *go_plugin_get_services	(GOPlugin *plugin);
+GSList      *go_plugin_get_dependencies_ids (GOPlugin *plugin);
+
+/*
+ *
+ */
+void	go_plugins_init	    (GOCmdContext *context,
+			     GSList const *known_states,
+			     GSList const *active_plugins,
+			     GSList *plugin_dirs,
+			     gboolean activate_new_plugins,
+			     GType  default_loader_type);
+GSList *go_plugins_shutdown (void);
+
+void	  go_plugins_register_loader (const gchar *id_str, GOPluginService *service);
+void	  go_plugins_unregister_loader (const gchar *id_str);
+GOPlugin *go_plugins_get_plugin_by_id (const gchar *plugin_id);
+GSList	 *go_plugins_get_available_plugins (void);
+GSList	 *go_plugins_get_active_plugins (void);
+void	  go_plugins_rescan (ErrorInfo **ret_error, GSList **ret_new_plugins);
+char 	 *go_plugins_get_plugin_dir (void);
+
+void	  go_plugin_db_mark_plugin_for_deactivation (GOPlugin *plugin, gboolean mark);
+gboolean  go_plugin_db_is_plugin_marked_for_deactivation (GOPlugin *plugin);
+void	  go_plugin_db_activate_plugin_list   (GSList *plugins, ErrorInfo **ret_error);
+void	  go_plugin_db_deactivate_plugin_list (GSList *plugins, ErrorInfo **ret_error);
+
+G_END_DECLS
+
+#endif /* GO_PLUGIN_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,52 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-service-impl.h :  Implementation details for the abstract GOService
+ *			 interface
+ *
+ * Copyright (C) 2001-2004 Zbigniew Chyla (cyba at gnome.pl)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GO_SERVICE_IMPL_H
+#define GO_SERVICE_IMPL_H
+
+#include <goffice/app/go-service.h>
+#include <glib-object.h>
+#include <libxml/tree.h>
+
+G_BEGIN_DECLS
+
+struct _GOService {
+	GObject base;
+	GOPlugin *plugin;
+};
+typedef struct {
+	GObjectClass base;
+	GOErrorStack *(*read_details) (GOService *service, xmlNode *tree);
+	GOErrorStack *(*activate)     (GOService *service);
+	GOErrorStack *(*deactivate)   (GOService *service);
+	char 	     *(*description)  (GOService *service);
+} GOServiceClass;
+
+struct _GOServiceSimple {
+	GOService	base;
+};
+typedef GOServiceClass GOServiceSimpleClass;
+
+G_END_DECLS
+
+#endif /* GO_GRAPH_ITEM_IMPL_H */
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2 @@
+#include <goffice/goffice-config.h>
+#include "go-service.h"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/go-service.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-service.h : A GOffice plugin
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_SERVICE_H
+#define GO_SERVICE_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_SERVICE_TYPE         (go_service_get_type ())
+#define GO_SERVICE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_SERVICE_TYPE, GOService))
+#define IS_GO_SERVICE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_SERVICE_TYPE))
+
+GType     go_service_get_type   (void);
+GOPlugin *go_service_get_plugin (GOService const *service);
+
+#define GO_SERVICE_SIMPLE_TYPE	(go_service_simple_get_type ())
+#define GO_SERVICE_SIMPLE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_SERVICE_SIMPLE_TYPE, GOServiceSimple))
+#define IS_GO_SERVICE_SIMPLE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_SERVICE_SIMPLE_TYPE))
+typedef struct _GOServiceSimple GOServiceSimple;
+GType go_service_simple_get_type (void);
+
+G_END_DECLS
+
+#endif /* GO_SERVICE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/goffice-app.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/goffice-app.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/goffice-app.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,62 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice-app.h: 
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOFFICE_APP_H
+#define GOFFICE_APP_H
+
+#include <glib/gmacros.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GOApp		GOApp;
+typedef struct _GODoc		GODoc;
+typedef struct _GODocControl	GODocControl;
+typedef struct _GOCmdContext	GOCmdContext;
+
+typedef struct _GOPlugin	GOPlugin;
+typedef struct _GOPluginService	GOPluginService;
+typedef struct _GOPluginLoader	GOPluginLoader;
+
+/* temporary */
+typedef struct _ErrorInfo		ErrorInfo;
+typedef struct _GOFileSaver 		GOFileSaver;
+typedef struct _GOFileOpener		GOFileOpener;
+typedef struct _IOContext		IOContext;
+
+/*
+ * File probe level tells file opener (its probe method to be exact), how
+ * hard it should try to recognize the type of the file. File openers may
+ * ignore this or support only some probe levels, but if specifies
+ * "reccomened" behaviour.
+ * Before opening any file we detect its type by calling probe for
+ * every registered file opener (in order of priority) and passing
+ * FILE_PROBE_FILE_NAME as probe level. If none of them recogizes the file,
+ * we increase probe level and try again...
+ */
+typedef enum {
+	FILE_PROBE_FILE_NAME,	/* Test only file name, don't read file contents */
+	FILE_PROBE_CONTENT,	/* Read the whole file if it's necessary */
+	FILE_PROBE_LAST
+} FileProbeLevel;
+
+G_END_DECLS
+
+#endif /* GOFFICE_GRAPH_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context-priv.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context-priv.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context-priv.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,69 @@
+#ifndef GO_IO_CONTEXT_PRIV_H
+#define GO_IO_CONTEXT_PRIV_H
+
+#include <goffice/app/io-context.h>
+#include <goffice/app/error-info.h>
+#include <goffice/app/go-cmd-context-impl.h>
+
+G_BEGIN_DECLS
+
+#define IO_CONTEXT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IO_CONTEXT, IOContextClass))
+#define IS_IO_CONTEXT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IO_CONTEXT))
+
+typedef enum {
+	GO_PROGRESS_HELPER_NONE,
+	GO_PROGRESS_HELPER_COUNT,
+	GO_PROGRESS_HELPER_VALUE,
+	GO_PROGRESS_HELPER_LAST
+} GOProgressHelperType;
+
+typedef struct {
+	GOProgressHelperType helper_type;
+	union {
+		struct {
+			gchar *start;
+			gint size;
+		} mem;
+		struct {
+			gint total, last, current;
+			gint step;
+		} count;
+		struct {
+			gint total, last;
+			gint step;
+		} value;
+		struct {
+			gint n_elements, last, current;
+			gint step;
+		} workbook;
+	} v;
+} GOProgressHelper;
+
+typedef struct {
+	gfloat min, max;
+} ProgressRange;
+
+struct _IOContext {
+	GObject base;
+
+	GOCmdContext	*impl;
+	ErrorInfo	*info;
+	gboolean	 error_occurred;
+	gboolean	 warning_occurred;
+
+	GList	*progress_ranges;
+	gfloat	 progress_min, progress_max;
+	gdouble  last_progress;
+	gdouble  last_time;
+	GOProgressHelper helper;
+};
+
+struct _IOContextClass {
+	GObjectClass base;
+	void  (*set_num_files)   (IOContext *ioc, guint count);
+	void  (*processing_file) (IOContext *ioc, char const *name);
+};
+
+G_END_DECLS
+
+#endif /* GO_IO_CONTEXT_PRIV_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,447 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * io-context.c : Place holder for an io error context.
+ *   It is intended to become a place to handle errors
+ *   as well as storing non-fatal warnings.
+ *
+ * Authors:
+ *	Jody Goldberg <jody at gnome.org>
+ *	Zbigniew Chyla <cyba at gnome.pl>
+ *
+ * (C) 2000-2005 Jody Goldberg
+ */
+#include <goffice/goffice-config.h>
+#include "io-context-priv.h"
+#include "go-cmd-context.h"
+#include <goffice/utils/go-file.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gtk/gtkmain.h>
+
+#define PROGRESS_UPDATE_STEP        0.01
+#define PROGRESS_UPDATE_STEP_END    (1.0 / 400)
+#define PROGRESS_UPDATE_PERIOD_SEC  0.20
+
+#define IOC_CLASS(ioc) IO_CONTEXT_CLASS(G_OBJECT_GET_CLASS(ioc))
+
+static void
+io_context_init (IOContext *ioc)
+{
+	ioc->impl = NULL;
+	ioc->info = NULL;
+	ioc->error_occurred = FALSE;
+	ioc->warning_occurred = FALSE;
+
+	ioc->progress_ranges = NULL;
+	ioc->progress_min = 0.0;
+	ioc->progress_max = 1.0;
+	ioc->last_progress = -1.0;
+	ioc->last_time = 0.0;
+	ioc->helper.helper_type = GO_PROGRESS_HELPER_NONE;
+}
+
+static void
+ioc_finalize (GObject *obj)
+{
+	IOContext *ioc;
+
+	g_return_if_fail (IS_IO_CONTEXT (obj));
+
+	ioc = IO_CONTEXT (obj);
+	error_info_free (ioc->info);
+	if (ioc->impl) {
+		go_cmd_context_progress_set (ioc->impl, 0.0);
+		go_cmd_context_progress_message_set (ioc->impl, NULL);
+		g_object_unref (G_OBJECT (ioc->impl));
+	}
+
+	G_OBJECT_CLASS (g_type_class_peek (G_TYPE_OBJECT))->finalize (obj);
+}
+
+static char *
+ioc_get_password (GOCmdContext *cc, char const *filename)
+{
+	IOContext *ioc = (IOContext *)cc;
+	return go_cmd_context_get_password (ioc->impl, filename);
+}
+
+static void
+ioc_set_sensitive (GOCmdContext *cc, gboolean sensitive)
+{
+	(void)cc; (void)sensitive;
+}
+
+static void
+ioc_error_error (GOCmdContext *cc, GError *err)
+{
+	gnumeric_io_error_string (IO_CONTEXT (cc), err->message);
+}
+
+static void
+ioc_error_error_info (G_GNUC_UNUSED GOCmdContext *ctxt,
+		      ErrorInfo *error)
+{
+	/* TODO what goes here */
+	error_info_print (error);
+}
+
+void
+gnumeric_io_error_string (IOContext *context, const gchar *str)
+{
+	ErrorInfo *error;
+
+	g_return_if_fail (context != NULL);
+	g_return_if_fail (str != NULL);
+
+	error = error_info_new_str (str);
+	gnumeric_io_error_info_set (context, error);
+}
+
+static void
+io_context_gnm_cmd_context_init (GOCmdContextClass *cc_class)
+{
+	cc_class->get_password	   = ioc_get_password;
+	cc_class->set_sensitive	   = ioc_set_sensitive;
+	cc_class->error.error      = ioc_error_error;
+	cc_class->error.error_info = ioc_error_error_info;
+}
+static void
+io_context_class_init (GObjectClass *klass)
+{
+	klass->finalize = ioc_finalize;
+}
+
+GSF_CLASS_FULL (IOContext, io_context,
+		NULL, NULL, io_context_class_init, NULL,
+		io_context_init, G_TYPE_OBJECT, 0,
+		GSF_INTERFACE (io_context_gnm_cmd_context_init, GO_CMD_CONTEXT_TYPE))
+
+IOContext *
+gnumeric_io_context_new (GOCmdContext *cc)
+{
+	IOContext *ioc;
+
+	g_return_val_if_fail (IS_GO_CMD_CONTEXT (cc), NULL);
+
+	ioc = g_object_new (TYPE_IO_CONTEXT, NULL);
+	/* The cc is optional for subclasses, but mandatory in this class. */
+	ioc->impl = cc;
+	g_object_ref (G_OBJECT (ioc->impl));
+
+	return ioc;
+}
+
+void
+gnumeric_io_error_unknown (IOContext *context)
+{
+	g_return_if_fail (context != NULL);
+
+	context->error_occurred = TRUE;
+}
+
+void
+gnumeric_io_error_info_set (IOContext *context, ErrorInfo *error)
+{
+	g_return_if_fail (context != NULL);
+	g_return_if_fail (error != NULL);
+
+	g_return_if_fail (context->info == NULL);
+
+	context->info = error;
+	context->error_occurred = TRUE;
+}
+
+void
+gnumeric_io_error_push (IOContext *context, ErrorInfo *error)
+{
+	g_return_if_fail (context != NULL);
+	g_return_if_fail (error != NULL);
+
+	error_info_add_details (error, context->info);
+	context->info = error;
+}
+
+void
+gnumeric_io_error_display (IOContext *context)
+{
+	GOCmdContext *cc;
+
+	g_return_if_fail (context != NULL);
+
+	if (context->info != NULL) {
+		if (context->impl)
+			cc = context->impl;
+		else
+			cc = GO_CMD_CONTEXT (context);
+		go_cmd_context_error_info (cc, context->info);
+	}
+}
+
+/* TODO: Rename to gnumeric_io_info_clear */
+void
+gnumeric_io_error_clear (IOContext *context)
+{
+	g_return_if_fail (context != NULL);
+
+	context->error_occurred = FALSE;
+	context->warning_occurred = FALSE;
+	error_info_free (context->info);
+	context->info = NULL;
+}
+
+gboolean
+gnumeric_io_error_occurred (IOContext *context)
+{
+	return context->error_occurred;
+}
+
+gboolean
+gnumeric_io_warning_occurred (IOContext *context)
+{
+	return context->warning_occurred;
+}
+
+void
+io_progress_update (IOContext *ioc, gdouble f)
+{
+	gboolean at_end;
+
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+
+	if (ioc->progress_ranges != NULL) {
+		f = f * (ioc->progress_max - ioc->progress_min)
+		    + ioc->progress_min;
+	}
+
+	at_end = (f - ioc->last_progress > PROGRESS_UPDATE_STEP_END &&
+		  f + PROGRESS_UPDATE_STEP > 1);
+	if (at_end || f - ioc->last_progress >= PROGRESS_UPDATE_STEP) {
+		GTimeVal tv;
+		double t;
+
+		(void) g_get_current_time (&tv);
+		t = tv.tv_sec + tv.tv_usec / 1000000.0;
+		if (at_end || t - ioc->last_time >= PROGRESS_UPDATE_PERIOD_SEC) {
+			GOCmdContext *cc;
+
+			if (ioc->impl)
+				cc = ioc->impl;
+			else
+				cc = GO_CMD_CONTEXT (ioc);
+			go_cmd_context_progress_set (cc, f);
+			ioc->last_time = t;
+			ioc->last_progress = f;
+		}
+	}
+
+	/* FIXME : abstract this into the workbook control */
+	while (gtk_events_pending ())
+		gtk_main_iteration_do (FALSE);
+}
+
+void
+io_progress_message (IOContext *ioc, const gchar *msg)
+{
+	GOCmdContext *cc;
+
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+
+	if (ioc->impl)
+		cc = ioc->impl;
+	else
+		cc = GO_CMD_CONTEXT (ioc);
+	go_cmd_context_progress_message_set (cc, msg);
+}
+
+void
+io_progress_range_push (IOContext *ioc, gdouble min, gdouble max)
+{
+	ProgressRange *r;
+	gdouble new_min, new_max;
+
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+
+	r = g_new (ProgressRange, 1);
+	r->min = min;
+	r->max = max;
+	ioc->progress_ranges = g_list_append (ioc->progress_ranges, r);
+
+	new_min = min / (ioc->progress_max - ioc->progress_min)
+	          + ioc->progress_min;
+	new_max = max / (ioc->progress_max - ioc->progress_min)
+	          + ioc->progress_min;
+	ioc->progress_min = new_min;
+	ioc->progress_max = new_max;
+}
+
+void
+io_progress_range_pop (IOContext *ioc)
+{
+	GList *l;
+
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+	g_return_if_fail (ioc->progress_ranges != NULL);
+
+	l = g_list_last (ioc->progress_ranges);
+	ioc->progress_ranges= g_list_remove_link (ioc->progress_ranges, l);
+	g_free (l->data);
+	g_list_free_1 (l);
+
+	ioc->progress_min = 0.0;
+	ioc->progress_max = 1.0;
+	for (l = ioc->progress_ranges; l != NULL; l = l->next) {
+		ProgressRange *r = l->data;
+		gdouble new_min, new_max;
+
+		new_min = r->min / (ioc->progress_max - ioc->progress_min)
+		          + ioc->progress_min;
+		new_max = r->max / (ioc->progress_max - ioc->progress_min)
+		          + ioc->progress_min;
+		ioc->progress_min = new_min;
+		ioc->progress_max = new_max;
+	}
+}
+
+void
+value_io_progress_set (IOContext *ioc, gint total, gint step)
+{
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+	g_return_if_fail (total >= 0);
+
+	ioc->helper.helper_type = GO_PROGRESS_HELPER_VALUE;
+	ioc->helper.v.value.total = MAX (total, 1);
+	ioc->helper.v.value.last = -step;
+	ioc->helper.v.value.step = step;
+}
+
+void
+value_io_progress_update (IOContext *ioc, gint value)
+{
+	gdouble complete;
+	gint step, total;
+
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+	g_return_if_fail (ioc->helper.helper_type == GO_PROGRESS_HELPER_VALUE);
+
+	total = ioc->helper.v.value.total;
+	step = ioc->helper.v.value.step;
+
+	if (value - ioc->helper.v.value.last < step &&
+	    value + step < total) {
+		return;
+	}
+	ioc->helper.v.value.last = value;
+
+	complete = (gdouble)value / total;
+	io_progress_update (ioc, complete);
+}
+
+void
+count_io_progress_set (IOContext *ioc, gint total, gint step)
+{
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+	g_return_if_fail (total >= 0);
+
+	ioc->helper.helper_type = GO_PROGRESS_HELPER_COUNT;
+	ioc->helper.v.count.total = MAX (total, 1);
+	ioc->helper.v.count.last = -step;
+	ioc->helper.v.count.current = 0;
+	ioc->helper.v.count.step = step;
+}
+
+void
+count_io_progress_update (IOContext *ioc, gint inc)
+{
+	gdouble complete;
+	gint current, step, total;
+
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+	g_return_if_fail (ioc->helper.helper_type == GO_PROGRESS_HELPER_COUNT);
+
+	current = (ioc->helper.v.count.current += inc);
+	step = ioc->helper.v.count.step;
+	total = ioc->helper.v.count.total;
+
+	if (current - ioc->helper.v.count.last < step && current + step < total) {
+		return;
+	}
+	ioc->helper.v.count.last = current;
+
+	complete = (gdouble)current / total;
+	io_progress_update (ioc, complete);
+}
+
+void
+io_progress_unset (IOContext *ioc)
+{
+	g_return_if_fail (IS_IO_CONTEXT (ioc));
+
+	ioc->helper.helper_type = GO_PROGRESS_HELPER_NONE;
+}
+
+void
+gnm_io_context_set_num_files (IOContext *ioc, guint count)
+{
+	IOContextClass *klass = IOC_CLASS(ioc);
+	g_return_if_fail (klass != NULL);
+	if (klass->set_num_files != NULL)
+		klass->set_num_files (ioc, count);
+}
+
+/**
+ * gnm_io_context_processing_file :
+ * @ioc : #IOContext
+ * @uri : An escaped uri (eg foo%20bar)
+ **/
+void
+gnm_io_context_processing_file (IOContext *ioc, char const *uri)
+{
+	char *basename;
+	IOContextClass *klass = IOC_CLASS(ioc);
+
+	g_return_if_fail (klass != NULL);
+
+	basename = go_basename_from_uri (uri); /* unescape the uri */
+	if (basename != NULL && klass->processing_file != NULL)
+		klass->processing_file (ioc, basename);
+	g_free (basename);
+}
+
+void
+gnm_io_warning (G_GNUC_UNUSED IOContext *context,
+		char const *fmt, ...)
+{
+	va_list args;
+
+	va_start (args, fmt);
+	gnm_io_warning_varargs (context, fmt, args);
+	va_end (args);
+}
+
+void
+gnm_io_warning_varargs (IOContext *context, char const *fmt, va_list args)
+{
+	context->info = error_info_new_vprintf (GO_WARNING, fmt, args);
+	context->warning_occurred = TRUE;
+}
+
+void
+gnm_io_warning_unknown_font (IOContext *context,
+			     G_GNUC_UNUSED char const *font_name)
+{
+	g_return_if_fail (IS_IO_CONTEXT (context));
+}
+
+void
+gnm_io_warning_unknown_function	(IOContext *context,
+				 G_GNUC_UNUSED char const *funct_name)
+{
+	g_return_if_fail (IS_IO_CONTEXT (context));
+}
+
+void
+gnm_io_warning_unsupported_feature (IOContext *context, char const *feature)
+{
+	g_return_if_fail (IS_IO_CONTEXT (context));
+	g_warning ("%s : are not supported yet", feature);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/io-context.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,53 @@
+#ifndef GO_IO_CONTEXT_H
+#define GO_IO_CONTEXT_H
+
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+#include <stdarg.h>
+
+G_BEGIN_DECLS
+
+typedef struct _IOContextClass IOContextClass;
+
+#define TYPE_IO_CONTEXT    (io_context_get_type ())
+#define IO_CONTEXT(obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IO_CONTEXT, IOContext))
+#define IS_IO_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IO_CONTEXT))
+
+GType      io_context_get_type (void);
+IOContext *gnumeric_io_context_new        (GOCmdContext *cc);
+
+void       gnumeric_io_error_unknown      (IOContext *ioc);
+
+void       gnumeric_io_error_info_set     (IOContext *ioc, ErrorInfo *error);
+void       gnumeric_io_error_string       (IOContext *ioc, const gchar *str);
+void       gnumeric_io_error_push         (IOContext *ioc, ErrorInfo *error);
+void       gnumeric_io_error_clear        (IOContext *ioc);
+void       gnumeric_io_error_display      (IOContext *ioc);
+
+gboolean   gnumeric_io_error_occurred     (IOContext *ioc);
+gboolean   gnumeric_io_warning_occurred   (IOContext *ioc);
+
+void       io_progress_message      (IOContext *io_context, const gchar *msg);
+void       io_progress_update       (IOContext *io_context, gdouble f);
+void       io_progress_range_push   (IOContext *io_context, gdouble min, gdouble max);
+void       io_progress_range_pop    (IOContext *io_context);
+
+void       count_io_progress_set    (IOContext *io_context, gint total, gint step);
+void       count_io_progress_update (IOContext *io_context, gint inc);
+
+void       value_io_progress_set    (IOContext *io_context, gint total, gint step);
+void       value_io_progress_update (IOContext *io_context, gint value);
+
+void       io_progress_unset      (IOContext *io_context);
+
+void gnm_io_context_set_num_files	(IOContext *ioc, guint count);
+void gnm_io_context_processing_file	(IOContext *ioc, char const *uri);
+void gnm_io_warning			(IOContext *ioc, char const *fmt, ...) G_GNUC_PRINTF (2, 3);
+void gnm_io_warning_varargs		(IOContext *ioc, char const *fmt, va_list args);
+void gnm_io_warning_unknown_font	(IOContext *ioc, char const *font_name);
+void gnm_io_warning_unknown_function	(IOContext *ioc, char const *funct_name);
+void gnm_io_warning_unsupported_feature	(IOContext *ioc, char const *feature);
+
+G_END_DECLS
+
+#endif /* GO_IO_CONTEXT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/module-plugin-defs.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/module-plugin-defs.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/app/module-plugin-defs.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,39 @@
+#ifndef GOFFICE_MODULE_PLUGIN_DEFS_H
+#define GOFFICE_MODULE_PLUGIN_DEFS_H
+
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/goffice-app.h>
+#include <gmodule.h>
+
+G_BEGIN_DECLS
+
+void go_plugin_init	(GOPlugin *p, GOCmdContext *cc); /* optional, called after dlopen */
+void go_plugin_shutdown	(GOPlugin *p, GOCmdContext *cc); /* optional, called before close */
+
+typedef struct {
+	char const * const key;		/* object being versioned */
+	char const * const version;	/* version id (strict equality is required) */
+} GOPluginModuleDepend;
+typedef struct {
+	guint32 const magic_number;
+	guint32 const num_depends;
+} GOPluginModuleHeader;
+
+/* Cheesy api versioning
+ * bump this when external api changes.  eventually we will just push this out
+ * into the module's link dependencies */
+#define GOFFICE_API_VERSION		"0.0"
+
+#define GOFFICE_MODULE_PLUGIN_MAGIC_NUMBER             0x476e756d
+
+/* convenience header for goffice plugins */
+#define GOFFICE_PLUGIN_MODULE_HEADER 					\
+G_MODULE_EXPORT GOPluginModuleDepend const go_plugin_depends [] = {	\
+    { "goffice", GOFFICE_API_VERSION }					\
+};	\
+G_MODULE_EXPORT GOPluginModuleHeader const go_plugin_header =  		\
+	{ GOFFICE_MODULE_PLUGIN_MAGIC_NUMBER, G_N_ELEMENTS (go_plugin_depends) }
+
+G_END_DECLS
+
+#endif /* GOFFICE_MODULE_PLUGIN_DEFS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1 @@
+SUBDIRS = pcre foocanvas

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,516 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = pcre foocanvas
+subdir = goffice/cut-n-paste
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/cut-n-paste/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	else \
+	  include_option=--include; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-recursive ctags \
+	ctags-recursive distclean distclean-generic distclean-libtool \
+	distclean-recursive distclean-tags distdir dvi dvi-am \
+	dvi-recursive info info-am info-recursive install install-am \
+	install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
+	install-info install-info-am install-info-recursive install-man \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,67 @@
+AM_CPPFLAGS = \
+	-I$(top_srcdir)/lib/goffice-0.0.4 				\
+	-I$(top_builddir)/lib/goffice-0.0.4				\
+	$(WARN_CFLAGS) 					\
+	$(GOFFICE_DEPS_CFLAGS)				\
+        -DFOOCANVASLIBDIR=\""$(libdir)"\" 		\
+        -DFOOCANVASDATADIR=\""$(datadir)"\" 		\
+        -DFOOCANVASPIXMAPDIR=\""$(datadir)/pixmaps"\"	\
+        -DFOOCANVASBINDIR=\""$(bindir)"\" 		\
+        -DFOOCANVASLOCALSTATEDIR=\""$(localstatedir)"\"	\
+        -DFOOCANVASLOCALEDIR=\""$(gnomelocaledir)"\" 	\
+	-DG_LOG_DOMAIN=\"Foocanvas\"			\
+	-DVERSION=\"$(VERSION)\"
+
+noinst_LTLIBRARIES = libfoocanvas.la
+
+libfoocanvas_la_LIBADD = \
+	$(RENDER_LIBS)				\
+	$(LIBFOOCANVAS_LIBS)
+
+libfoocanvasincludedir = $(includedir)/libgoffice-1/goffice/cut-n-paste/foocanvas/
+
+libfoocanvasinclude_HEADERS =			\
+	foo-canvas-line.h			\
+	foo-canvas-pixbuf.h			\
+	foo-canvas-polygon.h			\
+	foo-canvas-rect-ellipse.h		\
+	foo-canvas-text.h			\
+	foo-canvas-util.h			\
+	foo-canvas-widget.h			\
+	foo-canvas.h				\
+	libfoocanvas.h
+
+libfoocanvas_la_SOURCES =			\
+	$(libfoocanvasinclude_HEADERS)		\
+	foo-canvas-marshal.list			\
+	foo-canvas-i18n.h			\
+	foo-canvas-line.c			\
+	foo-canvas-pixbuf.c			\
+	foo-canvas-polygon.c			\
+	foo-canvas-rect-ellipse.c		\
+	foo-canvas-text.c			\
+	foo-canvas-util.c			\
+	foo-canvas-widget.c			\
+	foo-canvas.c				\
+	libfoocanvastypes.c
+
+GENMARSHAL_COMMAND = $(GLIB_GENMARSHAL) --prefix=foo_canvas_marshal
+SUFFIXES = .list
+
+.list.h:
+	$(GENMARSHAL_COMMAND) --header $< >$@
+
+.list.c:
+	(echo '/* This file has been automatically generated.  Do not edit. */' && \
+	echo '#include <goffice/goffice-config.h>' && \
+	echo '#include "$*.h"' && \
+	$(GENMARSHAL_COMMAND) --body $< ) >$@
+
+# A hint is needed to build the header first:
+BUILT_SOURCES = foo-canvas-marshal.h
+
+# Another hint, see bugs #172211 and #172212:
+non-intermediate: foo-canvas-marshal.c
+
+CLEANFILES = foo-canvas-marshal.h foo-canvas-marshal.c
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,615 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AM_CPPFLAGS = \
+	-I$(top_srcdir) 				\
+	-I$(top_builddir)				\
+	$(WARN_CFLAGS) 					\
+	$(GOFFICE_CFLAGS)				\
+        -DFOOCANVASLIBDIR=\""$(libdir)"\" 		\
+        -DFOOCANVASDATADIR=\""$(datadir)"\" 		\
+        -DFOOCANVASPIXMAPDIR=\""$(datadir)/pixmaps"\"	\
+        -DFOOCANVASBINDIR=\""$(bindir)"\" 		\
+        -DFOOCANVASLOCALSTATEDIR=\""$(localstatedir)"\"	\
+        -DFOOCANVASLOCALEDIR=\""$(gnomelocaledir)"\" 	\
+	-DG_LOG_DOMAIN=\"Foocanvas\"			\
+	-DVERSION=\"$(VERSION)\"
+
+
+noinst_LTLIBRARIES = libfoocanvas.la
+
+libfoocanvas_la_LIBADD = \
+	$(RENDER_LIBS)				\
+	$(LIBFOOCANVAS_LIBS)
+
+
+libfoocanvasincludedir = $(includedir)/libgoffice-1/goffice/cut-n-paste/foocanvas/
+
+libfoocanvasinclude_HEADERS = \
+	foo-canvas-line.h			\
+	foo-canvas-pixbuf.h			\
+	foo-canvas-polygon.h			\
+	foo-canvas-rect-ellipse.h		\
+	foo-canvas-text.h			\
+	foo-canvas-util.h			\
+	foo-canvas-widget.h			\
+	foo-canvas.h				\
+	libfoocanvas.h
+
+
+libfoocanvas_la_SOURCES = \
+	$(libfoocanvasinclude_HEADERS)		\
+	foo-canvas-marshal.list			\
+	foo-canvas-i18n.h			\
+	foo-canvas-line.c			\
+	foo-canvas-pixbuf.c			\
+	foo-canvas-polygon.c			\
+	foo-canvas-rect-ellipse.c		\
+	foo-canvas-text.c			\
+	foo-canvas-util.c			\
+	foo-canvas-widget.c			\
+	foo-canvas.c				\
+	libfoocanvastypes.c
+
+
+GENMARSHAL_COMMAND = $(GLIB_GENMARSHAL) --prefix=foo_canvas_marshal
+SUFFIXES = .list
+
+# A hint is needed to build the header first:
+BUILT_SOURCES = foo-canvas-marshal.h
+
+CLEANFILES = foo-canvas-marshal.h foo-canvas-marshal.c
+subdir = goffice/cut-n-paste/foocanvas
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libfoocanvas_la_LDFLAGS =
+libfoocanvas_la_DEPENDENCIES =
+am__objects_1 =
+am_libfoocanvas_la_OBJECTS = $(am__objects_1) foo-canvas-marshal.lo \
+	foo-canvas-line.lo foo-canvas-pixbuf.lo foo-canvas-polygon.lo \
+	foo-canvas-rect-ellipse.lo foo-canvas-text.lo \
+	foo-canvas-util.lo foo-canvas-widget.lo foo-canvas.lo \
+	libfoocanvastypes.lo
+libfoocanvas_la_OBJECTS = $(am_libfoocanvas_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/foo-canvas-line.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas-marshal.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas-pixbuf.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas-polygon.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas-rect-ellipse.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas-text.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas-util.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas-widget.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/foo-canvas.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/libfoocanvastypes.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libfoocanvas_la_SOURCES)
+HEADERS = $(libfoocanvasinclude_HEADERS)
+
+DIST_COMMON = $(libfoocanvasinclude_HEADERS) $(srcdir)/Makefile.in \
+	Makefile.am
+SOURCES = $(libfoocanvas_la_SOURCES)
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .list .c .h .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/cut-n-paste/foocanvas/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libfoocanvas.la: $(libfoocanvas_la_OBJECTS) $(libfoocanvas_la_DEPENDENCIES) 
+	$(LINK)  $(libfoocanvas_la_LDFLAGS) $(libfoocanvas_la_OBJECTS) $(libfoocanvas_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-line.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-marshal.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-pixbuf.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-polygon.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-rect-ellipse.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-text.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-util.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas-widget.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/foo-canvas.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libfoocanvastypes.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libfoocanvasincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libfoocanvasincludeHEADERS: $(libfoocanvasinclude_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libfoocanvasincludedir)
+	@list='$(libfoocanvasinclude_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libfoocanvasincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libfoocanvasincludedir)/$$f"; \
+	  $(libfoocanvasincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libfoocanvasincludedir)/$$f; \
+	done
+
+uninstall-libfoocanvasincludeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libfoocanvasinclude_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libfoocanvasincludedir)/$$f"; \
+	  rm -f $(DESTDIR)$(libfoocanvasincludedir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libfoocanvasincludedir)
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libfoocanvasincludeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libfoocanvasincludeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libfoocanvasincludeHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-libfoocanvasincludeHEADERS
+
+
+.list.h:
+	$(GENMARSHAL_COMMAND) --header $< >$@
+
+.list.c:
+	(echo '/* This file has been automatically generated.  Do not edit. */' && \
+	echo '#include <goffice/goffice-config.h>' && \
+	echo '#include "$*.h"' && \
+	$(GENMARSHAL_COMMAND) --body $< ) >$@
+
+# Another hint, see bugs #172211 and #172212:
+non-intermediate: foo-canvas-marshal.c
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-i18n.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-i18n.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-i18n.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,70 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB. If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+
+/*
+ * Handles all of the internationalization configuration options.
+ * Author: Tom Tromey <tromey at creche.cygnus.com>
+ */
+
+#ifndef __LIBFOO_CANVAS_I18N_H__
+#define __LIBFOO_CANVAS_I18N_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#if !defined(__LIBFOO_CANVAS_I18NP_H__)
+
+#ifdef ENABLE_NLS
+#    include <libintl.h>
+#    ifdef GNOME_EXPLICIT_TRANSLATION_DOMAIN
+#        undef _
+#        define _(String) dgettext (GNOME_EXPLICIT_TRANSLATION_DOMAIN, String)
+#    else
+#        define _(String) gettext (String)
+#    endif
+#    ifdef gettext_noop
+#        define N_(String) gettext_noop (String)
+#    else
+#        define N_(String) (String)
+#    endif
+#else
+/* Stubs that do something close enough.  */
+#    define textdomain(String) (String)
+#    define gettext(String) (String)
+#    define dgettext(Domain,Message) (Message)
+#    define dcgettext(Domain,Message,Type) (Message)
+#    define bindtextdomain(Domain,Directory) (Domain)
+#    define _(String) (String)
+#    define N_(String) (String)
+#endif
+
+#endif
+
+G_END_DECLS
+
+#endif /* __LIBFOO_CANVAS_I18N_H__ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1317 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#undef GTK_DISABLE_DEPRECATED
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+
+/* Line/curve item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#include <math.h>
+#include <string.h>
+#include "libfoocanvas.h"
+
+#define noVERBOSE
+
+#define DEFAULT_SPLINE_STEPS 12		/* this is what Tk uses */
+#define NUM_ARROW_POINTS     6		/* number of points in an arrowhead */
+#define NUM_STATIC_POINTS    256	/* number of static points to use to avoid allocating arrays */
+
+
+#define GROW_BOUNDS(bx1, by1, bx2, by2, x, y) {	\
+	if (x < bx1)				\
+		bx1 = x;			\
+						\
+	if (x > bx2)				\
+		bx2 = x;			\
+						\
+	if (y < by1)				\
+		by1 = y;			\
+						\
+	if (y > by2)				\
+		by2 = y;			\
+}
+
+
+enum {
+	PROP_0,
+	PROP_POINTS,
+	PROP_FILL_COLOR,
+	PROP_FILL_COLOR_GDK,
+	PROP_FILL_COLOR_RGBA,
+	PROP_FILL_STIPPLE,
+	PROP_WIDTH_PIXELS,
+	PROP_WIDTH_UNITS,
+	PROP_CAP_STYLE,
+	PROP_JOIN_STYLE,
+	PROP_LINE_STYLE,
+	PROP_FIRST_ARROWHEAD,
+	PROP_LAST_ARROWHEAD,
+	PROP_SMOOTH,
+	PROP_SPLINE_STEPS,
+	PROP_ARROW_SHAPE_A,
+	PROP_ARROW_SHAPE_B,
+	PROP_ARROW_SHAPE_C
+};
+
+
+static void foo_canvas_line_class_init   (FooCanvasLineClass *class);
+static void foo_canvas_line_init         (FooCanvasLine      *line);
+static void foo_canvas_line_destroy      (GtkObject            *object);
+static void foo_canvas_line_set_property (GObject              *object,
+					    guint                 param_id,
+					    const GValue         *value,
+					    GParamSpec           *pspec);
+static void foo_canvas_line_get_property (GObject              *object,
+					    guint                 param_id,
+					    GValue               *value,
+					    GParamSpec           *pspec);
+
+static void   foo_canvas_line_update      (FooCanvasItem *item,
+					     double i2w_dx, double i2w_dy,
+					     int flags);
+static void   foo_canvas_line_realize     (FooCanvasItem *item);
+static void   foo_canvas_line_unrealize   (FooCanvasItem *item);
+static void   foo_canvas_line_draw        (FooCanvasItem *item, GdkDrawable *drawable,
+					     GdkEventExpose   *event);
+static double foo_canvas_line_point       (FooCanvasItem *item, double x, double y,
+					     int cx, int cy, FooCanvasItem **actual_item);
+static void   foo_canvas_line_translate   (FooCanvasItem *item, double dx, double dy);
+static void   foo_canvas_line_bounds      (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2);
+
+
+static FooCanvasItemClass *parent_class;
+
+
+GtkType
+foo_canvas_line_get_type (void)
+{
+	static GtkType line_type = 0;
+
+	if (!line_type) {
+		/* FIXME: Convert to gobject style.  */
+		static const GtkTypeInfo line_info = {
+			(char *)"FooCanvasLine",
+			sizeof (FooCanvasLine),
+			sizeof (FooCanvasLineClass),
+			(GtkClassInitFunc) foo_canvas_line_class_init,
+			(GtkObjectInitFunc) foo_canvas_line_init,
+			NULL, /* reserved_1 */
+			NULL, /* reserved_2 */
+			(GtkClassInitFunc) NULL
+		};
+
+		line_type = gtk_type_unique (foo_canvas_item_get_type (), &line_info);
+	}
+
+	return line_type;
+}
+
+static void
+foo_canvas_line_class_init (FooCanvasLineClass *class)
+{
+	GObjectClass *gobject_class;
+	GtkObjectClass *object_class;
+	FooCanvasItemClass *item_class;
+
+	gobject_class = (GObjectClass *) class;
+	object_class = (GtkObjectClass *) class;
+	item_class = (FooCanvasItemClass *) class;
+
+	parent_class = gtk_type_class (foo_canvas_item_get_type ());
+
+	gobject_class->set_property = foo_canvas_line_set_property;
+	gobject_class->get_property = foo_canvas_line_get_property;
+
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_POINTS,
+                 g_param_spec_boxed ("points", NULL, NULL,
+				     FOO_TYPE_CANVAS_POINTS,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR,
+                 g_param_spec_string ("fill-color", NULL, NULL,
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_GDK,
+                 g_param_spec_boxed ("fill-color-gdk", NULL, NULL,
+				     GDK_TYPE_COLOR,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_RGBA,
+                 g_param_spec_uint ("fill-color-rgba", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_STIPPLE,
+                 g_param_spec_object ("fill-stipple", NULL, NULL,
+                                      GDK_TYPE_DRAWABLE,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_PIXELS,
+                 g_param_spec_uint ("width-pixels", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_UNITS,
+                 g_param_spec_double ("width-units", NULL, NULL,
+				      0.0, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_CAP_STYLE,
+                 g_param_spec_enum ("cap-style", NULL, NULL,
+                                    GDK_TYPE_CAP_STYLE,
+                                    GDK_CAP_BUTT,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_JOIN_STYLE,
+                 g_param_spec_enum ("join-style", NULL, NULL,
+                                    GDK_TYPE_JOIN_STYLE,
+                                    GDK_JOIN_MITER,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_LINE_STYLE,
+                 g_param_spec_enum ("line-style", NULL, NULL,
+                                    GDK_TYPE_LINE_STYLE,
+                                    GDK_LINE_SOLID,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FIRST_ARROWHEAD,
+                 g_param_spec_boolean ("first-arrowhead", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_LAST_ARROWHEAD,
+                 g_param_spec_boolean ("last-arrowhead", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_SMOOTH,
+                 g_param_spec_boolean ("smooth", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_SPLINE_STEPS,
+                 g_param_spec_uint ("spline-steps", NULL, NULL,
+				    0, G_MAXUINT, DEFAULT_SPLINE_STEPS,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ARROW_SHAPE_A,
+                 g_param_spec_double ("arrow-shape-a", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ARROW_SHAPE_B,
+                 g_param_spec_double ("arrow-shape-b", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ARROW_SHAPE_C,
+                 g_param_spec_double ("arrow-shape-c", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	object_class->destroy = foo_canvas_line_destroy;
+
+	item_class->update = foo_canvas_line_update;
+	item_class->realize = foo_canvas_line_realize;
+	item_class->unrealize = foo_canvas_line_unrealize;
+	item_class->draw = foo_canvas_line_draw;
+	item_class->point = foo_canvas_line_point;
+	item_class->translate = foo_canvas_line_translate;
+	item_class->bounds = foo_canvas_line_bounds;
+}
+
+static void
+foo_canvas_line_init (FooCanvasLine *line)
+{
+	line->width = 0.0;
+	line->cap = GDK_CAP_BUTT;
+	line->join = GDK_JOIN_MITER;
+	line->line_style = GDK_LINE_SOLID;
+	line->shape_a = 0.0;
+	line->shape_b = 0.0;
+	line->shape_c = 0.0;
+	line->spline_steps = DEFAULT_SPLINE_STEPS;
+}
+
+static void
+foo_canvas_line_destroy (GtkObject *object)
+{
+	FooCanvasLine *line;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_LINE (object));
+
+	line = FOO_CANVAS_LINE (object);
+
+	/* remember, destroy can be run multiple times! */
+
+	if (line->coords)
+		g_free (line->coords);
+	line->coords = NULL;
+
+	if (line->first_coords)
+		g_free (line->first_coords);
+	line->first_coords = NULL;
+
+	if (line->last_coords)
+		g_free (line->last_coords);
+	line->last_coords = NULL;
+
+	if (line->stipple)
+		g_object_unref (line->stipple);
+	line->stipple = NULL;
+
+	if (GTK_OBJECT_CLASS (parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
+/* Computes the bounding box of the line, including its arrow points.  Assumes that the number of
+ * points in the line is not zero.
+ */
+static void
+get_bounds (FooCanvasLine *line, double *bx1, double *by1, double *bx2, double *by2)
+{
+	double *coords;
+	double x1, y1, x2, y2;
+	double width;
+	int i;
+
+	if (!line->coords) {
+	    *bx1 = *by1 = *bx2 = *by2 = 0.0;
+	    return;
+	}
+
+	/* Find bounding box of line's points */
+
+	x1 = x2 = line->coords[0];
+	y1 = y2 = line->coords[1];
+
+	for (i = 1, coords = line->coords + 2; i < line->num_points; i++, coords += 2)
+		GROW_BOUNDS (x1, y1, x2, y2, coords[0], coords[1]);
+
+	/* Add possible over-estimate for wide lines */
+
+	if (line->width_pixels)
+		width = line->width / line->item.canvas->pixels_per_unit;
+	else
+		width = line->width;
+
+	x1 -= width;
+	y1 -= width;
+	x2 += width;
+	y2 += width;
+
+	/* For mitered lines, make a second pass through all the points.  Compute the location of
+	 * the two miter vertex points and add them to the bounding box.
+	 */
+
+	if (line->join == GDK_JOIN_MITER)
+		for (i = line->num_points, coords = line->coords; i >= 3; i--, coords += 2) {
+			double mx1, my1, mx2, my2;
+
+			if (foo_canvas_get_miter_points (coords[0], coords[1],
+							   coords[2], coords[3],
+							   coords[4], coords[5],
+							   width,
+							   &mx1, &my1, &mx2, &my2)) {
+				GROW_BOUNDS (x1, y1, x2, y2, mx1, my1);
+				GROW_BOUNDS (x1, y1, x2, y2, mx2, my2);
+			}
+		}
+
+	/* Add the arrow points, if any */
+
+	if (line->first_arrow && line->first_coords)
+		for (i = 0, coords = line->first_coords; i < NUM_ARROW_POINTS; i++, coords += 2)
+			GROW_BOUNDS (x1, y1, x2, y2, coords[0], coords[1]);
+
+	if (line->last_arrow && line->last_coords)
+		for (i = 0, coords = line->last_coords; i < NUM_ARROW_POINTS; i++, coords += 2)
+			GROW_BOUNDS (x1, y1, x2, y2, coords[0], coords[1]);
+
+	/* Done */
+
+	*bx1 = x1;
+	*by1 = y1;
+	*bx2 = x2;
+	*by2 = y2;
+}
+
+/* Computes the bounding box of the line, in canvas coordinates.  Assumes that the number of points in the polygon is
+ * not zero.
+ */
+static void
+get_bounds_canvas (FooCanvasLine *line,
+		   double *bx1, double *by1, double *bx2, double *by2,
+		   double i2w_dx, double i2w_dy)
+{
+	FooCanvasItem *item;
+	double bbox_x0, bbox_y0, bbox_x1, bbox_y1;
+
+	item = FOO_CANVAS_ITEM (line);
+
+	get_bounds (line, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1);
+
+	bbox_x0 += i2w_dx;
+	bbox_y0 += i2w_dy;
+	bbox_x1 += i2w_dx;
+	bbox_y1 += i2w_dy;
+
+	foo_canvas_w2c_rect_d (item->canvas,
+				 &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1);
+
+	/* include 1 pixel of fudge */
+	*bx1 = bbox_x0 - 1;
+	*by1 = bbox_y0 - 1;
+	*bx2 = bbox_x1 + 1;
+	*by2 = bbox_y1 + 1;
+}
+
+/* Recalculates the arrow polygons for the line */
+static void
+reconfigure_arrows (FooCanvasLine *line)
+{
+	double *poly, *coords;
+	double dx, dy, length;
+	double sin_theta, cos_theta, tmp;
+	double frac_height;	/* Line width as fraction of arrowhead width */
+	double backup;		/* Distance to backup end points so the line ends in the middle of the arrowhead */
+	double vx, vy;		/* Position of arrowhead vertex */
+	double shape_a, shape_b, shape_c;
+	double width;
+	int i;
+
+	if (line->num_points == 0)
+		return;
+
+	/* Set up things */
+
+	if (line->first_arrow) {
+		if (line->first_coords) {
+			line->coords[0] = line->first_coords[0];
+			line->coords[1] = line->first_coords[1];
+		} else
+			line->first_coords = g_new (double, 2 * NUM_ARROW_POINTS);
+	} else if (line->first_coords) {
+		line->coords[0] = line->first_coords[0];
+		line->coords[1] = line->first_coords[1];
+
+		g_free (line->first_coords);
+		line->first_coords = NULL;
+	}
+
+	i = 2 * (line->num_points - 1);
+
+	if (line->last_arrow) {
+		if (line->last_coords) {
+			line->coords[i] = line->last_coords[0];
+			line->coords[i + 1] = line->last_coords[1];
+		} else
+			line->last_coords = g_new (double, 2 * NUM_ARROW_POINTS);
+	} else if (line->last_coords) {
+		line->coords[i] = line->last_coords[0];
+		line->coords[i + 1] = line->last_coords[1];
+
+		g_free (line->last_coords);
+		line->last_coords = NULL;
+	}
+
+	if (!line->first_arrow && !line->last_arrow)
+		return;
+
+	if (line->width_pixels)
+		width = line->width / line->item.canvas->pixels_per_unit;
+	else
+		width = line->width;
+
+	/* Add fudge value for better-looking results */
+
+	shape_a = line->shape_a;
+	shape_b = line->shape_b;
+	shape_c = line->shape_c + width / 2.0;
+
+	if (line->width_pixels) {
+		shape_a /= line->item.canvas->pixels_per_unit;
+		shape_b /= line->item.canvas->pixels_per_unit;
+		shape_c /= line->item.canvas->pixels_per_unit;
+	}
+
+	shape_a += 0.001;
+	shape_b += 0.001;
+	shape_c += 0.001;
+
+	/* Compute the polygon for the first arrowhead and adjust the first point in the line so
+	 * that the line does not stick out past the leading edge of the arrowhead.
+	 */
+
+	frac_height = (line->width / 2.0) / shape_c;
+	backup = frac_height * shape_b + shape_a * (1.0 - frac_height) / 2.0;
+
+	if (line->first_arrow) {
+		poly = line->first_coords;
+		poly[0] = poly[10] = line->coords[0];
+		poly[1] = poly[11] = line->coords[1];
+
+		dx = poly[0] - line->coords[2];
+		dy = poly[1] - line->coords[3];
+		length = sqrt (dx * dx + dy * dy);
+		if (length < FOO_CANVAS_EPSILON)
+			sin_theta = cos_theta = 0.0;
+		else {
+			sin_theta = dy / length;
+			cos_theta = dx / length;
+		}
+
+		vx = poly[0] - shape_a * cos_theta;
+		vy = poly[1] - shape_a * sin_theta;
+
+		tmp = shape_c * sin_theta;
+
+		poly[2] = poly[0] - shape_b * cos_theta + tmp;
+		poly[8] = poly[2] - 2.0 * tmp;
+
+		tmp = shape_c * cos_theta;
+
+		poly[3] = poly[1] - shape_b * sin_theta - tmp;
+		poly[9] = poly[3] + 2.0 * tmp;
+
+		poly[4] = poly[2] * frac_height + vx * (1.0 - frac_height);
+		poly[5] = poly[3] * frac_height + vy * (1.0 - frac_height);
+		poly[6] = poly[8] * frac_height + vx * (1.0 - frac_height);
+		poly[7] = poly[9] * frac_height + vy * (1.0 - frac_height);
+
+		/* Move the first point towards the second so that the corners at the end of the
+		 * line are inside the arrowhead.
+		 */
+
+		line->coords[0] = poly[0] - backup * cos_theta;
+		line->coords[1] = poly[1] - backup * sin_theta;
+	}
+
+	/* Same process for last arrowhead */
+
+	if (line->last_arrow) {
+		coords = line->coords + 2 * (line->num_points - 2);
+		poly = line->last_coords;
+		poly[0] = poly[10] = coords[2];
+		poly[1] = poly[11] = coords[3];
+
+		dx = poly[0] - coords[0];
+		dy = poly[1] - coords[1];
+		length = sqrt (dx * dx + dy * dy);
+		if (length < FOO_CANVAS_EPSILON)
+			sin_theta = cos_theta = 0.0;
+		else {
+			sin_theta = dy / length;
+			cos_theta = dx / length;
+		}
+
+		vx = poly[0] - shape_a * cos_theta;
+		vy = poly[1] - shape_a * sin_theta;
+
+		tmp = shape_c * sin_theta;
+
+		poly[2] = poly[0] - shape_b * cos_theta + tmp;
+		poly[8] = poly[2] - 2.0 * tmp;
+
+		tmp = shape_c * cos_theta;
+
+		poly[3] = poly[1] - shape_b * sin_theta - tmp;
+		poly[9] = poly[3] + 2.0 * tmp;
+
+		poly[4] = poly[2] * frac_height + vx * (1.0 - frac_height);
+		poly[5] = poly[3] * frac_height + vy * (1.0 - frac_height);
+		poly[6] = poly[8] * frac_height + vx * (1.0 - frac_height);
+		poly[7] = poly[9] * frac_height + vy * (1.0 - frac_height);
+
+		coords[2] = poly[0] - backup * cos_theta;
+		coords[3] = poly[1] - backup * sin_theta;
+	}
+}
+
+/* Convenience function to set the line's GC's foreground color */
+static void
+set_line_gc_foreground (FooCanvasLine *line)
+{
+	GdkColor c;
+
+	if (!line->gc)
+		return;
+
+	c.pixel = line->fill_pixel;
+	gdk_gc_set_foreground (line->gc, &c);
+}
+
+/* Recalculate the line's width and set it in its GC */
+static void
+set_line_gc_width (FooCanvasLine *line)
+{
+	int width;
+
+	if (!line->gc)
+		return;
+
+	if (line->width_pixels)
+		width = (int) line->width;
+	else
+		width = (int) (line->width * line->item.canvas->pixels_per_unit + 0.5);
+
+	gdk_gc_set_line_attributes (line->gc,
+				    width,
+				    line->line_style,
+				    (line->first_arrow || line->last_arrow) ? GDK_CAP_BUTT : line->cap,
+				    line->join);
+}
+
+/* Sets the stipple pattern for the line */
+static void
+set_stipple (FooCanvasLine *line, GdkBitmap *stipple, int reconfigure)
+{
+	if (line->stipple && !reconfigure)
+		g_object_unref (line->stipple);
+
+	line->stipple = stipple;
+	if (stipple && !reconfigure)
+		g_object_ref (stipple);
+
+	if (line->gc) {
+		if (stipple) {
+			gdk_gc_set_stipple (line->gc, stipple);
+			gdk_gc_set_fill (line->gc, GDK_STIPPLED);
+		} else
+			gdk_gc_set_fill (line->gc, GDK_SOLID);
+	}
+}
+
+static void
+foo_canvas_line_set_property (GObject              *object,
+				guint                 param_id,
+				const GValue         *value,
+				GParamSpec           *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasLine *line;
+	FooCanvasPoints *points;
+	GdkColor color = { 0, 0, 0, 0, };
+	GdkColor *pcolor;
+	gboolean color_changed;
+	int have_pixel;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_LINE (object));
+
+	item = FOO_CANVAS_ITEM (object);
+	line = FOO_CANVAS_LINE (object);
+
+	color_changed = FALSE;
+	have_pixel = FALSE;
+
+	switch (param_id) {
+	case PROP_POINTS:
+		points = g_value_get_boxed (value);
+
+		if (line->coords) {
+			g_free (line->coords);
+			line->coords = NULL;
+		}
+
+		if (!points)
+			line->num_points = 0;
+		else {
+			line->num_points = points->num_points;
+			line->coords = g_new (double, 2 * line->num_points);
+			memcpy (line->coords, points->coords, 2 * line->num_points * sizeof (double));
+		}
+
+		/* Drop the arrowhead polygons if they exist -- they will be regenerated */
+
+		if (line->first_coords) {
+			g_free (line->first_coords);
+			line->first_coords = NULL;
+		}
+
+		if (line->last_coords) {
+			g_free (line->last_coords);
+			line->last_coords = NULL;
+		}
+
+		/* Since the line's points have changed, we need to re-generate arrowheads in
+		 * addition to recalculating the bounds.
+		 */
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_FILL_COLOR:
+		if (g_value_get_string (value))
+			gdk_color_parse (g_value_get_string (value), &color);
+		line->fill_rgba = ((color.red & 0xff00) << 16 |
+				   (color.green & 0xff00) << 8 |
+				   (color.blue & 0xff00) |
+				   0xff);
+		color_changed = TRUE;
+		break;
+
+	case PROP_FILL_COLOR_GDK:
+		pcolor = g_value_get_boxed (value);
+		if (pcolor) {
+			GdkColormap *colormap;
+			color = *pcolor;
+
+			colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
+			gdk_rgb_find_color (colormap, &color);
+
+			have_pixel = TRUE;
+		}
+
+		line->fill_rgba = ((color.red & 0xff00) << 16 |
+				   (color.green & 0xff00) << 8 |
+				   (color.blue & 0xff00) |
+				   0xff);
+		color_changed = TRUE;
+		break;
+
+	case PROP_FILL_COLOR_RGBA:
+		line->fill_rgba = g_value_get_uint (value);
+		color_changed = TRUE;
+		break;
+
+	case PROP_FILL_STIPPLE:
+		set_stipple (line, (GdkBitmap *) g_value_get_object (value), FALSE);
+		foo_canvas_item_request_redraw (item);
+		break;
+
+	case PROP_WIDTH_PIXELS:
+		line->width = g_value_get_uint (value);
+		line->width_pixels = TRUE;
+		set_line_gc_width (line);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_WIDTH_UNITS:
+		line->width = fabs (g_value_get_double (value));
+		line->width_pixels = FALSE;
+		set_line_gc_width (line);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_CAP_STYLE:
+		line->cap = g_value_get_enum (value);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_JOIN_STYLE:
+		line->join = g_value_get_enum (value);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_LINE_STYLE:
+		line->line_style = g_value_get_enum (value);
+		set_line_gc_width (line);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_FIRST_ARROWHEAD:
+		line->first_arrow = g_value_get_boolean (value);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_LAST_ARROWHEAD:
+		line->last_arrow = g_value_get_boolean (value);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_SMOOTH:
+		/* FIXME */
+		break;
+
+	case PROP_SPLINE_STEPS:
+		/* FIXME */
+		break;
+
+	case PROP_ARROW_SHAPE_A:
+		line->shape_a = fabs (g_value_get_double (value));
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_ARROW_SHAPE_B:
+		line->shape_b = fabs (g_value_get_double (value));
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_ARROW_SHAPE_C:
+		line->shape_c = fabs (g_value_get_double (value));
+		foo_canvas_item_request_update (item);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+
+	if (color_changed) {
+		if (have_pixel)
+			line->fill_pixel = color.pixel;
+		else
+			line->fill_pixel = foo_canvas_get_color_pixel (item->canvas,
+									 line->fill_rgba);
+
+		set_line_gc_foreground (line);
+
+		foo_canvas_item_request_redraw (item);
+	}
+}
+
+/* Returns a copy of the line's points without the endpoint adjustments for
+ * arrowheads.
+ */
+static FooCanvasPoints *
+get_points (FooCanvasLine *line)
+{
+	FooCanvasPoints *points;
+	int start_ofs, end_ofs;
+
+	if (line->num_points == 0)
+		return NULL;
+
+	start_ofs = end_ofs = 0;
+
+	points = foo_canvas_points_new (line->num_points);
+
+	/* Invariant:  if first_coords or last_coords exist, then the line's
+	 * endpoints have been adjusted.
+	 */
+
+	if (line->first_coords) {
+		start_ofs = 1;
+
+		points->coords[0] = line->first_coords[0];
+		points->coords[1] = line->first_coords[1];
+	}
+
+	if (line->last_coords) {
+		end_ofs = 1;
+
+		points->coords[2 * (line->num_points - 1)] = line->last_coords[0];
+		points->coords[2 * (line->num_points - 1) + 1] = line->last_coords[1];
+	}
+
+	memcpy (points->coords + 2 * start_ofs,
+		line->coords + 2 * start_ofs,
+		2 * (line->num_points - (start_ofs + end_ofs)) * sizeof (double));
+
+	return points;
+}
+
+static void
+foo_canvas_line_get_property (GObject              *object,
+				guint                 param_id,
+				GValue               *value,
+				GParamSpec           *pspec)
+{
+	FooCanvasLine *line;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_LINE (object));
+
+	line = FOO_CANVAS_LINE (object);
+
+	switch (param_id) {
+	case PROP_POINTS:
+		g_value_set_boxed (value, get_points (line));
+		break;
+
+	case PROP_FILL_COLOR:
+		g_value_take_string (value,
+				     g_strdup_printf ("#%02x%02x%02x",
+						      line->fill_rgba >> 24,
+						      (line->fill_rgba >> 16) & 0xff,
+						      (line->fill_rgba >> 8) & 0xff));
+		break;
+
+	case PROP_FILL_COLOR_GDK: {
+		FooCanvas *canvas = FOO_CANVAS_ITEM (line)->canvas;
+		GdkColormap *colormap = gtk_widget_get_colormap (GTK_WIDGET (canvas));
+		GdkColor color;
+
+		gdk_colormap_query_color (colormap, line->fill_pixel, &color);
+		g_value_set_boxed (value, &color);
+		break;
+	}
+
+	case PROP_FILL_COLOR_RGBA:
+		g_value_set_uint (value, line->fill_rgba);
+		break;
+
+	case PROP_FILL_STIPPLE:
+		g_value_set_object (value, line->stipple);
+		break;
+
+	case PROP_WIDTH_PIXELS:
+		g_value_set_uint (value, line->width);
+		break;
+
+	case PROP_WIDTH_UNITS:
+		g_value_set_double (value, line->width);
+		break;
+
+	case PROP_CAP_STYLE:
+		g_value_set_enum (value, line->cap);
+		break;
+
+	case PROP_JOIN_STYLE:
+		g_value_set_enum (value, line->join);
+		break;
+
+	case PROP_LINE_STYLE:
+		g_value_set_enum (value, line->line_style);
+		break;
+
+	case PROP_FIRST_ARROWHEAD:
+		g_value_set_boolean (value, line->first_arrow);
+		break;
+
+	case PROP_LAST_ARROWHEAD:
+		g_value_set_boolean (value, line->last_arrow);
+		break;
+
+	case PROP_SMOOTH:
+		g_value_set_boolean (value, line->smooth);
+		break;
+
+	case PROP_SPLINE_STEPS:
+		g_value_set_uint (value, line->spline_steps);
+		break;
+
+	case PROP_ARROW_SHAPE_A:
+		g_value_set_double (value, line->shape_a);
+		break;
+
+	case PROP_ARROW_SHAPE_B:
+		g_value_set_double (value, line->shape_b);
+		break;
+
+	case PROP_ARROW_SHAPE_C:
+		g_value_set_double (value, line->shape_c);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+static void
+foo_canvas_line_update (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags)
+{
+	FooCanvasLine *line;
+	double x1, y1, x2, y2;
+
+	line = FOO_CANVAS_LINE (item);
+
+	if (parent_class->update)
+		(* parent_class->update) (item, i2w_dx, i2w_dy, flags);
+
+	reconfigure_arrows (line);
+
+	set_line_gc_foreground (line);
+	set_line_gc_width (line);
+	set_stipple (line, line->stipple, TRUE);
+
+	get_bounds_canvas (line, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy);
+	foo_canvas_update_bbox (item, x1, y1, x2, y2);
+}
+
+static void
+foo_canvas_line_realize (FooCanvasItem *item)
+{
+	FooCanvasLine *line;
+
+	line = FOO_CANVAS_LINE (item);
+
+	if (parent_class->realize)
+		(* parent_class->realize) (item);
+
+	line->gc = gdk_gc_new (item->canvas->layout.bin_window);
+#warning "FIXME: Need to recalc pixel values, set colours, etc."
+
+#if 0
+	(* FOO_CANVAS_ITEM_CLASS (item->object.klass)->update) (item, NULL, NULL, 0);
+#endif
+}
+
+static void
+foo_canvas_line_unrealize (FooCanvasItem *item)
+{
+	FooCanvasLine *line;
+
+	line = FOO_CANVAS_LINE (item);
+
+	g_object_unref (line->gc);
+	line->gc = NULL;
+
+	if (parent_class->unrealize)
+		(* parent_class->unrealize) (item);
+}
+
+static void
+item_to_canvas (FooCanvas *canvas, double *item_coords, GdkPoint *canvas_coords, int num_points,
+		int *num_drawn_points, double i2w_dx, double i2w_dy)
+{
+	int i;
+	int old_cx, old_cy;
+	int cx, cy;
+
+	/* the first point is always drawn */
+	foo_canvas_w2c (canvas,
+			  item_coords[0] + i2w_dx,
+			  item_coords[1] + i2w_dy,
+			  &canvas_coords->x, &canvas_coords->y);
+	old_cx = canvas_coords->x;
+	old_cy = canvas_coords->y;
+	canvas_coords++;
+	*num_drawn_points = 1;
+
+	for (i = 1; i < num_points; i++) {
+		foo_canvas_w2c (canvas,
+				  item_coords[i*2] + i2w_dx,
+				  item_coords[i*2+1] + i2w_dy,
+				  &cx, &cy);
+		if (old_cx != cx || old_cy != cy) {
+			canvas_coords->x = cx;
+			canvas_coords->y = cy;
+			old_cx = cx;
+			old_cy = cy;
+			canvas_coords++;
+			(*num_drawn_points)++;
+		}
+	}
+}
+
+static void
+foo_canvas_line_draw (FooCanvasItem *item, GdkDrawable *drawable,
+			GdkEventExpose *event)
+{
+	FooCanvasLine *line;
+	GdkPoint static_points[NUM_STATIC_POINTS];
+	GdkPoint *points;
+	int actual_num_points_drawn;
+	double i2w_dx, i2w_dy;
+
+	line = FOO_CANVAS_LINE (item);
+
+	if (line->num_points == 0)
+		return;
+
+	/* Build array of canvas pixel coordinates */
+
+	if (line->num_points <= NUM_STATIC_POINTS)
+		points = static_points;
+	else
+		points = g_new (GdkPoint, line->num_points);
+
+	i2w_dx = 0.0;
+	i2w_dy = 0.0;
+	foo_canvas_item_i2w (item, &i2w_dx, &i2w_dy);
+
+	item_to_canvas (item->canvas, line->coords, points, line->num_points,
+			&actual_num_points_drawn, i2w_dx, i2w_dy);
+
+	if (line->stipple)
+		foo_canvas_set_stipple_origin (item->canvas, line->gc);
+
+	gdk_draw_lines (drawable, line->gc, points, actual_num_points_drawn);
+
+	if (points != static_points)
+		g_free (points);
+
+	/* Draw arrowheads */
+
+	points = static_points;
+
+	if (line->first_arrow) {
+		item_to_canvas (item->canvas, line->first_coords, points, NUM_ARROW_POINTS,
+				&actual_num_points_drawn, i2w_dx, i2w_dy);
+		gdk_draw_polygon (drawable, line->gc, TRUE, points, actual_num_points_drawn );
+	}
+
+	if (line->last_arrow) {
+		item_to_canvas (item->canvas, line->last_coords, points, NUM_ARROW_POINTS,
+				&actual_num_points_drawn, i2w_dx, i2w_dy);
+		gdk_draw_polygon (drawable, line->gc, TRUE, points, actual_num_points_drawn );
+	}
+}
+
+static double
+foo_canvas_line_point (FooCanvasItem *item, double x, double y,
+			 int cx, int cy, FooCanvasItem **actual_item)
+{
+	FooCanvasLine *line;
+	double *line_points = NULL, *coords;
+	double static_points[2 * NUM_STATIC_POINTS];
+	double poly[10];
+	double best, dist;
+	double dx, dy;
+	double width;
+	int num_points = 0, i;
+	int changed_miter_to_bevel;
+
+#ifdef VERBOSE
+	g_print ("foo_canvas_line_point x, y = (%g, %g); cx, cy = (%d, %d)\n", x, y, cx, cy);
+#endif
+
+	line = FOO_CANVAS_LINE (item);
+
+	*actual_item = item;
+
+	best = 1.0e36;
+
+	/* Handle smoothed lines by generating an expanded set ot points */
+
+	if (line->smooth && (line->num_points > 2)) {
+		/* FIXME */
+	} else {
+		num_points = line->num_points;
+		line_points = line->coords;
+	}
+
+	/* Compute a polygon for each edge of the line and test the point against it.  The effective
+	 * width of the line is adjusted so that it will be at least one pixel thick (so that zero
+	 * pixel-wide lines can be pickedup as well).
+	 */
+
+	if (line->width_pixels)
+		width = line->width / item->canvas->pixels_per_unit;
+	else
+		width = line->width;
+
+	if (width < (1.0 / item->canvas->pixels_per_unit))
+		width = 1.0 / item->canvas->pixels_per_unit;
+
+	changed_miter_to_bevel = 0;
+
+	for (i = num_points, coords = line_points; i >= 2; i--, coords += 2) {
+		/* If rounding is done around the first point, then compute distance between the
+		 * point and the first point.
+		 */
+
+		if (((line->cap == GDK_CAP_ROUND) && (i == num_points))
+		    || ((line->join == GDK_JOIN_ROUND) && (i != num_points))) {
+			dx = coords[0] - x;
+			dy = coords[1] - y;
+			dist = sqrt (dx * dx + dy * dy) - width / 2.0;
+			if (dist < FOO_CANVAS_EPSILON) {
+				best = 0.0;
+				goto done;
+			} else if (dist < best)
+				best = dist;
+		}
+
+		/* Compute the polygonal shape corresponding to this edge, with two points for the
+		 * first point of the edge and two points for the last point of the edge.
+		 */
+
+		if (i == num_points)
+			foo_canvas_get_butt_points (coords[2], coords[3], coords[0], coords[1],
+						      width, (line->cap == GDK_CAP_PROJECTING),
+						      poly, poly + 1, poly + 2, poly + 3);
+		else if ((line->join == GDK_JOIN_MITER) && !changed_miter_to_bevel) {
+			poly[0] = poly[6];
+			poly[1] = poly[7];
+			poly[2] = poly[4];
+			poly[3] = poly[5];
+		} else {
+			foo_canvas_get_butt_points (coords[2], coords[3], coords[0], coords[1],
+						      width, FALSE,
+						      poly, poly + 1, poly + 2, poly + 3);
+
+			/* If this line uses beveled joints, then check the distance to a polygon
+			 * comprising the last two points of the previous polygon and the first two
+			 * from this polygon; this checks the wedges that fill the mitered point.
+			 */
+
+			if ((line->join == GDK_JOIN_BEVEL) || changed_miter_to_bevel) {
+				poly[8] = poly[0];
+				poly[9] = poly[1];
+
+				dist = foo_canvas_polygon_to_point (poly, 5, x, y);
+				if (dist < FOO_CANVAS_EPSILON) {
+					best = 0.0;
+					goto done;
+				} else if (dist < best)
+					best = dist;
+
+				changed_miter_to_bevel = FALSE;
+			}
+		}
+
+		if (i == 2)
+			foo_canvas_get_butt_points (coords[0], coords[1], coords[2], coords[3],
+						      width, (line->cap == GDK_CAP_PROJECTING),
+						      poly + 4, poly + 5, poly + 6, poly + 7);
+		else if (line->join == GDK_JOIN_MITER) {
+			if (!foo_canvas_get_miter_points (coords[0], coords[1],
+							    coords[2], coords[3],
+							    coords[4], coords[5],
+							    width,
+							    poly + 4, poly + 5, poly + 6, poly + 7)) {
+				changed_miter_to_bevel = TRUE;
+				foo_canvas_get_butt_points (coords[0], coords[1], coords[2], coords[3],
+							      width, FALSE,
+							      poly + 4, poly + 5, poly + 6, poly + 7);
+			}
+		} else
+			foo_canvas_get_butt_points (coords[0], coords[1], coords[2], coords[3],
+						      width, FALSE,
+						      poly + 4, poly + 5, poly + 6, poly + 7);
+
+		poly[8] = poly[0];
+		poly[9] = poly[1];
+
+		dist = foo_canvas_polygon_to_point (poly, 5, x, y);
+		if (dist < FOO_CANVAS_EPSILON) {
+			best = 0.0;
+			goto done;
+		} else if (dist < best)
+			best = dist;
+	}
+
+	/* If caps are rounded, check the distance to the cap around the final end point of the line */
+
+	if (line->cap == GDK_CAP_ROUND) {
+		dx = coords[0] - x;
+		dy = coords[1] - y;
+		dist = sqrt (dx * dx + dy * dy) - width / 2.0;
+		if (dist < FOO_CANVAS_EPSILON) {
+			best = 0.0;
+			goto done;
+		} else
+			best = dist;
+	}
+
+	/* sometimes the FooCanvasItem::update signal will not have
+           been processed between deleting the arrow points and a call
+           to this routine -- this can cause a segfault here */
+	if ((line->first_arrow && !line->first_coords) ||
+	    (line->last_arrow && !line->last_coords))
+		reconfigure_arrows(line);
+
+	/* If there are arrowheads, check the distance to them */
+
+	if (line->first_arrow) {
+		dist = foo_canvas_polygon_to_point (line->first_coords, NUM_ARROW_POINTS, x, y);
+		if (dist < FOO_CANVAS_EPSILON) {
+			best = 0.0;
+			goto done;
+		} else
+			best = dist;
+	}
+
+	if (line->last_arrow) {
+		dist = foo_canvas_polygon_to_point (line->last_coords, NUM_ARROW_POINTS, x, y);
+		if (dist < FOO_CANVAS_EPSILON) {
+			best = 0.0;
+			goto done;
+		} else
+			best = dist;
+	}
+
+done:
+
+	if ((line_points != static_points) && (line_points != line->coords))
+		g_free (line_points);
+
+	return best;
+}
+
+static void
+foo_canvas_line_translate (FooCanvasItem *item, double dx, double dy)
+{
+        FooCanvasLine *line;
+        int i;
+        double *coords;
+
+        line = FOO_CANVAS_LINE (item);
+
+        for (i = 0, coords = line->coords; i < line->num_points; i++, coords += 2) {
+                coords[0] += dx;
+                coords[1] += dy;
+        }
+
+        if (line->first_arrow)
+                for (i = 0, coords = line->first_coords; i < NUM_ARROW_POINTS; i++, coords += 2) {
+                        coords[0] += dx;
+                        coords[1] += dy;
+                }
+
+        if (line->last_arrow)
+                for (i = 0, coords = line->last_coords; i < NUM_ARROW_POINTS; i++, coords += 2) {
+                        coords[0] += dx;
+                        coords[1] += dy;
+                }
+}
+
+static void
+foo_canvas_line_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	FooCanvasLine *line;
+
+	line = FOO_CANVAS_LINE (item);
+
+	if (line->num_points == 0) {
+		*x1 = *y1 = *x2 = *y2 = 0.0;
+		return;
+	}
+
+	get_bounds (line, x1, y1, x2, y2);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-line.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,152 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+
+/* Line/curve item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#ifndef FOO_CANVAS_LINE_H
+#define FOO_CANVAS_LINE_H
+
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+
+
+G_BEGIN_DECLS
+
+
+/* Line item for the canvas.  This is a polyline with configurable width, cap/join styles, and arrowheads.
+ * If arrowheads are enabled, then three values are used to specify their shape:
+ *
+ *	arrow_shape_a:  Distance from tip of arrowhead to the center point.
+ *	arrow_shape_b:  Distance from tip of arrowhead to trailing point, measured along the shaft.
+ *	arrow_shape_c:	Distance of trailing point from outside edge of shaft.
+ *
+ * The following object arguments are available:
+ *
+ * name			type			read/write	description
+ * ------------------------------------------------------------------------------------------
+ * points		FooCanvasPoints*	RW		Pointer to a FooCanvasPoints structure.
+ *								This can be created by a call to
+ *								foo_canvas_points_new() (in foo-canvas-util.h).
+ *								X coordinates are in the even indices of the
+ *								points->coords array, Y coordinates are in
+ *								the odd indices.
+ * fill_color		string			W		X color specification for line
+ * fill_color_gdk	GdkColor*		RW		Pointer to an allocated GdkColor
+ * fill_stipple		GdkBitmap*		RW		Stipple pattern for the line
+ * width_pixels		uint			R		Width of the line in pixels.  The line width
+ *								will not be scaled when the canvas zoom factor changes.
+ * width_units		double			R		Width of the line in canvas units.  The line width
+ *								will be scaled when the canvas zoom factor changes.
+ * cap_style		GdkCapStyle		RW		Cap ("endpoint") style for the line.
+ * join_style		GdkJoinStyle		RW		Join ("vertex") style for the line.
+ * line_style		GdkLineStyle		RW		Line dash style
+ * first_arrowhead	boolean			RW		Specifies whether to draw an arrowhead on the
+ *								first point of the line.
+ * last_arrowhead	boolean			RW		Specifies whether to draw an arrowhead on the
+ *								last point of the line.
+ * smooth		boolean			RW		Specifies whether to smooth the line using
+ *								parabolic splines.
+ * spline_steps		uint			RW		Specifies the number of steps to use when rendering curves.
+ * arrow_shape_a	double			RW		First arrow shape specifier.
+ * arrow_shape_b	double			RW		Second arrow shape specifier.
+ * arrow_shape_c	double			RW		Third arrow shape specifier.
+ */
+
+
+#define FOO_TYPE_CANVAS_LINE            (foo_canvas_line_get_type ())
+#define FOO_CANVAS_LINE(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_LINE, FooCanvasLine))
+#define FOO_CANVAS_LINE_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_LINE, FooCanvasLineClass))
+#define FOO_IS_CANVAS_LINE(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_LINE))
+#define FOO_IS_CANVAS_LINE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_LINE))
+#define FOO_CANVAS_LINE_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_LINE, FooCanvasLineClass))
+
+
+typedef struct _FooCanvasLine FooCanvasLine;
+typedef struct _FooCanvasLineClass FooCanvasLineClass;
+
+struct _FooCanvasLine {
+	FooCanvasItem item;
+
+	double *coords;		/* Array of coordinates for the line's points.  X coords are in the
+				 * even indices, Y coords are in the odd indices.  If the line has
+				 * arrowheads then the first and last points have been adjusted to
+				 * refer to the necks of the arrowheads rather than their tips.  The
+				 * actual endpoints are stored in the first_arrow and last_arrow
+				 * arrays, if they exist.
+				 */
+
+	double *first_coords;	/* Array of points describing polygon for the first arrowhead */
+	double *last_coords;	/* Array of points describing polygon for the last arrowhead */
+
+	GdkGC *gc;		/* GC for drawing line */
+
+	GdkBitmap *stipple;	/* Stipple pattern */
+
+	double width;		/* Width of the line */
+
+	double shape_a;		/* Distance from tip of arrowhead to center */
+	double shape_b;		/* Distance from tip of arrowhead to trailing point, measured along shaft */
+	double shape_c;		/* Distance of trailing points from outside edge of shaft */
+
+	GdkCapStyle cap;	/* Cap style for line */
+	GdkJoinStyle join;	/* Join style for line */
+	GdkLineStyle line_style;/* Style for the line */
+
+	gulong fill_pixel;	/* Color for line */
+
+	guint32 fill_rgba;		/* RGBA color for outline */ /*AA*/
+
+	int num_points;		/* Number of points in the line */
+	guint fill_color;	/* Fill color, RGBA */
+
+	int spline_steps;	/* Number of steps in each spline segment */
+
+	guint width_pixels : 1;	/* Is the width specified in pixels or units? */
+	guint first_arrow : 1;	/* Draw first arrowhead? */
+	guint last_arrow : 1;	/* Draw last arrowhead? */
+	guint smooth : 1;	/* Smooth line (with parabolic splines)? */
+};
+
+struct _FooCanvasLineClass {
+	FooCanvasItemClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GtkType foo_canvas_line_get_type (void) G_GNUC_CONST;
+
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-marshal.list
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-marshal.list	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-marshal.list	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+VOID:INT,INT,INT,INT
+BOOLEAN:BOXED

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,864 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#undef GTK_DISABLE_DEPRECATED
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/* GNOME libraries - GdkPixbuf item for the GNOME canvas
+ *
+ * Copyright (C) 1999 The Free Software Foundation
+ *
+ * Author: Federico Mena-Quintero <federico at gimp.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <math.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-util.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include "foo-canvas-pixbuf.h"
+
+/* Private part of the FooCanvasPixbuf structure */
+typedef struct {
+	/* Our gdk-pixbuf */
+	GdkPixbuf *pixbuf, *pixbuf_scaled;
+
+	/* Width value */
+	double width;
+
+	/* Height value */
+	double height;
+
+	/* X translation */
+	double x;
+
+	/* Y translation */
+	double y;
+
+	/* Whether dimensions are set and whether they are in pixels or units */
+	guint width_set : 1;
+	guint width_in_pixels : 1;
+	guint height_set : 1;
+	guint height_in_pixels : 1;
+	guint x_in_pixels : 1;
+	guint y_in_pixels : 1;
+
+	/* Whether the pixbuf has changed */
+	guint need_pixbuf_update : 1;
+
+	/* Whether the transformation or size have changed */
+	guint need_xform_update : 1;
+
+	/* Should the point method ignore transparent areas */
+	guint point_ignores_alpha : 1;
+
+	/* Anchor */
+	GtkAnchorType anchor;
+
+	/* Approximation method used for transformations */
+	GdkInterpType interp_type;
+
+} PixbufPrivate;
+
+/* Object argument IDs */
+enum {
+	PROP_0,
+	PROP_PIXBUF,
+	PROP_WIDTH,
+	PROP_WIDTH_SET,
+	PROP_WIDTH_IN_PIXELS,
+	PROP_HEIGHT,
+	PROP_HEIGHT_SET,
+	PROP_HEIGHT_IN_PIXELS,
+	PROP_X,
+	PROP_X_IN_PIXELS,
+	PROP_Y,
+	PROP_Y_IN_PIXELS,
+	PROP_ANCHOR,
+	PROP_INTERP_TYPE,
+	PROP_POINT_IGNORES_ALPHA
+};
+
+static void foo_canvas_pixbuf_class_init (FooCanvasPixbufClass *class);
+static void foo_canvas_pixbuf_init (FooCanvasPixbuf *cpb);
+static void foo_canvas_pixbuf_destroy (GtkObject *object);
+static void foo_canvas_pixbuf_set_property (GObject *object,
+					    guint param_id,
+					    const GValue *value,
+					    GParamSpec *pspec);
+static void foo_canvas_pixbuf_get_property (GObject *object,
+					    guint param_id,
+					    GValue *value,
+					    GParamSpec *pspec);
+
+static void foo_canvas_pixbuf_update    (FooCanvasItem *item,
+					 double i2w_dx, double i2w_dy,
+					 int flags);
+static void foo_canvas_pixbuf_draw      (FooCanvasItem *item, GdkDrawable *drawable,
+					 GdkEventExpose *expose);
+static double foo_canvas_pixbuf_point   (FooCanvasItem *item, double x, double y, int cx, int cy,
+					 FooCanvasItem **actual_item);
+static void foo_canvas_pixbuf_translate (FooCanvasItem *item, double dx, double dy);
+static void foo_canvas_pixbuf_bounds    (FooCanvasItem *item,
+					 double *x1, double *y1, double *x2, double *y2);
+
+static FooCanvasItemClass *parent_class;
+
+
+
+/**
+ * foo_canvas_pixbuf_get_type:
+ * @void:
+ *
+ * Registers the #FooCanvasPixbuf class if necessary, and returns the type ID
+ * associated to it.
+ *
+ * Return value: The type ID of the #FooCanvasPixbuf class.
+ **/
+GtkType
+foo_canvas_pixbuf_get_type (void)
+{
+	static GtkType canvas_pixbuf_type = 0;
+
+	if (!canvas_pixbuf_type) {
+		/* FIXME: Convert to gobject style.  */
+		static const GtkTypeInfo canvas_pixbuf_info = {
+			(char *)"FooCanvasPixbuf",
+			sizeof (FooCanvasPixbuf),
+			sizeof (FooCanvasPixbufClass),
+			(GtkClassInitFunc) foo_canvas_pixbuf_class_init,
+			(GtkObjectInitFunc) foo_canvas_pixbuf_init,
+			NULL, /* reserved_1 */
+			NULL, /* reserved_2 */
+			(GtkClassInitFunc) NULL
+		};
+
+		canvas_pixbuf_type = gtk_type_unique (foo_canvas_item_get_type (),
+						      &canvas_pixbuf_info);
+	}
+
+	return canvas_pixbuf_type;
+}
+
+/* Class initialization function for the pixbuf canvas item */
+static void
+foo_canvas_pixbuf_class_init (FooCanvasPixbufClass *class)
+{
+        GObjectClass *gobject_class;
+	GtkObjectClass *object_class;
+	FooCanvasItemClass *item_class;
+
+        gobject_class = (GObjectClass *) class;
+	object_class = (GtkObjectClass *) class;
+	item_class = (FooCanvasItemClass *) class;
+
+	parent_class = gtk_type_class (foo_canvas_item_get_type ());
+
+	gobject_class->set_property = foo_canvas_pixbuf_set_property;
+	gobject_class->get_property = foo_canvas_pixbuf_get_property;
+
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_PIXBUF,
+                 g_param_spec_object ("pixbuf", NULL, NULL,
+                                      GDK_TYPE_PIXBUF,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH,
+                 g_param_spec_double ("width", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_SET,
+                 g_param_spec_boolean ("width-set", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_IN_PIXELS,
+                 g_param_spec_boolean ("width-in-pixels", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_HEIGHT,
+                 g_param_spec_double ("height", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_HEIGHT_SET,
+                 g_param_spec_boolean ("height-set", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_HEIGHT_IN_PIXELS,
+                 g_param_spec_boolean ("height-in-pixels", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_X,
+                 g_param_spec_double ("x", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_X_IN_PIXELS,
+                 g_param_spec_boolean ("x-in-pixels", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_Y,
+                 g_param_spec_double ("y", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_Y_IN_PIXELS,
+                 g_param_spec_boolean ("y-in-pixels", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ANCHOR,
+                 g_param_spec_enum ("anchor", NULL, NULL,
+                                    GTK_TYPE_ANCHOR_TYPE,
+                                    GTK_ANCHOR_NW,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_INTERP_TYPE,
+                 g_param_spec_enum ("interp-type", NULL, NULL,
+                                    GDK_TYPE_INTERP_TYPE,
+                                    GDK_INTERP_BILINEAR,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+		 PROP_POINT_IGNORES_ALPHA,
+                 g_param_spec_boolean ("point-ignores-alpha", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	object_class->destroy = foo_canvas_pixbuf_destroy;
+
+	item_class->update = foo_canvas_pixbuf_update;
+	item_class->draw = foo_canvas_pixbuf_draw;
+	item_class->point = foo_canvas_pixbuf_point;
+	item_class->translate = foo_canvas_pixbuf_translate;
+	item_class->bounds = foo_canvas_pixbuf_bounds;
+}
+
+/* Object initialization function for the pixbuf canvas item */
+static void
+foo_canvas_pixbuf_init (FooCanvasPixbuf *gcp)
+{
+	PixbufPrivate *priv;
+
+	priv = g_new0 (PixbufPrivate, 1);
+	gcp->priv = priv;
+
+	priv->width = 0.0;
+	priv->height = 0.0;
+	priv->x = 0.0;
+	priv->y = 0.0;
+	priv->anchor = GTK_ANCHOR_NW;
+	priv->interp_type = GDK_INTERP_BILINEAR;
+	priv->point_ignores_alpha = FALSE;
+}
+
+/* Destroy handler for the pixbuf canvas item */
+static void
+foo_canvas_pixbuf_destroy (GtkObject *object)
+{
+	FooCanvasItem *item;
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_PIXBUF (object));
+
+	item = FOO_CANVAS_ITEM (object);
+	gcp = (FOO_CANVAS_PIXBUF (object));
+	priv = gcp->priv;
+
+	/* remember, destroy can be run multiple times! */
+
+	if (priv) {
+	    foo_canvas_item_request_redraw (item);
+
+	    if (priv->pixbuf)
+		g_object_unref (priv->pixbuf);
+	    if (priv->pixbuf_scaled)
+		g_object_unref (priv->pixbuf_scaled);
+
+	    g_free (priv);
+	    gcp->priv = NULL;
+	}
+
+	if (GTK_OBJECT_CLASS (parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
+
+
+/* Set_property handler for the pixbuf canvas item */
+static void
+foo_canvas_pixbuf_set_property (GObject            *object,
+				guint               param_id,
+				const GValue       *value,
+				GParamSpec         *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+	GdkPixbuf *pixbuf;
+	double val;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_PIXBUF (object));
+
+	item = FOO_CANVAS_ITEM (object);
+	gcp = FOO_CANVAS_PIXBUF (object);
+	priv = gcp->priv;
+
+	switch (param_id) {
+	case PROP_PIXBUF:
+		if (g_value_get_object (value))
+			pixbuf = GDK_PIXBUF (g_value_get_object (value));
+		else
+			pixbuf = NULL;
+		if (pixbuf != priv->pixbuf) {
+			if (pixbuf) {
+				g_return_if_fail
+				    (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
+				g_return_if_fail
+				    (gdk_pixbuf_get_n_channels (pixbuf) == 3
+				     || gdk_pixbuf_get_n_channels (pixbuf) == 4);
+				g_return_if_fail
+				    (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
+
+				g_object_ref (pixbuf);
+			}
+
+			if (priv->pixbuf)
+				g_object_unref (priv->pixbuf);
+			priv->pixbuf = pixbuf;
+
+			if (priv->pixbuf_scaled) {
+				g_object_unref (priv->pixbuf_scaled);
+				priv->pixbuf_scaled = NULL;
+			}
+		}
+
+		priv->need_pixbuf_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_WIDTH:
+		val = g_value_get_double (value);
+		g_return_if_fail (val >= 0.0);
+		priv->width = val;
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_WIDTH_SET:
+		priv->width_set = g_value_get_boolean (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_WIDTH_IN_PIXELS:
+		priv->width_in_pixels = g_value_get_boolean (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_HEIGHT:
+		val = g_value_get_double (value);
+		g_return_if_fail (val >= 0.0);
+		priv->height = val;
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_HEIGHT_SET:
+		priv->height_set = g_value_get_boolean (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_HEIGHT_IN_PIXELS:
+		priv->height_in_pixels = g_value_get_boolean (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_X:
+		priv->x = g_value_get_double (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_X_IN_PIXELS:
+		priv->x_in_pixels = g_value_get_boolean (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_Y:
+		priv->y = g_value_get_double (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_Y_IN_PIXELS:
+		priv->y_in_pixels = g_value_get_boolean (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_ANCHOR:
+		priv->anchor = g_value_get_enum (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_INTERP_TYPE:
+		priv->interp_type = g_value_get_enum (value);
+		priv->need_xform_update = TRUE;
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_POINT_IGNORES_ALPHA:
+		priv->point_ignores_alpha = g_value_get_boolean (value);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+/* Get_property handler for the pixbuf canvasi item */
+static void
+foo_canvas_pixbuf_get_property (GObject            *object,
+				guint               param_id,
+				GValue             *value,
+				GParamSpec         *pspec)
+{
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_PIXBUF (object));
+
+	gcp = FOO_CANVAS_PIXBUF (object);
+	priv = gcp->priv;
+
+	switch (param_id) {
+	case PROP_PIXBUF:
+		g_value_set_object (value, G_OBJECT (priv->pixbuf));
+		break;
+
+	case PROP_WIDTH:
+		g_value_set_double (value, priv->width);
+		break;
+
+	case PROP_WIDTH_SET:
+		g_value_set_boolean (value, priv->width_set);
+		break;
+
+	case PROP_WIDTH_IN_PIXELS:
+		g_value_set_boolean (value, priv->width_in_pixels);
+		break;
+
+	case PROP_HEIGHT:
+		g_value_set_double (value, priv->height);
+		break;
+
+	case PROP_HEIGHT_SET:
+		g_value_set_boolean (value, priv->height_set);
+		break;
+
+	case PROP_HEIGHT_IN_PIXELS:
+		g_value_set_boolean (value, priv->height_in_pixels);
+		break;
+
+	case PROP_X:
+		g_value_set_double (value, priv->x);
+		break;
+
+	case PROP_X_IN_PIXELS:
+		g_value_set_boolean (value, priv->x_in_pixels);
+		break;
+
+	case PROP_Y:
+		g_value_set_double (value, priv->y);
+		break;
+
+	case PROP_Y_IN_PIXELS:
+		g_value_set_boolean (value, priv->y_in_pixels);
+		break;
+
+	case PROP_ANCHOR:
+		g_value_set_enum (value, priv->anchor);
+		break;
+
+	case PROP_INTERP_TYPE:
+		g_value_set_enum (value, priv->interp_type);
+		break;
+
+	case PROP_POINT_IGNORES_ALPHA:
+		g_value_set_boolean (value, priv->point_ignores_alpha);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+
+
+/* Bounds and utilities */
+
+
+/* Recomputes the bounding box of a pixbuf canvas item.  The horizontal and
+ * vertical dimensions may be specified in units or pixels, separately, so we
+ * have to compute the components individually for each dimension.
+ *
+ * Returns the coordinates with respect to the parent items coordinates.
+ */
+static void
+compute_bounding_box (FooCanvasPixbuf *gcp,
+		      double i2w_dx, double i2w_dy,
+		      double *bbox_x0, double *bbox_y0,
+		      double *bbox_x1, double *bbox_y1)
+{
+	FooCanvasItem *item;
+	PixbufPrivate *priv;
+	double x, y;
+	double width, height;
+
+	item = FOO_CANVAS_ITEM (gcp);
+	priv = gcp->priv;
+
+	if (!priv->pixbuf) {
+		*bbox_x0 = *bbox_y0 = *bbox_x1 = *bbox_y1 = 0.0;
+		return;
+	}
+
+	if (priv->x_in_pixels) {
+		x = i2w_dx + priv->x / item->canvas->pixels_per_unit;
+	} else {
+		x = i2w_dx + priv->x;
+	}
+
+	if (priv->y_in_pixels) {
+		y = i2w_dy + priv->y / item->canvas->pixels_per_unit;
+	} else {
+		y = i2w_dy + priv->y;
+	}
+
+	if (priv->width_set) {
+		width = priv->width;
+	} else {
+		width = gdk_pixbuf_get_width (priv->pixbuf);
+	}
+
+	if (priv->width_in_pixels)
+		width /= item->canvas->pixels_per_unit;
+
+	if (priv->height_set) {
+		height = priv->height;
+	} else {
+		height = gdk_pixbuf_get_height (priv->pixbuf);
+	}
+
+	if (priv->height_in_pixels)
+		height /= item->canvas->pixels_per_unit;
+
+
+	switch (priv->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_SW:
+		break;
+
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_S:
+		x -= width / 2.0;
+		break;
+
+	case GTK_ANCHOR_NE:
+	case GTK_ANCHOR_E:
+	case GTK_ANCHOR_SE:
+		x -= width;
+		break;
+
+        default:
+                break;
+	}
+
+	switch (priv->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_NE:
+		break;
+
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_E:
+		y -= height / 2.0;
+		break;
+
+	case GTK_ANCHOR_SW:
+	case GTK_ANCHOR_S:
+	case GTK_ANCHOR_SE:
+		y -= height;
+		break;
+
+        default:
+                break;
+	}
+
+	*bbox_x0 = x;
+	*bbox_y0 = y;
+	*bbox_x1 = x + width;
+	*bbox_y1 = y + height;
+}
+
+
+
+/* Update sequence */
+
+/* Update handler for the pixbuf canvas item */
+static void
+foo_canvas_pixbuf_update (FooCanvasItem *item,
+			    double i2w_dx, double i2w_dy,
+			    int flags)
+{
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+	double bbox_x0, bbox_y0, bbox_x1, bbox_y1;
+	int w, h;
+
+	gcp = FOO_CANVAS_PIXBUF (item);
+	priv = gcp->priv;
+
+	if (parent_class->update)
+		(* parent_class->update) (item, i2w_dx, i2w_dy, flags);
+
+	/* If we need a pixbuf update, or if the item changed visibility to
+	 * shown, recompute the bounding box.
+	 */
+	if (priv->need_pixbuf_update || priv->need_xform_update ||
+	    (flags & FOO_CANVAS_UPDATE_DEEP)) {
+
+		foo_canvas_item_request_redraw (item);
+
+		compute_bounding_box (gcp, i2w_dx, i2w_dy,
+				      &bbox_x0, &bbox_y0,
+				      &bbox_x1, &bbox_y1);
+
+		foo_canvas_w2c_d (item->canvas,
+				    bbox_x0, bbox_y0,
+				    &item->x1, &item->y1);
+
+		foo_canvas_w2c_d (item->canvas,
+				    bbox_x1, bbox_y1,
+				    &item->x2, &item->y2);
+
+		item->x1 = floor (item->x1);
+		item->y1 = floor (item->y1);
+		item->x2 = ceil (item->x2);
+		item->y2 = ceil (item->y2);
+
+#ifdef FOO_CANVAS_PIXBUF_VERBOSE
+		g_print ("BBox is %g %g %g %g\n", item->x1, item->y1, item->x2, item->y2);
+#endif
+
+		if (priv->pixbuf) {
+			w = item->x2 - item->x1;
+			h = item->y2 - item->y1;
+
+			if (priv->pixbuf_scaled)
+				g_object_unref (priv->pixbuf_scaled);
+			if (gdk_pixbuf_get_width (priv->pixbuf) != w ||
+			    gdk_pixbuf_get_height (priv->pixbuf) != h)
+				priv->pixbuf_scaled = gdk_pixbuf_scale_simple (
+					priv->pixbuf, w, h, priv->interp_type);
+			else
+				priv->pixbuf_scaled = g_object_ref (priv->pixbuf);
+		}
+
+		foo_canvas_item_request_redraw (item);
+
+		priv->need_pixbuf_update = FALSE;
+		priv->need_xform_update = FALSE;
+	}
+}
+
+
+
+/* Draw handler for the pixbuf canvas item */
+static void
+foo_canvas_pixbuf_draw (FooCanvasItem *item, GdkDrawable *drawable,
+			  GdkEventExpose *expose)
+{
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+	GdkRectangle display_rect, draw_rect;
+	GdkRegion *draw_region;
+	int w, h;
+
+	gcp = FOO_CANVAS_PIXBUF (item);
+	priv = gcp->priv;
+
+	if (!priv->pixbuf)
+		return;
+
+	/* Compute the area we need to repaint */
+
+	w = item->x2 - item->x1;
+	h = item->y2 - item->y1;
+
+	display_rect.x = item->x1;
+	display_rect.y = item->y1;
+	display_rect.width  = w;
+	display_rect.height = h;
+	draw_region = gdk_region_rectangle (&display_rect);
+	gdk_region_intersect (draw_region, expose->region);
+	if (!gdk_region_empty (draw_region)) {
+		gdk_region_get_clipbox (draw_region, &draw_rect);
+		gdk_draw_pixbuf (drawable, NULL, priv->pixbuf_scaled,
+			/* pixbuf 0, 0 is at pix_rect.x, pix_rect.y */
+			     draw_rect.x - display_rect.x,
+			     draw_rect.y - display_rect.y,
+			     draw_rect.x,
+			     draw_rect.y,
+			     draw_rect.width,
+			     draw_rect.height,
+			     GDK_RGB_DITHER_NORMAL, 0, 0);
+	}
+	gdk_region_destroy (draw_region);
+}
+
+
+
+
+/* Point handler for the pixbuf canvas item */
+static double
+foo_canvas_pixbuf_point (FooCanvasItem *item, double x, double y, int cx, int cy,
+			   FooCanvasItem **actual_item)
+{
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+	double x1, y1, x2, y2;
+	int px, py;
+	double no_hit;
+	guchar *src;
+	GdkPixbuf *pixbuf;
+
+	gcp = FOO_CANVAS_PIXBUF (item);
+	priv = gcp->priv;
+	pixbuf = priv->pixbuf;
+
+	*actual_item = item;
+
+	no_hit = item->canvas->pixels_per_unit * 2 + 10;
+
+	if (!priv->pixbuf)
+		return no_hit;
+
+	compute_bounding_box (gcp, 0.0, 0.0,
+			      &x1, &y1, &x2, &y2);
+
+
+	if (x < x1 || x >= x2 ||
+	    y < y1 || y >= y2)
+		return no_hit;
+
+	if (!gdk_pixbuf_get_has_alpha (pixbuf) || priv->point_ignores_alpha)
+		return 0.0;
+
+	px = (x - x1) * gdk_pixbuf_get_width (pixbuf) / (x2 - x1);
+	py = (y - y1) * gdk_pixbuf_get_height (pixbuf) / (y2 - y1);
+
+	src = gdk_pixbuf_get_pixels (pixbuf) +
+		py * gdk_pixbuf_get_rowstride (pixbuf) +
+		px * gdk_pixbuf_get_n_channels (pixbuf);
+
+	if (src[3] < 128)
+		return no_hit;
+	else
+		return 0.0;
+}
+
+
+
+static void
+foo_canvas_pixbuf_translate (FooCanvasItem *item, double dx, double dy)
+{
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+
+	gcp = FOO_CANVAS_PIXBUF (item);
+	priv = gcp->priv;
+
+	if (priv->x_in_pixels) {
+		priv->x += dx * item->canvas->pixels_per_unit;
+	} else {
+		priv->x += dx;
+	}
+
+	if (priv->y_in_pixels) {
+		priv->y += dy * item->canvas->pixels_per_unit;
+	} else {
+		priv->y += dy;
+	}
+
+	priv->need_xform_update = TRUE;
+}
+
+
+
+/* Bounds handler for the pixbuf canvas item */
+static void
+foo_canvas_pixbuf_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	FooCanvasPixbuf *gcp;
+	PixbufPrivate *priv;
+
+	gcp = FOO_CANVAS_PIXBUF (item);
+	priv = gcp->priv;
+
+	if (!priv->pixbuf) {
+		*x1 = *y1 = *x2 = *y2 = 0.0;
+		return;
+	}
+
+	compute_bounding_box (gcp, 0.0, 0.0,
+			      x1, y1, x2, y2);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,64 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/* GNOME libraries - GdkPixbuf item for the GNOME canvas
+ *
+ * Copyright (C) 1999 The Free Software Foundation
+ *
+ * Author: Federico Mena-Quintero <federico at gimp.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#ifndef FOO_CANVAS_PIXBUF_H
+#define FOO_CANVAS_PIXBUF_H
+
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+
+G_BEGIN_DECLS
+
+
+
+#define FOO_TYPE_CANVAS_PIXBUF            (foo_canvas_pixbuf_get_type ())
+#define FOO_CANVAS_PIXBUF(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_PIXBUF, FooCanvasPixbuf))
+#define FOO_CANVAS_PIXBUF_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_PIXBUF, FooCanvasPixbufClass))
+#define FOO_IS_CANVAS_PIXBUF(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_PIXBUF))
+#define FOO_IS_CANVAS_PIXBUF_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_PIXBUF))
+#define FOO_CANVAS_PIXBUF_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_PIXBUF, FooCanvasPixbufClass))
+
+
+typedef struct _FooCanvasPixbuf FooCanvasPixbuf;
+typedef struct _FooCanvasPixbufClass FooCanvasPixbufClass;
+
+struct _FooCanvasPixbuf {
+	FooCanvasItem item;
+
+	/* Private data */
+	gpointer priv;
+};
+
+struct _FooCanvasPixbufClass {
+	FooCanvasItemClass parent_class;
+};
+
+
+GtkType foo_canvas_pixbuf_get_type (void) G_GNUC_CONST;
+
+
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,854 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#undef GTK_DISABLE_DEPRECATED
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Polygon item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#include <math.h>
+#include <string.h>
+#include "libfoocanvas.h"
+
+
+#define NUM_STATIC_POINTS 256	/* Number of static points to use to avoid allocating arrays */
+
+
+#define GROW_BOUNDS(bx1, by1, bx2, by2, x, y) {	\
+	if (x < bx1)				\
+		bx1 = x;			\
+						\
+	if (x > bx2)				\
+		bx2 = x;			\
+						\
+	if (y < by1)				\
+		by1 = y;			\
+						\
+	if (y > by2)				\
+		by2 = y;			\
+}
+
+
+enum {
+	PROP_0,
+	PROP_POINTS,
+	PROP_FILL_COLOR,
+	PROP_FILL_COLOR_GDK,
+	PROP_FILL_COLOR_RGBA,
+	PROP_OUTLINE_COLOR,
+	PROP_OUTLINE_COLOR_GDK,
+	PROP_OUTLINE_COLOR_RGBA,
+	PROP_FILL_STIPPLE,
+	PROP_OUTLINE_STIPPLE,
+	PROP_WIDTH_PIXELS,
+	PROP_WIDTH_UNITS
+};
+
+
+static void foo_canvas_polygon_class_init (FooCanvasPolygonClass *class);
+static void foo_canvas_polygon_init       (FooCanvasPolygon      *poly);
+static void foo_canvas_polygon_destroy    (GtkObject               *object);
+static void foo_canvas_polygon_set_property (GObject              *object,
+					       guint                 param_id,
+					       const GValue         *value,
+					       GParamSpec           *pspec);
+static void foo_canvas_polygon_get_property (GObject              *object,
+					       guint                 param_id,
+					       GValue               *value,
+					       GParamSpec           *pspec);
+
+static void   foo_canvas_polygon_update      (FooCanvasItem *item,
+						double i2w_dx, double i2w_dy,
+						int flags);
+static void   foo_canvas_polygon_realize     (FooCanvasItem *item);
+static void   foo_canvas_polygon_unrealize   (FooCanvasItem *item);
+static void   foo_canvas_polygon_draw        (FooCanvasItem *item, GdkDrawable *drawable,
+						GdkEventExpose *expose);
+static double foo_canvas_polygon_point       (FooCanvasItem *item, double x, double y,
+						int cx, int cy, FooCanvasItem **actual_item);
+static void   foo_canvas_polygon_translate   (FooCanvasItem *item, double dx, double dy);
+static void   foo_canvas_polygon_bounds      (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2);
+
+
+static FooCanvasItemClass *parent_class;
+
+
+GtkType
+foo_canvas_polygon_get_type (void)
+{
+	static GtkType polygon_type = 0;
+
+	if (!polygon_type) {
+		/* FIXME: Convert to gobject style.  */
+		static const GtkTypeInfo polygon_info = {
+			(char *)"FooCanvasPolygon",
+			sizeof (FooCanvasPolygon),
+			sizeof (FooCanvasPolygonClass),
+			(GtkClassInitFunc) foo_canvas_polygon_class_init,
+			(GtkObjectInitFunc) foo_canvas_polygon_init,
+			NULL, /* reserved_1 */
+			NULL, /* reserved_2 */
+			(GtkClassInitFunc) NULL
+		};
+
+		polygon_type = gtk_type_unique (foo_canvas_item_get_type (), &polygon_info);
+	}
+
+	return polygon_type;
+}
+
+static void
+foo_canvas_polygon_class_init (FooCanvasPolygonClass *class)
+{
+	GObjectClass *gobject_class;
+	GtkObjectClass *object_class;
+	FooCanvasItemClass *item_class;
+
+	gobject_class = (GObjectClass *) class;
+	object_class = (GtkObjectClass *) class;
+	item_class = (FooCanvasItemClass *) class;
+
+	parent_class = gtk_type_class (foo_canvas_item_get_type ());
+
+	gobject_class->set_property = foo_canvas_polygon_set_property;
+	gobject_class->get_property = foo_canvas_polygon_get_property;
+
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_POINTS,
+                 g_param_spec_boxed ("points", NULL, NULL,
+				     FOO_TYPE_CANVAS_POINTS,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR,
+                 g_param_spec_string ("fill-color", NULL, NULL,
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_GDK,
+                 g_param_spec_boxed ("fill-color-gdk", NULL, NULL,
+				     GDK_TYPE_COLOR,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_RGBA,
+                 g_param_spec_uint ("fill-color-rgba", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_COLOR,
+                 g_param_spec_string ("outline-color", NULL, NULL,
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_COLOR_GDK,
+                 g_param_spec_boxed ("outline-color-gdk", NULL, NULL,
+				     GDK_TYPE_COLOR,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_COLOR_RGBA,
+                 g_param_spec_uint ("outline-color-rgba", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_STIPPLE,
+                 g_param_spec_object ("fill-stipple", NULL, NULL,
+                                      GDK_TYPE_DRAWABLE,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_STIPPLE,
+                 g_param_spec_object ("outline-stipple", NULL, NULL,
+                                      GDK_TYPE_DRAWABLE,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_PIXELS,
+                 g_param_spec_uint ("width-pixels", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_UNITS,
+                 g_param_spec_double ("width-units", NULL, NULL,
+				      0.0, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	object_class->destroy = foo_canvas_polygon_destroy;
+
+	item_class->update = foo_canvas_polygon_update;
+	item_class->realize = foo_canvas_polygon_realize;
+	item_class->unrealize = foo_canvas_polygon_unrealize;
+	item_class->draw = foo_canvas_polygon_draw;
+	item_class->point = foo_canvas_polygon_point;
+	item_class->translate = foo_canvas_polygon_translate;
+	item_class->bounds = foo_canvas_polygon_bounds;
+}
+
+static void
+foo_canvas_polygon_init (FooCanvasPolygon *poly)
+{
+	poly->width = 0.0;
+}
+
+static void
+foo_canvas_polygon_destroy (GtkObject *object)
+{
+	FooCanvasPolygon *poly;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_POLYGON (object));
+
+	poly = FOO_CANVAS_POLYGON (object);
+
+	/* remember, destroy can be run multiple times! */
+
+	if (poly->coords)
+		g_free (poly->coords);
+	poly->coords = NULL;
+
+	if (poly->fill_stipple)
+		g_object_unref (poly->fill_stipple);
+	poly->fill_stipple = NULL;
+
+	if (poly->outline_stipple)
+		g_object_unref (poly->outline_stipple);
+	poly->outline_stipple = NULL;
+
+	if (GTK_OBJECT_CLASS (parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
+/* Computes the bounding box of the polygon.  Assumes that the number of points in the polygon is
+ * not zero.
+ */
+static gboolean
+get_bounds (FooCanvasPolygon *poly, double *bx1, double *by1, double *bx2, double *by2)
+{
+	double *coords;
+	double x1, y1, x2, y2;
+	double width;
+	int i;
+
+	if (poly->num_points == 0)
+		return FALSE;
+
+	/* Compute bounds of vertices */
+
+	x1 = x2 = poly->coords[0];
+	y1 = y2 = poly->coords[1];
+
+	for (i = 1, coords = poly->coords + 2; i < poly->num_points; i++, coords += 2) {
+		GROW_BOUNDS (x1, y1, x2, y2, coords[0], coords[1]);
+	}
+
+	/* Add outline width */
+
+	if (poly->width_pixels)
+		width = poly->width / poly->item.canvas->pixels_per_unit;
+	else
+		width = poly->width;
+
+	width /= 2.0;
+
+	x1 -= width;
+	y1 -= width;
+	x2 += width;
+	y2 += width;
+
+	/* Done */
+
+	*bx1 = x1;
+	*by1 = y1;
+	*bx2 = x2;
+	*by2 = y2;
+	return TRUE;
+}
+
+/* Computes the bounding box of the polygon, in canvas coordinates.  Assumes that the number of points in the polygon is
+ * not zero.
+ */
+static gboolean
+get_bounds_canvas (FooCanvasPolygon *poly,
+		   double *bx1, double *by1, double *bx2, double *by2,
+		   double i2w_dx, double i2w_dy)
+{
+	FooCanvasItem *item;
+	double bbox_x0, bbox_y0, bbox_x1, bbox_y1;
+
+	item = FOO_CANVAS_ITEM (poly);
+
+	if (!get_bounds (poly, &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1))
+		return FALSE;
+
+	bbox_x0 += i2w_dx;
+	bbox_y0 += i2w_dy;
+	bbox_x1 += i2w_dx;
+	bbox_y1 += i2w_dy;
+
+	foo_canvas_w2c_rect_d (item->canvas,
+				 &bbox_x0, &bbox_y0, &bbox_x1, &bbox_y1);
+
+	/* include 1 pixel of fudge */
+	*bx1 = bbox_x0 - 1;
+	*by1 = bbox_y0 - 1;
+	*bx2 = bbox_x1 + 1;
+	*by2 = bbox_y1 + 1;
+	return TRUE;
+}
+
+/* Sets the points of the polygon item to the specified ones.  If needed, it will add a point to
+ * close the polygon.
+ */
+static void
+set_points (FooCanvasPolygon *poly, FooCanvasPoints *points)
+{
+	int duplicate;
+
+	/* See if we need to duplicate the first point */
+
+	duplicate = ((points->coords[0] != points->coords[2 * points->num_points - 2])
+		     || (points->coords[1] != points->coords[2 * points->num_points - 1]));
+
+	if (duplicate)
+		poly->num_points = points->num_points + 1;
+	else
+		poly->num_points = points->num_points;
+
+	poly->coords = g_new (double, 2 * poly->num_points);
+	memcpy (poly->coords, points->coords, 2 * points->num_points * sizeof (double));
+
+	if (duplicate) {
+		poly->coords[2 * poly->num_points - 2] = poly->coords[0];
+		poly->coords[2 * poly->num_points - 1] = poly->coords[1];
+	}
+}
+
+/* Convenience function to set a GC's foreground color to the specified pixel value */
+static void
+set_gc_foreground (GdkGC *gc, gulong pixel)
+{
+	GdkColor c;
+
+	if (!gc)
+		return;
+
+	c.pixel = pixel;
+	gdk_gc_set_foreground (gc, &c);
+}
+
+/* Sets the stipple pattern for the specified gc */
+static void
+set_stipple (GdkGC *gc, GdkBitmap **internal_stipple, GdkBitmap *stipple, int reconfigure)
+{
+	if (*internal_stipple && !reconfigure)
+		g_object_unref (*internal_stipple);
+
+	*internal_stipple = stipple;
+	if (stipple && !reconfigure)
+		g_object_ref (stipple);
+
+	if (gc) {
+		if (stipple) {
+			gdk_gc_set_stipple (gc, stipple);
+			gdk_gc_set_fill (gc, GDK_STIPPLED);
+		} else
+			gdk_gc_set_fill (gc, GDK_SOLID);
+	}
+}
+
+/* Recalculate the outline width of the polygon and set it in its GC */
+static void
+set_outline_gc_width (FooCanvasPolygon *poly)
+{
+	int width;
+
+	if (!poly->outline_gc)
+		return;
+
+	if (poly->width_pixels)
+		width = (int) poly->width;
+	else
+		width = (int) (poly->width * poly->item.canvas->pixels_per_unit + 0.5);
+
+	gdk_gc_set_line_attributes (poly->outline_gc, width,
+				    GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_ROUND);
+}
+
+static void
+foo_canvas_polygon_set_property (GObject              *object,
+				   guint                 param_id,
+				   const GValue         *value,
+				   GParamSpec           *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasPolygon *poly;
+	FooCanvasPoints *points;
+	GdkColor color = { 0, 0, 0, 0, };
+	GdkColor *pcolor;
+	int have_pixel;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_POLYGON (object));
+
+	item = FOO_CANVAS_ITEM (object);
+	poly = FOO_CANVAS_POLYGON (object);
+	have_pixel = FALSE;
+
+	switch (param_id) {
+	case PROP_POINTS:
+		points = g_value_get_boxed (value);
+
+		if (poly->coords) {
+			g_free (poly->coords);
+			poly->coords = NULL;
+		}
+
+		if (!points)
+			poly->num_points = 0;
+		else
+			set_points (poly, points);
+
+		foo_canvas_item_request_update (item);
+		break;
+
+        case PROP_FILL_COLOR:
+	case PROP_FILL_COLOR_GDK:
+	case PROP_FILL_COLOR_RGBA:
+		switch (param_id) {
+		case PROP_FILL_COLOR:
+			if (g_value_get_string (value) &&
+			    gdk_color_parse (g_value_get_string (value), &color))
+				poly->fill_set = TRUE;
+			else
+				poly->fill_set = FALSE;
+
+			poly->fill_color = ((color.red & 0xff00) << 16 |
+					    (color.green & 0xff00) << 8 |
+					    (color.blue & 0xff00) |
+					    0xff);
+			break;
+
+		case PROP_FILL_COLOR_GDK:
+			pcolor = g_value_get_boxed (value);
+			poly->fill_set = pcolor != NULL;
+
+			if (pcolor) {
+				GdkColormap *colormap;
+
+				color = *pcolor;
+				colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
+				gdk_rgb_find_color (colormap, &color);
+				have_pixel = TRUE;
+			}
+
+			poly->fill_color = ((color.red & 0xff00) << 16 |
+					    (color.green & 0xff00) << 8 |
+					    (color.blue & 0xff00) |
+					    0xff);
+			break;
+
+		case PROP_FILL_COLOR_RGBA:
+			poly->fill_set = TRUE;
+			poly->fill_color = g_value_get_uint (value);
+			break;
+		}
+#ifdef VERBOSE
+		g_print ("poly fill color = %08x\n", poly->fill_color);
+#endif
+		if (have_pixel)
+			poly->fill_pixel = color.pixel;
+		else
+			poly->fill_pixel = foo_canvas_get_color_pixel (item->canvas,
+									 poly->fill_color);
+
+		set_gc_foreground (poly->fill_gc, poly->fill_pixel);
+		foo_canvas_item_request_redraw (item);
+		break;
+
+        case PROP_OUTLINE_COLOR:
+	case PROP_OUTLINE_COLOR_GDK:
+	case PROP_OUTLINE_COLOR_RGBA:
+		switch (param_id) {
+		case PROP_OUTLINE_COLOR:
+			if (g_value_get_string (value) &&
+			    gdk_color_parse (g_value_get_string (value), &color))
+				poly->outline_set = TRUE;
+			else
+				poly->outline_set = FALSE;
+
+			poly->outline_color = ((color.red & 0xff00) << 16 |
+					       (color.green & 0xff00) << 8 |
+					       (color.blue & 0xff00) |
+					       0xff);
+			break;
+
+		case PROP_OUTLINE_COLOR_GDK:
+			pcolor = g_value_get_boxed (value);
+			poly->outline_set = pcolor != NULL;
+
+			if (pcolor) {
+				GdkColormap *colormap;
+
+				color = *pcolor;
+				colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
+				gdk_rgb_find_color (colormap, &color);
+				have_pixel = TRUE;
+			}
+
+			poly->outline_color = ((color.red & 0xff00) << 16 |
+					       (color.green & 0xff00) << 8 |
+					       (color.blue & 0xff00) |
+					       0xff);
+			break;
+
+		case PROP_OUTLINE_COLOR_RGBA:
+			poly->outline_set = TRUE;
+			poly->outline_color = g_value_get_uint (value);
+			break;
+		}
+#ifdef VERBOSE
+		g_print ("poly outline color = %08x\n", poly->outline_color);
+#endif
+		if (have_pixel)
+			poly->outline_pixel = color.pixel;
+		else
+			poly->outline_pixel = foo_canvas_get_color_pixel (item->canvas,
+									    poly->outline_color);
+
+		set_gc_foreground (poly->outline_gc, poly->outline_pixel);
+		foo_canvas_item_request_redraw (item);
+		break;
+
+	case PROP_FILL_STIPPLE:
+		set_stipple (poly->fill_gc, &poly->fill_stipple, (GdkBitmap *) g_value_get_object (value), FALSE);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_OUTLINE_STIPPLE:
+		set_stipple (poly->outline_gc, &poly->outline_stipple, (GdkBitmap *) g_value_get_object (value), FALSE);
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_WIDTH_PIXELS:
+		poly->width = g_value_get_uint (value);
+		poly->width_pixels = TRUE;
+		set_outline_gc_width (poly);
+#ifdef OLD_XFORM
+		recalc_bounds (poly);
+#else
+		foo_canvas_item_request_update (item);
+#endif
+		break;
+
+	case PROP_WIDTH_UNITS:
+		poly->width = fabs (g_value_get_double (value));
+		poly->width_pixels = FALSE;
+		set_outline_gc_width (poly);
+#ifdef OLD_XFORM
+		recalc_bounds (poly);
+#else
+		foo_canvas_item_request_update (item);
+#endif
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+/* Allocates a GdkColor structure filled with the specified pixel, and puts it into the specified
+ * value for returning it in the get_property method.
+ */
+static void
+get_color_value (FooCanvasPolygon *poly, gulong pixel, GValue *value)
+{
+	GdkColor *color;
+	GdkColormap *colormap;
+
+	color = g_new (GdkColor, 1);
+	color->pixel = pixel;
+
+	colormap = gtk_widget_get_colormap (GTK_WIDGET (poly));
+	gdk_rgb_find_color (colormap, color);
+	g_value_set_boxed (value, color);
+}
+
+static void
+foo_canvas_polygon_get_property (GObject              *object,
+				   guint                 param_id,
+				   GValue               *value,
+				   GParamSpec           *pspec)
+{
+	FooCanvasPolygon *poly;
+	FooCanvasPoints *points;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_POLYGON (object));
+
+	poly = FOO_CANVAS_POLYGON (object);
+
+	switch (param_id) {
+	case PROP_POINTS:
+		if (poly->num_points != 0) {
+			points = foo_canvas_points_new (poly->num_points);
+			memcpy (points->coords, poly->coords, 2 * poly->num_points * sizeof (double));
+			g_value_set_boxed (value, points);
+		} else
+			g_value_set_boxed (value, NULL);
+		break;
+
+	case PROP_FILL_COLOR_GDK:
+		get_color_value (poly, poly->fill_pixel, value);
+		break;
+
+	case PROP_OUTLINE_COLOR_GDK:
+		get_color_value (poly, poly->outline_pixel, value);
+		break;
+
+	case PROP_FILL_COLOR_RGBA:
+		g_value_set_uint (value, poly->fill_color);
+		break;
+
+	case PROP_OUTLINE_COLOR_RGBA:
+		g_value_set_uint (value, poly->outline_color);
+		break;
+
+	case PROP_FILL_STIPPLE:
+		g_value_set_object (value, (GObject *) poly->fill_stipple);
+		break;
+
+	case PROP_OUTLINE_STIPPLE:
+		g_value_set_object (value, (GObject *) poly->outline_stipple);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+static void
+foo_canvas_polygon_update (FooCanvasItem *item,
+			     double i2w_dx, double i2w_dy,
+			     int flags)
+{
+	FooCanvasPolygon *poly;
+	double x1, y1, x2, y2;
+
+	poly = FOO_CANVAS_POLYGON (item);
+
+	if (parent_class->update)
+		(* parent_class->update) (item, i2w_dx, i2w_dy, flags);
+
+	set_outline_gc_width (poly);
+	set_gc_foreground (poly->fill_gc, poly->fill_pixel);
+	set_gc_foreground (poly->outline_gc, poly->outline_pixel);
+	set_stipple (poly->fill_gc, &poly->fill_stipple, poly->fill_stipple, TRUE);
+	set_stipple (poly->outline_gc, &poly->outline_stipple, poly->outline_stipple, TRUE);
+
+	if (get_bounds_canvas (poly, &x1, &y1, &x2, &y2, i2w_dx, i2w_dy))
+		foo_canvas_update_bbox (item, x1, y1, x2, y2);
+}
+
+static void
+foo_canvas_polygon_realize (FooCanvasItem *item)
+{
+	FooCanvasPolygon *poly;
+
+	poly = FOO_CANVAS_POLYGON (item);
+
+	if (parent_class->realize)
+		(* parent_class->realize) (item);
+
+	poly->fill_gc = gdk_gc_new (item->canvas->layout.bin_window);
+	poly->outline_gc = gdk_gc_new (item->canvas->layout.bin_window);
+#warning "FIXME: Need to recalc pixel values, set colours, etc."
+
+#ifdef OLD_XFORM
+	(* FOO_CANVAS_ITEM_CLASS (item->object.klass)->update) (item, NULL, NULL, 0);
+#endif
+}
+
+static void
+foo_canvas_polygon_unrealize (FooCanvasItem *item)
+{
+	FooCanvasPolygon *poly;
+
+	poly = FOO_CANVAS_POLYGON (item);
+
+	g_object_unref (poly->fill_gc);
+	poly->fill_gc = NULL;
+	g_object_unref (poly->outline_gc);
+	poly->outline_gc = NULL;
+
+	if (parent_class->unrealize)
+		(* parent_class->unrealize) (item);
+}
+
+/* Converts an array of world coordinates into an array of canvas pixel coordinates.  Takes in the
+ * item->world deltas and the drawable deltas.
+ */
+static void
+item_to_canvas (FooCanvas *canvas, double *item_coords, GdkPoint *canvas_coords, int num_points,
+		double i2w_dx, double i2w_dy)
+{
+	int i;
+
+	for (i = 0; i < num_points; i++) {
+		foo_canvas_w2c (canvas,
+				  item_coords[i*2] + i2w_dx,
+				  item_coords[i*2+1] + i2w_dy,
+				  &canvas_coords->x, &canvas_coords->y);
+		canvas_coords++;
+	}
+}
+
+static void
+foo_canvas_polygon_draw (FooCanvasItem *item, GdkDrawable *drawable,
+			   GdkEventExpose *expose)
+{
+	FooCanvasPolygon *poly;
+	GdkPoint static_points[NUM_STATIC_POINTS];
+	GdkPoint *points;
+	double i2w_dx, i2w_dy;
+
+	poly = FOO_CANVAS_POLYGON (item);
+
+	if (poly->num_points == 0)
+		return;
+
+	/* Build array of canvas pixel coordinates */
+
+	if (poly->num_points <= NUM_STATIC_POINTS)
+		points = static_points;
+	else
+		points = g_new (GdkPoint, poly->num_points);
+
+	i2w_dx = 0.0;
+	i2w_dy = 0.0;
+	foo_canvas_item_i2w (item, &i2w_dx, &i2w_dy);
+
+	item_to_canvas (item->canvas,
+			poly->coords, points, poly->num_points,
+			i2w_dx, i2w_dy);
+
+	if (poly->fill_set) {
+		if (poly->fill_stipple)
+			foo_canvas_set_stipple_origin (item->canvas, poly->fill_gc);
+
+		gdk_draw_polygon (drawable, poly->fill_gc, TRUE, points, poly->num_points);
+	}
+
+	if (poly->outline_set) {
+		if (poly->outline_stipple)
+			foo_canvas_set_stipple_origin (item->canvas, poly->outline_gc);
+
+		gdk_draw_polygon (drawable, poly->outline_gc, FALSE, points, poly->num_points);
+	}
+
+	/* Done */
+
+	if (points != static_points)
+		g_free (points);
+}
+
+static double
+foo_canvas_polygon_point (FooCanvasItem *item, double x, double y,
+			    int cx, int cy, FooCanvasItem **actual_item)
+{
+	FooCanvasPolygon *poly;
+	double dist;
+	double width;
+
+	poly = FOO_CANVAS_POLYGON (item);
+
+	*actual_item = item;
+
+	dist = foo_canvas_polygon_to_point (poly->coords, poly->num_points, x, y);
+
+	if (poly->outline_set) {
+		if (poly->width_pixels)
+			width = poly->width / item->canvas->pixels_per_unit;
+		else
+			width = poly->width;
+
+		dist -= width / 2.0;
+
+		if (dist < 0.0)
+			dist = 0.0;
+	}
+
+	return dist;
+}
+
+static void
+foo_canvas_polygon_translate (FooCanvasItem *item, double dx, double dy)
+{
+        FooCanvasPolygon *poly;
+        int i;
+        double *coords;
+
+        poly = FOO_CANVAS_POLYGON (item);
+
+        for (i = 0, coords = poly->coords; i < poly->num_points; i++, coords += 2) {
+                coords[0] += dx;
+                coords[1] += dy;
+        }
+
+}
+
+static void
+foo_canvas_polygon_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	FooCanvasPolygon *poly;
+
+	g_return_if_fail (item != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_POLYGON (item));
+
+	poly = FOO_CANVAS_POLYGON (item);
+
+	if (poly->num_points == 0) {
+		*x1 = *y1 = *x2 = *y2 = 0.0;
+		return;
+	}
+
+	get_bounds (poly, x1, y1, x2, y2);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-polygon.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,123 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Polygon item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#ifndef FOO_CANVAS_POLYGON_H
+#define FOO_CANVAS_POLYGON_H
+
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+
+G_BEGIN_DECLS
+
+
+/* Polygon item for the canvas.  A polygon is a bit different from rectangles and ellipses in that
+ * points inside it will always be considered "inside", even if the fill color is not set.  If you
+ * want to have a hollow polygon, use a line item instead.
+ *
+ * The following object arguments are available:
+ *
+ * name			type			read/write	description
+ * ------------------------------------------------------------------------------------------
+ * points		FooCanvasPoints*	RW		Pointer to a FooCanvasPoints structure.
+ *								This can be created by a call to
+ *								foo_canvas_points_new() (in foo-canvas-util.h).
+ *								X coordinates are in the even indices of the
+ *								points->coords array, Y coordinates are in
+ *								the odd indices.
+ * fill_color		string			W		X color specification for fill color,
+ *								or NULL pointer for no color (transparent).
+ * fill_color_gdk	GdkColor*		RW		Allocated GdkColor for fill.
+ * outline_color	string			W		X color specification for outline color,
+ *								or NULL pointer for no color (transparent).
+ * outline_color_gdk	GdkColor*		RW		Allocated GdkColor for outline.
+ * fill_stipple		GdkBitmap*		RW		Stipple pattern for fill
+ * outline_stipple	GdkBitmap*		RW		Stipple pattern for outline
+ * width_pixels		uint			RW		Width of the outline in pixels.  The outline will
+ *								not be scaled when the canvas zoom factor is changed.
+ * width_units		double			RW		Width of the outline in canvas units.  The outline
+ *								will be scaled when the canvas zoom factor is changed.
+ */
+
+#define FOO_TYPE_CANVAS_POLYGON            (foo_canvas_polygon_get_type ())
+#define FOO_CANVAS_POLYGON(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_POLYGON, FooCanvasPolygon))
+#define FOO_CANVAS_POLYGON_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_POLYGON, FooCanvasPolygonClass))
+#define FOO_IS_CANVAS_POLYGON(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_POLYGON))
+#define FOO_IS_CANVAS_POLYGON_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_POLYGON))
+#define FOO_CANVAS_POLYGON_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_POLYGON, FooCanvasPolygonClass))
+
+
+typedef struct _FooCanvasPolygon FooCanvasPolygon;
+typedef struct _FooCanvasPolygonClass FooCanvasPolygonClass;
+
+struct _FooCanvasPolygon {
+	FooCanvasItem item;
+
+	double *coords;			/* Array of coordinates for the polygon's points.  X coords
+					 * are in the even indices, Y coords are in the odd indices.
+					 */
+	GdkBitmap *fill_stipple;	/* Stipple for fill */
+	GdkBitmap *outline_stipple;	/* Stipple for outline */
+
+	GdkGC *fill_gc;			/* GC for filling */
+	GdkGC *outline_gc;		/* GC for outline */
+
+	gulong fill_pixel;		/* Color for fill */
+	gulong outline_pixel;		/* Color for outline */
+	double width;			/* Width of polygon's outline */
+
+	int num_points;			/* Number of points in the polygon */
+	guint fill_color;		/* Fill color, RGBA */
+	guint outline_color;		/* Outline color, RGBA */
+
+        guint32 fill_rgba;		/* RGBA color for filling */ /*AA*/
+	guint32 outline_rgba;		/* RGBA color for outline */ /*AA*/
+
+	guint fill_set : 1;		/* Is fill color set? */
+	guint outline_set : 1;		/* Is outline color set? */
+	guint width_pixels : 1;		/* Is outline width specified in pixels or units? */
+};
+
+struct _FooCanvasPolygonClass {
+	FooCanvasItemClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GtkType foo_canvas_polygon_get_type (void) G_GNUC_CONST;
+
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1493 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Rectangle and ellipse item types for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#include <math.h>
+#include "foo-canvas-rect-ellipse.h"
+#include "foo-canvas-util.h"
+#include <string.h>
+
+#ifdef HAVE_RENDER
+#include <gdk/gdkx.h>
+#include <X11/extensions/Xrender.h>
+#endif
+
+/* Base class for rectangle and ellipse item types */
+
+#define noVERBOSE
+
+enum {
+	PROP_0,
+	PROP_X1,
+	PROP_Y1,
+	PROP_X2,
+	PROP_Y2,
+	PROP_FILL_COLOR,
+	PROP_FILL_COLOR_GDK,
+	PROP_FILL_COLOR_RGBA,
+	PROP_OUTLINE_COLOR,
+	PROP_OUTLINE_COLOR_GDK,
+	PROP_OUTLINE_COLOR_RGBA,
+	PROP_FILL_STIPPLE,
+	PROP_OUTLINE_STIPPLE,
+	PROP_WIDTH_PIXELS,
+	PROP_WIDTH_UNITS
+};
+
+
+static void foo_canvas_re_class_init (FooCanvasREClass *class);
+static void foo_canvas_re_init       (FooCanvasRE      *re);
+static void foo_canvas_re_destroy    (GtkObject          *object);
+static void foo_canvas_re_set_property (GObject              *object,
+					  guint                 param_id,
+					  const GValue         *value,
+					  GParamSpec           *pspec);
+static void foo_canvas_re_get_property (GObject              *object,
+					  guint                 param_id,
+					  GValue               *value,
+					  GParamSpec           *pspec);
+
+static void foo_canvas_re_update_shared (FooCanvasItem *item,
+					   double i2w_dx, double i2w_dy, int flags);
+static void foo_canvas_re_realize     (FooCanvasItem *item);
+static void foo_canvas_re_unrealize   (FooCanvasItem *item);
+static void foo_canvas_re_bounds      (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2);
+static void foo_canvas_re_translate   (FooCanvasItem *item, double dx, double dy);
+static void foo_canvas_rect_update      (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags);
+static void foo_canvas_ellipse_update      (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags);
+
+typedef struct {
+  /*< public >*/
+  int x0, y0, x1, y1;
+}  Rect;
+
+static Rect make_rect (int x0, int y0, int x1, int y1);
+static void  diff_rects (Rect r1, Rect r2, int *count, Rect result[4]);
+
+static FooCanvasItemClass *re_parent_class;
+static FooCanvasREClass *rect_parent_class;
+
+
+GType
+foo_canvas_re_get_type (void)
+{
+	static GType re_type = 0;
+
+	if (!re_type) {
+		GTypeInfo re_info = {
+		  sizeof (FooCanvasREClass),
+		  (GBaseInitFunc) NULL,
+		  (GBaseFinalizeFunc) NULL,
+		  (GClassInitFunc) foo_canvas_re_class_init,
+		  NULL,           /* class_finalize */
+		  NULL,           /* class_data */
+		  sizeof (FooCanvasRE),
+		  0,              /* n_preallocs */
+		  (GInstanceInitFunc) foo_canvas_re_init
+		};
+
+		re_type = g_type_register_static (foo_canvas_item_get_type (),
+						  "FooCanvasRE",
+						  &re_info,
+						  0);
+	}
+
+	return re_type;
+}
+
+static void
+foo_canvas_re_class_init (FooCanvasREClass *class)
+{
+	GObjectClass *gobject_class;
+	GtkObjectClass *object_class;
+	FooCanvasItemClass *item_class;
+
+	gobject_class = (GObjectClass *) class;
+	object_class = (GtkObjectClass *) class;
+	item_class = (FooCanvasItemClass *) class;
+
+	re_parent_class = g_type_class_peek_parent (class);
+
+	gobject_class->set_property = foo_canvas_re_set_property;
+	gobject_class->get_property = foo_canvas_re_get_property;
+
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_X1,
+                 g_param_spec_double ("x1", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_Y1,
+                 g_param_spec_double ("y1", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_X2,
+                 g_param_spec_double ("x2", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_Y2,
+                 g_param_spec_double ("y2", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR,
+                 g_param_spec_string ("fill-color", NULL, NULL,
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_GDK,
+                 g_param_spec_boxed ("fill-color-gdk", NULL, NULL,
+				     GDK_TYPE_COLOR,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_RGBA,
+                 g_param_spec_uint ("fill-color-rgba", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_STIPPLE,
+                 g_param_spec_object ("fill-stipple", NULL, NULL,
+                                      GDK_TYPE_DRAWABLE,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_COLOR,
+                 g_param_spec_string ("outline-color", NULL, NULL,
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_COLOR_GDK,
+                 g_param_spec_boxed ("outline-color-gdk", NULL, NULL,
+				     GDK_TYPE_COLOR,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_COLOR_RGBA,
+                 g_param_spec_uint ("outline-color-rgba", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_OUTLINE_STIPPLE,
+                 g_param_spec_object ("outline-stipple", NULL, NULL,
+                                      GDK_TYPE_DRAWABLE,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_PIXELS,
+                 g_param_spec_uint ("width-pixels", NULL, NULL,
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH_UNITS,
+                 g_param_spec_double ("width-units", NULL, NULL,
+				      0.0, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	object_class->destroy = foo_canvas_re_destroy;
+
+	item_class->realize = foo_canvas_re_realize;
+	item_class->unrealize = foo_canvas_re_unrealize;
+	item_class->translate = foo_canvas_re_translate;
+	item_class->bounds = foo_canvas_re_bounds;
+}
+
+static void
+foo_canvas_re_init (FooCanvasRE *re)
+{
+	re->x1 = 0.0;
+	re->y1 = 0.0;
+	re->x2 = 0.0;
+	re->y2 = 0.0;
+	re->width = 0.0;
+}
+
+static void
+foo_canvas_re_destroy (GtkObject *object)
+{
+	FooCanvasRE *re;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_RE (object));
+
+	re = FOO_CANVAS_RE (object);
+
+	/* remember, destroy can be run multiple times! */
+
+	if (re->fill_stipple)
+		g_object_unref (re->fill_stipple);
+	re->fill_stipple = NULL;
+
+	if (re->outline_stipple)
+		g_object_unref (re->outline_stipple);
+	re->outline_stipple = NULL;
+
+	if (GTK_OBJECT_CLASS (re_parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (re_parent_class)->destroy) (object);
+}
+
+static void get_bounds (FooCanvasRE *re, double *px1, double *py1, double *px2, double *py2)
+{
+	FooCanvasItem *item;
+	double x1, y1, x2, y2;
+	int cx1, cy1, cx2, cy2;
+	double hwidth;
+
+#ifdef VERBOSE
+	g_print ("re get_bounds\n");
+#endif
+	item = FOO_CANVAS_ITEM (re);
+
+	if (re->width_pixels)
+		hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0;
+	else
+		hwidth = re->width / 2.0;
+
+	x1 = re->x1;
+	y1 = re->y1;
+	x2 = re->x2;
+	y2 = re->y2;
+
+	foo_canvas_item_i2w (item, &x1, &y1);
+	foo_canvas_item_i2w (item, &x2, &y2);
+	foo_canvas_w2c (item->canvas, x1 - hwidth, y1 - hwidth, &cx1, &cy1);
+	foo_canvas_w2c (item->canvas, x2 + hwidth, y2 + hwidth, &cx2, &cy2);
+	*px1 = cx1;
+	*py1 = cy1;
+	*px2 = cx2;
+	*py2 = cy2;
+
+	/* Some safety fudging */
+
+	*px1 -= 2;
+	*py1 -= 2;
+	*px2 += 2;
+	*py2 += 2;
+}
+
+/* Convenience function to set a GC's foreground color to the specified pixel value */
+static void
+set_gc_foreground (GdkGC *gc, gulong pixel)
+{
+	GdkColor c;
+
+	if (!gc)
+		return;
+
+	c.pixel = pixel;
+	gdk_gc_set_foreground (gc, &c);
+}
+
+/* Sets the stipple pattern for the specified gc */
+static void
+set_stipple (GdkGC *gc, GdkBitmap **internal_stipple, GdkBitmap *stipple, int reconfigure)
+{
+	if (*internal_stipple && !reconfigure)
+		g_object_unref (*internal_stipple);
+
+	*internal_stipple = stipple;
+	if (stipple && !reconfigure)
+		g_object_ref (stipple);
+
+	if (gc) {
+		if (stipple) {
+			gdk_gc_set_stipple (gc, stipple);
+			gdk_gc_set_fill (gc, GDK_STIPPLED);
+		} else
+			gdk_gc_set_fill (gc, GDK_SOLID);
+	}
+}
+
+/* Recalculate the outline width of the rectangle/ellipse and set it in its GC */
+static void
+set_outline_gc_width (FooCanvasRE *re)
+{
+	int width;
+
+	if (!re->outline_gc)
+		return;
+
+	if (re->width_pixels)
+		width = (int) re->width;
+	else
+		width = (int) (re->width * re->item.canvas->pixels_per_unit + 0.5);
+
+	gdk_gc_set_line_attributes (re->outline_gc, width,
+				    GDK_LINE_SOLID, GDK_CAP_PROJECTING, GDK_JOIN_MITER);
+}
+
+static void
+foo_canvas_re_set_fill (FooCanvasRE *re, gboolean fill_set)
+{
+	if (re->fill_set != fill_set) {
+		re->fill_set = fill_set;
+		foo_canvas_item_request_update (FOO_CANVAS_ITEM (re));
+	}
+}
+
+static void
+foo_canvas_re_set_outline (FooCanvasRE *re, gboolean outline_set)
+{
+	if (re->outline_set != outline_set) {
+		re->outline_set = outline_set;
+		foo_canvas_item_request_update (FOO_CANVAS_ITEM (re));
+	}
+}
+
+static void
+foo_canvas_re_set_property (GObject              *object,
+			      guint                 param_id,
+			      const GValue         *value,
+			      GParamSpec           *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasRE *re;
+	GdkColor color = { 0, 0, 0, 0, };
+	GdkColor *pcolor;
+	int have_pixel;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_RE (object));
+
+	item = FOO_CANVAS_ITEM (object);
+	re = FOO_CANVAS_RE (object);
+	have_pixel = FALSE;
+
+	switch (param_id) {
+	case PROP_X1:
+		re->x1 = g_value_get_double (value);
+
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_Y1:
+		re->y1 = g_value_get_double (value);
+
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_X2:
+		re->x2 = g_value_get_double (value);
+
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_Y2:
+		re->y2 = g_value_get_double (value);
+
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_FILL_COLOR:
+	case PROP_FILL_COLOR_GDK:
+	case PROP_FILL_COLOR_RGBA:
+		switch (param_id) {
+		case PROP_FILL_COLOR:
+			if (g_value_get_string (value) &&
+			    gdk_color_parse (g_value_get_string (value), &color))
+				foo_canvas_re_set_fill (re, TRUE);
+			else
+				foo_canvas_re_set_fill (re, FALSE);
+
+			re->fill_color = ((color.red & 0xff00) << 16 |
+					  (color.green & 0xff00) << 8 |
+					  (color.blue & 0xff00) |
+					  0xff);
+			break;
+
+		case PROP_FILL_COLOR_GDK:
+			pcolor = g_value_get_boxed (value);
+			foo_canvas_re_set_fill (re, pcolor != NULL);
+
+			if (pcolor) {
+				GdkColormap *colormap;
+
+				color = *pcolor;
+				colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
+				gdk_rgb_find_color (colormap, &color);
+				have_pixel = TRUE;
+			}
+
+			re->fill_color = ((color.red & 0xff00) << 16 |
+					  (color.green & 0xff00) << 8 |
+					  (color.blue & 0xff00) |
+					  0xff);
+			break;
+
+		case PROP_FILL_COLOR_RGBA:
+			foo_canvas_re_set_fill (re, TRUE);
+			re->fill_color = g_value_get_uint (value);
+			break;
+		}
+#ifdef VERBOSE
+		g_print ("re fill color = %08x\n", re->fill_color);
+#endif
+		if (have_pixel)
+			re->fill_pixel = color.pixel;
+		else
+			re->fill_pixel = foo_canvas_get_color_pixel (item->canvas, re->fill_color);
+
+		set_gc_foreground (re->fill_gc, re->fill_pixel);
+
+		foo_canvas_item_request_redraw (item);
+		break;
+
+	case PROP_OUTLINE_COLOR:
+	case PROP_OUTLINE_COLOR_GDK:
+	case PROP_OUTLINE_COLOR_RGBA:
+		switch (param_id) {
+		case PROP_OUTLINE_COLOR:
+			if (g_value_get_string (value) &&
+			    gdk_color_parse (g_value_get_string (value), &color))
+				foo_canvas_re_set_outline (re, TRUE);
+			else
+				foo_canvas_re_set_outline (re, FALSE);
+
+			re->outline_color = ((color.red & 0xff00) << 16 |
+					     (color.green & 0xff00) << 8 |
+					     (color.blue & 0xff00) |
+					     0xff);
+			break;
+
+		case PROP_OUTLINE_COLOR_GDK:
+			pcolor = g_value_get_boxed (value);
+			foo_canvas_re_set_outline (re, pcolor != NULL);
+
+			if (pcolor) {
+				GdkColormap *colormap;
+
+				color = *pcolor;
+				colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
+				gdk_rgb_find_color (colormap, &color);
+
+				have_pixel = TRUE;
+			}
+
+			re->outline_color = ((color.red & 0xff00) << 16 |
+					     (color.green & 0xff00) << 8 |
+					     (color.blue & 0xff00) |
+					     0xff);
+			break;
+
+		case PROP_OUTLINE_COLOR_RGBA:
+			foo_canvas_re_set_outline (re, TRUE);
+			re->outline_color = g_value_get_uint (value);
+			break;
+		}
+#ifdef VERBOSE
+		g_print ("re outline color %x %x %x\n", color.red, color.green, color.blue);
+#endif
+		if (have_pixel)
+			re->outline_pixel = color.pixel;
+		else
+			re->outline_pixel = foo_canvas_get_color_pixel (item->canvas,
+									  re->outline_color);
+
+		set_gc_foreground (re->outline_gc, re->outline_pixel);
+
+		foo_canvas_item_request_redraw (item);
+		break;
+
+	case PROP_FILL_STIPPLE:
+	        set_stipple (re->fill_gc, &re->fill_stipple, (GdkBitmap *) g_value_get_object (value), FALSE);
+
+		break;
+
+	case PROP_OUTLINE_STIPPLE:
+	        set_stipple (re->outline_gc, &re->outline_stipple, (GdkBitmap *) g_value_get_object (value), FALSE);
+		break;
+
+	case PROP_WIDTH_PIXELS:
+		re->width = g_value_get_uint (value);
+		re->width_pixels = TRUE;
+		set_outline_gc_width (re);
+
+		foo_canvas_item_request_update (item);
+		break;
+
+	case PROP_WIDTH_UNITS:
+		re->width = fabs (g_value_get_double (value));
+		re->width_pixels = FALSE;
+		set_outline_gc_width (re);
+
+		foo_canvas_item_request_update (item);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+/* Allocates a GdkColor structure filled with the specified pixel, and puts it into the specified
+ * value for returning it in the get_property method.
+ */
+static void
+get_color_value (FooCanvasRE *re, gulong pixel, GValue *value)
+{
+	GdkColor color;
+	FooCanvasItem *item = (FooCanvasItem *) re;
+	GdkColormap *colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
+
+	gdk_colormap_query_color (colormap, pixel, &color);
+	g_value_set_boxed (value, &color);
+}
+
+static void
+foo_canvas_re_get_property (GObject              *object,
+			      guint                 param_id,
+			      GValue               *value,
+			      GParamSpec           *pspec)
+{
+	FooCanvasRE *re;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_RE (object));
+
+	re = FOO_CANVAS_RE (object);
+
+	switch (param_id) {
+	case PROP_X1:
+		g_value_set_double (value,  re->x1);
+		break;
+
+	case PROP_Y1:
+		g_value_set_double (value,  re->y1);
+		break;
+
+	case PROP_X2:
+		g_value_set_double (value,  re->x2);
+		break;
+
+	case PROP_Y2:
+		g_value_set_double (value,  re->y2);
+		break;
+
+	case PROP_FILL_COLOR_GDK:
+		get_color_value (re, re->fill_pixel, value);
+		break;
+
+	case PROP_OUTLINE_COLOR_GDK:
+		get_color_value (re, re->outline_pixel, value);
+		break;
+
+	case PROP_FILL_COLOR_RGBA:
+		g_value_set_uint (value,  re->fill_color);
+		break;
+
+	case PROP_OUTLINE_COLOR_RGBA:
+		g_value_set_uint (value,  re->outline_color);
+		break;
+
+	case PROP_FILL_STIPPLE:
+		g_value_set_object (value,  (GObject *) re->fill_stipple);
+		break;
+
+	case PROP_OUTLINE_STIPPLE:
+		g_value_set_object (value,  (GObject *) re->outline_stipple);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+static void
+set_colors_and_stipples (FooCanvasRE *re)
+{
+	set_gc_foreground (re->fill_gc, re->fill_pixel);
+	set_gc_foreground (re->outline_gc, re->outline_pixel);
+	set_stipple (re->fill_gc, &re->fill_stipple, re->fill_stipple, TRUE);
+	set_stipple (re->outline_gc, &re->outline_stipple, re->outline_stipple, TRUE);
+	set_outline_gc_width (re);
+}
+
+static void
+foo_canvas_re_update_shared (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags)
+{
+	FooCanvasRE *re;
+
+#ifdef VERBOSE
+	g_print ("foo_canvas_re_update_shared\n");
+#endif
+	re = FOO_CANVAS_RE (item);
+
+	if (re_parent_class->update)
+		(* re_parent_class->update) (item, i2w_dx, i2w_dy, flags);
+
+	set_colors_and_stipples (re);
+
+#ifdef OLD_XFORM
+	recalc_bounds (re);
+#endif
+}
+
+static void
+foo_canvas_re_realize (FooCanvasItem *item)
+{
+	FooCanvasRE *re;
+
+#ifdef VERBOSE
+	g_print ("foo_canvas_re_realize\n");
+#endif
+	re = FOO_CANVAS_RE (item);
+
+	if (re_parent_class->realize)
+		(* re_parent_class->realize) (item);
+
+	re->fill_gc = gdk_gc_new (item->canvas->layout.bin_window);
+	re->fill_pixel = foo_canvas_get_color_pixel (item->canvas, re->fill_color);
+	re->outline_gc = gdk_gc_new (item->canvas->layout.bin_window);
+	re->outline_pixel = foo_canvas_get_color_pixel (item->canvas, re->outline_color);
+	set_colors_and_stipples (re);
+
+#ifdef OLD_XFORM
+	(* FOO_CANVAS_ITEM_CLASS (item->object.klass)->update) (item, NULL, NULL, 0);
+#endif
+}
+
+static void
+foo_canvas_re_unrealize (FooCanvasItem *item)
+{
+	FooCanvasRE *re;
+
+	re = FOO_CANVAS_RE (item);
+
+	g_object_unref (re->fill_gc);
+	re->fill_gc = NULL;
+	g_object_unref (re->outline_gc);
+	re->outline_gc = NULL;
+
+	if (re_parent_class->unrealize)
+		(* re_parent_class->unrealize) (item);
+}
+
+static void
+foo_canvas_re_translate (FooCanvasItem *item, double dx, double dy)
+{
+	FooCanvasRE *re;
+
+#ifdef VERBOSE
+	g_print ("foo_canvas_re_translate\n");
+#endif
+	re = FOO_CANVAS_RE (item);
+
+	re->x1 += dx;
+	re->y1 += dy;
+	re->x2 += dx;
+	re->y2 += dy;
+}
+
+
+static void
+foo_canvas_re_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	FooCanvasRE *re;
+	double hwidth;
+
+#ifdef VERBOSE
+	g_print ("foo_canvas_re_bounds\n");
+#endif
+	re = FOO_CANVAS_RE (item);
+
+	if (re->width_pixels)
+		hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0;
+	else
+		hwidth = re->width / 2.0;
+
+	*x1 = re->x1 - hwidth;
+	*y1 = re->y1 - hwidth;
+	*x2 = re->x2 + hwidth;
+	*y2 = re->y2 + hwidth;
+}
+
+/* Rectangle item */
+
+
+static void foo_canvas_rect_class_init (FooCanvasRectClass *class);
+static void foo_canvas_rect_init (FooCanvasRect *rect);
+static void foo_canvas_rect_finalize (GObject *object);
+static void foo_canvas_rect_realize  (FooCanvasItem *item);
+
+static void   foo_canvas_rect_draw   (FooCanvasItem *item, GdkDrawable *drawable, GdkEventExpose *expose);
+static double foo_canvas_rect_point  (FooCanvasItem *item, double x, double y, int cx, int cy,
+				        FooCanvasItem **actual_item);
+
+struct _FooCanvasRectPrivate {
+	Rect last_update_rect;
+	Rect last_outline_update_rect;
+	int last_outline_update_width;
+
+#ifdef HAVE_RENDER
+	gboolean use_render;
+	XRenderPictFormat *format;
+#endif
+};
+
+GType
+foo_canvas_rect_get_type (void)
+{
+	static GType rect_type = 0;
+
+	if (!rect_type) {
+		GTypeInfo rect_info = {
+		  sizeof (FooCanvasRectClass),
+		  (GBaseInitFunc) NULL,
+		  (GBaseFinalizeFunc) NULL,
+		  (GClassInitFunc) foo_canvas_rect_class_init,
+		  NULL,           /* class_finalize */
+		  NULL,           /* class_data */
+		  sizeof (FooCanvasRect),
+		  0,              /* n_preallocs */
+		  (GInstanceInitFunc) foo_canvas_rect_init
+		};
+
+		rect_type = g_type_register_static (foo_canvas_re_get_type (),
+						    "FooCanvasRect",
+						    &rect_info,
+						    0);
+	}
+
+	return rect_type;
+}
+
+static void
+foo_canvas_rect_class_init (FooCanvasRectClass *class)
+{
+	FooCanvasItemClass *item_class;
+
+	rect_parent_class = g_type_class_peek_parent (class);
+
+	item_class = (FooCanvasItemClass *) class;
+
+	item_class->draw = foo_canvas_rect_draw;
+	item_class->point = foo_canvas_rect_point;
+	item_class->update = foo_canvas_rect_update;
+	item_class->realize = foo_canvas_rect_realize;
+
+	G_OBJECT_CLASS (class)->finalize = foo_canvas_rect_finalize;
+
+}
+
+static void
+foo_canvas_rect_init (FooCanvasRect *rect)
+{
+	rect->priv = g_new0 (FooCanvasRectPrivate, 1);
+}
+
+static void
+foo_canvas_rect_finalize (GObject *object)
+{
+	FooCanvasRect *rect = FOO_CANVAS_RECT (object);
+
+	if (rect->priv) {
+		g_free (rect->priv);
+	}
+
+	G_OBJECT_CLASS (rect_parent_class)->finalize (object);
+}
+
+static void
+foo_canvas_rect_realize  (FooCanvasItem *item)
+{
+#ifdef HAVE_RENDER
+	FooCanvasRectPrivate *priv;
+	int event_base, error_base;
+	Display *dpy;
+
+	priv = FOO_CANVAS_RECT (item)->priv;
+
+	dpy = gdk_x11_drawable_get_xdisplay (GTK_WIDGET (item->canvas)->window);
+	priv->use_render = XRenderQueryExtension (dpy, &event_base, &error_base);
+
+	if (priv->use_render) {
+		GdkVisual *gdk_visual;
+		Visual *visual;
+
+		gdk_visual = gtk_widget_get_visual (GTK_WIDGET (item->canvas));
+		visual = gdk_x11_visual_get_xvisual (gdk_visual);
+
+		priv->format = XRenderFindVisualFormat (dpy, visual);
+	}
+#endif
+
+	if (FOO_CANVAS_ITEM_CLASS (rect_parent_class)->realize) {
+		(* FOO_CANVAS_ITEM_CLASS (rect_parent_class)->realize) (item);
+	}
+}
+
+
+static void
+render_rect_alpha (FooCanvasRect *rect,
+		   GdkDrawable *drawable,
+		   int x, int y,
+		   int width, int height,
+		   guint32 rgba)
+{
+	GdkPixbuf *pixbuf;
+	guchar *data;
+	int rowstride, i;
+	guchar r, g, b, a;
+	FooCanvasRectPrivate *priv;
+
+	if (width <= 0 || height <= 0 ) {
+		return;
+	}
+
+	priv = rect->priv;
+
+	r = (rgba >> 24) & 0xff;
+	g = (rgba >> 16) & 0xff;
+	b = (rgba >> 8) & 0xff;
+	a = (rgba >> 0) & 0xff;
+
+#ifdef HAVE_RENDER
+	/* Every visual is not guaranteed to have a matching
+	 * XRenderPictFormat. So make sure that format is not null before
+	 * trying to render using Xrender calls.
+	 */
+	if (priv->use_render && (priv->format != NULL)) {
+		GdkDrawable *real_drawable;
+		int x_offset, y_offset;
+
+		Display *dpy;
+		Picture  pict;
+		XRenderPictureAttributes attributes;
+		XRenderColor color;
+
+		gdk_window_get_internal_paint_info (drawable, &real_drawable,
+						    &x_offset, &y_offset);
+
+		dpy = gdk_x11_drawable_get_xdisplay (real_drawable);
+
+		pict = XRenderCreatePicture (dpy,
+					     gdk_x11_drawable_get_xid (real_drawable),
+					     priv->format,
+					     0,
+					     &attributes);
+
+
+		/* Convert to premultiplied alpha: */
+		r = r * a / 255;
+		g = g * a / 255;
+		b = b * a / 255;
+
+		color.red = (r << 8) + r;
+		color.green = (g << 8) + g;
+		color.blue = (b << 8) + b;
+		color.alpha = (a << 8) + a;
+
+		XRenderFillRectangle (dpy,
+				      PictOpOver,
+				      pict,
+				      &color,
+				      x - x_offset, y - y_offset,
+				      width, height);
+
+		XRenderFreePicture (dpy, pict);
+
+		return;
+	}
+#endif
+	pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, width, height);
+	data = gdk_pixbuf_get_pixels (pixbuf);
+	rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+
+	r = (rgba >> 24) & 0xff;
+	g = (rgba >> 16) & 0xff;
+	b = (rgba >> 8) & 0xff;
+	a = (rgba >> 0) & 0xff;
+
+	for (i = 0; i < width*4; ) {
+		data[i++] = r;
+		data[i++] = g;
+		data[i++] = b;
+		data[i++] = a;
+	}
+
+	for (i = 1; i < height; i++) {
+		memcpy (data + i*rowstride, data, width*4);
+	}
+
+	gdk_draw_pixbuf (drawable, NULL, pixbuf,
+			 0, 0, x, y, width, height,
+			 GDK_RGB_DITHER_NONE, 0, 0);
+	g_object_unref (pixbuf);
+}
+
+
+static void
+foo_canvas_rect_draw (FooCanvasItem *item, GdkDrawable *drawable, GdkEventExpose *expose)
+{
+	FooCanvasRE *re;
+	double x1, y1, x2, y2;
+	int cx1, cy1, cx2, cy2;
+	double i2w_dx, i2w_dy;
+
+	re = FOO_CANVAS_RE (item);
+
+	/* Get canvas pixel coordinates */
+	i2w_dx = 0.0;
+	i2w_dy = 0.0;
+	foo_canvas_item_i2w (item, &i2w_dx, &i2w_dy);
+
+	x1 = re->x1 + i2w_dx;
+	y1 = re->y1 + i2w_dy;
+	x2 = re->x2 + i2w_dx;
+	y2 = re->y2 + i2w_dy;
+
+	foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1);
+	foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2);
+
+	if (re->fill_set) {
+		if ((re->fill_color & 0xff) != 255) {
+			GdkRectangle *rectangles;
+			gint i, n_rectangles;
+			GdkRectangle draw_rect;
+			GdkRectangle part;
+
+			draw_rect.x = cx1;
+			draw_rect.y = cy1;
+			draw_rect.width = cx2 - cx1 + 1;
+			draw_rect.height = cy2 - cy1 + 1;
+
+			/* For alpha mode, only render the parts of the region
+			   that are actually exposed */
+			gdk_region_get_rectangles (expose->region,
+						   &rectangles,
+						   &n_rectangles);
+
+			for (i = 0; i < n_rectangles; i++) {
+				if (gdk_rectangle_intersect (&rectangles[i],
+							     &draw_rect,
+							     &part)) {
+					render_rect_alpha (FOO_CANVAS_RECT (item),
+							   drawable,
+							   part.x, part.y,
+							   part.width, part.height,
+							   re->fill_color);
+				}
+			}
+
+			g_free (rectangles);
+		} else {
+			if (re->fill_stipple)
+				foo_canvas_set_stipple_origin (item->canvas, re->fill_gc);
+
+			gdk_draw_rectangle (drawable,
+					    re->fill_gc,
+					    TRUE,
+					    cx1, cy1,
+					    cx2 - cx1 + 1,
+					    cy2 - cy1 + 1);
+		}
+	}
+
+	if (re->outline_set) {
+		if (re->outline_stipple)
+			foo_canvas_set_stipple_origin (item->canvas, re->outline_gc);
+
+		gdk_draw_rectangle (drawable,
+				    re->outline_gc,
+				    FALSE,
+				    cx1,
+				    cy1,
+				    cx2 - cx1,
+				    cy2 - cy1);
+	}
+}
+
+static double
+foo_canvas_rect_point (FooCanvasItem *item, double x, double y, int cx, int cy, FooCanvasItem **actual_item)
+{
+	FooCanvasRE *re;
+	double x1, y1, x2, y2;
+	double hwidth;
+	double dx, dy;
+	double tmp;
+
+#ifdef VERBOSE
+	g_print ("foo_canvas_rect_point\n");
+#endif
+	re = FOO_CANVAS_RE (item);
+
+	*actual_item = item;
+
+	/* Find the bounds for the rectangle plus its outline width */
+
+	x1 = re->x1;
+	y1 = re->y1;
+	x2 = re->x2;
+	y2 = re->y2;
+
+	if (re->outline_set) {
+		if (re->width_pixels)
+			hwidth = (re->width / item->canvas->pixels_per_unit) / 2.0;
+		else
+			hwidth = re->width / 2.0;
+
+		x1 -= hwidth;
+		y1 -= hwidth;
+		x2 += hwidth;
+		y2 += hwidth;
+	} else
+		hwidth = 0.0;
+
+	/* Is point inside rectangle (which can be hollow if it has no fill set)? */
+
+	if ((x >= x1) && (y >= y1) && (x <= x2) && (y <= y2)) {
+		if (re->fill_set || !re->outline_set)
+			return 0.0;
+
+		dx = x - x1;
+		tmp = x2 - x;
+		if (tmp < dx)
+			dx = tmp;
+
+		dy = y - y1;
+		tmp = y2 - y;
+		if (tmp < dy)
+			dy = tmp;
+
+		if (dy < dx)
+			dx = dy;
+
+		dx -= 2.0 * hwidth;
+
+		if (dx < 0.0)
+			return 0.0;
+		else
+			return dx;
+	}
+
+	/* Point is outside rectangle */
+
+	if (x < x1)
+		dx = x1 - x;
+	else if (x > x2)
+		dx = x - x2;
+	else
+		dx = 0.0;
+
+	if (y < y1)
+		dy = y1 - y;
+	else if (y > y2)
+		dy = y - y2;
+	else
+		dy = 0.0;
+
+	return sqrt (dx * dx + dy * dy);
+}
+
+static void
+request_redraw_borders (FooCanvas *canvas,
+			Rect     *update_rect,
+			int     width)
+{
+	foo_canvas_request_redraw (canvas,
+				   update_rect->x0, update_rect->y0,
+				   update_rect->x1, update_rect->y0 + width);
+	foo_canvas_request_redraw (canvas,
+				   update_rect->x0, update_rect->y1-width,
+				   update_rect->x1, update_rect->y1);
+	foo_canvas_request_redraw (canvas,
+				   update_rect->x0,       update_rect->y0,
+				   update_rect->x0+width, update_rect->y1);
+	foo_canvas_request_redraw (canvas,
+				   update_rect->x1-width, update_rect->y0,
+				   update_rect->x1,       update_rect->y1);
+}
+
+
+static void
+foo_canvas_rect_update (FooCanvasItem *item, double i2w_dx, double i2w_dy, gint flags)
+{
+	FooCanvasRE *re;
+	double x1, y1, x2, y2;
+	int cx1, cy1, cx2, cy2;
+	int repaint_rects_count, i;
+	int width_pixels;
+	int width_lt, width_rb;
+	Rect update_rect, repaint_rects[4];
+	FooCanvasRectPrivate *priv;
+
+	foo_canvas_re_update_shared (item, i2w_dx, i2w_dy, flags);
+
+	re = FOO_CANVAS_RE (item);
+	priv = FOO_CANVAS_RECT (item)->priv;
+
+	x1 = re->x1 + i2w_dx;
+	y1 = re->y1 + i2w_dy;
+	x2 = re->x2 + i2w_dx;
+	y2 = re->y2 + i2w_dy;
+
+	foo_canvas_w2c (item->canvas, x1, y1, &cx1, &cy1);
+	foo_canvas_w2c (item->canvas, x2, y2, &cx2, &cy2);
+
+	update_rect = make_rect (cx1, cy1, cx2+1, cy2+1);
+#if 0
+	foo_canvas_request_redraw (item->canvas,
+				   update_rect.x0, update_rect.y0,
+				   update_rect.x1, update_rect.y1);
+	foo_canvas_request_redraw (item->canvas,
+				   priv->last_update_rect.x0, priv->last_update_rect.y0,
+				   priv->last_update_rect.x1, priv->last_update_rect.y1);
+#else
+	diff_rects (update_rect, priv->last_update_rect,
+		    &repaint_rects_count, repaint_rects);
+	for (i = 0; i < repaint_rects_count; i++) {
+		foo_canvas_request_redraw (item->canvas,
+					   repaint_rects[i].x0, repaint_rects[i].y0,
+					   repaint_rects[i].x1, repaint_rects[i].y1);
+	}
+#endif
+	priv->last_update_rect = update_rect;
+
+	if (re->outline_set) {
+		/* Outline and bounding box */
+		if (re->width_pixels)
+			width_pixels = (int) re->width;
+		else
+			width_pixels = (int) floor (re->width * re->item.canvas->pixels_per_unit + 0.5);
+
+		width_lt = width_pixels / 2;
+		width_rb = (width_pixels + 1) / 2;
+
+		cx1 -= width_lt;
+		cy1 -= width_lt;
+		cx2 += width_rb;
+		cy2 += width_rb;
+
+		update_rect = make_rect (cx1, cy1, cx2, cy2);
+		request_redraw_borders (item->canvas, &update_rect,
+					(width_lt + width_rb));
+		request_redraw_borders (item->canvas, &priv->last_outline_update_rect,
+					priv->last_outline_update_width);
+		priv->last_outline_update_rect = update_rect;
+		priv->last_outline_update_width = width_lt + width_rb;
+
+		item->x1 = cx1;
+		item->y1 = cy1;
+		item->x2 = cx2+1;
+		item->y2 = cy2+1;
+	} else {
+		item->x1 = cx1;
+		item->y1 = cy1;
+		item->x2 = cx2+1;
+		item->y2 = cy2+1;
+	}
+}
+
+/* Ellipse item */
+
+
+static void foo_canvas_ellipse_class_init (FooCanvasEllipseClass *class);
+
+static void   foo_canvas_ellipse_draw   (FooCanvasItem *item, GdkDrawable *drawable, GdkEventExpose *expose);
+static double foo_canvas_ellipse_point  (FooCanvasItem *item, double x, double y, int cx, int cy,
+					   FooCanvasItem **actual_item);
+
+
+GType
+foo_canvas_ellipse_get_type (void)
+{
+	static GType ellipse_type = 0;
+
+	if (!ellipse_type) {
+		GTypeInfo ellipse_info = {
+		  sizeof (FooCanvasEllipseClass),
+		  (GBaseInitFunc) NULL,
+		  (GBaseFinalizeFunc) NULL,
+		  (GClassInitFunc) foo_canvas_ellipse_class_init,
+		  NULL,           /* class_finalize */
+		  NULL,           /* class_data */
+		  sizeof (FooCanvasEllipse),
+		  0,              /* n_preallocs */
+		  (GInstanceInitFunc) NULL
+
+		};
+
+		ellipse_type = g_type_register_static (foo_canvas_re_get_type (),
+						       "FooCanvasEllipse",
+						       &ellipse_info,
+						       0);
+	}
+
+	return ellipse_type;
+}
+
+static void
+foo_canvas_ellipse_class_init (FooCanvasEllipseClass *class)
+{
+	FooCanvasItemClass *item_class;
+
+	item_class = (FooCanvasItemClass *) class;
+
+	item_class->draw = foo_canvas_ellipse_draw;
+	item_class->point = foo_canvas_ellipse_point;
+	item_class->update = foo_canvas_ellipse_update;
+}
+
+static void
+foo_canvas_ellipse_draw (FooCanvasItem *item, GdkDrawable *drawable, GdkEventExpose *expose)
+{
+	FooCanvasRE *re;
+	int x1, y1, x2, y2;
+	double i2w_dx, i2w_dy;
+
+	re = FOO_CANVAS_RE (item);
+
+	/* Get canvas pixel coordinates */
+
+	i2w_dx = 0.0;
+	i2w_dy = 0.0;
+	foo_canvas_item_i2w (item, &i2w_dx, &i2w_dy);
+
+	foo_canvas_w2c (item->canvas,
+			  re->x1 + i2w_dx,
+			  re->y1 + i2w_dy,
+			  &x1, &y1);
+	foo_canvas_w2c (item->canvas,
+			  re->x2 + i2w_dx,
+			  re->y2 + i2w_dy,
+			  &x2, &y2);
+
+	if (re->fill_set) {
+		if (re->fill_stipple)
+			foo_canvas_set_stipple_origin (item->canvas, re->fill_gc);
+
+		gdk_draw_arc (drawable,
+			      re->fill_gc,
+			      TRUE,
+			      x1,
+			      y1,
+			      x2 - x1,
+			      y2 - y1,
+			      0 * 64,
+			      360 * 64);
+	}
+
+	if (re->outline_set) {
+		if (re->outline_stipple)
+			foo_canvas_set_stipple_origin (item->canvas, re->outline_gc);
+
+		gdk_draw_arc (drawable,
+			      re->outline_gc,
+			      FALSE,
+			      x1,
+			      y1,
+			      x2 - x1,
+			      y2 - y1,
+			      0 * 64,
+			      360 * 64);
+	}
+}
+
+static double
+foo_canvas_ellipse_point (FooCanvasItem *item, double x, double y, int cx, int cy, FooCanvasItem **actual_item)
+{
+	FooCanvasRE *re;
+	double dx, dy;
+	double scaled_dist;
+	double outline_dist;
+	double center_dist;
+	double width;
+	double a, b;
+	double diamx, diamy;
+
+	re = FOO_CANVAS_RE (item);
+
+	*actual_item = item;
+
+	if (re->outline_set) {
+		if (re->width_pixels)
+			width = re->width / item->canvas->pixels_per_unit;
+		else
+			width = re->width;
+	} else
+		width = 0.0;
+
+	/* Compute the distance between the center of the ellipse and the point, with the ellipse
+	 * considered as being scaled to a circle.
+	 */
+
+	dx = x - (re->x1 + re->x2) / 2.0;
+	dy = y - (re->y1 + re->y2) / 2.0;
+	center_dist = sqrt (dx * dx + dy * dy);
+
+	a = dx / ((re->x2 + width - re->x1) / 2.0);
+	b = dy / ((re->y2 + width - re->y1) / 2.0);
+	scaled_dist = sqrt (a * a + b * b);
+
+	/* If the scaled distance is greater than 1, then we are outside.  Compute the distance from
+	 * the point to the edge of the circle, then scale back to the original un-scaled coordinate
+	 * system.
+	 */
+
+	if (scaled_dist > 1.0)
+		return (center_dist / scaled_dist) * (scaled_dist - 1.0);
+
+	/* We are inside the outer edge of the ellipse.  If it is filled, then we are "inside".
+	 * Otherwise, do the same computation as above, but also check whether we are inside the
+	 * outline.
+	 */
+
+	if (re->fill_set)
+		return 0.0;
+
+	if (scaled_dist > FOO_CANVAS_EPSILON)
+		outline_dist = (center_dist / scaled_dist) * (1.0 - scaled_dist) - width;
+	else {
+		/* Handle very small distance */
+
+		diamx = re->x2 - re->x1;
+		diamy = re->y2 - re->y1;
+
+		if (diamx < diamy)
+			outline_dist = (diamx - width) / 2.0;
+		else
+			outline_dist = (diamy - width) / 2.0;
+	}
+
+	if (outline_dist < 0.0)
+		return 0.0;
+
+	return outline_dist;
+}
+
+static void
+foo_canvas_ellipse_update (FooCanvasItem *item, double i2w_dx, double i2w_dy, gint flags)
+{
+	FooCanvasRE *re;
+	double x0, y0, x1, y1;
+
+#ifdef VERBOSE
+	g_print ("foo_canvas_sllipse_update item %x\n", item);
+#endif
+
+	foo_canvas_re_update_shared (item, i2w_dx, i2w_dy, flags);
+	re = FOO_CANVAS_RE (item);
+
+	get_bounds (re, &x0, &y0, &x1, &y1);
+	foo_canvas_update_bbox (item, x0, y0, x1, y1);
+}
+
+static int
+rect_empty (const Rect *src) {
+  return (src->x1 <= src->x0 || src->y1 <= src->y0);
+}
+
+static Rect
+make_rect (int x0, int y0, int x1, int y1)
+{
+	Rect r;
+
+	r.x0 = x0;
+	r.y0 = y0;
+	r.x1 = x1;
+	r.y1 = y1;
+	return r;
+}
+
+static gboolean
+rects_intersect (Rect r1, Rect r2)
+{
+	if (r1.x0 >= r2.x1) {
+		return FALSE;
+	}
+	if (r2.x0 >= r1.x1) {
+		return FALSE;
+	}
+	if (r1.y0 >= r2.y1) {
+		return FALSE;
+	}
+	if (r2.y0 >= r1.y1) {
+		return FALSE;
+	}
+	return TRUE;
+}
+
+static void
+diff_rects_guts (Rect ra, Rect rb, int *count, Rect result[4])
+{
+	if (ra.x0 < rb.x0) {
+		result[(*count)++] = make_rect (ra.x0, ra.y0, rb.x0, ra.y1);
+	}
+	if (ra.y0 < rb.y0) {
+		result[(*count)++] = make_rect (ra.x0, ra.y0, ra.x1, rb.y0);
+	}
+	if (ra.x1 < rb.x1) {
+		result[(*count)++] = make_rect (ra.x1, rb.y0, rb.x1, rb.y1);
+	}
+	if (ra.y1 < rb.y1) {
+		result[(*count)++] = make_rect (rb.x0, ra.y1, rb.x1, rb.y1);
+	}
+}
+
+static void
+diff_rects (Rect r1, Rect r2, int *count, Rect result[4])
+{
+	g_assert (count != NULL);
+	g_assert (result != NULL);
+
+	*count = 0;
+
+	if (rects_intersect (r1, r2)) {
+		diff_rects_guts (r1, r2, count, result);
+		diff_rects_guts (r2, r1, count, result);
+	} else {
+		if (!rect_empty (&r1)) {
+			result[(*count)++] = r1;
+		}
+		if (!rect_empty (&r2)) {
+			result[(*count)++] = r2;
+		}
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,176 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Rectangle and ellipse item types for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#ifndef FOO_CANVAS_RECT_ELLIPSE_H
+#define FOO_CANVAS_RECT_ELLIPSE_H
+
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+
+G_BEGIN_DECLS
+
+
+/* Base class for rectangle and ellipse item types.  These are defined by their top-left and
+ * bottom-right corners.  Rectangles and ellipses share the following arguments:
+ *
+ * name			type		read/write	description
+ * ------------------------------------------------------------------------------------------
+ * x1			double		RW		Leftmost coordinate of rectangle or ellipse
+ * y1			double		RW		Topmost coordinate of rectangle or ellipse
+ * x2			double		RW		Rightmost coordinate of rectangle or ellipse
+ * y2			double		RW		Bottommost coordinate of rectangle or ellipse
+ * fill_color		string		W		X color specification for fill color,
+ *							or NULL pointer for no color (transparent)
+ * fill_color_gdk	GdkColor*	RW		Allocated GdkColor for fill
+ * outline_color	string		W		X color specification for outline color,
+ *							or NULL pointer for no color (transparent)
+ * outline_color_gdk	GdkColor*	RW		Allocated GdkColor for outline
+ * fill_stipple		GdkBitmap*	RW		Stipple pattern for fill
+ * outline_stipple	GdkBitmap*	RW		Stipple pattern for outline
+ * width_pixels		uint		RW		Width of the outline in pixels.  The outline will
+ *							not be scaled when the canvas zoom factor is changed.
+ * width_units		double		RW		Width of the outline in canvas units.  The outline
+ *							will be scaled when the canvas zoom factor is changed.
+ */
+
+
+#define FOO_TYPE_CANVAS_RE            (foo_canvas_re_get_type ())
+#define FOO_CANVAS_RE(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_RE, FooCanvasRE))
+#define FOO_CANVAS_RE_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_RE, FooCanvasREClass))
+#define FOO_IS_CANVAS_RE(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_RE))
+#define FOO_IS_CANVAS_RE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_RE))
+#define FOO_CANVAS_RE_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_RE, FooCanvasREClass))
+
+
+typedef struct _FooCanvasRE      FooCanvasRE;
+typedef struct _FooCanvasREClass FooCanvasREClass;
+
+struct _FooCanvasRE {
+	FooCanvasItem item;
+
+	GdkBitmap *fill_stipple;	/* Stipple for fill */
+	GdkBitmap *outline_stipple;	/* Stipple for outline */
+
+	GdkGC *fill_gc;			/* GC for filling */
+	GdkGC *outline_gc;		/* GC for outline */
+
+	gulong fill_pixel;		/* Fill color */
+	gulong outline_pixel;		/* Outline color */
+
+	double x1, y1, x2, y2;		/* Corners of item */
+	double width;			/* Outline width */
+
+	guint fill_color;		/* Fill color, RGBA */
+	guint outline_color;		/* Outline color, RGBA */
+
+	/* Configuration flags */
+
+	unsigned int fill_set : 1;	/* Is fill color set? */
+	unsigned int outline_set : 1;	/* Is outline color set? */
+	unsigned int width_pixels : 1;	/* Is outline width specified in pixels or units? */
+};
+
+struct _FooCanvasREClass {
+	FooCanvasItemClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GType foo_canvas_re_get_type (void) G_GNUC_CONST;
+
+
+/* Rectangle item.  No configurable or queryable arguments are available (use those in
+ * FooCanvasRE).
+ */
+
+
+#define FOO_TYPE_CANVAS_RECT            (foo_canvas_rect_get_type ())
+#define FOO_CANVAS_RECT(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_RECT, FooCanvasRect))
+#define FOO_CANVAS_RECT_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_RECT, FooCanvasRectClass))
+#define FOO_IS_CANVAS_RECT(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_RECT))
+#define FOO_IS_CANVAS_RECT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_RECT))
+#define FOO_CANVAS_RECT_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_RECT, FooCanvasRectClass))
+
+
+typedef struct _FooCanvasRect FooCanvasRect;
+typedef struct _FooCanvasRectPrivate FooCanvasRectPrivate;
+typedef struct _FooCanvasRectClass FooCanvasRectClass;
+
+struct _FooCanvasRect {
+	FooCanvasRE re;
+	FooCanvasRectPrivate *priv;
+};
+
+struct _FooCanvasRectClass {
+	FooCanvasREClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GType foo_canvas_rect_get_type (void) G_GNUC_CONST;
+
+
+/* Ellipse item.  No configurable or queryable arguments are available (use those in
+ * FooCanvasRE).
+ */
+
+
+#define FOO_TYPE_CANVAS_ELLIPSE            (foo_canvas_ellipse_get_type ())
+#define FOO_CANVAS_ELLIPSE(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ELLIPSE, FooCanvasEllipse))
+#define FOO_CANVAS_ELLIPSE_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ELLIPSE, FooCanvasEllipseClass))
+#define FOO_IS_CANVAS_ELLIPSE(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_ELLIPSE))
+#define FOO_IS_CANVAS_ELLIPSE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_ELLIPSE))
+#define FOO_CANVAS_ELLIPSE_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_ELLIPSE, FooCanvasEllipseClass))
+
+
+typedef struct _FooCanvasEllipse FooCanvasEllipse;
+typedef struct _FooCanvasEllipseClass FooCanvasEllipseClass;
+
+struct _FooCanvasEllipse {
+	FooCanvasRE re;
+};
+
+struct _FooCanvasEllipseClass {
+	FooCanvasREClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GType foo_canvas_ellipse_get_type (void) G_GNUC_CONST;
+
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1624 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#undef GTK_DISABLE_DEPRECATED
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Text item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas
+ * widget.  Tk is copyrighted by the Regents of the University of California,
+ * Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ * Port to Pango co-done by Gergõ Érdi <cactus at cactus.rulez.org>
+ */
+
+#include <math.h>
+#include <string.h>
+#include "foo-canvas-text.h"
+
+#include "foo-canvas-util.h"
+#include "foo-canvas-i18n.h"
+
+
+
+/* Object argument IDs */
+enum {
+	PROP_0,
+
+	/* Text contents */
+	PROP_TEXT,
+	PROP_MARKUP,
+
+	/* Position */
+	PROP_X,
+	PROP_Y,
+
+	/* Font */
+	PROP_FONT,
+	PROP_FONT_DESC,
+	PROP_FAMILY, PROP_FAMILY_SET,
+
+	/* Style */
+	PROP_ATTRIBUTES,
+	PROP_STYLE,         PROP_STYLE_SET,
+	PROP_VARIANT,       PROP_VARIANT_SET,
+	PROP_WEIGHT,        PROP_WEIGHT_SET,
+	PROP_STRETCH,	    PROP_STRETCH_SET,
+	PROP_SIZE,          PROP_SIZE_SET,
+	PROP_SIZE_POINTS,
+	PROP_STRIKETHROUGH, PROP_STRIKETHROUGH_SET,
+	PROP_UNDERLINE,     PROP_UNDERLINE_SET,
+	PROP_RISE,          PROP_RISE_SET,
+	PROP_SCALE,         PROP_SCALE_SET,
+
+	/* Clipping */
+	PROP_ANCHOR,
+	PROP_JUSTIFICATION,
+	PROP_CLIP_WIDTH,
+	PROP_CLIP_HEIGHT,
+	PROP_CLIP,
+	PROP_WRAP_WIDTH,
+	PROP_X_OFFSET,
+	PROP_Y_OFFSET,
+
+	/* Coloring */
+	PROP_FILL_COLOR,
+	PROP_FILL_COLOR_GDK,
+	PROP_FILL_COLOR_RGBA,
+	PROP_FILL_STIPPLE,
+
+	/* Rendered size accessors */
+	PROP_TEXT_WIDTH,
+	PROP_TEXT_HEIGHT
+};
+
+struct _FooCanvasTextPrivate {
+	gint placeholder;
+};
+
+static void foo_canvas_text_class_init (FooCanvasTextClass *class);
+static void foo_canvas_text_init (FooCanvasText *text);
+static void foo_canvas_text_destroy (GtkObject *object);
+static void foo_canvas_text_set_property (GObject            *object,
+					    guint               param_id,
+					    const GValue       *value,
+					    GParamSpec         *pspec);
+static void foo_canvas_text_get_property (GObject            *object,
+					    guint               param_id,
+					    GValue             *value,
+					    GParamSpec         *pspec);
+
+static void   foo_canvas_text_update    (FooCanvasItem  *item,
+					   double            i2w_dx,
+					   double            i2w_dy,
+					   int               flags);
+static void   foo_canvas_text_realize   (FooCanvasItem  *item);
+static void   foo_canvas_text_unrealize (FooCanvasItem  *item);
+static void   foo_canvas_text_draw      (FooCanvasItem  *item,
+					   GdkDrawable      *drawable,
+					   GdkEventExpose   *expose);
+static double foo_canvas_text_point     (FooCanvasItem  *item,
+					   double            x,
+					   double            y,
+					   int               cx,
+					   int               cy,
+					   FooCanvasItem **actual_item);
+static void   foo_canvas_text_translate (FooCanvasItem  *item,
+					   double            dx,
+					   double            dy);
+static void   foo_canvas_text_bounds    (FooCanvasItem  *item,
+					   double           *x1,
+					   double           *y1,
+					   double           *x2,
+					   double           *y2);
+
+static void foo_canvas_text_set_markup (FooCanvasText *textitem,
+					  const gchar     *markup);
+
+static void foo_canvas_text_set_font_desc    (FooCanvasText *textitem,
+					        PangoFontDescription *font_desc);
+
+static void foo_canvas_text_apply_font_desc  (FooCanvasText *textitem);
+static void foo_canvas_text_apply_attributes (FooCanvasText *textitem);
+
+static void add_attr (PangoAttrList  *attr_list,
+		      PangoAttribute *attr);
+
+static FooCanvasItemClass *parent_class;
+
+
+
+/**
+ * foo_canvas_text_get_type:
+ * @void:
+ *
+ * Registers the &FooCanvasText class if necessary, and returns the type ID
+ * associated to it.
+ *
+ * Return value: The type ID of the &FooCanvasText class.
+ **/
+GtkType
+foo_canvas_text_get_type (void)
+{
+	static GtkType text_type = 0;
+
+	if (!text_type) {
+		/* FIXME: Convert to gobject style.  */
+		static const GtkTypeInfo text_info = {
+			(char *)"FooCanvasText",
+			sizeof (FooCanvasText),
+			sizeof (FooCanvasTextClass),
+			(GtkClassInitFunc) foo_canvas_text_class_init,
+			(GtkObjectInitFunc) foo_canvas_text_init,
+			NULL, /* reserved_1 */
+			NULL, /* reserved_2 */
+			(GtkClassInitFunc) NULL
+		};
+
+		text_type = gtk_type_unique (foo_canvas_item_get_type (), &text_info);
+	}
+
+	return text_type;
+}
+
+/* Class initialization function for the text item */
+static void
+foo_canvas_text_class_init (FooCanvasTextClass *class)
+{
+	GObjectClass *gobject_class;
+	GtkObjectClass *object_class;
+	FooCanvasItemClass *item_class;
+
+	gobject_class = (GObjectClass *) class;
+	object_class = (GtkObjectClass *) class;
+	item_class = (FooCanvasItemClass *) class;
+
+	parent_class = gtk_type_class (foo_canvas_item_get_type ());
+
+	gobject_class->set_property = foo_canvas_text_set_property;
+	gobject_class->get_property = foo_canvas_text_get_property;
+
+	/* Text */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_TEXT,
+                 g_param_spec_string ("text",
+				      _("Text"),
+				      _("Text to render"),
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_MARKUP,
+                 g_param_spec_string ("markup",
+				      _("Markup"),
+				      _("Marked up text to render"),
+				      NULL,
+                                      (G_PARAM_WRITABLE)));
+
+	/* Position */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_X,
+                 g_param_spec_double ("x", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_Y,
+                 g_param_spec_double ("y", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+
+	/* Font */
+	g_object_class_install_property
+                (gobject_class,
+                 PROP_FONT,
+                 g_param_spec_string ("font",
+				      _("Font"),
+				      _("Font description as a string"),
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+        g_object_class_install_property
+		(gobject_class,
+		 PROP_FONT_DESC,
+		 g_param_spec_boxed ("font-desc",
+				     _("Font description"),
+				     _("Font description as a PangoFontDescription struct"),
+				     PANGO_TYPE_FONT_DESCRIPTION,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_FAMILY,
+		 g_param_spec_string ("family",
+				      _("Font family"),
+				      _("Name of the font family, e.g. Sans, Helvetica, Times, Monospace"),
+				      NULL,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	/* Style */
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ATTRIBUTES,
+                 g_param_spec_boxed ("attributes", NULL, NULL,
+				     PANGO_TYPE_ATTR_LIST,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_STYLE,
+		 g_param_spec_enum ("style",
+				    _("Font style"),
+				    _("Font style"),
+				    PANGO_TYPE_STYLE,
+				    PANGO_STYLE_NORMAL,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_VARIANT,
+		 g_param_spec_enum ("variant",
+				    _("Font variant"),
+				    _("Font variant"),
+				    PANGO_TYPE_VARIANT,
+				    PANGO_VARIANT_NORMAL,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_WEIGHT,
+		 g_param_spec_int ("weight",
+				   _("Font weight"),
+				   _("Font weight"),
+				   0,
+				   G_MAXINT,
+				   PANGO_WEIGHT_NORMAL,
+				   GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_STRETCH,
+		 g_param_spec_enum ("stretch",
+				    _("Font stretch"),
+				    _("Font stretch"),
+				    PANGO_TYPE_STRETCH,
+				    PANGO_STRETCH_NORMAL,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SIZE,
+		 g_param_spec_int ("size",
+				   _("Font size"),
+				   _("Font size"),
+				   0,
+				   G_MAXINT,
+				   0,
+				   GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		PROP_SIZE_POINTS,
+		g_param_spec_double ("size-points",
+				     _("Font points"),
+				     _("Font size in points"),
+				     0.0,
+				     G_MAXDOUBLE,
+				     0.0,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_RISE,
+		 g_param_spec_int ("rise",
+				   _("Rise"),
+				   _("Offset of text above the baseline (below the baseline if rise is negative)"),
+				   -G_MAXINT,
+				   G_MAXINT,
+				   0,
+				   GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_STRIKETHROUGH,
+		 g_param_spec_boolean ("strikethrough",
+				       _("Strikethrough"),
+				       _("Whether to strike through the text"),
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_UNDERLINE,
+		 g_param_spec_enum ("underline",
+				    _("Underline"),
+				    _("Style of underline for this text"),
+				    PANGO_TYPE_UNDERLINE,
+				    PANGO_UNDERLINE_NONE,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SCALE,
+		 g_param_spec_double ("scale",
+				      _("Scale"),
+				      _("Size of font, relative to default size"),
+				      0.0,
+				      G_MAXDOUBLE,
+				      1.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+        g_object_class_install_property
+		(gobject_class,
+                 PROP_ANCHOR,
+                 g_param_spec_enum ("anchor", NULL, NULL,
+                                    GTK_TYPE_ANCHOR_TYPE,
+                                    GTK_ANCHOR_CENTER,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_JUSTIFICATION,
+                 g_param_spec_enum ("justification", NULL, NULL,
+                                    GTK_TYPE_JUSTIFICATION,
+                                    GTK_JUSTIFY_LEFT,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_CLIP_WIDTH,
+                 g_param_spec_double ("clip-width", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_CLIP_HEIGHT,
+                 g_param_spec_double ("clip-height", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_CLIP,
+                 g_param_spec_boolean ("clip", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WRAP_WIDTH,
+                 g_param_spec_double ("wrap-width", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_X_OFFSET,
+                 g_param_spec_double ("x-offset", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_Y_OFFSET,
+                 g_param_spec_double ("y-offset", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR,
+                 g_param_spec_string ("fill-color",
+				      _("Color"),
+				      _("Text color, as string"),
+                                      NULL,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_GDK,
+                 g_param_spec_boxed ("fill-color-gdk",
+				     _("Color"),
+				     _("Text color, as a GdkColor"),
+				     GDK_TYPE_COLOR,
+				     GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_COLOR_RGBA,
+                 g_param_spec_uint ("fill-color-rgba",
+				    _("Color"),
+				    _("Text color, as an R/G/B/A combined integer"),
+				    0, G_MAXUINT, 0,
+				    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_FILL_STIPPLE,
+                 g_param_spec_object ("fill-stipple", NULL, NULL,
+                                      GDK_TYPE_DRAWABLE,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_TEXT_WIDTH,
+                 g_param_spec_double ("text-width",
+				      _("Text width"),
+				      _("Width of the rendered text"),
+				      0.0, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_TEXT_HEIGHT,
+                 g_param_spec_double ("text-height",
+				      _("Text height"),
+				      _("Height of the rendered text"),
+				      0.0, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	/* Style props are set (explicitly applied) or not */
+#define ADD_SET_PROP(propname, propval, nick, blurb) g_object_class_install_property (gobject_class, propval, g_param_spec_boolean (propname, nick, blurb, FALSE, GSF_PARAM_STATIC | G_PARAM_READWRITE))
+
+	ADD_SET_PROP ("family-set", PROP_FAMILY_SET,
+		      _("Font family set"),
+		      _("Whether this tag affects the font family"));
+
+	ADD_SET_PROP ("style-set", PROP_STYLE_SET,
+		      _("Font style set"),
+		      _("Whether this tag affects the font style"));
+
+	ADD_SET_PROP ("variant-set", PROP_VARIANT_SET,
+		      _("Font variant set"),
+		      _("Whether this tag affects the font variant"));
+
+	ADD_SET_PROP ("weight-set", PROP_WEIGHT_SET,
+		      _("Font weight set"),
+		      _("Whether this tag affects the font weight"));
+
+	ADD_SET_PROP ("stretch-set", PROP_STRETCH_SET,
+		      _("Font stretch set"),
+		      _("Whether this tag affects the font stretch"));
+
+	ADD_SET_PROP ("size-set", PROP_SIZE_SET,
+		      _("Font size set"),
+		      _("Whether this tag affects the font size"));
+
+	ADD_SET_PROP ("rise-set", PROP_RISE_SET,
+		      _("Rise set"),
+		      _("Whether this tag affects the rise"));
+
+	ADD_SET_PROP ("strikethrough-set", PROP_STRIKETHROUGH_SET,
+		      _("Strikethrough set"),
+		      _("Whether this tag affects strikethrough"));
+
+	ADD_SET_PROP ("underline-set", PROP_UNDERLINE_SET,
+		      _("Underline set"),
+		      _("Whether this tag affects underlining"));
+
+	ADD_SET_PROP ("scale-set", PROP_SCALE_SET,
+		      _("Scale set"),
+		      _("Whether this tag affects font scaling"));
+#undef ADD_SET_PROP
+
+	object_class->destroy = foo_canvas_text_destroy;
+
+	item_class->update = foo_canvas_text_update;
+	item_class->realize = foo_canvas_text_realize;
+	item_class->unrealize = foo_canvas_text_unrealize;
+	item_class->draw = foo_canvas_text_draw;
+	item_class->point = foo_canvas_text_point;
+	item_class->translate = foo_canvas_text_translate;
+	item_class->bounds = foo_canvas_text_bounds;
+}
+
+/* Object initialization function for the text item */
+static void
+foo_canvas_text_init (FooCanvasText *text)
+{
+	text->x = 0.0;
+	text->y = 0.0;
+	text->anchor = GTK_ANCHOR_CENTER;
+	text->justification = GTK_JUSTIFY_LEFT;
+	text->clip_width = 0.0;
+	text->clip_height = 0.0;
+	text->xofs = 0.0;
+	text->yofs = 0.0;
+	text->layout = NULL;
+
+	text->font_desc = NULL;
+
+	text->underline     = PANGO_UNDERLINE_NONE;
+	text->strikethrough = FALSE;
+	text->rise          = 0;
+
+	text->underline_set = FALSE;
+	text->strike_set    = FALSE;
+	text->rise_set      = FALSE;
+
+	text->priv = g_new (FooCanvasTextPrivate, 1);
+}
+
+/* Destroy handler for the text item */
+static void
+foo_canvas_text_destroy (GtkObject *object)
+{
+	FooCanvasText *text;
+
+	g_return_if_fail (FOO_IS_CANVAS_TEXT (object));
+
+	text = FOO_CANVAS_TEXT (object);
+
+	/* remember, destroy can be run multiple times! */
+
+	g_free (text->text);
+	text->text = NULL;
+
+	if (text->layout)
+	    g_object_unref (G_OBJECT (text->layout));
+	text->layout = NULL;
+
+	if (text->font_desc) {
+		pango_font_description_free (text->font_desc);
+		text->font_desc = NULL;
+	}
+
+	if (text->attr_list)
+		pango_attr_list_unref (text->attr_list);
+	text->attr_list = NULL;
+
+	if (text->stipple)
+		g_object_unref (text->stipple);
+	text->stipple = NULL;
+
+	g_free (text->priv);
+	text->priv = NULL;
+
+	if (GTK_OBJECT_CLASS (parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
+static void
+get_bounds (FooCanvasText *text, double *px1, double *py1, double *px2, double *py2)
+{
+	FooCanvasItem *item;
+	double wx, wy;
+
+	item = FOO_CANVAS_ITEM (text);
+
+	/* Get canvas pixel coordinates for text position */
+
+
+	wx = text->x;
+	wy = text->y;
+	foo_canvas_item_i2w (item, &wx, &wy);
+	foo_canvas_w2c (item->canvas, wx + text->xofs, wy + text->yofs, &text->cx, &text->cy);
+
+	/* Get canvas pixel coordinates for clip rectangle position */
+
+	foo_canvas_w2c (item->canvas, wx, wy, &text->clip_cx, &text->clip_cy);
+	text->clip_cwidth = text->clip_width * item->canvas->pixels_per_unit;
+	text->clip_cheight = text->clip_height * item->canvas->pixels_per_unit;
+
+	/* Anchor text */
+
+	switch (text->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_SW:
+		break;
+
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_S:
+		text->cx -= text->max_width / 2;
+		text->clip_cx -= text->clip_cwidth / 2;
+		break;
+
+	case GTK_ANCHOR_NE:
+	case GTK_ANCHOR_E:
+	case GTK_ANCHOR_SE:
+		text->cx -= text->max_width;
+		text->clip_cx -= text->clip_cwidth;
+		break;
+
+	default:
+		break;
+	}
+
+	switch (text->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_NE:
+		break;
+
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_E:
+		text->cy -= text->height / 2;
+		text->clip_cy -= text->clip_cheight / 2;
+		break;
+
+	case GTK_ANCHOR_SW:
+	case GTK_ANCHOR_S:
+	case GTK_ANCHOR_SE:
+		text->cy -= text->height;
+		text->clip_cy -= text->clip_cheight;
+		break;
+
+	default:
+		break;
+	}
+
+	/* Bounds */
+
+	if (text->clip) {
+		*px1 = text->clip_cx;
+		*py1 = text->clip_cy;
+		*px2 = text->clip_cx + text->clip_cwidth;
+		*py2 = text->clip_cy + text->clip_cheight;
+	} else {
+		*px1 = text->cx;
+		*py1 = text->cy;
+		*px2 = text->cx + text->max_width;
+		*py2 = text->cy + text->height;
+	}
+}
+
+/* Convenience function to set the text's GC's foreground color */
+static void
+set_text_gc_foreground (FooCanvasText *text)
+{
+	GdkColor c;
+
+	if (!text->gc)
+		return;
+
+	c.pixel = text->pixel;
+	gdk_gc_set_foreground (text->gc, &c);
+}
+
+/* Sets the stipple pattern for the text */
+static void
+set_stipple (FooCanvasText *text, GdkBitmap *stipple, int reconfigure)
+{
+	if (text->stipple && !reconfigure)
+		g_object_unref (text->stipple);
+
+	text->stipple = stipple;
+	if (stipple && !reconfigure)
+		g_object_ref (stipple);
+
+	if (text->gc) {
+		if (stipple) {
+			gdk_gc_set_stipple (text->gc, stipple);
+			gdk_gc_set_fill (text->gc, GDK_STIPPLED);
+		} else
+			gdk_gc_set_fill (text->gc, GDK_SOLID);
+	}
+}
+
+static PangoFontMask
+get_property_font_set_mask (guint prop_id)
+{
+  switch (prop_id)
+    {
+    case PROP_FAMILY_SET:
+      return PANGO_FONT_MASK_FAMILY;
+    case PROP_STYLE_SET:
+      return PANGO_FONT_MASK_STYLE;
+    case PROP_VARIANT_SET:
+      return PANGO_FONT_MASK_VARIANT;
+    case PROP_WEIGHT_SET:
+      return PANGO_FONT_MASK_WEIGHT;
+    case PROP_STRETCH_SET:
+      return PANGO_FONT_MASK_STRETCH;
+    case PROP_SIZE_SET:
+      return PANGO_FONT_MASK_SIZE;
+    }
+
+  return 0;
+}
+
+static void
+ensure_font (FooCanvasText *text)
+{
+	if (!text->font_desc)
+		text->font_desc = pango_font_description_new ();
+}
+
+/* Set_arg handler for the text item */
+static void
+foo_canvas_text_set_property (GObject            *object,
+				guint               param_id,
+				const GValue       *value,
+				GParamSpec         *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasText *text;
+	GdkColor color = { 0, 0, 0, 0, };
+	GdkColor *pcolor;
+	gboolean color_changed;
+	int have_pixel;
+	PangoAlignment align;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_TEXT (object));
+
+	item = FOO_CANVAS_ITEM (object);
+	text = FOO_CANVAS_TEXT (object);
+
+	color_changed = FALSE;
+	have_pixel = FALSE;
+
+
+	if (!text->layout) {
+		text->layout = gtk_widget_create_pango_layout  (GTK_WIDGET (item->canvas), NULL);
+	}
+
+	switch (param_id) {
+	case PROP_TEXT:
+		if (text->text)
+			g_free (text->text);
+
+		text->text = g_value_dup_string (value);
+		pango_layout_set_text (text->layout, text->text, -1);
+
+		break;
+
+	case PROP_MARKUP:
+		foo_canvas_text_set_markup (text,
+					      g_value_get_string (value));
+		break;
+
+	case PROP_X:
+		text->x = g_value_get_double (value);
+		break;
+
+	case PROP_Y:
+		text->y = g_value_get_double (value);
+		break;
+
+	case PROP_FONT: {
+		const char *font_name;
+		PangoFontDescription *font_desc;
+
+		font_name = g_value_get_string (value);
+		if (font_name)
+			font_desc = pango_font_description_from_string (font_name);
+		else
+			font_desc = NULL;
+
+		foo_canvas_text_set_font_desc (text, font_desc);
+		if (font_desc)
+			pango_font_description_free (font_desc);
+
+		break;
+	}
+
+	case PROP_FONT_DESC:
+		foo_canvas_text_set_font_desc (text, g_value_peek_pointer (value));
+		break;
+
+	case PROP_FAMILY:
+	case PROP_STYLE:
+	case PROP_VARIANT:
+	case PROP_WEIGHT:
+	case PROP_STRETCH:
+	case PROP_SIZE:
+	case PROP_SIZE_POINTS:
+		ensure_font (text);
+
+		switch (param_id) {
+		case PROP_FAMILY:
+			pango_font_description_set_family (text->font_desc,
+							   g_value_get_string (value));
+			break;
+		case PROP_STYLE:
+			pango_font_description_set_style (text->font_desc,
+							  g_value_get_enum (value));
+			break;
+		case PROP_VARIANT:
+			pango_font_description_set_variant (text->font_desc,
+							    g_value_get_enum (value));
+			break;
+		case PROP_WEIGHT:
+			pango_font_description_set_weight (text->font_desc,
+							   g_value_get_int (value));
+			break;
+		case PROP_STRETCH:
+			pango_font_description_set_stretch (text->font_desc,
+							    g_value_get_enum (value));
+			break;
+		case PROP_SIZE:
+			/* FIXME: This is bogus! It should be pixels, not points/PANGO_SCALE! */
+			pango_font_description_set_size (text->font_desc,
+							 g_value_get_int (value));
+			break;
+		case PROP_SIZE_POINTS:
+			pango_font_description_set_size (text->font_desc,
+							 g_value_get_double (value) * PANGO_SCALE);
+			break;
+		}
+
+		foo_canvas_text_apply_font_desc (text);
+		break;
+
+	case PROP_FAMILY_SET:
+	case PROP_STYLE_SET:
+	case PROP_VARIANT_SET:
+	case PROP_WEIGHT_SET:
+	case PROP_STRETCH_SET:
+	case PROP_SIZE_SET:
+		if (!g_value_get_boolean (value) && text->font_desc)
+			pango_font_description_unset_fields (text->font_desc,
+							     get_property_font_set_mask (param_id));
+		break;
+
+	case PROP_SCALE:
+		text->scale = g_value_get_double (value);
+		text->scale_set = TRUE;
+
+		foo_canvas_text_apply_font_desc (text);
+		break;
+
+	case PROP_SCALE_SET:
+		text->scale_set = g_value_get_boolean (value);
+
+		foo_canvas_text_apply_font_desc (text);
+		break;
+
+	case PROP_UNDERLINE:
+		text->underline = g_value_get_enum (value);
+		text->underline_set = TRUE;
+
+		foo_canvas_text_apply_attributes (text);
+		break;
+
+	case PROP_UNDERLINE_SET:
+		text->underline_set = g_value_get_boolean (value);
+
+		foo_canvas_text_apply_attributes (text);
+		break;
+
+	case PROP_STRIKETHROUGH:
+		text->strikethrough = g_value_get_boolean (value);
+		text->strike_set = TRUE;
+
+		foo_canvas_text_apply_attributes (text);
+		break;
+
+	case PROP_STRIKETHROUGH_SET:
+		text->strike_set = g_value_get_boolean (value);
+
+		foo_canvas_text_apply_attributes (text);
+		break;
+
+	case PROP_RISE:
+		text->rise = g_value_get_int (value);
+		text->rise_set = TRUE;
+
+		foo_canvas_text_apply_attributes (text);
+		break;
+
+	case PROP_RISE_SET:
+		text->rise_set = TRUE;
+
+		foo_canvas_text_apply_attributes (text);
+		break;
+
+	case PROP_ATTRIBUTES:
+		if (text->attr_list)
+			pango_attr_list_unref (text->attr_list);
+
+		text->attr_list = g_value_peek_pointer (value);
+		if (text->attr_list)
+			pango_attr_list_ref (text->attr_list);
+
+		foo_canvas_text_apply_attributes (text);
+		break;
+
+	case PROP_ANCHOR:
+		text->anchor = g_value_get_enum (value);
+		break;
+
+	case PROP_JUSTIFICATION:
+		text->justification = g_value_get_enum (value);
+
+		switch (text->justification) {
+		case GTK_JUSTIFY_LEFT:
+		        align = PANGO_ALIGN_LEFT;
+			break;
+		case GTK_JUSTIFY_CENTER:
+		        align = PANGO_ALIGN_CENTER;
+			break;
+		case GTK_JUSTIFY_RIGHT:
+		        align = PANGO_ALIGN_RIGHT;
+			break;
+		default:
+		        /* GTK_JUSTIFY_FILL isn't supported yet. */
+		        align = PANGO_ALIGN_LEFT;
+			break;
+		}
+		pango_layout_set_alignment (text->layout, align);
+		break;
+
+	case PROP_CLIP_WIDTH:
+		text->clip_width = fabs (g_value_get_double (value));
+		break;
+
+	case PROP_CLIP_HEIGHT:
+		text->clip_height = fabs (g_value_get_double (value));
+		break;
+
+	case PROP_CLIP:
+		text->clip = g_value_get_boolean (value);
+		break;
+
+	case PROP_WRAP_WIDTH: {
+		double w = fabs (g_value_get_double (value));
+		pango_layout_set_width (text->layout,
+			w * text->item.canvas->pixels_per_unit * PANGO_SCALE);
+
+		break;
+	}
+
+	case PROP_X_OFFSET:
+		text->xofs = g_value_get_double (value);
+		break;
+
+	case PROP_Y_OFFSET:
+		text->yofs = g_value_get_double (value);
+		break;
+
+        case PROP_FILL_COLOR: {
+		const char *color_name;
+
+		color_name = g_value_get_string (value);
+		if (color_name) {
+			gdk_color_parse (color_name, &color);
+
+			text->rgba = ((color.red & 0xff00) << 16 |
+				      (color.green & 0xff00) << 8 |
+				      (color.blue & 0xff00) |
+				      0xff);
+			color_changed = TRUE;
+		}
+		break;
+	}
+
+	case PROP_FILL_COLOR_GDK:
+		pcolor = g_value_get_boxed (value);
+		if (pcolor) {
+		    GdkColormap *colormap;
+
+		    color = *pcolor;
+		    colormap = gtk_widget_get_colormap (GTK_WIDGET (item->canvas));
+		    gdk_rgb_find_color (colormap, &color);
+		    have_pixel = TRUE;
+		}
+
+		text->rgba = ((color.red & 0xff00) << 16 |
+			      (color.green & 0xff00) << 8|
+			      (color.blue & 0xff00) |
+			      0xff);
+		color_changed = TRUE;
+		break;
+
+        case PROP_FILL_COLOR_RGBA:
+		text->rgba = g_value_get_uint (value);
+		color_changed = TRUE;
+		break;
+
+	case PROP_FILL_STIPPLE:
+		set_stipple (text, (GdkBitmap *)g_value_get_object (value), FALSE);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+
+	if (color_changed) {
+		if (have_pixel)
+			text->pixel = color.pixel;
+		else
+			text->pixel = foo_canvas_get_color_pixel (item->canvas, text->rgba);
+
+		set_text_gc_foreground (text);
+	}
+
+	/* Calculate text dimensions */
+
+	if (text->layout)
+	        pango_layout_get_pixel_size (text->layout,
+					     &text->max_width,
+					     &text->height);
+	else {
+		text->max_width = 0;
+		text->height = 0;
+	}
+
+	foo_canvas_item_request_update (item);
+}
+
+/* Get_arg handler for the text item */
+static void
+foo_canvas_text_get_property (GObject            *object,
+				guint               param_id,
+				GValue             *value,
+				GParamSpec         *pspec)
+{
+	FooCanvasText *text;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_TEXT (object));
+
+	text = FOO_CANVAS_TEXT (object);
+
+	switch (param_id) {
+	case PROP_TEXT:
+		g_value_set_string (value, text->text);
+		break;
+
+	case PROP_X:
+		g_value_set_double (value, text->x);
+		break;
+
+	case PROP_Y:
+		g_value_set_double (value, text->y);
+		break;
+
+	case PROP_FONT:
+	case PROP_FONT_DESC:
+	case PROP_FAMILY:
+	case PROP_STYLE:
+	case PROP_VARIANT:
+	case PROP_WEIGHT:
+	case PROP_STRETCH:
+	case PROP_SIZE:
+	case PROP_SIZE_POINTS:
+		ensure_font (text);
+
+		switch (param_id) {
+		case PROP_FONT:
+		{
+			/* FIXME GValue imposes a totally gratuitous string copy
+			 * here, we could just hand off string ownership
+			 */
+			gchar *str;
+
+			str = pango_font_description_to_string (text->font_desc);
+			g_value_set_string (value, str);
+			g_free (str);
+
+			break;
+		}
+
+		case PROP_FONT_DESC:
+			g_value_set_boxed (value, text->font_desc);
+			break;
+
+		case PROP_FAMILY:
+			g_value_set_string (value, pango_font_description_get_family (text->font_desc));
+			break;
+
+		case PROP_STYLE:
+			g_value_set_enum (value, pango_font_description_get_style (text->font_desc));
+			break;
+
+		case PROP_VARIANT:
+			g_value_set_enum (value, pango_font_description_get_variant (text->font_desc));
+			break;
+
+		case PROP_WEIGHT:
+			g_value_set_int (value, pango_font_description_get_weight (text->font_desc));
+			break;
+
+		case PROP_STRETCH:
+			g_value_set_enum (value, pango_font_description_get_stretch (text->font_desc));
+			break;
+
+		case PROP_SIZE:
+			g_value_set_int (value, pango_font_description_get_size (text->font_desc));
+			break;
+
+		case PROP_SIZE_POINTS:
+			g_value_set_double (value, ((double)pango_font_description_get_size (text->font_desc)) / (double)PANGO_SCALE);
+			break;
+		}
+		break;
+
+	case PROP_FAMILY_SET:
+	case PROP_STYLE_SET:
+	case PROP_VARIANT_SET:
+	case PROP_WEIGHT_SET:
+	case PROP_STRETCH_SET:
+	case PROP_SIZE_SET:
+	{
+		PangoFontMask set_mask = text->font_desc ? pango_font_description_get_set_fields (text->font_desc) : 0;
+		PangoFontMask test_mask = get_property_font_set_mask (param_id);
+		g_value_set_boolean (value, (set_mask & test_mask) != 0);
+
+		break;
+	}
+
+	case PROP_SCALE:
+		g_value_set_double (value, text->scale);
+		break;
+	case PROP_SCALE_SET:
+		g_value_set_boolean (value, text->scale_set);
+		break;
+
+	case PROP_UNDERLINE:
+		g_value_set_enum (value, text->underline);
+		break;
+	case PROP_UNDERLINE_SET:
+		g_value_set_boolean (value, text->underline_set);
+		break;
+
+	case PROP_STRIKETHROUGH:
+		g_value_set_boolean (value, text->strikethrough);
+		break;
+	case PROP_STRIKETHROUGH_SET:
+		g_value_set_boolean (value, text->strike_set);
+		break;
+
+	case PROP_RISE:
+		g_value_set_int (value, text->rise);
+		break;
+	case PROP_RISE_SET:
+		g_value_set_boolean (value, text->rise_set);
+		break;
+
+	case PROP_ATTRIBUTES:
+		g_value_set_boxed (value, text->attr_list);
+		break;
+
+	case PROP_ANCHOR:
+		g_value_set_enum (value, text->anchor);
+		break;
+
+	case PROP_JUSTIFICATION:
+		g_value_set_enum (value, text->justification);
+		break;
+
+	case PROP_CLIP_WIDTH:
+		g_value_set_double (value, text->clip_width);
+		break;
+
+	case PROP_CLIP_HEIGHT:
+		g_value_set_double (value, text->clip_height);
+		break;
+
+	case PROP_CLIP:
+		g_value_set_boolean (value, text->clip);
+		break;
+
+	case PROP_WRAP_WIDTH:
+		g_value_set_double (value,
+			pango_layout_get_width (text->layout) / PANGO_SCALE);
+		break;
+
+	case PROP_X_OFFSET:
+		g_value_set_double (value, text->xofs);
+		break;
+
+	case PROP_Y_OFFSET:
+		g_value_set_double (value, text->yofs);
+		break;
+
+	case PROP_FILL_COLOR:
+                g_value_take_string (value,
+				     g_strdup_printf ("#%02x%02x%02x",
+						      text->rgba >> 24,
+						      (text->rgba >> 16) & 0xff,
+						      (text->rgba >> 8) & 0xff));
+		break;
+
+	case PROP_FILL_COLOR_GDK: {
+		FooCanvas *canvas = FOO_CANVAS_ITEM (text)->canvas;
+		GdkColormap *colormap = gtk_widget_get_colormap (GTK_WIDGET (canvas));
+		GdkColor color;
+
+		gdk_colormap_query_color (colormap, text->pixel, &color);
+		g_value_set_boxed (value, &color);
+		break;
+	}
+	case PROP_FILL_COLOR_RGBA:
+		g_value_set_uint (value, text->rgba);
+		break;
+
+	case PROP_FILL_STIPPLE:
+		g_value_set_object (value, text->stipple);
+		break;
+
+	case PROP_TEXT_WIDTH:
+		g_value_set_double (value, text->max_width / text->item.canvas->pixels_per_unit);
+		break;
+
+	case PROP_TEXT_HEIGHT:
+		g_value_set_double (value, text->height / text->item.canvas->pixels_per_unit);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+/* */
+static void
+foo_canvas_text_apply_font_desc (FooCanvasText *text)
+{
+	PangoFontDescription *font_desc =
+		pango_font_description_copy (
+			GTK_WIDGET (FOO_CANVAS_ITEM (text)->canvas)->style->font_desc);
+
+	if (text->font_desc)
+		pango_font_description_merge (font_desc, text->font_desc, TRUE);
+
+	pango_layout_set_font_description (text->layout, font_desc);
+	pango_font_description_free (font_desc);
+}
+
+static void
+add_attr (PangoAttrList  *attr_list,
+	  PangoAttribute *attr)
+{
+	attr->start_index = 0;
+	attr->end_index = G_MAXINT;
+
+	pango_attr_list_insert (attr_list, attr);
+}
+
+/* */
+static void
+foo_canvas_text_apply_attributes (FooCanvasText *text)
+{
+	PangoAttrList *attr_list;
+	double zoom;
+
+	if (text->attr_list)
+		attr_list = pango_attr_list_copy (text->attr_list);
+	else
+		attr_list = pango_attr_list_new ();
+
+	if (text->underline_set)
+		add_attr (attr_list, pango_attr_underline_new (text->underline));
+	if (text->strike_set)
+		add_attr (attr_list, pango_attr_strikethrough_new (text->strikethrough));
+	if (text->rise_set)
+		add_attr (attr_list, pango_attr_rise_new (text->rise));
+
+	zoom = text->item.canvas->pixels_per_unit;
+	if (fabs (zoom - 1.) > 1e-4) {
+		PangoAttribute *attr = pango_attr_scale_new (zoom);
+		attr->start_index = 0;
+		attr->end_index = -1;
+		pango_attr_list_insert_before (attr_list, attr);
+	}
+
+	pango_layout_set_attributes (text->layout, attr_list);
+	pango_attr_list_unref (attr_list);
+}
+
+static void
+foo_canvas_text_set_font_desc (FooCanvasText      *text,
+				 PangoFontDescription *font_desc)
+{
+	if (text->font_desc)
+		pango_font_description_free (text->font_desc);
+
+	if (font_desc)
+		text->font_desc = pango_font_description_copy (font_desc);
+	else
+		text->font_desc = NULL;
+
+	foo_canvas_text_apply_font_desc (text);
+}
+
+/* Setting the text from a Pango markup string */
+static void
+foo_canvas_text_set_markup (FooCanvasText *textitem,
+			      const gchar     *markup)
+{
+	PangoAttrList *attr_list = NULL;
+	gchar         *text = NULL;
+	GError        *error = NULL;
+
+	if (textitem->text)
+		g_free (textitem->text);
+	if (textitem->attr_list)
+		pango_attr_list_unref (textitem->attr_list);
+
+	if (markup && !pango_parse_markup (markup, -1,
+					   0,
+					   &attr_list, &text, NULL,
+					   &error))
+	{
+		g_warning ("Failed to set cell text from markup due to error parsing markup: %s",
+			   error->message);
+		g_error_free (error);
+		return;
+	}
+
+	textitem->text = text;
+	textitem->attr_list = attr_list;
+
+	pango_layout_set_text (textitem->layout, text, -1);
+
+	foo_canvas_text_apply_attributes (textitem);
+}
+
+/* Update handler for the text item */
+static void
+foo_canvas_text_update (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags)
+{
+	FooCanvasText *text;
+	double x1, y1, x2, y2;
+
+	text = FOO_CANVAS_TEXT (item);
+
+	if (parent_class->update)
+		(* parent_class->update) (item, i2w_dx, i2w_dy, flags);
+
+	set_text_gc_foreground (text);
+	set_stipple (text, text->stipple, TRUE);
+	get_bounds (text, &x1, &y1, &x2, &y2);
+
+	foo_canvas_update_bbox (item,
+				  floor (x1), floor (y1),
+				  ceil (x2), ceil (y2));
+}
+
+/* Realize handler for the text item */
+static void
+foo_canvas_text_realize (FooCanvasItem *item)
+{
+	FooCanvasText *text;
+
+	text = FOO_CANVAS_TEXT (item);
+
+	if (parent_class->realize)
+		(* parent_class->realize) (item);
+
+	text->gc = gdk_gc_new (item->canvas->layout.bin_window);
+}
+
+/* Unrealize handler for the text item */
+static void
+foo_canvas_text_unrealize (FooCanvasItem *item)
+{
+	FooCanvasText *text;
+
+	text = FOO_CANVAS_TEXT (item);
+
+	g_object_unref (text->gc);
+	text->gc = NULL;
+
+	if (parent_class->unrealize)
+		(* parent_class->unrealize) (item);
+}
+
+/* Draw handler for the text item */
+static void
+foo_canvas_text_draw (FooCanvasItem *item, GdkDrawable *drawable,
+			GdkEventExpose   *expose)
+{
+	FooCanvasText *text;
+	GdkRectangle rect;
+
+	text = FOO_CANVAS_TEXT (item);
+
+	if (!text->text)
+		return;
+
+	if (text->clip) {
+		rect.x = text->clip_cx;
+		rect.y = text->clip_cy;
+		rect.width = text->clip_cwidth;
+		rect.height = text->clip_cheight;
+
+		gdk_gc_set_clip_rectangle (text->gc, &rect);
+	}
+
+	if (text->stipple)
+		foo_canvas_set_stipple_origin (item->canvas, text->gc);
+
+
+	gdk_draw_layout (drawable, text->gc, text->cx, text->cy, text->layout);
+
+	if (text->clip)
+		gdk_gc_set_clip_rectangle (text->gc, NULL);
+}
+
+/* Point handler for the text item */
+static double
+foo_canvas_text_point (FooCanvasItem *item, double x, double y,
+			 int cx, int cy, FooCanvasItem **actual_item)
+{
+	FooCanvasText *text;
+	PangoLayoutIter *iter;
+	int x1, y1, x2, y2;
+	int dx, dy;
+	double dist, best;
+
+	text = FOO_CANVAS_TEXT (item);
+
+	*actual_item = item;
+
+	/* The idea is to build bounding rectangles for each of the lines of
+	 * text (clipped by the clipping rectangle, if it is activated) and see
+	 * whether the point is inside any of these.  If it is, we are done.
+	 * Otherwise, calculate the distance to the nearest rectangle.
+	 */
+
+	best = 1.0e36;
+
+	iter = pango_layout_get_iter (text->layout);
+	do {
+ 	        PangoRectangle log_rect;
+
+		pango_layout_iter_get_line_extents (iter, NULL, &log_rect);
+
+		if (text->clip) {
+			x1 = PANGO_PIXELS (log_rect.x);
+			y1 = PANGO_PIXELS (log_rect.y);
+			x2 = PANGO_PIXELS (log_rect.x+log_rect.width);
+			y2 = PANGO_PIXELS (log_rect.y+log_rect.height);
+
+
+			if (x1 < text->clip_cx)
+				x1 = text->clip_cx;
+
+			if (y1 < text->clip_cy)
+				y1 = text->clip_cy;
+
+			if (x2 > (text->clip_cx + text->clip_width))
+				x2 = text->clip_cx + text->clip_width;
+
+			if (y2 > (text->clip_cy + text->clip_height))
+				y2 = text->clip_cy + text->clip_height;
+
+			if ((x1 >= x2) || (y1 >= y2))
+				continue;
+		} else {
+			x1 = text->x;
+			y1 = text->y;
+			x2 = log_rect.width;
+			y2 = log_rect.height;
+		}
+
+		/* Calculate distance from point to rectangle */
+
+		if (cx < x1)
+			dx = x1 - cx;
+		else if (cx >= x2)
+			dx = cx - x2 + 1;
+		else
+			dx = 0;
+
+		if (cy < y1)
+			dy = y1 - cy;
+		else if (cy >= y2)
+			dy = cy - y2 + 1;
+		else
+			dy = 0;
+
+		if ((dx == 0) && (dy == 0)) {
+			pango_layout_iter_free(iter);
+			return 0.0;
+		}
+
+		dist = sqrt (dx * dx + dy * dy);
+		if (dist < best)
+			best = dist;
+
+	} while (pango_layout_iter_next_line(iter));
+
+	pango_layout_iter_free(iter);
+
+	return best / item->canvas->pixels_per_unit;
+}
+
+static void
+foo_canvas_text_translate (FooCanvasItem *item, double dx, double dy)
+{
+	FooCanvasText *text;
+
+	text = FOO_CANVAS_TEXT (item);
+
+	text->x += dx;
+	text->y += dy;
+}
+
+/* Bounds handler for the text item */
+static void
+foo_canvas_text_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	FooCanvasText *text;
+	double width, height;
+
+	text = FOO_CANVAS_TEXT (item);
+
+	*x1 = text->x;
+	*y1 = text->y;
+
+	if (text->clip) {
+		width = text->clip_width;
+		height = text->clip_height;
+	} else {
+		width = text->max_width / item->canvas->pixels_per_unit;
+		height = text->height / item->canvas->pixels_per_unit;
+	}
+
+	switch (text->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_SW:
+		break;
+
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_S:
+		*x1 -= width / 2.0;
+		break;
+
+	case GTK_ANCHOR_NE:
+	case GTK_ANCHOR_E:
+	case GTK_ANCHOR_SE:
+		*x1 -= width;
+		break;
+
+	default:
+		break;
+	}
+
+	switch (text->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_NE:
+		break;
+
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_E:
+		*y1 -= height / 2.0;
+		break;
+
+	case GTK_ANCHOR_SW:
+	case GTK_ANCHOR_S:
+	case GTK_ANCHOR_SE:
+		*y1 -= height;
+		break;
+
+	default:
+		break;
+	}
+
+	*x2 = *x1 + width;
+	*y2 = *y1 + height;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-text.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,170 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Text item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ * Port to Pango co-done by Gergõ Érdi <cactus at cactus.rulez.org>
+ */
+
+#ifndef FOO_CANVAS_TEXT_H
+#define FOO_CANVAS_TEXT_H
+
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+
+
+G_BEGIN_DECLS
+
+
+/* Text item for the canvas.  Text items are positioned by an anchor point and an anchor direction.
+ *
+ * A clipping rectangle may be specified for the text.  The rectangle is anchored at the text's anchor
+ * point, and is specified by clipping width and height parameters.  If the clipping rectangle is
+ * enabled, it will clip the text.
+ *
+ * In addition, x and y offset values may be specified.  These specify an offset from the anchor
+ * position.  If used in conjunction with the clipping rectangle, these could be used to implement
+ * simple scrolling of the text within the clipping rectangle.
+ *
+ * Properties marked with [*] also have _set properties associated
+ * with them, that determine if the specified value should be used
+ * instead of the default (style-defined) values
+ *
+ * The following object arguments are available:
+ *
+ * name			type			read/write	description
+ * ------------------------------------------------------------------------------------------
+ * text			string			RW		The string of the text label
+ * markup		string			 W		A Pango markup string for the text label
+ *
+ * x			double			RW		X coordinate of anchor point
+ * y			double			RW		Y coordinate of anchor point
+ *
+ * font			string			 W		A string describing the font
+ * font_desc	        PangoFontDescription*	RW		Pointer to a PangoFontDescriptor
+ * attributes           PangoAttrList*          RW		Pointer to a Pango attribute list
+ * style		PangoStyle		RW		Pango style of font to use	[*]
+ * variant		PangoVariant		RW		Pango variant of font to use	[*]
+ * weight		int			RW		Pango weight of font to use	[*]
+ * stretch		PangoStretch		RW		Pango stretch of font to use	[*]
+ * size			int			RW		Size (in pixels) of font	[*]
+ * size_points		double			RW		Size (in points) of font
+ * scale                double                  RW              Ratio to scale font		[*]
+ *
+ * anchor		GtkAnchorType		RW		Anchor side for the text
+ * justification	GtkJustification	RW		Justification for multiline text
+ * clip_width		double			RW		Width of clip rectangle
+ * clip_height		double			RW		Height of clip rectangle
+ * clip			boolean			RW		Use clipping rectangle?
+ * x_offset		double			RW		Horizontal offset distance from anchor position
+ * y_offset		double			RW		Vertical offset distance from anchor position
+ *
+ * text_width		double			R		Used to query the width of the rendered text
+ * text_height		double			R		Used to query the rendered height of the text
+ *
+ * fill_color		string			 W		X color specification for text
+ * fill_color_gdk	GdkColor*		RW		Pointer to an allocated GdkColor
+ * fill_color_rgba	guint   		RW		RGBA value used for AA color.
+ * fill_stipple		GdkBitmap*		RW		Stipple pattern for filling the text
+ */
+
+#define FOO_TYPE_CANVAS_TEXT            (foo_canvas_text_get_type ())
+#define FOO_CANVAS_TEXT(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_TEXT, FooCanvasText))
+#define FOO_CANVAS_TEXT_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_TEXT, FooCanvasTextClass))
+#define FOO_IS_CANVAS_TEXT(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_TEXT))
+#define FOO_IS_CANVAS_TEXT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_TEXT))
+#define FOO_CANVAS_TEXT_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_TEXT, FooCanvasTextClass))
+
+
+typedef struct _FooCanvasText FooCanvasText;
+typedef struct _FooCanvasTextClass FooCanvasTextClass;
+
+typedef struct _FooCanvasTextPrivate FooCanvasTextPrivate;
+
+struct _FooCanvasText {
+	FooCanvasItem item;
+
+	PangoFontDescription *font_desc; /* Font description for text */
+	PangoAttrList *attr_list;        /* Attribute list of the text (caching) */
+	PangoUnderline underline;
+	gboolean       strikethrough;
+	int            rise;
+	double         scale;
+
+	char *text;			/* Text to display */
+	GdkBitmap *stipple;		/* Stipple for text */
+	GdkGC *gc;			/* GC for drawing text */
+        PangoLayout *layout;            /* The PangoLayout containing the text */
+
+	gulong pixel;			/* Fill color */
+
+	double x, y;			/* Position at anchor */
+
+	double clip_width;		/* Width of optional clip rectangle */
+	double clip_height;		/* Height of optional clip rectangle */
+
+	double xofs, yofs;		/* Text offset distance from anchor position */
+
+	GtkAnchorType anchor;		/* Anchor side for text */
+	GtkJustification justification;	/* Justification for text */
+
+	int cx, cy;			/* Top-left canvas coordinates for text */
+	int clip_cx, clip_cy;		/* Top-left canvas coordinates for clip rectangle */
+	int clip_cwidth, clip_cheight;	/* Size of clip rectangle in pixels */
+	int max_width;			/* Maximum width of text lines */
+	int height;			/* Rendered text height in pixels */
+
+        guint32 rgba;			/* RGBA color for text */ /*AA*/
+
+	guint clip : 1;			/* Use clip rectangle? */
+
+	guint underline_set : 1;        /* Apply specified underline style? */
+	guint strike_set    : 1;        /* Apply specified strikethrough style? */
+	guint rise_set      : 1;        /* Apply specified ascension/descension? */
+
+	guint scale_set     : 1;        /* Apply specified font scaling ratio? */
+
+	FooCanvasTextPrivate *priv;
+};
+
+struct _FooCanvasTextClass {
+	FooCanvasItemClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GtkType foo_canvas_text_get_type (void) G_GNUC_CONST;
+
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,400 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Miscellaneous utility functions for the FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+
+#include <sys/types.h>
+#include <glib.h>
+#include <math.h>
+#include "foo-canvas.h"
+#include "foo-canvas-util.h"
+
+/*
+ * Ok, so some systems require magic incantations for M_PI to be defined.
+ * It's not important enough to worry about.
+ */
+#ifndef M_PI
+#define M_PI 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117
+#endif
+
+/**
+ * foo_canvas_points_new:
+ * @num_points: The number of points to allocate space for in the array.
+ *
+ * Creates a structure that should be used to pass an array of points to
+ * items.
+ *
+ * Return value: A newly-created array of points.  It should be filled in
+ * by the user.
+ **/
+FooCanvasPoints *
+foo_canvas_points_new (int num_points)
+{
+	FooCanvasPoints *points;
+
+	g_return_val_if_fail (num_points > 1, NULL);
+
+	points = g_new (FooCanvasPoints, 1);
+	points->num_points = num_points;
+	points->coords = g_new (double, 2 * num_points);
+	points->ref_count = 1;
+
+	return points;
+}
+
+/**
+ * foo_canvas_points_ref:
+ * @points: A canvas points structure.
+ *
+ * Increases the reference count of the specified points structure.
+ *
+ * Return value: The canvas points structure itself.
+ **/
+FooCanvasPoints *
+foo_canvas_points_ref (FooCanvasPoints *points)
+{
+	g_return_val_if_fail (points != NULL, NULL);
+
+	points->ref_count += 1;
+	return points;
+}
+
+/**
+ * foo_canvas_points_free:
+ * @points: A canvas points structure.
+ *
+ * Decreases the reference count of the specified points structure.  If it
+ * reaches zero, then the structure is freed.
+ **/
+void
+foo_canvas_points_free (FooCanvasPoints *points)
+{
+	g_return_if_fail (points != NULL);
+
+	points->ref_count -= 1;
+	if (points->ref_count == 0) {
+		g_free (points->coords);
+		g_free (points);
+	}
+}
+
+/**
+ * foo_canvas_get_miter_points:
+ * @x1: X coordinate of the first point
+ * @y1: Y coordinate of the first point
+ * @x2: X coordinate of the second (angle) point
+ * @y2: Y coordinate of the second (angle) point
+ * @x3: X coordinate of the third point
+ * @y3: Y coordinate of the third point
+ * @width: Width of the line
+ * @mx1: The X coordinate of the first miter point is returned here.
+ * @my1: The Y coordinate of the first miter point is returned here.
+ * @mx2: The X coordinate of the second miter point is returned here.
+ * @my2: The Y coordinate of the second miter point is returned here.
+ *
+ * Given three points forming an angle, computes the coordinates of the inside
+ * and outside points of the mitered corner formed by a line of a given width at
+ * that angle.
+ *
+ * Return value: FALSE if the angle is less than 11 degrees (this is the same
+ * threshold as X uses.  If this occurs, the return points are not modified.
+ * Otherwise, returns TRUE.
+ **/
+int
+foo_canvas_get_miter_points (double x1, double y1, double x2, double y2, double x3, double y3,
+			     double width,
+			     double *mx1, double *my1, double *mx2, double *my2)
+{
+	double theta1;		/* angle of segment p2-p1 */
+	double theta2;		/* angle of segment p2-p3 */
+	double theta;		/* angle between line segments */
+	double theta3;		/* angle that bisects theta1 and theta2 and points to p1 */
+	double dist;		/* distance of miter points from p2 */
+	double dx, dy;		/* x and y offsets corresponding to dist */
+
+	double ELEVEN_DEGREES = 11.0 * M_PI / 180.0;
+
+	/* Degenerate cases.  */
+	if ((x1 == x2 && y1 == y2) || (x2 == x3 && y2 == y3))
+		return FALSE;
+
+	theta1 = atan2 (y1 - y2, x1 - x2);
+	theta2 = atan2 (y3 - y2, x3 - x2);
+	theta = theta1 - theta2;
+
+	/* Normalize to (-pi; pi].  */
+	if (theta > M_PI)
+		theta -= 2.0 * M_PI;
+	else if (theta <= -M_PI)
+		theta += 2.0 * M_PI;
+
+	if (fabs (theta) < ELEVEN_DEGREES)
+		return FALSE;
+
+	dist = fabs (0.5 * width / sin (0.5 * theta));
+
+	theta3 = (theta1 + theta2) / 2.0;
+	if (sin (theta3 - theta1) > 0.0)
+		theta3 += M_PI;
+
+	dx = dist * cos (theta3);
+	dy = dist * sin (theta3);
+
+	*mx1 = x2 + dx;
+	*mx2 = x2 - dx;
+	*my1 = y2 + dy;
+	*my2 = y2 - dy;
+
+	return TRUE;
+}
+
+/**
+ * foo_canvas_get_butt_points:
+ * @x1: X coordinate of first point in the line
+ * @y1: Y cooordinate of first point in the line
+ * @x2: X coordinate of second point (endpoint) of the line
+ * @y2: Y coordinate of second point (endpoint) of the line
+ * @width: Width of the line
+ * @project: Whether the butt points should project out by width/2 distance
+ * @bx1: X coordinate of first butt point is returned here
+ * @by1: Y coordinate of first butt point is returned here
+ * @bx2: X coordinate of second butt point is returned here
+ * @by2: Y coordinate of second butt point is returned here
+ *
+ * Computes the butt points of a line segment.
+ **/
+void
+foo_canvas_get_butt_points (double x1, double y1, double x2, double y2,
+			      double width, int project,
+			      double *bx1, double *by1, double *bx2, double *by2)
+{
+	double length;
+	double dx, dy;
+
+	width *= 0.5;
+	dx = x2 - x1;
+	dy = y2 - y1;
+	length = sqrt (dx * dx + dy * dy);
+
+	if (length < FOO_CANVAS_EPSILON) {
+		*bx1 = *bx2 = x2;
+		*by1 = *by2 = y2;
+	} else {
+		dx = -width * (y2 - y1) / length;
+		dy = width * (x2 - x1) / length;
+
+		*bx1 = x2 + dx;
+		*bx2 = x2 - dx;
+		*by1 = y2 + dy;
+		*by2 = y2 - dy;
+
+		if (project) {
+			*bx1 += dy;
+			*bx2 += dy;
+			*by1 -= dx;
+			*by2 -= dx;
+		}
+	}
+}
+
+/**
+ * foo_canvas_polygon_to_point:
+ * @poly: Vertices of the polygon.  X coordinates are in the even indices, and Y
+ * coordinates are in the odd indices
+ * @num_points: Number of points in the polygon
+ * @x: X coordinate of the point
+ * @y: Y coordinate of the point
+ *
+ * Computes the distance between a point and a polygon.
+ *
+ * Return value: The distance from the point to the polygon, or zero if the
+ * point is inside the polygon.
+ **/
+double
+foo_canvas_polygon_to_point (double *poly, int num_points, double x, double y)
+{
+	double best;
+	int intersections;
+	int i;
+	double *p;
+	double dx, dy;
+
+	/* Iterate through all the edges in the polygon, updating best and intersections.
+	 *
+	 * When computing intersections, include left X coordinate of line within its range, but not
+	 * Y coordinate.  Otherwise if the point lies exactly below a vertex we'll count it as two
+	 * intersections.
+	 */
+
+	best = 1.0e36;
+	intersections = 0;
+
+	for (i = num_points, p = poly; i > 1; i--, p += 2) {
+		double px, py, dist;
+
+		/* Compute the point on the current edge closest to the point and update the
+		 * intersection count.  This must be done separately for vertical edges, horizontal
+		 * edges, and others.
+		 */
+
+		if (p[2] == p[0]) {
+			/* Vertical edge */
+
+			px = p[0];
+
+			if (p[1] >= p[3]) {
+				py = MIN (p[1], y);
+				py = MAX (py, p[3]);
+			} else {
+				py = MIN (p[3], y);
+				py = MAX (py, p[1]);
+			}
+		} else if (p[3] == p[1]) {
+			/* Horizontal edge */
+
+			py = p[1];
+
+			if (p[0] >= p[2]) {
+				px = MIN (p[0], x);
+				px = MAX (px, p[2]);
+
+				if ((y < py) && (x < p[0]) && (x >= p[2]))
+					intersections++;
+			} else {
+				px = MIN (p[2], x);
+				px = MAX (px, p[0]);
+
+				if ((y < py) && (x < p[2]) && (x >= p[0]))
+					intersections++;
+			}
+		} else {
+			double m1, b1, m2, b2;
+			int lower;
+
+			/* Diagonal edge.  Convert the edge to a line equation (y = m1*x + b1), then
+			 * compute a line perpendicular to this edge but passing through the point,
+			 * (y = m2*x + b2).
+			 */
+
+			m1 = (p[3] - p[1]) / (p[2] - p[0]);
+			b1 = p[1] - m1 * p[0];
+
+			m2 = -1.0 / m1;
+			b2 = y - m2 * x;
+
+			px = (b2 - b1) / (m1 - m2);
+			py = m1 * px + b1;
+
+			if (p[0] > p[2]) {
+				if (px > p[0]) {
+					px = p[0];
+					py = p[1];
+				} else if (px < p[2]) {
+					px = p[2];
+					py = p[3];
+				}
+			} else {
+				if (px > p[2]) {
+					px = p[2];
+					py = p[3];
+				} else if (px < p[0]) {
+					px = p[0];
+					py = p[1];
+				}
+			}
+
+			lower = (m1 * x + b1) > y;
+
+			if (lower && (x >= MIN (p[0], p[2])) && (x < MAX (p[0], p[2])))
+				intersections++;
+		}
+
+		/* Compute the distance to the closest point, and see if that is the best so far */
+
+		dx = x - px;
+		dy = y - py;
+		dist = sqrt (dx * dx + dy * dy);
+		if (dist < best)
+			best = dist;
+	}
+
+	/* We've processed all the points.  If the number of intersections is odd, the point is
+	 * inside the polygon.
+	 */
+
+	if (intersections & 0x1)
+		return 0.0;
+	else
+		return best;
+}
+
+/**
+ * foo_canvas_item_reset_bounds:
+ * @item: A canvas item
+ *
+ * Resets the bounding box of a canvas item to an empty rectangle.
+ **/
+void
+foo_canvas_item_reset_bounds (FooCanvasItem *item)
+{
+	item->x1 = 0.0;
+	item->y1 = 0.0;
+	item->x2 = 0.0;
+	item->y2 = 0.0;
+}
+
+/**
+ * foo_canvas_update_bbox:
+ * @canvas: the canvas needing update
+ * @x1: Left coordinate of the new bounding box
+ * @y1: Top coordinate of the new bounding box
+ * @x2: Right coordinate of the new bounding box
+ * @y2: Bottom coordinate of the new bounding box
+ *
+ * Sets the bbox to the new value, requesting full repaint.
+ **/
+void
+foo_canvas_update_bbox (FooCanvasItem *item, int x1, int y1, int x2, int y2)
+{
+	foo_canvas_item_request_redraw (item);
+	item->x1 = x1;
+	item->y1 = y1;
+	item->x2 = x2;
+	item->y2 = y2;
+	foo_canvas_item_request_redraw (item);
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-util.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,107 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Miscellaneous utility functions for the FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#ifndef FOO_CANVAS_UTIL_H
+#define FOO_CANVAS_UTIL_H
+
+
+G_BEGIN_DECLS
+
+
+/* This structure defines an array of points.  X coordinates are stored in the even-numbered
+ * indices, and Y coordinates are stored in the odd-numbered indices.  num_points indicates the
+ * number of points, so the array is 2*num_points elements big.
+ */
+typedef struct {
+	double *coords;
+	int num_points;
+	int ref_count;
+} FooCanvasPoints;
+
+
+/* Allocate a new FooCanvasPoints structure with enough space for the specified number of points */
+FooCanvasPoints *foo_canvas_points_new (int num_points);
+
+/* Increate ref count */
+FooCanvasPoints *foo_canvas_points_ref (FooCanvasPoints *points);
+#define foo_canvas_points_unref foo_canvas_points_free
+
+/* Decrease ref count and free structure if it has reached zero */
+void foo_canvas_points_free (FooCanvasPoints *points);
+
+/* Given three points forming an angle, compute the coordinates of the inside and outside points of
+ * the mitered corner formed by a line of a given width at that angle.
+ *
+ * If the angle is less than 11 degrees, then FALSE is returned and the return points are not
+ * modified.  Otherwise, TRUE is returned.
+ */
+int foo_canvas_get_miter_points (double x1, double y1, double x2, double y2, double x3, double y3,
+				   double width,
+				   double *mx1, double *my1, double *mx2, double *my2);
+
+/* Compute the butt points of a line segment.  If project is FALSE, then the results are as follows:
+ *
+ *            -------------------* (bx1, by1)
+ *                               |
+ *   (x1, y1) *------------------* (x2, y2)
+ *                               |
+ *            -------------------* (bx2, by2)
+ *
+ * that is, the line is not projected beyond (x2, y2).  If project is TRUE, then the results are as
+ * follows:
+ *
+ *            -------------------* (bx1, by1)
+ *                      (x2, y2) |
+ *   (x1, y1) *-------------*    |
+ *                               |
+ *            -------------------* (bx2, by2)
+ */
+void foo_canvas_get_butt_points (double x1, double y1, double x2, double y2,
+				   double width, int project,
+				   double *bx1, double *by1, double *bx2, double *by2);
+
+/* Calculate the distance from a polygon to a point.  The polygon's X coordinates are in the even
+ * indices of the poly array, and the Y coordinates are in the odd indices.
+ */
+double foo_canvas_polygon_to_point (double *poly, int num_points, double x, double y);
+
+
+void foo_canvas_item_reset_bounds (FooCanvasItem *item);
+
+/* Sets the bbox to the new value, requesting full repaint. */
+void foo_canvas_update_bbox (FooCanvasItem *item, int x1, int y1, int x2, int y2);
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,619 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#undef GTK_DISABLE_DEPRECATED
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Widget item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#include <math.h>
+#include <gtk/gtksignal.h>
+#include "foo-canvas-widget.h"
+
+enum {
+	PROP_0,
+	PROP_WIDGET,
+	PROP_X,
+	PROP_Y,
+	PROP_WIDTH,
+	PROP_HEIGHT,
+	PROP_ANCHOR,
+	PROP_SIZE_PIXELS
+};
+
+
+static void foo_canvas_widget_class_init (FooCanvasWidgetClass *class);
+static void foo_canvas_widget_init       (FooCanvasWidget      *witem);
+static void foo_canvas_widget_destroy    (GtkObject              *object);
+static void foo_canvas_widget_get_property (GObject            *object,
+					      guint               param_id,
+					      GValue             *value,
+					      GParamSpec         *pspec);
+static void foo_canvas_widget_set_property (GObject            *object,
+					      guint               param_id,
+					      const GValue       *value,
+					      GParamSpec         *pspec);
+
+static void   foo_canvas_widget_update      (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags);
+static double foo_canvas_widget_point       (FooCanvasItem *item, double x, double y,
+					       int cx, int cy, FooCanvasItem **actual_item);
+static void   foo_canvas_widget_translate   (FooCanvasItem *item, double dx, double dy);
+static void   foo_canvas_widget_bounds      (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2);
+
+static void foo_canvas_widget_draw (FooCanvasItem *item,
+				      GdkDrawable *drawable,
+				      GdkEventExpose   *event);
+static void foo_canvas_widget_map   (FooCanvasItem *item);
+static void foo_canvas_widget_unmap (FooCanvasItem *item);
+
+static FooCanvasItemClass *parent_class;
+
+
+GtkType
+foo_canvas_widget_get_type (void)
+{
+	static GtkType witem_type = 0;
+
+	if (!witem_type) {
+		/* FIXME: Convert to gobject style.  */
+		static const GtkTypeInfo witem_info = {
+			(char *)"FooCanvasWidget",
+			sizeof (FooCanvasWidget),
+			sizeof (FooCanvasWidgetClass),
+			(GtkClassInitFunc) foo_canvas_widget_class_init,
+			(GtkObjectInitFunc) foo_canvas_widget_init,
+			NULL, /* reserved_1 */
+			NULL, /* reserved_2 */
+			(GtkClassInitFunc) NULL
+		};
+
+		witem_type = gtk_type_unique (foo_canvas_item_get_type (), &witem_info);
+	}
+
+	return witem_type;
+}
+
+static void
+foo_canvas_widget_class_init (FooCanvasWidgetClass *class)
+{
+	GObjectClass *gobject_class;
+	GtkObjectClass *object_class;
+	FooCanvasItemClass *item_class;
+
+	gobject_class = (GObjectClass *) class;
+	object_class = (GtkObjectClass *) class;
+	item_class = (FooCanvasItemClass *) class;
+
+	parent_class = gtk_type_class (foo_canvas_item_get_type ());
+
+	gobject_class->set_property = foo_canvas_widget_set_property;
+	gobject_class->get_property = foo_canvas_widget_get_property;
+
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDGET,
+                 g_param_spec_object ("widget", NULL, NULL,
+                                      GTK_TYPE_WIDGET,
+                                      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_X,
+                 g_param_spec_double ("x", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_Y,
+                 g_param_spec_double ("y", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_WIDTH,
+                 g_param_spec_double ("width", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_HEIGHT,
+                 g_param_spec_double ("height", NULL, NULL,
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_ANCHOR,
+                 g_param_spec_enum ("anchor", NULL, NULL,
+                                    GTK_TYPE_ANCHOR_TYPE,
+                                    GTK_ANCHOR_NW,
+                                    GSF_PARAM_STATIC | G_PARAM_READWRITE));
+        g_object_class_install_property
+                (gobject_class,
+                 PROP_SIZE_PIXELS,
+                 g_param_spec_boolean ("size-pixels", NULL, NULL,
+				       FALSE,
+				       GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	object_class->destroy = foo_canvas_widget_destroy;
+
+	item_class->update = foo_canvas_widget_update;
+	item_class->point = foo_canvas_widget_point;
+	item_class->translate = foo_canvas_widget_translate;
+	item_class->bounds = foo_canvas_widget_bounds;
+	item_class->draw = foo_canvas_widget_draw;
+	item_class->map   = foo_canvas_widget_map;
+	item_class->unmap = foo_canvas_widget_unmap;
+}
+
+static void
+foo_canvas_widget_init (FooCanvasWidget *witem)
+{
+	witem->x = 0.0;
+	witem->y = 0.0;
+	witem->width = 0.0;
+	witem->height = 0.0;
+	witem->anchor = GTK_ANCHOR_NW;
+	witem->size_pixels = FALSE;
+}
+
+static void
+foo_canvas_widget_destroy (GtkObject *object)
+{
+	FooCanvasWidget *witem;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_WIDGET (object));
+
+	witem = FOO_CANVAS_WIDGET (object);
+
+	if (witem->widget && !witem->in_destroy) {
+		gtk_signal_disconnect (GTK_OBJECT (witem->widget), witem->destroy_id);
+		gtk_widget_destroy (witem->widget);
+		witem->widget = NULL;
+	}
+
+	if (GTK_OBJECT_CLASS (parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
+static void
+recalc_bounds (FooCanvasWidget *witem)
+{
+	FooCanvasItem *item;
+	double wx, wy;
+
+	item = FOO_CANVAS_ITEM (witem);
+
+	/* Get world coordinates */
+
+	wx = witem->x;
+	wy = witem->y;
+	foo_canvas_item_i2w (item, &wx, &wy);
+
+	/* Get canvas pixel coordinates */
+
+	foo_canvas_w2c (item->canvas, wx, wy, &witem->cx, &witem->cy);
+
+	/* Anchor widget item */
+
+	switch (witem->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_SW:
+		break;
+
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_S:
+		witem->cx -= witem->cwidth / 2;
+		break;
+
+	case GTK_ANCHOR_NE:
+	case GTK_ANCHOR_E:
+	case GTK_ANCHOR_SE:
+		witem->cx -= witem->cwidth;
+		break;
+
+        default:
+                break;
+	}
+
+	switch (witem->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_NE:
+		break;
+
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_E:
+		witem->cy -= witem->cheight / 2;
+		break;
+
+	case GTK_ANCHOR_SW:
+	case GTK_ANCHOR_S:
+	case GTK_ANCHOR_SE:
+		witem->cy -= witem->cheight;
+		break;
+
+        default:
+                break;
+	}
+
+	/* Bounds */
+
+	item->x1 = witem->cx;
+	item->y1 = witem->cy;
+	item->x2 = witem->cx + witem->cwidth;
+	item->y2 = witem->cy + witem->cheight;
+
+	if (witem->widget)
+		gtk_layout_move (GTK_LAYOUT (item->canvas), witem->widget,
+				 witem->cx,
+				 witem->cy);
+}
+
+static void
+do_destroy (GtkObject *object, gpointer data)
+{
+	FooCanvasWidget *witem;
+
+	witem = data;
+
+	witem->in_destroy = TRUE;
+
+	gtk_object_destroy (data);
+}
+
+static void
+foo_canvas_widget_set_property (GObject            *object,
+				  guint               param_id,
+				  const GValue       *value,
+				  GParamSpec         *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasWidget *witem;
+	GObject *obj;
+	int update;
+	int calc_bounds;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_WIDGET (object));
+
+	item = FOO_CANVAS_ITEM (object);
+	witem = FOO_CANVAS_WIDGET (object);
+
+	update = FALSE;
+	calc_bounds = FALSE;
+
+	switch (param_id) {
+	case PROP_WIDGET:
+		if (witem->widget) {
+			gtk_signal_disconnect (GTK_OBJECT (witem->widget), witem->destroy_id);
+			gtk_container_remove (GTK_CONTAINER (item->canvas), witem->widget);
+		}
+
+		obj = g_value_get_object (value);
+		if (obj) {
+			witem->widget = GTK_WIDGET (obj);
+			witem->destroy_id = gtk_signal_connect (GTK_OBJECT (obj),
+								"destroy",
+								(GtkSignalFunc) do_destroy,
+								witem);
+			gtk_layout_put (GTK_LAYOUT (item->canvas), witem->widget,
+					witem->cx + item->canvas->zoom_xofs,
+					witem->cy + item->canvas->zoom_yofs);
+		}
+
+		update = TRUE;
+		break;
+
+	case PROP_X:
+	        if (witem->x != g_value_get_double (value))
+		{
+		        witem->x = g_value_get_double (value);
+			calc_bounds = TRUE;
+		}
+		break;
+
+	case PROP_Y:
+	        if (witem->y != g_value_get_double (value))
+		{
+		        witem->y = g_value_get_double (value);
+			calc_bounds = TRUE;
+		}
+		break;
+
+	case PROP_WIDTH:
+	        if (witem->width != fabs (g_value_get_double (value)))
+		{
+		        witem->width = fabs (g_value_get_double (value));
+			update = TRUE;
+		}
+		break;
+
+	case PROP_HEIGHT:
+	        if (witem->height != fabs (g_value_get_double (value)))
+		{
+		        witem->height = fabs (g_value_get_double (value));
+			update = TRUE;
+		}
+		break;
+
+	case PROP_ANCHOR:
+	        if (witem->anchor != (GtkAnchorType)g_value_get_enum (value))
+		{
+		        witem->anchor = g_value_get_enum (value);
+			update = TRUE;
+		}
+		break;
+
+	case PROP_SIZE_PIXELS:
+	        if (witem->size_pixels != g_value_get_boolean (value))
+		{
+		        witem->size_pixels = g_value_get_boolean (value);
+			update = TRUE;
+		}
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+
+	if (update)
+		(* FOO_CANVAS_ITEM_GET_CLASS (item)->update) (item, 0, 0, 0);
+
+	if (calc_bounds)
+		recalc_bounds (witem);
+}
+
+static void
+foo_canvas_widget_get_property (GObject            *object,
+				  guint               param_id,
+				  GValue             *value,
+				  GParamSpec         *pspec)
+{
+	FooCanvasWidget *witem;
+
+	g_return_if_fail (object != NULL);
+	g_return_if_fail (FOO_IS_CANVAS_WIDGET (object));
+
+	witem = FOO_CANVAS_WIDGET (object);
+
+	switch (param_id) {
+	case PROP_WIDGET:
+		g_value_set_object (value, (GObject *) witem->widget);
+		break;
+
+	case PROP_X:
+		g_value_set_double (value, witem->x);
+		break;
+
+	case PROP_Y:
+		g_value_set_double (value, witem->y);
+		break;
+
+	case PROP_WIDTH:
+		g_value_set_double (value, witem->width);
+		break;
+
+	case PROP_HEIGHT:
+		g_value_set_double (value, witem->height);
+		break;
+
+	case PROP_ANCHOR:
+		g_value_set_enum (value, witem->anchor);
+		break;
+
+	case PROP_SIZE_PIXELS:
+		g_value_set_boolean (value, witem->size_pixels);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+		break;
+	}
+}
+
+static void
+foo_canvas_widget_update (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags)
+{
+	FooCanvasWidget *witem;
+
+	witem = FOO_CANVAS_WIDGET (item);
+
+	if (parent_class->update)
+		(* parent_class->update) (item, i2w_dx, i2w_dy, flags);
+
+	if (witem->widget) {
+		if (witem->size_pixels) {
+			witem->cwidth = (int) (witem->width + 0.5);
+			witem->cheight = (int) (witem->height + 0.5);
+		} else {
+			witem->cwidth = (int) (witem->width * item->canvas->pixels_per_unit + 0.5);
+			witem->cheight = (int) (witem->height * item->canvas->pixels_per_unit + 0.5);
+		}
+
+		gtk_widget_set_usize (witem->widget, witem->cwidth, witem->cheight);
+	} else {
+		witem->cwidth = 0.0;
+		witem->cheight = 0.0;
+	}
+
+	recalc_bounds (witem);
+}
+
+static void
+foo_canvas_widget_draw (FooCanvasItem *item,
+			  GdkDrawable *drawable,
+			  GdkEventExpose *event)
+{
+#if 0
+	FooCanvasWidget *witem;
+
+	witem = FOO_CANVAS_WIDGET (item);
+
+	if (witem->widget)
+		gtk_widget_queue_draw (witem->widget);
+#endif
+}
+static void
+foo_canvas_widget_map (FooCanvasItem *item)
+{
+	FooCanvasWidget *witem = FOO_CANVAS_WIDGET (item);
+	if (parent_class->map)
+		(* parent_class->map) (item);
+	if (witem->widget && GTK_WIDGET_VISIBLE (witem->widget))
+		gtk_widget_map (witem->widget);
+}
+
+static void
+foo_canvas_widget_unmap (FooCanvasItem *item)
+{
+	FooCanvasWidget *witem = FOO_CANVAS_WIDGET (item);
+	if (parent_class->unmap)
+		(* parent_class->unmap) (item);
+	gtk_widget_unmap (witem->widget);
+}
+
+static double
+foo_canvas_widget_point (FooCanvasItem *item, double x, double y,
+			   int cx, int cy, FooCanvasItem **actual_item)
+{
+	FooCanvasWidget *witem;
+	double x1, y1, x2, y2;
+	double dx, dy;
+
+	witem = FOO_CANVAS_WIDGET (item);
+
+	*actual_item = item;
+
+	foo_canvas_c2w (item->canvas, witem->cx, witem->cy, &x1, &y1);
+
+	x2 = x1 + (witem->cwidth - 1) / item->canvas->pixels_per_unit;
+	y2 = y1 + (witem->cheight - 1) / item->canvas->pixels_per_unit;
+
+	/* Is point inside widget bounds? */
+
+	if ((x >= x1) && (y >= y1) && (x <= x2) && (y <= y2))
+		return 0.0;
+
+	/* Point is outside widget bounds */
+
+	if (x < x1)
+		dx = x1 - x;
+	else if (x > x2)
+		dx = x - x2;
+	else
+		dx = 0.0;
+
+	if (y < y1)
+		dy = y1 - y;
+	else if (y > y2)
+		dy = y - y2;
+	else
+		dy = 0.0;
+
+	return sqrt (dx * dx + dy * dy);
+}
+
+static void
+foo_canvas_widget_translate (FooCanvasItem *item, double dx, double dy)
+{
+	FooCanvasWidget *witem;
+
+	witem = FOO_CANVAS_WIDGET (item);
+
+	witem->x += dx;
+	witem->y += dy;
+}
+
+
+static void
+foo_canvas_widget_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	FooCanvasWidget *witem;
+
+	witem = FOO_CANVAS_WIDGET (item);
+
+	*x1 = witem->x;
+	*y1 = witem->y;
+
+	switch (witem->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_SW:
+		break;
+
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_S:
+		*x1 -= witem->width / 2.0;
+		break;
+
+	case GTK_ANCHOR_NE:
+	case GTK_ANCHOR_E:
+	case GTK_ANCHOR_SE:
+		*x1 -= witem->width;
+		break;
+
+        default:
+                break;
+	}
+
+	switch (witem->anchor) {
+	case GTK_ANCHOR_NW:
+	case GTK_ANCHOR_N:
+	case GTK_ANCHOR_NE:
+		break;
+
+	case GTK_ANCHOR_W:
+	case GTK_ANCHOR_CENTER:
+	case GTK_ANCHOR_E:
+		*y1 -= witem->height / 2.0;
+		break;
+
+	case GTK_ANCHOR_SW:
+	case GTK_ANCHOR_S:
+	case GTK_ANCHOR_SE:
+		*y1 -= witem->height;
+		break;
+
+        default:
+                break;
+	}
+
+	*x2 = *x1 + witem->width;
+	*y2 = *y1 + witem->height;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas-widget.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,105 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* Widget item type for FooCanvas widget
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Author: Federico Mena <federico at nuclecu.unam.mx>
+ */
+
+#ifndef FOO_CANVAS_WIDGET_H
+#define FOO_CANVAS_WIDGET_H
+
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+
+
+G_BEGIN_DECLS
+
+
+/* Widget item for canvas.  The widget is positioned with respect to an anchor point.
+ * The following object arguments are available:
+ *
+ * name			type			read/write	description
+ * ------------------------------------------------------------------------------------------
+ * widget		GtkWidget*		RW		Pointer to the widget
+ * x			double			RW		X coordinate of anchor point
+ * y			double			RW		Y coordinate of anchor point
+ * width		double			RW		Width of widget (see below)
+ * height		double			RW		Height of widget (see below)
+ * anchor		GtkAnchorType		RW		Anchor side for widget
+ * size_pixels		boolean			RW		Specifies whether the widget size
+ *								is specified in pixels or canvas units.
+ *								If it is in pixels, then the widget will not
+ *								be scaled when the canvas zoom factor changes.
+ *								Otherwise, it will be scaled.
+ */
+
+
+#define FOO_TYPE_CANVAS_WIDGET            (foo_canvas_widget_get_type ())
+#define FOO_CANVAS_WIDGET(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_WIDGET, FooCanvasWidget))
+#define FOO_CANVAS_WIDGET_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_WIDGET, FooCanvasWidgetClass))
+#define FOO_IS_CANVAS_WIDGET(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_WIDGET))
+#define FOO_IS_CANVAS_WIDGET_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_WIDGET))
+#define FOO_CANVAS_WIDGET_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_WIDGET, FooCanvasWidgetClass))
+
+
+typedef struct _FooCanvasWidget FooCanvasWidget;
+typedef struct _FooCanvasWidgetClass FooCanvasWidgetClass;
+
+struct _FooCanvasWidget {
+	FooCanvasItem item;
+
+	GtkWidget *widget;		/* The child widget */
+
+	double x, y;			/* Position at anchor */
+	double width, height;		/* Dimensions of widget */
+	GtkAnchorType anchor;		/* Anchor side for widget */
+
+	int cx, cy;			/* Top-left canvas coordinates for widget */
+	int cwidth, cheight;		/* Size of widget in pixels */
+
+	guint destroy_id;		/* Signal connection id for destruction of child widget */
+
+	guint size_pixels : 1;		/* Is size specified in (unchanging) pixels or units (get scaled)? */
+	guint in_destroy : 1;		/* Is child widget being destroyed? */
+};
+
+struct _FooCanvasWidgetClass {
+	FooCanvasItemClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GtkType foo_canvas_widget_get_type (void) G_GNUC_CONST;
+
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,3994 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/*
+ * FooCanvas widget - Tk-like canvas widget for Gnome
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas widget.  Tk is
+ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties.
+ *
+ *
+ * Authors: Federico Mena <federico at nuclecu.unam.mx>
+ *          Raph Levien <raph at gimp.org>
+ */
+
+/*
+ * TO-DO list for the canvas:
+ *
+ * - Allow to specify whether FooCanvasImage sizes are in units or pixels (scale or don't scale).
+ *
+ * - Implement a flag for foo_canvas_item_reparent() that tells the function to keep the item
+ *   visually in the same place, that is, to keep it in the same place with respect to the canvas
+ *   origin.
+ *
+ * - GC put functions for items.
+ *
+ * - Widget item (finish it).
+ *
+ * - GList *foo_canvas_gimme_all_items_contained_in_this_area (FooCanvas *canvas, Rectangle area);
+ *
+ * - Retrofit all the primitive items with microtile support.
+ *
+ * - Curve support for line item.
+ *
+ * - Arc item (Havoc has it; to be integrated in FooCanvasEllipse).
+ *
+ * - Sane font handling API.
+ *
+ * - Get_arg methods for items:
+ *   - How to fetch the outline width and know whether it is in pixels or units?
+ */
+
+
+#include <math.h>
+#include <string.h>
+#include <stdio.h>
+#include <gdk/gdkprivate.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtksignal.h>
+#include <gtk/gtkaccessible.h>
+#include <gtk/gtkwindow.h>
+#include "foo-canvas.h"
+#include "foo-canvas-i18n.h"
+
+#include "foo-canvas-marshal.h"
+
+static void foo_canvas_request_update (FooCanvas      *canvas);
+static void group_add                   (FooCanvasGroup *group,
+					 FooCanvasItem  *item);
+static void group_remove                (FooCanvasGroup *group,
+					 FooCanvasItem  *item);
+static void redraw_and_repick_if_mapped (FooCanvasItem *item);
+
+/*** FooCanvasItem ***/
+
+/* Some convenience stuff */
+#define GCI_UPDATE_MASK (FOO_CANVAS_UPDATE_REQUESTED | FOO_CANVAS_UPDATE_DEEP)
+#define GCI_EPSILON 1e-18
+
+enum {
+	ITEM_PROP_0,
+	ITEM_PROP_PARENT,
+	ITEM_PROP_VISIBLE
+};
+
+enum {
+	ITEM_EVENT,
+	ITEM_LAST_SIGNAL
+};
+
+static void foo_canvas_item_class_init     (FooCanvasItemClass *class);
+static void foo_canvas_item_init           (FooCanvasItem      *item);
+static int  emit_event                       (FooCanvas *canvas, GdkEvent *event);
+
+static guint item_signals[ITEM_LAST_SIGNAL];
+
+static GtkObjectClass *item_parent_class;
+
+static gpointer accessible_item_parent_class;
+static gpointer accessible_parent_class;
+
+
+/**
+ * foo_canvas_item_get_type:
+ *
+ * Registers the &FooCanvasItem class if necessary, and returns the type ID
+ * associated to it.
+ *
+ * Return value:  The type ID of the &FooCanvasItem class.
+ **/
+GType
+foo_canvas_item_get_type (void)
+{
+	static GType canvas_item_type = 0;
+
+	if (!canvas_item_type) {
+		static const GTypeInfo canvas_item_info = {
+			sizeof (FooCanvasItemClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) foo_canvas_item_class_init,
+			NULL,           /* class_finalize */
+			NULL,           /* class_data */
+			sizeof (FooCanvasItem),
+			0,              /* n_preallocs */
+			(GInstanceInitFunc) foo_canvas_item_init
+		};
+
+		canvas_item_type = g_type_register_static (gtk_object_get_type (),
+							   "FooCanvasItem",
+							   &canvas_item_info,
+							   0);
+	}
+
+	return canvas_item_type;
+}
+
+/* Object initialization function for FooCanvasItem */
+static void
+foo_canvas_item_init (FooCanvasItem *item)
+{
+	item->object.flags |= FOO_CANVAS_ITEM_VISIBLE;
+}
+
+/**
+ * foo_canvas_item_new:
+ * @parent: The parent group for the new item.
+ * @type: The object type of the item.
+ * @first_arg_name: A list of object argument name/value pairs, NULL-terminated,
+ * used to configure the item.  For example, "fill_color", "black",
+ * "width_units", 5.0, NULL.
+ * @Varargs:
+ *
+ * Creates a new canvas item with @parent as its parent group.  The item is
+ * created at the top of its parent's stack, and starts up as visible.  The item
+ * is of the specified @type, for example, it can be
+ * foo_canvas_rect_get_type().  The list of object arguments/value pairs is
+ * used to configure the item.
+ *
+ * Return value: The newly-created item.
+ **/
+FooCanvasItem *
+foo_canvas_item_new (FooCanvasGroup *parent, GType type, const gchar *first_arg_name, ...)
+{
+	FooCanvasItem *item;
+	va_list args;
+
+	g_return_val_if_fail (FOO_IS_CANVAS_GROUP (parent), NULL);
+	g_return_val_if_fail (g_type_is_a (type, foo_canvas_item_get_type ()), NULL);
+
+	item = FOO_CANVAS_ITEM (g_object_new (type, NULL));
+
+	va_start (args, first_arg_name);
+	foo_canvas_item_construct (item, parent, first_arg_name, args);
+	va_end (args);
+
+	return item;
+}
+
+
+/* Performs post-creation operations on a canvas item (adding it to its parent
+ * group, etc.)
+ */
+static void
+item_post_create_setup (FooCanvasItem *item)
+{
+	GtkObject *obj;
+
+	obj = GTK_OBJECT (item);
+
+	group_add (FOO_CANVAS_GROUP (item->parent), item);
+
+	redraw_and_repick_if_mapped (item);
+}
+
+/* Set_property handler for canvas items */
+static void
+foo_canvas_item_set_property (GObject *gobject, guint param_id,
+			      const GValue *value, GParamSpec *pspec)
+{
+	FooCanvasItem *item;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (gobject));
+
+	item = FOO_CANVAS_ITEM (gobject);
+
+	switch (param_id) {
+	case ITEM_PROP_PARENT:
+		if (item->parent != NULL) {
+		    g_warning ("Cannot set `parent' argument after item has "
+			       "already been constructed.");
+		} else if (g_value_get_object (value)) {
+			item->parent = FOO_CANVAS_ITEM (g_value_get_object (value));
+			item->canvas = item->parent->canvas;
+			item_post_create_setup (item);
+		}
+		break;
+	case ITEM_PROP_VISIBLE:
+		if (g_value_get_boolean (value)) {
+			foo_canvas_item_show (item);
+		} else {
+			foo_canvas_item_hide (item);
+		}
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		break;
+	}
+}
+
+/* Get_property handler for canvas items */
+static void
+foo_canvas_item_get_property (GObject *gobject, guint param_id,
+			      GValue *value, GParamSpec *pspec)
+{
+	FooCanvasItem *item;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (gobject));
+
+	item = FOO_CANVAS_ITEM (gobject);
+
+	switch (param_id) {
+	case ITEM_PROP_VISIBLE:
+		g_value_set_boolean (value, item->object.flags & FOO_CANVAS_ITEM_VISIBLE);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		break;
+	}
+}
+
+/**
+ * foo_canvas_item_construct:
+ * @item: An unconstructed canvas item.
+ * @parent: The parent group for the item.
+ * @first_arg_name: The name of the first argument for configuring the item.
+ * @args: The list of arguments used to configure the item.
+ *
+ * Constructs a canvas item; meant for use only by item implementations.
+ **/
+void
+foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent,
+			   const gchar *first_arg_name, va_list args)
+{
+	g_return_if_fail (FOO_IS_CANVAS_GROUP (parent));
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	item->parent = FOO_CANVAS_ITEM (parent);
+	item->canvas = item->parent->canvas;
+
+	g_object_set_valist (G_OBJECT (item), first_arg_name, args);
+
+	item_post_create_setup (item);
+}
+
+
+static void
+redraw_and_repick_if_mapped (FooCanvasItem *item)
+{
+	if (item->object.flags & FOO_CANVAS_ITEM_MAPPED) {
+		foo_canvas_item_request_redraw (item);
+		item->canvas->need_repick = TRUE;
+	}
+}
+
+
+/* Standard object dispose function for canvas items */
+static void
+foo_canvas_item_dispose (GObject *object)
+{
+	FooCanvasItem *item;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (object));
+
+	item = FOO_CANVAS_ITEM (object);
+
+	foo_canvas_item_request_redraw (item);
+
+	/* Make the canvas forget about us */
+
+	if (item == item->canvas->current_item) {
+		item->canvas->current_item = NULL;
+		item->canvas->need_repick = TRUE;
+	}
+
+	if (item == item->canvas->new_current_item) {
+		item->canvas->new_current_item = NULL;
+		item->canvas->need_repick = TRUE;
+	}
+
+	if (item == item->canvas->grabbed_item) {
+		GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (item->canvas));
+		item->canvas->grabbed_item = NULL;
+		gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME);
+	}
+
+	if (item == item->canvas->focused_item)
+		item->canvas->focused_item = NULL;
+
+	/* Normal destroy stuff */
+
+	if (item->object.flags & FOO_CANVAS_ITEM_MAPPED)
+		(* FOO_CANVAS_ITEM_GET_CLASS (item)->unmap) (item);
+
+	if (item->object.flags & FOO_CANVAS_ITEM_REALIZED)
+		(* FOO_CANVAS_ITEM_GET_CLASS (item)->unrealize) (item);
+
+	if (item->parent)
+		group_remove (FOO_CANVAS_GROUP (item->parent), item);
+
+	G_OBJECT_CLASS (item_parent_class)->dispose (object);
+}
+
+/* Realize handler for canvas items */
+static void
+foo_canvas_item_realize (FooCanvasItem *item)
+{
+	if (item->parent && !(item->parent->object.flags & FOO_CANVAS_ITEM_REALIZED))
+		(* FOO_CANVAS_ITEM_GET_CLASS (item->parent)->realize) (item->parent);
+
+	if (item->parent == NULL && !GTK_WIDGET_REALIZED (GTK_WIDGET (item->canvas)))
+		gtk_widget_realize (GTK_WIDGET (item->canvas));
+
+	GTK_OBJECT_SET_FLAGS (item, FOO_CANVAS_ITEM_REALIZED);
+
+	foo_canvas_item_request_update (item);
+}
+
+/* Unrealize handler for canvas items */
+static void
+foo_canvas_item_unrealize (FooCanvasItem *item)
+{
+	if (item->object.flags & FOO_CANVAS_ITEM_MAPPED)
+		(* FOO_CANVAS_ITEM_GET_CLASS (item)->unmap) (item);
+
+	GTK_OBJECT_UNSET_FLAGS (item, FOO_CANVAS_ITEM_REALIZED);
+}
+
+/* Map handler for canvas items */
+static void
+foo_canvas_item_map (FooCanvasItem *item)
+{
+	GTK_OBJECT_SET_FLAGS (item, FOO_CANVAS_ITEM_MAPPED);
+}
+
+/* Unmap handler for canvas items */
+static void
+foo_canvas_item_unmap (FooCanvasItem *item)
+{
+	GTK_OBJECT_UNSET_FLAGS (item, FOO_CANVAS_ITEM_MAPPED);
+}
+
+/* Update handler for canvas items */
+static void
+foo_canvas_item_update (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags)
+{
+	GTK_OBJECT_UNSET_FLAGS (item, FOO_CANVAS_ITEM_NEED_UPDATE);
+	GTK_OBJECT_UNSET_FLAGS (item, FOO_CANVAS_ITEM_NEED_DEEP_UPDATE);
+}
+
+/*
+ * This routine invokes the update method of the item
+ * Please notice, that we take parent to canvas pixel matrix as argument
+ * unlike virtual method ::update, whose argument is item 2 canvas pixel
+ * matrix
+ *
+ * I will try to force somewhat meaningful naming for affines (Lauris)
+ * General naming rule is FROM2TO, where FROM and TO are abbreviations
+ * So p2cpx is Parent2CanvasPixel and i2cpx is Item2CanvasPixel
+ * I hope that this helps to keep track of what really happens
+ *
+ */
+
+static void
+foo_canvas_item_invoke_update (FooCanvasItem *item,
+			       double i2w_dx,
+			       double i2w_dy,
+			       int flags)
+{
+	int child_flags;
+
+	child_flags = flags;
+
+	/* apply object flags to child flags */
+	child_flags &= ~FOO_CANVAS_UPDATE_REQUESTED;
+
+	if (item->object.flags & FOO_CANVAS_ITEM_NEED_UPDATE)
+		child_flags |= FOO_CANVAS_UPDATE_REQUESTED;
+
+	if (item->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)
+		child_flags |= FOO_CANVAS_UPDATE_DEEP;
+
+	if (child_flags & GCI_UPDATE_MASK) {
+		if (FOO_CANVAS_ITEM_GET_CLASS (item)->update)
+			FOO_CANVAS_ITEM_GET_CLASS (item)->update (item, i2w_dx, i2w_dy, child_flags);
+	}
+
+	/* If this fail you probably forgot to chain up to
+	 * FooCanvasItem::update from a derived class */
+ 	g_return_if_fail (!(item->object.flags & FOO_CANVAS_ITEM_NEED_UPDATE));
+}
+
+/*
+ * This routine invokes the point method of the item.
+ * The arguments x, y should be in the parent item local coordinates.
+ */
+
+static double
+foo_canvas_item_invoke_point (FooCanvasItem *item, double x, double y, int cx, int cy, FooCanvasItem **actual_item)
+{
+	/* Calculate x & y in item local coordinates */
+
+	if (FOO_CANVAS_ITEM_GET_CLASS (item)->point)
+		return FOO_CANVAS_ITEM_GET_CLASS (item)->point (item, x, y, cx, cy, actual_item);
+
+	return 1e18;
+}
+
+/**
+ * foo_canvas_item_set:
+ * @item: A canvas item.
+ * @first_arg_name: The list of object argument name/value pairs used to configure the item.
+ * @Varargs:
+ *
+ * Configures a canvas item.  The arguments in the item are set to the specified
+ * values, and the item is repainted as appropriate.
+ **/
+void
+foo_canvas_item_set (FooCanvasItem *item, const gchar *first_arg_name, ...)
+{
+	va_list args;
+
+	va_start (args, first_arg_name);
+	foo_canvas_item_set_valist (item, first_arg_name, args);
+	va_end (args);
+}
+
+
+/**
+ * foo_canvas_item_set_valist:
+ * @item: A canvas item.
+ * @first_arg_name: The name of the first argument used to configure the item.
+ * @args: The list of object argument name/value pairs used to configure the item.
+ *
+ * Configures a canvas item.  The arguments in the item are set to the specified
+ * values, and the item is repainted as appropriate.
+ **/
+void
+foo_canvas_item_set_valist (FooCanvasItem *item, const gchar *first_arg_name, va_list args)
+{
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	g_object_set_valist (G_OBJECT (item), first_arg_name, args);
+
+#if 0
+	/* I commented this out, because item implementations have to schedule update/redraw */
+	foo_canvas_item_request_redraw (item);
+#endif
+
+	item->canvas->need_repick = TRUE;
+}
+
+
+/**
+ * foo_canvas_item_move:
+ * @item: A canvas item.
+ * @dx: Horizontal offset.
+ * @dy: Vertical offset.
+ *
+ * Moves a canvas item by creating an affine transformation matrix for
+ * translation by using the specified values. This happens in item
+ * local coordinate system, so if you have nontrivial transform, it
+ * most probably does not do, what you want.
+ **/
+void
+foo_canvas_item_move (FooCanvasItem *item, double dx, double dy)
+{
+        g_return_if_fail (item != NULL);
+        g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+        if (!FOO_CANVAS_ITEM_GET_CLASS (item)->translate) {
+                g_warning ("Item type %s does not implement translate method.\n",
+                           g_type_name (GTK_OBJECT_TYPE (item)));
+                return;
+        }
+
+        (* FOO_CANVAS_ITEM_GET_CLASS (item)->translate) (item, dx, dy);
+
+	if (item->object.flags & FOO_CANVAS_ITEM_MAPPED)
+		item->canvas->need_repick = TRUE;
+
+	if (!(item->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) {
+		item->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE;
+		if (item->parent != NULL)
+			foo_canvas_item_request_update (item->parent);
+		else
+			foo_canvas_request_update (item->canvas);
+	}
+
+}
+
+/* Convenience function to reorder items in a group's child list.  This puts the
+ * specified link after the "before" link. Returns TRUE if the list was changed.
+ */
+static gboolean
+put_item_after (GList *link, GList *before)
+{
+	FooCanvasGroup *parent;
+
+	if (link == before)
+		return FALSE;
+
+	parent = FOO_CANVAS_GROUP (FOO_CANVAS_ITEM (link->data)->parent);
+
+	if (before == NULL) {
+		if (link == parent->item_list)
+			return FALSE;
+
+		link->prev->next = link->next;
+
+		if (link->next)
+			link->next->prev = link->prev;
+		else
+			parent->item_list_end = link->prev;
+
+		link->prev = before;
+		link->next = parent->item_list;
+		link->next->prev = link;
+		parent->item_list = link;
+	} else {
+		if ((link == parent->item_list_end) && (before == parent->item_list_end->prev))
+			return FALSE;
+
+		if (link->next)
+			link->next->prev = link->prev;
+
+		if (link->prev)
+			link->prev->next = link->next;
+		else {
+			parent->item_list = link->next;
+			parent->item_list->prev = NULL;
+		}
+
+		link->prev = before;
+		link->next = before->next;
+
+		link->prev->next = link;
+
+		if (link->next)
+			link->next->prev = link;
+		else
+			parent->item_list_end = link;
+	}
+	return TRUE;
+}
+
+
+/**
+ * foo_canvas_item_raise:
+ * @item: A canvas item.
+ * @positions: Number of steps to raise the item.
+ *
+ * Raises the item in its parent's stack by the specified number of positions.
+ * If the number of positions is greater than the distance to the top of the
+ * stack, then the item is put at the top.
+ **/
+void
+foo_canvas_item_raise (FooCanvasItem *item, int positions)
+{
+	GList *link, *before;
+	FooCanvasGroup *parent;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+	g_return_if_fail (positions >= 0);
+
+	if (!item->parent || positions == 0)
+		return;
+
+	parent = FOO_CANVAS_GROUP (item->parent);
+	link = g_list_find (parent->item_list, item);
+	g_assert (link != NULL);
+
+	for (before = link; positions && before; positions--)
+		before = before->next;
+
+	if (!before)
+		before = parent->item_list_end;
+
+	if (put_item_after (link, before)) {
+		redraw_and_repick_if_mapped (item);
+	}
+}
+
+
+/**
+ * foo_canvas_item_lower:
+ * @item: A canvas item.
+ * @positions: Number of steps to lower the item.
+ *
+ * Lowers the item in its parent's stack by the specified number of positions.
+ * If the number of positions is greater than the distance to the bottom of the
+ * stack, then the item is put at the bottom.
+ **/
+void
+foo_canvas_item_lower (FooCanvasItem *item, int positions)
+{
+	GList *link, *before;
+	FooCanvasGroup *parent;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+	g_return_if_fail (positions >= 1);
+
+	if (!item->parent || positions == 0)
+		return;
+
+	parent = FOO_CANVAS_GROUP (item->parent);
+	link = g_list_find (parent->item_list, item);
+	g_assert (link != NULL);
+
+	if (link->prev)
+		for (before = link->prev; positions && before; positions--)
+			before = before->prev;
+	else
+		before = NULL;
+
+	if (put_item_after (link, before)) {
+		redraw_and_repick_if_mapped (item);
+	}
+}
+
+
+/**
+ * foo_canvas_item_raise_to_top:
+ * @item: A canvas item.
+ *
+ * Raises an item to the top of its parent's stack.
+ **/
+void
+foo_canvas_item_raise_to_top (FooCanvasItem *item)
+{
+	GList *link;
+	FooCanvasGroup *parent;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	if (!item->parent)
+		return;
+
+	parent = FOO_CANVAS_GROUP (item->parent);
+	link = g_list_find (parent->item_list, item);
+	g_assert (link != NULL);
+
+	if (put_item_after (link, parent->item_list_end)) {
+		redraw_and_repick_if_mapped (item);
+	}
+}
+
+
+/**
+ * foo_canvas_item_lower_to_bottom:
+ * @item: A canvas item.
+ *
+ * Lowers an item to the bottom of its parent's stack.
+ **/
+void
+foo_canvas_item_lower_to_bottom (FooCanvasItem *item)
+{
+	GList *link;
+	FooCanvasGroup *parent;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	if (!item->parent)
+		return;
+
+	parent = FOO_CANVAS_GROUP (item->parent);
+	link = g_list_find (parent->item_list, item);
+	g_assert (link != NULL);
+
+	if (put_item_after (link, NULL)) {
+		redraw_and_repick_if_mapped (item);
+	}
+}
+
+/**
+ * foo_canvas_item_send_behind:
+ * @item: A canvas item.
+ * @behind_item: The canvas item to put item behind, or NULL
+ *
+ * Moves item to a in the position in the stacking order so that
+ * it is placed immediately below behind_item, or at the top if
+ * behind_item is NULL.
+ **/
+void
+foo_canvas_item_send_behind (FooCanvasItem *item,
+			     FooCanvasItem *behind_item)
+{
+	GList *item_list;
+	int item_position, behind_position;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	if (behind_item == NULL) {
+		foo_canvas_item_raise_to_top (item);
+		return;
+	}
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (behind_item));
+	g_return_if_fail (item->parent == behind_item->parent);
+
+	item_list = FOO_CANVAS_GROUP (item->parent)->item_list;
+
+	item_position = g_list_index (item_list, item);
+	g_assert (item_position != -1);
+	behind_position = g_list_index (item_list, behind_item);
+	g_assert (behind_position != -1);
+	g_assert (item_position != behind_position);
+
+	if (item_position == behind_position - 1) {
+		return;
+	}
+
+	if (item_position < behind_position) {
+		foo_canvas_item_raise (item, (behind_position - 1) - item_position);
+	} else {
+		foo_canvas_item_lower (item, item_position - behind_position);
+	}
+}
+
+/**
+ * foo_canvas_item_show:
+ * @item: A canvas item.
+ *
+ * Shows a canvas item.  If the item was already shown, then no action is taken.
+ **/
+void
+foo_canvas_item_show (FooCanvasItem *item)
+{
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	if (!(item->object.flags & FOO_CANVAS_ITEM_VISIBLE)) {
+		item->object.flags |= FOO_CANVAS_ITEM_VISIBLE;
+
+		if (!(item->object.flags & FOO_CANVAS_ITEM_REALIZED))
+			(* FOO_CANVAS_ITEM_GET_CLASS (item)->realize) (item);
+
+		if (item->parent != NULL) {
+			if (!(item->object.flags & FOO_CANVAS_ITEM_MAPPED) &&
+			    item->parent->object.flags & FOO_CANVAS_ITEM_MAPPED)
+				(* FOO_CANVAS_ITEM_GET_CLASS (item)->map) (item);
+		} else {
+			if (!(item->object.flags & FOO_CANVAS_ITEM_MAPPED) &&
+			    GTK_WIDGET_MAPPED (GTK_WIDGET (item->canvas)))
+				(* FOO_CANVAS_ITEM_GET_CLASS (item)->map) (item);
+		}
+
+		redraw_and_repick_if_mapped (item);
+	}
+}
+
+
+/**
+ * foo_canvas_item_hide:
+ * @item: A canvas item.
+ *
+ * Hides a canvas item.  If the item was already hidden, then no action is
+ * taken.
+ **/
+void
+foo_canvas_item_hide (FooCanvasItem *item)
+{
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE) {
+		item->object.flags &= ~FOO_CANVAS_ITEM_VISIBLE;
+
+		redraw_and_repick_if_mapped (item);
+
+		if (item->object.flags & FOO_CANVAS_ITEM_MAPPED)
+			(* FOO_CANVAS_ITEM_GET_CLASS (item)->unmap) (item);
+
+		/* No need to unrealize when we just want to hide */
+	}
+}
+
+
+/**
+ * foo_canvas_item_grab:
+ * @item: A canvas item.
+ * @event_mask: Mask of events that will be sent to this item.
+ * @cursor: If non-NULL, the cursor that will be used while the grab is active.
+ * @etime: The timestamp required for grabbing the mouse, or GDK_CURRENT_TIME.
+ *
+ * Specifies that all events that match the specified event mask should be sent
+ * to the specified item, and also grabs the mouse by calling
+ * gdk_pointer_grab().  The event mask is also used when grabbing the pointer.
+ * If @cursor is not NULL, then that cursor is used while the grab is active.
+ * The @etime parameter is the timestamp required for grabbing the mouse.
+ *
+ * Return value: If an item was already grabbed, it returns %GDK_GRAB_ALREADY_GRABBED.  If
+ * the specified item was hidden by calling foo_canvas_item_hide(), then it
+ * returns %GDK_GRAB_NOT_VIEWABLE.  Else, it returns the result of calling
+ * gdk_pointer_grab().
+ **/
+int
+foo_canvas_item_grab (FooCanvasItem *item, guint event_mask, GdkCursor *cursor, guint32 etime)
+{
+	int retval;
+
+	g_return_val_if_fail (FOO_IS_CANVAS_ITEM (item), GDK_GRAB_NOT_VIEWABLE);
+	g_return_val_if_fail (GTK_WIDGET_MAPPED (item->canvas), GDK_GRAB_NOT_VIEWABLE);
+
+	if (item->canvas->grabbed_item)
+		return GDK_GRAB_ALREADY_GRABBED;
+
+	if (!(item->object.flags & FOO_CANVAS_ITEM_MAPPED))
+		return GDK_GRAB_NOT_VIEWABLE;
+
+	retval = gdk_pointer_grab (item->canvas->layout.bin_window,
+				   FALSE,
+				   event_mask,
+				   NULL,
+				   cursor,
+				   etime);
+
+	if (retval != GDK_GRAB_SUCCESS)
+		return retval;
+
+	item->canvas->grabbed_item = item;
+	item->canvas->grabbed_event_mask = event_mask;
+	item->canvas->current_item = item; /* So that events go to the grabbed item */
+
+	return retval;
+}
+
+
+/**
+ * foo_canvas_item_ungrab:
+ * @item: A canvas item that holds a grab.
+ * @etime: The timestamp for ungrabbing the mouse.
+ *
+ * Ungrabs the item, which must have been grabbed in the canvas, and ungrabs the
+ * mouse.
+ **/
+void
+foo_canvas_item_ungrab (FooCanvasItem *item, guint32 etime)
+{
+	GdkDisplay *display;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	if (item->canvas->grabbed_item != item)
+		return;
+
+	display = gtk_widget_get_display (GTK_WIDGET (item->canvas));
+	item->canvas->grabbed_item = NULL;
+	gdk_display_pointer_ungrab (display, etime);
+}
+
+
+/**
+ * foo_canvas_item_w2i:
+ * @item: A canvas item.
+ * @x: X coordinate to convert (input/output value).
+ * @y: Y coordinate to convert (input/output value).
+ *
+ * Converts a coordinate pair from world coordinates to item-relative
+ * coordinates.
+ **/
+void
+foo_canvas_item_w2i (FooCanvasItem *item, double *x, double *y)
+{
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+	g_return_if_fail (x != NULL);
+	g_return_if_fail (y != NULL);
+
+	item = item->parent;
+	while (item) {
+		if (FOO_IS_CANVAS_GROUP (item)) {
+			*x -= FOO_CANVAS_GROUP (item)->xpos;
+			*y -= FOO_CANVAS_GROUP (item)->ypos;
+		}
+
+		item = item->parent;
+	}
+}
+
+
+/**
+ * foo_canvas_item_i2w:
+ * @item: A canvas item.
+ * @x: X coordinate to convert (input/output value).
+ * @y: Y coordinate to convert (input/output value).
+ *
+ * Converts a coordinate pair from item-relative coordinates to world
+ * coordinates.
+ **/
+void
+foo_canvas_item_i2w (FooCanvasItem *item, double *x, double *y)
+{
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+	g_return_if_fail (x != NULL);
+	g_return_if_fail (y != NULL);
+
+	item = item->parent;
+	while (item) {
+		if (FOO_IS_CANVAS_GROUP (item)) {
+			*x += FOO_CANVAS_GROUP (item)->xpos;
+			*y += FOO_CANVAS_GROUP (item)->ypos;
+		}
+
+		item = item->parent;
+	}
+}
+
+/* Returns whether the item is an inferior of or is equal to the parent. */
+static int
+is_descendant (FooCanvasItem *item, FooCanvasItem *parent)
+{
+	for (; item; item = item->parent)
+		if (item == parent)
+			return TRUE;
+
+	return FALSE;
+}
+
+/**
+ * foo_canvas_item_reparent:
+ * @item: A canvas item.
+ * @new_group: A canvas group.
+ *
+ * Changes the parent of the specified item to be the new group.  The item keeps
+ * its group-relative coordinates as for its old parent, so the item may change
+ * its absolute position within the canvas.
+ **/
+void
+foo_canvas_item_reparent (FooCanvasItem *item, FooCanvasGroup *new_group)
+{
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+	g_return_if_fail (FOO_IS_CANVAS_GROUP (new_group));
+
+	/* Both items need to be in the same canvas */
+	g_return_if_fail (item->canvas == FOO_CANVAS_ITEM (new_group)->canvas);
+
+	/* The group cannot be an inferior of the item or be the item itself --
+	 * this also takes care of the case where the item is the root item of
+	 * the canvas.  */
+	g_return_if_fail (!is_descendant (FOO_CANVAS_ITEM (new_group), item));
+
+	/* Everything is ok, now actually reparent the item */
+
+	g_object_ref (GTK_OBJECT (item)); /* protect it from the unref in group_remove */
+
+	foo_canvas_item_request_redraw (item);
+
+	group_remove (FOO_CANVAS_GROUP (item->parent), item);
+	item->parent = FOO_CANVAS_ITEM (new_group);
+	group_add (new_group, item);
+
+	/* Redraw and repick */
+
+	redraw_and_repick_if_mapped (item);
+
+	g_object_unref (GTK_OBJECT (item));
+}
+
+/**
+ * foo_canvas_item_grab_focus:
+ * @item: A canvas item.
+ *
+ * Makes the specified item take the keyboard focus, so all keyboard events will
+ * be sent to it.  If the canvas widget itself did not have the focus, it grabs
+ * it as well.
+ **/
+void
+foo_canvas_item_grab_focus (FooCanvasItem *item)
+{
+	FooCanvasItem *focused_item;
+	GdkEvent ev;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+	g_return_if_fail (GTK_WIDGET_CAN_FOCUS (GTK_WIDGET (item->canvas)));
+
+	focused_item = item->canvas->focused_item;
+
+	if (focused_item) {
+		ev.focus_change.type = GDK_FOCUS_CHANGE;
+		ev.focus_change.window = GTK_LAYOUT (item->canvas)->bin_window;
+		ev.focus_change.send_event = FALSE;
+		ev.focus_change.in = FALSE;
+
+		emit_event (item->canvas, &ev);
+	}
+
+	item->canvas->focused_item = item;
+	gtk_widget_grab_focus (GTK_WIDGET (item->canvas));
+
+	if (focused_item) {
+		ev.focus_change.type = GDK_FOCUS_CHANGE;
+		ev.focus_change.window = GTK_LAYOUT (item->canvas)->bin_window;
+		ev.focus_change.send_event = FALSE;
+		ev.focus_change.in = TRUE;
+
+		emit_event (item->canvas, &ev);
+	}
+}
+
+
+/**
+ * foo_canvas_item_get_bounds:
+ * @item: A canvas item.
+ * @x1: Leftmost edge of the bounding box (return value).
+ * @y1: Upper edge of the bounding box (return value).
+ * @x2: Rightmost edge of the bounding box (return value).
+ * @y2: Lower edge of the bounding box (return value).
+ *
+ * Queries the bounding box of a canvas item.  The bounds are returned in the
+ * coordinate system of the item's parent.
+ **/
+void
+foo_canvas_item_get_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	double tx1, ty1, tx2, ty2;
+
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	tx1 = ty1 = tx2 = ty2 = 0.0;
+
+	/* Get the item's bounds in its coordinate system */
+
+	if (FOO_CANVAS_ITEM_GET_CLASS (item)->bounds)
+		(* FOO_CANVAS_ITEM_GET_CLASS (item)->bounds) (item, &tx1, &ty1, &tx2, &ty2);
+
+	/* Return the values */
+
+	if (x1)
+		*x1 = tx1;
+
+	if (y1)
+		*y1 = ty1;
+
+	if (x2)
+		*x2 = tx2;
+
+	if (y2)
+		*y2 = ty2;
+}
+
+
+/**
+ * foo_canvas_item_request_update
+ * @item: A canvas item.
+ *
+ * To be used only by item implementations.  Requests that the canvas queue an
+ * update for the specified item.
+ **/
+void
+foo_canvas_item_request_update (FooCanvasItem *item)
+{
+	g_return_if_fail (!item->canvas->doing_update);
+
+	if (item->object.flags & FOO_CANVAS_ITEM_NEED_UPDATE)
+		return;
+
+	item->object.flags |= FOO_CANVAS_ITEM_NEED_UPDATE;
+
+	if (item->parent != NULL) {
+		/* Recurse up the tree */
+		foo_canvas_item_request_update (item->parent);
+	} else {
+		/* Have reached the top of the tree, make sure the update call gets scheduled. */
+		foo_canvas_request_update (item->canvas);
+	}
+}
+
+/**
+ * foo_canvas_item_request_update
+ * @item: A canvas item.
+ *
+ * Convenience function that informs a canvas that the specified item needs
+ * to be repainted. To be used by item implementations
+ **/
+void
+foo_canvas_item_request_redraw (FooCanvasItem *item)
+{
+	if (item->object.flags & FOO_CANVAS_ITEM_MAPPED)
+		foo_canvas_request_redraw (item->canvas,
+					   item->x1, item->y1,
+					   item->x2 + 1, item->y2 + 1);
+}
+
+
+
+/*** FooCanvasGroup ***/
+
+
+enum {
+	GROUP_PROP_0,
+	GROUP_PROP_X,
+	GROUP_PROP_Y
+};
+
+
+static void foo_canvas_group_class_init  (FooCanvasGroupClass *class);
+static void foo_canvas_group_init        (FooCanvasGroup      *group);
+static void foo_canvas_group_set_property(GObject               *object,
+					    guint                  param_id,
+					    const GValue          *value,
+					    GParamSpec            *pspec);
+static void foo_canvas_group_get_property(GObject               *object,
+					    guint                  param_id,
+					    GValue                *value,
+					    GParamSpec            *pspec);
+
+static void foo_canvas_group_destroy     (GtkObject             *object);
+
+static void   foo_canvas_group_update      (FooCanvasItem *item,
+					      double           i2w_dx,
+					      double           i2w_dy,
+					      int              flags);
+static void   foo_canvas_group_unrealize   (FooCanvasItem *item);
+static void   foo_canvas_group_map         (FooCanvasItem *item);
+static void   foo_canvas_group_unmap       (FooCanvasItem *item);
+static void   foo_canvas_group_draw        (FooCanvasItem *item, GdkDrawable *drawable,
+					      GdkEventExpose *expose);
+static double foo_canvas_group_point       (FooCanvasItem *item, double x, double y,
+					      int cx, int cy,
+					      FooCanvasItem **actual_item);
+static void   foo_canvas_group_translate   (FooCanvasItem *item, double dx, double dy);
+static void   foo_canvas_group_bounds      (FooCanvasItem *item, double *x1, double *y1,
+					      double *x2, double *y2);
+
+
+static FooCanvasItemClass *group_parent_class;
+
+
+/**
+ * foo_canvas_group_get_type:
+ *
+ * Registers the &FooCanvasGroup class if necessary, and returns the type ID
+ * associated to it.
+ *
+ * Return value:  The type ID of the &FooCanvasGroup class.
+ **/
+GType
+foo_canvas_group_get_type (void)
+{
+	static GType group_type = 0;
+
+	if (!group_type) {
+		static const GTypeInfo group_info = {
+			sizeof (FooCanvasGroupClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) foo_canvas_group_class_init,
+			NULL,           /* class_finalize */
+			NULL,           /* class_data */
+			sizeof (FooCanvasGroup),
+			0,              /* n_preallocs */
+			(GInstanceInitFunc) foo_canvas_group_init
+
+
+		};
+
+		group_type = g_type_register_static (foo_canvas_item_get_type (),
+						     "FooCanvasGroup",
+						     &group_info,
+						     0);
+	}
+
+	return group_type;
+}
+
+/* Class initialization function for FooCanvasGroupClass */
+static void
+foo_canvas_group_class_init (FooCanvasGroupClass *class)
+{
+	GObjectClass *gobject_class;
+	GtkObjectClass *object_class;
+	FooCanvasItemClass *item_class;
+
+	gobject_class = (GObjectClass *) class;
+	object_class = (GtkObjectClass *) class;
+	item_class = (FooCanvasItemClass *) class;
+
+	group_parent_class = gtk_type_class (foo_canvas_item_get_type ());
+
+	gobject_class->set_property = foo_canvas_group_set_property;
+	gobject_class->get_property = foo_canvas_group_get_property;
+
+	g_object_class_install_property
+		(gobject_class, GROUP_PROP_X,
+		 g_param_spec_double ("x",
+				      _("X"),
+				      _("X"),
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class, GROUP_PROP_Y,
+		 g_param_spec_double ("y",
+				      _("Y"),
+				      _("Y"),
+				      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	object_class->destroy = foo_canvas_group_destroy;
+
+	item_class->update = foo_canvas_group_update;
+	item_class->unrealize = foo_canvas_group_unrealize;
+	item_class->map = foo_canvas_group_map;
+	item_class->unmap = foo_canvas_group_unmap;
+	item_class->draw = foo_canvas_group_draw;
+	item_class->point = foo_canvas_group_point;
+	item_class->translate = foo_canvas_group_translate;
+	item_class->bounds = foo_canvas_group_bounds;
+}
+
+/* Object initialization function for FooCanvasGroup */
+static void
+foo_canvas_group_init (FooCanvasGroup *group)
+{
+	group->xpos = 0.0;
+	group->ypos = 0.0;
+}
+
+/* Set_property handler for canvas groups */
+static void
+foo_canvas_group_set_property (GObject *gobject, guint param_id,
+			       const GValue *value, GParamSpec *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasGroup *group;
+	double old;
+	gboolean moved;
+
+	g_return_if_fail (FOO_IS_CANVAS_GROUP (gobject));
+
+	item = FOO_CANVAS_ITEM (gobject);
+	group = FOO_CANVAS_GROUP (gobject);
+
+	moved = FALSE;
+	switch (param_id) {
+	case GROUP_PROP_X:
+		old = group->xpos;
+		group->xpos = g_value_get_double (value);
+		if (old != group->xpos)
+			moved = TRUE;
+		break;
+
+	case GROUP_PROP_Y:
+		old = group->ypos;
+		group->ypos = g_value_get_double (value);
+		if (old != group->ypos)
+			moved = TRUE;
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		break;
+	}
+
+	if (moved) {
+		item->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE;
+		if (item->parent != NULL)
+			foo_canvas_item_request_update (item->parent);
+		else
+			foo_canvas_request_update (item->canvas);
+	}
+}
+
+/* Get_property handler for canvas groups */
+static void
+foo_canvas_group_get_property (GObject *gobject, guint param_id,
+				 GValue *value, GParamSpec *pspec)
+{
+	FooCanvasItem *item;
+	FooCanvasGroup *group;
+
+	g_return_if_fail (FOO_IS_CANVAS_GROUP (gobject));
+
+	item = FOO_CANVAS_ITEM (gobject);
+	group = FOO_CANVAS_GROUP (gobject);
+
+	switch (param_id) {
+	case GROUP_PROP_X:
+		g_value_set_double (value, group->xpos);
+		break;
+
+	case GROUP_PROP_Y:
+		g_value_set_double (value, group->ypos);
+		break;
+
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		break;
+	}
+}
+
+/* Destroy handler for canvas groups */
+static void
+foo_canvas_group_destroy (GtkObject *object)
+{
+	FooCanvasGroup *group;
+	FooCanvasItem *child;
+	GList *list;
+
+	g_return_if_fail (FOO_IS_CANVAS_GROUP (object));
+
+	group = FOO_CANVAS_GROUP (object);
+
+	list = group->item_list;
+	while (list) {
+		child = list->data;
+		list = list->next;
+
+		gtk_object_destroy (GTK_OBJECT (child));
+	}
+
+	if (GTK_OBJECT_CLASS (group_parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (group_parent_class)->destroy) (object);
+}
+
+/* Update handler for canvas groups */
+static void
+foo_canvas_group_update (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags)
+{
+	FooCanvasGroup *group;
+	GList *list;
+	FooCanvasItem *i;
+	double bbox_x0, bbox_y0, bbox_x1, bbox_y1;
+	gboolean first = TRUE;
+
+	group = FOO_CANVAS_GROUP (item);
+
+	(* group_parent_class->update) (item, i2w_dx, i2w_dy, flags);
+
+	bbox_x0 = 0;
+	bbox_y0 = 0;
+	bbox_x1 = 0;
+	bbox_y1 = 0;
+
+	for (list = group->item_list; list; list = list->next) {
+		i = list->data;
+
+		foo_canvas_item_invoke_update (i, i2w_dx + group->xpos, i2w_dy + group->ypos, flags);
+
+		if (first) {
+			first = FALSE;
+			bbox_x0 = i->x1;
+			bbox_y0 = i->y1;
+			bbox_x1 = i->x2;
+			bbox_y1 = i->y2;
+		} else {
+			bbox_x0 = MIN (bbox_x0, i->x1);
+			bbox_y0 = MIN (bbox_y0, i->y1);
+			bbox_x1 = MAX (bbox_x1, i->x2);
+			bbox_y1 = MAX (bbox_y1, i->y2);
+		}
+	}
+	item->x1 = bbox_x0;
+	item->y1 = bbox_y0;
+	item->x2 = bbox_x1;
+	item->y2 = bbox_y1;
+}
+
+/* Unrealize handler for canvas groups */
+static void
+foo_canvas_group_unrealize (FooCanvasItem *item)
+{
+	FooCanvasGroup *group;
+	GList *list;
+	FooCanvasItem *i;
+
+	group = FOO_CANVAS_GROUP (item);
+
+	/* Unmap group before children to avoid flash */
+	if (item->object.flags & FOO_CANVAS_ITEM_MAPPED)
+		(* FOO_CANVAS_ITEM_GET_CLASS (item)->unmap) (item);
+
+	for (list = group->item_list; list; list = list->next) {
+		i = list->data;
+
+		if (i->object.flags & FOO_CANVAS_ITEM_REALIZED)
+			(* FOO_CANVAS_ITEM_GET_CLASS (i)->unrealize) (i);
+	}
+
+	(* group_parent_class->unrealize) (item);
+}
+
+/* Map handler for canvas groups */
+static void
+foo_canvas_group_map (FooCanvasItem *item)
+{
+	FooCanvasGroup *group;
+	GList *list;
+	FooCanvasItem *i;
+
+	group = FOO_CANVAS_GROUP (item);
+
+	for (list = group->item_list; list; list = list->next) {
+		i = list->data;
+
+		if (i->object.flags & FOO_CANVAS_ITEM_VISIBLE &&
+		    !(i->object.flags & FOO_CANVAS_ITEM_MAPPED)) {
+			if (!(i->object.flags & FOO_CANVAS_ITEM_REALIZED))
+				(* FOO_CANVAS_ITEM_GET_CLASS (i)->realize) (i);
+
+			(* FOO_CANVAS_ITEM_GET_CLASS (i)->map) (i);
+		}
+	}
+
+	(* group_parent_class->map) (item);
+}
+
+/* Unmap handler for canvas groups */
+static void
+foo_canvas_group_unmap (FooCanvasItem *item)
+{
+	FooCanvasGroup *group;
+	GList *list;
+	FooCanvasItem *i;
+
+	group = FOO_CANVAS_GROUP (item);
+
+	for (list = group->item_list; list; list = list->next) {
+		i = list->data;
+
+		if (i->object.flags & FOO_CANVAS_ITEM_MAPPED)
+			(* FOO_CANVAS_ITEM_GET_CLASS (i)->unmap) (i);
+	}
+
+	(* group_parent_class->unmap) (item);
+}
+
+/* Draw handler for canvas groups */
+static void
+foo_canvas_group_draw (FooCanvasItem *item, GdkDrawable *drawable,
+			 GdkEventExpose *expose)
+{
+	FooCanvasGroup *group;
+	GList *list;
+	FooCanvasItem *child = NULL;
+
+	group = FOO_CANVAS_GROUP (item);
+
+	for (list = group->item_list; list; list = list->next) {
+		child = list->data;
+
+		if ((child->object.flags & FOO_CANVAS_ITEM_MAPPED) &&
+		    (FOO_CANVAS_ITEM_GET_CLASS (child)->draw)) {
+			GdkRectangle child_rect;
+
+			child_rect.x = child->x1;
+			child_rect.y = child->y1;
+			child_rect.width = child->x2 - child->x1 + 1;
+			child_rect.height = child->y2 - child->y1 + 1;
+
+			if (gdk_region_rect_in (expose->region, &child_rect) != GDK_OVERLAP_RECTANGLE_OUT)
+				(* FOO_CANVAS_ITEM_GET_CLASS (child)->draw) (child, drawable, expose);
+		}
+	}
+}
+
+/* Point handler for canvas groups */
+static double
+foo_canvas_group_point (FooCanvasItem *item, double x, double y, int cx, int cy,
+			FooCanvasItem **actual_item)
+{
+	FooCanvasGroup *group;
+	GList *list;
+	FooCanvasItem *child, *point_item;
+	int x1, y1, x2, y2;
+	double gx, gy;
+	double dist, best;
+	int has_point;
+
+	group = FOO_CANVAS_GROUP (item);
+
+	x1 = cx - item->canvas->close_enough;
+	y1 = cy - item->canvas->close_enough;
+	x2 = cx + item->canvas->close_enough;
+	y2 = cy + item->canvas->close_enough;
+
+	best = 0.0;
+	*actual_item = NULL;
+
+	gx = x - group->xpos;
+	gy = y - group->ypos;
+
+	dist = 0.0; /* keep gcc happy */
+
+	for (list = group->item_list; list; list = list->next) {
+		child = list->data;
+
+		if ((child->x1 > x2) || (child->y1 > y2) || (child->x2 < x1) || (child->y2 < y1))
+			continue;
+
+		point_item = NULL; /* cater for incomplete item implementations */
+
+		if ((child->object.flags & FOO_CANVAS_ITEM_MAPPED)
+		    && FOO_CANVAS_ITEM_GET_CLASS (child)->point) {
+			dist = foo_canvas_item_invoke_point (child, gx, gy, cx, cy, &point_item);
+			has_point = TRUE;
+		} else
+			has_point = FALSE;
+
+		if (has_point
+		    && point_item
+		    && ((int) (dist * item->canvas->pixels_per_unit + 0.5)
+			<= item->canvas->close_enough)) {
+			best = dist;
+			*actual_item = point_item;
+		}
+	}
+
+	return best;
+}
+
+void
+foo_canvas_group_translate (FooCanvasItem *item, double dx, double dy)
+{
+        FooCanvasGroup *group;
+
+        group = FOO_CANVAS_GROUP (item);
+
+        group->xpos += dx;
+        group->ypos += dy;
+}
+
+/* Bounds handler for canvas groups */
+static void
+foo_canvas_group_bounds (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2)
+{
+	FooCanvasGroup *group;
+	FooCanvasItem *child;
+	GList *list;
+	double tx1, ty1, tx2, ty2;
+	double minx, miny, maxx, maxy;
+	int set;
+
+	group = FOO_CANVAS_GROUP (item);
+
+	/* Get the bounds of the first visible item */
+
+	child = NULL; /* Unnecessary but eliminates a warning. */
+
+	set = FALSE;
+
+	for (list = group->item_list; list; list = list->next) {
+		child = list->data;
+
+		if (child->object.flags & FOO_CANVAS_ITEM_MAPPED) {
+			set = TRUE;
+			foo_canvas_item_get_bounds (child, &minx, &miny, &maxx, &maxy);
+			break;
+		}
+	}
+
+	/* If there were no visible items, return an empty bounding box */
+
+	if (!set) {
+		*x1 = *y1 = *x2 = *y2 = 0.0;
+		return;
+	}
+
+	/* Now we can grow the bounds using the rest of the items */
+
+	list = list->next;
+
+	for (; list; list = list->next) {
+		child = list->data;
+
+		if (!(child->object.flags & FOO_CANVAS_ITEM_MAPPED))
+			continue;
+
+		foo_canvas_item_get_bounds (child, &tx1, &ty1, &tx2, &ty2);
+
+		if (tx1 < minx)
+			minx = tx1;
+
+		if (ty1 < miny)
+			miny = ty1;
+
+		if (tx2 > maxx)
+			maxx = tx2;
+
+		if (ty2 > maxy)
+			maxy = ty2;
+	}
+
+	/* Make the bounds be relative to our parent's coordinate system */
+
+	if (item->parent) {
+		minx += group->xpos;
+		miny += group->ypos;
+		maxx += group->xpos;
+		maxy += group->ypos;
+	}
+
+	*x1 = minx;
+	*y1 = miny;
+	*x2 = maxx;
+	*y2 = maxy;
+}
+
+/* Adds an item to a group */
+static void
+group_add (FooCanvasGroup *group, FooCanvasItem *item)
+{
+	g_object_ref (GTK_OBJECT (item));
+	gtk_object_sink (GTK_OBJECT (item));
+
+	if (!group->item_list) {
+		group->item_list = g_list_append (group->item_list, item);
+		group->item_list_end = group->item_list;
+	} else
+		group->item_list_end = g_list_append (group->item_list_end, item)->next;
+
+	if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE &&
+	    group->item.object.flags & FOO_CANVAS_ITEM_MAPPED) {
+		if (!(item->object.flags & FOO_CANVAS_ITEM_REALIZED))
+			(* FOO_CANVAS_ITEM_GET_CLASS (item)->realize) (item);
+
+		if (!(item->object.flags & FOO_CANVAS_ITEM_MAPPED))
+			(* FOO_CANVAS_ITEM_GET_CLASS (item)->map) (item);
+	}
+}
+
+/* Removes an item from a group */
+static void
+group_remove (FooCanvasGroup *group, FooCanvasItem *item)
+{
+	GList *children;
+
+	g_return_if_fail (FOO_IS_CANVAS_GROUP (group));
+	g_return_if_fail (FOO_IS_CANVAS_ITEM (item));
+
+	for (children = group->item_list; children; children = children->next)
+		if (children->data == item) {
+			if (item->object.flags & FOO_CANVAS_ITEM_MAPPED)
+				(* FOO_CANVAS_ITEM_GET_CLASS (item)->unmap) (item);
+
+			if (item->object.flags & FOO_CANVAS_ITEM_REALIZED)
+				(* FOO_CANVAS_ITEM_GET_CLASS (item)->unrealize) (item);
+
+			/* Unparent the child */
+
+			item->parent = NULL;
+			g_object_unref (GTK_OBJECT (item));
+
+			/* Remove it from the list */
+
+			if (children == group->item_list_end)
+				group->item_list_end = children->prev;
+
+			group->item_list = g_list_remove_link (group->item_list, children);
+			g_list_free (children);
+			break;
+		}
+}
+
+
+/*** FooCanvas ***/
+
+
+enum {
+	DRAW_BACKGROUND,
+	LAST_SIGNAL
+};
+
+static void foo_canvas_class_init          (FooCanvasClass *class);
+static void foo_canvas_init                (FooCanvas      *canvas);
+static void foo_canvas_destroy             (GtkObject        *object);
+static void foo_canvas_map                 (GtkWidget        *widget);
+static void foo_canvas_unmap               (GtkWidget        *widget);
+static void foo_canvas_realize             (GtkWidget        *widget);
+static void foo_canvas_unrealize           (GtkWidget        *widget);
+static void foo_canvas_size_allocate       (GtkWidget        *widget,
+					      GtkAllocation    *allocation);
+static gint foo_canvas_button              (GtkWidget        *widget,
+					      GdkEventButton   *event);
+static gint foo_canvas_motion              (GtkWidget        *widget,
+					      GdkEventMotion   *event);
+static gint foo_canvas_expose              (GtkWidget        *widget,
+					      GdkEventExpose   *event);
+static gint foo_canvas_key                 (GtkWidget        *widget,
+					      GdkEventKey      *event);
+static gint foo_canvas_crossing            (GtkWidget        *widget,
+					      GdkEventCrossing *event);
+static gint foo_canvas_focus_in            (GtkWidget        *widget,
+					      GdkEventFocus    *event);
+static gint foo_canvas_focus_out           (GtkWidget        *widget,
+					      GdkEventFocus    *event);
+static void foo_canvas_request_update_real (FooCanvas      *canvas);
+static void foo_canvas_draw_background     (FooCanvas      *canvas,
+					      int               x,
+					      int               y,
+					      int               width,
+					      int               height);
+
+
+static GtkLayoutClass *canvas_parent_class;
+
+static guint canvas_signals[LAST_SIGNAL];
+
+/**
+ * foo_canvas_get_type:
+ *
+ * Registers the &FooCanvas class if necessary, and returns the type ID
+ * associated to it.
+ *
+ * Return value:  The type ID of the &FooCanvas class.
+ **/
+GType
+foo_canvas_get_type (void)
+{
+	static GType canvas_type = 0;
+
+	if (!canvas_type) {
+		static const GTypeInfo canvas_info = {
+			sizeof (FooCanvasClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) foo_canvas_class_init,
+			NULL,           /* class_finalize */
+			NULL,           /* class_data */
+			sizeof (FooCanvas),
+			0,              /* n_preallocs */
+			(GInstanceInitFunc) foo_canvas_init
+		};
+
+		canvas_type = g_type_register_static (gtk_layout_get_type (),
+						      "FooCanvas",
+						      &canvas_info,
+						      0);
+	}
+
+	return canvas_type;
+}
+
+static void
+foo_canvas_get_property (GObject    *object,
+			   guint       prop_id,
+			   GValue     *value,
+			   GParamSpec *pspec)
+{
+	switch (prop_id) {
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+foo_canvas_set_property (GObject      *object,
+			   guint         prop_id,
+			   const GValue *value,
+			   GParamSpec   *pspec)
+{
+	switch (prop_id) {
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+foo_canvas_accessible_adjustment_changed (GtkAdjustment *adjustment,
+					  gpointer       data)
+{
+	AtkObject *atk_obj;
+
+	/* The scrollbars have changed */
+	atk_obj = ATK_OBJECT (data);
+
+	g_signal_emit_by_name (atk_obj, "visible_data_changed");
+}
+
+static void
+foo_canvas_accessible_initialize (AtkObject *obj,
+				  gpointer   data)
+{
+	FooCanvas *canvas;
+
+	if (ATK_OBJECT_CLASS (accessible_parent_class)->initialize != NULL)
+		ATK_OBJECT_CLASS (accessible_parent_class)->initialize (obj, data);
+
+	canvas = FOO_CANVAS (data);
+	g_signal_connect (canvas->layout.hadjustment,
+			  "value_changed",
+			  G_CALLBACK (foo_canvas_accessible_adjustment_changed),
+			  obj);
+	g_signal_connect (canvas->layout.vadjustment,
+			  "value_changed",
+			  G_CALLBACK (foo_canvas_accessible_adjustment_changed),
+			  obj);
+
+	obj->role = ATK_ROLE_LAYERED_PANE;
+}
+
+static gint
+foo_canvas_accessible_get_n_children (AtkObject* obj)
+{
+ 	GtkAccessible *accessible;
+	GtkWidget *widget;
+	FooCanvas *canvas;
+	FooCanvasGroup *root_group;
+
+	accessible = GTK_ACCESSIBLE (obj);
+	widget = accessible->widget;
+	if (widget == NULL) {
+		/* State is defunct */
+		return 0;
+	}
+
+	g_return_val_if_fail (FOO_IS_CANVAS (widget), 0);
+
+	canvas = FOO_CANVAS (widget);
+	root_group = foo_canvas_root (canvas);
+	g_return_val_if_fail (root_group, 0);
+	return 1;
+}
+
+static AtkObject*
+foo_canvas_accessible_ref_child (AtkObject *obj,
+                                 gint       i)
+{
+	GtkAccessible *accessible;
+	GtkWidget *widget;
+	FooCanvas *canvas;
+	FooCanvasGroup *root_group;
+	AtkObject *atk_object;
+
+	/* Canvas only has one child, so return NULL if index is non zero */
+	if (i != 0) {
+        	return NULL;
+	}
+
+	accessible = GTK_ACCESSIBLE (obj);
+	widget = accessible->widget;
+	if (widget == NULL) {
+		/* State is defunct */
+		return NULL;
+	}
+
+	canvas = FOO_CANVAS (widget);
+	root_group = foo_canvas_root (canvas);
+	g_return_val_if_fail (root_group, NULL);
+	atk_object = atk_gobject_accessible_for_object (G_OBJECT (root_group));
+	g_object_ref (atk_object);
+
+	g_warning ("Accessible support for FooGroup needs to be implemented");
+
+	return atk_object;
+}
+
+static void
+foo_canvas_accessible_class_init (AtkObjectClass *klass)
+{
+ 	accessible_parent_class = g_type_class_peek_parent (klass);
+
+	klass->initialize = foo_canvas_accessible_initialize;
+	klass->get_n_children = foo_canvas_accessible_get_n_children;
+	klass->ref_child = foo_canvas_accessible_ref_child;
+}
+
+static GType
+foo_canvas_accessible_get_type (void)
+{
+	static GType type = 0;
+
+	if (!type) {
+		AtkObjectFactory *factory;
+		GType parent_atk_type;
+		GTypeQuery query;
+		GTypeInfo tinfo = { 0 };
+
+		factory = atk_registry_get_factory (atk_get_default_registry(),
+						    GTK_TYPE_WIDGET);
+		if (!factory) {
+			return G_TYPE_INVALID;
+		}
+		parent_atk_type = atk_object_factory_get_accessible_type (factory);
+		if (!parent_atk_type) {
+			return G_TYPE_INVALID;
+		}
+		g_type_query (parent_atk_type, &query);
+		tinfo.class_init = (GClassInitFunc) foo_canvas_accessible_class_init;
+		tinfo.class_size = query.class_size;
+		tinfo.instance_size = query.instance_size;
+		type = g_type_register_static (parent_atk_type,
+					       "FooCanvasAccessibility",
+					       &tinfo, 0);
+	}
+	return type;
+}
+
+static AtkObject *
+foo_canvas_accessible_create (GObject *for_object)
+{
+	GType type;
+	AtkObject *accessible;
+	FooCanvas *canvas;
+
+	canvas = FOO_CANVAS (for_object);
+	g_return_val_if_fail (canvas != NULL, NULL);
+
+	type = foo_canvas_accessible_get_type ();
+
+	if (type == G_TYPE_INVALID) {
+		return atk_no_op_object_new (for_object);
+	}
+
+	accessible = g_object_new (type, NULL);
+	atk_object_initialize (accessible, for_object);
+	return accessible;
+}
+
+static GType
+foo_canvas_accessible_factory_get_accessible_type (void)
+{
+	return foo_canvas_accessible_get_type ();
+}
+
+static AtkObject*
+foo_canvas_accessible_factory_create_accessible (GObject *obj)
+{
+	AtkObject *accessible;
+
+	g_return_val_if_fail (G_IS_OBJECT (obj), NULL);
+
+	accessible = foo_canvas_accessible_create (obj);
+
+	return accessible;
+}
+
+static void
+foo_canvas_accessible_factory_class_init (AtkObjectFactoryClass *klass)
+{
+	klass->create_accessible = foo_canvas_accessible_factory_create_accessible;
+	klass->get_accessible_type = foo_canvas_accessible_factory_get_accessible_type;
+}
+
+static GType
+foo_canvas_accessible_factory_get_type (void)
+{
+	static GType type = 0;
+
+	if (!type) {
+		static const GTypeInfo tinfo = {
+			sizeof (AtkObjectFactoryClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) foo_canvas_accessible_factory_class_init,
+			NULL,		/* class_finalize */
+			NULL,		/* class_data */
+			sizeof (AtkObjectFactory),
+			0,		/* n_preallocs */
+			NULL
+		};
+		type = g_type_register_static (ATK_TYPE_OBJECT_FACTORY,
+					       "FooCanvasAccessibilityFactory",
+					       &tinfo, 0);
+	}
+
+	return type;
+}
+
+
+/* Class initialization function for FooCanvasClass */
+static void
+foo_canvas_class_init (FooCanvasClass *klass)
+{
+	GObjectClass   *gobject_class;
+	GtkObjectClass *object_class;
+	GtkWidgetClass *widget_class;
+
+	gobject_class = (GObjectClass *)klass;
+	object_class  = (GtkObjectClass *) klass;
+	widget_class  = (GtkWidgetClass *) klass;
+
+	canvas_parent_class = gtk_type_class (gtk_layout_get_type ());
+
+	gobject_class->set_property = foo_canvas_set_property;
+	gobject_class->get_property = foo_canvas_get_property;
+
+	object_class->destroy = foo_canvas_destroy;
+
+	widget_class->map = foo_canvas_map;
+	widget_class->unmap = foo_canvas_unmap;
+	widget_class->realize = foo_canvas_realize;
+	widget_class->unrealize = foo_canvas_unrealize;
+	widget_class->size_allocate = foo_canvas_size_allocate;
+	widget_class->button_press_event = foo_canvas_button;
+	widget_class->button_release_event = foo_canvas_button;
+	widget_class->motion_notify_event = foo_canvas_motion;
+	widget_class->expose_event = foo_canvas_expose;
+	widget_class->key_press_event = foo_canvas_key;
+	widget_class->key_release_event = foo_canvas_key;
+	widget_class->enter_notify_event = foo_canvas_crossing;
+	widget_class->leave_notify_event = foo_canvas_crossing;
+	widget_class->focus_in_event = foo_canvas_focus_in;
+	widget_class->focus_out_event = foo_canvas_focus_out;
+
+	klass->draw_background = foo_canvas_draw_background;
+	klass->request_update = foo_canvas_request_update_real;
+
+	canvas_signals[DRAW_BACKGROUND] =
+		g_signal_new ("draw_background",
+			      G_TYPE_FROM_CLASS (object_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (FooCanvasClass, draw_background),
+			      NULL, NULL,
+			      foo_canvas_marshal_VOID__INT_INT_INT_INT,
+			      G_TYPE_NONE, 4,
+			      G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
+
+	atk_registry_set_factory_type (atk_get_default_registry (),
+				       FOO_TYPE_CANVAS,
+				       foo_canvas_accessible_factory_get_type ());
+}
+
+/* Callback used when the root item of a canvas is destroyed.  The user should
+ * never ever do this, so we panic if this happens.
+ */
+static void
+panic_root_destroyed (GtkObject *object, gpointer data)
+{
+	g_error ("Eeeek, root item %p of canvas %p was destroyed!", object, data);
+}
+
+/* Object initialization function for FooCanvas */
+static void
+foo_canvas_init (FooCanvas *canvas)
+{
+	GTK_WIDGET_SET_FLAGS (canvas, GTK_CAN_FOCUS);
+
+	gtk_widget_set_redraw_on_allocate (GTK_WIDGET (canvas), FALSE);
+
+	canvas->scroll_x1 = 0.0;
+	canvas->scroll_y1 = 0.0;
+	canvas->scroll_x2 = canvas->layout.width;
+	canvas->scroll_y2 = canvas->layout.height;
+
+	canvas->pixels_per_unit = 1.0;
+
+	canvas->pick_event.type = GDK_LEAVE_NOTIFY;
+	canvas->pick_event.crossing.x = 0;
+	canvas->pick_event.crossing.y = 0;
+
+	gtk_layout_set_hadjustment (GTK_LAYOUT (canvas), NULL);
+	gtk_layout_set_vadjustment (GTK_LAYOUT (canvas), NULL);
+
+	/* Create the root item as a special case */
+
+	canvas->root = FOO_CANVAS_ITEM (g_object_new (foo_canvas_group_get_type (), NULL));
+	canvas->root->canvas = canvas;
+
+	g_object_ref (GTK_OBJECT (canvas->root));
+	gtk_object_sink (GTK_OBJECT (canvas->root));
+
+	canvas->root_destroy_id = g_signal_connect (GTK_OBJECT (canvas->root), "destroy",
+						    (GtkSignalFunc) panic_root_destroyed,
+						    canvas);
+
+	canvas->need_repick = TRUE;
+	canvas->doing_update = FALSE;
+}
+
+/* Convenience function to remove the idle handler of a canvas */
+static void
+remove_idle (FooCanvas *canvas)
+{
+	if (canvas->idle_id == 0)
+		return;
+
+	g_source_remove (canvas->idle_id);
+	canvas->idle_id = 0;
+}
+
+/* Removes the transient state of the canvas (idle handler, grabs). */
+static void
+shutdown_transients (FooCanvas *canvas)
+{
+	/* We turn off the need_redraw flag, since if the canvas is mapped again
+	 * it will request a redraw anyways.  We do not turn off the need_update
+	 * flag, though, because updates are not queued when the canvas remaps
+	 * itself.
+	 */
+	if (canvas->need_redraw) {
+		canvas->need_redraw = FALSE;
+	}
+
+	if (canvas->grabbed_item) {
+		GdkDisplay *display = gtk_widget_get_display (GTK_WIDGET (canvas));
+		canvas->grabbed_item = NULL;
+		gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME);
+	}
+
+	remove_idle (canvas);
+}
+
+/* Destroy handler for FooCanvas */
+static void
+foo_canvas_destroy (GtkObject *object)
+{
+	FooCanvas *canvas;
+
+	g_return_if_fail (FOO_IS_CANVAS (object));
+
+	/* remember, destroy can be run multiple times! */
+
+	canvas = FOO_CANVAS (object);
+
+	if (canvas->root_destroy_id) {
+		g_signal_handler_disconnect (GTK_OBJECT (canvas->root), canvas->root_destroy_id);
+		canvas->root_destroy_id = 0;
+	}
+	if (canvas->root) {
+		g_object_unref (GTK_OBJECT (canvas->root));
+		canvas->root = NULL;
+	}
+
+	shutdown_transients (canvas);
+
+	if (GTK_OBJECT_CLASS (canvas_parent_class)->destroy)
+		(* GTK_OBJECT_CLASS (canvas_parent_class)->destroy) (object);
+}
+
+/**
+ * foo_canvas_new:
+ * @void:
+ *
+ * Creates a new empty canvas.  If you wish to use the
+ * &FooCanvasImage item inside this canvas, then you must push the gdk_imlib
+ * visual and colormap before calling this function, and they can be popped
+ * afterwards.
+ *
+ * Return value: A newly-created canvas.
+ **/
+GtkWidget *
+foo_canvas_new (void)
+{
+	return GTK_WIDGET (g_object_new (foo_canvas_get_type (), NULL));
+}
+
+/* Map handler for the canvas */
+static void
+foo_canvas_map (GtkWidget *widget)
+{
+	FooCanvas *canvas;
+
+	g_return_if_fail (FOO_IS_CANVAS (widget));
+
+	/* Normal widget mapping stuff */
+
+	if (GTK_WIDGET_CLASS (canvas_parent_class)->map)
+		(* GTK_WIDGET_CLASS (canvas_parent_class)->map) (widget);
+
+	canvas = FOO_CANVAS (widget);
+
+	/* Map items */
+
+	if (canvas->root->object.flags & FOO_CANVAS_ITEM_VISIBLE &&
+	    !(canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED) &&
+	    FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->map)
+		(* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->map) (canvas->root);
+}
+
+/* Unmap handler for the canvas */
+static void
+foo_canvas_unmap (GtkWidget *widget)
+{
+	FooCanvas *canvas;
+
+	g_return_if_fail (FOO_IS_CANVAS (widget));
+
+	canvas = FOO_CANVAS (widget);
+
+	shutdown_transients (canvas);
+
+	/* Unmap items */
+
+	if (FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->unmap)
+		(* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->unmap) (canvas->root);
+
+	/* Normal widget unmapping stuff */
+
+	if (GTK_WIDGET_CLASS (canvas_parent_class)->unmap)
+		(* GTK_WIDGET_CLASS (canvas_parent_class)->unmap) (widget);
+}
+
+/* Realize handler for the canvas */
+static void
+foo_canvas_realize (GtkWidget *widget)
+{
+	FooCanvas *canvas;
+
+	g_return_if_fail (FOO_IS_CANVAS (widget));
+
+	/* Normal widget realization stuff */
+
+	if (GTK_WIDGET_CLASS (canvas_parent_class)->realize)
+		(* GTK_WIDGET_CLASS (canvas_parent_class)->realize) (widget);
+
+	canvas = FOO_CANVAS (widget);
+
+	gdk_window_set_events (canvas->layout.bin_window,
+			       (gdk_window_get_events (canvas->layout.bin_window)
+				 | GDK_EXPOSURE_MASK
+				 | GDK_BUTTON_PRESS_MASK
+				 | GDK_BUTTON_RELEASE_MASK
+				 | GDK_POINTER_MOTION_MASK
+				 | GDK_KEY_PRESS_MASK
+				 | GDK_KEY_RELEASE_MASK
+				 | GDK_ENTER_NOTIFY_MASK
+				 | GDK_LEAVE_NOTIFY_MASK
+				 | GDK_FOCUS_CHANGE_MASK));
+
+	/* Create our own temporary pixmap gc and realize all the items */
+
+	canvas->pixmap_gc = gdk_gc_new (canvas->layout.bin_window);
+
+	(* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->realize) (canvas->root);
+}
+
+/* Unrealize handler for the canvas */
+static void
+foo_canvas_unrealize (GtkWidget *widget)
+{
+	FooCanvas *canvas;
+
+	g_return_if_fail (FOO_IS_CANVAS (widget));
+
+	canvas = FOO_CANVAS (widget);
+
+	shutdown_transients (canvas);
+
+	/* Unrealize items and parent widget */
+
+	(* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->unrealize) (canvas->root);
+
+	g_object_unref (canvas->pixmap_gc);
+	canvas->pixmap_gc = NULL;
+
+	if (GTK_WIDGET_CLASS (canvas_parent_class)->unrealize)
+		(* GTK_WIDGET_CLASS (canvas_parent_class)->unrealize) (widget);
+}
+
+/* Handles scrolling of the canvas.  Adjusts the scrolling and zooming offset to
+ * keep as much as possible of the canvas scrolling region in view.
+ */
+static void
+scroll_to (FooCanvas *canvas, int cx, int cy, gboolean redraw)
+{
+	int scroll_width, scroll_height;
+	int right_limit, bottom_limit;
+	int old_zoom_xofs, old_zoom_yofs;
+	int changed_x = FALSE, changed_y = FALSE;
+	int canvas_width, canvas_height;
+
+	canvas_width = GTK_WIDGET (canvas)->allocation.width;
+	canvas_height = GTK_WIDGET (canvas)->allocation.height;
+
+	scroll_width = floor ((canvas->scroll_x2 - canvas->scroll_x1) * canvas->pixels_per_unit + 0.5);
+	scroll_height = floor ((canvas->scroll_y2 - canvas->scroll_y1) * canvas->pixels_per_unit + 0.5);
+
+	right_limit = scroll_width - canvas_width;
+	bottom_limit = scroll_height - canvas_height;
+
+	old_zoom_xofs = canvas->zoom_xofs;
+	old_zoom_yofs = canvas->zoom_yofs;
+
+	if (right_limit < 0) {
+		cx = 0;
+		if (canvas->center_scroll_region) {
+			canvas->zoom_xofs = (canvas_width - scroll_width) / 2;
+			scroll_width = canvas_width;
+		} else {
+			canvas->zoom_xofs = 0;
+		}
+	} else if (cx < 0) {
+		cx = 0;
+		canvas->zoom_xofs = 0;
+	} else
+		canvas->zoom_xofs = 0;
+
+	if (bottom_limit < 0) {
+		cy = 0;
+		if (canvas->center_scroll_region) {
+			canvas->zoom_yofs = (canvas_height - scroll_height) / 2;
+			scroll_height = canvas_height;
+		} else {
+			canvas->zoom_yofs = 0;
+		}
+	} else if (cy < 0) {
+		cy = 0;
+		canvas->zoom_yofs = 0;
+	} else if (cy > bottom_limit) {
+		cy = bottom_limit;
+		canvas->zoom_yofs = 0;
+	} else
+		canvas->zoom_yofs = 0;
+
+	if ((canvas->zoom_xofs != old_zoom_xofs) || (canvas->zoom_yofs != old_zoom_yofs)) {
+		/* This can only occur, if either canvas size or widget size changes */
+		/* So I think we can request full redraw here */
+		/* More stuff - we have to mark root as needing fresh affine (Lauris) */
+		if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) {
+			canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE;
+			foo_canvas_request_update (canvas);
+		}
+		gtk_widget_queue_draw (GTK_WIDGET (canvas));
+	}
+
+	if (((int) canvas->layout.hadjustment->value) != cx) {
+		canvas->layout.hadjustment->value = cx;
+		changed_x = TRUE;
+	}
+
+	if (((int) canvas->layout.vadjustment->value) != cy) {
+		canvas->layout.vadjustment->value = cy;
+		changed_y = TRUE;
+	}
+
+	if ((scroll_width != (int) canvas->layout.width) || (scroll_height != (int) canvas->layout.height)) {
+		gtk_layout_set_size (GTK_LAYOUT (canvas), scroll_width, scroll_height);
+	}
+
+	/* Signal GtkLayout that it should do a redraw. */
+	if (redraw) {
+	if (changed_x)
+		g_signal_emit_by_name (GTK_OBJECT (canvas->layout.hadjustment), "value_changed");
+	if (changed_y)
+		g_signal_emit_by_name (GTK_OBJECT (canvas->layout.vadjustment), "value_changed");
+}
+}
+
+/* Size allocation handler for the canvas */
+static void
+foo_canvas_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+{
+	FooCanvas *canvas;
+
+	g_return_if_fail (FOO_IS_CANVAS (widget));
+	g_return_if_fail (allocation != NULL);
+
+	if (GTK_WIDGET_CLASS (canvas_parent_class)->size_allocate)
+		(* GTK_WIDGET_CLASS (canvas_parent_class)->size_allocate) (widget, allocation);
+
+	canvas = FOO_CANVAS (widget);
+
+	/* Recenter the view, if appropriate */
+
+	canvas->layout.hadjustment->page_size = allocation->width;
+	canvas->layout.hadjustment->page_increment = allocation->width / 2;
+
+	canvas->layout.vadjustment->page_size = allocation->height;
+	canvas->layout.vadjustment->page_increment = allocation->height / 2;
+
+	scroll_to (canvas,
+		   canvas->layout.hadjustment->value,
+		   canvas->layout.vadjustment->value, TRUE);
+
+	g_signal_emit_by_name (GTK_OBJECT (canvas->layout.hadjustment), "changed");
+	g_signal_emit_by_name (GTK_OBJECT (canvas->layout.vadjustment), "changed");
+}
+
+/* Emits an event for an item in the canvas, be it the current item, grabbed
+ * item, or focused item, as appropriate.
+ */
+
+static int
+emit_event (FooCanvas *canvas, GdkEvent *event)
+{
+	GdkEvent ev;
+	gint finished;
+	FooCanvasItem *item;
+	FooCanvasItem *parent;
+	guint mask;
+
+	/* Could be an old pick event */
+	if (!GTK_WIDGET_REALIZED (canvas)) {
+		return FALSE;
+	}
+
+	/* Perform checks for grabbed items */
+
+	if (canvas->grabbed_item &&
+	    !is_descendant (canvas->current_item, canvas->grabbed_item)) {
+		return FALSE;
+        }
+
+	if (canvas->grabbed_item) {
+		switch (event->type) {
+		case GDK_ENTER_NOTIFY:
+			mask = GDK_ENTER_NOTIFY_MASK;
+			break;
+
+		case GDK_LEAVE_NOTIFY:
+			mask = GDK_LEAVE_NOTIFY_MASK;
+			break;
+
+		case GDK_MOTION_NOTIFY:
+			mask = GDK_POINTER_MOTION_MASK;
+			break;
+
+		case GDK_BUTTON_PRESS:
+		case GDK_2BUTTON_PRESS:
+		case GDK_3BUTTON_PRESS:
+			mask = GDK_BUTTON_PRESS_MASK;
+			break;
+
+		case GDK_BUTTON_RELEASE:
+			mask = GDK_BUTTON_RELEASE_MASK;
+			break;
+
+		case GDK_KEY_PRESS:
+			mask = GDK_KEY_PRESS_MASK;
+			break;
+
+		case GDK_KEY_RELEASE:
+			mask = GDK_KEY_RELEASE_MASK;
+			break;
+
+		default:
+			mask = 0;
+			break;
+		}
+
+		if (!(mask & canvas->grabbed_event_mask))
+			return FALSE;
+	}
+
+	/* Convert to world coordinates -- we have two cases because of diferent
+	 * offsets of the fields in the event structures.
+	 */
+
+	ev = *event;
+
+	switch (ev.type)
+        {
+	case GDK_ENTER_NOTIFY:
+	case GDK_LEAVE_NOTIFY:
+		foo_canvas_window_to_world (canvas,
+					      ev.crossing.x, ev.crossing.y,
+					      &ev.crossing.x, &ev.crossing.y);
+		break;
+
+	case GDK_MOTION_NOTIFY:
+                foo_canvas_window_to_world (canvas,
+                                              ev.motion.x, ev.motion.y,
+                                              &ev.motion.x, &ev.motion.y);
+                break;
+
+	case GDK_BUTTON_PRESS:
+	case GDK_2BUTTON_PRESS:
+	case GDK_3BUTTON_PRESS:
+                foo_canvas_window_to_world (canvas,
+                                              ev.motion.x, ev.motion.y,
+                                              &ev.motion.x, &ev.motion.y);
+                break;
+
+	case GDK_BUTTON_RELEASE:
+		foo_canvas_window_to_world (canvas,
+					      ev.motion.x, ev.motion.y,
+					      &ev.motion.x, &ev.motion.y);
+		break;
+
+	default:
+		break;
+	}
+
+	/* Choose where we send the event */
+
+	item = canvas->current_item;
+
+	if (canvas->focused_item
+	    && ((event->type == GDK_KEY_PRESS) ||
+		(event->type == GDK_KEY_RELEASE) ||
+		(event->type == GDK_FOCUS_CHANGE)))
+		item = canvas->focused_item;
+
+	/* The event is propagated up the hierarchy (for if someone connected to
+	 * a group instead of a leaf event), and emission is stopped if a
+	 * handler returns TRUE, just like for GtkWidget events.
+	 */
+
+	finished = FALSE;
+
+	while (item && !finished) {
+		g_object_ref (GTK_OBJECT (item));
+
+		g_signal_emit (
+		       GTK_OBJECT (item), item_signals[ITEM_EVENT], 0,
+			&ev, &finished);
+
+		parent = item->parent;
+		g_object_unref (GTK_OBJECT (item));
+
+		item = parent;
+	}
+
+	return finished;
+}
+
+/* Re-picks the current item in the canvas, based on the event's coordinates.
+ * Also emits enter/leave events for items as appropriate.
+ */
+static int
+pick_current_item (FooCanvas *canvas, GdkEvent *event)
+{
+	int button_down;
+	double x, y;
+	int cx, cy;
+	int retval;
+
+	retval = FALSE;
+
+	/* If a button is down, we'll perform enter and leave events on the
+	 * current item, but not enter on any other item.  This is more or less
+	 * like X pointer grabbing for canvas items.
+	 */
+	button_down = canvas->state & (GDK_BUTTON1_MASK
+				       | GDK_BUTTON2_MASK
+				       | GDK_BUTTON3_MASK
+				       | GDK_BUTTON4_MASK
+				       | GDK_BUTTON5_MASK);
+	if (!button_down)
+		canvas->left_grabbed_item = FALSE;
+
+	/* Save the event in the canvas.  This is used to synthesize enter and
+	 * leave events in case the current item changes.  It is also used to
+	 * re-pick the current item if the current one gets deleted.  Also,
+	 * synthesize an enter event.
+	 */
+	if (event != &canvas->pick_event) {
+		if ((event->type == GDK_MOTION_NOTIFY) || (event->type == GDK_BUTTON_RELEASE)) {
+			/* these fields have the same offsets in both types of events */
+
+			canvas->pick_event.crossing.type       = GDK_ENTER_NOTIFY;
+			canvas->pick_event.crossing.window     = event->motion.window;
+			canvas->pick_event.crossing.send_event = event->motion.send_event;
+			canvas->pick_event.crossing.subwindow  = NULL;
+			canvas->pick_event.crossing.x          = event->motion.x;
+			canvas->pick_event.crossing.y          = event->motion.y;
+			canvas->pick_event.crossing.mode       = GDK_CROSSING_NORMAL;
+			canvas->pick_event.crossing.detail     = GDK_NOTIFY_NONLINEAR;
+			canvas->pick_event.crossing.focus      = FALSE;
+			canvas->pick_event.crossing.state      = event->motion.state;
+
+			/* these fields don't have the same offsets in both types of events */
+
+			if (event->type == GDK_MOTION_NOTIFY) {
+				canvas->pick_event.crossing.x_root = event->motion.x_root;
+				canvas->pick_event.crossing.y_root = event->motion.y_root;
+			} else {
+				canvas->pick_event.crossing.x_root = event->button.x_root;
+				canvas->pick_event.crossing.y_root = event->button.y_root;
+			}
+		} else
+			canvas->pick_event = *event;
+	}
+
+	/* Don't do anything else if this is a recursive call */
+
+	if (canvas->in_repick)
+		return retval;
+
+	/* LeaveNotify means that there is no current item, so we don't look for one */
+
+	if (canvas->pick_event.type != GDK_LEAVE_NOTIFY) {
+		/* these fields don't have the same offsets in both types of events */
+
+		if (canvas->pick_event.type == GDK_ENTER_NOTIFY) {
+			x = canvas->pick_event.crossing.x;
+			y = canvas->pick_event.crossing.y;
+		} else {
+			x = canvas->pick_event.motion.x;
+			y = canvas->pick_event.motion.y;
+		}
+
+		/* canvas pixel coords */
+
+		cx = (int) (x + 0.5);
+		cy = (int) (y + 0.5);
+
+		/* world coords */
+		foo_canvas_c2w (canvas, cx, cy, &x, &y);
+
+		/* find the closest item */
+		if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED)
+			foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy,
+							&canvas->new_current_item);
+		else
+			canvas->new_current_item = NULL;
+	} else
+		canvas->new_current_item = NULL;
+
+	if ((canvas->new_current_item == canvas->current_item) && !canvas->left_grabbed_item)
+		return retval; /* current item did not change */
+
+	/* Synthesize events for old and new current items */
+
+	if ((canvas->new_current_item != canvas->current_item)
+	    && (canvas->current_item != NULL)
+	    && !canvas->left_grabbed_item) {
+		GdkEvent new_event;
+		FooCanvasItem *item;
+
+		item = canvas->current_item;
+
+		new_event = canvas->pick_event;
+		new_event.type = GDK_LEAVE_NOTIFY;
+
+		new_event.crossing.detail = GDK_NOTIFY_ANCESTOR;
+		new_event.crossing.subwindow = NULL;
+		canvas->in_repick = TRUE;
+		retval = emit_event (canvas, &new_event);
+		canvas->in_repick = FALSE;
+	}
+
+	/* new_current_item may have been set to NULL during the call to emit_event() above */
+
+	if ((canvas->new_current_item != canvas->current_item) && button_down) {
+		canvas->left_grabbed_item = TRUE;
+		return retval;
+	}
+
+	/* Handle the rest of cases */
+
+	canvas->left_grabbed_item = FALSE;
+	canvas->current_item = canvas->new_current_item;
+
+	if (canvas->current_item != NULL) {
+		GdkEvent new_event;
+
+		new_event = canvas->pick_event;
+		new_event.type = GDK_ENTER_NOTIFY;
+		new_event.crossing.detail = GDK_NOTIFY_ANCESTOR;
+		new_event.crossing.subwindow = NULL;
+		retval = emit_event (canvas, &new_event);
+	}
+
+	return retval;
+}
+
+/* Button event handler for the canvas */
+static gint
+foo_canvas_button (GtkWidget *widget, GdkEventButton *event)
+{
+	FooCanvas *canvas;
+	int mask;
+	int retval;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (widget), FALSE);
+	g_return_val_if_fail (event != NULL, FALSE);
+
+	retval = FALSE;
+
+	canvas = FOO_CANVAS (widget);
+
+	/*
+	 * dispatch normally regardless of the event's window if an item has
+	 * has a pointer grab in effect
+	 */
+	if (!canvas->grabbed_item && event->window != canvas->layout.bin_window)
+		return retval;
+
+	switch (event->button) {
+	case 1:
+		mask = GDK_BUTTON1_MASK;
+		break;
+	case 2:
+		mask = GDK_BUTTON2_MASK;
+		break;
+	case 3:
+		mask = GDK_BUTTON3_MASK;
+		break;
+	case 4:
+		mask = GDK_BUTTON4_MASK;
+		break;
+	case 5:
+		mask = GDK_BUTTON5_MASK;
+		break;
+	default:
+		mask = 0;
+	}
+
+	switch (event->type) {
+	case GDK_BUTTON_PRESS:
+	case GDK_2BUTTON_PRESS:
+	case GDK_3BUTTON_PRESS:
+		/* Pick the current item as if the button were not pressed, and
+		 * then process the event.
+		 */
+		canvas->state = event->state;
+		pick_current_item (canvas, (GdkEvent *) event);
+		canvas->state ^= mask;
+		retval = emit_event (canvas, (GdkEvent *) event);
+		break;
+
+	case GDK_BUTTON_RELEASE:
+		/* Process the event as if the button were pressed, then repick
+		 * after the button has been released
+		 */
+		canvas->state = event->state;
+		retval = emit_event (canvas, (GdkEvent *) event);
+		event->state ^= mask;
+		canvas->state = event->state;
+		pick_current_item (canvas, (GdkEvent *) event);
+		event->state ^= mask;
+		break;
+
+	default:
+		g_assert_not_reached ();
+	}
+
+	return retval;
+}
+
+/* Motion event handler for the canvas */
+static gint
+foo_canvas_motion (GtkWidget *widget, GdkEventMotion *event)
+{
+	FooCanvas *canvas;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (widget), FALSE);
+	g_return_val_if_fail (event != NULL, FALSE);
+
+	canvas = FOO_CANVAS (widget);
+
+	if (event->window != canvas->layout.bin_window)
+		return FALSE;
+
+	canvas->state = event->state;
+	pick_current_item (canvas, (GdkEvent *) event);
+	return emit_event (canvas, (GdkEvent *) event);
+}
+
+/* Key event handler for the canvas */
+static gint
+foo_canvas_key (GtkWidget *widget, GdkEventKey *event)
+{
+	FooCanvas *canvas;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (widget), FALSE);
+	g_return_val_if_fail (event != NULL, FALSE);
+
+	canvas = FOO_CANVAS (widget);
+
+	if (emit_event (canvas, (GdkEvent *) event))
+		return TRUE;
+	if (event->type == GDK_KEY_RELEASE)
+		return GTK_WIDGET_CLASS (canvas_parent_class)->key_release_event (widget, event);
+	else
+		return GTK_WIDGET_CLASS (canvas_parent_class)->key_press_event (widget, event);
+}
+
+
+/* Crossing event handler for the canvas */
+static gint
+foo_canvas_crossing (GtkWidget *widget, GdkEventCrossing *event)
+{
+	FooCanvas *canvas;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (widget), FALSE);
+	g_return_val_if_fail (event != NULL, FALSE);
+
+	canvas = FOO_CANVAS (widget);
+
+	if (event->window != canvas->layout.bin_window)
+		return FALSE;
+
+	canvas->state = event->state;
+	return pick_current_item (canvas, (GdkEvent *) event);
+}
+
+/* Focus in handler for the canvas */
+static gint
+foo_canvas_focus_in (GtkWidget *widget, GdkEventFocus *event)
+{
+	FooCanvas *canvas;
+
+	GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
+
+	canvas = FOO_CANVAS (widget);
+
+	if (canvas->focused_item)
+		return emit_event (canvas, (GdkEvent *) event);
+	else
+		return FALSE;
+}
+
+/* Focus out handler for the canvas */
+static gint
+foo_canvas_focus_out (GtkWidget *widget, GdkEventFocus *event)
+{
+	FooCanvas *canvas;
+
+	GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
+
+	canvas = FOO_CANVAS (widget);
+
+	if (canvas->focused_item)
+		return emit_event (canvas, (GdkEvent *) event);
+	else
+		return FALSE;
+}
+
+/* Expose handler for the canvas */
+static gint
+foo_canvas_expose (GtkWidget *widget, GdkEventExpose *event)
+{
+	FooCanvas *canvas;
+
+	canvas = FOO_CANVAS (widget);
+
+	if (!GTK_WIDGET_DRAWABLE (widget) || (event->window != canvas->layout.bin_window)) return FALSE;
+
+#ifdef VERBOSE
+	g_print ("Expose\n");
+#endif
+	/* If there are any outstanding items that need updating, do them now */
+	if (canvas->idle_id) {
+		g_source_remove (canvas->idle_id);
+		canvas->idle_id = 0;
+	}
+	if (canvas->need_update) {
+		g_return_val_if_fail (!canvas->doing_update, FALSE);
+
+		canvas->doing_update = TRUE;
+		foo_canvas_item_invoke_update (canvas->root, 0, 0, 0);
+
+		g_return_val_if_fail (canvas->doing_update, FALSE);
+
+		canvas->doing_update = FALSE;
+
+		canvas->need_update = FALSE;
+	}
+
+	/* Hmmm. Would like to queue antiexposes if the update marked
+	   anything that is gonna get redrawn as invalid */
+
+
+	g_signal_emit (G_OBJECT (canvas), canvas_signals[DRAW_BACKGROUND], 0,
+		       event->area.x, event->area.y,
+		       event->area.width, event->area.height);
+
+	if (canvas->root->object.flags & FOO_CANVAS_ITEM_MAPPED)
+		(* FOO_CANVAS_ITEM_GET_CLASS (canvas->root)->draw) (canvas->root,
+								      canvas->layout.bin_window,
+								      event);
+
+
+
+	/* Chain up to get exposes on child widgets */
+	GTK_WIDGET_CLASS (canvas_parent_class)->expose_event (widget, event);
+
+	return FALSE;
+}
+
+static void
+foo_canvas_draw_background (FooCanvas *canvas,
+			    int x, int y, int width, int height)
+{
+	/* By default, we use the style background. */
+	gdk_gc_set_foreground (canvas->pixmap_gc,
+			       &GTK_WIDGET (canvas)->style->bg[GTK_STATE_NORMAL]);
+	gdk_draw_rectangle (canvas->layout.bin_window,
+			    canvas->pixmap_gc,
+			    TRUE,
+			    x, y,
+			    width, height);
+}
+
+static void
+do_update (FooCanvas *canvas)
+{
+	/* Cause the update if necessary */
+
+update_again:
+	if (canvas->need_update) {
+		g_return_if_fail (!canvas->doing_update);
+
+		canvas->doing_update = TRUE;
+		foo_canvas_item_invoke_update (canvas->root, 0, 0, 0);
+
+		g_return_if_fail (canvas->doing_update);
+
+		canvas->doing_update = FALSE;
+
+		canvas->need_update = FALSE;
+	}
+
+	/* Pick new current item */
+
+	while (canvas->need_repick) {
+		canvas->need_repick = FALSE;
+		pick_current_item (canvas, &canvas->pick_event);
+	}
+
+	/* it is possible that during picking we emitted an event in which
+	   the user then called some function which then requested update
+	   of something.  Without this we'd be left in a state where
+	   need_update would have been left TRUE and the canvas would have
+	   been left unpainted. */
+	if (canvas->need_update) {
+		goto update_again;
+	}
+}
+
+/* Idle handler for the canvas.  It deals with pending updates and redraws. */
+static gint
+idle_handler (gpointer data)
+{
+	FooCanvas *canvas;
+
+	GDK_THREADS_ENTER ();
+
+	canvas = FOO_CANVAS (data);
+	do_update (canvas);
+
+	/* Reset idle id */
+	canvas->idle_id = 0;
+
+	GDK_THREADS_LEAVE ();
+
+	return FALSE;
+}
+
+/* Convenience function to add an idle handler to a canvas */
+static void
+add_idle (FooCanvas *canvas)
+{
+	if (!canvas->idle_id) {
+		/* We let the update idle handler have higher priority
+		 * than the redraw idle handler so the canvas state
+		 * will be updated during the expose event.  canvas in
+		 * expose_event.
+		 */
+		canvas->idle_id = g_idle_add_full (GDK_PRIORITY_REDRAW - 20,
+						   idle_handler, canvas, NULL);
+	}
+}
+
+/**
+ * foo_canvas_root:
+ * @canvas: A canvas.
+ *
+ * Queries the root group of a canvas.
+ *
+ * Return value: The root group of the specified canvas.
+ **/
+FooCanvasGroup *
+foo_canvas_root (FooCanvas *canvas)
+{
+	g_return_val_if_fail (FOO_IS_CANVAS (canvas), NULL);
+
+	return FOO_CANVAS_GROUP (canvas->root);
+}
+
+
+/**
+ * foo_canvas_set_scroll_region:
+ * @canvas: A canvas.
+ * @x1: Leftmost limit of the scrolling region.
+ * @y1: Upper limit of the scrolling region.
+ * @x2: Rightmost limit of the scrolling region.
+ * @y2: Lower limit of the scrolling region.
+ *
+ * Sets the scrolling region of a canvas to the specified rectangle.  The canvas
+ * will then be able to scroll only within this region.  The view of the canvas
+ * is adjusted as appropriate to display as much of the new region as possible.
+ **/
+void
+foo_canvas_set_scroll_region (FooCanvas *canvas, double x1, double y1, double x2, double y2)
+{
+	double wxofs, wyofs;
+	int xofs, yofs;
+
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	if ((canvas->scroll_x1 == x1) && (canvas->scroll_y1 == y1) &&
+	    (canvas->scroll_x2 == x2) && (canvas->scroll_y2 == y2)) {
+		return;
+	}
+
+	/*
+	 * Set the new scrolling region.  If possible, do not move the visible contents of the
+	 * canvas.
+	 */
+
+	foo_canvas_c2w (canvas,
+			  GTK_LAYOUT (canvas)->hadjustment->value + canvas->zoom_xofs,
+			  GTK_LAYOUT (canvas)->vadjustment->value + canvas->zoom_yofs,
+			  /*canvas->zoom_xofs,
+			  canvas->zoom_yofs,*/
+			  &wxofs, &wyofs);
+
+	canvas->scroll_x1 = x1;
+	canvas->scroll_y1 = y1;
+	canvas->scroll_x2 = x2;
+	canvas->scroll_y2 = y2;
+
+	foo_canvas_w2c (canvas, wxofs, wyofs, &xofs, &yofs);
+
+	scroll_to (canvas, xofs, yofs, TRUE);
+
+	canvas->need_repick = TRUE;
+
+	if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) {
+		canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE;
+		foo_canvas_request_update (canvas);
+	}
+}
+
+
+/**
+ * foo_canvas_get_scroll_region:
+ * @canvas: A canvas.
+ * @x1: Leftmost limit of the scrolling region (return value).
+ * @y1: Upper limit of the scrolling region (return value).
+ * @x2: Rightmost limit of the scrolling region (return value).
+ * @y2: Lower limit of the scrolling region (return value).
+ *
+ * Queries the scrolling region of a canvas.
+ **/
+void
+foo_canvas_get_scroll_region (FooCanvas *canvas, double *x1, double *y1, double *x2, double *y2)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	if (x1)
+		*x1 = canvas->scroll_x1;
+
+	if (y1)
+		*y1 = canvas->scroll_y1;
+
+	if (x2)
+		*x2 = canvas->scroll_x2;
+
+	if (y2)
+		*y2 = canvas->scroll_y2;
+}
+
+void
+foo_canvas_set_center_scroll_region (FooCanvas *canvas,
+				     gboolean center_scroll_region)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	canvas->center_scroll_region = center_scroll_region != 0;
+
+	scroll_to (canvas,
+		   canvas->layout.hadjustment->value,
+		   canvas->layout.vadjustment->value, TRUE);
+}
+
+
+/**
+ * foo_canvas_set_pixels_per_unit:
+ * @canvas: A canvas.
+ * @n: The number of pixels that correspond to one canvas unit.
+ *
+ * Sets the zooming factor of a canvas by specifying the number of pixels that
+ * correspond to one canvas unit.
+ **/
+void
+foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n)
+{
+	GtkWidget *widget;
+	double cx, cy;
+	int x1, y1;
+	int center_x, center_y;
+	GdkWindow *window;
+	GdkWindowAttr attributes;
+	gint attributes_mask;
+
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+	g_return_if_fail (n > FOO_CANVAS_EPSILON);
+
+	widget = GTK_WIDGET (canvas);
+
+	center_x = widget->allocation.width / 2;
+	center_y = widget->allocation.height / 2;
+
+	/* Find the coordinates of the screen center in units. */
+	cx = (canvas->layout.hadjustment->value + center_x) / canvas->pixels_per_unit + canvas->scroll_x1 + canvas->zoom_xofs;
+	cy = (canvas->layout.vadjustment->value + center_y) / canvas->pixels_per_unit + canvas->scroll_y1 + canvas->zoom_yofs;
+
+	/* Now calculate the new offset of the upper left corner. (round not truncate) */
+	x1 = ((cx - canvas->scroll_x1) * n) - center_x + .5;
+	y1 = ((cy - canvas->scroll_y1) * n) - center_y + .5;
+
+	canvas->pixels_per_unit = n;
+
+	if (!(canvas->root->object.flags & FOO_CANVAS_ITEM_NEED_DEEP_UPDATE)) {
+		canvas->root->object.flags |= FOO_CANVAS_ITEM_NEED_DEEP_UPDATE;
+		foo_canvas_request_update (canvas);
+	}
+
+	/* Map a background None window over the bin_window to avoid
+	 * scrolling the window scroll causing exposes.
+	 */
+	window = NULL;
+	if (GTK_WIDGET_MAPPED (widget)) {
+		attributes.window_type = GDK_WINDOW_CHILD;
+		attributes.x = widget->allocation.x;
+		attributes.y = widget->allocation.y;
+		attributes.width = widget->allocation.width;
+		attributes.height = widget->allocation.height;
+		attributes.wclass = GDK_INPUT_OUTPUT;
+		attributes.visual = gtk_widget_get_visual (widget);
+		attributes.colormap = gtk_widget_get_colormap (widget);
+		attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK;
+
+		attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+
+		window = gdk_window_new (gtk_widget_get_parent_window (widget),
+					 &attributes, attributes_mask);
+		gdk_window_set_back_pixmap (window, NULL, FALSE);
+		gdk_window_set_user_data (window, widget);
+
+		gdk_window_show (window);
+	}
+
+	scroll_to (canvas, x1, y1, FALSE);
+
+	/* If we created a an overlapping background None window, remove it how.
+	 *
+	 * TODO: We would like to temporarily set the bin_window background to
+	 * None to avoid clearing the bin_window to the background, but gdk doesn't
+	 * expose enought to let us do this, so we get a flash-effect here. At least
+	 * it looks better than scroll + expose.
+	 */
+	if (window != NULL) {
+		gdk_window_hide (window);
+		gdk_window_set_user_data (window, NULL);
+		gdk_window_destroy (window);
+	}
+
+	canvas->need_repick = TRUE;
+}
+
+/**
+ * foo_canvas_scroll_to:
+ * @canvas: A canvas.
+ * @cx: Horizontal scrolling offset in canvas pixel units.
+ * @cy: Vertical scrolling offset in canvas pixel units.
+ *
+ * Makes a canvas scroll to the specified offsets, given in canvas pixel units.
+ * The canvas will adjust the view so that it is not outside the scrolling
+ * region.  This function is typically not used, as it is better to hook
+ * scrollbars to the canvas layout's scrolling adjusments.
+ **/
+void
+foo_canvas_scroll_to (FooCanvas *canvas, int cx, int cy)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	scroll_to (canvas, cx, cy, TRUE);
+}
+
+/**
+ * foo_canvas_get_scroll_offsets:
+ * @canvas: A canvas.
+ * @cx: Horizontal scrolling offset (return value).
+ * @cy: Vertical scrolling offset (return value).
+ *
+ * Queries the scrolling offsets of a canvas.  The values are returned in canvas
+ * pixel units.
+ **/
+void
+foo_canvas_get_scroll_offsets (FooCanvas *canvas, int *cx, int *cy)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	if (cx)
+		*cx = canvas->layout.hadjustment->value;
+
+	if (cy)
+		*cy = canvas->layout.vadjustment->value;
+}
+
+/**
+ * foo_canvas_update_now:
+ * @canvas: A canvas.
+ *
+ * Forces an immediate update and redraw of a canvas.  If the canvas does not
+ * have any pending update or redraw requests, then no action is taken.  This is
+ * typically only used by applications that need explicit control of when the
+ * display is updated, like games.  It is not needed by normal applications.
+ */
+void
+foo_canvas_update_now (FooCanvas *canvas)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	if (!(canvas->need_update || canvas->need_redraw))
+		return;
+	remove_idle (canvas);
+	do_update (canvas);
+}
+
+/**
+ * foo_canvas_get_item_at:
+ * @canvas: A canvas.
+ * @x: X position in world coordinates.
+ * @y: Y position in world coordinates.
+ *
+ * Looks for the item that is under the specified position, which must be
+ * specified in world coordinates.
+ *
+ * Return value: The sought item, or NULL if no item is at the specified
+ * coordinates.
+ **/
+FooCanvasItem *
+foo_canvas_get_item_at (FooCanvas *canvas, double x, double y)
+{
+	FooCanvasItem *item;
+	double dist;
+	int cx, cy;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (canvas), NULL);
+
+	foo_canvas_w2c (canvas, x, y, &cx, &cy);
+
+	dist = foo_canvas_item_invoke_point (canvas->root, x, y, cx, cy, &item);
+	if ((int) (dist * canvas->pixels_per_unit + 0.5) <= canvas->close_enough)
+		return item;
+	else
+		return NULL;
+}
+
+/* Queues an update of the canvas */
+static void
+foo_canvas_request_update (FooCanvas *canvas)
+{
+	FOO_CANVAS_GET_CLASS (canvas)->request_update (canvas);
+}
+
+static void
+foo_canvas_request_update_real (FooCanvas *canvas)
+{
+	canvas->need_update = TRUE;
+	add_idle (canvas);
+}
+
+/**
+ * foo_canvas_request_redraw:
+ * @canvas: A canvas.
+ * @x1: Leftmost coordinate of the rectangle to be redrawn.
+ * @y1: Upper coordinate of the rectangle to be redrawn.
+ * @x2: Rightmost coordinate of the rectangle to be redrawn, plus 1.
+ * @y2: Lower coordinate of the rectangle to be redrawn, plus 1.
+ *
+ * Convenience function that informs a canvas that the specified rectangle needs
+ * to be repainted.  The rectangle includes @x1 and @y1, but not @x2 and @y2.
+ * To be used only by item implementations.
+ **/
+void
+foo_canvas_request_redraw (FooCanvas *canvas, int x1, int y1, int x2, int y2)
+{
+	GdkRectangle bbox;
+
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	if (!GTK_WIDGET_DRAWABLE (canvas) || (x1 >= x2) || (y1 >= y2)) return;
+
+	bbox.x = x1;
+	bbox.y = y1;
+	bbox.width = x2 - x1;
+	bbox.height = y2 - y1;
+
+	gdk_window_invalidate_rect (canvas->layout.bin_window,
+				    &bbox, FALSE);
+}
+
+/**
+ * foo_canvas_w2c:
+ * @canvas: A canvas.
+ * @wx: World X coordinate.
+ * @wy: World Y coordinate.
+ * @cx: X pixel coordinate (return value).
+ * @cy: Y pixel coordinate (return value).
+ *
+ * Converts world coordinates into canvas pixel coordinates.
+ **/
+void
+foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy)
+{
+	double zoom;
+
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	zoom = canvas->pixels_per_unit;
+
+	if (cx)
+		*cx = floor ((wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs + 0.5);
+	if (cy)
+		*cy = floor ((wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs + 0.5);
+}
+
+/**
+ * foo_canvas_w2c:
+ * @canvas: A canvas.
+ * @world: rectangle in world coordinates.
+ * @canvas: rectangle in canvase coordinates.
+ *
+ * Converts rectangles in world coordinates into canvas pixel coordinates.
+ **/
+void
+foo_canvas_w2c_rect_d (FooCanvas *canvas,
+			 double *x1, double *y1,
+			 double *x2, double *y2)
+{
+	foo_canvas_w2c_d (canvas,
+			    *x1, *y1,
+			    x1, y1);
+	foo_canvas_w2c_d (canvas,
+			    *x2, *y2,
+			    x2, y2);
+}
+
+
+
+/**
+ * foo_canvas_w2c_d:
+ * @canvas: A canvas.
+ * @wx: World X coordinate.
+ * @wy: World Y coordinate.
+ * @cx: X pixel coordinate (return value).
+ * @cy: Y pixel coordinate (return value).
+ *
+ * Converts world coordinates into canvas pixel coordinates.  This version
+ * returns coordinates in floating point coordinates, for greater precision.
+ **/
+void
+foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy)
+{
+	double zoom;
+
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	zoom = canvas->pixels_per_unit;
+
+	if (cx)
+		*cx = (wx - canvas->scroll_x1)*zoom + canvas->zoom_xofs;
+	if (cy)
+		*cy = (wy - canvas->scroll_y1)*zoom + canvas->zoom_yofs;
+}
+
+
+/**
+ * foo_canvas_c2w:
+ * @canvas: A canvas.
+ * @cx: Canvas pixel X coordinate.
+ * @cy: Canvas pixel Y coordinate.
+ * @wx: X world coordinate (return value).
+ * @wy: Y world coordinate (return value).
+ *
+ * Converts canvas pixel coordinates to world coordinates.
+ **/
+void
+foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy)
+{
+	double zoom;
+
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	zoom = canvas->pixels_per_unit;
+
+	if (wx)
+		*wx = (cx - canvas->zoom_xofs)/zoom + canvas->scroll_x1;
+	if (wy)
+		*wy = (cy - canvas->zoom_yofs)/zoom + canvas->scroll_y1;
+}
+
+
+/**
+ * foo_canvas_window_to_world:
+ * @canvas: A canvas.
+ * @winx: Window-relative X coordinate.
+ * @winy: Window-relative Y coordinate.
+ * @worldx: X world coordinate (return value).
+ * @worldy: Y world coordinate (return value).
+ *
+ * Converts window-relative coordinates into world coordinates.  You can use
+ * this when you need to convert mouse coordinates into world coordinates, for
+ * example.
+ * Window coordinates are really the same as canvas coordinates now, but this
+ * function is here for backwards compatibility reasons.
+ **/
+void
+foo_canvas_window_to_world (FooCanvas *canvas, double winx, double winy,
+			      double *worldx, double *worldy)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	if (worldx)
+		*worldx = canvas->scroll_x1 + ((winx - canvas->zoom_xofs)
+					       / canvas->pixels_per_unit);
+
+	if (worldy)
+		*worldy = canvas->scroll_y1 + ((winy - canvas->zoom_yofs)
+					       / canvas->pixels_per_unit);
+}
+
+
+/**
+ * foo_canvas_world_to_window:
+ * @canvas: A canvas.
+ * @worldx: World X coordinate.
+ * @worldy: World Y coordinate.
+ * @winx: X window-relative coordinate.
+ * @winy: Y window-relative coordinate.
+ *
+ * Converts world coordinates into window-relative coordinates.
+ * Window coordinates are really the same as canvas coordinates now, but this
+ * function is here for backwards compatibility reasons.
+ **/
+void
+foo_canvas_world_to_window (FooCanvas *canvas, double worldx, double worldy,
+			    double *winx, double *winy)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+
+	if (winx)
+		*winx = (canvas->pixels_per_unit)*(worldx - canvas->scroll_x1) + canvas->zoom_xofs;
+
+	if (winy)
+		*winy = (canvas->pixels_per_unit)*(worldy - canvas->scroll_y1) + canvas->zoom_yofs;
+}
+
+
+
+/**
+ * foo_canvas_get_color:
+ * @canvas: A canvas.
+ * @spec: X color specification, or NULL for "transparent".
+ * @color: Returns the allocated color.
+ *
+ * Allocates a color based on the specified X color specification.  As a
+ * convenience to item implementations, it returns TRUE if the color was
+ * allocated, or FALSE if the specification was NULL.  A NULL color
+ * specification is considered as "transparent" by the canvas.
+ *
+ * Return value: TRUE if @spec is non-NULL and the color is allocated.  If @spec
+ * is NULL, then returns FALSE.
+ **/
+int
+foo_canvas_get_color (FooCanvas *canvas, const char *spec, GdkColor *color)
+{
+	GdkColormap *colormap;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (canvas), FALSE);
+	g_return_val_if_fail (color != NULL, FALSE);
+
+	if (!spec) {
+		color->pixel = 0;
+		color->red = 0;
+		color->green = 0;
+		color->blue = 0;
+		return FALSE;
+	}
+
+	gdk_color_parse (spec, color);
+
+	colormap = gtk_widget_get_colormap (GTK_WIDGET (canvas));
+
+	gdk_rgb_find_color (colormap, color);
+
+	return TRUE;
+}
+
+/**
+ * foo_canvas_get_color_pixel:
+ * @canvas: A canvas.
+ * @rgba: RGBA color specification.
+ *
+ * Allocates a color from the RGBA value passed into this function.  The alpha
+ * opacity value is discarded, since normal X colors do not support it.
+ *
+ * Return value: Allocated pixel value corresponding to the specified color.
+ **/
+gulong
+foo_canvas_get_color_pixel (FooCanvas *canvas, guint rgba)
+{
+	GdkColormap *colormap;
+	GdkColor color;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (canvas), 0);
+
+	color.red = ((rgba & 0xff000000) >> 16) + ((rgba & 0xff000000) >> 24);
+	color.green = ((rgba & 0x00ff0000) >> 8) + ((rgba & 0x00ff0000) >> 16);
+	color.blue = (rgba & 0x0000ff00) + ((rgba & 0x0000ff00) >> 8);
+	color.pixel = 0;
+
+	colormap = gtk_widget_get_colormap (GTK_WIDGET (canvas));
+
+	gdk_rgb_find_color (colormap, &color);
+
+	return color.pixel;
+}
+
+
+/* FIXME: This function is not useful anymore */
+/**
+ * foo_canvas_set_stipple_origin:
+ * @canvas: A canvas.
+ * @gc: GC on which to set the stipple origin.
+ *
+ * Sets the stipple origin of the specified GC as is appropriate for the canvas,
+ * so that it will be aligned with other stipple patterns used by canvas items.
+ * This is typically only needed by item implementations.
+ **/
+void
+foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc)
+{
+	g_return_if_fail (FOO_IS_CANVAS (canvas));
+	g_return_if_fail (GDK_IS_GC (gc));
+
+	gdk_gc_set_ts_origin (gc, 0, 0);
+}
+
+static gboolean
+boolean_handled_accumulator (GSignalInvocationHint *ihint,
+			     GValue                *return_accu,
+			     const GValue          *handler_return,
+			     gpointer               dummy)
+{
+	gboolean continue_emission;
+	gboolean signal_handled;
+
+	signal_handled = g_value_get_boolean (handler_return);
+	g_value_set_boolean (return_accu, signal_handled);
+	continue_emission = !signal_handled;
+
+	return continue_emission;
+}
+
+static guint
+foo_canvas_item_accessible_add_focus_handler (AtkComponent    *component,
+                                              AtkFocusHandler handler)
+{
+ 	GSignalMatchType match_type;
+	guint signal_id;
+
+	match_type = G_SIGNAL_MATCH_ID | G_SIGNAL_MATCH_FUNC;
+	signal_id = g_signal_lookup ("focus-event", ATK_TYPE_OBJECT);
+
+	if (!g_signal_handler_find (component, match_type, signal_id, 0, NULL,
+                                    (gpointer) handler, NULL)) {
+		return g_signal_connect_closure_by_id (component,
+                                                       signal_id, 0,
+                                                       g_cclosure_new (
+                                                       G_CALLBACK (handler), NULL,
+                                                       (GClosureNotify) NULL),
+                                                       FALSE);
+	}
+	return 0;
+}
+
+static void
+foo_canvas_item_accessible_get_item_extents (FooCanvasItem *item,
+                                             GdkRectangle  *rect)
+{
+ 	double bx1, bx2, by1, by2;
+	gint scroll_x, scroll_y;
+	gint x1, x2, y1, y2;
+
+	foo_canvas_item_get_bounds (item, &bx1, &by1, &bx2, &by2);
+	foo_canvas_w2c_rect_d (item->canvas, &bx1, &by1, &bx2, &by2);
+	foo_canvas_get_scroll_offsets (item->canvas, &scroll_x, &scroll_y);
+	x1 = floor (bx1);
+	y1 = floor (by1);
+	x2 = ceil (bx2);
+	y2 = ceil (by2);
+	rect->x = x1 - scroll_x;
+	rect->y = y1 - scroll_y;
+	rect->width = x2 - x1;
+	rect->height = y2 - y1;
+}
+
+static gboolean
+foo_canvas_item_accessible_is_item_in_window (FooCanvasItem *item,
+                                              GdkRectangle  *rect)
+{
+ 	GtkWidget *widget;
+	gboolean retval;
+
+	widget = GTK_WIDGET (item->canvas);
+	if (widget->window) {
+		int window_width, window_height;
+
+		gdk_window_get_geometry (widget->window, NULL, NULL,
+                                         &window_width, &window_height, NULL);
+		/*
+                 * Check whether rectangles intersect
+		 */
+                if (rect->x + rect->width < 0 ||
+                    rect->y + rect->height < 0 ||
+                    rect->x > window_width  ||
+                    rect->y > window_height) {
+			retval = FALSE;
+		} else {
+                        retval = TRUE;
+		}
+	} else {
+                retval = FALSE;
+	}
+        return retval;
+}
+
+
+static void
+foo_canvas_item_accessible_get_extents (AtkComponent *component,
+                                        gint		*x,
+                                        gint		*y,
+                                        gint		*width,
+                                        gint		*height,
+                                        AtkCoordType coord_type)
+{
+ 	AtkGObjectAccessible *atk_gobj;
+	GObject *obj;
+	FooCanvasItem *item;
+	gint window_x, window_y;
+	gint toplevel_x, toplevel_y;
+	GdkRectangle rect;
+	GdkWindow *window;
+	GtkWidget *canvas;
+
+	atk_gobj = ATK_GOBJECT_ACCESSIBLE (component);
+	obj = atk_gobject_accessible_get_object (atk_gobj);
+
+	if (obj == NULL) {
+		/* item is defunct */
+		return;
+	}
+
+        /* Get the CanvasItem */
+	item = FOO_CANVAS_ITEM (obj);
+
+	/* If this item has no parent canvas, something's broken */
+	g_return_if_fail (GTK_IS_WIDGET (item->canvas));
+
+	foo_canvas_item_accessible_get_item_extents (item, &rect);
+	*width = rect.width;
+	*height = rect.height;
+	if (!foo_canvas_item_accessible_is_item_in_window (item, &rect)) {
+		*x = G_MININT;
+		*y = G_MININT;
+		return;
+	}
+
+        canvas = GTK_WIDGET (item->canvas);
+	window = gtk_widget_get_parent_window (canvas);
+	gdk_window_get_origin (window, &window_x, &window_y);
+	*x = rect.x + window_x;
+	*y = rect.y + window_y;
+	if (coord_type == ATK_XY_WINDOW) {
+		window = gdk_window_get_toplevel (canvas->window);
+		gdk_window_get_origin (window, &toplevel_x, &toplevel_y);
+		*x -= toplevel_x;
+		*y -= toplevel_y;
+	}
+        return;
+}
+
+static gint
+foo_canvas_item_accessible_get_mdi_zorder (AtkComponent *component)
+{
+	AtkGObjectAccessible *atk_gobj;
+	GObject *g_obj;
+	FooCanvasItem *item;
+
+	atk_gobj = ATK_GOBJECT_ACCESSIBLE (component);
+	g_obj = atk_gobject_accessible_get_object (atk_gobj);
+	if (g_obj == NULL) {
+		/* Object is defunct */
+		return -1;
+	}
+
+	item = FOO_CANVAS_ITEM (g_obj);
+	if (item->parent) {
+       		return g_list_index (FOO_CANVAS_GROUP (item->parent)->item_list, item);
+	} else {
+		g_return_val_if_fail (item->canvas->root == item, -1);
+		return 0;
+	}
+}
+
+static gboolean
+foo_canvas_item_accessible_grab_focus (AtkComponent *component)
+{
+ 	AtkGObjectAccessible *atk_gobj;
+	GObject *obj;
+	FooCanvasItem *item;
+	GtkWidget *toplevel;
+
+	atk_gobj = ATK_GOBJECT_ACCESSIBLE (component);
+	obj = atk_gobject_accessible_get_object (atk_gobj);
+
+	item = FOO_CANVAS_ITEM (obj);
+	if (item == NULL) {
+		/* item is defunct */
+		return FALSE;
+	}
+
+        foo_canvas_item_grab_focus (item);
+	toplevel = gtk_widget_get_toplevel (GTK_WIDGET (item->canvas));
+	if (GTK_WIDGET_TOPLEVEL (toplevel)) {
+		gtk_window_present (GTK_WINDOW (toplevel));
+	}
+
+	return TRUE;
+}
+
+static void
+foo_canvas_item_accessible_remove_focus_handler (AtkComponent *component,
+                                                 guint		handler_id)
+{
+ 	g_signal_handler_disconnect (component, handler_id);
+}
+
+static void
+foo_canvas_item_accessible_component_interface_init (AtkComponentIface *iface)
+{
+	g_return_if_fail (iface != NULL);
+
+	iface->add_focus_handler = foo_canvas_item_accessible_add_focus_handler;
+	iface->get_extents = foo_canvas_item_accessible_get_extents;
+	iface->get_mdi_zorder = foo_canvas_item_accessible_get_mdi_zorder;
+	iface->grab_focus = foo_canvas_item_accessible_grab_focus;
+      	iface->remove_focus_handler = foo_canvas_item_accessible_remove_focus_handler;
+}
+
+static gboolean
+foo_canvas_item_accessible_is_item_on_screen (FooCanvasItem *item)
+{
+	GdkRectangle rect;
+
+	foo_canvas_item_accessible_get_item_extents (item, &rect);
+	return foo_canvas_item_accessible_is_item_in_window (item, &rect);
+}
+
+static void
+foo_canvas_item_accessible_initialize (AtkObject *obj, gpointer data)
+{
+	if (ATK_OBJECT_CLASS (accessible_item_parent_class)->initialize != NULL)
+		ATK_OBJECT_CLASS (accessible_item_parent_class)->initialize (obj, data);
+	g_object_set_data (G_OBJECT (obj), "atk-component-layer",
+			   GINT_TO_POINTER (ATK_LAYER_MDI));
+}
+
+static AtkStateSet*
+foo_canvas_item_accessible_ref_state_set (AtkObject *accessible)
+{
+ 	AtkGObjectAccessible *atk_gobj;
+	GObject *obj;
+ 	FooCanvasItem *item;
+	AtkStateSet *state_set;
+
+	state_set = ATK_OBJECT_CLASS (accessible_item_parent_class)->ref_state_set (accessible);
+	atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible);
+	obj = atk_gobject_accessible_get_object (atk_gobj);
+
+	item = FOO_CANVAS_ITEM (obj);
+	if (item == NULL) {
+		atk_state_set_add_state (state_set, ATK_STATE_DEFUNCT);
+	} else {
+                if (item->object.flags & FOO_CANVAS_ITEM_VISIBLE) {
+			atk_state_set_add_state (state_set, ATK_STATE_VISIBLE);
+
+			if (foo_canvas_item_accessible_is_item_on_screen (item)) {
+  				atk_state_set_add_state (state_set, ATK_STATE_SHOWING);
+       			}
+		}
+        	if (GTK_WIDGET_CAN_FOCUS (GTK_WIDGET (item->canvas))) {
+			atk_state_set_add_state (state_set, ATK_STATE_FOCUSABLE);
+
+			if (item->canvas->focused_item == item) {
+				atk_state_set_add_state (state_set, ATK_STATE_FOCUSED);
+			}
+		}
+	}
+
+        return state_set;
+}
+
+static void
+foo_canvas_item_accessible_class_init (AtkObjectClass *klass)
+{
+ 	accessible_item_parent_class = g_type_class_peek_parent (klass);
+
+	klass->initialize = foo_canvas_item_accessible_initialize;
+	klass->ref_state_set = foo_canvas_item_accessible_ref_state_set;
+}
+
+static GType
+foo_canvas_item_accessible_get_type (void)
+{
+	static GType type = 0;
+
+	if (!type) {
+		static const GInterfaceInfo atk_component_info = {
+			(GInterfaceInitFunc) foo_canvas_item_accessible_component_interface_init,
+                 	(GInterfaceFinalizeFunc) NULL,
+			NULL
+		};
+		AtkObjectFactory *factory;
+		GType parent_atk_type;
+		GTypeQuery query;
+		GTypeInfo tinfo = { 0 };
+
+		factory = atk_registry_get_factory (atk_get_default_registry(),
+						    GTK_TYPE_OBJECT);
+		if (!factory) {
+			return G_TYPE_INVALID;
+		}
+		parent_atk_type = atk_object_factory_get_accessible_type (factory);
+		if (!parent_atk_type) {
+			return G_TYPE_INVALID;
+		}
+		g_type_query (parent_atk_type, &query);
+		tinfo.class_init = (GClassInitFunc) foo_canvas_item_accessible_class_init;
+		tinfo.class_size = query.class_size;
+		tinfo.instance_size = query.instance_size;
+		type = g_type_register_static (parent_atk_type,
+					       "FooCanvasItemAccessibility",
+					       &tinfo, 0);
+
+		g_type_add_interface_static (type, ATK_TYPE_COMPONENT,
+					     &atk_component_info);
+
+	}
+
+	return type;
+}
+
+static AtkObject *
+foo_canvas_item_accessible_create (GObject *for_object)
+{
+	GType type;
+	AtkObject *accessible;
+	FooCanvasItem *item;
+
+	item = FOO_CANVAS_ITEM (for_object);
+	g_return_val_if_fail (item != NULL, NULL);
+
+	type = foo_canvas_item_accessible_get_type ();
+	if (type == G_TYPE_INVALID) {
+		return atk_no_op_object_new (for_object);
+	}
+
+        accessible = g_object_new (type, NULL);
+	atk_object_initialize (accessible, for_object);
+	return accessible;
+}
+
+static GType
+foo_canvas_item_accessible_factory_get_accessible_type (void)
+{
+	return foo_canvas_item_accessible_get_type ();
+}
+
+static AtkObject*
+foo_canvas_item_accessible_factory_create_accessible (GObject *obj)
+{
+	AtkObject *accessible;
+
+	g_return_val_if_fail (G_IS_OBJECT (obj), NULL);
+
+	accessible = foo_canvas_item_accessible_create (obj);
+
+	return accessible;
+}
+
+static void
+foo_canvas_item_accessible_factory_class_init (AtkObjectFactoryClass *klass)
+{
+	klass->create_accessible = foo_canvas_item_accessible_factory_create_accessible;
+	klass->get_accessible_type = foo_canvas_item_accessible_factory_get_accessible_type;
+}
+
+static GType
+foo_canvas_item_accessible_factory_get_type (void)
+{
+	static GType type = 0;
+
+	if (!type) {
+		static const GTypeInfo tinfo = {
+			sizeof (AtkObjectFactoryClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) foo_canvas_item_accessible_factory_class_init,
+			NULL,		/* class_finalize */
+			NULL,		/* class_data */
+			sizeof (AtkObjectFactory),
+			0,		/* n_preallocs */
+			NULL
+		};
+		type = g_type_register_static (ATK_TYPE_OBJECT_FACTORY,
+					       "FooCanvasItemAccessibilityFactory",
+					       &tinfo, 0);
+	}
+
+	return type;
+}
+
+/* Class initialization function for FooCanvasItemClass */
+static void
+foo_canvas_item_class_init (FooCanvasItemClass *class)
+{
+	GObjectClass *gobject_class;
+
+	gobject_class = (GObjectClass *) class;
+
+	item_parent_class = gtk_type_class (gtk_object_get_type ());
+
+	gobject_class->set_property = foo_canvas_item_set_property;
+	gobject_class->get_property = foo_canvas_item_get_property;
+
+	g_object_class_install_property
+		(gobject_class, ITEM_PROP_PARENT,
+		 g_param_spec_object ("parent", NULL, NULL,
+				      FOO_TYPE_CANVAS_ITEM,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class, ITEM_PROP_VISIBLE,
+		 g_param_spec_boolean ("visible", NULL, NULL,
+				      TRUE,
+				      GSF_PARAM_STATIC | G_PARAM_READWRITE));
+
+	item_signals[ITEM_EVENT] =
+		g_signal_new ("event",
+			      G_TYPE_FROM_CLASS (class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (FooCanvasItemClass, event),
+			      boolean_handled_accumulator, NULL,
+			      foo_canvas_marshal_BOOLEAN__BOXED,
+			      G_TYPE_BOOLEAN, 1,
+			      GDK_TYPE_EVENT | G_SIGNAL_TYPE_STATIC_SCOPE);
+
+	gobject_class->dispose = foo_canvas_item_dispose;
+
+	class->realize = foo_canvas_item_realize;
+	class->unrealize = foo_canvas_item_unrealize;
+	class->map = foo_canvas_item_map;
+	class->unmap = foo_canvas_item_unmap;
+	class->update = foo_canvas_item_update;
+
+	atk_registry_set_factory_type (atk_get_default_registry (),
+                                       FOO_TYPE_CANVAS_ITEM,
+                                       foo_canvas_item_accessible_factory_get_type ());
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/foo-canvas.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,532 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: 8; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+/* FooCanvas widget - Tk-like canvas widget for Gnome
+ *
+ * FooCanvas is basically a port of the Tk toolkit's most excellent canvas
+ * widget.  Tk is copyrighted by the Regents of the University of California,
+ * Sun Microsystems, and other parties.
+ *
+ *
+ * Authors: Federico Mena <federico at nuclecu.unam.mx>
+ *          Raph Levien <raph at gimp.org>
+ */
+
+#ifndef FOO_CANVAS_H
+#define FOO_CANVAS_H
+
+#include <gtk/gtklayout.h>
+#include <gdk/gdkevents.h>
+#include <stdarg.h>
+
+G_BEGIN_DECLS
+
+
+/* "Small" value used by canvas stuff */
+#define FOO_CANVAS_EPSILON 1e-10
+
+
+/* Macros for building colors that fit in a 32-bit integer.  The values are in
+ * [0, 255].
+ */
+
+#define FOO_CANVAS_COLOR(r, g, b) ((((int) (r) & 0xff) << 24)	\
+				     | (((int) (g) & 0xff) << 16)	\
+				     | (((int) (b) & 0xff) << 8)	\
+				     | 0xff)
+
+#define FOO_CANVAS_COLOR_A(r, g, b, a) ((((int) (r) & 0xff) << 24)	\
+					  | (((int) (g) & 0xff) << 16)	\
+					  | (((int) (b) & 0xff) << 8)	\
+					  | ((int) (a) & 0xff))
+
+
+typedef struct _FooCanvas           FooCanvas;
+typedef struct _FooCanvasClass      FooCanvasClass;
+typedef struct _FooCanvasItem       FooCanvasItem;
+typedef struct _FooCanvasItemClass  FooCanvasItemClass;
+typedef struct _FooCanvasGroup      FooCanvasGroup;
+typedef struct _FooCanvasGroupClass FooCanvasGroupClass;
+
+
+/* FooCanvasItem - base item class for canvas items
+ *
+ * All canvas items are derived from FooCanvasItem.  The only information a
+ * FooCanvasItem contains is its parent canvas, its parent canvas item group,
+ * and its bounding box in world coordinates.
+ *
+ * Items inside a canvas are organized in a tree of FooCanvasItemGroup nodes
+ * and FooCanvasItem leaves.  Each canvas has a single root group, which can
+ * be obtained with the foo_canvas_get_root() function.
+ *
+ * The abstract FooCanvasItem class does not have any configurable or
+ * queryable attributes.
+ */
+
+/* Object flags for items */
+enum {
+	FOO_CANVAS_ITEM_REALIZED         = 1 << 4,
+	FOO_CANVAS_ITEM_MAPPED           = 1 << 5,
+	FOO_CANVAS_ITEM_ALWAYS_REDRAW    = 1 << 6,
+	FOO_CANVAS_ITEM_VISIBLE          = 1 << 7,
+	FOO_CANVAS_ITEM_NEED_UPDATE      = 1 << 8,
+	FOO_CANVAS_ITEM_NEED_DEEP_UPDATE = 1 << 9
+};
+
+/* Update flags for items */
+enum {
+	FOO_CANVAS_UPDATE_REQUESTED  = 1 << 0,
+	FOO_CANVAS_UPDATE_DEEP       = 1 << 1
+};
+
+#define FOO_TYPE_CANVAS_ITEM            (foo_canvas_item_get_type ())
+#define FOO_CANVAS_ITEM(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItem))
+#define FOO_CANVAS_ITEM_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass))
+#define FOO_IS_CANVAS_ITEM(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_ITEM))
+#define FOO_IS_CANVAS_ITEM_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_ITEM))
+#define FOO_CANVAS_ITEM_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_ITEM, FooCanvasItemClass))
+
+
+struct _FooCanvasItem {
+	GtkObject object;
+
+	/* Parent canvas for this item */
+	FooCanvas *canvas;
+
+	/* Parent canvas group for this item (a FooCanvasGroup) */
+	FooCanvasItem *parent;
+
+	/* Bounding box for this item (in canvas coordinates) */
+	double x1, y1, x2, y2;
+};
+
+struct _FooCanvasItemClass {
+	GtkObjectClass parent_class;
+
+	/* Tell the item to update itself.  The flags are from the update flags
+	 * defined above.  The item should update its internal state from its
+	 * queued state, and recompute and request its repaint area. The
+	 * update method also recomputes the bounding box of the item.
+	 */
+	void (* update) (FooCanvasItem *item, double i2w_dx, double i2w_dy, int flags);
+
+	/* Realize an item -- create GCs, etc. */
+	void (* realize) (FooCanvasItem *item);
+
+	/* Unrealize an item */
+	void (* unrealize) (FooCanvasItem *item);
+
+	/* Map an item - normally only need by items with their own GdkWindows */
+	void (* map) (FooCanvasItem *item);
+
+	/* Unmap an item */
+	void (* unmap) (FooCanvasItem *item);
+
+	/* Draw an item of this type.  (x, y) are the upper-left canvas pixel
+	 * coordinates of the drawable, a temporary pixmap, where things get
+	 * drawn.  (width, height) are the dimensions of the drawable.
+	 */
+	void (* draw) (FooCanvasItem *item, GdkDrawable *drawable, GdkEventExpose *expose);
+
+	/* Calculate the distance from an item to the specified point.  It also
+         * returns a canvas item which is the item itself in the case of the
+         * object being an actual leaf item, or a child in case of the object
+         * being a canvas group.  (cx, cy) are the canvas pixel coordinates that
+         * correspond to the item-relative coordinates (x, y).
+	 */
+	double (* point) (FooCanvasItem *item, double x, double y, int cx, int cy,
+			  FooCanvasItem **actual_item);
+
+	void (* translate) (FooCanvasItem *item, double dx, double dy);
+
+	/* Fetch the item's bounding box (need not be exactly tight).  This
+	 * should be in item-relative coordinates.
+	 */
+	void (* bounds) (FooCanvasItem *item, double *x1, double *y1, double *x2, double *y2);
+
+	/* Signal: an event ocurred for an item of this type.  The (x, y)
+	 * coordinates are in the canvas world coordinate system.
+	 */
+	gboolean (* event)                (FooCanvasItem *item, GdkEvent *event);
+
+	/* Reserved for future expansion */
+	gpointer spare_vmethods [4];
+};
+
+
+/* Standard Gtk function */
+GType foo_canvas_item_get_type (void) G_GNUC_CONST;
+
+/* Create a canvas item using the standard Gtk argument mechanism.  The item is
+ * automatically inserted at the top of the specified canvas group.  The last
+ * argument must be a NULL pointer.
+ */
+FooCanvasItem *foo_canvas_item_new (FooCanvasGroup *parent, GType type,
+				    const gchar *first_arg_name, ...);
+
+/* Constructors for use in derived classes and language wrappers */
+void foo_canvas_item_construct (FooCanvasItem *item, FooCanvasGroup *parent,
+				const gchar *first_arg_name, va_list args);
+
+/* Configure an item using the standard Gtk argument mechanism.  The last
+ * argument must be a NULL pointer.
+ */
+void foo_canvas_item_set (FooCanvasItem *item, const gchar *first_arg_name, ...);
+
+/* Used only for language wrappers and the like */
+void foo_canvas_item_set_valist (FooCanvasItem *item,
+				 const gchar *first_arg_name, va_list args);
+
+/* Move an item by the specified amount */
+void foo_canvas_item_move (FooCanvasItem *item, double dx, double dy);
+
+/* Raise an item in the z-order of its parent group by the specified number of
+ * positions.
+ */
+void foo_canvas_item_raise (FooCanvasItem *item, int positions);
+
+/* Lower an item in the z-order of its parent group by the specified number of
+ * positions.
+ */
+void foo_canvas_item_lower (FooCanvasItem *item, int positions);
+
+/* Raise an item to the top of its parent group's z-order. */
+void foo_canvas_item_raise_to_top (FooCanvasItem *item);
+
+/* Lower an item to the bottom of its parent group's z-order */
+void foo_canvas_item_lower_to_bottom (FooCanvasItem *item);
+
+/* Send an item behind another item */
+void foo_canvas_item_send_behind (FooCanvasItem *item,
+				  FooCanvasItem *behind_item);
+
+
+/* Show an item (make it visible).  If the item is already shown, it has no
+ * effect.
+ */
+void foo_canvas_item_show (FooCanvasItem *item);
+
+/* Hide an item (make it invisible).  If the item is already invisible, it has
+ * no effect.
+ */
+void foo_canvas_item_hide (FooCanvasItem *item);
+
+/* Grab the mouse for the specified item.  Only the events in event_mask will be
+ * reported.  If cursor is non-NULL, it will be used during the duration of the
+ * grab.  Time is a proper X event time parameter.  Returns the same values as
+ * XGrabPointer().
+ */
+int foo_canvas_item_grab (FooCanvasItem *item, unsigned int event_mask,
+			  GdkCursor *cursor, guint32 etime);
+
+/* Ungrabs the mouse -- the specified item must be the same that was passed to
+ * foo_canvas_item_grab().  Time is a proper X event time parameter.
+ */
+void foo_canvas_item_ungrab (FooCanvasItem *item, guint32 etime);
+
+/* These functions convert from a coordinate system to another.  "w" is world
+ * coordinates and "i" is item coordinates.
+ */
+void foo_canvas_item_w2i (FooCanvasItem *item, double *x, double *y);
+void foo_canvas_item_i2w (FooCanvasItem *item, double *x, double *y);
+
+/* Remove the item from its parent group and make the new group its parent.  The
+ * item will be put on top of all the items in the new group.  The item's
+ * coordinates relative to its new parent to *not* change -- this means that the
+ * item could potentially move on the screen.
+ *
+ * The item and the group must be in the same canvas.  An item cannot be
+ * reparented to a group that is the item itself or that is an inferior of the
+ * item.
+ */
+void foo_canvas_item_reparent (FooCanvasItem *item, FooCanvasGroup *new_group);
+
+/* Used to send all of the keystroke events to a specific item as well as
+ * GDK_FOCUS_CHANGE events.
+ */
+void foo_canvas_item_grab_focus (FooCanvasItem *item);
+
+/* Fetch the bounding box of the item.  The bounding box may not be exactly
+ * tight, but the canvas items will do the best they can.  The returned bounding
+ * box is in the coordinate system of the item's parent.
+ */
+void foo_canvas_item_get_bounds (FooCanvasItem *item,
+				 double *x1, double *y1, double *x2, double *y2);
+
+/* Request that the update method eventually get called.  This should be used
+ * only by item implementations.
+ */
+void foo_canvas_item_request_update (FooCanvasItem *item);
+
+/* Request a redraw of the bounding box of the canvas item */
+void foo_canvas_item_request_redraw (FooCanvasItem *item);
+
+/* FooCanvasGroup - a group of canvas items
+ *
+ * A group is a node in the hierarchical tree of groups/items inside a canvas.
+ * Groups serve to give a logical structure to the items.
+ *
+ * Consider a circuit editor application that uses the canvas for its schematic
+ * display.  Hierarchically, there would be canvas groups that contain all the
+ * components needed for an "adder", for example -- this includes some logic
+ * gates as well as wires.  You can move stuff around in a convenient way by
+ * doing a foo_canvas_item_move() of the hierarchical groups -- to move an
+ * adder, simply move the group that represents the adder.
+ *
+ * The following arguments are available:
+ *
+ * name		type		read/write	description
+ * --------------------------------------------------------------------------------
+ * x		double		RW		X coordinate of group's origin
+ * y		double		RW		Y coordinate of group's origin
+ */
+
+
+#define FOO_TYPE_CANVAS_GROUP            (foo_canvas_group_get_type ())
+#define FOO_CANVAS_GROUP(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS_GROUP, FooCanvasGroup))
+#define FOO_CANVAS_GROUP_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS_GROUP, FooCanvasGroupClass))
+#define FOO_IS_CANVAS_GROUP(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS_GROUP))
+#define FOO_IS_CANVAS_GROUP_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS_GROUP))
+#define FOO_CANVAS_GROUP_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS_GROUP, FooCanvasGroupClass))
+
+
+struct _FooCanvasGroup {
+	FooCanvasItem item;
+
+	double xpos, ypos;
+
+	/* Children of the group */
+	GList *item_list;
+	GList *item_list_end;
+};
+
+struct _FooCanvasGroupClass {
+	FooCanvasItemClass parent_class;
+};
+
+
+/* Standard Gtk function */
+GType foo_canvas_group_get_type (void) G_GNUC_CONST;
+
+
+/*** FooCanvas ***/
+
+
+#define FOO_TYPE_CANVAS            (foo_canvas_get_type ())
+#define FOO_CANVAS(obj)            (GTK_CHECK_CAST ((obj), FOO_TYPE_CANVAS, FooCanvas))
+#define FOO_CANVAS_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), FOO_TYPE_CANVAS, FooCanvasClass))
+#define FOO_IS_CANVAS(obj)         (GTK_CHECK_TYPE ((obj), FOO_TYPE_CANVAS))
+#define FOO_IS_CANVAS_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), FOO_TYPE_CANVAS))
+#define FOO_CANVAS_GET_CLASS(obj)  (GTK_CHECK_GET_CLASS ((obj), FOO_TYPE_CANVAS, FooCanvasClass))
+
+
+struct _FooCanvas {
+	GtkLayout layout;
+
+	/* Root canvas group */
+	FooCanvasItem *root;
+
+	/* The item containing the mouse pointer, or NULL if none */
+	FooCanvasItem *current_item;
+
+	/* Item that is about to become current (used to track deletions and such) */
+	FooCanvasItem *new_current_item;
+
+	/* Item that holds a pointer grab, or NULL if none */
+	FooCanvasItem *grabbed_item;
+
+	/* If non-NULL, the currently focused item */
+	FooCanvasItem *focused_item;
+
+	/* GC for temporary draw pixmap */
+	GdkGC *pixmap_gc;
+
+	/* Event on which selection of current item is based */
+	GdkEvent pick_event;
+
+	/* Scrolling region */
+	double scroll_x1, scroll_y1;
+	double scroll_x2, scroll_y2;
+
+	/* Scaling factor to be used for display */
+	double pixels_per_unit;
+
+	/* Idle handler ID */
+	guint idle_id;
+
+	/* Signal handler ID for destruction of the root item */
+	guint root_destroy_id;
+
+	/* Internal pixel offsets when zoomed out */
+	int zoom_xofs, zoom_yofs;
+
+	/* Last known modifier state, for deferred repick when a button is down */
+	int state;
+
+	/* Event mask specified when grabbing an item */
+	guint grabbed_event_mask;
+
+	/* Tolerance distance for picking items */
+	int close_enough;
+
+	/* Whether the canvas should center the canvas in the middle of
+	 * the window if the scroll region is smaller than the window */
+	unsigned int center_scroll_region : 1;
+
+	/* Whether items need update at next idle loop iteration */
+	unsigned int need_update : 1;
+
+	/* Are we in the midst of an update */
+	unsigned int doing_update : 1;
+
+	/* Whether the canvas needs redrawing at the next idle loop iteration */
+	unsigned int need_redraw : 1;
+
+	/* Whether current item will be repicked at next idle loop iteration */
+	unsigned int need_repick : 1;
+
+	/* For use by internal pick_current_item() function */
+	unsigned int left_grabbed_item : 1;
+
+	/* For use by internal pick_current_item() function */
+	unsigned int in_repick : 1;
+};
+
+struct _FooCanvasClass {
+	GtkLayoutClass parent_class;
+
+	/* Draw the background for the area given.
+	 */
+	void (* draw_background) (FooCanvas *canvas,
+				  int x, int y, int width, int height);
+
+	/* Private Virtual methods for groping the canvas inside bonobo */
+	void (* request_update) (FooCanvas *canvas);
+
+	/* Reserved for future expansion */
+	gpointer spare_vmethods [4];
+};
+
+
+/* Standard Gtk function */
+GType foo_canvas_get_type (void) G_GNUC_CONST;
+
+/* Creates a new canvas.  You should check that the canvas is created with the
+ * proper visual and colormap.  Any visual will do unless you intend to insert
+ * gdk_imlib images into it, in which case you should use the gdk_imlib visual.
+ *
+ * You should call foo_canvas_set_scroll_region() soon after calling this
+ * function to set the desired scrolling limits for the canvas.
+ */
+GtkWidget *foo_canvas_new (void);
+
+/* Returns the root canvas item group of the canvas */
+FooCanvasGroup *foo_canvas_root (FooCanvas *canvas);
+
+/* Sets the limits of the scrolling region, in world coordinates */
+void foo_canvas_set_scroll_region (FooCanvas *canvas,
+				   double x1, double y1, double x2, double y2);
+
+/* Gets the limits of the scrolling region, in world coordinates */
+void foo_canvas_get_scroll_region (FooCanvas *canvas,
+				   double *x1, double *y1, double *x2, double *y2);
+
+/* Sets the number of pixels that correspond to one unit in world coordinates */
+void foo_canvas_set_pixels_per_unit (FooCanvas *canvas, double n);
+
+/* Wether the canvas centers the scroll region if it is smaller than the window  */
+void foo_canvas_set_center_scroll_region (FooCanvas *canvas, gboolean center_scroll_region);
+
+/* Scrolls the canvas to the specified offsets, given in canvas pixel coordinates */
+void foo_canvas_scroll_to (FooCanvas *canvas, int cx, int cy);
+
+/* Returns the scroll offsets of the canvas in canvas pixel coordinates.  You
+ * can specify NULL for any of the values, in which case that value will not be
+ * queried.
+ */
+void foo_canvas_get_scroll_offsets (FooCanvas *canvas, int *cx, int *cy);
+
+/* Requests that the canvas be repainted immediately instead of in the idle
+ * loop.
+ */
+void foo_canvas_update_now (FooCanvas *canvas);
+
+/* Returns the item that is at the specified position in world coordinates, or
+ * NULL if no item is there.
+ */
+FooCanvasItem *foo_canvas_get_item_at (FooCanvas *canvas, double x, double y);
+
+/* For use only by item type implementations.  Request that the canvas
+ * eventually redraw the specified region, specified in canvas pixel
+ * coordinates.  The region contains (x1, y1) but not (x2, y2).
+ */
+void foo_canvas_request_redraw (FooCanvas *canvas, int x1, int y1, int x2, int y2);
+
+/* These functions convert from a coordinate system to another.  "w" is world
+ * coordinates, "c" is canvas pixel coordinates (pixel coordinates that are
+ * (0,0) for the upper-left scrolling limit and something else for the
+ * lower-left scrolling limit).
+ */
+void foo_canvas_w2c_rect_d (FooCanvas *canvas,
+			    double *x1, double *y1,
+			    double *x2, double *y2);
+void foo_canvas_w2c (FooCanvas *canvas, double wx, double wy, int *cx, int *cy);
+void foo_canvas_w2c_d (FooCanvas *canvas, double wx, double wy, double *cx, double *cy);
+void foo_canvas_c2w (FooCanvas *canvas, int cx, int cy, double *wx, double *wy);
+
+/* This function takes in coordinates relative to the GTK_LAYOUT
+ * (canvas)->bin_window and converts them to world coordinates.
+ * These days canvas coordinates and window coordinates are the same, but
+ * these are left for backwards compat reasons.
+ */
+void foo_canvas_window_to_world (FooCanvas *canvas,
+				 double winx, double winy, double *worldx, double *worldy);
+
+/* This is the inverse of foo_canvas_window_to_world() */
+void foo_canvas_world_to_window (FooCanvas *canvas,
+				 double worldx, double worldy, double *winx, double *winy);
+
+/* Takes a string specification for a color and allocates it into the specified
+ * GdkColor.  If the string is null, then it returns FALSE. Otherwise, it
+ * returns TRUE.
+ */
+int foo_canvas_get_color (FooCanvas *canvas, const char *spec, GdkColor *color);
+
+/* Allocates a color from the RGB value passed into this function. */
+gulong foo_canvas_get_color_pixel (FooCanvas *canvas,
+				   guint        rgba);
+
+
+/* Sets the stipple origin of the specified gc so that it will be aligned with
+ * all the stipples used in the specified canvas.  This is intended for use only
+ * by canvas item implementations.
+ */
+void foo_canvas_set_stipple_origin (FooCanvas *canvas, GdkGC *gc);
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvas.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvas.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvas.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,47 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+/*
+ * Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+
+#ifndef LIBFOOCANVAS_H
+#define LIBFOOCANVAS_H
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-line.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-text.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-polygon.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-widget.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-util.h>
+
+G_BEGIN_DECLS
+
+GType foo_canvas_points_get_type (void);
+#define FOO_TYPE_CANVAS_POINTS foo_canvas_points_get_type()
+
+G_END_DECLS
+
+#endif /* LIBFOOCANVAS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvastypes.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvastypes.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/foocanvas/libfoocanvastypes.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,47 @@
+/* File import from foocanvas to libgoffice by import-foocanvas.  Do not edit.  */
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+/*
+ * Copyright (C) 1999, 2000 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This file is part of the Gnome Library.
+ *
+ * The Gnome Library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * The Gnome Library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with the Gnome Library; see the file COPYING.LIB.  If
+ * not, write to the Free Software Foundation, Inc., 51 Franklin St,
+ * Fifth Floor, Boston, MA  02110-1301 USA.
+ */
+/*
+  @NOTATION@
+ */
+
+#include <glib-object.h>
+
+#include <goffice/cut-n-paste/foocanvas/libfoocanvas.h>
+
+GType
+foo_canvas_points_get_type (void)
+{
+    static GType type_canvas_points = 0;
+
+    if (!type_canvas_points)
+	type_canvas_points = g_boxed_type_register_static
+	    ("FooCanvasPoints",
+	     (GBoxedCopyFunc) foo_canvas_points_ref,
+	     (GBoxedFreeFunc) foo_canvas_points_unref);
+
+    return type_canvas_points;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/COPYING
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/COPYING	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/COPYING	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+PCRE LICENCE
+------------
+
+PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+Release 5 of PCRE is distributed under the terms of the "BSD" licence, as
+specified below. The documentation for PCRE, supplied in the "doc"
+directory, is distributed under the same terms as the software itself.
+
+Written by: Philip Hazel <ph10 at cam.ac.uk>
+
+University of Cambridge Computing Service,
+Cambridge, England. Phone: +44 1223 334714.
+
+Copyright (c) 1997-2004 University of Cambridge
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+End

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,17 @@
+noinst_LTLIBRARIES = libpcre.la
+libpcre_la_SOURCES = maketables.c get.c study.c pcre.c pcreposix.c
+EXTRA_DIST = COPYING
+
+libpcre_a_ladir = $(includedir)/libgoffice-1/goffice/cut-n-paste/pcre
+libpcre_a_la_HEADERS = pcreposix.h
+noinst_HEADERS = internal.h pcre.h
+
+AM_CPPFLAGS = \
+	$(GOFFICE_DEPS_CFLAGS) \
+	-I$(top_builddir)/lib/goffice-0.0.4 \
+	-DSUPPORT_UTF8 \
+	-DNEWLINE=10 \
+	-DPOSIX_MALLOC_THRESHOLD=100 \
+	-DLINK_SIZE=2 \
+	-DMATCH_LIMIT=10000000
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,541 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LTLIBRARIES = libpcre.la
+libpcre_la_SOURCES = maketables.c get.c study.c pcre.c pcreposix.c
+EXTRA_DIST = COPYING
+
+libpcre_a_ladir = $(includedir)/libgoffice-1/goffice/cut-n-paste/pcre
+libpcre_a_la_HEADERS = pcreposix.h
+noinst_HEADERS = internal.h pcre.h
+
+AM_CPPFLAGS = \
+	$(GOFFICE_CFLAGS) \
+	-I$(top_builddir) \
+	-DSUPPORT_UTF8 \
+	-DNEWLINE=10 \
+	-DPOSIX_MALLOC_THRESHOLD=100 \
+	-DLINK_SIZE=2 \
+	-DMATCH_LIMIT=10000000
+
+subdir = goffice/cut-n-paste/pcre
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libpcre_la_LDFLAGS =
+libpcre_la_LIBADD =
+am_libpcre_la_OBJECTS = maketables.lo get.lo study.lo pcre.lo \
+	pcreposix.lo
+libpcre_la_OBJECTS = $(am_libpcre_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/get.Plo ./$(DEPDIR)/maketables.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/pcre.Plo ./$(DEPDIR)/pcreposix.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/study.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libpcre_la_SOURCES)
+HEADERS = $(libpcre_a_la_HEADERS) $(noinst_HEADERS)
+
+DIST_COMMON = $(libpcre_a_la_HEADERS) $(noinst_HEADERS) \
+	$(srcdir)/Makefile.in COPYING Makefile.am
+SOURCES = $(libpcre_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/cut-n-paste/pcre/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libpcre.la: $(libpcre_la_OBJECTS) $(libpcre_la_DEPENDENCIES) 
+	$(LINK)  $(libpcre_la_LDFLAGS) $(libpcre_la_OBJECTS) $(libpcre_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/get.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/maketables.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcre.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pcreposix.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/study.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libpcre_a_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libpcre_a_laHEADERS: $(libpcre_a_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libpcre_a_ladir)
+	@list='$(libpcre_a_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libpcre_a_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libpcre_a_ladir)/$$f"; \
+	  $(libpcre_a_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libpcre_a_ladir)/$$f; \
+	done
+
+uninstall-libpcre_a_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libpcre_a_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libpcre_a_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libpcre_a_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libpcre_a_ladir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libpcre_a_laHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libpcre_a_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libpcre_a_laHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-libpcre_a_laHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/get.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/get.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/get.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,378 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see below.  */
+
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/*
+   This is a library of functions to support regular expressions whose syntax
+   and semantics are as close as possible to those of the Perl 5 language. See
+   the file Tech.Notes for some information on the internals.
+
+   Written by: Philip Hazel <ph10 at cam.ac.uk>
+
+   Copyright (c) 1997-2003 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+/* This module contains some convenience functions for extracting substrings
+   from the subject string after a regex match has succeeded. The original idea
+   for these functions came from Scott Wimer. */
+
+
+/* Include the internals header, which itself includes Standard C headers plus
+   the external pcre header. */
+
+#include <goffice/goffice-config.h>
+#include "internal.h"
+
+
+/*************************************************
+*           Find number for named string         *
+*************************************************/
+
+/* This function is used by the two extraction functions below, as well
+   as being generally available.
+
+   Arguments:
+   code        the compiled regex
+   stringname  the name whose number is required
+
+   Returns:      the number of the named parentheses, or a negative number
+   (PCRE_ERROR_NOSUBSTRING) if not found
+ */
+
+int
+pcre_get_stringnumber (const pcre * code, const char *stringname)
+{
+    int rc;
+    int entrysize;
+    int top, bot;
+    uschar *nametable;
+
+    if ((rc = pcre_fullinfo (code, NULL, PCRE_INFO_NAMECOUNT, &top)) != 0)
+	return rc;
+    if (top <= 0)
+	return PCRE_ERROR_NOSUBSTRING;
+
+    if (
+	(rc =
+	 pcre_fullinfo (code, NULL, PCRE_INFO_NAMEENTRYSIZE,
+			&entrysize)) != 0) return rc;
+    if ((rc = pcre_fullinfo (code, NULL, PCRE_INFO_NAMETABLE, &nametable))
+	!= 0)
+	return rc;
+
+    bot = 0;
+    while (top > bot) {
+	int mid = (top + bot) / 2;
+	uschar *entry = nametable + entrysize * mid;
+	int c = strcmp (stringname, (char *) (entry + 2));
+	if (c == 0)
+	    return (entry[0] << 8) + entry[1];
+	if (c > 0)
+	    bot = mid + 1;
+	else
+	    top = mid;
+    }
+
+    return PCRE_ERROR_NOSUBSTRING;
+}
+
+
+
+/*************************************************
+*      Copy captured string to given buffer      *
+*************************************************/
+
+/* This function copies a single captured substring into a given buffer.
+   Note that we use memcpy() rather than strncpy() in case there are binary zeros
+   in the string.
+
+   Arguments:
+   subject        the subject string that was matched
+   ovector        pointer to the offsets table
+   stringcount    the number of substrings that were captured
+   (i.e. the yield of the pcre_exec call, unless
+   that was zero, in which case it should be 1/3
+   of the offset table size)
+   stringnumber   the number of the required substring
+   buffer         where to put the substring
+   size           the size of the buffer
+
+   Returns:         if successful:
+   the length of the copied string, not including the zero
+   that is put on the end; can be zero
+   if not successful:
+   PCRE_ERROR_NOMEMORY (-6) buffer too small
+   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
+ */
+
+int
+pcre_copy_substring (const char *subject, int *ovector, int stringcount,
+		     int stringnumber, char *buffer, int size)
+{
+    int yield;
+    if (stringnumber < 0 || stringnumber >= stringcount)
+	return PCRE_ERROR_NOSUBSTRING;
+    stringnumber *= 2;
+    yield = ovector[stringnumber + 1] - ovector[stringnumber];
+    if (size < yield + 1)
+	return PCRE_ERROR_NOMEMORY;
+    memcpy (buffer, subject + ovector[stringnumber], yield);
+    buffer[yield] = 0;
+    return yield;
+}
+
+
+
+/*************************************************
+*   Copy named captured string to given buffer   *
+*************************************************/
+
+/* This function copies a single captured substring into a given buffer,
+   identifying it by name.
+
+   Arguments:
+   code           the compiled regex
+   subject        the subject string that was matched
+   ovector        pointer to the offsets table
+   stringcount    the number of substrings that were captured
+   (i.e. the yield of the pcre_exec call, unless
+   that was zero, in which case it should be 1/3
+   of the offset table size)
+   stringname     the name of the required substring
+   buffer         where to put the substring
+   size           the size of the buffer
+
+   Returns:         if successful:
+   the length of the copied string, not including the zero
+   that is put on the end; can be zero
+   if not successful:
+   PCRE_ERROR_NOMEMORY (-6) buffer too small
+   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
+ */
+
+int
+pcre_copy_named_substring (const pcre * code, const char *subject,
+			   int *ovector, int stringcount,
+			   const char *stringname, char *buffer, int size)
+{
+    int n = pcre_get_stringnumber (code, stringname);
+    if (n <= 0)
+	return n;
+    return pcre_copy_substring (subject, ovector, stringcount, n, buffer,
+				size);
+}
+
+
+
+/*************************************************
+*      Copy all captured strings to new store    *
+*************************************************/
+
+/* This function gets one chunk of store and builds a list of pointers and all
+   of the captured substrings in it. A NULL pointer is put on the end of the list.
+
+   Arguments:
+   subject        the subject string that was matched
+   ovector        pointer to the offsets table
+   stringcount    the number of substrings that were captured
+   (i.e. the yield of the pcre_exec call, unless
+   that was zero, in which case it should be 1/3
+   of the offset table size)
+   listptr        set to point to the list of pointers
+
+   Returns:         if successful: 0
+   if not successful:
+   PCRE_ERROR_NOMEMORY (-6) failed to get store
+ */
+
+int
+pcre_get_substring_list (const char *subject, int *ovector,
+			 int stringcount, const char ***listptr)
+{
+    int i;
+    int size = sizeof (char *);
+    int double_count = stringcount * 2;
+    char **stringlist;
+    char *p;
+
+    for (i = 0; i < double_count; i += 2)
+	size += sizeof (char *) + ovector[i + 1] - ovector[i] + 1;
+
+    stringlist = (char **) (pcre_malloc) (size);
+    if (stringlist == NULL)
+	return PCRE_ERROR_NOMEMORY;
+
+    *listptr = (const char **) stringlist;
+    p = (char *) (stringlist + stringcount + 1);
+
+    for (i = 0; i < double_count; i += 2) {
+	int len = ovector[i + 1] - ovector[i];
+	memcpy (p, subject + ovector[i], len);
+	*stringlist++ = p;
+	p += len;
+	*p++ = 0;
+    }
+
+    *stringlist = NULL;
+    return 0;
+}
+
+
+
+/*************************************************
+*   Free store obtained by get_substring_list    *
+*************************************************/
+
+/* This function exists for the benefit of people calling PCRE from non-C
+   programs that can call its functions, but not free() or (pcre_free)() directly.
+
+   Argument:   the result of a previous pcre_get_substring_list()
+   Returns:    nothing
+ */
+
+void
+pcre_free_substring_list (const char **pointer)
+{
+    (pcre_free) ((void *) pointer);
+}
+
+
+
+/*************************************************
+*      Copy captured string to new store         *
+*************************************************/
+
+/* This function copies a single captured substring into a piece of new
+   store
+
+   Arguments:
+   subject        the subject string that was matched
+   ovector        pointer to the offsets table
+   stringcount    the number of substrings that were captured
+   (i.e. the yield of the pcre_exec call, unless
+   that was zero, in which case it should be 1/3
+   of the offset table size)
+   stringnumber   the number of the required substring
+   stringptr      where to put a pointer to the substring
+
+   Returns:         if successful:
+   the length of the string, not including the zero that
+   is put on the end; can be zero
+   if not successful:
+   PCRE_ERROR_NOMEMORY (-6) failed to get store
+   PCRE_ERROR_NOSUBSTRING (-7) substring not present
+ */
+
+int
+pcre_get_substring (const char *subject, int *ovector, int stringcount,
+		    int stringnumber, const char **stringptr)
+{
+    int yield;
+    char *substring;
+    if (stringnumber < 0 || stringnumber >= stringcount)
+	return PCRE_ERROR_NOSUBSTRING;
+    stringnumber *= 2;
+    yield = ovector[stringnumber + 1] - ovector[stringnumber];
+    substring = (char *) (pcre_malloc) (yield + 1);
+    if (substring == NULL)
+	return PCRE_ERROR_NOMEMORY;
+    memcpy (substring, subject + ovector[stringnumber], yield);
+    substring[yield] = 0;
+    *stringptr = substring;
+    return yield;
+}
+
+
+
+/*************************************************
+*   Copy named captured string to new store      *
+*************************************************/
+
+/* This function copies a single captured substring, identified by name, into
+   new store.
+
+   Arguments:
+   code           the compiled regex
+   subject        the subject string that was matched
+   ovector        pointer to the offsets table
+   stringcount    the number of substrings that were captured
+   (i.e. the yield of the pcre_exec call, unless
+   that was zero, in which case it should be 1/3
+   of the offset table size)
+   stringname     the name of the required substring
+   stringptr      where to put the pointer
+
+   Returns:         if successful:
+   the length of the copied string, not including the zero
+   that is put on the end; can be zero
+   if not successful:
+   PCRE_ERROR_NOMEMORY (-6) couldn't get memory
+   PCRE_ERROR_NOSUBSTRING (-7) no such captured substring
+ */
+
+int
+pcre_get_named_substring (const pcre * code, const char *subject,
+			  int *ovector, int stringcount,
+			  const char *stringname, const char **stringptr)
+{
+    int n = pcre_get_stringnumber (code, stringname);
+    if (n <= 0)
+	return n;
+    return pcre_get_substring (subject, ovector, stringcount, n,
+			       stringptr);
+}
+
+
+
+
+/*************************************************
+*       Free store obtained by get_substring     *
+*************************************************/
+
+/* This function exists for the benefit of people calling PCRE from non-C
+   programs that can call its functions, but not free() or (pcre_free)() directly.
+
+   Argument:   the result of a previous pcre_get_substring()
+   Returns:    nothing
+ */
+
+void
+pcre_free_substring (const char *pointer)
+{
+    (pcre_free) ((void *) pointer);
+}
+
+/* End of get.c */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/internal.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/internal.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/internal.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,760 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see internal.c.  */
+
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+
+/* This is a library of functions to support regular expressions whose syntax
+   and semantics are as close as possible to those of the Perl 5 language. See
+   the file doc/Tech.Notes for some information on the internals.
+
+   Written by: Philip Hazel <ph10 at cam.ac.uk>
+
+   Copyright (c) 1997-2004 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+/* This header contains definitions that are shared between the different
+   modules, but which are not relevant to the outside. */
+
+/* Get the definitions provided by running "configure" */
+
+
+/* Standard C headers plus the external interface definition. The only time
+   setjmp and stdarg are used is when NO_RECURSE is set. */
+
+/* Whatever the question is, ctype.h is not the answer.  */
+/* #include <ctype.h> */
+#include <limits.h>
+#include <setjmp.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef PCRE_SPY
+#define PCRE_DEFINITION		/* Win32 __declspec(export) trigger for .dll */
+#endif
+
+/* We need to have types that specify unsigned 16-bit and 32-bit integers. We
+   cannot determine these outside the compilation (e.g. by running a program as
+   part of "configure") because PCRE is often cross-compiled for use on other
+   systems. Instead we make use of the maximum sizes that are available at
+   preprocessor time in standard C environments. */
+
+#if USHRT_MAX == 65535
+typedef unsigned short pcre_uint16;
+#elif UINT_MAX == 65535
+typedef unsigned int pcre_uint16;
+#else
+#error Cannot determine a type for 16-bit unsigned integers
+#endif
+
+#if UINT_MAX == 4294967295
+typedef unsigned int pcre_uint32;
+#elif ULONG_MAX == 4294967295
+typedef unsigned long int pcre_uint32;
+#else
+#error Cannot determine a type for 32-bit unsigned integers
+#endif
+
+/* All character handling must be done as unsigned characters. Otherwise there
+   are problems with top-bit-set characters and functions such as g_unichar_isspace().
+   However, we leave the interface to the outside world as char *, because that
+   should make things easier for callers. We define a short type for unsigned char
+   to save lots of typing. I tried "uchar", but it causes problems on Digital
+   Unix, where it is defined in sys/types, so use "uschar" instead. */
+
+typedef unsigned char uschar;
+
+/* Include the public PCRE header */
+
+#include "pcre.h"
+
+/* When compiling for use with the Virtual Pascal compiler, these functions
+   need to have their names changed. PCRE must be compiled with the -DVPCOMPAT
+   option on the command line. */
+
+#ifdef VPCOMPAT
+#define strncmp(s1,s2,m) _strncmp(s1,s2,m)
+#define memcpy(d,s,n)    _memcpy(d,s,n)
+#define memmove(d,s,n)   _memmove(d,s,n)
+#define memset(s,c,n)    _memset(s,c,n)
+#else				/* VPCOMPAT */
+
+/* To cope with SunOS4 and other systems that lack memmove() but have bcopy(),
+   define a macro for memmove() if HAVE_MEMMOVE is false, provided that HAVE_BCOPY
+   is set. Otherwise, include an emulating function for those systems that have
+   neither (there some non-Unix environments where this is the case). This assumes
+   that all calls to memmove are moving strings upwards in store, which is the
+   case in PCRE. */
+
+#if ! HAVE_MEMMOVE
+#undef  memmove			/* some systems may have a macro */
+#if HAVE_BCOPY
+#define memmove(a, b, c) bcopy(b, a, c)
+#else				/* HAVE_BCOPY */
+void *
+pcre_memmove (unsigned char *dest, const unsigned char *src, size_t n)
+{
+    int i;
+    dest += n;
+    src += n;
+    for (i = 0; i < n; ++i)
+	*(--dest) = *(--src);
+}
+
+#define memmove(a, b, c) pcre_memmove(a, b, c)
+#endif				/* not HAVE_BCOPY */
+#endif				/* not HAVE_MEMMOVE */
+#endif				/* not VPCOMPAT */
+
+
+/* PCRE keeps offsets in its compiled code as 2-byte quantities (always stored
+   in big-endian order) by default. These are used, for example, to link from the
+   start of a subpattern to its alternatives and its end. The use of 2 bytes per
+   offset limits the size of the compiled regex to around 64K, which is big enough
+   for almost everybody. However, I received a request for an even bigger limit.
+   For this reason, and also to make the code easier to maintain, the storing and
+   loading of offsets from the byte string is now handled by the macros that are
+   defined here.
+
+   The macros are controlled by the value of LINK_SIZE. This defaults to 2 in
+   the config.h file, but can be overridden by using -D on the command line. This
+   is automated on Unix systems via the "configure" command. */
+
+#if LINK_SIZE == 2
+
+#define PUT(a,n,d)   \
+  (a[n] = (d) >> 8), \
+  (a[(n)+1] = (d) & 255)
+
+#define GET(a,n) \
+  (((a)[n] << 8) | (a)[(n)+1])
+
+#define MAX_PATTERN_SIZE (1 << 16)
+
+
+#elif LINK_SIZE == 3
+
+#define PUT(a,n,d)       \
+  (a[n] = (d) >> 16),    \
+  (a[(n)+1] = (d) >> 8), \
+  (a[(n)+2] = (d) & 255)
+
+#define GET(a,n) \
+  (((a)[n] << 16) | ((a)[(n)+1] << 8) | (a)[(n)+2])
+
+#define MAX_PATTERN_SIZE (1 << 24)
+
+
+#elif LINK_SIZE == 4
+
+#define PUT(a,n,d)        \
+  (a[n] = (d) >> 24),     \
+  (a[(n)+1] = (d) >> 16), \
+  (a[(n)+2] = (d) >> 8),  \
+  (a[(n)+3] = (d) & 255)
+
+#define GET(a,n) \
+  (((a)[n] << 24) | ((a)[(n)+1] << 16) | ((a)[(n)+2] << 8) | (a)[(n)+3])
+
+#define MAX_PATTERN_SIZE (1 << 30)	/* Keep it positive */
+
+
+#else
+#error LINK_SIZE must be either 2, 3, or 4
+#endif
+
+
+/* Convenience macro defined in terms of the others */
+
+#define PUTINC(a,n,d)   PUT(a,n,d), a += LINK_SIZE
+
+
+/* PCRE uses some other 2-byte quantities that do not change when the size of
+   offsets changes. There are used for repeat counts and for other things such as
+   capturing parenthesis numbers in back references. */
+
+#define PUT2(a,n,d)   \
+  a[n] = (d) >> 8; \
+  a[(n)+1] = (d) & 255
+
+#define GET2(a,n) \
+  (((a)[n] << 8) | (a)[(n)+1])
+
+#define PUT2INC(a,n,d)  PUT2(a,n,d), a += 2
+
+
+/* In case there is no definition of offsetof() provided - though any proper
+   Standard C system should have one. */
+
+#ifndef offsetof
+#define offsetof(p_type,field) ((size_t)&(((p_type *)0)->field))
+#endif
+
+
+/* These are the public options that can change during matching. */
+
+#define PCRE_IMS (PCRE_CASELESS|PCRE_MULTILINE|PCRE_DOTALL)
+
+/* Private options flags start at the most significant end of the four bytes,
+   but skip the top bit so we can use ints for convenience without getting tangled
+   with negative values. The public options defined in pcre.h start at the least
+   significant end. Make sure they don't overlap, though now that we have expanded
+   to four bytes, there is plenty of space. */
+
+#define PCRE_FIRSTSET      0x40000000	/* first_byte is set */
+#define PCRE_REQCHSET      0x20000000	/* req_byte is set */
+#define PCRE_STARTLINE     0x10000000	/* start after \n for multiline */
+#define PCRE_ICHANGED      0x08000000	/* i option changes within regex */
+#define PCRE_NOPARTIAL     0x04000000	/* can't use partial with this regex */
+
+/* Options for the "extra" block produced by pcre_study(). */
+
+#define PCRE_STUDY_MAPPED   0x01	/* a map of starting chars exists */
+
+/* Masks for identifying the public options which are permitted at compile
+   time, run time or study time, respectively. */
+
+#define PUBLIC_OPTIONS \
+  (PCRE_CASELESS|PCRE_EXTENDED|PCRE_ANCHORED|PCRE_MULTILINE| \
+   PCRE_DOTALL|PCRE_DOLLAR_ENDONLY|PCRE_EXTRA|PCRE_UNGREEDY|PCRE_UTF8| \
+   PCRE_NO_AUTO_CAPTURE|PCRE_NO_UTF8_CHECK|PCRE_AUTO_CALLOUT)
+
+#define PUBLIC_EXEC_OPTIONS \
+  (PCRE_ANCHORED|PCRE_NOTBOL|PCRE_NOTEOL|PCRE_NOTEMPTY|PCRE_NO_UTF8_CHECK| \
+   PCRE_PARTIAL)
+
+#define PUBLIC_STUDY_OPTIONS 0	/* None defined */
+
+/* Magic number to provide a small check against being handed junk. */
+
+#define MAGIC_NUMBER  0x50435245UL	/* 'PCRE' */
+
+/* Negative values for the firstchar and reqchar variables */
+
+#define REQ_UNSET (-2)
+#define REQ_NONE  (-1)
+
+/* Flags added to firstbyte or reqbyte; a "non-literal" item is either a
+   variable-length repeat, or a anything other than literal characters. */
+
+#define REQ_CASELESS 0x0100	/* indicates caselessness */
+#define REQ_VARY     0x0200	/* reqbyte followed non-literal item */
+
+/* Miscellaneous definitions */
+
+typedef int BOOL;
+
+#define FALSE   0
+#define TRUE    1
+
+/* Escape items that are just an encoding of a particular data value. Note that
+   ESC_n is defined as yet another macro, which is set in config.h to either \n
+   (the default) or \r (which some people want). */
+
+#ifndef ESC_e
+#define ESC_e 27
+#endif
+
+#ifndef ESC_f
+#define ESC_f '\f'
+#endif
+
+#ifndef ESC_n
+#define ESC_n NEWLINE
+#endif
+
+#ifndef ESC_r
+#define ESC_r '\r'
+#endif
+
+/* We can't officially use ESC_t because it is a POSIX reserved identifier
+   (presumably because of all the others like size_t). */
+
+#ifndef ESC_tee
+#define ESC_tee '\t'
+#endif
+
+/* These are escaped items that aren't just an encoding of a particular data
+   value such as \n. They must have non-zero values, as check_escape() returns
+   their negation. Also, they must appear in the same order as in the opcode
+   definitions below, up to ESC_z. There's a dummy for OP_ANY because it
+   corresponds to "." rather than an escape sequence. The final one must be
+   ESC_REF as subsequent values are used for \1, \2, \3, etc. There is are two
+   tests in the code for an escape greater than ESC_b and less than ESC_Z to
+   detect the types that may be repeated. These are the types that consume
+   characters. If any new escapes are put in between that don't consume a
+   character, that code will have to change. */
+
+enum { ESC_A = 1, ESC_G, ESC_B, ESC_b, ESC_D, ESC_d, ESC_S, ESC_s, ESC_W,
+    ESC_w, ESC_dum1, ESC_C, ESC_P, ESC_p, ESC_X, ESC_Z, ESC_z, ESC_E,
+    ESC_Q, ESC_REF
+};
+
+/* Flag bits and data types for the extended class (OP_XCLASS) for classes that
+   contain UTF-8 characters with values greater than 255. */
+
+#define XCL_NOT    0x01		/* Flag: this is a negative class */
+#define XCL_MAP    0x02		/* Flag: a 32-byte map is present */
+
+#define XCL_END       0		/* Marks end of individual items */
+#define XCL_SINGLE    1		/* Single item (one multibyte char) follows */
+#define XCL_RANGE     2		/* A range (two multibyte chars) follows */
+#define XCL_PROP      3		/* Unicode property (one property code) follows */
+#define XCL_NOTPROP   4		/* Unicode inverted property (ditto) */
+
+
+/* Opcode table: OP_BRA must be last, as all values >= it are used for brackets
+   that extract substrings. Starting from 1 (i.e. after OP_END), the values up to
+   OP_EOD must correspond in order to the list of escapes immediately above.
+   Note that whenever this list is updated, the two macro definitions that follow
+   must also be updated to match. */
+
+enum {
+    OP_END,			/* 0 End of pattern */
+
+    /* Values corresponding to backslashed metacharacters */
+
+    OP_SOD,			/* 1 Start of data: \A */
+    OP_SOM,			/* 2 Start of match (subject + offset): \G */
+    OP_NOT_WORD_BOUNDARY,	/*  3 \B */
+    OP_WORD_BOUNDARY,		/*  4 \b */
+    OP_NOT_DIGIT,		/*  5 \D */
+    OP_DIGIT,			/*  6 \d */
+    OP_NOT_WHITESPACE,		/*  7 \S */
+    OP_WHITESPACE,		/*  8 \s */
+    OP_NOT_WORDCHAR,		/*  9 \W */
+    OP_WORDCHAR,		/* 10 \w */
+    OP_ANY,			/* 11 Match any character */
+    OP_ANYBYTE,			/* 12 Match any byte (\C); different to OP_ANY for UTF-8 */
+    OP_NOTPROP,			/* 13 \P (not Unicode property) */
+    OP_PROP,			/* 14 \p (Unicode property) */
+    OP_EXTUNI,			/* 15 \X (extended Unicode sequence */
+    OP_EODN,			/* 16 End of data or \n at end of data: \Z. */
+    OP_EOD,			/* 17 End of data: \z */
+
+    OP_OPT,			/* 18 Set runtime options */
+    OP_CIRC,			/* 19 Start of line - varies with multiline switch */
+    OP_DOLL,			/* 20 End of line - varies with multiline switch */
+    OP_CHAR,			/* 21 Match one character, casefully */
+    OP_CHARNC,			/* 22 Match one character, caselessly */
+    OP_NOT,			/* 23 Match anything but the following char */
+
+    OP_STAR,			/* 24 The maximizing and minimizing versions of */
+    OP_MINSTAR,			/* 25 all these opcodes must come in pairs, with */
+    OP_PLUS,			/* 26 the minimizing one second. */
+    OP_MINPLUS,			/* 27 This first set applies to single characters */
+    OP_QUERY,			/* 28 */
+    OP_MINQUERY,		/* 29 */
+    OP_UPTO,			/* 30 From 0 to n matches */
+    OP_MINUPTO,			/* 31 */
+    OP_EXACT,			/* 32 Exactly n matches */
+
+    OP_NOTSTAR,			/* 33 The maximizing and minimizing versions of */
+    OP_NOTMINSTAR,		/* 34 all these opcodes must come in pairs, with */
+    OP_NOTPLUS,			/* 35 the minimizing one second. */
+    OP_NOTMINPLUS,		/* 36 This set applies to "not" single characters */
+    OP_NOTQUERY,		/* 37 */
+    OP_NOTMINQUERY,		/* 38 */
+    OP_NOTUPTO,			/* 39 From 0 to n matches */
+    OP_NOTMINUPTO,		/* 40 */
+    OP_NOTEXACT,		/* 41 Exactly n matches */
+
+    OP_TYPESTAR,		/* 42 The maximizing and minimizing versions of */
+    OP_TYPEMINSTAR,		/* 43 all these opcodes must come in pairs, with */
+    OP_TYPEPLUS,		/* 44 the minimizing one second. These codes must */
+    OP_TYPEMINPLUS,		/* 45 be in exactly the same order as those above. */
+    OP_TYPEQUERY,		/* 46 This set applies to character types such as \d */
+    OP_TYPEMINQUERY,		/* 47 */
+    OP_TYPEUPTO,		/* 48 From 0 to n matches */
+    OP_TYPEMINUPTO,		/* 49 */
+    OP_TYPEEXACT,		/* 50 Exactly n matches */
+
+    OP_CRSTAR,			/* 51 The maximizing and minimizing versions of */
+    OP_CRMINSTAR,		/* 52 all these opcodes must come in pairs, with */
+    OP_CRPLUS,			/* 53 the minimizing one second. These codes must */
+    OP_CRMINPLUS,		/* 54 be in exactly the same order as those above. */
+    OP_CRQUERY,			/* 55 These are for character classes and back refs */
+    OP_CRMINQUERY,		/* 56 */
+    OP_CRRANGE,			/* 57 These are different to the three sets above. */
+    OP_CRMINRANGE,		/* 58 */
+
+    OP_CLASS,			/* 59 Match a character class, chars < 256 only */
+    OP_NCLASS,			/* 60 Same, but the bitmap was created from a negative
+				   class - the difference is relevant only when a UTF-8
+				   character > 255 is encountered. */
+
+    OP_XCLASS,			/* 61 Extended class for handling UTF-8 chars within the
+				   class. This does both positive and negative. */
+
+    OP_REF,			/* 62 Match a back reference */
+    OP_RECURSE,			/* 63 Match a numbered subpattern (possibly recursive) */
+    OP_CALLOUT,			/* 64 Call out to external function if provided */
+
+    OP_ALT,			/* 65 Start of alternation */
+    OP_KET,			/* 66 End of group that doesn't have an unbounded repeat */
+    OP_KETRMAX,			/* 67 These two must remain together and in this */
+    OP_KETRMIN,			/* 68 order. They are for groups the repeat for ever. */
+
+    /* The assertions must come before ONCE and COND */
+
+    OP_ASSERT,			/* 69 Positive lookahead */
+    OP_ASSERT_NOT,		/* 70 Negative lookahead */
+    OP_ASSERTBACK,		/* 71 Positive lookbehind */
+    OP_ASSERTBACK_NOT,		/* 72 Negative lookbehind */
+    OP_REVERSE,			/* 73 Move pointer back - used in lookbehind assertions */
+
+    /* ONCE and COND must come after the assertions, with ONCE first, as there's
+       a test for >= ONCE for a subpattern that isn't an assertion. */
+
+    OP_ONCE,			/* 74 Once matched, don't back up into the subpattern */
+    OP_COND,			/* 75 Conditional group */
+    OP_CREF,			/* 76 Used to hold an extraction string number (cond ref) */
+
+    OP_BRAZERO,			/* 77 These two must remain together and in this */
+    OP_BRAMINZERO,		/* 78 order. */
+
+    OP_BRANUMBER,		/* 79 Used for extracting brackets whose number is greater
+				   than can fit into an opcode. */
+
+    OP_BRA			/* 80 This and greater values are used for brackets that
+				   extract substrings up to EXTRACT_BASIC_MAX. After
+				   that, use is made of OP_BRANUMBER. */
+};
+
+/* WARNING WARNING WARNING: There is an implicit assumption in pcre.c and
+   study.c that all opcodes are less than 128 in value. This makes handling UTF-8
+   character sequences easier. */
+
+/* The highest extraction number before we have to start using additional
+   bytes. (Originally PCRE didn't have support for extraction counts highter than
+   this number.) The value is limited by the number of opcodes left after OP_BRA,
+   i.e. 255 - OP_BRA. We actually set it a bit lower to leave room for additional
+   opcodes. */
+
+#define EXTRACT_BASIC_MAX  100
+
+
+/* This macro defines textual names for all the opcodes. There are used only
+   for debugging, in pcre.c when DEBUG is defined, and also in pcretest.c. The
+   macro is referenced only in printint.c. */
+
+#define OP_NAME_LIST \
+  "End", "\\A", "\\G", "\\B", "\\b", "\\D", "\\d",                \
+  "\\S", "\\s", "\\W", "\\w", "Any", "Anybyte",                   \
+  "notprop", "prop", "extuni",                                    \
+  "\\Z", "\\z",                                                   \
+  "Opt", "^", "$", "char", "charnc", "not",                       \
+  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
+  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
+  "*", "*?", "+", "+?", "?", "??", "{", "{", "{",                 \
+  "*", "*?", "+", "+?", "?", "??", "{", "{",                      \
+  "class", "nclass", "xclass", "Ref", "Recurse", "Callout",       \
+  "Alt", "Ket", "KetRmax", "KetRmin", "Assert", "Assert not",     \
+  "AssertB", "AssertB not", "Reverse", "Once", "Cond", "Cond ref",\
+  "Brazero", "Braminzero", "Branumber", "Bra"
+
+
+/* This macro defines the length of fixed length operations in the compiled
+   regex. The lengths are used when searching for specific things, and also in the
+   debugging printing of a compiled regex. We use a macro so that it can be
+   incorporated both into pcre.c and pcretest.c without being publicly exposed.
+
+   As things have been extended, some of these are no longer fixed lenths, but are
+   minima instead. For example, the length of a single-character repeat may vary
+   in UTF-8 mode. The code that uses this table must know about such things. */
+
+#define OP_LENGTHS \
+  1,                             /* End                                    */ \
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  /* \A, \G, \B, \B, \D, \d, \S, \s, \W, \w */ \
+  1, 1,                          /* Any, Anybyte                           */ \
+  2, 2, 1,                       /* NOTPROP, PROP, EXTUNI                  */ \
+  1, 1, 2, 1, 1,                 /* \Z, \z, Opt, ^, $                      */ \
+  2,                             /* Char  - the minimum length             */ \
+  2,                             /* Charnc  - the minimum length           */ \
+  2,                             /* not                                    */ \
+  /* Positive single-char repeats                            ** These are  */ \
+  2, 2, 2, 2, 2, 2,              /* *, *?, +, +?, ?, ??      ** minima in  */ \
+  4, 4, 4,                       /* upto, minupto, exact     ** UTF-8 mode */ \
+  /* Negative single-char repeats - only for chars < 256                   */ \
+  2, 2, 2, 2, 2, 2,              /* NOT *, *?, +, +?, ?, ??                */ \
+  4, 4, 4,                       /* NOT upto, minupto, exact               */ \
+  /* Positive type repeats                                                 */ \
+  2, 2, 2, 2, 2, 2,              /* Type *, *?, +, +?, ?, ??               */ \
+  4, 4, 4,                       /* Type upto, minupto, exact              */ \
+  /* Character class & ref repeats                                         */ \
+  1, 1, 1, 1, 1, 1,              /* *, *?, +, +?, ?, ??                    */ \
+  5, 5,                          /* CRRANGE, CRMINRANGE                    */ \
+ 33,                             /* CLASS                                  */ \
+ 33,                             /* NCLASS                                 */ \
+  0,                             /* XCLASS - variable length               */ \
+  3,                             /* REF                                    */ \
+  1+LINK_SIZE,                   /* RECURSE                                */ \
+  2+2*LINK_SIZE,                 /* CALLOUT                                */ \
+  1+LINK_SIZE,                   /* Alt                                    */ \
+  1+LINK_SIZE,                   /* Ket                                    */ \
+  1+LINK_SIZE,                   /* KetRmax                                */ \
+  1+LINK_SIZE,                   /* KetRmin                                */ \
+  1+LINK_SIZE,                   /* Assert                                 */ \
+  1+LINK_SIZE,                   /* Assert not                             */ \
+  1+LINK_SIZE,                   /* Assert behind                          */ \
+  1+LINK_SIZE,                   /* Assert behind not                      */ \
+  1+LINK_SIZE,                   /* Reverse                                */ \
+  1+LINK_SIZE,                   /* Once                                   */ \
+  1+LINK_SIZE,                   /* COND                                   */ \
+  3,                             /* CREF                                   */ \
+  1, 1,                          /* BRAZERO, BRAMINZERO                    */ \
+  3,                             /* BRANUMBER                              */ \
+  1+LINK_SIZE                    /* BRA                                    */ \
+
+
+/* A magic value for OP_CREF to indicate the "in recursion" condition. */
+
+#define CREF_RECURSE  0xffff
+
+/* The texts of compile-time error messages are defined as macros here so that
+   they can be accessed by the POSIX wrapper and converted into error codes.  Yes,
+   I could have used error codes in the first place, but didn't feel like changing
+   just to accommodate the POSIX wrapper. */
+
+#define ERR1  "\\ at end of pattern"
+#define ERR2  "\\c at end of pattern"
+#define ERR3  "unrecognized character follows \\"
+#define ERR4  "numbers out of order in {} quantifier"
+#define ERR5  "number too big in {} quantifier"
+#define ERR6  "missing terminating ] for character class"
+#define ERR7  "invalid escape sequence in character class"
+#define ERR8  "range out of order in character class"
+#define ERR9  "nothing to repeat"
+#define ERR10 "operand of unlimited repeat could match the empty string"
+#define ERR11 "internal error: unexpected repeat"
+#define ERR12 "unrecognized character after (?"
+#define ERR13 "POSIX named classes are supported only within a class"
+#define ERR14 "missing )"
+#define ERR15 "reference to non-existent subpattern"
+#define ERR16 "erroffset passed as NULL"
+#define ERR17 "unknown option bit(s) set"
+#define ERR18 "missing ) after comment"
+#define ERR19 "parentheses nested too deeply"
+#define ERR20 "regular expression too large"
+#define ERR21 "failed to get memory"
+#define ERR22 "unmatched parentheses"
+#define ERR23 "internal error: code overflow"
+#define ERR24 "unrecognized character after (?<"
+#define ERR25 "lookbehind assertion is not fixed length"
+#define ERR26 "malformed number after (?("
+#define ERR27 "conditional group contains more than two branches"
+#define ERR28 "assertion expected after (?("
+#define ERR29 "(?R or (?digits must be followed by )"
+#define ERR30 "unknown POSIX class name"
+#define ERR31 "POSIX collating elements are not supported"
+#define ERR32 "this version of PCRE is not compiled with PCRE_UTF8 support"
+#define ERR33 "spare error"
+#define ERR34 "character value in \\x{...} sequence is too large"
+#define ERR35 "invalid condition (?(0)"
+#define ERR36 "\\C not allowed in lookbehind assertion"
+#define ERR37 "PCRE does not support \\L, \\l, \\N, \\U, or \\u"
+#define ERR38 "number after (?C is > 255"
+#define ERR39 "closing ) for (?C expected"
+#define ERR40 "recursive call could loop indefinitely"
+#define ERR41 "unrecognized character after (?P"
+#define ERR42 "syntax error after (?P"
+#define ERR43 "two named groups have the same name"
+#define ERR44 "invalid UTF-8 string"
+#define ERR45 "support for \\P, \\p, and \\X has not been compiled"
+#define ERR46 "malformed \\P or \\p sequence"
+#define ERR47 "unknown property name after \\P or \\p"
+
+/* The real format of the start of the pcre block; the index of names and the
+   code vector run on as long as necessary after the end. We store an explicit
+   offset to the name table so that if a regex is compiled on one host, saved, and
+   then run on another where the size of pointers is different, all might still
+   be well. For the case of compiled-on-4 and run-on-8, we include an extra
+   pointer that is always NULL. For future-proofing, we also include a few dummy
+   fields - even though you can never get this planning right!
+
+   NOTE NOTE NOTE:
+   Because people can now save and re-use compiled patterns, any additions to this
+   structure should be made at the end, and something earlier (e.g. a new
+   flag in the options or one of the dummy fields) should indicate that the new
+   fields are present. Currently PCRE always sets the dummy fields to zero.
+   NOTE NOTE NOTE:
+ */
+
+typedef struct real_pcre {
+    pcre_uint32 magic_number;
+    pcre_uint32 size;		/* Total that was malloced */
+    pcre_uint32 options;
+    pcre_uint32 dummy1;		/* For future use, maybe */
+
+    pcre_uint16 top_bracket;
+    pcre_uint16 top_backref;
+    pcre_uint16 first_byte;
+    pcre_uint16 req_byte;
+    pcre_uint16 name_table_offset;	/* Offset to name table that follows */
+    pcre_uint16 name_entry_size;	/* Size of any name items */
+    pcre_uint16 name_count;	/* Number of name items */
+    pcre_uint16 dummy2;		/* For future use, maybe */
+
+    const unsigned char *tables;	/* Pointer to tables or NULL for std */
+    const unsigned char *nullpad;	/* NULL padding */
+} real_pcre;
+
+/* The format of the block used to store data from pcre_study(). The same
+   remark (see NOTE above) about extending this structure applies. */
+
+typedef struct pcre_study_data {
+    pcre_uint32 size;		/* Total that was malloced */
+    pcre_uint32 options;
+    uschar start_bits[32];
+} pcre_study_data;
+
+/* Structure for passing "static" information around between the functions
+   doing the compiling, so that they are thread-safe. */
+
+typedef struct compile_data {
+    const uschar *lcc;		/* Points to lower casing table */
+    const uschar *fcc;		/* Points to case-flipping table */
+    const uschar *cbits;	/* Points to character type table */
+    const uschar *ctypes;	/* Points to table of type maps */
+    const uschar *start_code;	/* The start of the compiled code */
+    const uschar *start_pattern;	/* The start of the pattern */
+    uschar *name_table;		/* The name/number table */
+    int names_found;		/* Number of entries so far */
+    int name_entry_size;	/* Size of each entry */
+    int top_backref;		/* Maximum back reference */
+    unsigned int backref_map;	/* Bitmap of low back refs */
+    int req_varyopt;		/* "After variable item" flag for reqbyte */
+    BOOL nopartial;		/* Set TRUE if partial won't work */
+} compile_data;
+
+/* Structure for maintaining a chain of pointers to the currently incomplete
+   branches, for testing for left recursion. */
+
+typedef struct branch_chain {
+    struct branch_chain *outer;
+    uschar *current;
+} branch_chain;
+
+/* Structure for items in a linked list that represents an explicit recursive
+   call within the pattern. */
+
+typedef struct recursion_info {
+    struct recursion_info *prevrec;	/* Previous recursion record (or NULL) */
+    int group_num;		/* Number of group that was called */
+    const uschar *after_call;	/* "Return value": points after the call in the expr */
+    const uschar *save_start;	/* Old value of md->start_match */
+    int *offset_save;		/* Pointer to start of saved offsets */
+    int saved_max;		/* Number of saved offsets */
+} recursion_info;
+
+/* When compiling in a mode that doesn't use recursive calls to match(),
+   a structure is used to remember local variables on the heap. It is defined in
+   pcre.c, close to the match() function, so that it is easy to keep it in step
+   with any changes of local variable. However, the pointer to the current frame
+   must be saved in some "static" place over a longjmp(). We declare the
+   structure here so that we can put a pointer in the match_data structure.
+   NOTE: This isn't used for a "normal" compilation of pcre. */
+
+struct heapframe;
+
+/* Structure for passing "static" information around between the functions
+   doing the matching, so that they are thread-safe. */
+
+typedef struct match_data {
+    unsigned long int match_call_count;	/* As it says */
+    unsigned long int match_limit;	/* As it says */
+    int *offset_vector;		/* Offset vector */
+    int offset_end;		/* One past the end */
+    int offset_max;		/* The maximum usable for return data */
+    const uschar *lcc;		/* Points to lower casing table */
+    const uschar *ctypes;	/* Points to table of type maps */
+    BOOL offset_overflow;	/* Set if too many extractions */
+    BOOL notbol;		/* NOTBOL flag */
+    BOOL noteol;		/* NOTEOL flag */
+    BOOL utf8;			/* UTF8 flag */
+    BOOL endonly;		/* Dollar not before final \n */
+    BOOL notempty;		/* Empty string match not wanted */
+    BOOL partial;		/* PARTIAL flag */
+    BOOL hitend;		/* Hit the end of the subject at some point */
+    const uschar *start_code;	/* For use when recursing */
+    const uschar *start_subject;	/* Start of the subject string */
+    const uschar *end_subject;	/* End of the subject string */
+    const uschar *start_match;	/* Start of this match attempt */
+    const uschar *end_match_ptr;	/* Subject position at end match */
+    int end_offset_top;		/* Highwater mark at end of match */
+    int capture_last;		/* Most recent capture number */
+    int start_offset;		/* The start offset value */
+    recursion_info *recursive;	/* Linked list of recursion data */
+    void *callout_data;		/* To pass back to callouts */
+    struct heapframe *thisframe;	/* Used only when compiling for no recursion */
+} match_data;
+
+/* Bit definitions for entries in the pcre_ctypes table. */
+
+#define ctype_space   0x01
+#define ctype_letter  0x02
+#define ctype_digit   0x04
+#define ctype_xdigit  0x08
+#define ctype_word    0x10	/* alphameric or '_' */
+#define ctype_meta    0x80	/* regexp meta char or zero (end pattern) */
+
+/* Offsets for the bitmap tables in pcre_cbits. Each table contains a set
+   of bits for a class map. Some classes are built by combining these tables. */
+
+#define cbit_space     0	/* [:space:] or \s */
+#define cbit_xdigit   32	/* [:xdigit:] */
+#define cbit_digit    64	/* [:digit:] or \d */
+#define cbit_upper    96	/* [:upper:] */
+#define cbit_lower   128	/* [:lower:] */
+#define cbit_word    160	/* [:word:] or \w */
+#define cbit_graph   192	/* [:graph:] */
+#define cbit_print   224	/* [:print:] */
+#define cbit_punct   256	/* [:punct:] */
+#define cbit_cntrl   288	/* [:cntrl:] */
+#define cbit_length  320	/* Length of the cbits table */
+
+/* Offsets of the various tables from the base tables pointer, and
+   total length. */
+
+#define lcc_offset      0
+#define fcc_offset    256
+#define cbits_offset  512
+#define ctypes_offset (cbits_offset + cbit_length)
+#define tables_length (ctypes_offset + 256)
+
+/* End of internal.h */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/maketables.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/maketables.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/maketables.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,168 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see below.  */
+
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/*
+   PCRE is a library of functions to support regular expressions whose syntax
+   and semantics are as close as possible to those of the Perl 5 language.
+
+   Written by: Philip Hazel <ph10 at cam.ac.uk>
+
+   Copyright (c) 1997-2003 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+
+/* This file is compiled on its own as part of the PCRE library. However,
+   it is also included in the compilation of dftables.c, in which case the macro
+   DFTABLES is defined. */
+
+#ifndef DFTABLES
+#include <goffice/goffice-config.h>
+#include "internal.h"
+#include <glib.h>
+#endif
+
+
+
+/*************************************************
+*           Create PCRE character tables         *
+*************************************************/
+
+/* This function builds a set of character tables for use by PCRE and returns
+   a pointer to them. They are build using the ctype functions, and consequently
+   their contents will depend upon the current locale setting. When compiled as
+   part of the library, the store is obtained via pcre_malloc(), but when compiled
+   inside dftables, use malloc().
+
+   Arguments:   none
+   Returns:     pointer to the contiguous block of data
+ */
+
+const unsigned char *
+pcre_maketables (void)
+{
+    unsigned char *yield, *p;
+    int i;
+
+#ifndef DFTABLES
+    yield = (unsigned char *) (pcre_malloc) (tables_length);
+#else
+    yield = (unsigned char *) malloc (tables_length);
+#endif
+
+    if (yield == NULL)
+	return NULL;
+    p = yield;
+
+    /* First comes the lower casing table */
+
+    for (i = 0; i < 256; i++)
+	*p++ = g_unichar_tolower (i);
+
+    /* Next the case-flipping table */
+
+    for (i = 0; i < 256; i++)
+	*p++ =
+	    g_unichar_islower (i) ? g_unichar_toupper (i) :
+	    g_unichar_tolower (i);
+
+    /* Then the character class tables. Don't try to be clever and save effort
+       on exclusive ones - in some locales things may be different. Note that the
+       table for "space" includes everything "g_unichar_isspace" gives, including VT in the
+       default locale. This makes it work for the POSIX class [:space:]. */
+
+    memset (p, 0, cbit_length);
+    for (i = 0; i < 256; i++) {
+	if (g_unichar_isdigit (i)) {
+	    p[cbit_digit + i / 8] |= 1 << (i & 7);
+	    p[cbit_word + i / 8] |= 1 << (i & 7);
+	}
+	if (g_unichar_isupper (i)) {
+	    p[cbit_upper + i / 8] |= 1 << (i & 7);
+	    p[cbit_word + i / 8] |= 1 << (i & 7);
+	}
+	if (g_unichar_islower (i)) {
+	    p[cbit_lower + i / 8] |= 1 << (i & 7);
+	    p[cbit_word + i / 8] |= 1 << (i & 7);
+	}
+	if (i == '_')
+	    p[cbit_word + i / 8] |= 1 << (i & 7);
+	if (g_unichar_isspace (i))
+	    p[cbit_space + i / 8] |= 1 << (i & 7);
+	if (g_unichar_isxdigit (i))
+	    p[cbit_xdigit + i / 8] |= 1 << (i & 7);
+	if (g_unichar_isgraph (i))
+	    p[cbit_graph + i / 8] |= 1 << (i & 7);
+	if (g_unichar_isprint (i))
+	    p[cbit_print + i / 8] |= 1 << (i & 7);
+	if (g_unichar_ispunct (i))
+	    p[cbit_punct + i / 8] |= 1 << (i & 7);
+	if (g_unichar_iscntrl (i))
+	    p[cbit_cntrl + i / 8] |= 1 << (i & 7);
+    }
+    p += cbit_length;
+
+    /* Finally, the character type table. In this, we exclude VT from the white
+       space chars, because Perl doesn't recognize it as such for \s and for comments
+       within regexes. */
+
+    for (i = 0; i < 256; i++) {
+	int x = 0;
+	if (i != 0x0b && g_unichar_isspace (i))
+	    x += ctype_space;
+	if (g_unichar_isalpha (i))
+	    x += ctype_letter;
+	if (g_unichar_isdigit (i))
+	    x += ctype_digit;
+	if (g_unichar_isxdigit (i))
+	    x += ctype_xdigit;
+	if (g_unichar_isalnum (i) || i == '_')
+	    x += ctype_word;
+
+	/* Note: strchr includes the terminating zero in the characters it considers.
+	   In this instance, that is ok because we want binary zero to be flagged as a
+	   meta-character, which in this sense is any character that terminates a run
+	   of data characters. */
+
+	if (strchr ("*+?{^.$|()[", i) != 0)
+	    x += ctype_meta;
+	*p++ = x;
+    }
+
+    return yield;
+}
+
+/* End of maketables.c */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,9345 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see below.  */
+
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/*
+   This is a library of functions to support regular expressions whose syntax
+   and semantics are as close as possible to those of the Perl 5 language. See
+   the file Tech.Notes for some information on the internals.
+
+   Written by: Philip Hazel <ph10 at cam.ac.uk>
+
+   Copyright (c) 1997-2004 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+
+/* Define DEBUG to get debugging output on stdout. */
+/* #define DEBUG */
+
+/* Use a macro for debugging printing, 'cause that eliminates the use of #ifdef
+   inline, and there are *still* stupid compilers about that don't like indented
+   pre-processor statements. I suppose it's only been 10 years... */
+
+#ifdef DEBUG
+#define DPRINTF(p) printf p
+#else
+#define DPRINTF(p)		/*nothing */
+#endif
+
+/* Include the internals header, which itself includes "config.h", the Standard
+   C headers, and the external pcre header. */
+
+#include <goffice/goffice-config.h>
+#include "internal.h"
+#include <glib.h>
+
+/* If Unicode Property support is wanted, include a private copy of the
+   function that does it, and the table that translates names to numbers. */
+
+#ifdef SUPPORT_UCP
+#include "ucp.c"
+#include "ucptypetable.c"
+#endif
+
+/* Maximum number of items on the nested bracket stacks at compile time. This
+   applies to the nesting of all kinds of parentheses. It does not limit
+   un-nested, non-capturing parentheses. This number can be made bigger if
+   necessary - it is used to dimension one int and one unsigned char vector at
+   compile time. */
+
+#define BRASTACK_SIZE 200
+
+
+/* Maximum number of ints of offset to save on the stack for recursive calls.
+   If the offset vector is bigger, malloc is used. This should be a multiple of 3,
+   because the offset vector is always a multiple of 3 long. */
+
+#define REC_STACK_SAVE_MAX 30
+
+
+/* The maximum remaining length of subject we are prepared to search for a
+   req_byte match. */
+
+#define REQ_BYTE_MAX 1000
+
+
+/* Table of sizes for the fixed-length opcodes. It's defined in a macro so that
+   the definition is next to the definition of the opcodes in internal.h. */
+
+static const uschar OP_lengths[] = { OP_LENGTHS };
+
+/* Min and max values for the common repeats; for the maxima, 0 => infinity */
+
+static const char rep_min[] = { 0, 0, 1, 1, 0, 0 };
+static const char rep_max[] = { 0, 0, 0, 0, 1, 1 };
+
+/* Table for handling escaped characters in the range '0'-'z'. Positive returns
+   are simple data values; negative values are for special things like \d and so
+   on. Zero means further processing is needed (for things like \x), or the escape
+   is invalid. */
+
+#if !EBCDIC			/* This is the "normal" table for ASCII systems */
+static const short int escapes[] = {
+    0, 0, 0, 0, 0, 0, 0, 0,	/* 0 - 7 */
+    0, 0, ':', ';', '<', '=', '>', '?',	/* 8 - ? */
+    '@', -ESC_A, -ESC_B, -ESC_C, -ESC_D, -ESC_E, 0, -ESC_G,	/* @ - G */
+    0, 0, 0, 0, 0, 0, 0, 0,	/* H - O */
+    -ESC_P, -ESC_Q, 0, -ESC_S, 0, 0, 0, -ESC_W,	/* P - W */
+    -ESC_X, 0, -ESC_Z, '[', '\\', ']', '^', '_',	/* X - _ */
+    '`', 7, -ESC_b, 0, -ESC_d, ESC_e, ESC_f, 0,	/* ` - g */
+    0, 0, 0, 0, 0, 0, ESC_n, 0,	/* h - o */
+    -ESC_p, 0, ESC_r, -ESC_s, ESC_tee, 0, 0, -ESC_w,	/* p - w */
+    0, 0, -ESC_z		/* x - z */
+};
+
+#else				/* This is the "abnormal" table for EBCDIC systems */
+static const short int escapes[] = {
+    /*  48 */ 0, 0, 0, '.', '<', '(', '+', '|',
+    /*  50 */ '&', 0, 0, 0, 0, 0, 0, 0,
+    /*  58 */ 0, 0, '!', '$', '*', ')', ';', '~',
+    /*  60 */ '-', '/', 0, 0, 0, 0, 0, 0,
+    /*  68 */ 0, 0, '|', ',', '%', '_', '>', '?',
+    /*  70 */ 0, 0, 0, 0, 0, 0, 0, 0,
+    /*  78 */ 0, '`', ':', '#', '@', '\'', '=', '"',
+    /*  80 */ 0, 7, -ESC_b, 0, -ESC_d, ESC_e, ESC_f, 0,
+    /*  88 */ 0, 0, 0, '{', 0, 0, 0, 0,
+    /*  90 */ 0, 0, 0, 'l', 0, ESC_n, 0, -ESC_p,
+    /*  98 */ 0, ESC_r, 0, '}', 0, 0, 0, 0,
+    /*  A0 */ 0, '~', -ESC_s, ESC_tee, 0, 0, -ESC_w, 0,
+    /*  A8 */ 0, -ESC_z, 0, 0, 0, '[', 0, 0,
+    /*  B0 */ 0, 0, 0, 0, 0, 0, 0, 0,
+    /*  B8 */ 0, 0, 0, 0, 0, ']', '=', '-',
+    /*  C0 */ '{', -ESC_A, -ESC_B, -ESC_C, -ESC_D, -ESC_E, 0, -ESC_G,
+    /*  C8 */ 0, 0, 0, 0, 0, 0, 0, 0,
+    /*  D0 */ '}', 0, 0, 0, 0, 0, 0, -ESC_P,
+    /*  D8 */ -ESC_Q, 0, 0, 0, 0, 0, 0, 0,
+    /*  E0 */ '\\', 0, -ESC_S, 0, 0, 0, -ESC_W, -ESC_X,
+    /*  E8 */ 0, -ESC_Z, 0, 0, 0, 0, 0, 0,
+    /*  F0 */ 0, 0, 0, 0, 0, 0, 0, 0,
+    /*  F8 */ 0, 0, 0, 0, 0, 0, 0, 0
+};
+#endif
+
+
+/* Tables of names of POSIX character classes and their lengths. The list is
+   terminated by a zero length entry. The first three must be alpha, upper, lower,
+   as this is assumed for handling case independence. */
+
+static const char *const posix_names[] = {
+    "alpha", "lower", "upper",
+    "alnum", "ascii", "blank", "cntrl", "digit", "graph",
+    "print", "punct", "space", "word", "xdigit"
+};
+
+static const uschar posix_name_lengths[] = {
+    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 6, 0
+};
+
+/* Table of class bit maps for each POSIX class; up to three may be combined
+   to form the class. The table for [:blank:] is dynamically modified to remove
+   the vertical space characters. */
+
+static const int posix_class_maps[] = {
+    cbit_lower, cbit_upper, -1,	/* alpha */
+    cbit_lower, -1, -1,		/* lower */
+    cbit_upper, -1, -1,		/* upper */
+    cbit_digit, cbit_lower, cbit_upper,	/* alnum */
+    cbit_print, cbit_cntrl, -1,	/* ascii */
+    cbit_space, -1, -1,		/* blank - a GNU extension */
+    cbit_cntrl, -1, -1,		/* cntrl */
+    cbit_digit, -1, -1,		/* digit */
+    cbit_graph, -1, -1,		/* graph */
+    cbit_print, -1, -1,		/* print */
+    cbit_punct, -1, -1,		/* punct */
+    cbit_space, -1, -1,		/* space */
+    cbit_word, -1, -1,		/* word - a Perl extension */
+    cbit_xdigit, -1, -1		/* xdigit */
+};
+
+/* Table to identify digits and hex digits. This is used when compiling
+   patterns. Note that the tables in chartables are dependent on the locale, and
+   may mark arbitrary characters as digits - but the PCRE compiling code expects
+   to handle only 0-9, a-z, and A-Z as digits when compiling. That is why we have
+   a private table here. It costs 256 bytes, but it is a lot faster than doing
+   character value tests (at least in some simple cases I timed), and in some
+   applications one wants PCRE to compile efficiently as well as match
+   efficiently.
+
+   For convenience, we use the same bit definitions as in chartables:
+
+   0x04   decimal digit
+   0x08   hexadecimal digit
+
+   Then we can use ctype_digit and ctype_xdigit in the code. */
+
+#if !EBCDIC			/* This is the "normal" case, for ASCII systems */
+static const unsigned char digitab[] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*   0-  7 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*   8- 15 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  16- 23 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  24- 31 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*    - '  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  ( - /  */
+    0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,	/*  0 - 7  */
+    0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  8 - ?  */
+    0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,	/*  @ - G  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  H - O  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  P - W  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  X - _  */
+    0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,	/*  ` - g  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  h - o  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  p - w  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  x -127 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 128-135 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 136-143 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 144-151 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 152-159 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 160-167 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 168-175 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 176-183 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 184-191 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 192-199 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 200-207 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 208-215 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 216-223 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 224-231 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 232-239 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 240-247 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};				/* 248-255 */
+
+#else				/* This is the "abnormal" case, for EBCDIC systems */
+static const unsigned char digitab[] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*   0-  7  0 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*   8- 15    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  16- 23 10 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  24- 31    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  32- 39 20 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  40- 47    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  48- 55 30 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  56- 63    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*    - 71 40 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  72- |     */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  & - 87 50 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  88- ¬     */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  - -103 60 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 104- ?     */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 112-119 70 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 120- "     */
+    0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,	/* 128- g  80 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  h -143    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 144- p  90 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  q -159    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 160- x  A0 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  y -175    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  ^ -183 B0 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 184-191    */
+    0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,	/*  { - G  C0 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  H -207    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  } - P  D0 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  Q -223    */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  \ - X  E0 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  Y -239    */
+    0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,	/*  0 - 7  F0 */
+    0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};				/*  8 -255    */
+
+static const unsigned char ebcdic_chartab[] = {	/* chartable partial dup */
+    0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,	/*   0-  7 */
+    0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,	/*   8- 15 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,	/*  16- 23 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  24- 31 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,	/*  32- 39 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  40- 47 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  48- 55 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  56- 63 */
+    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*    - 71 */
+    0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80,	/*  72- |  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  & - 87 */
+    0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,	/*  88- ¬  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  - -103 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80,	/* 104- ?  */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 112-119 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 120- "  */
+    0x00, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x12,	/* 128- g  */
+    0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  h -143 */
+    0x00, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,	/* 144- p  */
+    0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  q -159 */
+    0x00, 0x00, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,	/* 160- x  */
+    0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  y -175 */
+    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  ^ -183 */
+    0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,	/* 184-191 */
+    0x80, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x12,	/*  { - G  */
+    0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  H -207 */
+    0x00, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,	/*  } - P  */
+    0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  Q -223 */
+    0x00, 0x00, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,	/*  \ - X  */
+    0x12, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/*  Y -239 */
+    0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,	/*  0 - 7  */
+    0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};				/*  8 -255 */
+#endif
+
+
+/* Definition to allow mutual recursion */
+
+static BOOL
+compile_regex (int, int, int *, uschar **, const uschar **, const char **,
+	       BOOL, int, int *, int *, branch_chain *, compile_data *);
+
+/* Structure for building a chain of data that actually lives on the
+   stack, for holding the values of the subject pointer at the start of each
+   subpattern, so as to detect when an empty string has been matched by a
+   subpattern - to break infinite loops. When NO_RECURSE is set, these blocks
+   are on the heap, not on the stack. */
+
+typedef struct eptrblock {
+    struct eptrblock *epb_prev;
+    const uschar *epb_saved_eptr;
+} eptrblock;
+
+/* Flag bits for the match() function */
+
+#define match_condassert   0x01	/* Called to check a condition assertion */
+#define match_isgroup      0x02	/* Set if start of bracketed group */
+
+/* Non-error returns from the match() function. Error returns are externally
+   defined PCRE_ERROR_xxx codes, which are all negative. */
+
+#define MATCH_MATCH        1
+#define MATCH_NOMATCH      0
+
+
+
+/*************************************************
+*               Global variables                 *
+*************************************************/
+
+/* PCRE is thread-clean and doesn't use any global variables in the normal
+   sense. However, it calls memory allocation and free functions via the four
+   indirections below, and it can optionally do callouts. These values can be
+   changed by the caller, but are shared between all threads. However, when
+   compiling for Virtual Pascal, things are done differently (see pcre.in). */
+
+#ifndef VPCOMPAT
+#ifdef __cplusplus
+extern "C" void *(*pcre_malloc) (size_t) = malloc;
+extern "C" void (*pcre_free) (void *) = free;
+extern "C" void *(*pcre_stack_malloc) (size_t) = malloc;
+extern "C" void (*pcre_stack_free) (void *) = free;
+extern "C" int (*pcre_callout) (pcre_callout_block *) = NULL;
+#else
+void *(*pcre_malloc) (size_t) = malloc;
+void (*pcre_free) (void *) = free;
+void *(*pcre_stack_malloc) (size_t) = malloc;
+void (*pcre_stack_free) (void *) = free;
+int (*pcre_callout) (pcre_callout_block *) = NULL;
+#endif
+#endif
+
+
+/*************************************************
+*    Macros and tables for character handling    *
+*************************************************/
+
+/* When UTF-8 encoding is being used, a character is no longer just a single
+   byte. The macros for character handling generate simple sequences when used in
+   byte-mode, and more complicated ones for UTF-8 characters. */
+
+#ifndef SUPPORT_UTF8
+#define GETCHAR(c, eptr) c = *eptr;
+#define GETCHARINC(c, eptr) c = *eptr++;
+#define GETCHARINCTEST(c, eptr) c = *eptr++;
+#define GETCHARLEN(c, eptr, len) c = *eptr;
+#define BACKCHAR(eptr)
+
+#else				/* SUPPORT_UTF8 */
+
+/* Get the next UTF-8 character, not advancing the pointer. This is called when
+   we know we are in UTF-8 mode. */
+
+#define GETCHAR(c, eptr) do { (c) = g_utf8_get_char (eptr); } while (0)
+
+/* Get the next UTF-8 character, advancing the pointer. This is called when we
+   know we are in UTF-8 mode. */
+
+#define GETCHARINC(c, eptr) do { GETCHAR(c,eptr); (eptr) = g_utf8_next_char (eptr); } while (0)
+
+/* Get the next character, testing for UTF-8 mode, and advancing the pointer */
+
+#define GETCHARINCTEST(c, eptr) do { GETCHAR(c,eptr); (eptr) = g_utf8_next_char (eptr); } while (0)
+
+/* Get the next UTF-8 character, not advancing the pointer, incrementing length
+   if there are extra bytes. This is called when we know we are in UTF-8 mode. */
+
+#define GETCHARLEN(c, eptr, len) do { GETCHAR(c,eptr); (len) += g_utf8_skip[(uschar)(*eptr)] - 1; } while (0)
+
+/* If the pointer is not at the start of a character, move it back until
+   it is. Called only in UTF-8 mode. */
+
+#define BACKCHAR(eptr) while((*eptr & 0xc0) == 0x80) eptr--;
+
+#endif
+
+
+
+/*************************************************
+*             Default character tables           *
+*************************************************/
+
+/* A default set of character tables is included in the PCRE binary. Its source
+   is built by the maketables auxiliary program, which uses the default C ctypes
+   functions, and put in the file chartables.c. These tables are used by PCRE
+   whenever the caller of pcre_compile() does not provide an alternate set of
+   tables. */
+
+static const unsigned char *
+make_pcre_default_tables (void)
+{
+    static const unsigned char *res = NULL;
+    if (res == NULL) {
+	res = pcre_maketables ();
+    }
+    return res;
+}
+
+/* #include "chartables.c" */
+
+
+
+#ifdef SUPPORT_UTF8
+/*************************************************
+*           Tables for UTF-8 support             *
+*************************************************/
+
+/* These are the breakpoints for different numbers of bytes in a UTF-8
+   character. */
+
+
+/* These are the indicator bits and the mask for the data bits to set in the
+   first byte of a character, indexed by the number of additional bytes. */
+
+
+/* Table of the number of extra characters, indexed by the first character
+   masked with 0x3f. The highest number for a valid UTF-8 character is in fact
+   0x3d. */
+
+static const uschar utf8_table4[] = {
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+    3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5
+};
+
+
+/*************************************************
+*       Convert character value to UTF-8         *
+*************************************************/
+
+/* This function takes an integer value in the range 0 - 0x7fffffff
+   and encodes it as a UTF-8 character in 0 to 6 bytes.
+
+   Arguments:
+   cvalue     the character value
+   buffer     pointer to buffer for result - at least 6 bytes long
+
+   Returns:     number of characters placed in the buffer
+ */
+
+#endif
+
+
+
+/*************************************************
+*         Print compiled regex                   *
+*************************************************/
+
+/* The code for doing this is held in a separate file that is also included in
+   pcretest.c. It defines a function called print_internals(). */
+
+#ifdef DEBUG
+/* #include "printint.c" */
+#endif
+
+
+
+/*************************************************
+*          Return version string                 *
+*************************************************/
+
+#define STRING(a)  # a
+#define XSTRING(s) STRING(s)
+
+const char *
+pcre_version (void)
+{
+    return XSTRING (PCRE_MAJOR) "." XSTRING (PCRE_MINOR) " "
+	XSTRING (PCRE_DATE);
+}
+
+
+
+
+/*************************************************
+*         Flip bytes in an integer               *
+*************************************************/
+
+/* This function is called when the magic number in a regex doesn't match in
+   order to flip its bytes to see if we are dealing with a pattern that was
+   compiled on a host of different endianness. If so, this function is used to
+   flip other byte values.
+
+   Arguments:
+   value        the number to flip
+   n            the number of bytes to flip (assumed to be 2 or 4)
+
+   Returns:       the flipped value
+ */
+
+static long int
+byteflip (long int value, int n)
+{
+    if (n == 2)
+	return ((value & 0x00ff) << 8) | ((value & 0xff00) >> 8);
+    return ((value & 0x000000ff) << 24) |
+	((value & 0x0000ff00) << 8) |
+	((value & 0x00ff0000) >> 8) | ((value & 0xff000000) >> 24);
+}
+
+
+
+/*************************************************
+*       Test for a byte-flipped compiled regex   *
+*************************************************/
+
+/* This function is called from pce_exec() and also from pcre_fullinfo(). Its
+   job is to test whether the regex is byte-flipped - that is, it was compiled on
+   a system of opposite endianness. The function is called only when the native
+   MAGIC_NUMBER test fails. If the regex is indeed flipped, we flip all the
+   relevant values into a different data block, and return it.
+
+   Arguments:
+   re               points to the regex
+   study            points to study data, or NULL
+   internal_re      points to a new regex block
+   internal_study   points to a new study block
+
+   Returns:           the new block if is is indeed a byte-flipped regex
+   NULL if it is not
+ */
+
+static real_pcre *
+try_flipped (const real_pcre * re, real_pcre * internal_re,
+	     const pcre_study_data * study,
+	     pcre_study_data * internal_study)
+{
+    if (byteflip (re->magic_number, sizeof (re->magic_number)) !=
+	MAGIC_NUMBER) return NULL;
+
+    *internal_re = *re;		/* To copy other fields */
+    internal_re->size = byteflip (re->size, sizeof (re->size));
+    internal_re->options = byteflip (re->options, sizeof (re->options));
+    internal_re->top_bracket =
+	byteflip (re->top_bracket, sizeof (re->top_bracket));
+    internal_re->top_backref =
+	byteflip (re->top_backref, sizeof (re->top_backref));
+    internal_re->first_byte =
+	byteflip (re->first_byte, sizeof (re->first_byte));
+    internal_re->req_byte = byteflip (re->req_byte, sizeof (re->req_byte));
+    internal_re->name_table_offset = byteflip (re->name_table_offset,
+					       sizeof (re->
+						       name_table_offset));
+    internal_re->name_entry_size =
+	byteflip (re->name_entry_size, sizeof (re->name_entry_size));
+    internal_re->name_count =
+	byteflip (re->name_count, sizeof (re->name_count));
+
+    if (study != NULL) {
+	*internal_study = *study;	/* To copy other fields */
+	internal_study->size =
+	    byteflip (study->size, sizeof (study->size));
+	internal_study->options =
+	    byteflip (study->options, sizeof (study->options));
+    }
+
+    return internal_re;
+}
+
+
+
+/*************************************************
+* (Obsolete) Return info about compiled pattern  *
+*************************************************/
+
+/* This is the original "info" function. It picks potentially useful data out
+   of the private structure, but its interface was too rigid. It remains for
+   backwards compatibility. The public options are passed back in an int - though
+   the re->options field has been expanded to a long int, all the public options
+   at the low end of it, and so even on 16-bit systems this will still be OK.
+   Therefore, I haven't changed the API for pcre_info().
+
+   Arguments:
+   argument_re   points to compiled code
+   optptr        where to pass back the options
+   first_byte    where to pass back the first character,
+   or -1 if multiline and all branches start ^,
+   or -2 otherwise
+
+   Returns:        number of capturing subpatterns
+   or negative values on error
+ */
+
+int
+pcre_info (const pcre * argument_re, int *optptr, int *first_byte)
+{
+    real_pcre internal_re;
+    const real_pcre *re = (const real_pcre *) argument_re;
+    if (re == NULL)
+	return PCRE_ERROR_NULL;
+    if (re->magic_number != MAGIC_NUMBER) {
+	re = try_flipped (re, &internal_re, NULL, NULL);
+	if (re == NULL)
+	    return PCRE_ERROR_BADMAGIC;
+    }
+    if (optptr != NULL)
+	*optptr = (int) (re->options & PUBLIC_OPTIONS);
+    if (first_byte != NULL)
+	*first_byte =
+	    ((re->options & PCRE_FIRSTSET) !=
+	     0) ? re->first_byte : ((re->options & PCRE_STARTLINE) !=
+				    0) ? -1 : -2;
+    return re->top_bracket;
+}
+
+
+
+/*************************************************
+*        Return info about compiled pattern      *
+*************************************************/
+
+/* This is a newer "info" function which has an extensible interface so
+   that additional items can be added compatibly.
+
+   Arguments:
+   argument_re      points to compiled code
+   extra_data       points extra data, or NULL
+   what             what information is required
+   where            where to put the information
+
+   Returns:           0 if data returned, negative on error
+ */
+
+int
+pcre_fullinfo (const pcre * argument_re, const pcre_extra * extra_data,
+	       int what, void *where)
+{
+    real_pcre internal_re;
+    pcre_study_data internal_study;
+    const real_pcre *re = (const real_pcre *) argument_re;
+    const pcre_study_data *study = NULL;
+
+    if (re == NULL || where == NULL)
+	return PCRE_ERROR_NULL;
+
+    if (extra_data != NULL
+	&& (extra_data->flags & PCRE_EXTRA_STUDY_DATA) != 0)
+	study = (const pcre_study_data *) extra_data->study_data;
+
+    if (re->magic_number != MAGIC_NUMBER) {
+	re = try_flipped (re, &internal_re, study, &internal_study);
+	if (re == NULL)
+	    return PCRE_ERROR_BADMAGIC;
+	if (study != NULL)
+	    study = &internal_study;
+    }
+
+    switch (what) {
+    case PCRE_INFO_OPTIONS:
+	*((unsigned long int *) where) = re->options & PUBLIC_OPTIONS;
+	break;
+
+    case PCRE_INFO_SIZE:
+	*((size_t *) where) = re->size;
+	break;
+
+    case PCRE_INFO_STUDYSIZE:
+	*((size_t *) where) = (study == NULL) ? 0 : study->size;
+	break;
+
+    case PCRE_INFO_CAPTURECOUNT:
+	*((int *) where) = re->top_bracket;
+	break;
+
+    case PCRE_INFO_BACKREFMAX:
+	*((int *) where) = re->top_backref;
+	break;
+
+    case PCRE_INFO_FIRSTBYTE:
+	*((int *) where) =
+	    ((re->options & PCRE_FIRSTSET) != 0) ? re->first_byte :
+	    ((re->options & PCRE_STARTLINE) != 0) ? -1 : -2;
+	break;
+
+	/* Make sure we pass back the pointer to the bit vector in the external
+	   block, not the internal copy (with flipped integer fields). */
+
+    case PCRE_INFO_FIRSTTABLE:
+	*((const uschar **) where) =
+	    (study != NULL && (study->options & PCRE_STUDY_MAPPED) != 0) ?
+	    ((const pcre_study_data *) extra_data->study_data)->
+	    start_bits : NULL;
+	break;
+
+    case PCRE_INFO_LASTLITERAL:
+	*((int *) where) =
+	    ((re->options & PCRE_REQCHSET) != 0) ? re->req_byte : -1;
+	break;
+
+    case PCRE_INFO_NAMEENTRYSIZE:
+	*((int *) where) = re->name_entry_size;
+	break;
+
+    case PCRE_INFO_NAMECOUNT:
+	*((int *) where) = re->name_count;
+	break;
+
+    case PCRE_INFO_NAMETABLE:
+	*((const uschar **) where) =
+	    (const uschar *) re + re->name_table_offset;
+	break;
+
+    case PCRE_INFO_DEFAULT_TABLES:
+	*((const uschar **) where) =
+	    (const uschar *) make_pcre_default_tables ();
+	break;
+
+    default:
+	return PCRE_ERROR_BADOPTION;
+    }
+
+    return 0;
+}
+
+
+
+/*************************************************
+* Return info about what features are configured *
+*************************************************/
+
+/* This is function which has an extensible interface so that additional items
+   can be added compatibly.
+
+   Arguments:
+   what             what information is required
+   where            where to put the information
+
+   Returns:           0 if data returned, negative on error
+ */
+
+int
+pcre_config (int what, void *where)
+{
+    switch (what) {
+    case PCRE_CONFIG_UTF8:
+#ifdef SUPPORT_UTF8
+	*((int *) where) = 1;
+#else
+	*((int *) where) = 0;
+#endif
+	break;
+
+    case PCRE_CONFIG_UNICODE_PROPERTIES:
+#ifdef SUPPORT_UCP
+	*((int *) where) = 1;
+#else
+	*((int *) where) = 0;
+#endif
+	break;
+
+    case PCRE_CONFIG_NEWLINE:
+	*((int *) where) = NEWLINE;
+	break;
+
+    case PCRE_CONFIG_LINK_SIZE:
+	*((int *) where) = LINK_SIZE;
+	break;
+
+    case PCRE_CONFIG_POSIX_MALLOC_THRESHOLD:
+	*((int *) where) = POSIX_MALLOC_THRESHOLD;
+	break;
+
+    case PCRE_CONFIG_MATCH_LIMIT:
+	*((unsigned int *) where) = MATCH_LIMIT;
+	break;
+
+    case PCRE_CONFIG_STACKRECURSE:
+#ifdef NO_RECURSE
+	*((int *) where) = 0;
+#else
+	*((int *) where) = 1;
+#endif
+	break;
+
+    default:
+	return PCRE_ERROR_BADOPTION;
+    }
+
+    return 0;
+}
+
+
+
+#ifdef DEBUG
+/*************************************************
+*        Debugging function to print chars       *
+*************************************************/
+
+/* Print a sequence of chars in printable format, stopping at the end of the
+   subject if the requested.
+
+   Arguments:
+   p           points to characters
+   length      number to print
+   is_subject  TRUE if printing from within md->start_subject
+   md          pointer to matching data block, if is_subject is TRUE
+
+   Returns:     nothing
+ */
+
+static void
+pchars (const uschar * p, int length, BOOL is_subject, match_data * md)
+{
+    int c;
+    if (is_subject && length > md->end_subject - p)
+	length = md->end_subject - p;
+    while (length-- > 0)
+	if (g_unichar_isprint (c = *(p++)))
+	    printf ("%c", c);
+	else
+	    printf ("\\x%02x", c);
+}
+#endif
+
+
+
+
+/*************************************************
+*            Handle escapes                      *
+*************************************************/
+
+/* This function is called when a \ has been encountered. It either returns a
+   positive value for a simple escape such as \n, or a negative value which
+   encodes one of the more complicated things such as \d. When UTF-8 is enabled,
+   a positive value greater than 255 may be returned. On entry, ptr is pointing at
+   the \. On exit, it is on the final character of the escape sequence.
+
+   Arguments:
+   ptrptr     points to the pattern position pointer
+   errorptr   points to the pointer to the error message
+   bracount   number of previous extracting brackets
+   options    the options bits
+   isclass    TRUE if inside a character class
+
+   Returns:     zero or positive => a data character
+   negative => a special escape sequence
+   on error, errorptr is set
+ */
+
+static int
+check_escape (const uschar ** ptrptr, const char **errorptr, int bracount,
+	      int options, BOOL isclass)
+{
+    const uschar *ptr = *ptrptr;
+    int c, i;
+
+    /* If backslash is at the end of the pattern, it's an error. */
+
+    c = *(++ptr);
+    if (c == 0)
+	*errorptr = ERR1;
+
+    /* Non-alphamerics are literals. For digits or letters, do an initial lookup in
+       a table. A non-zero result is something that can be returned immediately.
+       Otherwise further processing may be required. */
+
+#if !EBCDIC			/* ASCII coding */
+    else if (c < '0' || c > 'z') {
+    } /* Not alphameric */
+    else if ((i = escapes[c - '0']) != 0)
+	c = i;
+
+#else				/* EBCDIC coding */
+    else if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {
+    } /* Not alphameric */
+    else if ((i = escapes[c - 0x48]) != 0)
+	c = i;
+#endif
+
+    /* Escapes that need further processing, or are illegal. */
+
+    else {
+	const uschar *oldptr;
+	switch (c) {
+	    /* A number of Perl escapes are not handled by PCRE. We give an explicit
+	       error. */
+
+	case 'l':
+	case 'L':
+	case 'N':
+	case 'u':
+	case 'U':
+	    *errorptr = ERR37;
+	    break;
+
+	    /* The handling of escape sequences consisting of a string of digits
+	       starting with one that is not zero is not straightforward. By experiment,
+	       the way Perl works seems to be as follows:
+
+	       Outside a character class, the digits are read as a decimal number. If the
+	       number is less than 10, or if there are that many previous extracting
+	       left brackets, then it is a back reference. Otherwise, up to three octal
+	       digits are read to form an escaped byte. Thus \123 is likely to be octal
+	       123 (cf \0123, which is octal 012 followed by the literal 3). If the octal
+	       value is greater than 377, the least significant 8 bits are taken. Inside a
+	       character class, \ followed by a digit is always an octal number. */
+
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+	case '8':
+	case '9':
+
+	    if (!isclass) {
+		oldptr = ptr;
+		c -= '0';
+		while ((digitab[ptr[1]] & ctype_digit) != 0)
+		    c = c * 10 + *(++ptr) - '0';
+		if (c < 10 || c <= bracount) {
+		    c = -(ESC_REF + c);
+		    break;
+		}
+		ptr = oldptr;	/* Put the pointer back and fall through */
+	    }
+
+	    /* Handle an octal number following \. If the first digit is 8 or 9, Perl
+	       generates a binary zero byte and treats the digit as a following literal.
+	       Thus we have to pull back the pointer by one. */
+
+	    if ((c = *ptr) >= '8') {
+		ptr--;
+		c = 0;
+		break;
+	    }
+
+	    /* \0 always starts an octal number, but we may drop through to here with a
+	       larger first octal digit. */
+
+	case '0':
+	    c -= '0';
+	    while (i++ < 2 && ptr[1] >= '0' && ptr[1] <= '7')
+		c = c * 8 + *(++ptr) - '0';
+	    c &= 255;		/* Take least significant 8 bits */
+	    break;
+
+	    /* \x is complicated when UTF-8 is enabled. \x{ddd} is a character number
+	       which can be greater than 0xff, but only if the ddd are hex digits. */
+
+	case 'x':
+#ifdef SUPPORT_UTF8
+	    if (ptr[1] == '{' && (options & PCRE_UTF8) != 0) {
+		const uschar *pt = ptr + 2;
+		register int count = 0;
+		c = 0;
+		while ((digitab[*pt] & ctype_xdigit) != 0) {
+		    int cc = *pt++;
+		    count++;
+#if !EBCDIC			/* ASCII coding */
+		    if (cc >= 'a')
+			cc -= 32;	/* Convert to upper case */
+		    c = c * 16 + cc - ((cc < 'A') ? '0' : ('A' - 10));
+#else				/* EBCDIC coding */
+		    if (cc >= 'a' && cc <= 'z')
+			cc += 64;	/* Convert to upper case */
+		    c = c * 16 + cc - ((cc >= '0') ? '0' : ('A' - 10));
+#endif
+		}
+		if (*pt == '}') {
+		    if (c < 0 || count > 8)
+			*errorptr = ERR34;
+		    ptr = pt;
+		    break;
+		}
+		/* If the sequence of hex digits does not end with '}', then we don't
+		   recognize this construct; fall through to the normal \x handling. */
+	    }
+#endif
+
+	    /* Read just a single hex char */
+
+	    c = 0;
+	    while (i++ < 2 && (digitab[ptr[1]] & ctype_xdigit) != 0) {
+		int cc;		/* Some compilers don't like ++ */
+		cc = *(++ptr);	/* in initializers */
+#if !EBCDIC			/* ASCII coding */
+		if (cc >= 'a')
+		    cc -= 32;	/* Convert to upper case */
+		c = c * 16 + cc - ((cc < 'A') ? '0' : ('A' - 10));
+#else				/* EBCDIC coding */
+		if (cc <= 'z')
+		    cc += 64;	/* Convert to upper case */
+		c = c * 16 + cc - ((cc >= '0') ? '0' : ('A' - 10));
+#endif
+	    }
+	    break;
+
+	    /* Other special escapes not starting with a digit are straightforward */
+
+	case 'c':
+	    c = *(++ptr);
+	    if (c == 0) {
+		*errorptr = ERR2;
+		return 0;
+	    }
+
+	    /* A letter is upper-cased; then the 0x40 bit is flipped. This coding
+	       is ASCII-specific, but then the whole concept of \cx is ASCII-specific.
+	       (However, an EBCDIC equivalent has now been added.) */
+
+#if !EBCDIC			/* ASCII coding */
+	    if (c >= 'a' && c <= 'z')
+		c -= 32;
+	    c ^= 0x40;
+#else				/* EBCDIC coding */
+	    if (c >= 'a' && c <= 'z')
+		c += 64;
+	    c ^= 0xC0;
+#endif
+	    break;
+
+	    /* PCRE_EXTRA enables extensions to Perl in the matter of escapes. Any
+	       other alphameric following \ is an error if PCRE_EXTRA was set; otherwise,
+	       for Perl compatibility, it is a literal. This code looks a bit odd, but
+	       there used to be some cases other than the default, and there may be again
+	       in future, so I haven't "optimized" it. */
+
+	default:
+	    if ((options & PCRE_EXTRA) != 0)
+		switch (c) {
+		default:
+		    *errorptr = ERR3;
+		    break;
+		}
+	    break;
+	}
+    }
+
+    *ptrptr = ptr;
+    return c;
+}
+
+
+
+#ifdef SUPPORT_UCP
+/*************************************************
+*               Handle \P and \p                 *
+*************************************************/
+
+/* This function is called after \P or \p has been encountered, provided that
+   PCRE is compiled with support for Unicode properties. On entry, ptrptr is
+   pointing at the P or p. On exit, it is pointing at the final character of the
+   escape sequence.
+
+   Argument:
+   ptrptr     points to the pattern position pointer
+   negptr     points to a boolean that is set TRUE for negation else FALSE
+   errorptr   points to the pointer to the error message
+
+   Returns:     value from ucp_type_table, or -1 for an invalid type
+ */
+
+static int
+get_ucp (const uschar ** ptrptr, BOOL * negptr, const char **errorptr)
+{
+    int c, i, bot, top;
+    const uschar *ptr = *ptrptr;
+    char name[4];
+
+    c = *(++ptr);
+    if (c == 0)
+	goto ERROR_RETURN;
+
+    *negptr = FALSE;
+
+    /* \P or \p can be followed by a one- or two-character name in {}, optionally
+       preceded by ^ for negation. */
+
+    if (c == '{') {
+	if (ptr[1] == '^') {
+	    *negptr = TRUE;
+	    ptr++;
+	}
+	for (i = 0; i <= 2; i++) {
+	    c = *(++ptr);
+	    if (c == 0)
+		goto ERROR_RETURN;
+	    if (c == '}')
+		break;
+	    name[i] = c;
+	}
+	if (c != '}') {		/* Try to distinguish error cases */
+	    while (*(++ptr) != 0 && *ptr != '}');
+	    if (*ptr == '}')
+		goto UNKNOWN_RETURN;
+	    else
+		goto ERROR_RETURN;
+	}
+	name[i] = 0;
+    }
+
+    /* Otherwise there is just one following character */
+
+    else {
+	name[0] = c;
+	name[1] = 0;
+    }
+
+    *ptrptr = ptr;
+
+    /* Search for a recognized property name using binary chop */
+
+    bot = 0;
+    top = sizeof (utt) / sizeof (ucp_type_table);
+
+    while (bot < top) {
+	i = (bot + top) / 2;
+	c = strcmp (name, utt[i].name);
+	if (c == 0)
+	    return utt[i].value;
+	if (c > 0)
+	    bot = i + 1;
+	else
+	    top = i;
+    }
+
+  UNKNOWN_RETURN:
+    *errorptr = ERR47;
+    *ptrptr = ptr;
+    return -1;
+
+  ERROR_RETURN:
+    *errorptr = ERR46;
+    *ptrptr = ptr;
+    return -1;
+}
+#endif
+
+
+
+
+/*************************************************
+*            Check for counted repeat            *
+*************************************************/
+
+/* This function is called when a '{' is encountered in a place where it might
+   start a quantifier. It looks ahead to see if it really is a quantifier or not.
+   It is only a quantifier if it is one of the forms {ddd} {ddd,} or {ddd,ddd}
+   where the ddds are digits.
+
+   Arguments:
+   p         pointer to the first char after '{'
+
+   Returns:    TRUE or FALSE
+ */
+
+static BOOL
+is_counted_repeat (const uschar * p)
+{
+    if ((digitab[*p++] & ctype_digit) == 0)
+	return FALSE;
+    while ((digitab[*p] & ctype_digit) != 0)
+	p++;
+    if (*p == '}')
+	return TRUE;
+
+    if (*p++ != ',')
+	return FALSE;
+    if (*p == '}')
+	return TRUE;
+
+    if ((digitab[*p++] & ctype_digit) == 0)
+	return FALSE;
+    while ((digitab[*p] & ctype_digit) != 0)
+	p++;
+
+    return (*p == '}');
+}
+
+
+
+/*************************************************
+*         Read repeat counts                     *
+*************************************************/
+
+/* Read an item of the form {n,m} and return the values. This is called only
+   after is_counted_repeat() has confirmed that a repeat-count quantifier exists,
+   so the syntax is guaranteed to be correct, but we need to check the values.
+
+   Arguments:
+   p          pointer to first char after '{'
+   minp       pointer to int for min
+   maxp       pointer to int for max
+   returned as -1 if no max
+   errorptr   points to pointer to error message
+
+   Returns:     pointer to '}' on success;
+   current ptr on error, with errorptr set
+ */
+
+static const uschar *
+read_repeat_counts (const uschar * p, int *minp, int *maxp,
+		    const char **errorptr)
+{
+    int min = 0;
+    int max = -1;
+
+    while ((digitab[*p] & ctype_digit) != 0)
+	min = min * 10 + *p++ - '0';
+
+    if (*p == '}')
+	max = min;
+    else {
+	if (*(++p) != '}') {
+	    max = 0;
+	    while ((digitab[*p] & ctype_digit) != 0)
+		max = max * 10 + *p++ - '0';
+	    if (max < min) {
+		*errorptr = ERR4;
+		return p;
+	    }
+	}
+    }
+
+    /* Do paranoid checks, then fill in the required variables, and pass back the
+       pointer to the terminating '}'. */
+
+    if (min > 65535 || max > 65535)
+	*errorptr = ERR5;
+    else {
+	*minp = min;
+	*maxp = max;
+    }
+    return p;
+}
+
+
+
+/*************************************************
+*      Find first significant op code            *
+*************************************************/
+
+/* This is called by several functions that scan a compiled expression looking
+   for a fixed first character, or an anchoring op code etc. It skips over things
+   that do not influence this. For some calls, a change of option is important.
+   For some calls, it makes sense to skip negative forward and all backward
+   assertions, and also the \b assertion; for others it does not.
+
+   Arguments:
+   code         pointer to the start of the group
+   options      pointer to external options
+   optbit       the option bit whose changing is significant, or
+   zero if none are
+   skipassert   TRUE if certain assertions are to be skipped
+
+   Returns:       pointer to the first significant opcode
+ */
+
+static const uschar *
+first_significant_code (const uschar * code, int *options, int optbit,
+			BOOL skipassert)
+{
+    for (;;) {
+	switch ((int) *code) {
+	case OP_OPT:
+	    if (optbit > 0
+		&& ((int) code[1] & optbit) !=
+		(*options & optbit)) *options = (int) code[1];
+	    code += 2;
+	    break;
+
+	case OP_ASSERT_NOT:
+	case OP_ASSERTBACK:
+	case OP_ASSERTBACK_NOT:
+	    if (!skipassert)
+		return code;
+	    do
+		code += GET (code, 1);
+	    while (*code == OP_ALT);
+	    code += OP_lengths[*code];
+	    break;
+
+	case OP_WORD_BOUNDARY:
+	case OP_NOT_WORD_BOUNDARY:
+	    if (!skipassert)
+		return code;
+	    /* Fall through */
+
+	case OP_CALLOUT:
+	case OP_CREF:
+	case OP_BRANUMBER:
+	    code += OP_lengths[*code];
+	    break;
+
+	default:
+	    return code;
+	}
+    }
+    /* Control never reaches here */
+}
+
+
+
+
+/*************************************************
+*        Find the fixed length of a pattern      *
+*************************************************/
+
+/* Scan a pattern and compute the fixed length of subject that will match it,
+   if the length is fixed. This is needed for dealing with backward assertions.
+   In UTF8 mode, the result is in characters rather than bytes.
+
+   Arguments:
+   code     points to the start of the pattern (the bracket)
+   options  the compiling options
+
+   Returns:   the fixed length, or -1 if there is no fixed length,
+   or -2 if \C was encountered
+ */
+
+static int
+find_fixedlength (uschar * code, int options)
+{
+    int length = -1;
+
+    register int branchlength = 0;
+    register uschar *cc = code + 1 + LINK_SIZE;
+
+    /* Scan along the opcodes for this branch. If we get to the end of the
+       branch, check the length against that of the other branches. */
+
+    for (;;) {
+	int d;
+	register int op = *cc;
+	if (op >= OP_BRA)
+	    op = OP_BRA;
+
+	switch (op) {
+	case OP_BRA:
+	case OP_ONCE:
+	case OP_COND:
+	    d = find_fixedlength (cc, options);
+	    if (d < 0)
+		return d;
+	    branchlength += d;
+	    do
+		cc += GET (cc, 1);
+	    while (*cc == OP_ALT);
+	    cc += 1 + LINK_SIZE;
+	    break;
+
+	    /* Reached end of a branch; if it's a ket it is the end of a nested
+	       call. If it's ALT it is an alternation in a nested call. If it is
+	       END it's the end of the outer call. All can be handled by the same code. */
+
+	case OP_ALT:
+	case OP_KET:
+	case OP_KETRMAX:
+	case OP_KETRMIN:
+	case OP_END:
+	    if (length < 0)
+		length = branchlength;
+	    else if (length != branchlength)
+		return -1;
+	    if (*cc != OP_ALT)
+		return length;
+	    cc += 1 + LINK_SIZE;
+	    branchlength = 0;
+	    break;
+
+	    /* Skip over assertive subpatterns */
+
+	case OP_ASSERT:
+	case OP_ASSERT_NOT:
+	case OP_ASSERTBACK:
+	case OP_ASSERTBACK_NOT:
+	    do
+		cc += GET (cc, 1);
+	    while (*cc == OP_ALT);
+	    /* Fall through */
+
+	    /* Skip over things that don't match chars */
+
+	case OP_REVERSE:
+	case OP_BRANUMBER:
+	case OP_CREF:
+	case OP_OPT:
+	case OP_CALLOUT:
+	case OP_SOD:
+	case OP_SOM:
+	case OP_EOD:
+	case OP_EODN:
+	case OP_CIRC:
+	case OP_DOLL:
+	case OP_NOT_WORD_BOUNDARY:
+	case OP_WORD_BOUNDARY:
+	    cc += OP_lengths[*cc];
+	    break;
+
+	    /* Handle literal characters */
+
+	case OP_CHAR:
+	case OP_CHARNC:
+	    branchlength++;
+	    cc += 2;
+#ifdef SUPPORT_UTF8
+	    if ((options & PCRE_UTF8) != 0) {
+		while ((*cc & 0xc0) == 0x80)
+		    cc++;
+	    }
+#endif
+	    break;
+
+	    /* Handle exact repetitions. The count is already in characters, but we
+	       need to skip over a multibyte character in UTF8 mode.  */
+
+	case OP_EXACT:
+	    branchlength += GET2 (cc, 1);
+	    cc += 4;
+#ifdef SUPPORT_UTF8
+	    if ((options & PCRE_UTF8) != 0) {
+		while ((*cc & 0x80) == 0x80)
+		    cc++;
+	    }
+#endif
+	    break;
+
+	case OP_TYPEEXACT:
+	    branchlength += GET2 (cc, 1);
+	    cc += 4;
+	    break;
+
+	    /* Handle single-char matchers */
+
+	case OP_PROP:
+	case OP_NOTPROP:
+	    cc++;
+	    /* Fall through */
+
+	case OP_NOT_DIGIT:
+	case OP_DIGIT:
+	case OP_NOT_WHITESPACE:
+	case OP_WHITESPACE:
+	case OP_NOT_WORDCHAR:
+	case OP_WORDCHAR:
+	case OP_ANY:
+	    branchlength++;
+	    cc++;
+	    break;
+
+	    /* The single-byte matcher isn't allowed */
+
+	case OP_ANYBYTE:
+	    return -2;
+
+	    /* Check a class for variable quantification */
+
+#ifdef SUPPORT_UTF8
+	case OP_XCLASS:
+	    cc += GET (cc, 1) - 33;
+	    /* Fall through */
+#endif
+
+	case OP_CLASS:
+	case OP_NCLASS:
+	    cc += 33;
+
+	    switch (*cc) {
+	    case OP_CRSTAR:
+	    case OP_CRMINSTAR:
+	    case OP_CRQUERY:
+	    case OP_CRMINQUERY:
+		return -1;
+
+	    case OP_CRRANGE:
+	    case OP_CRMINRANGE:
+		if (GET2 (cc, 1) != GET2 (cc, 3))
+		    return -1;
+		branchlength += GET2 (cc, 1);
+		cc += 5;
+		break;
+
+	    default:
+		branchlength++;
+	    }
+	    break;
+
+	    /* Anything else is variable length */
+
+	default:
+	    return -1;
+	}
+    }
+    /* Control never gets here */
+}
+
+
+
+
+/*************************************************
+*    Scan compiled regex for numbered bracket    *
+*************************************************/
+
+/* This little function scans through a compiled pattern until it finds a
+   capturing bracket with the given number.
+
+   Arguments:
+   code        points to start of expression
+   utf8        TRUE in UTF-8 mode
+   number      the required bracket number
+
+   Returns:      pointer to the opcode for the bracket, or NULL if not found
+ */
+
+static const uschar *
+find_bracket (const uschar * code, BOOL utf8, int number)
+{
+#ifndef SUPPORT_UTF8
+    utf8 = utf8;		/* Stop pedantic compilers complaining */
+#endif
+
+    for (;;) {
+	register int c = *code;
+	if (c == OP_END)
+	    return NULL;
+	else if (c > OP_BRA) {
+	    int n = c - OP_BRA;
+	    if (n > EXTRACT_BASIC_MAX)
+		n = GET2 (code, 2 + LINK_SIZE);
+	    if (n == number)
+		return (uschar *) code;
+	    code += OP_lengths[OP_BRA];
+	} else {
+	    code += OP_lengths[c];
+
+#ifdef SUPPORT_UTF8
+
+	    /* In UTF-8 mode, opcodes that are followed by a character may be followed
+	       by a multi-byte character. The length in the table is a minimum, so we have
+	       to scan along to skip the extra bytes. All opcodes are less than 128, so we
+	       can use relatively efficient code. */
+
+	    if (1 /* utf8 */ )
+		switch (c) {
+		case OP_CHAR:
+		case OP_CHARNC:
+		case OP_EXACT:
+		case OP_UPTO:
+		case OP_MINUPTO:
+		case OP_STAR:
+		case OP_MINSTAR:
+		case OP_PLUS:
+		case OP_MINPLUS:
+		case OP_QUERY:
+		case OP_MINQUERY:
+		    while ((*code & 0xc0) == 0x80)
+			code++;
+		    break;
+
+		    /* XCLASS is used for classes that cannot be represented just by a bit
+		       map. This includes negated single high-valued characters. The length in
+		       the table is zero; the actual length is stored in the compiled code. */
+
+		case OP_XCLASS:
+		    code += GET (code, 1) + 1;
+		    break;
+		}
+#endif
+	}
+    }
+}
+
+
+
+/*************************************************
+*   Scan compiled regex for recursion reference  *
+*************************************************/
+
+/* This little function scans through a compiled pattern until it finds an
+   instance of OP_RECURSE.
+
+   Arguments:
+   code        points to start of expression
+   utf8        TRUE in UTF-8 mode
+
+   Returns:      pointer to the opcode for OP_RECURSE, or NULL if not found
+ */
+
+static const uschar *
+find_recurse (const uschar * code, BOOL utf8)
+{
+#ifndef SUPPORT_UTF8
+    utf8 = utf8;		/* Stop pedantic compilers complaining */
+#endif
+
+    for (;;) {
+	register int c = *code;
+	if (c == OP_END)
+	    return NULL;
+	else if (c == OP_RECURSE)
+	    return code;
+	else if (c > OP_BRA) {
+	    code += OP_lengths[OP_BRA];
+	} else {
+	    code += OP_lengths[c];
+
+#ifdef SUPPORT_UTF8
+
+	    /* In UTF-8 mode, opcodes that are followed by a character may be followed
+	       by a multi-byte character. The length in the table is a minimum, so we have
+	       to scan along to skip the extra bytes. All opcodes are less than 128, so we
+	       can use relatively efficient code. */
+
+	    if (1 /* utf8 */ )
+		switch (c) {
+		case OP_CHAR:
+		case OP_CHARNC:
+		case OP_EXACT:
+		case OP_UPTO:
+		case OP_MINUPTO:
+		case OP_STAR:
+		case OP_MINSTAR:
+		case OP_PLUS:
+		case OP_MINPLUS:
+		case OP_QUERY:
+		case OP_MINQUERY:
+		    while ((*code & 0xc0) == 0x80)
+			code++;
+		    break;
+
+		    /* XCLASS is used for classes that cannot be represented just by a bit
+		       map. This includes negated single high-valued characters. The length in
+		       the table is zero; the actual length is stored in the compiled code. */
+
+		case OP_XCLASS:
+		    code += GET (code, 1) + 1;
+		    break;
+		}
+#endif
+	}
+    }
+}
+
+
+
+/*************************************************
+*    Scan compiled branch for non-emptiness      *
+*************************************************/
+
+/* This function scans through a branch of a compiled pattern to see whether it
+   can match the empty string or not. It is called only from could_be_empty()
+   below. Note that first_significant_code() skips over assertions. If we hit an
+   unclosed bracket, we return "empty" - this means we've struck an inner bracket
+   whose current branch will already have been scanned.
+
+   Arguments:
+   code        points to start of search
+   endcode     points to where to stop
+   utf8        TRUE if in UTF8 mode
+
+   Returns:      TRUE if what is matched could be empty
+ */
+
+static BOOL
+could_be_empty_branch (const uschar * code, const uschar * endcode,
+		       BOOL utf8)
+{
+    register int c;
+    for (code =
+	 first_significant_code (code + 1 + LINK_SIZE, NULL, 0, TRUE);
+	 code < endcode;
+	 code =
+	 first_significant_code (code + OP_lengths[c], NULL, 0, TRUE)) {
+	const uschar *ccode;
+
+	c = *code;
+
+	if (c >= OP_BRA) {
+	    BOOL empty_branch;
+	    if (GET (code, 1) == 0)
+		return TRUE;	/* Hit unclosed bracket */
+
+	    /* Scan a closed bracket */
+
+	    empty_branch = FALSE;
+	    do {
+		if (!empty_branch
+		    && could_be_empty_branch (code, endcode,
+					      utf8)) empty_branch = TRUE;
+		code += GET (code, 1);
+	    }
+	    while (*code == OP_ALT);
+	    if (!empty_branch)
+		return FALSE;	/* All branches are non-empty */
+	    code += 1 + LINK_SIZE;
+	    c = *code;
+	}
+
+	else
+	    switch (c) {
+		/* Check for quantifiers after a class */
+
+#ifdef SUPPORT_UTF8
+	    case OP_XCLASS:
+		ccode = code + GET (code, 1);
+		goto CHECK_CLASS_REPEAT;
+#endif
+
+	    case OP_CLASS:
+	    case OP_NCLASS:
+		ccode = code + 33;
+
+#ifdef SUPPORT_UTF8
+	      CHECK_CLASS_REPEAT:
+#endif
+
+		switch (*ccode) {
+		case OP_CRSTAR:	/* These could be empty; continue */
+		case OP_CRMINSTAR:
+		case OP_CRQUERY:
+		case OP_CRMINQUERY:
+		    break;
+
+		default:	/* Non-repeat => class must match */
+		case OP_CRPLUS:	/* These repeats aren't empty */
+		case OP_CRMINPLUS:
+		    return FALSE;
+
+		case OP_CRRANGE:
+		case OP_CRMINRANGE:
+		    if (GET2 (ccode, 1) > 0)
+			return FALSE;	/* Minimum > 0 */
+		    break;
+		}
+		break;
+
+		/* Opcodes that must match a character */
+
+	    case OP_PROP:
+	    case OP_NOTPROP:
+	    case OP_EXTUNI:
+	    case OP_NOT_DIGIT:
+	    case OP_DIGIT:
+	    case OP_NOT_WHITESPACE:
+	    case OP_WHITESPACE:
+	    case OP_NOT_WORDCHAR:
+	    case OP_WORDCHAR:
+	    case OP_ANY:
+	    case OP_ANYBYTE:
+	    case OP_CHAR:
+	    case OP_CHARNC:
+	    case OP_NOT:
+	    case OP_PLUS:
+	    case OP_MINPLUS:
+	    case OP_EXACT:
+	    case OP_NOTPLUS:
+	    case OP_NOTMINPLUS:
+	    case OP_NOTEXACT:
+	    case OP_TYPEPLUS:
+	    case OP_TYPEMINPLUS:
+	    case OP_TYPEEXACT:
+		return FALSE;
+
+		/* End of branch */
+
+	    case OP_KET:
+	    case OP_KETRMAX:
+	    case OP_KETRMIN:
+	    case OP_ALT:
+		return TRUE;
+
+		/* In UTF-8 mode, STAR, MINSTAR, QUERY, MINQUERY, UPTO, and MINUPTO  may be
+		   followed by a multibyte character */
+
+#ifdef SUPPORT_UTF8
+	    case OP_STAR:
+	    case OP_MINSTAR:
+	    case OP_QUERY:
+	    case OP_MINQUERY:
+	    case OP_UPTO:
+	    case OP_MINUPTO:
+		if (1 /* utf8 */ )
+		    while ((code[2] & 0xc0) == 0x80)
+			code++;
+		break;
+#endif
+	    }
+    }
+
+    return TRUE;
+}
+
+
+
+/*************************************************
+*    Scan compiled regex for non-emptiness       *
+*************************************************/
+
+/* This function is called to check for left recursive calls. We want to check
+   the current branch of the current pattern to see if it could match the empty
+   string. If it could, we must look outwards for branches at other levels,
+   stopping when we pass beyond the bracket which is the subject of the recursion.
+
+   Arguments:
+   code        points to start of the recursion
+   endcode     points to where to stop (current RECURSE item)
+   bcptr       points to the chain of current (unclosed) branch starts
+   utf8        TRUE if in UTF-8 mode
+
+   Returns:      TRUE if what is matched could be empty
+ */
+
+static BOOL
+could_be_empty (const uschar * code, const uschar * endcode,
+		branch_chain * bcptr, BOOL utf8)
+{
+    while (bcptr != NULL && bcptr->current >= code) {
+	if (!could_be_empty_branch (bcptr->current, endcode, utf8))
+	    return FALSE;
+	bcptr = bcptr->outer;
+    }
+    return TRUE;
+}
+
+
+
+/*************************************************
+*           Check for POSIX class syntax         *
+*************************************************/
+
+/* This function is called when the sequence "[:" or "[." or "[=" is
+   encountered in a character class. It checks whether this is followed by an
+   optional ^ and then a sequence of letters, terminated by a matching ":]" or
+   ".]" or "=]".
+
+   Argument:
+   ptr      pointer to the initial [
+   endptr   where to return the end pointer
+   cd       pointer to compile data
+
+   Returns:   TRUE or FALSE
+ */
+
+static BOOL
+check_posix_syntax (const uschar * ptr, const uschar ** endptr,
+		    compile_data * cd)
+{
+    int terminator;		/* Don't combine these lines; the Solaris cc */
+    terminator = *(++ptr);	/* compiler warns about "non-constant" initializer. */
+    if (*(++ptr) == '^')
+	ptr++;
+    while ((cd->ctypes[*ptr] & ctype_letter) != 0)
+	ptr++;
+    if (*ptr == terminator && ptr[1] == ']') {
+	*endptr = ptr;
+	return TRUE;
+    }
+    return FALSE;
+}
+
+
+
+
+/*************************************************
+*          Check POSIX class name                *
+*************************************************/
+
+/* This function is called to check the name given in a POSIX-style class entry
+   such as [:alnum:].
+
+   Arguments:
+   ptr        points to the first letter
+   len        the length of the name
+
+   Returns:     a value representing the name, or -1 if unknown
+ */
+
+static int
+check_posix_name (const uschar * ptr, int len)
+{
+    register int yield = 0;
+    while (posix_name_lengths[yield] != 0) {
+	if (len == posix_name_lengths[yield] &&
+	    strncmp ((const char *) ptr, posix_names[yield], len) == 0)
+	    return yield;
+	yield++;
+    }
+    return -1;
+}
+
+
+/*************************************************
+*    Adjust OP_RECURSE items in repeated group   *
+*************************************************/
+
+/* OP_RECURSE items contain an offset from the start of the regex to the group
+   that is referenced. This means that groups can be replicated for fixed
+   repetition simply by copying (because the recursion is allowed to refer to
+   earlier groups that are outside the current group). However, when a group is
+   optional (i.e. the minimum quantifier is zero), OP_BRAZERO is inserted before
+   it, after it has been compiled. This means that any OP_RECURSE items within it
+   that refer to the group itself or any contained groups have to have their
+   offsets adjusted. That is the job of this function. Before it is called, the
+   partially compiled regex must be temporarily terminated with OP_END.
+
+   Arguments:
+   group      points to the start of the group
+   adjust     the amount by which the group is to be moved
+   utf8       TRUE in UTF-8 mode
+   cd         contains pointers to tables etc.
+
+   Returns:     nothing
+ */
+
+static void
+adjust_recurse (uschar * group, int adjust, BOOL utf8, compile_data * cd)
+{
+    uschar *ptr = group;
+    while ((ptr = (uschar *) find_recurse (ptr, utf8)) != NULL) {
+	int offset = GET (ptr, 1);
+	if (cd->start_code + offset >= group)
+	    PUT (ptr, 1, offset + adjust);
+	ptr += 1 + LINK_SIZE;
+    }
+}
+
+
+
+/*************************************************
+*        Insert an automatic callout point       *
+*************************************************/
+
+/* This function is called when the PCRE_AUTO_CALLOUT option is set, to insert
+   callout points before each pattern item.
+
+   Arguments:
+   code           current code pointer
+   ptr            current pattern pointer
+   cd             pointers to tables etc
+
+   Returns:         new code pointer
+ */
+
+static uschar *
+auto_callout (uschar * code, const uschar * ptr, compile_data * cd)
+{
+    *code++ = OP_CALLOUT;
+    *code++ = 255;
+    PUT (code, 0, ptr - cd->start_pattern);	/* Pattern offset */
+    PUT (code, LINK_SIZE, 0);	/* Default length */
+    return code + 2 * LINK_SIZE;
+}
+
+
+
+/*************************************************
+*         Complete a callout item                *
+*************************************************/
+
+/* A callout item contains the length of the next item in the pattern, which
+   we can't fill in till after we have reached the relevant point. This is used
+   for both automatic and manual callouts.
+
+   Arguments:
+   previous_callout   points to previous callout item
+   ptr                current pattern pointer
+   cd                 pointers to tables etc
+
+   Returns:             nothing
+ */
+
+static void
+complete_callout (uschar * previous_callout, const uschar * ptr,
+		  compile_data * cd)
+{
+    int length = ptr - cd->start_pattern - GET (previous_callout, 2);
+    PUT (previous_callout, 2 + LINK_SIZE, length);
+}
+
+
+
+#ifdef SUPPORT_UCP
+/*************************************************
+*           Get othercase range                  *
+*************************************************/
+
+/* This function is passed the start and end of a class range, in UTF-8 mode
+   with UCP support. It searches up the characters, looking for internal ranges of
+   characters in the "other" case. Each call returns the next one, updating the
+   start address.
+
+   Arguments:
+   cptr        points to starting character value; updated
+   d           end value
+   ocptr       where to put start of othercase range
+   odptr       where to put end of othercase range
+
+   Yield:        TRUE when range returned; FALSE when no more
+ */
+
+static BOOL
+get_othercase_range (int *cptr, int d, int *ocptr, int *odptr)
+{
+    int c, chartype, othercase, next;
+
+    for (c = *cptr; c <= d; c++) {
+	if (ucp_findchar (c, &chartype, &othercase) == ucp_L
+	    && othercase != 0)
+	    break;
+    }
+
+    if (c > d)
+	return FALSE;
+
+    *ocptr = othercase;
+    next = othercase + 1;
+
+    for (++c; c <= d; c++) {
+	if (ucp_findchar (c, &chartype, &othercase) != ucp_L
+	    || othercase != next)
+	    break;
+	next++;
+    }
+
+    *odptr = next - 1;
+    *cptr = c;
+
+    return TRUE;
+}
+#endif				/* SUPPORT_UCP */
+
+
+/*************************************************
+*           Compile one branch                   *
+*************************************************/
+
+/* Scan the pattern, compiling it into the code vector. If the options are
+   changed during the branch, the pointer is used to change the external options
+   bits.
+
+   Arguments:
+   optionsptr     pointer to the option bits
+   brackets       points to number of extracting brackets used
+   codeptr        points to the pointer to the current code point
+   ptrptr         points to the current pattern pointer
+   errorptr       points to pointer to error message
+   firstbyteptr   set to initial literal character, or < 0 (REQ_UNSET, REQ_NONE)
+   reqbyteptr     set to the last literal character required, else < 0
+   bcptr          points to current branch chain
+   cd             contains pointers to tables etc.
+
+   Returns:         TRUE on success
+   FALSE, with *errorptr set on error
+ */
+
+static BOOL
+compile_branch (int *optionsptr, int *brackets, uschar ** codeptr,
+		const uschar ** ptrptr, const char **errorptr,
+		int *firstbyteptr, int *reqbyteptr, branch_chain * bcptr,
+		compile_data * cd)
+{
+    int repeat_type, op_type;
+    int repeat_min = 0, repeat_max = 0;	/* To please picky compilers */
+    int bravalue = 0;
+    int greedy_default, greedy_non_default;
+    int firstbyte, reqbyte;
+    int zeroreqbyte, zerofirstbyte;
+    int req_caseopt, reqvary, tempreqvary;
+    int condcount = 0;
+    int options = *optionsptr;
+    int after_manual_callout = 0;
+    register int c;
+    register uschar *code = *codeptr;
+    uschar *tempcode;
+    BOOL inescq = FALSE;
+    BOOL groupsetfirstbyte = FALSE;
+    const uschar *ptr = *ptrptr;
+    const uschar *tempptr;
+    uschar *previous = NULL;
+    uschar *previous_callout = NULL;
+    uschar classbits[32];
+
+#ifdef SUPPORT_UTF8
+    BOOL class_utf8;
+    BOOL utf8 = (options & PCRE_UTF8) != 0;
+    uschar *class_utf8data;
+    uschar utf8_char[6];
+#else
+    BOOL utf8 = FALSE;
+#endif
+
+    /* Set up the default and non-default settings for greediness */
+
+    greedy_default = ((options & PCRE_UNGREEDY) != 0);
+    greedy_non_default = greedy_default ^ 1;
+
+    /* Initialize no first byte, no required byte. REQ_UNSET means "no char
+       matching encountered yet". It gets changed to REQ_NONE if we hit something that
+       matches a non-fixed char first char; reqbyte just remains unset if we never
+       find one.
+
+       When we hit a repeat whose minimum is zero, we may have to adjust these values
+       to take the zero repeat into account. This is implemented by setting them to
+       zerofirstbyte and zeroreqbyte when such a repeat is encountered. The individual
+       item types that can be repeated set these backoff variables appropriately. */
+
+    firstbyte = reqbyte = zerofirstbyte = zeroreqbyte = REQ_UNSET;
+
+    /* The variable req_caseopt contains either the REQ_CASELESS value or zero,
+       according to the current setting of the caseless flag. REQ_CASELESS is a bit
+       value > 255. It is added into the firstbyte or reqbyte variables to record the
+       case status of the value. This is used only for ASCII characters. */
+
+    req_caseopt = ((options & PCRE_CASELESS) != 0) ? REQ_CASELESS : 0;
+
+    /* Switch on next character until the end of the branch */
+
+    for (;; ptr++) {
+	BOOL negate_class;
+	BOOL possessive_quantifier;
+	BOOL is_quantifier;
+	int class_charcount;
+	int class_lastchar;
+	int newoptions;
+	int recno;
+	int skipbytes;
+	int subreqbyte;
+	int subfirstbyte;
+	int mclength;
+	uschar mcbuffer[8];
+
+	/* Next byte in the pattern */
+
+	c = *ptr;
+
+	/* If in \Q...\E, check for the end; if not, we have a literal */
+
+	if (inescq && c != 0) {
+	    if (c == '\\' && ptr[1] == 'E') {
+		inescq = FALSE;
+		ptr++;
+		continue;
+	    } else {
+		if (previous_callout != NULL) {
+		    complete_callout (previous_callout, ptr, cd);
+		    previous_callout = NULL;
+		}
+		if ((options & PCRE_AUTO_CALLOUT) != 0) {
+		    previous_callout = code;
+		    code = auto_callout (code, ptr, cd);
+		}
+		goto NORMAL_CHAR;
+	    }
+	}
+
+	/* Fill in length of a previous callout, except when the next thing is
+	   a quantifier. */
+
+	is_quantifier = c == '*' || c == '+' || c == '?' ||
+	    (c == '{' && is_counted_repeat (ptr + 1));
+
+	if (!is_quantifier && previous_callout != NULL &&
+	    after_manual_callout-- <= 0) {
+	    complete_callout (previous_callout, ptr, cd);
+	    previous_callout = NULL;
+	}
+
+	/* In extended mode, skip white space and comments */
+
+	if ((options & PCRE_EXTENDED) != 0) {
+	    if ((cd->ctypes[c] & ctype_space) != 0)
+		continue;
+	    if (c == '#') {
+		/* The space before the ; is to avoid a warning on a silly compiler
+		   on the Macintosh. */
+		while ((c = *(++ptr)) != 0 && c != NEWLINE);
+		if (c != 0)
+		    continue;	/* Else fall through to handle end of string */
+	    }
+	}
+
+	/* No auto callout for quantifiers. */
+
+	if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier) {
+	    previous_callout = code;
+	    code = auto_callout (code, ptr, cd);
+	}
+
+	switch (c) {
+	    /* The branch terminates at end of string, |, or ). */
+
+	case 0:
+	case '|':
+	case ')':
+	    *firstbyteptr = firstbyte;
+	    *reqbyteptr = reqbyte;
+	    *codeptr = code;
+	    *ptrptr = ptr;
+	    return TRUE;
+
+	    /* Handle single-character metacharacters. In multiline mode, ^ disables
+	       the setting of any following char as a first character. */
+
+	case '^':
+	    if ((options & PCRE_MULTILINE) != 0) {
+		if (firstbyte == REQ_UNSET)
+		    firstbyte = REQ_NONE;
+	    }
+	    previous = NULL;
+	    *code++ = OP_CIRC;
+	    break;
+
+	case '$':
+	    previous = NULL;
+	    *code++ = OP_DOLL;
+	    break;
+
+	    /* There can never be a first char if '.' is first, whatever happens about
+	       repeats. The value of reqbyte doesn't change either. */
+
+	case '.':
+	    if (firstbyte == REQ_UNSET)
+		firstbyte = REQ_NONE;
+	    zerofirstbyte = firstbyte;
+	    zeroreqbyte = reqbyte;
+	    previous = code;
+	    *code++ = OP_ANY;
+	    break;
+
+	    /* Character classes. If the included characters are all < 255 in value, we
+	       build a 32-byte bitmap of the permitted characters, except in the special
+	       case where there is only one such character. For negated classes, we build
+	       the map as usual, then invert it at the end. However, we use a different
+	       opcode so that data characters > 255 can be handled correctly.
+
+	       If the class contains characters outside the 0-255 range, a different
+	       opcode is compiled. It may optionally have a bit map for characters < 256,
+	       but those above are are explicitly listed afterwards. A flag byte tells
+	       whether the bitmap is present, and whether this is a negated class or not.
+	     */
+
+	case '[':
+	    previous = code;
+
+	    /* PCRE supports POSIX class stuff inside a class. Perl gives an error if
+	       they are encountered at the top level, so we'll do that too. */
+
+	    if ((ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') &&
+		check_posix_syntax (ptr, &tempptr, cd)) {
+		*errorptr = (ptr[1] == ':') ? ERR13 : ERR31;
+		goto FAILED;
+	    }
+
+	    /* If the first character is '^', set the negation flag and skip it. */
+
+	    if ((c = *(++ptr)) == '^') {
+		negate_class = TRUE;
+		c = *(++ptr);
+	    } else {
+		negate_class = FALSE;
+	    }
+
+	    /* Keep a count of chars with values < 256 so that we can optimize the case
+	       of just a single character (as long as it's < 256). For higher valued UTF-8
+	       characters, we don't yet do any optimization. */
+
+	    class_charcount = 0;
+	    class_lastchar = -1;
+
+#ifdef SUPPORT_UTF8
+	    class_utf8 = FALSE;	/* No chars >= 256 */
+	    class_utf8data = code + LINK_SIZE + 34;	/* For UTF-8 items */
+#endif
+
+	    /* Initialize the 32-char bit map to all zeros. We have to build the
+	       map in a temporary bit of store, in case the class contains only 1
+	       character (< 256), because in that case the compiled code doesn't use the
+	       bit map. */
+
+	    memset (classbits, 0, 32 * sizeof (uschar));
+
+	    /* Process characters until ] is reached. By writing this as a "do" it
+	       means that an initial ] is taken as a data character. The first pass
+	       through the regex checked the overall syntax, so we don't need to be very
+	       strict here. At the start of the loop, c contains the first byte of the
+	       character. */
+
+	    do {
+#ifdef SUPPORT_UTF8
+		if (utf8 && c > 127) {	/* Braces are required because the */
+		    GETCHARLEN (c, ptr, ptr);	/* macro generates multiple statements */
+		}
+#endif
+
+		/* Inside \Q...\E everything is literal except \E */
+
+		if (inescq) {
+		    if (c == '\\' && ptr[1] == 'E') {
+			inescq = FALSE;
+			ptr++;
+			continue;
+		    } else
+			goto LONE_SINGLE_CHARACTER;
+		}
+
+		/* Handle POSIX class names. Perl allows a negation extension of the
+		   form [:^name:]. A square bracket that doesn't match the syntax is
+		   treated as a literal. We also recognize the POSIX constructions
+		   [.ch.] and [=ch=] ("collating elements") and fault them, as Perl
+		   5.6 and 5.8 do. */
+
+		if (c == '[' &&
+		    (ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') &&
+		    check_posix_syntax (ptr, &tempptr, cd)) {
+		    BOOL local_negate = FALSE;
+		    int posix_class, i;
+		    register const uschar *cbits = cd->cbits;
+
+		    if (ptr[1] != ':') {
+			*errorptr = ERR31;
+			goto FAILED;
+		    }
+
+		    ptr += 2;
+		    if (*ptr == '^') {
+			local_negate = TRUE;
+			ptr++;
+		    }
+
+		    posix_class = check_posix_name (ptr, tempptr - ptr);
+		    if (posix_class < 0) {
+			*errorptr = ERR30;
+			goto FAILED;
+		    }
+
+		    /* If matching is caseless, upper and lower are converted to
+		       alpha. This relies on the fact that the class table starts with
+		       alpha, lower, upper as the first 3 entries. */
+
+		    if ((options & PCRE_CASELESS) != 0 && posix_class <= 2)
+			posix_class = 0;
+
+		    /* Or into the map we are building up to 3 of the static class
+		       tables, or their negations. The [:blank:] class sets up the same
+		       chars as the [:space:] class (all white space). We remove the vertical
+		       white space chars afterwards. */
+
+		    posix_class *= 3;
+		    for (i = 0; i < 3; i++) {
+			BOOL blankclass =
+			    strncmp ((char *) ptr, "blank", 5) == 0;
+			int taboffset = posix_class_maps[posix_class + i];
+			if (taboffset < 0)
+			    break;
+			if (local_negate) {
+			    if (i == 0)
+				for (c = 0; c < 32; c++)
+				    classbits[c] |= ~cbits[c + taboffset];
+			    else
+				for (c = 0; c < 32; c++)
+				    classbits[c] &= ~cbits[c + taboffset];
+			    if (blankclass)
+				classbits[1] |= 0x3c;
+			} else {
+			    for (c = 0; c < 32; c++)
+				classbits[c] |= cbits[c + taboffset];
+			    if (blankclass)
+				classbits[1] &= ~0x3c;
+			}
+		    }
+
+		    ptr = tempptr + 1;
+		    class_charcount = 10;	/* Set > 1; assumes more than 1 per class */
+		    continue;	/* End of POSIX syntax handling */
+		}
+
+		/* Backslash may introduce a single character, or it may introduce one
+		   of the specials, which just set a flag. Escaped items are checked for
+		   validity in the pre-compiling pass. The sequence \b is a special case.
+		   Inside a class (and only there) it is treated as backspace. Elsewhere
+		   it marks a word boundary. Other escapes have preset maps ready to
+		   or into the one we are building. We assume they have more than one
+		   character in them, so set class_charcount bigger than one. */
+
+		if (c == '\\') {
+		    c =
+			check_escape (&ptr, errorptr, *brackets, options,
+				      TRUE);
+
+		    if (-c == ESC_b)
+			c = '\b';	/* \b is backslash in a class */
+		    else if (-c == ESC_X)
+			c = 'X';	/* \X is literal X in a class */
+		    else if (-c == ESC_Q) {	/* Handle start of quoted string */
+			if (ptr[1] == '\\' && ptr[2] == 'E') {
+			    ptr += 2;	/* avoid empty string */
+			} else
+			    inescq = TRUE;
+			continue;
+		    }
+
+		    if (c < 0) {
+			register const uschar *cbits = cd->cbits;
+			class_charcount += 2;	/* Greater than 1 is what matters */
+			switch (-c) {
+			case ESC_d:
+			    for (c = 0; c < 32; c++)
+				classbits[c] |= cbits[c + cbit_digit];
+			    continue;
+
+			case ESC_D:
+			    for (c = 0; c < 32; c++)
+				classbits[c] |= ~cbits[c + cbit_digit];
+			    continue;
+
+			case ESC_w:
+			    for (c = 0; c < 32; c++)
+				classbits[c] |= cbits[c + cbit_word];
+			    continue;
+
+			case ESC_W:
+			    for (c = 0; c < 32; c++)
+				classbits[c] |= ~cbits[c + cbit_word];
+			    continue;
+
+			case ESC_s:
+			    for (c = 0; c < 32; c++)
+				classbits[c] |= cbits[c + cbit_space];
+			    classbits[1] &= ~0x08;	/* Perl 5.004 onwards omits VT from \s */
+			    continue;
+
+			case ESC_S:
+			    for (c = 0; c < 32; c++)
+				classbits[c] |= ~cbits[c + cbit_space];
+			    classbits[1] |= 0x08;	/* Perl 5.004 onwards omits VT from \s */
+			    continue;
+
+#ifdef SUPPORT_UCP
+			case ESC_p:
+			case ESC_P:
+			    {
+				BOOL negated;
+				int property =
+				    get_ucp (&ptr, &negated, errorptr);
+				if (property < 0)
+				    goto FAILED;
+				class_utf8 = TRUE;
+				*class_utf8data++ =
+				    ((-c == ESC_p) !=
+				     negated) ? XCL_PROP : XCL_NOTPROP;
+				*class_utf8data++ = property;
+				class_charcount -= 2;	/* Not a < 256 character */
+			    }
+			    continue;
+#endif
+
+			    /* Unrecognized escapes are faulted if PCRE is running in its
+			       strict mode. By default, for compatibility with Perl, they are
+			       treated as literals. */
+
+			default:
+			    if ((options & PCRE_EXTRA) != 0) {
+				*errorptr = ERR7;
+				goto FAILED;
+			    }
+			    c = *ptr;	/* The final character */
+			    class_charcount -= 2;	/* Undo the default count from above */
+			}
+		    }
+
+		    /* Fall through if we have a single character (c >= 0). This may be
+		       > 256 in UTF-8 mode. */
+
+		}
+
+
+		/* End of backslash handling */
+		/* A single character may be followed by '-' to form a range. However,
+		   Perl does not permit ']' to be the end of the range. A '-' character
+		   here is treated as a literal. */
+		if (ptr[1] == '-' && ptr[2] != ']') {
+		    int d;
+		    ptr += 2;
+
+#ifdef SUPPORT_UTF8
+		    if (1 /* utf8 */ ) {	/* Braces are required because the */
+			GETCHARLEN (d, ptr, ptr);	/* macro generates multiple statements */
+		    } else
+#endif
+			d = *ptr;	/* Not UTF-8 mode */
+
+		    /* The second part of a range can be a single-character escape, but
+		       not any of the other escapes. Perl 5.6 treats a hyphen as a literal
+		       in such circumstances. */
+
+		    if (d == '\\') {
+			const uschar *oldptr = ptr;
+			d =
+			    check_escape (&ptr, errorptr, *brackets,
+					  options, TRUE);
+
+			/* \b is backslash; \X is literal X; any other special means the '-'
+			   was literal */
+
+			if (d < 0) {
+			    if (d == -ESC_b)
+				d = '\b';
+			    else if (d == -ESC_X)
+				d = 'X';
+			    else {
+				ptr = oldptr - 2;
+				goto LONE_SINGLE_CHARACTER;	/* A few lines below */
+			    }
+			}
+		    }
+
+		    /* The check that the two values are in the correct order happens in
+		       the pre-pass. Optimize one-character ranges */
+
+		    if (d == c)
+			goto LONE_SINGLE_CHARACTER;	/* A few lines below */
+
+		    /* In UTF-8 mode, if the upper limit is > 255, or > 127 for caseless
+		       matching, we have to use an XCLASS with extra data items. Caseless
+		       matching for characters > 127 is available only if UCP support is
+		       available. */
+
+#ifdef SUPPORT_UTF8
+		    if (utf8
+			&& (d > 255
+			    || ((options & PCRE_CASELESS) != 0
+				&& d > 127))) {
+			class_utf8 = TRUE;
+
+			/* With UCP support, we can find the other case equivalents of
+			   the relevant characters. There may be several ranges. Optimize how
+			   they fit with the basic range. */
+
+#ifdef SUPPORT_UCP
+			if ((options & PCRE_CASELESS) != 0) {
+			    int occ, ocd;
+			    int cc = c;
+			    int origd = d;
+			    while (get_othercase_range
+				   (&cc, origd, &occ, &ocd)) {
+				if (occ >= c && ocd <= d)
+				    continue;	/* Skip embedded ranges */
+
+				if (occ < c && ocd >= c - 1) {	/* Extend the basic range *//* if there is overlap,   */
+				    c = occ;	/* noting that if occ < c */
+				    continue;	/* we can't have ocd > d  */
+				}	/* because a subrange is  */
+				if (ocd > d && occ <= d + 1) {	/* always shorter than    *//* the basic range.       */
+				    d = ocd;
+				    continue;
+				}
+
+				if (occ == ocd) {
+				    *class_utf8data++ = XCL_SINGLE;
+				} else {
+				    *class_utf8data++ = XCL_RANGE;
+				    class_utf8data +=
+					g_unichar_to_utf8 (occ,
+							   class_utf8data);
+				}
+				class_utf8data +=
+				    g_unichar_to_utf8 (ocd,
+						       class_utf8data);
+			    }
+			}
+#endif				/* SUPPORT_UCP */
+
+			/* Now record the original range, possibly modified for UCP caseless
+			   overlapping ranges. */
+
+			*class_utf8data++ = XCL_RANGE;
+			class_utf8data +=
+			    g_unichar_to_utf8 (c, class_utf8data);
+			class_utf8data +=
+			    g_unichar_to_utf8 (d, class_utf8data);
+
+			/* With UCP support, we are done. Without UCP support, there is no
+			   caseless matching for UTF-8 characters > 127; we can use the bit map
+			   for the smaller ones. */
+
+#ifdef SUPPORT_UCP
+			continue;	/* With next character in the class */
+#else
+			if ((options & PCRE_CASELESS) == 0 || c > 127)
+			    continue;
+
+			/* Adjust upper limit and fall through to set up the map */
+
+			d = 127;
+
+#endif				/* SUPPORT_UCP */
+		    }
+#endif				/* SUPPORT_UTF8 */
+
+		    /* We use the bit map for all cases when not in UTF-8 mode; else
+		       ranges that lie entirely within 0-127 when there is UCP support; else
+		       for partial ranges without UCP support. */
+
+		    for (; c <= d; c++) {
+			classbits[c / 8] |= (1 << (c & 7));
+			if ((options & PCRE_CASELESS) != 0) {
+			    int uc = cd->fcc[c];	/* flip case */
+			    classbits[uc / 8] |= (1 << (uc & 7));
+			}
+			class_charcount++;	/* in case a one-char range */
+			class_lastchar = c;
+		    }
+
+		    continue;	/* Go get the next char in the class */
+		}
+
+		/* Handle a lone single character - we can get here for a normal
+		   non-escape char, or after \ that introduces a single character or for an
+		   apparent range that isn't. */
+
+	      LONE_SINGLE_CHARACTER:
+
+		/* Handle a character that cannot go in the bit map */
+
+#ifdef SUPPORT_UTF8
+		if (utf8
+		    && (c > 255
+			|| ((options & PCRE_CASELESS) != 0 && c > 127))) {
+		    class_utf8 = TRUE;
+		    *class_utf8data++ = XCL_SINGLE;
+		    class_utf8data +=
+			g_unichar_to_utf8 (c, class_utf8data);
+
+#ifdef SUPPORT_UCP
+		    if ((options & PCRE_CASELESS) != 0) {
+			int chartype;
+			int othercase;
+			if (ucp_findchar (c, &chartype, &othercase) >= 0
+			    && othercase > 0) {
+			    *class_utf8data++ = XCL_SINGLE;
+			    class_utf8data +=
+				g_unichar_to_utf8 (othercase,
+						   class_utf8data);
+			}
+		    }
+#endif				/* SUPPORT_UCP */
+
+		} else
+#endif				/* SUPPORT_UTF8 */
+
+		    /* Handle a single-byte character */
+		{
+		    classbits[c / 8] |= (1 << (c & 7));
+		    if ((options & PCRE_CASELESS) != 0) {
+			c = cd->fcc[c];	/* flip case */
+			classbits[c / 8] |= (1 << (c & 7));
+		    }
+		    class_charcount++;
+		    class_lastchar = c;
+		}
+	    }
+
+	    /* Loop until ']' reached; the check for end of string happens inside the
+	       loop. This "while" is the end of the "do" above. */
+
+	    while ((c = *(++ptr)) != ']' || inescq);
+
+	    /* If class_charcount is 1, we saw precisely one character whose value is
+	       less than 256. In non-UTF-8 mode we can always optimize. In UTF-8 mode, we
+	       can optimize the negative case only if there were no characters >= 128
+	       because OP_NOT and the related opcodes like OP_NOTSTAR operate on
+	       single-bytes only. This is an historical hangover. Maybe one day we can
+	       tidy these opcodes to handle multi-byte characters.
+
+	       The optimization throws away the bit map. We turn the item into a
+	       1-character OP_CHAR[NC] if it's positive, or OP_NOT if it's negative. Note
+	       that OP_NOT does not support multibyte characters. In the positive case, it
+	       can cause firstbyte to be set. Otherwise, there can be no first char if
+	       this item is first, whatever repeat count may follow. In the case of
+	       reqbyte, save the previous value for reinstating. */
+
+#ifdef SUPPORT_UTF8
+	    if (class_charcount == 1 &&
+		(!utf8 ||
+		 (!class_utf8 && (!negate_class || class_lastchar < 128))))
+#else
+	    if (class_charcount == 1)
+#endif
+	    {
+		zeroreqbyte = reqbyte;
+
+		/* The OP_NOT opcode works on one-byte characters only. */
+
+		if (negate_class) {
+		    if (firstbyte == REQ_UNSET)
+			firstbyte = REQ_NONE;
+		    zerofirstbyte = firstbyte;
+		    *code++ = OP_NOT;
+		    *code++ = class_lastchar;
+		    break;
+		}
+
+		/* For a single, positive character, get the value into mcbuffer, and
+		   then we can handle this with the normal one-character code. */
+
+#ifdef SUPPORT_UTF8
+		if (utf8 && class_lastchar > 127)
+		    mclength =
+			g_unichar_to_utf8 (class_lastchar, mcbuffer);
+		else
+#endif
+		{
+		    mcbuffer[0] = class_lastchar;
+		    mclength = 1;
+		}
+		goto ONE_CHAR;
+	    }
+
+
+	    /* End of 1-char optimization */
+	    /* The general case - not the one-char optimization. If this is the first
+	       thing in the branch, there can be no first char setting, whatever the
+	       repeat count. Any reqbyte setting must remain unchanged after any kind of
+	       repeat. */
+	    if (firstbyte == REQ_UNSET)
+		firstbyte = REQ_NONE;
+	    zerofirstbyte = firstbyte;
+	    zeroreqbyte = reqbyte;
+
+	    /* If there are characters with values > 255, we have to compile an
+	       extended class, with its own opcode. If there are no characters < 256,
+	       we can omit the bitmap. */
+
+#ifdef SUPPORT_UTF8
+	    if (class_utf8) {
+		*class_utf8data++ = XCL_END;	/* Marks the end of extra data */
+		*code++ = OP_XCLASS;
+		code += LINK_SIZE;
+		*code = negate_class ? XCL_NOT : 0;
+
+		/* If the map is required, install it, and move on to the end of
+		   the extra data */
+
+		if (class_charcount > 0) {
+		    *code++ |= XCL_MAP;
+		    memcpy (code, classbits, 32);
+		    code = class_utf8data;
+		}
+
+		/* If the map is not required, slide down the extra data. */
+
+		else {
+		    int len = class_utf8data - (code + 33);
+		    memmove (code + 1, code + 33, len);
+		    code += len + 1;
+		}
+
+		/* Now fill in the complete length of the item */
+
+		PUT (previous, 1, code - previous);
+		break;		/* End of class handling */
+	    }
+#endif
+
+	    /* If there are no characters > 255, negate the 32-byte map if necessary,
+	       and copy it into the code vector. If this is the first thing in the branch,
+	       there can be no first char setting, whatever the repeat count. Any reqbyte
+	       setting must remain unchanged after any kind of repeat. */
+
+	    if (negate_class) {
+		*code++ = OP_NCLASS;
+		for (c = 0; c < 32; c++)
+		    code[c] = ~classbits[c];
+	    } else {
+		*code++ = OP_CLASS;
+		memcpy (code, classbits, 32);
+	    }
+	    code += 32;
+	    break;
+
+	    /* Various kinds of repeat; '{' is not necessarily a quantifier, but this
+	       has been tested above. */
+
+	case '{':
+	    if (!is_quantifier)
+		goto NORMAL_CHAR;
+	    ptr =
+		read_repeat_counts (ptr + 1, &repeat_min, &repeat_max,
+				    errorptr);
+	    if (*errorptr != NULL)
+		goto FAILED;
+	    goto REPEAT;
+
+	case '*':
+	    repeat_min = 0;
+	    repeat_max = -1;
+	    goto REPEAT;
+
+	case '+':
+	    repeat_min = 1;
+	    repeat_max = -1;
+	    goto REPEAT;
+
+	case '?':
+	    repeat_min = 0;
+	    repeat_max = 1;
+
+	  REPEAT:
+	    if (previous == NULL) {
+		*errorptr = ERR9;
+		goto FAILED;
+	    }
+
+	    if (repeat_min == 0) {
+		firstbyte = zerofirstbyte;	/* Adjust for zero repeat */
+		reqbyte = zeroreqbyte;	/* Ditto */
+	    }
+
+	    /* Remember whether this is a variable length repeat */
+
+	    reqvary = (repeat_min == repeat_max) ? 0 : REQ_VARY;
+
+	    op_type = 0;	/* Default single-char op codes */
+	    possessive_quantifier = FALSE;	/* Default not possessive quantifier */
+
+	    /* Save start of previous item, in case we have to move it up to make space
+	       for an inserted OP_ONCE for the additional '+' extension. */
+
+	    tempcode = previous;
+
+	    /* If the next character is '+', we have a possessive quantifier. This
+	       implies greediness, whatever the setting of the PCRE_UNGREEDY option.
+	       If the next character is '?' this is a minimizing repeat, by default,
+	       but if PCRE_UNGREEDY is set, it works the other way round. We change the
+	       repeat type to the non-default. */
+
+	    if (ptr[1] == '+') {
+		repeat_type = 0;	/* Force greedy */
+		possessive_quantifier = TRUE;
+		ptr++;
+	    } else if (ptr[1] == '?') {
+		repeat_type = greedy_non_default;
+		ptr++;
+	    } else
+		repeat_type = greedy_default;
+
+	    /* If previous was a recursion, we need to wrap it inside brackets so that
+	       it can be replicated if necessary. */
+
+	    if (*previous == OP_RECURSE) {
+		memmove (previous + 1 + LINK_SIZE, previous,
+			 1 + LINK_SIZE);
+		code += 1 + LINK_SIZE;
+		*previous = OP_BRA;
+		PUT (previous, 1, code - previous);
+		*code = OP_KET;
+		PUT (code, 1, code - previous);
+		code += 1 + LINK_SIZE;
+	    }
+
+	    /* If previous was a character match, abolish the item and generate a
+	       repeat item instead. If a char item has a minumum of more than one, ensure
+	       that it is set in reqbyte - it might not be if a sequence such as x{3} is
+	       the first thing in a branch because the x will have gone into firstbyte
+	       instead.  */
+
+	    if (*previous == OP_CHAR || *previous == OP_CHARNC) {
+		/* Deal with UTF-8 characters that take up more than one byte. It's
+		   easier to write this out separately than try to macrify it. Use c to
+		   hold the length of the character in bytes, plus 0x80 to flag that it's a
+		   length rather than a small character. */
+
+#ifdef SUPPORT_UTF8
+		if (utf8 && (code[-1] & 0x80) != 0) {
+		    uschar *lastchar = code - 1;
+		    while ((*lastchar & 0xc0) == 0x80)
+			lastchar--;
+		    c = code - lastchar;	/* Length of UTF-8 character */
+		    memcpy (utf8_char, lastchar, c);	/* Save the char */
+		    c |= 0x80;	/* Flag c as a length */
+		} else
+#endif
+
+		    /* Handle the case of a single byte - either with no UTF8 support, or
+		       with UTF-8 disabled, or for a UTF-8 character < 128. */
+
+		{
+		    c = code[-1];
+		    if (repeat_min > 1)
+			reqbyte = c | req_caseopt | cd->req_varyopt;
+		}
+
+		goto OUTPUT_SINGLE_REPEAT;	/* Code shared with single character types */
+	    }
+
+	    /* If previous was a single negated character ([^a] or similar), we use
+	       one of the special opcodes, replacing it. The code is shared with single-
+	       character repeats by setting opt_type to add a suitable offset into
+	       repeat_type. OP_NOT is currently used only for single-byte chars. */
+
+	    else if (*previous == OP_NOT) {
+		op_type = OP_NOTSTAR - OP_STAR;	/* Use "not" opcodes */
+		c = previous[1];
+		goto OUTPUT_SINGLE_REPEAT;
+	    }
+
+	    /* If previous was a character type match (\d or similar), abolish it and
+	       create a suitable repeat item. The code is shared with single-character
+	       repeats by setting op_type to add a suitable offset into repeat_type. Note
+	       the the Unicode property types will be present only when SUPPORT_UCP is
+	       defined, but we don't wrap the little bits of code here because it just
+	       makes it horribly messy. */
+
+	    else if (*previous < OP_EODN) {
+		uschar *oldcode;
+		int prop_type;
+		op_type = OP_TYPESTAR - OP_STAR;	/* Use type opcodes */
+		c = *previous;
+
+	      OUTPUT_SINGLE_REPEAT:
+		prop_type = (*previous == OP_PROP
+			     || *previous ==
+			     OP_NOTPROP) ? previous[1] : -1;
+
+		oldcode = code;
+		code = previous;	/* Usually overwrite previous item */
+
+		/* If the maximum is zero then the minimum must also be zero; Perl allows
+		   this case, so we do too - by simply omitting the item altogether. */
+
+		if (repeat_max == 0)
+		    goto END_REPEAT;
+
+		/* All real repeats make it impossible to handle partial matching (maybe
+		   one day we will be able to remove this restriction). */
+
+		if (repeat_max != 1)
+		    cd->nopartial = TRUE;
+
+		/* Combine the op_type with the repeat_type */
+
+		repeat_type += op_type;
+
+		/* A minimum of zero is handled either as the special case * or ?, or as
+		   an UPTO, with the maximum given. */
+
+		if (repeat_min == 0) {
+		    if (repeat_max == -1)
+			*code++ = OP_STAR + repeat_type;
+		    else if (repeat_max == 1)
+			*code++ = OP_QUERY + repeat_type;
+		    else {
+			*code++ = OP_UPTO + repeat_type;
+			PUT2INC (code, 0, repeat_max);
+		    }
+		}
+
+		/* A repeat minimum of 1 is optimized into some special cases. If the
+		   maximum is unlimited, we use OP_PLUS. Otherwise, the original item it
+		   left in place and, if the maximum is greater than 1, we use OP_UPTO with
+		   one less than the maximum. */
+
+		else if (repeat_min == 1) {
+		    if (repeat_max == -1)
+			*code++ = OP_PLUS + repeat_type;
+		    else {
+			code = oldcode;	/* leave previous item in place */
+			if (repeat_max == 1)
+			    goto END_REPEAT;
+			*code++ = OP_UPTO + repeat_type;
+			PUT2INC (code, 0, repeat_max - 1);
+		    }
+		}
+
+		/* The case {n,n} is just an EXACT, while the general case {n,m} is
+		   handled as an EXACT followed by an UPTO. */
+
+		else {
+		    *code++ = OP_EXACT + op_type;	/* NB EXACT doesn't have repeat_type */
+		    PUT2INC (code, 0, repeat_min);
+
+		    /* If the maximum is unlimited, insert an OP_STAR. Before doing so,
+		       we have to insert the character for the previous code. For a repeated
+		       Unicode property match, there is an extra byte that defines the
+		       required property. In UTF-8 mode, long characters have their length in
+		       c, with the 0x80 bit as a flag. */
+
+		    if (repeat_max < 0) {
+#ifdef SUPPORT_UTF8
+			if (utf8 && c >= 128) {
+			    memcpy (code, utf8_char, c & 7);
+			    code += c & 7;
+			} else
+#endif
+			{
+			    *code++ = c;
+			    if (prop_type >= 0)
+				*code++ = prop_type;
+			}
+			*code++ = OP_STAR + repeat_type;
+		    }
+
+		    /* Else insert an UPTO if the max is greater than the min, again
+		       preceded by the character, for the previously inserted code. */
+
+		    else if (repeat_max != repeat_min) {
+#ifdef SUPPORT_UTF8
+			if (utf8 && c >= 128) {
+			    memcpy (code, utf8_char, c & 7);
+			    code += c & 7;
+			} else
+#endif
+			    *code++ = c;
+			if (prop_type >= 0)
+			    *code++ = prop_type;
+			repeat_max -= repeat_min;
+			*code++ = OP_UPTO + repeat_type;
+			PUT2INC (code, 0, repeat_max);
+		    }
+		}
+
+		/* The character or character type itself comes last in all cases. */
+
+#ifdef SUPPORT_UTF8
+		if (utf8 && c >= 128) {
+		    memcpy (code, utf8_char, c & 7);
+		    code += c & 7;
+		} else
+#endif
+		    *code++ = c;
+
+		/* For a repeated Unicode property match, there is an extra byte that
+		   defines the required property. */
+
+#ifdef SUPPORT_UCP
+		if (prop_type >= 0)
+		    *code++ = prop_type;
+#endif
+	    }
+
+	    /* If previous was a character class or a back reference, we put the repeat
+	       stuff after it, but just skip the item if the repeat was {0,0}. */
+
+	    else if (*previous == OP_CLASS || *previous == OP_NCLASS ||
+#ifdef SUPPORT_UTF8
+		     *previous == OP_XCLASS ||
+#endif
+		     *previous == OP_REF) {
+		if (repeat_max == 0) {
+		    code = previous;
+		    goto END_REPEAT;
+		}
+
+		/* All real repeats make it impossible to handle partial matching (maybe
+		   one day we will be able to remove this restriction). */
+
+		if (repeat_max != 1)
+		    cd->nopartial = TRUE;
+
+		if (repeat_min == 0 && repeat_max == -1)
+		    *code++ = OP_CRSTAR + repeat_type;
+		else if (repeat_min == 1 && repeat_max == -1)
+		    *code++ = OP_CRPLUS + repeat_type;
+		else if (repeat_min == 0 && repeat_max == 1)
+		    *code++ = OP_CRQUERY + repeat_type;
+		else {
+		    *code++ = OP_CRRANGE + repeat_type;
+		    PUT2INC (code, 0, repeat_min);
+		    if (repeat_max == -1)
+			repeat_max = 0;	/* 2-byte encoding for max */
+		    PUT2INC (code, 0, repeat_max);
+		}
+	    }
+
+	    /* If previous was a bracket group, we may have to replicate it in certain
+	       cases. */
+
+	    else if (*previous >= OP_BRA || *previous == OP_ONCE ||
+		     *previous == OP_COND) {
+		register int i;
+		int ketoffset = 0;
+		int len = code - previous;
+		uschar *bralink = NULL;
+
+		/* If the maximum repeat count is unlimited, find the end of the bracket
+		   by scanning through from the start, and compute the offset back to it
+		   from the current code pointer. There may be an OP_OPT setting following
+		   the final KET, so we can't find the end just by going back from the code
+		   pointer. */
+
+		if (repeat_max == -1) {
+		    register uschar *ket = previous;
+		    do
+			ket += GET (ket, 1);
+		    while (*ket != OP_KET);
+		    ketoffset = code - ket;
+		}
+
+		/* The case of a zero minimum is special because of the need to stick
+		   OP_BRAZERO in front of it, and because the group appears once in the
+		   data, whereas in other cases it appears the minimum number of times. For
+		   this reason, it is simplest to treat this case separately, as otherwise
+		   the code gets far too messy. There are several special subcases when the
+		   minimum is zero. */
+
+		if (repeat_min == 0) {
+		    /* If the maximum is also zero, we just omit the group from the output
+		       altogether. */
+
+		    if (repeat_max == 0) {
+			code = previous;
+			goto END_REPEAT;
+		    }
+
+		    /* If the maximum is 1 or unlimited, we just have to stick in the
+		       BRAZERO and do no more at this point. However, we do need to adjust
+		       any OP_RECURSE calls inside the group that refer to the group itself or
+		       any internal group, because the offset is from the start of the whole
+		       regex. Temporarily terminate the pattern while doing this. */
+
+		    if (repeat_max <= 1) {
+			*code = OP_END;
+			adjust_recurse (previous, 1, utf8, cd);
+			memmove (previous + 1, previous, len);
+			code++;
+			*previous++ = OP_BRAZERO + repeat_type;
+		    }
+
+		    /* If the maximum is greater than 1 and limited, we have to replicate
+		       in a nested fashion, sticking OP_BRAZERO before each set of brackets.
+		       The first one has to be handled carefully because it's the original
+		       copy, which has to be moved up. The remainder can be handled by code
+		       that is common with the non-zero minimum case below. We have to
+		       adjust the value or repeat_max, since one less copy is required. Once
+		       again, we may have to adjust any OP_RECURSE calls inside the group. */
+
+		    else {
+			int offset;
+			*code = OP_END;
+			adjust_recurse (previous, 2 + LINK_SIZE, utf8, cd);
+			memmove (previous + 2 + LINK_SIZE, previous, len);
+			code += 2 + LINK_SIZE;
+			*previous++ = OP_BRAZERO + repeat_type;
+			*previous++ = OP_BRA;
+
+			/* We chain together the bracket offset fields that have to be
+			   filled in later when the ends of the brackets are reached. */
+
+			offset =
+			    (bralink == NULL) ? 0 : previous - bralink;
+			bralink = previous;
+			PUTINC (previous, 0, offset);
+		    }
+
+		    repeat_max--;
+		}
+
+		/* If the minimum is greater than zero, replicate the group as many
+		   times as necessary, and adjust the maximum to the number of subsequent
+		   copies that we need. If we set a first char from the group, and didn't
+		   set a required char, copy the latter from the former. */
+
+		else {
+		    if (repeat_min > 1) {
+			if (groupsetfirstbyte && reqbyte < 0)
+			    reqbyte = firstbyte;
+			for (i = 1; i < repeat_min; i++) {
+			    memcpy (code, previous, len);
+			    code += len;
+			}
+		    }
+		    if (repeat_max > 0)
+			repeat_max -= repeat_min;
+		}
+
+		/* This code is common to both the zero and non-zero minimum cases. If
+		   the maximum is limited, it replicates the group in a nested fashion,
+		   remembering the bracket starts on a stack. In the case of a zero minimum,
+		   the first one was set up above. In all cases the repeat_max now specifies
+		   the number of additional copies needed. */
+
+		if (repeat_max >= 0) {
+		    for (i = repeat_max - 1; i >= 0; i--) {
+			*code++ = OP_BRAZERO + repeat_type;
+
+			/* All but the final copy start a new nesting, maintaining the
+			   chain of brackets outstanding. */
+
+			if (i != 0) {
+			    int offset;
+			    *code++ = OP_BRA;
+			    offset =
+				(bralink == NULL) ? 0 : code - bralink;
+			    bralink = code;
+			    PUTINC (code, 0, offset);
+			}
+
+			memcpy (code, previous, len);
+			code += len;
+		    }
+
+		    /* Now chain through the pending brackets, and fill in their length
+		       fields (which are holding the chain links pro tem). */
+
+		    while (bralink != NULL) {
+			int oldlinkoffset;
+			int offset = code - bralink + 1;
+			uschar *bra = code - offset;
+			oldlinkoffset = GET (bra, 1);
+			bralink =
+			    (oldlinkoffset ==
+			     0) ? NULL : bralink - oldlinkoffset;
+			*code++ = OP_KET;
+			PUTINC (code, 0, offset);
+			PUT (bra, 1, offset);
+		    }
+		}
+
+		/* If the maximum is unlimited, set a repeater in the final copy. We
+		   can't just offset backwards from the current code point, because we
+		   don't know if there's been an options resetting after the ket. The
+		   correct offset was computed above. */
+
+		else
+		    code[-ketoffset] = OP_KETRMAX + repeat_type;
+	    }
+
+	    /* Else there's some kind of shambles */
+
+	    else {
+		*errorptr = ERR11;
+		goto FAILED;
+	    }
+
+	    /* If the character following a repeat is '+', we wrap the entire repeated
+	       item inside OP_ONCE brackets. This is just syntactic sugar, taken from
+	       Sun's Java package. The repeated item starts at tempcode, not at previous,
+	       which might be the first part of a string whose (former) last char we
+	       repeated. However, we don't support '+' after a greediness '?'. */
+
+	    if (possessive_quantifier) {
+		int len = code - tempcode;
+		memmove (tempcode + 1 + LINK_SIZE, tempcode, len);
+		code += 1 + LINK_SIZE;
+		len += 1 + LINK_SIZE;
+		tempcode[0] = OP_ONCE;
+		*code++ = OP_KET;
+		PUTINC (code, 0, len);
+		PUT (tempcode, 1, len);
+	    }
+
+	    /* In all case we no longer have a previous item. We also set the
+	       "follows varying string" flag for subsequently encountered reqbytes if
+	       it isn't already set and we have just passed a varying length item. */
+
+	  END_REPEAT:
+	    previous = NULL;
+	    cd->req_varyopt |= reqvary;
+	    break;
+
+
+	    /* Start of nested bracket sub-expression, or comment or lookahead or
+	       lookbehind or option setting or condition. First deal with special things
+	       that can come after a bracket; all are introduced by ?, and the appearance
+	       of any of them means that this is not a referencing group. They were
+	       checked for validity in the first pass over the string, so we don't have to
+	       check for syntax errors here.  */
+
+	case '(':
+	    newoptions = options;
+	    skipbytes = 0;
+
+	    if (*(++ptr) == '?') {
+		int set, unset;
+		int *optset;
+
+		switch (*(++ptr)) {
+		case '#':	/* Comment; skip to ket */
+		    ptr++;
+		    while (*ptr != ')')
+			ptr++;
+		    continue;
+
+		case ':':	/* Non-extracting bracket */
+		    bravalue = OP_BRA;
+		    ptr++;
+		    break;
+
+		case '(':
+		    bravalue = OP_COND;	/* Conditional group */
+
+		    /* Condition to test for recursion */
+
+		    if (ptr[1] == 'R') {
+			code[1 + LINK_SIZE] = OP_CREF;
+			PUT2 (code, 2 + LINK_SIZE, CREF_RECURSE);
+			skipbytes = 3;
+			ptr += 3;
+		    }
+
+		    /* Condition to test for a numbered subpattern match. We know that
+		       if a digit follows ( then there will just be digits until ) because
+		       the syntax was checked in the first pass. */
+
+		    else if ((digitab[ptr[1]] && ctype_digit) != 0) {
+			int condref;	/* Don't amalgamate; some compilers */
+			condref = *(++ptr) - '0';	/* grumble at autoincrement in declaration */
+			while (*(++ptr) != ')')
+			    condref = condref * 10 + *ptr - '0';
+			if (condref == 0) {
+			    *errorptr = ERR35;
+			    goto FAILED;
+			}
+			ptr++;
+			code[1 + LINK_SIZE] = OP_CREF;
+			PUT2 (code, 2 + LINK_SIZE, condref);
+			skipbytes = 3;
+		    }
+		    /* For conditions that are assertions, we just fall through, having
+		       set bravalue above. */
+		    break;
+
+		case '=':	/* Positive lookahead */
+		    bravalue = OP_ASSERT;
+		    ptr++;
+		    break;
+
+		case '!':	/* Negative lookahead */
+		    bravalue = OP_ASSERT_NOT;
+		    ptr++;
+		    break;
+
+		case '<':	/* Lookbehinds */
+		    switch (*(++ptr)) {
+		    case '=':	/* Positive lookbehind */
+			bravalue = OP_ASSERTBACK;
+			ptr++;
+			break;
+
+		    case '!':	/* Negative lookbehind */
+			bravalue = OP_ASSERTBACK_NOT;
+			ptr++;
+			break;
+		    }
+		    break;
+
+		case '>':	/* One-time brackets */
+		    bravalue = OP_ONCE;
+		    ptr++;
+		    break;
+
+		case 'C':	/* Callout - may be followed by digits; */
+		    previous_callout = code;	/* Save for later completion */
+		    after_manual_callout = 1;	/* Skip one item before completing */
+		    *code++ = OP_CALLOUT;	/* Already checked that the terminating */
+		    {		/* closing parenthesis is present. */
+			int n = 0;
+			while ((digitab[*(++ptr)] & ctype_digit) != 0)
+			    n = n * 10 + *ptr - '0';
+			if (n > 255) {
+			    *errorptr = ERR38;
+			    goto FAILED;
+			}
+			*code++ = n;
+			PUT (code, 0, ptr - cd->start_pattern + 1);	/* Pattern offset */
+			PUT (code, LINK_SIZE, 0);	/* Default length */
+			code += 2 * LINK_SIZE;
+		    }
+		    previous = NULL;
+		    continue;
+
+		case 'P':	/* Named subpattern handling */
+		    if (*(++ptr) == '<') {	/* Definition */
+			int i, namelen;
+			uschar *slot = cd->name_table;
+			const uschar *name;	/* Don't amalgamate; some compilers */
+			name = ++ptr;	/* grumble at autoincrement in declaration */
+
+			while (*ptr++ != '>');
+			namelen = ptr - name - 1;
+
+			for (i = 0; i < cd->names_found; i++) {
+			    int crc = memcmp (name, slot + 2, namelen);
+			    if (crc == 0) {
+				if (slot[2 + namelen] == 0) {
+				    *errorptr = ERR43;
+				    goto FAILED;
+				}
+				crc = -1;	/* Current name is substring */
+			    }
+			    if (crc < 0) {
+				memmove (slot + cd->name_entry_size, slot,
+					 (cd->names_found -
+					  i) * cd->name_entry_size);
+				break;
+			    }
+			    slot += cd->name_entry_size;
+			}
+
+			PUT2 (slot, 0, *brackets + 1);
+			memcpy (slot + 2, name, namelen);
+			slot[2 + namelen] = 0;
+			cd->names_found++;
+			goto NUMBERED_GROUP;
+		    }
+
+		    if (*ptr == '=' || *ptr == '>') {	/* Reference or recursion */
+			int i, namelen;
+			int type = *ptr++;
+			const uschar *name = ptr;
+			uschar *slot = cd->name_table;
+
+			while (*ptr != ')')
+			    ptr++;
+			namelen = ptr - name;
+
+			for (i = 0; i < cd->names_found; i++) {
+			    if (strncmp
+				((char *) name, (char *) slot + 2,
+				 namelen) == 0)
+				break;
+			    slot += cd->name_entry_size;
+			}
+			if (i >= cd->names_found) {
+			    *errorptr = ERR15;
+			    goto FAILED;
+			}
+
+			recno = GET2 (slot, 0);
+
+			if (type == '>')
+			    goto HANDLE_RECURSION;	/* A few lines below */
+
+			/* Back reference */
+
+			previous = code;
+			*code++ = OP_REF;
+			PUT2INC (code, 0, recno);
+			cd->backref_map |= (recno < 32) ? (1 << recno) : 1;
+			if (recno > cd->top_backref)
+			    cd->top_backref = recno;
+			continue;
+		    }
+
+		    /* Should never happen */
+		    break;
+
+		case 'R':	/* Pattern recursion */
+		    ptr++;	/* Same as (?0)      */
+		    /* Fall through */
+
+		    /* Recursion or "subroutine" call */
+
+		case '0':
+		case '1':
+		case '2':
+		case '3':
+		case '4':
+		case '5':
+		case '6':
+		case '7':
+		case '8':
+		case '9':
+		    {
+			const uschar *called;
+			recno = 0;
+			while ((digitab[*ptr] & ctype_digit) != 0)
+			    recno = recno * 10 + *ptr++ - '0';
+
+			/* Come here from code above that handles a named recursion */
+
+		      HANDLE_RECURSION:
+
+			previous = code;
+
+			/* Find the bracket that is being referenced. Temporarily end the
+			   regex in case it doesn't exist. */
+
+			*code = OP_END;
+			called = (recno == 0) ?
+			    cd->start_code : find_bracket (cd->start_code,
+							   utf8, recno);
+
+			if (called == NULL) {
+			    *errorptr = ERR15;
+			    goto FAILED;
+			}
+
+			/* If the subpattern is still open, this is a recursive call. We
+			   check to see if this is a left recursion that could loop for ever,
+			   and diagnose that case. */
+
+			if (GET (called, 1) == 0
+			    && could_be_empty (called, code, bcptr, utf8)) {
+			    *errorptr = ERR40;
+			    goto FAILED;
+			}
+
+			/* Insert the recursion/subroutine item */
+
+			*code = OP_RECURSE;
+			PUT (code, 1, called - cd->start_code);
+			code += 1 + LINK_SIZE;
+		    }
+		    continue;
+
+		    /* Character after (? not specially recognized */
+
+		default:	/* Option setting */
+		    set = unset = 0;
+		    optset = &set;
+
+		    while (*ptr != ')' && *ptr != ':') {
+			switch (*ptr++) {
+			case '-':
+			    optset = &unset;
+			    break;
+
+			case 'i':
+			    *optset |= PCRE_CASELESS;
+			    break;
+			case 'm':
+			    *optset |= PCRE_MULTILINE;
+			    break;
+			case 's':
+			    *optset |= PCRE_DOTALL;
+			    break;
+			case 'x':
+			    *optset |= PCRE_EXTENDED;
+			    break;
+			case 'U':
+			    *optset |= PCRE_UNGREEDY;
+			    break;
+			case 'X':
+			    *optset |= PCRE_EXTRA;
+			    break;
+			}
+		    }
+
+		    /* Set up the changed option bits, but don't change anything yet. */
+
+		    newoptions = (options | set) & (~unset);
+
+		    /* If the options ended with ')' this is not the start of a nested
+		       group with option changes, so the options change at this level. Compile
+		       code to change the ims options if this setting actually changes any of
+		       them. We also pass the new setting back so that it can be put at the
+		       start of any following branches, and when this group ends (if we are in
+		       a group), a resetting item can be compiled.
+
+		       Note that if this item is right at the start of the pattern, the
+		       options will have been abstracted and made global, so there will be no
+		       change to compile. */
+
+		    if (*ptr == ')') {
+			if ((options & PCRE_IMS) !=
+			    (newoptions & PCRE_IMS)) {
+			    *code++ = OP_OPT;
+			    *code++ = newoptions & PCRE_IMS;
+			}
+
+			/* Change options at this level, and pass them back for use
+			   in subsequent branches. Reset the greedy defaults and the case
+			   value for firstbyte and reqbyte. */
+
+			*optionsptr = options = newoptions;
+			greedy_default =
+			    ((newoptions & PCRE_UNGREEDY) != 0);
+			greedy_non_default = greedy_default ^ 1;
+			req_caseopt =
+			    ((options & PCRE_CASELESS) !=
+			     0) ? REQ_CASELESS : 0;
+
+			previous = NULL;	/* This item can't be repeated */
+			continue;	/* It is complete */
+		    }
+
+		    /* If the options ended with ':' we are heading into a nested group
+		       with possible change of options. Such groups are non-capturing and are
+		       not assertions of any kind. All we need to do is skip over the ':';
+		       the newoptions value is handled below. */
+
+		    bravalue = OP_BRA;
+		    ptr++;
+		}
+	    }
+
+	    /* If PCRE_NO_AUTO_CAPTURE is set, all unadorned brackets become
+	       non-capturing and behave like (?:...) brackets */
+
+	    else if ((options & PCRE_NO_AUTO_CAPTURE) != 0) {
+		bravalue = OP_BRA;
+	    }
+
+	    /* Else we have a referencing group; adjust the opcode. If the bracket
+	       number is greater than EXTRACT_BASIC_MAX, we set the opcode one higher, and
+	       arrange for the true number to follow later, in an OP_BRANUMBER item. */
+
+	    else {
+	      NUMBERED_GROUP:
+		if (++(*brackets) > EXTRACT_BASIC_MAX) {
+		    bravalue = OP_BRA + EXTRACT_BASIC_MAX + 1;
+		    code[1 + LINK_SIZE] = OP_BRANUMBER;
+		    PUT2 (code, 2 + LINK_SIZE, *brackets);
+		    skipbytes = 3;
+		} else
+		    bravalue = OP_BRA + *brackets;
+	    }
+
+	    /* Process nested bracketed re. Assertions may not be repeated, but other
+	       kinds can be. We copy code into a non-register variable in order to be able
+	       to pass its address because some compilers complain otherwise. Pass in a
+	       new setting for the ims options if they have changed. */
+
+	    previous = (bravalue >= OP_ONCE) ? code : NULL;
+	    *code = bravalue;
+	    tempcode = code;
+	    tempreqvary = cd->req_varyopt;	/* Save value before bracket */
+
+	    if (!compile_regex (newoptions,	/* The complete new option state */
+				options & PCRE_IMS,	/* The previous ims option state */
+				brackets,	/* Extracting bracket count */
+				&tempcode,	/* Where to put code (updated) */
+				&ptr,	/* Input pointer (updated) */
+				errorptr,	/* Where to put an error message */
+				(bravalue == OP_ASSERTBACK || bravalue == OP_ASSERTBACK_NOT),	/* TRUE if back assert */
+				skipbytes,	/* Skip over OP_COND/OP_BRANUMBER */
+				&subfirstbyte,	/* For possible first char */
+				&subreqbyte,	/* For possible last char */
+				bcptr,	/* Current branch chain */
+				cd))	/* Tables block */
+		goto FAILED;
+
+	    /* At the end of compiling, code is still pointing to the start of the
+	       group, while tempcode has been updated to point past the end of the group
+	       and any option resetting that may follow it. The pattern pointer (ptr)
+	       is on the bracket. */
+
+	    /* If this is a conditional bracket, check that there are no more than
+	       two branches in the group. */
+
+	    else if (bravalue == OP_COND) {
+		uschar *tc = code;
+		condcount = 0;
+
+		do {
+		    condcount++;
+		    tc += GET (tc, 1);
+		}
+		while (*tc != OP_KET);
+
+		if (condcount > 2) {
+		    *errorptr = ERR27;
+		    goto FAILED;
+		}
+
+		/* If there is just one branch, we must not make use of its firstbyte or
+		   reqbyte, because this is equivalent to an empty second branch. */
+
+		if (condcount == 1)
+		    subfirstbyte = subreqbyte = REQ_NONE;
+	    }
+
+	    /* Handle updating of the required and first characters. Update for normal
+	       brackets of all kinds, and conditions with two branches (see code above).
+	       If the bracket is followed by a quantifier with zero repeat, we have to
+	       back off. Hence the definition of zeroreqbyte and zerofirstbyte outside the
+	       main loop so that they can be accessed for the back off. */
+
+	    zeroreqbyte = reqbyte;
+	    zerofirstbyte = firstbyte;
+	    groupsetfirstbyte = FALSE;
+
+	    if (bravalue >= OP_BRA || bravalue == OP_ONCE
+		|| bravalue == OP_COND) {
+		/* If we have not yet set a firstbyte in this branch, take it from the
+		   subpattern, remembering that it was set here so that a repeat of more
+		   than one can replicate it as reqbyte if necessary. If the subpattern has
+		   no firstbyte, set "none" for the whole branch. In both cases, a zero
+		   repeat forces firstbyte to "none". */
+
+		if (firstbyte == REQ_UNSET) {
+		    if (subfirstbyte >= 0) {
+			firstbyte = subfirstbyte;
+			groupsetfirstbyte = TRUE;
+		    } else
+			firstbyte = REQ_NONE;
+		    zerofirstbyte = REQ_NONE;
+		}
+
+		/* If firstbyte was previously set, convert the subpattern's firstbyte
+		   into reqbyte if there wasn't one, using the vary flag that was in
+		   existence beforehand. */
+
+		else if (subfirstbyte >= 0 && subreqbyte < 0)
+		    subreqbyte = subfirstbyte | tempreqvary;
+
+		/* If the subpattern set a required byte (or set a first byte that isn't
+		   really the first byte - see above), set it. */
+
+		if (subreqbyte >= 0)
+		    reqbyte = subreqbyte;
+	    }
+
+	    /* For a forward assertion, we take the reqbyte, if set. This can be
+	       helpful if the pattern that follows the assertion doesn't set a different
+	       char. For example, it's useful for /(?=abcde).+/. We can't set firstbyte
+	       for an assertion, however because it leads to incorrect effect for patterns
+	       such as /(?=a)a.+/ when the "real" "a" would then become a reqbyte instead
+	       of a firstbyte. This is overcome by a scan at the end if there's no
+	       firstbyte, looking for an asserted first char. */
+
+	    else if (bravalue == OP_ASSERT && subreqbyte >= 0)
+		reqbyte = subreqbyte;
+
+	    /* Now update the main code pointer to the end of the group. */
+
+	    code = tempcode;
+
+	    /* Error if hit end of pattern */
+
+	    if (*ptr != ')') {
+		*errorptr = ERR14;
+		goto FAILED;
+	    }
+	    break;
+
+	    /* Check \ for being a real metacharacter; if not, fall through and handle
+	       it as a data character at the start of a string. Escape items are checked
+	       for validity in the pre-compiling pass. */
+
+	case '\\':
+	    tempptr = ptr;
+	    c = check_escape (&ptr, errorptr, *brackets, options, FALSE);
+
+	    /* Handle metacharacters introduced by \. For ones like \d, the ESC_ values
+	       are arranged to be the negation of the corresponding OP_values. For the
+	       back references, the values are ESC_REF plus the reference number. Only
+	       back references and those types that consume a character may be repeated.
+	       We can test for values between ESC_b and ESC_Z for the latter; this may
+	       have to change if any new ones are ever created. */
+
+	    if (c < 0) {
+		if (-c == ESC_Q) {	/* Handle start of quoted string */
+		    if (ptr[1] == '\\' && ptr[2] == 'E')
+			ptr += 2;	/* avoid empty string */
+		    else
+			inescq = TRUE;
+		    continue;
+		}
+
+		/* For metasequences that actually match a character, we disable the
+		   setting of a first character if it hasn't already been set. */
+
+		if (firstbyte == REQ_UNSET && -c > ESC_b && -c < ESC_Z)
+		    firstbyte = REQ_NONE;
+
+		/* Set values to reset to if this is followed by a zero repeat. */
+
+		zerofirstbyte = firstbyte;
+		zeroreqbyte = reqbyte;
+
+		/* Back references are handled specially */
+
+		if (-c >= ESC_REF) {
+		    int number = -c - ESC_REF;
+		    previous = code;
+		    *code++ = OP_REF;
+		    PUT2INC (code, 0, number);
+		}
+
+		/* So are Unicode property matches, if supported. We know that get_ucp
+		   won't fail because it was tested in the pre-pass. */
+
+#ifdef SUPPORT_UCP
+		else if (-c == ESC_P || -c == ESC_p) {
+		    BOOL negated;
+		    int value = get_ucp (&ptr, &negated, errorptr);
+		    previous = code;
+		    *code++ =
+			((-c == ESC_p) != negated) ? OP_PROP : OP_NOTPROP;
+		    *code++ = value;
+		}
+#endif
+
+		/* For the rest, we can obtain the OP value by negating the escape
+		   value */
+
+		else {
+		    previous = (-c > ESC_b && -c < ESC_Z) ? code : NULL;
+		    *code++ = -c;
+		}
+		continue;
+	    }
+
+	    /* We have a data character whose value is in c. In UTF-8 mode it may have
+	       a value > 127. We set its representation in the length/buffer, and then
+	       handle it as a data character. */
+
+#ifdef SUPPORT_UTF8
+	    if (utf8 && c > 127)
+		mclength = g_unichar_to_utf8 (c, mcbuffer);
+	    else
+#endif
+
+	    {
+		mcbuffer[0] = c;
+		mclength = 1;
+	    }
+
+	    goto ONE_CHAR;
+
+	    /* Handle a literal character. It is guaranteed not to be whitespace or #
+	       when the extended flag is set. If we are in UTF-8 mode, it may be a
+	       multi-byte literal character. */
+
+	default:
+	  NORMAL_CHAR:
+	    mclength = 1;
+	    mcbuffer[0] = c;
+
+#ifdef SUPPORT_UTF8
+	    if (utf8 && (c & 0xc0) == 0xc0) {
+		while ((ptr[1] & 0xc0) == 0x80)
+		    mcbuffer[mclength++] = *(++ptr);
+	    }
+#endif
+
+	    /* At this point we have the character's bytes in mcbuffer, and the length
+	       in mclength. When not in UTF-8 mode, the length is always 1. */
+
+	  ONE_CHAR:
+	    previous = code;
+	    *code++ =
+		((options & PCRE_CASELESS) != 0) ? OP_CHARNC : OP_CHAR;
+	    for (c = 0; c < mclength; c++)
+		*code++ = mcbuffer[c];
+
+	    /* Set the first and required bytes appropriately. If no previous first
+	       byte, set it from this character, but revert to none on a zero repeat.
+	       Otherwise, leave the firstbyte value alone, and don't change it on a zero
+	       repeat. */
+
+	    if (firstbyte == REQ_UNSET) {
+		zerofirstbyte = REQ_NONE;
+		zeroreqbyte = reqbyte;
+
+		/* If the character is more than one byte long, we can set firstbyte
+		   only if it is not to be matched caselessly. */
+
+		if (mclength == 1 || req_caseopt == 0) {
+		    firstbyte = mcbuffer[0] | req_caseopt;
+		    if (mclength != 1)
+			reqbyte = code[-1] | cd->req_varyopt;
+		} else
+		    firstbyte = reqbyte = REQ_NONE;
+	    }
+
+	    /* firstbyte was previously set; we can set reqbyte only the length is
+	       1 or the matching is caseful. */
+
+	    else {
+		zerofirstbyte = firstbyte;
+		zeroreqbyte = reqbyte;
+		if (mclength == 1 || req_caseopt == 0)
+		    reqbyte = code[-1] | req_caseopt | cd->req_varyopt;
+	    }
+
+	    break;		/* End of literal character handling */
+	}
+    }				/* end of big loop */
+
+    /* Control never reaches here by falling through, only by a goto for all the
+       error states. Pass back the position in the pattern so that it can be displayed
+       to the user for diagnosing the error. */
+
+  FAILED:
+    *ptrptr = ptr;
+    return FALSE;
+}
+
+
+
+
+/*************************************************
+*     Compile sequence of alternatives           *
+*************************************************/
+
+/* On entry, ptr is pointing past the bracket character, but on return
+   it points to the closing bracket, or vertical bar, or end of string.
+   The code variable is pointing at the byte into which the BRA operator has been
+   stored. If the ims options are changed at the start (for a (?ims: group) or
+   during any branch, we need to insert an OP_OPT item at the start of every
+   following branch to ensure they get set correctly at run time, and also pass
+   the new options into every subsequent branch compile.
+
+   Argument:
+   options        option bits, including any changes for this subpattern
+   oldims         previous settings of ims option bits
+   brackets       -> int containing the number of extracting brackets used
+   codeptr        -> the address of the current code pointer
+   ptrptr         -> the address of the current pattern pointer
+   errorptr       -> pointer to error message
+   lookbehind     TRUE if this is a lookbehind assertion
+   skipbytes      skip this many bytes at start (for OP_COND, OP_BRANUMBER)
+   firstbyteptr   place to put the first required character, or a negative number
+   reqbyteptr     place to put the last required character, or a negative number
+   bcptr          pointer to the chain of currently open branches
+   cd             points to the data block with tables pointers etc.
+
+   Returns:      TRUE on success
+ */
+
+static BOOL
+compile_regex (int options, int oldims, int *brackets, uschar ** codeptr,
+	       const uschar ** ptrptr, const char **errorptr,
+	       BOOL lookbehind, int skipbytes, int *firstbyteptr,
+	       int *reqbyteptr, branch_chain * bcptr, compile_data * cd)
+{
+    const uschar *ptr = *ptrptr;
+    uschar *code = *codeptr;
+    uschar *last_branch = code;
+    uschar *start_bracket = code;
+    uschar *reverse_count = NULL;
+    int firstbyte, reqbyte;
+    int branchfirstbyte, branchreqbyte;
+    branch_chain bc;
+
+    bc.outer = bcptr;
+    bc.current = code;
+
+    firstbyte = reqbyte = REQ_UNSET;
+
+    /* Offset is set zero to mark that this bracket is still open */
+
+    PUT (code, 1, 0);
+    code += 1 + LINK_SIZE + skipbytes;
+
+    /* Loop for each alternative branch */
+
+    for (;;) {
+	/* Handle a change of ims options at the start of the branch */
+
+	if ((options & PCRE_IMS) != oldims) {
+	    *code++ = OP_OPT;
+	    *code++ = options & PCRE_IMS;
+	}
+
+	/* Set up dummy OP_REVERSE if lookbehind assertion */
+
+	if (lookbehind) {
+	    *code++ = OP_REVERSE;
+	    reverse_count = code;
+	    PUTINC (code, 0, 0);
+	}
+
+	/* Now compile the branch */
+
+	if (!compile_branch (&options, brackets, &code, &ptr, errorptr,
+			     &branchfirstbyte, &branchreqbyte, &bc, cd)) {
+	    *ptrptr = ptr;
+	    return FALSE;
+	}
+
+	/* If this is the first branch, the firstbyte and reqbyte values for the
+	   branch become the values for the regex. */
+
+	if (*last_branch != OP_ALT) {
+	    firstbyte = branchfirstbyte;
+	    reqbyte = branchreqbyte;
+	}
+
+	/* If this is not the first branch, the first char and reqbyte have to
+	   match the values from all the previous branches, except that if the previous
+	   value for reqbyte didn't have REQ_VARY set, it can still match, and we set
+	   REQ_VARY for the regex. */
+
+	else {
+	    /* If we previously had a firstbyte, but it doesn't match the new branch,
+	       we have to abandon the firstbyte for the regex, but if there was previously
+	       no reqbyte, it takes on the value of the old firstbyte. */
+
+	    if (firstbyte >= 0 && firstbyte != branchfirstbyte) {
+		if (reqbyte < 0)
+		    reqbyte = firstbyte;
+		firstbyte = REQ_NONE;
+	    }
+
+	    /* If we (now or from before) have no firstbyte, a firstbyte from the
+	       branch becomes a reqbyte if there isn't a branch reqbyte. */
+
+	    if (firstbyte < 0 && branchfirstbyte >= 0 && branchreqbyte < 0)
+		branchreqbyte = branchfirstbyte;
+
+	    /* Now ensure that the reqbytes match */
+
+	    if ((reqbyte & ~REQ_VARY) != (branchreqbyte & ~REQ_VARY))
+		reqbyte = REQ_NONE;
+	    else
+		reqbyte |= branchreqbyte;	/* To "or" REQ_VARY */
+	}
+
+	/* If lookbehind, check that this branch matches a fixed-length string,
+	   and put the length into the OP_REVERSE item. Temporarily mark the end of
+	   the branch with OP_END. */
+
+	if (lookbehind) {
+	    int length;
+	    *code = OP_END;
+	    length = find_fixedlength (last_branch, options);
+	    DPRINTF (("fixed length = %d\n", length));
+	    if (length < 0) {
+		*errorptr = (length == -2) ? ERR36 : ERR25;
+		*ptrptr = ptr;
+		return FALSE;
+	    }
+	    PUT (reverse_count, 0, length);
+	}
+
+	/* Reached end of expression, either ')' or end of pattern. Go back through
+	   the alternative branches and reverse the chain of offsets, with the field in
+	   the BRA item now becoming an offset to the first alternative. If there are
+	   no alternatives, it points to the end of the group. The length in the
+	   terminating ket is always the length of the whole bracketed item. If any of
+	   the ims options were changed inside the group, compile a resetting op-code
+	   following, except at the very end of the pattern. Return leaving the pointer
+	   at the terminating char. */
+
+	if (*ptr != '|') {
+	    int length = code - last_branch;
+	    do {
+		int prev_length = GET (last_branch, 1);
+		PUT (last_branch, 1, length);
+		length = prev_length;
+		last_branch -= length;
+	    }
+	    while (length > 0);
+
+	    /* Fill in the ket */
+
+	    *code = OP_KET;
+	    PUT (code, 1, code - start_bracket);
+	    code += 1 + LINK_SIZE;
+
+	    /* Resetting option if needed */
+
+	    if ((options & PCRE_IMS) != oldims && *ptr == ')') {
+		*code++ = OP_OPT;
+		*code++ = oldims;
+	    }
+
+	    /* Set values to pass back */
+
+	    *codeptr = code;
+	    *ptrptr = ptr;
+	    *firstbyteptr = firstbyte;
+	    *reqbyteptr = reqbyte;
+	    return TRUE;
+	}
+
+	/* Another branch follows; insert an "or" node. Its length field points back
+	   to the previous branch while the bracket remains open. At the end the chain
+	   is reversed. It's done like this so that the start of the bracket has a
+	   zero offset until it is closed, making it possible to detect recursion. */
+
+	*code = OP_ALT;
+	PUT (code, 1, code - last_branch);
+	bc.current = last_branch = code;
+	code += 1 + LINK_SIZE;
+	ptr++;
+    }
+    /* Control never reaches here */
+}
+
+
+
+
+/*************************************************
+*          Check for anchored expression         *
+*************************************************/
+
+/* Try to find out if this is an anchored regular expression. Consider each
+   alternative branch. If they all start with OP_SOD or OP_CIRC, or with a bracket
+   all of whose alternatives start with OP_SOD or OP_CIRC (recurse ad lib), then
+   it's anchored. However, if this is a multiline pattern, then only OP_SOD
+   counts, since OP_CIRC can match in the middle.
+
+   We can also consider a regex to be anchored if OP_SOM starts all its branches.
+   This is the code for \G, which means "match at start of match position, taking
+   into account the match offset".
+
+   A branch is also implicitly anchored if it starts with .* and DOTALL is set,
+   because that will try the rest of the pattern at all possible matching points,
+   so there is no point trying again.... er ....
+
+   .... except when the .* appears inside capturing parentheses, and there is a
+   subsequent back reference to those parentheses. We haven't enough information
+   to catch that case precisely.
+
+   At first, the best we could do was to detect when .* was in capturing brackets
+   and the highest back reference was greater than or equal to that level.
+   However, by keeping a bitmap of the first 31 back references, we can catch some
+   of the more common cases more precisely.
+
+   Arguments:
+   code           points to start of expression (the bracket)
+   options        points to the options setting
+   bracket_map    a bitmap of which brackets we are inside while testing; this
+   handles up to substring 31; after that we just have to take
+   the less precise approach
+   backref_map    the back reference bitmap
+
+   Returns:     TRUE or FALSE
+ */
+
+static BOOL
+is_anchored (register const uschar * code, int *options,
+	     unsigned int bracket_map, unsigned int backref_map)
+{
+    do {
+	const uschar *scode =
+	    first_significant_code (code + 1 + LINK_SIZE, options,
+				    PCRE_MULTILINE, FALSE);
+	register int op = *scode;
+
+	/* Capturing brackets */
+
+	if (op > OP_BRA) {
+	    int new_map;
+	    op -= OP_BRA;
+	    if (op > EXTRACT_BASIC_MAX)
+		op = GET2 (scode, 2 + LINK_SIZE);
+	    new_map = bracket_map | ((op < 32) ? (1 << op) : 1);
+	    if (!is_anchored (scode, options, new_map, backref_map))
+		return FALSE;
+	}
+
+	/* Other brackets */
+
+	else if (op == OP_BRA || op == OP_ASSERT || op == OP_ONCE
+		 || op == OP_COND) {
+	    if (!is_anchored (scode, options, bracket_map, backref_map))
+		return FALSE;
+	}
+
+	/* .* is not anchored unless DOTALL is set and it isn't in brackets that
+	   are or may be referenced. */
+
+	else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR) &&
+		 (*options & PCRE_DOTALL) != 0) {
+	    if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0)
+		return FALSE;
+	}
+
+	/* Check for explicit anchoring */
+
+	else if (op != OP_SOD && op != OP_SOM &&
+		 ((*options & PCRE_MULTILINE) != 0 || op != OP_CIRC))
+	    return FALSE;
+	code += GET (code, 1);
+    }
+    while (*code == OP_ALT);	/* Loop for each alternative */
+    return TRUE;
+}
+
+
+
+/*************************************************
+*         Check for starting with ^ or .*        *
+*************************************************/
+
+/* This is called to find out if every branch starts with ^ or .* so that
+   "first char" processing can be done to speed things up in multiline
+   matching and for non-DOTALL patterns that start with .* (which must start at
+   the beginning or after \n). As in the case of is_anchored() (see above), we
+   have to take account of back references to capturing brackets that contain .*
+   because in that case we can't make the assumption.
+
+   Arguments:
+   code           points to start of expression (the bracket)
+   bracket_map    a bitmap of which brackets we are inside while testing; this
+   handles up to substring 31; after that we just have to take
+   the less precise approach
+   backref_map    the back reference bitmap
+
+   Returns:         TRUE or FALSE
+ */
+
+static BOOL
+is_startline (const uschar * code, unsigned int bracket_map,
+	      unsigned int backref_map)
+{
+    do {
+	const uschar *scode =
+	    first_significant_code (code + 1 + LINK_SIZE, NULL, 0,
+				    FALSE);
+	register int op = *scode;
+
+	/* Capturing brackets */
+
+	if (op > OP_BRA) {
+	    int new_map;
+	    op -= OP_BRA;
+	    if (op > EXTRACT_BASIC_MAX)
+		op = GET2 (scode, 2 + LINK_SIZE);
+	    new_map = bracket_map | ((op < 32) ? (1 << op) : 1);
+	    if (!is_startline (scode, new_map, backref_map))
+		return FALSE;
+	}
+
+	/* Other brackets */
+
+	else if (op == OP_BRA || op == OP_ASSERT || op == OP_ONCE
+		 || op == OP_COND) {if (!is_startline (scode, bracket_map,
+						       backref_map)) return
+		    FALSE;}
+
+	/* .* means "start at start or after \n" if it isn't in brackets that
+	   may be referenced. */
+
+	else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR) {
+	    if (scode[1] != OP_ANY || (bracket_map & backref_map) != 0)
+		return FALSE;
+	}
+
+	/* Check for explicit circumflex */
+
+	else if (op != OP_CIRC)
+	    return FALSE;
+
+	/* Move on to the next alternative */
+
+	code += GET (code, 1);
+    }
+    while (*code == OP_ALT);	/* Loop for each alternative */
+    return TRUE;
+}
+
+
+
+/*************************************************
+*       Check for asserted fixed first char      *
+*************************************************/
+
+/* During compilation, the "first char" settings from forward assertions are
+   discarded, because they can cause conflicts with actual literals that follow.
+   However, if we end up without a first char setting for an unanchored pattern,
+   it is worth scanning the regex to see if there is an initial asserted first
+   char. If all branches start with the same asserted char, or with a bracket all
+   of whose alternatives start with the same asserted char (recurse ad lib), then
+   we return that char, otherwise -1.
+
+   Arguments:
+   code       points to start of expression (the bracket)
+   options    pointer to the options (used to check casing changes)
+   inassert   TRUE if in an assertion
+
+   Returns:     -1 or the fixed first char
+ */
+
+static int
+find_firstassertedchar (const uschar * code, int *options, BOOL inassert)
+{
+    register int c = -1;
+    do {
+	int d;
+	const uschar *scode =
+	    first_significant_code (code + 1 + LINK_SIZE, options,
+				    PCRE_CASELESS, TRUE);
+	register int op = *scode;
+
+	if (op >= OP_BRA)
+	    op = OP_BRA;
+
+	switch (op) {
+	default:
+	    return -1;
+
+	case OP_BRA:
+	case OP_ASSERT:
+	case OP_ONCE:
+	case OP_COND:
+	    if (
+		(d =
+		 find_firstassertedchar (scode, options,
+					 op == OP_ASSERT)) < 0) return -1;
+	    if (c < 0)
+		c = d;
+	    else if (c != d)
+		return -1;
+	    break;
+
+	case OP_EXACT:		/* Fall through */
+	    scode += 2;
+
+	case OP_CHAR:
+	case OP_CHARNC:
+	case OP_PLUS:
+	case OP_MINPLUS:
+	    if (!inassert)
+		return -1;
+	    if (c < 0) {
+		c = scode[1];
+		if ((*options & PCRE_CASELESS) != 0)
+		    c |= REQ_CASELESS;
+	    } else if (c != scode[1])
+		return -1;
+	    break;
+	}
+
+	code += GET (code, 1);
+    }
+    while (*code == OP_ALT);
+    return c;
+}
+
+
+
+
+#ifdef SUPPORT_UTF8
+/*************************************************
+*         Validate a UTF-8 string                *
+*************************************************/
+
+/* This function is called (optionally) at the start of compile or match, to
+   validate that a supposed UTF-8 string is actually valid. The early check means
+   that subsequent code can assume it is dealing with a valid string. The check
+   can be turned off for maximum performance, but then consequences of supplying
+   an invalid string are then undefined.
+
+   Arguments:
+   string       points to the string
+   length       length of string, or -1 if the string is zero-terminated
+
+   Returns:       < 0    if the string is a valid UTF-8 string
+   >= 0   otherwise; the value is the offset of the bad byte
+ */
+
+static int
+valid_utf8 (const uschar * string, int length)
+{
+    register const uschar *p;
+
+    if (length < 0) {
+	for (p = string; *p != 0; p++);
+	length = p - string;
+    }
+
+    for (p = string; length-- > 0; p++) {
+	register int ab;
+	register int c = *p;
+	if (c < 128)
+	    continue;
+	if ((c & 0xc0) != 0xc0)
+	    return p - string;
+	ab = utf8_table4[c & 0x3f];	/* Number of additional bytes */
+	if (length < ab)
+	    return p - string;
+	length -= ab;
+
+	/* Check top bits in the second byte */
+	if ((*(++p) & 0xc0) != 0x80)
+	    return p - string;
+
+	/* Check for overlong sequences for each different length */
+	switch (ab) {
+	    /* Check for xx00 000x */
+	case 1:
+	    if ((c & 0x3e) == 0)
+		return p - string;
+	    continue;		/* We know there aren't any more bytes to check */
+
+	    /* Check for 1110 0000, xx0x xxxx */
+	case 2:
+	    if (c == 0xe0 && (*p & 0x20) == 0)
+		return p - string;
+	    break;
+
+	    /* Check for 1111 0000, xx00 xxxx */
+	case 3:
+	    if (c == 0xf0 && (*p & 0x30) == 0)
+		return p - string;
+	    break;
+
+	    /* Check for 1111 1000, xx00 0xxx */
+	case 4:
+	    if (c == 0xf8 && (*p & 0x38) == 0)
+		return p - string;
+	    break;
+
+	    /* Check for leading 0xfe or 0xff, and then for 1111 1100, xx00 00xx */
+	case 5:
+	    if (c == 0xfe || c == 0xff || (c == 0xfc && (*p & 0x3c) == 0))
+		return p - string;
+	    break;
+	}
+
+	/* Check for valid bytes after the 2nd, if any; all must start 10 */
+	while (--ab > 0) {
+	    if ((*(++p) & 0xc0) != 0x80)
+		return p - string;
+	}
+    }
+
+    return -1;
+}
+#endif
+
+
+
+/*************************************************
+*        Compile a Regular Expression            *
+*************************************************/
+
+/* This function takes a string and returns a pointer to a block of store
+   holding a compiled version of the expression.
+
+   Arguments:
+   pattern      the regular expression
+   options      various option bits
+   errorptr     pointer to pointer to error text
+   erroroffset  ptr offset in pattern where error was detected
+   tables       pointer to character tables or NULL
+
+   Returns:       pointer to compiled data block, or NULL on error,
+   with errorptr and erroroffset set
+ */
+
+pcre *
+pcre_compile (const char *pattern, int options, const char **errorptr,
+	      int *erroroffset, const unsigned char *tables)
+{
+    real_pcre *re;
+    int length = 1 + LINK_SIZE;	/* For initial BRA plus length */
+    int c, firstbyte, reqbyte;
+    int bracount = 0;
+    int branch_extra = 0;
+    int branch_newextra;
+    int item_count = -1;
+    int name_count = 0;
+    int max_name_size = 0;
+    int lastitemlength = 0;
+#ifdef SUPPORT_UTF8
+    BOOL utf8;
+    BOOL class_utf8;
+#endif
+    BOOL inescq = FALSE;
+    unsigned int brastackptr = 0;
+    size_t size;
+    uschar *code;
+    const uschar *codestart;
+    const uschar *ptr;
+    compile_data compile_block;
+    int brastack[BRASTACK_SIZE];
+    uschar bralenstack[BRASTACK_SIZE];
+
+    /* We can't pass back an error message if errorptr is NULL; I guess the best we
+       can do is just return NULL. */
+
+    if (errorptr == NULL)
+	return NULL;
+    *errorptr = NULL;
+
+    /* However, we can give a message for this error */
+
+    if (erroroffset == NULL) {
+	*errorptr = ERR16;
+	return NULL;
+    }
+    *erroroffset = 0;
+
+    /* Can't support UTF8 unless PCRE has been compiled to include the code. */
+
+#ifdef SUPPORT_UTF8
+    utf8 = (options & PCRE_UTF8) != 0;
+    if (utf8 && (options & PCRE_NO_UTF8_CHECK) == 0 &&
+	(*erroroffset = valid_utf8 ((uschar *) pattern, -1)) >= 0) {
+	*errorptr = ERR44;
+	return NULL;
+    }
+#else
+    if ((options & PCRE_UTF8) != 0) {
+	*errorptr = ERR32;
+	return NULL;
+    }
+#endif
+
+    if ((options & ~PUBLIC_OPTIONS) != 0) {
+	*errorptr = ERR17;
+	return NULL;
+    }
+
+    /* Set up pointers to the individual character tables */
+
+    if (tables == NULL)
+	tables = make_pcre_default_tables ();
+    compile_block.lcc = tables + lcc_offset;
+    compile_block.fcc = tables + fcc_offset;
+    compile_block.cbits = tables + cbits_offset;
+    compile_block.ctypes = tables + ctypes_offset;
+
+    /* Maximum back reference and backref bitmap. This is updated for numeric
+       references during the first pass, but for named references during the actual
+       compile pass. The bitmap records up to 31 back references to help in deciding
+       whether (.*) can be treated as anchored or not. */
+
+    compile_block.top_backref = 0;
+    compile_block.backref_map = 0;
+
+    /* Reflect pattern for debugging output */
+
+    DPRINTF (
+	     ("------------------------------------------------------------------\n"));
+    DPRINTF (("%s\n", pattern));
+
+    /* The first thing to do is to make a pass over the pattern to compute the
+       amount of store required to hold the compiled code. This does not have to be
+       perfect as long as errors are overestimates. At the same time we can detect any
+       flag settings right at the start, and extract them. Make an attempt to correct
+       for any counted white space if an "extended" flag setting appears late in the
+       pattern. We can't be so clever for #-comments. */
+
+    ptr = (const uschar *) (pattern - 1);
+    while ((c = *(++ptr)) != 0) {
+	int min, max;
+	int class_optcount;
+	int bracket_length;
+	int duplength;
+
+	/* If we are inside a \Q...\E sequence, all chars are literal */
+
+	if (inescq) {
+	    if ((options & PCRE_AUTO_CALLOUT) != 0)
+		length += 2 + 2 * LINK_SIZE;
+	    goto NORMAL_CHAR;
+	}
+
+	/* Otherwise, first check for ignored whitespace and comments */
+
+	if ((options & PCRE_EXTENDED) != 0) {
+	    if ((compile_block.ctypes[c] & ctype_space) != 0)
+		continue;
+	    if (c == '#') {
+		/* The space before the ; is to avoid a warning on a silly compiler
+		   on the Macintosh. */
+		while ((c = *(++ptr)) != 0 && c != NEWLINE);
+		if (c == 0)
+		    break;
+		continue;
+	    }
+	}
+
+	item_count++;		/* Is zero for the first non-comment item */
+
+	/* Allow space for auto callout before every item except quantifiers. */
+
+	if ((options & PCRE_AUTO_CALLOUT) != 0 &&
+	    c != '*' && c != '+' && c != '?' &&
+	    (c != '{' || !is_counted_repeat (ptr + 1)))
+	    length += 2 + 2 * LINK_SIZE;
+
+	switch (c) {
+	    /* A backslashed item may be an escaped data character or it may be a
+	       character type. */
+
+	case '\\':
+	    c = check_escape (&ptr, errorptr, bracount, options, FALSE);
+	    if (*errorptr != NULL)
+		goto PCRE_ERROR_RETURN;
+
+	    lastitemlength = 1;	/* Default length of last item for repeats */
+
+	    if (c >= 0) {	/* Data character */
+		length += 2;	/* For a one-byte character */
+
+#ifdef SUPPORT_UTF8
+		if (utf8 && c > 127) {
+		    int i;
+		    i = g_unichar_to_utf8 (c, NULL);
+		    length += i;
+		    lastitemlength += i;
+		}
+#endif
+
+		continue;
+	    }
+
+	    /* If \Q, enter "literal" mode */
+
+	    if (-c == ESC_Q) {
+		inescq = TRUE;
+		continue;
+	    }
+
+	    /* \X is supported only if Unicode property support is compiled */
+
+#ifndef SUPPORT_UCP
+	    if (-c == ESC_X) {
+		*errorptr = ERR45;
+		goto PCRE_ERROR_RETURN;
+	    }
+#endif
+
+	    /* \P and \p are for Unicode properties, but only when the support has
+	       been compiled. Each item needs 2 bytes. */
+
+	    else if (-c == ESC_P || -c == ESC_p) {
+#ifdef SUPPORT_UCP
+		BOOL negated;
+		length += 2;
+		lastitemlength = 2;
+		if (get_ucp (&ptr, &negated, errorptr) < 0)
+		    goto PCRE_ERROR_RETURN;
+		continue;
+#else
+		*errorptr = ERR45;
+		goto PCRE_ERROR_RETURN;
+#endif
+	    }
+
+	    /* Other escapes need one byte */
+
+	    length++;
+
+	    /* A back reference needs an additional 2 bytes, plus either one or 5
+	       bytes for a repeat. We also need to keep the value of the highest
+	       back reference. */
+
+	    if (c <= -ESC_REF) {
+		int refnum = -c - ESC_REF;
+		compile_block.backref_map |=
+		    (refnum < 32) ? (1 << refnum) : 1;
+		if (refnum > compile_block.top_backref)
+		    compile_block.top_backref = refnum;
+		length += 2;	/* For single back reference */
+		if (ptr[1] == '{' && is_counted_repeat (ptr + 2)) {
+		    ptr =
+			read_repeat_counts (ptr + 2, &min, &max, errorptr);
+		    if (*errorptr != NULL)
+			goto PCRE_ERROR_RETURN;
+		    if ((min == 0 && (max == 1 || max == -1)) ||
+			(min == 1 && max == -1))
+			length++;
+		    else
+			length += 5;
+		    if (ptr[1] == '?')
+			ptr++;
+		}
+	    }
+	    continue;
+
+	case '^':		/* Single-byte metacharacters */
+	case '.':
+	case '$':
+	    length++;
+	    lastitemlength = 1;
+	    continue;
+
+	case '*':		/* These repeats won't be after brackets; */
+	case '+':		/* those are handled separately */
+	case '?':
+	    length++;
+	    goto POSESSIVE;	/* A few lines below */
+
+	    /* This covers the cases of braced repeats after a single char, metachar,
+	       class, or back reference. */
+
+	case '{':
+	    if (!is_counted_repeat (ptr + 1))
+		goto NORMAL_CHAR;
+	    ptr = read_repeat_counts (ptr + 1, &min, &max, errorptr);
+	    if (*errorptr != NULL)
+		goto PCRE_ERROR_RETURN;
+
+	    /* These special cases just insert one extra opcode */
+
+	    if ((min == 0 && (max == 1 || max == -1)) ||
+		(min == 1 && max == -1))
+		length++;
+
+	    /* These cases might insert additional copies of a preceding character. */
+
+	    else {
+		if (min != 1) {
+		    length -= lastitemlength;	/* Uncount the original char or metachar */
+		    if (min > 0)
+			length += 3 + lastitemlength;
+		}
+		length += lastitemlength + ((max > 0) ? 3 : 1);
+	    }
+
+	    if (ptr[1] == '?')
+		ptr++;		/* Needs no extra length */
+
+	  POSESSIVE:		/* Test for possessive quantifier */
+	    if (ptr[1] == '+') {
+		ptr++;
+		length += 2 + 2 * LINK_SIZE;	/* Allow for atomic brackets */
+	    }
+	    continue;
+
+	    /* An alternation contains an offset to the next branch or ket. If any ims
+	       options changed in the previous branch(es), and/or if we are in a
+	       lookbehind assertion, extra space will be needed at the start of the
+	       branch. This is handled by branch_extra. */
+
+	case '|':
+	    length += 1 + LINK_SIZE + branch_extra;
+	    continue;
+
+	    /* A character class uses 33 characters provided that all the character
+	       values are less than 256. Otherwise, it uses a bit map for low valued
+	       characters, and individual items for others. Don't worry about character
+	       types that aren't allowed in classes - they'll get picked up during the
+	       compile. A character class that contains only one single-byte character
+	       uses 2 or 3 bytes, depending on whether it is negated or not. Notice this
+	       where we can. (In UTF-8 mode we can do this only for chars < 128.) */
+
+	case '[':
+	    if (*(++ptr) == '^') {
+		class_optcount = 10;	/* Greater than one */
+		ptr++;
+	    } else
+		class_optcount = 0;
+
+#ifdef SUPPORT_UTF8
+	    class_utf8 = FALSE;
+#endif
+
+	    /* Written as a "do" so that an initial ']' is taken as data */
+
+	    if (*ptr != 0)
+		do {
+		    /* Inside \Q...\E everything is literal except \E */
+
+		    if (inescq) {
+			if (*ptr != '\\' || ptr[1] != 'E')
+			    goto GET_ONE_CHARACTER;
+			inescq = FALSE;
+			ptr += 1;
+			continue;
+		    }
+
+		    /* Outside \Q...\E, check for escapes */
+
+		    if (*ptr == '\\') {
+			c =
+			    check_escape (&ptr, errorptr, bracount,
+					  options, TRUE);
+			if (*errorptr != NULL)
+			    goto PCRE_ERROR_RETURN;
+
+			/* \b is backspace inside a class; \X is literal */
+
+			if (-c == ESC_b)
+			    c = '\b';
+			else if (-c == ESC_X)
+			    c = 'X';
+
+			/* \Q enters quoting mode */
+
+			else if (-c == ESC_Q) {
+			    inescq = TRUE;
+			    continue;
+			}
+
+			/* Handle escapes that turn into characters */
+
+			if (c >= 0)
+			    goto NON_SPECIAL_CHARACTER;
+
+			/* Escapes that are meta-things. The normal ones just affect the
+			   bit map, but Unicode properties require an XCLASS extended item. */
+
+			else {
+			    class_optcount = 10;	/* \d, \s etc; make sure > 1 */
+#ifdef SUPPORT_UTF8
+			    if (-c == ESC_p || -c == ESC_P) {
+				if (!class_utf8) {
+				    class_utf8 = TRUE;
+				    length += LINK_SIZE + 2;
+				}
+				length += 2;
+			    }
+#endif
+			}
+		    }
+
+		    /* Check the syntax for POSIX stuff. The bits we actually handle are
+		       checked during the real compile phase. */
+
+		    else if (*ptr == '['
+			     && check_posix_syntax (ptr, &ptr,
+						    &compile_block)) {
+			ptr++;
+			class_optcount = 10;	/* Make sure > 1 */
+		    }
+
+		    /* Anything else increments the possible optimization count. We have to
+		       detect ranges here so that we can compute the number of extra ranges for
+		       caseless wide characters when UCP support is available. If there are wide
+		       characters, we are going to have to use an XCLASS, even for single
+		       characters. */
+
+		    else {
+			int d;
+
+		      GET_ONE_CHARACTER:
+
+#ifdef SUPPORT_UTF8
+			if (1 /* utf8 */ ) {
+			    int extra = 0;
+			    GETCHARLEN (c, ptr, extra);
+			    ptr += extra;
+			} else
+			    c = *ptr;
+#else
+			c = *ptr;
+#endif
+
+			/* Come here from handling \ above when it escapes to a char value */
+
+		      NON_SPECIAL_CHARACTER:
+			class_optcount++;
+
+			d = -1;
+			if (ptr[1] == '-') {
+			    uschar const *hyptr = ptr++;
+			    if (ptr[1] == '\\') {
+				ptr++;
+				d =
+				    check_escape (&ptr, errorptr, bracount,
+						  options, TRUE);
+				if (*errorptr != NULL)
+				    goto PCRE_ERROR_RETURN;
+				if (-d == ESC_b)
+				    d = '\b';	/* backspace */
+				else if (-d == ESC_X)
+				    d = 'X';	/* literal X in a class */
+			    } else if (ptr[1] != 0 && ptr[1] != ']') {
+				ptr++;
+#ifdef SUPPORT_UTF8
+				if (1 /* utf8 */ ) {
+				    int extra = 0;
+				    GETCHARLEN (d, ptr, extra);
+				    ptr += extra;
+				} else
+#endif
+				    d = *ptr;
+			    }
+			    if (d < 0)
+				ptr = hyptr;	/* go back to hyphen as data */
+			}
+
+			/* If d >= 0 we have a range. In UTF-8 mode, if the end is > 255, or >
+			   127 for caseless matching, we will need to use an XCLASS. */
+
+			if (d >= 0) {
+			    class_optcount = 10;	/* Ensure > 1 */
+			    if (d < c) {
+				*errorptr = ERR8;
+				goto PCRE_ERROR_RETURN;
+			    }
+#ifdef SUPPORT_UTF8
+			    if (utf8
+				&& (d > 255
+				    || ((options & PCRE_CASELESS) != 0
+					&& d > 127))) {
+				uschar buffer[6];
+				if (!class_utf8) {	/* Allow for XCLASS overhead */
+				    class_utf8 = TRUE;
+				    length += LINK_SIZE + 2;
+				}
+#ifdef SUPPORT_UCP
+				/* If we have UCP support, find out how many extra ranges are
+				   needed to map the other case of characters within this range. We
+				   have to mimic the range optimization here, because extending the
+				   range upwards might push d over a boundary that makes is use
+				   another byte in the UTF-8 representation. */
+
+				if ((options & PCRE_CASELESS) != 0) {
+				    int occ, ocd;
+				    int cc = c;
+				    int origd = d;
+				    while (get_othercase_range
+					   (&cc, origd, &occ, &ocd)) {
+					if (occ >= c && ocd <= d)
+					    continue;	/* Skip embedded */
+
+					if (occ < c && ocd >= c - 1) {	/* Extend the basic range *//* if there is overlap,   */
+					    c = occ;	/* noting that if occ < c */
+					    continue;	/* we can't have ocd > d  */
+					}	/* because a subrange is  */
+					if (ocd > d && occ <= d + 1) {	/* always shorter than    *//* the basic range.       */
+					    d = ocd;
+					    continue;
+					}
+
+					/* An extra item is needed */
+
+					length +=
+					    1 + g_unichar_to_utf8 (occ,
+								   buffer)
+					    +
+					    ((occ == ocd) ? 0 :
+					     g_unichar_to_utf8 (ocd,
+								buffer));
+				    }
+				}
+#endif				/* SUPPORT_UCP */
+
+				/* The length of the (possibly extended) range */
+
+				length +=
+				    1 + g_unichar_to_utf8 (c,
+							   buffer) +
+				    g_unichar_to_utf8 (d, buffer);
+			    }
+#endif				/* SUPPORT_UTF8 */
+
+			}
+
+			/* We have a single character. There is nothing to be done unless we
+			   are in UTF-8 mode. If the char is > 255, or 127 when caseless, we must
+			   allow for an XCL_SINGLE item, doubled for caselessness if there is UCP
+			   support. */
+
+			else {
+#ifdef SUPPORT_UTF8
+			    if (utf8
+				&& (c > 255
+				    || ((options & PCRE_CASELESS) != 0
+					&& c > 127))) {
+				uschar buffer[6];
+				class_optcount = 10;	/* Ensure > 1 */
+				if (!class_utf8) {	/* Allow for XCLASS overhead */
+				    class_utf8 = TRUE;
+				    length += LINK_SIZE + 2;
+				}
+#ifdef SUPPORT_UCP
+				length +=
+				    (((options & PCRE_CASELESS) != 0) ? 2 :
+				     1) * (1 +
+					   g_unichar_to_utf8 (c, buffer));
+#else				/* SUPPORT_UCP */
+				length +=
+				    1 + g_unichar_to_utf8 (c, buffer);
+#endif				/* SUPPORT_UCP */
+			    }
+#endif				/* SUPPORT_UTF8 */
+			}
+		    }
+		}
+		while (*(++ptr) != 0 && (inescq || *ptr != ']'));	/* Concludes "do" above */
+
+	    if (*ptr == 0) {	/* Missing terminating ']' */
+		*errorptr = ERR6;
+		goto PCRE_ERROR_RETURN;
+	    }
+
+	    /* We can optimize when there was only one optimizable character. Repeats
+	       for positive and negated single one-byte chars are handled by the general
+	       code. Here, we handle repeats for the class opcodes. */
+
+	    if (class_optcount == 1)
+		length += 3;
+	    else {
+		length += 33;
+
+		/* A repeat needs either 1 or 5 bytes. If it is a possessive quantifier,
+		   we also need extra for wrapping the whole thing in a sub-pattern. */
+
+		if (*ptr != 0 && ptr[1] == '{'
+		    && is_counted_repeat (ptr + 2)) {
+		    ptr =
+			read_repeat_counts (ptr + 2, &min, &max, errorptr);
+		    if (*errorptr != NULL)
+			goto PCRE_ERROR_RETURN;
+		    if ((min == 0 && (max == 1 || max == -1)) ||
+			(min == 1 && max == -1))
+			length++;
+		    else
+			length += 5;
+		    if (ptr[1] == '+') {
+			ptr++;
+			length += 2 + 2 * LINK_SIZE;
+		    } else if (ptr[1] == '?')
+			ptr++;
+		}
+	    }
+	    continue;
+
+	    /* Brackets may be genuine groups or special things */
+
+	case '(':
+	    branch_newextra = 0;
+	    bracket_length = 1 + LINK_SIZE;
+
+	    /* Handle special forms of bracket, which all start (? */
+
+	    if (ptr[1] == '?') {
+		int set, unset;
+		int *optset;
+
+		switch (c = ptr[2]) {
+		    /* Skip over comments entirely */
+		case '#':
+		    ptr += 3;
+		    while (*ptr != 0 && *ptr != ')')
+			ptr++;
+		    if (*ptr == 0) {
+			*errorptr = ERR18;
+			goto PCRE_ERROR_RETURN;
+		    }
+		    continue;
+
+		    /* Non-referencing groups and lookaheads just move the pointer on, and
+		       then behave like a non-special bracket, except that they don't increment
+		       the count of extracting brackets. Ditto for the "once only" bracket,
+		       which is in Perl from version 5.005. */
+
+		case ':':
+		case '=':
+		case '!':
+		case '>':
+		    ptr += 2;
+		    break;
+
+		    /* (?R) specifies a recursive call to the regex, which is an extension
+		       to provide the facility which can be obtained by (?p{perl-code}) in
+		       Perl 5.6. In Perl 5.8 this has become (??{perl-code}).
+
+		       From PCRE 4.00, items such as (?3) specify subroutine-like "calls" to
+		       the appropriate numbered brackets. This includes both recursive and
+		       non-recursive calls. (?R) is now synonymous with (?0). */
+
+		case 'R':
+		    ptr++;
+
+		case '0':
+		case '1':
+		case '2':
+		case '3':
+		case '4':
+		case '5':
+		case '6':
+		case '7':
+		case '8':
+		case '9':
+		    ptr += 2;
+		    if (c != 'R')
+			while ((digitab[*(++ptr)] & ctype_digit) != 0);
+		    if (*ptr != ')') {
+			*errorptr = ERR29;
+			goto PCRE_ERROR_RETURN;
+		    }
+		    length += 1 + LINK_SIZE;
+
+		    /* If this item is quantified, it will get wrapped inside brackets so
+		       as to use the code for quantified brackets. We jump down and use the
+		       code that handles this for real brackets. */
+
+		    if (ptr[1] == '+' || ptr[1] == '*' || ptr[1] == '?'
+			|| ptr[1] == '{') {
+			length += 2 + 2 * LINK_SIZE;	/* to make bracketed */
+			duplength = 5 + 3 * LINK_SIZE;
+			goto HANDLE_QUANTIFIED_BRACKETS;
+		    }
+		    continue;
+
+		    /* (?C) is an extension which provides "callout" - to provide a bit of
+		       the functionality of the Perl (?{...}) feature. An optional number may
+		       follow (default is zero). */
+
+		case 'C':
+		    ptr += 2;
+		    while ((digitab[*(++ptr)] & ctype_digit) != 0);
+		    if (*ptr != ')') {
+			*errorptr = ERR39;
+			goto PCRE_ERROR_RETURN;
+		    }
+		    length += 2 + 2 * LINK_SIZE;
+		    continue;
+
+		    /* Named subpatterns are an extension copied from Python */
+
+		case 'P':
+		    ptr += 3;
+		    if (*ptr == '<') {
+			const uschar *p;	/* Don't amalgamate; some compilers */
+			p = ++ptr;	/* grumble at autoincrement in declaration */
+			while ((compile_block.ctypes[*ptr] & ctype_word) !=
+			       0) ptr++;
+			if (*ptr != '>') {
+			    *errorptr = ERR42;
+			    goto PCRE_ERROR_RETURN;
+			}
+			name_count++;
+			if (ptr - p > max_name_size)
+			    max_name_size = (ptr - p);
+			break;
+		    }
+
+		    if (*ptr == '=' || *ptr == '>') {
+			while (
+			       (compile_block.
+				ctypes[*(++ptr)] & ctype_word) != 0);
+			if (*ptr != ')') {
+			    *errorptr = ERR42;
+			    goto PCRE_ERROR_RETURN;
+			}
+			break;
+		    }
+
+		    /* Unknown character after (?P */
+
+		    *errorptr = ERR41;
+		    goto PCRE_ERROR_RETURN;
+
+		    /* Lookbehinds are in Perl from version 5.005 */
+
+		case '<':
+		    ptr += 3;
+		    if (*ptr == '=' || *ptr == '!') {
+			branch_newextra = 1 + LINK_SIZE;
+			length += 1 + LINK_SIZE;	/* For the first branch */
+			break;
+		    }
+		    *errorptr = ERR24;
+		    goto PCRE_ERROR_RETURN;
+
+		    /* Conditionals are in Perl from version 5.005. The bracket must either
+		       be followed by a number (for bracket reference) or by an assertion
+		       group, or (a PCRE extension) by 'R' for a recursion test. */
+
+		case '(':
+		    if (ptr[3] == 'R' && ptr[4] == ')') {
+			ptr += 4;
+			length += 3;
+		    } else if ((digitab[ptr[3]] & ctype_digit) != 0) {
+			ptr += 4;
+			length += 3;
+			while ((digitab[*ptr] & ctype_digit) != 0)
+			    ptr++;
+			if (*ptr != ')') {
+			    *errorptr = ERR26;
+			    goto PCRE_ERROR_RETURN;
+			}
+		    } else {	/* An assertion must follow */
+
+			ptr++;	/* Can treat like ':' as far as spacing is concerned */
+			if (ptr[2] != '?' ||
+			    (ptr[3] != '=' && ptr[3] != '!'
+			     && ptr[3] != '<')) {
+			    ptr += 2;	/* To get right offset in message */
+			    *errorptr = ERR28;
+			    goto PCRE_ERROR_RETURN;
+			}
+		    }
+		    break;
+
+		    /* Else loop checking valid options until ) is met. Anything else is an
+		       error. If we are without any brackets, i.e. at top level, the settings
+		       act as if specified in the options, so massage the options immediately.
+		       This is for backward compatibility with Perl 5.004. */
+
+		default:
+		    set = unset = 0;
+		    optset = &set;
+		    ptr += 2;
+
+		    for (;; ptr++) {
+			c = *ptr;
+			switch (c) {
+			case 'i':
+			    *optset |= PCRE_CASELESS;
+			    continue;
+
+			case 'm':
+			    *optset |= PCRE_MULTILINE;
+			    continue;
+
+			case 's':
+			    *optset |= PCRE_DOTALL;
+			    continue;
+
+			case 'x':
+			    *optset |= PCRE_EXTENDED;
+			    continue;
+
+			case 'X':
+			    *optset |= PCRE_EXTRA;
+			    continue;
+
+			case 'U':
+			    *optset |= PCRE_UNGREEDY;
+			    continue;
+
+			case '-':
+			    optset = &unset;
+			    continue;
+
+			    /* A termination by ')' indicates an options-setting-only item; if
+			       this is at the very start of the pattern (indicated by item_count
+			       being zero), we use it to set the global options. This is helpful
+			       when analyzing the pattern for first characters, etc. Otherwise
+			       nothing is done here and it is handled during the compiling
+			       process.
+
+			       [Historical note: Up to Perl 5.8, options settings at top level
+			       were always global settings, wherever they appeared in the pattern.
+			       That is, they were equivalent to an external setting. From 5.8
+			       onwards, they apply only to what follows (which is what you might
+			       expect).] */
+
+			case ')':
+			    if (item_count == 0) {
+				options = (options | set) & (~unset);
+				set = unset = 0;	/* To save length */
+				item_count--;	/* To allow for several */
+			    }
+
+			    /* Fall through */
+
+			    /* A termination by ':' indicates the start of a nested group with
+			       the given options set. This is again handled at compile time, but
+			       we must allow for compiled space if any of the ims options are
+			       set. We also have to allow for resetting space at the end of
+			       the group, which is why 4 is added to the length and not just 2.
+			       If there are several changes of options within the same group, this
+			       will lead to an over-estimate on the length, but this shouldn't
+			       matter very much. We also have to allow for resetting options at
+			       the start of any alternations, which we do by setting
+			       branch_newextra to 2. Finally, we record whether the case-dependent
+			       flag ever changes within the regex. This is used by the "required
+			       character" code. */
+
+			case ':':
+			    if (((set | unset) & PCRE_IMS) != 0) {
+				length += 4;
+				branch_newextra = 2;
+				if (((set | unset) & PCRE_CASELESS) != 0)
+				    options |= PCRE_ICHANGED;
+			    }
+			    goto END_OPTIONS;
+
+			    /* Unrecognized option character */
+
+			default:
+			    *errorptr = ERR12;
+			    goto PCRE_ERROR_RETURN;
+			}
+		    }
+
+		    /* If we hit a closing bracket, that's it - this is a freestanding
+		       option-setting. We need to ensure that branch_extra is updated if
+		       necessary. The only values branch_newextra can have here are 0 or 2.
+		       If the value is 2, then branch_extra must either be 2 or 5, depending
+		       on whether this is a lookbehind group or not. */
+
+		  END_OPTIONS:
+		    if (c == ')') {
+			if (branch_newextra == 2 &&
+			    (branch_extra == 0
+			     || branch_extra ==
+			     1 + LINK_SIZE)) branch_extra +=
+				branch_newextra;
+			continue;
+		    }
+
+		    /* If options were terminated by ':' control comes here. Fall through
+		       to handle the group below. */
+		}
+	    }
+
+	    /* Extracting brackets must be counted so we can process escapes in a
+	       Perlish way. If the number exceeds EXTRACT_BASIC_MAX we are going to
+	       need an additional 3 bytes of store per extracting bracket. However, if
+	       PCRE_NO_AUTO)CAPTURE is set, unadorned brackets become non-capturing, so we
+	       must leave the count alone (it will aways be zero). */
+
+	    else if ((options & PCRE_NO_AUTO_CAPTURE) == 0) {
+		bracount++;
+		if (bracount > EXTRACT_BASIC_MAX)
+		    bracket_length += 3;
+	    }
+
+	    /* Save length for computing whole length at end if there's a repeat that
+	       requires duplication of the group. Also save the current value of
+	       branch_extra, and start the new group with the new value. If non-zero, this
+	       will either be 2 for a (?imsx: group, or 3 for a lookbehind assertion. */
+
+	    if (brastackptr >= sizeof (brastack) / sizeof (int)) {
+		*errorptr = ERR19;
+		goto PCRE_ERROR_RETURN;
+	    }
+
+	    bralenstack[brastackptr] = branch_extra;
+	    branch_extra = branch_newextra;
+
+	    brastack[brastackptr++] = length;
+	    length += bracket_length;
+	    continue;
+
+	    /* Handle ket. Look for subsequent max/min; for certain sets of values we
+	       have to replicate this bracket up to that many times. If brastackptr is
+	       0 this is an unmatched bracket which will generate an error, but take care
+	       not to try to access brastack[-1] when computing the length and restoring
+	       the branch_extra value. */
+
+	case ')':
+	    length += 1 + LINK_SIZE;
+	    if (brastackptr > 0) {
+		duplength = length - brastack[--brastackptr];
+		branch_extra = bralenstack[brastackptr];
+	    } else
+		duplength = 0;
+
+	    /* The following code is also used when a recursion such as (?3) is
+	       followed by a quantifier, because in that case, it has to be wrapped inside
+	       brackets so that the quantifier works. The value of duplength must be
+	       set before arrival. */
+
+	  HANDLE_QUANTIFIED_BRACKETS:
+
+	    /* Leave ptr at the final char; for read_repeat_counts this happens
+	       automatically; for the others we need an increment. */
+
+	    if ((c = ptr[1]) == '{' && is_counted_repeat (ptr + 2)) {
+		ptr = read_repeat_counts (ptr + 2, &min, &max, errorptr);
+		if (*errorptr != NULL)
+		    goto PCRE_ERROR_RETURN;
+	    } else if (c == '*') {
+		min = 0;
+		max = -1;
+		ptr++;
+	    } else if (c == '+') {
+		min = 1;
+		max = -1;
+		ptr++;
+	    } else if (c == '?') {
+		min = 0;
+		max = 1;
+		ptr++;
+	    } else {
+		min = 1;
+		max = 1;
+	    }
+
+	    /* If the minimum is zero, we have to allow for an OP_BRAZERO before the
+	       group, and if the maximum is greater than zero, we have to replicate
+	       maxval-1 times; each replication acquires an OP_BRAZERO plus a nesting
+	       bracket set. */
+
+	    if (min == 0) {
+		length++;
+		if (max > 0)
+		    length += (max - 1) * (duplength + 3 + 2 * LINK_SIZE);
+	    }
+
+	    /* When the minimum is greater than zero, we have to replicate up to
+	       minval-1 times, with no additions required in the copies. Then, if there
+	       is a limited maximum we have to replicate up to maxval-1 times allowing
+	       for a BRAZERO item before each optional copy and nesting brackets for all
+	       but one of the optional copies. */
+
+	    else {
+		length += (min - 1) * duplength;
+		if (max > min)	/* Need this test as max=-1 means no limit */
+		    length += (max - min) * (duplength + 3 + 2 * LINK_SIZE)
+			- (2 + 2 * LINK_SIZE);
+	    }
+
+	    /* Allow space for once brackets for "possessive quantifier" */
+
+	    if (ptr[1] == '+') {
+		ptr++;
+		length += 2 + 2 * LINK_SIZE;
+	    }
+	    continue;
+
+	    /* Non-special character. It won't be space or # in extended mode, so it is
+	       always a genuine character. If we are in a \Q...\E sequence, check for the
+	       end; if not, we have a literal. */
+
+	default:
+	  NORMAL_CHAR:
+
+	    if (inescq && c == '\\' && ptr[1] == 'E') {
+		inescq = FALSE;
+		ptr++;
+		continue;
+	    }
+
+	    length += 2;	/* For a one-byte character */
+	    lastitemlength = 1;	/* Default length of last item for repeats */
+
+	    /* In UTF-8 mode, check for additional bytes. */
+
+#ifdef SUPPORT_UTF8
+	    if (utf8 && (c & 0xc0) == 0xc0) {
+		while ((ptr[1] & 0xc0) == 0x80) {	/* Can't flow over the end *//* because the end is marked */
+		    lastitemlength++;	/* by a zero byte. */
+		    length++;
+		    ptr++;
+		}
+	    }
+#endif
+
+	    continue;
+	}
+    }
+
+    length += 2 + LINK_SIZE;	/* For final KET and END */
+
+    if ((options & PCRE_AUTO_CALLOUT) != 0)
+	length += 2 + 2 * LINK_SIZE;	/* For final callout */
+
+    if (length > MAX_PATTERN_SIZE) {
+	*errorptr = ERR20;
+	return NULL;
+    }
+
+    /* Compute the size of data block needed and get it, either from malloc or
+       externally provided function. */
+
+    size = length + sizeof (real_pcre) + name_count * (max_name_size + 3);
+    re = (real_pcre *) (pcre_malloc) (size);
+
+    if (re == NULL) {
+	*errorptr = ERR21;
+	return NULL;
+    }
+
+    /* Put in the magic number, and save the sizes, options, and character table
+       pointer. NULL is used for the default character tables. The nullpad field is at
+       the end; it's there to help in the case when a regex compiled on a system with
+       4-byte pointers is run on another with 8-byte pointers. */
+
+    re->magic_number = MAGIC_NUMBER;
+    re->size = size;
+    re->options = options;
+    re->dummy1 = re->dummy2 = 0;
+    re->name_table_offset = sizeof (real_pcre);
+    re->name_entry_size = max_name_size + 3;
+    re->name_count = name_count;
+    re->tables = (tables == make_pcre_default_tables ())? NULL : tables;
+    re->nullpad = NULL;
+
+    /* The starting points of the name/number translation table and of the code are
+       passed around in the compile data block. */
+
+    compile_block.names_found = 0;
+    compile_block.name_entry_size = max_name_size + 3;
+    compile_block.name_table = (uschar *) re + re->name_table_offset;
+    codestart =
+	compile_block.name_table + re->name_entry_size * re->name_count;
+    compile_block.start_code = codestart;
+    compile_block.start_pattern = (const uschar *) pattern;
+    compile_block.req_varyopt = 0;
+    compile_block.nopartial = FALSE;
+
+    /* Set up a starting, non-extracting bracket, then compile the expression. On
+       error, *errorptr will be set non-NULL, so we don't need to look at the result
+       of the function here. */
+
+    ptr = (const uschar *) pattern;
+    code = (uschar *) codestart;
+    *code = OP_BRA;
+    bracount = 0;
+    (void) compile_regex (options, options & PCRE_IMS, &bracount, &code, &ptr,
+			  errorptr, FALSE, 0, &firstbyte, &reqbyte, NULL,
+			  &compile_block);
+    re->top_bracket = bracount;
+    re->top_backref = compile_block.top_backref;
+
+    if (compile_block.nopartial)
+	re->options |= PCRE_NOPARTIAL;
+
+    /* If not reached end of pattern on success, there's an excess bracket. */
+
+    if (*errorptr == NULL && *ptr != 0)
+	*errorptr = ERR22;
+
+    /* Fill in the terminating state and check for disastrous overflow, but
+       if debugging, leave the test till after things are printed out. */
+
+    *code++ = OP_END;
+
+#ifndef DEBUG
+    if (code - codestart > length)
+	*errorptr = ERR23;
+#endif
+
+    /* Give an error if there's back reference to a non-existent capturing
+       subpattern. */
+
+    if (re->top_backref > re->top_bracket)
+	*errorptr = ERR15;
+
+    /* Failed to compile, or error while post-processing */
+
+    if (*errorptr != NULL) {
+	(pcre_free) (re);
+      PCRE_ERROR_RETURN:
+	*erroroffset = ptr - (const uschar *) pattern;
+	return NULL;
+    }
+
+    /* If the anchored option was not passed, set the flag if we can determine that
+       the pattern is anchored by virtue of ^ characters or \A or anything else (such
+       as starting with .* when DOTALL is set).
+
+       Otherwise, if we know what the first character has to be, save it, because that
+       speeds up unanchored matches no end. If not, see if we can set the
+       PCRE_STARTLINE flag. This is helpful for multiline matches when all branches
+       start with ^. and also when all branches start with .* for non-DOTALL matches.
+     */
+
+    if ((options & PCRE_ANCHORED) == 0) {
+	int temp_options = options;
+	if (is_anchored
+	    (codestart, &temp_options, 0,
+	     compile_block.backref_map)) re->options |= PCRE_ANCHORED;
+	else {
+	    if (firstbyte < 0)
+		firstbyte =
+		    find_firstassertedchar (codestart, &temp_options,
+					    FALSE);
+	    if (firstbyte >= 0) {	/* Remove caseless flag for non-caseable chars */
+		int ch = firstbyte & 255;
+		re->first_byte = ((firstbyte & REQ_CASELESS) != 0 &&
+				  compile_block.fcc[ch] ==
+				  ch) ? ch : firstbyte;
+		re->options |= PCRE_FIRSTSET;
+	    }
+		else
+		if (is_startline (codestart, 0, compile_block.backref_map))
+	       re->options |= PCRE_STARTLINE;
+	}
+    }
+
+    /* For an anchored pattern, we use the "required byte" only if it follows a
+       variable length item in the regex. Remove the caseless flag for non-caseable
+       bytes. */
+
+    if (reqbyte >= 0 &&
+	((re->options & PCRE_ANCHORED) == 0 || (reqbyte & REQ_VARY) != 0)) {
+	int ch = reqbyte & 255;
+	re->req_byte = ((reqbyte & REQ_CASELESS) != 0 &&
+			compile_block.fcc[ch] ==
+			ch) ? (reqbyte & ~REQ_CASELESS) : reqbyte;
+	re->options |= PCRE_REQCHSET;
+    }
+
+    /* Print out the compiled data for debugging */
+
+#ifdef DEBUG
+
+    printf ("Length = %d top_bracket = %d top_backref = %d\n",
+	    length, re->top_bracket, re->top_backref);
+
+    if (re->options != 0) {
+	printf ("%s%s%s%s%s%s%s%s%s%s\n",
+		((re->options & PCRE_NOPARTIAL) != 0) ? "nopartial " : "",
+		((re->options & PCRE_ANCHORED) != 0) ? "anchored " : "",
+		((re->options & PCRE_CASELESS) != 0) ? "caseless " : "",
+		((re->options & PCRE_ICHANGED) !=
+		 0) ? "case state changed " : "",
+		((re->options & PCRE_EXTENDED) != 0) ? "extended " : "",
+		((re->options & PCRE_MULTILINE) != 0) ? "multiline " : "",
+		((re->options & PCRE_DOTALL) != 0) ? "dotall " : "",
+		((re->options & PCRE_DOLLAR_ENDONLY) !=
+		 0) ? "endonly " : "",
+		((re->options & PCRE_EXTRA) != 0) ? "extra " : "",
+		((re->options & PCRE_UNGREEDY) != 0) ? "ungreedy " : "");
+    }
+
+    if ((re->options & PCRE_FIRSTSET) != 0) {
+	int ch = re->first_byte & 255;
+	const char *caseless =
+	    ((re->first_byte & REQ_CASELESS) == 0) ? "" : " (caseless)";
+	if (g_unichar_isprint (ch))
+	    printf ("First char = %c%s\n", ch, caseless);
+	else
+	    printf ("First char = \\x%02x%s\n", ch, caseless);
+    }
+
+    if ((re->options & PCRE_REQCHSET) != 0) {
+	int ch = re->req_byte & 255;
+	const char *caseless =
+	    ((re->req_byte & REQ_CASELESS) == 0) ? "" : " (caseless)";
+	if (g_unichar_isprint (ch))
+	    printf ("Req char = %c%s\n", ch, caseless);
+	else
+	    printf ("Req char = \\x%02x%s\n", ch, caseless);
+    }
+
+    print_internals (re, stdout);
+
+    /* This check is done here in the debugging case so that the code that
+       was compiled can be seen. */
+
+    if (code - codestart > length) {
+	*errorptr = ERR23;
+	(pcre_free) (re);
+	*erroroffset = ptr - (uschar *) pattern;
+	return NULL;
+    }
+#endif
+
+    return (pcre *) re;
+}
+
+
+
+/*************************************************
+*          Match a back-reference                *
+*************************************************/
+
+/* If a back reference hasn't been set, the length that is passed is greater
+   than the number of characters left in the string, so the match fails.
+
+   Arguments:
+   offset      index into the offset vector
+   eptr        points into the subject
+   length      length to be matched
+   md          points to match data block
+   ims         the ims flags
+
+   Returns:      TRUE if matched
+ */
+
+static BOOL
+match_ref (int offset, register const uschar * eptr, int length,
+	   match_data * md, unsigned long int ims)
+{
+    const uschar *p = md->start_subject + md->offset_vector[offset];
+
+#ifdef DEBUG
+    if (eptr >= md->end_subject)
+	printf ("matching subject <null>");
+    else {
+	printf ("matching subject ");
+	pchars (eptr, length, TRUE, md);
+    }
+    printf (" against backref ");
+    pchars (p, length, FALSE, md);
+    printf ("\n");
+#endif
+
+    /* Always fail if not enough characters left */
+
+    if (length > md->end_subject - eptr)
+	return FALSE;
+
+    /* Separate the caselesss case for speed */
+
+    if ((ims & PCRE_CASELESS) != 0) {
+	while (length-- > 0)
+	    if (md->lcc[*p++] != md->lcc[*eptr++])
+		return FALSE;
+    } else {
+	while (length-- > 0)
+	    if (*p++ != *eptr++)
+		return FALSE;
+    }
+
+    return TRUE;
+}
+
+
+#ifdef SUPPORT_UTF8
+/*************************************************
+*       Match character against an XCLASS        *
+*************************************************/
+
+/* This function is called from within the XCLASS code below, to match a
+   character against an extended class which might match values > 255.
+
+   Arguments:
+   c           the character
+   data        points to the flag byte of the XCLASS data
+
+   Returns:      TRUE if character matches, else FALSE
+ */
+
+static BOOL
+match_xclass (int c, const uschar * data)
+{
+    int t;
+    BOOL negated = (*data & XCL_NOT) != 0;
+
+    /* Character values < 256 are matched against a bitmap, if one is present. If
+       not, we still carry on, because there may be ranges that start below 256 in the
+       additional data. */
+
+    if (c < 256) {
+	if ((*data & XCL_MAP) != 0
+	    && (data[1 + c / 8] & (1 << (c & 7))) != 0) return !negated;	/* char found */
+    }
+
+    /* First skip the bit map if present. Then match against the list of Unicode
+       properties or large chars or ranges that end with a large char. We won't ever
+       encounter XCL_PROP or XCL_NOTPROP when UCP support is not compiled. */
+
+    if ((*data++ & XCL_MAP) != 0)
+	data += 32;
+
+    while ((t = *data++) != XCL_END) {
+	int x, y;
+	if (t == XCL_SINGLE) {
+	    GETCHARINC (x, data);
+	    if (c == x)
+		return !negated;
+	} else if (t == XCL_RANGE) {
+	    GETCHARINC (x, data);
+	    GETCHARINC (y, data);
+	    if (c >= x && c <= y)
+		return !negated;
+	}
+#ifdef SUPPORT_UCP
+	else {			/* XCL_PROP & XCL_NOTPROP */
+
+	    int chartype, othercase;
+	    int rqdtype = *data++;
+	    int category = ucp_findchar (c, &chartype, &othercase);
+	    if (rqdtype >= 128) {
+		if ((rqdtype - 128 == category) == (t == XCL_PROP))
+		    return !negated;
+	    } else {
+		if ((rqdtype == chartype) == (t == XCL_PROP))
+		    return !negated;
+	    }
+	}
+#endif				/* SUPPORT_UCP */
+    }
+
+    return negated;		/* char did not match */
+}
+#endif
+
+
+/***************************************************************************
+****************************************************************************
+                   RECURSION IN THE match() FUNCTION
+
+The match() function is highly recursive. Some regular expressions can cause
+it to recurse thousands of times. I was writing for Unix, so I just let it
+call itself recursively. This uses the stack for saving everything that has
+to be saved for a recursive call. On Unix, the stack can be large, and this
+works fine.
+
+It turns out that on non-Unix systems there are problems with programs that
+use a lot of stack. (This despite the fact that every last chip has oodles
+of memory these days, and techniques for extending the stack have been known
+for decades.) So....
+
+There is a fudge, triggered by defining NO_RECURSE, which avoids recursive
+calls by keeping local variables that need to be preserved in blocks of memory
+obtained from malloc instead instead of on the stack. Macros are used to
+achieve this so that the actual code doesn't look very different to what it
+always used to.
+****************************************************************************
+***************************************************************************/
+
+
+/* These versions of the macros use the stack, as normal */
+
+#ifndef NO_RECURSE
+#define REGISTER register
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg) rx = match(ra,rb,rc,rd,re,rf,rg)
+#define RRETURN(ra) return ra
+#else
+
+
+/* These versions of the macros manage a private stack on the heap. Note
+   that the rd argument of RMATCH isn't actually used. It's the md argument of
+   match(), which never changes. */
+
+#define REGISTER
+
+#define RMATCH(rx,ra,rb,rc,rd,re,rf,rg)\
+  {\
+  heapframe *newframe = (pcre_stack_malloc)(sizeof(heapframe));\
+  if (setjmp(frame->Xwhere) == 0)\
+    {\
+    newframe->Xeptr = ra;\
+    newframe->Xecode = rb;\
+    newframe->Xoffset_top = rc;\
+    newframe->Xims = re;\
+    newframe->Xeptrb = rf;\
+    newframe->Xflags = rg;\
+    newframe->Xprevframe = frame;\
+    frame = newframe;\
+    DPRINTF(("restarting from line %d\n", __LINE__));\
+    goto HEAP_RECURSE;\
+    }\
+  else\
+    {\
+    DPRINTF(("longjumped back to line %d\n", __LINE__));\
+    frame = md->thisframe;\
+    rx = frame->Xresult;\
+    }\
+  }
+
+#define RRETURN(ra)\
+  {\
+  heapframe *newframe = frame;\
+  frame = newframe->Xprevframe;\
+  (pcre_stack_free)(newframe);\
+  if (frame != NULL)\
+    {\
+    frame->Xresult = ra;\
+    md->thisframe = frame;\
+    longjmp(frame->Xwhere, 1);\
+    }\
+  return ra;\
+  }
+
+
+/* Structure for remembering the local variables in a private frame */
+
+typedef struct heapframe {
+    struct heapframe *Xprevframe;
+
+    /* Function arguments that may change */
+
+    const uschar *Xeptr;
+    const uschar *Xecode;
+    int Xoffset_top;
+    long int Xims;
+    eptrblock *Xeptrb;
+    int Xflags;
+
+    /* Function local variables */
+
+    const uschar *Xcallpat;
+    const uschar *Xcharptr;
+    const uschar *Xdata;
+    const uschar *Xnext;
+    const uschar *Xpp;
+    const uschar *Xprev;
+    const uschar *Xsaved_eptr;
+
+    recursion_info Xnew_recursive;
+
+    BOOL Xcur_is_word;
+    BOOL Xcondition;
+    BOOL Xminimize;
+    BOOL Xprev_is_word;
+
+    unsigned long int Xoriginal_ims;
+
+#ifdef SUPPORT_UCP
+    int Xprop_type;
+    int Xprop_fail_result;
+    int Xprop_category;
+    int Xprop_chartype;
+    int Xprop_othercase;
+    int Xprop_test_against;
+    int *Xprop_test_variable;
+#endif
+
+    int Xctype;
+    int Xfc;
+    int Xfi;
+    int Xlength;
+    int Xmax;
+    int Xmin;
+    int Xnumber;
+    int Xoffset;
+    int Xop;
+    int Xsave_capture_last;
+    int Xsave_offset1, Xsave_offset2, Xsave_offset3;
+    int Xstacksave[REC_STACK_SAVE_MAX];
+
+    eptrblock Xnewptrb;
+
+    /* Place to pass back result, and where to jump back to */
+
+    int Xresult;
+    jmp_buf Xwhere;
+
+} heapframe;
+
+#endif
+
+
+/***************************************************************************
+***************************************************************************/
+
+
+
+/*************************************************
+*         Match from current position            *
+*************************************************/
+
+/* On entry ecode points to the first opcode, and eptr to the first character
+   in the subject string, while eptrb holds the value of eptr at the start of the
+   last bracketed group - used for breaking infinite loops matching zero-length
+   strings. This function is called recursively in many circumstances. Whenever it
+   returns a negative (error) response, the outer incarnation must also return the
+   same response.
+
+   Performance note: It might be tempting to extract commonly used fields from the
+   md structure (e.g. utf8, end_subject) into individual variables to improve
+   performance. Tests using gcc on a SPARC disproved this; in the first case, it
+   made performance worse.
+
+   Arguments:
+   eptr        pointer in subject
+   ecode       position in code
+   offset_top  current top pointer
+   md          pointer to "static" info for the match
+   ims         current /i, /m, and /s options
+   eptrb       pointer to chain of blocks containing eptr at start of
+   brackets - for testing for empty matches
+   flags       can contain
+   match_condassert - this is an assertion condition
+   match_isgroup - this is the start of a bracketed group
+
+   Returns:       MATCH_MATCH if matched            )  these values are >= 0
+   MATCH_NOMATCH if failed to match  )
+   a negative PCRE_ERROR_xxx value if aborted by an error condition
+   (e.g. stopped by recursion limit)
+ */
+
+static int
+match (REGISTER const uschar * eptr, REGISTER const uschar * ecode,
+       int offset_top, match_data * md, unsigned long int ims,
+       eptrblock * eptrb, int flags)
+{
+    /* These variables do not need to be preserved over recursion in this function,
+       so they can be ordinary variables in all cases. Mark them with "register"
+       because they are used a lot in loops. */
+
+    register int rrc;		/* Returns from recursive calls */
+    register int i;		/* Used for loops not involving calls to RMATCH() */
+    register int c;		/* Character values not kept over RMATCH() calls */
+
+    /* When recursion is not being used, all "local" variables that have to be
+       preserved over calls to RMATCH() are part of a "frame" which is obtained from
+       heap storage. Set up the top-level frame here; others are obtained from the
+       heap whenever RMATCH() does a "recursion". See the macro definitions above. */
+
+#ifdef NO_RECURSE
+    heapframe *frame = (pcre_stack_malloc) (sizeof (heapframe));
+    frame->Xprevframe = NULL;	/* Marks the top level */
+
+    /* Copy in the original argument variables */
+
+    frame->Xeptr = eptr;
+    frame->Xecode = ecode;
+    frame->Xoffset_top = offset_top;
+    frame->Xims = ims;
+    frame->Xeptrb = eptrb;
+    frame->Xflags = flags;
+
+    /* This is where control jumps back to to effect "recursion" */
+
+  HEAP_RECURSE:
+
+    /* Macros make the argument variables come from the current frame */
+
+#define eptr               frame->Xeptr
+#define ecode              frame->Xecode
+#define offset_top         frame->Xoffset_top
+#define ims                frame->Xims
+#define eptrb              frame->Xeptrb
+#define flags              frame->Xflags
+
+    /* Ditto for the local variables */
+
+#ifdef SUPPORT_UTF8
+#define charptr            frame->Xcharptr
+#endif
+#define callpat            frame->Xcallpat
+#define data               frame->Xdata
+#define next               frame->Xnext
+#define pp                 frame->Xpp
+#define prev               frame->Xprev
+#define saved_eptr         frame->Xsaved_eptr
+
+#define new_recursive      frame->Xnew_recursive
+
+#define cur_is_word        frame->Xcur_is_word
+#define condition          frame->Xcondition
+#define minimize           frame->Xminimize
+#define prev_is_word       frame->Xprev_is_word
+
+#define original_ims       frame->Xoriginal_ims
+
+#ifdef SUPPORT_UCP
+#define prop_type          frame->Xprop_type
+#define prop_fail_result   frame->Xprop_fail_result
+#define prop_category      frame->Xprop_category
+#define prop_chartype      frame->Xprop_chartype
+#define prop_othercase     frame->Xprop_othercase
+#define prop_test_against  frame->Xprop_test_against
+#define prop_test_variable frame->Xprop_test_variable
+#endif
+
+#define ctype              frame->Xctype
+#define fc                 frame->Xfc
+#define fi                 frame->Xfi
+#define length             frame->Xlength
+#define max                frame->Xmax
+#define min                frame->Xmin
+#define number             frame->Xnumber
+#define offset             frame->Xoffset
+#define op                 frame->Xop
+#define save_capture_last  frame->Xsave_capture_last
+#define save_offset1       frame->Xsave_offset1
+#define save_offset2       frame->Xsave_offset2
+#define save_offset3       frame->Xsave_offset3
+#define stacksave          frame->Xstacksave
+
+#define newptrb            frame->Xnewptrb
+
+    /* When recursion is being used, local variables are allocated on the stack and
+       get preserved during recursion in the normal way. In this environment, fi and
+       i, and fc and c, can be the same variables. */
+
+#else
+#define fi i
+#define fc c
+
+
+#ifdef SUPPORT_UTF8		/* Many of these variables are used ony */
+    const uschar *charptr;	/* small blocks of the code. My normal  */
+#endif				/* style of coding would have declared  */
+    const uschar *callpat;	/* them within each of those blocks.    */
+    const uschar *data;		/* However, in order to accommodate the */
+    const uschar *next;		/* version of this code that uses an    */
+    const uschar *pp;		/* external "stack" implemented on the  */
+    const uschar *prev;		/* heap, it is easier to declare them   */
+    const uschar *saved_eptr;	/* all here, so the declarations can    */
+    /* be cut out in a block. The only      */
+    recursion_info new_recursive;	/* declarations within blocks below are */
+    /* for variables that do not have to    */
+    BOOL cur_is_word;		/* be preserved over a recursive call   */
+    BOOL condition;		/* to RMATCH().                         */
+    BOOL minimize;
+    BOOL prev_is_word;
+
+    unsigned long int original_ims;
+
+#ifdef SUPPORT_UCP
+    int prop_type;
+    int prop_fail_result;
+    int prop_category;
+    int prop_chartype;
+    int prop_othercase;
+    int prop_test_against;
+    int *prop_test_variable;
+#endif
+
+    int ctype;
+    int length;
+    int max;
+    int min;
+    int number;
+    int offset;
+    int op;
+    int save_capture_last;
+    int save_offset1, save_offset2, save_offset3;
+    int stacksave[REC_STACK_SAVE_MAX];
+
+    eptrblock newptrb;
+#endif
+
+    /* These statements are here to stop the compiler complaining about unitialized
+       variables. */
+
+#ifdef SUPPORT_UCP
+    prop_fail_result = 0;
+    prop_test_against = 0;
+    prop_test_variable = NULL;
+#endif
+
+    /* OK, now we can get on with the real code of the function. Recursion is
+       specified by the macros RMATCH and RRETURN. When NO_RECURSE is *not* defined,
+       these just turn into a recursive call to match() and a "return", respectively.
+       However, RMATCH isn't like a function call because it's quite a complicated
+       macro. It has to be used in one particular way. This shouldn't, however, impact
+       performance when true recursion is being used. */
+
+    if (md->match_call_count++ >= md->match_limit)
+	RRETURN (PCRE_ERROR_MATCHLIMIT);
+
+    original_ims = ims;		/* Save for resetting on ')' */
+
+    /* At the start of a bracketed group, add the current subject pointer to the
+       stack of such pointers, to be re-instated at the end of the group when we hit
+       the closing ket. When match() is called in other circumstances, we don't add to
+       this stack. */
+
+    if ((flags & match_isgroup) != 0) {
+	newptrb.epb_prev = eptrb;
+	newptrb.epb_saved_eptr = eptr;
+	eptrb = &newptrb;
+    }
+
+    /* Now start processing the operations. */
+
+    for (;;) {
+	op = *ecode;
+	minimize = FALSE;
+
+	/* For partial matching, remember if we ever hit the end of the subject after
+	   matching at least one subject character. */
+
+	if (md->partial &&
+	    eptr >= md->end_subject &&
+	    eptr > md->start_match) md->hitend = TRUE;
+
+	/* Opening capturing bracket. If there is space in the offset vector, save
+	   the current subject position in the working slot at the top of the vector. We
+	   mustn't change the current values of the data slot, because they may be set
+	   from a previous iteration of this group, and be referred to by a reference
+	   inside the group.
+
+	   If the bracket fails to match, we need to restore this value and also the
+	   values of the final offsets, in case they were set by a previous iteration of
+	   the same bracket.
+
+	   If there isn't enough space in the offset vector, treat this as if it were a
+	   non-capturing bracket. Don't worry about setting the flag for the error case
+	   here; that is handled in the code for KET. */
+
+	if (op > OP_BRA) {
+	    number = op - OP_BRA;
+
+	    /* For extended extraction brackets (large number), we have to fish out the
+	       number from a dummy opcode at the start. */
+
+	    if (number > EXTRACT_BASIC_MAX)
+		number = GET2 (ecode, 2 + LINK_SIZE);
+	    offset = number << 1;
+
+#ifdef DEBUG
+	    printf ("start bracket %d subject=", number);
+	    pchars (eptr, 16, TRUE, md);
+	    printf ("\n");
+#endif
+
+	    if (offset < md->offset_max) {
+		save_offset1 = md->offset_vector[offset];
+		save_offset2 = md->offset_vector[offset + 1];
+		save_offset3 = md->offset_vector[md->offset_end - number];
+		save_capture_last = md->capture_last;
+
+		DPRINTF (
+			 ("saving %d %d %d\n", save_offset1, save_offset2,
+			  save_offset3));
+		md->offset_vector[md->offset_end - number] =
+		    eptr - md->start_subject;
+
+		do {
+		    RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top,
+			    md, ims, eptrb, match_isgroup);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		    md->capture_last = save_capture_last;
+		    ecode += GET (ecode, 1);
+		}
+		while (*ecode == OP_ALT);
+
+		DPRINTF (("bracket %d failed\n", number));
+
+		md->offset_vector[offset] = save_offset1;
+		md->offset_vector[offset + 1] = save_offset2;
+		md->offset_vector[md->offset_end - number] = save_offset3;
+
+		RRETURN (MATCH_NOMATCH);
+	    }
+
+	    /* Insufficient room for saving captured contents */
+
+	    else
+		op = OP_BRA;
+	}
+
+	/* Other types of node can be handled by a switch */
+
+	switch (op) {
+	case OP_BRA:		/* Non-capturing bracket: optimized */
+	    DPRINTF (("start bracket 0\n"));
+	    do {
+		RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md,
+			ims, eptrb, match_isgroup);
+		if (rrc != MATCH_NOMATCH)
+		    RRETURN (rrc);
+		ecode += GET (ecode, 1);
+	    }
+	    while (*ecode == OP_ALT);
+	    DPRINTF (("bracket 0 failed\n"));
+	    RRETURN (MATCH_NOMATCH);
+
+	    /* Conditional group: compilation checked that there are no more than
+	       two branches. If the condition is false, skipping the first branch takes us
+	       past the end if there is only one branch, but that's OK because that is
+	       exactly what going to the ket would do. */
+
+	case OP_COND:
+	    if (ecode[LINK_SIZE + 1] == OP_CREF) {	/* Condition extract or recurse test */
+		offset = GET2 (ecode, LINK_SIZE + 2) << 1;	/* Doubled ref number */
+		condition = (offset == CREF_RECURSE * 2) ?
+		    (md->recursive != NULL) :
+		    (offset < offset_top
+		     && md->offset_vector[offset] >= 0);
+		RMATCH (rrc, eptr,
+			ecode +
+			(condition ? (LINK_SIZE + 4)
+			 : (LINK_SIZE + 1 + GET (ecode, 1))), offset_top,
+			md, ims, eptrb, match_isgroup);
+		RRETURN (rrc);
+	    }
+
+	    /* The condition is an assertion. Call match() to evaluate it - setting
+	       the final argument TRUE causes it to stop at the end of an assertion. */
+
+	    else {
+		RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md,
+			ims, NULL, match_condassert | match_isgroup);
+		if (rrc == MATCH_MATCH) {
+		    ecode += 1 + LINK_SIZE + GET (ecode, LINK_SIZE + 2);
+		    while (*ecode == OP_ALT)
+			ecode += GET (ecode, 1);
+		} else if (rrc != MATCH_NOMATCH) {
+		    RRETURN (rrc);	/* Need braces because of following else */
+		} else
+		    ecode += GET (ecode, 1);
+		RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md,
+			ims, eptrb, match_isgroup);
+		RRETURN (rrc);
+	    }
+	    /* Control never reaches here */
+
+	    /* Skip over conditional reference or large extraction number data if
+	       encountered. */
+
+	case OP_CREF:
+	case OP_BRANUMBER:
+	    ecode += 3;
+	    break;
+
+	    /* End of the pattern. If we are in a recursion, we should restore the
+	       offsets appropriately and continue from after the call. */
+
+	case OP_END:
+	    if (md->recursive != NULL && md->recursive->group_num == 0) {
+		recursion_info *rec = md->recursive;
+		DPRINTF (("Hit the end in a (?0) recursion\n"));
+		md->recursive = rec->prevrec;
+		memmove (md->offset_vector, rec->offset_save,
+			 rec->saved_max * sizeof (int));
+		md->start_match = rec->save_start;
+		ims = original_ims;
+		ecode = rec->after_call;
+		break;
+	    }
+
+	    /* Otherwise, if PCRE_NOTEMPTY is set, fail if we have matched an empty
+	       string - backtracking will then try other alternatives, if any. */
+
+	    if (md->notempty && eptr == md->start_match)
+		RRETURN (MATCH_NOMATCH);
+	    md->end_match_ptr = eptr;	/* Record where we ended */
+	    md->end_offset_top = offset_top;	/* and how many extracts were taken */
+	    RRETURN (MATCH_MATCH);
+
+	    /* Change option settings */
+
+	case OP_OPT:
+	    ims = ecode[1];
+	    ecode += 2;
+	    DPRINTF (("ims set to %02lx\n", ims));
+	    break;
+
+	    /* Assertion brackets. Check the alternative branches in turn - the
+	       matching won't pass the KET for an assertion. If any one branch matches,
+	       the assertion is true. Lookbehind assertions have an OP_REVERSE item at the
+	       start of each branch to move the current point backwards, so the code at
+	       this level is identical to the lookahead case. */
+
+	case OP_ASSERT:
+	case OP_ASSERTBACK:
+	    do {
+		RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md,
+			ims, NULL, match_isgroup);
+		if (rrc == MATCH_MATCH)
+		    break;
+		if (rrc != MATCH_NOMATCH)
+		    RRETURN (rrc);
+		ecode += GET (ecode, 1);
+	    }
+	    while (*ecode == OP_ALT);
+	    if (*ecode == OP_KET)
+		RRETURN (MATCH_NOMATCH);
+
+	    /* If checking an assertion for a condition, return MATCH_MATCH. */
+
+	    if ((flags & match_condassert) != 0)
+		RRETURN (MATCH_MATCH);
+
+	    /* Continue from after the assertion, updating the offsets high water
+	       mark, since extracts may have been taken during the assertion. */
+
+	    do
+		ecode += GET (ecode, 1);
+	    while (*ecode == OP_ALT);
+	    ecode += 1 + LINK_SIZE;
+	    offset_top = md->end_offset_top;
+	    continue;
+
+	    /* Negative assertion: all branches must fail to match */
+
+	case OP_ASSERT_NOT:
+	case OP_ASSERTBACK_NOT:
+	    do {
+		RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top, md,
+			ims, NULL, match_isgroup);
+		if (rrc == MATCH_MATCH)
+		    RRETURN (MATCH_NOMATCH);
+		if (rrc != MATCH_NOMATCH)
+		    RRETURN (rrc);
+		ecode += GET (ecode, 1);
+	    }
+	    while (*ecode == OP_ALT);
+
+	    if ((flags & match_condassert) != 0)
+		RRETURN (MATCH_MATCH);
+
+	    ecode += 1 + LINK_SIZE;
+	    continue;
+
+	    /* Move the subject pointer back. This occurs only at the start of
+	       each branch of a lookbehind assertion. If we are too close to the start to
+	       move back, this match function fails. When working with UTF-8 we move
+	       back a number of characters, not bytes. */
+
+	case OP_REVERSE:
+#ifdef SUPPORT_UTF8
+	    if (1 /* md->utf8 */ ) {
+		c = GET (ecode, 1);
+		for (i = 0; i < c; i++) {
+		    eptr--;
+		    if (eptr < md->start_subject)
+			RRETURN (MATCH_NOMATCH);
+		    BACKCHAR (eptr)
+		}
+	    } else
+#endif
+
+		/* No UTF-8 support, or not in UTF-8 mode: count is byte count */
+
+	    {
+		eptr -= GET (ecode, 1);
+		if (eptr < md->start_subject)
+		    RRETURN (MATCH_NOMATCH);
+	    }
+
+	    /* Skip to next op code */
+
+	    ecode += 1 + LINK_SIZE;
+	    break;
+
+	    /* The callout item calls an external function, if one is provided, passing
+	       details of the match so far. This is mainly for debugging, though the
+	       function is able to force a failure. */
+
+	case OP_CALLOUT:
+	    if (pcre_callout != NULL) {
+		pcre_callout_block cb;
+		cb.version = 1;	/* Version 1 of the callout block */
+		cb.callout_number = ecode[1];
+		cb.offset_vector = md->offset_vector;
+		cb.subject = (const char *) md->start_subject;
+		cb.subject_length = md->end_subject - md->start_subject;
+		cb.start_match = md->start_match - md->start_subject;
+		cb.current_position = eptr - md->start_subject;
+		cb.pattern_position = GET (ecode, 2);
+		cb.next_item_length = GET (ecode, 2 + LINK_SIZE);
+		cb.capture_top = offset_top / 2;
+		cb.capture_last = md->capture_last;
+		cb.callout_data = md->callout_data;
+		if ((rrc = (*pcre_callout) (&cb)) > 0)
+		    RRETURN (MATCH_NOMATCH);
+		if (rrc < 0)
+		    RRETURN (rrc);
+	    }
+	    ecode += 2 + 2 * LINK_SIZE;
+	    break;
+
+	    /* Recursion either matches the current regex, or some subexpression. The
+	       offset data is the offset to the starting bracket from the start of the
+	       whole pattern. (This is so that it works from duplicated subpatterns.)
+
+	       If there are any capturing brackets started but not finished, we have to
+	       save their starting points and reinstate them after the recursion. However,
+	       we don't know how many such there are (offset_top records the completed
+	       total) so we just have to save all the potential data. There may be up to
+	       65535 such values, which is too large to put on the stack, but using malloc
+	       for small numbers seems expensive. As a compromise, the stack is used when
+	       there are no more than REC_STACK_SAVE_MAX values to store; otherwise malloc
+	       is used. A problem is what to do if the malloc fails ... there is no way of
+	       returning to the top level with an error. Save the top REC_STACK_SAVE_MAX
+	       values on the stack, and accept that the rest may be wrong.
+
+	       There are also other values that have to be saved. We use a chained
+	       sequence of blocks that actually live on the stack. Thanks to Robin Houston
+	       for the original version of this logic. */
+
+	case OP_RECURSE:
+	    {
+		callpat = md->start_code + GET (ecode, 1);
+		new_recursive.group_num = *callpat - OP_BRA;
+
+		/* For extended extraction brackets (large number), we have to fish out
+		   the number from a dummy opcode at the start. */
+
+		if (new_recursive.group_num > EXTRACT_BASIC_MAX)
+		    new_recursive.group_num =
+			GET2 (callpat, 2 + LINK_SIZE);
+
+		/* Add to "recursing stack" */
+
+		new_recursive.prevrec = md->recursive;
+		md->recursive = &new_recursive;
+
+		/* Find where to continue from afterwards */
+
+		ecode += 1 + LINK_SIZE;
+		new_recursive.after_call = ecode;
+
+		/* Now save the offset data. */
+
+		new_recursive.saved_max = md->offset_end;
+		if (new_recursive.saved_max <= REC_STACK_SAVE_MAX)
+		    new_recursive.offset_save = stacksave;
+		else {
+		    new_recursive.offset_save =
+			(int *) (pcre_malloc) (new_recursive.saved_max *
+					       sizeof (int));
+		    if (new_recursive.offset_save == NULL)
+			RRETURN (PCRE_ERROR_NOMEMORY);
+		}
+
+		memcpy (new_recursive.offset_save, md->offset_vector,
+			new_recursive.saved_max * sizeof (int));
+		new_recursive.save_start = md->start_match;
+		md->start_match = eptr;
+
+		/* OK, now we can do the recursion. For each top-level alternative we
+		   restore the offset and recursion data. */
+
+		DPRINTF (
+			 ("Recursing into group %d\n",
+			  new_recursive.group_num));
+		do {
+		    RMATCH (rrc, eptr, callpat + 1 + LINK_SIZE, offset_top,
+			    md, ims, eptrb, match_isgroup);
+		    if (rrc == MATCH_MATCH) {
+			md->recursive = new_recursive.prevrec;
+			if (new_recursive.offset_save != stacksave)
+			    (pcre_free) (new_recursive.offset_save);
+			RRETURN (MATCH_MATCH);
+		    } else if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+
+		    md->recursive = &new_recursive;
+		    memcpy (md->offset_vector, new_recursive.offset_save,
+			    new_recursive.saved_max * sizeof (int));
+		    callpat += GET (callpat, 1);
+		}
+		while (*callpat == OP_ALT);
+
+		DPRINTF (("Recursion didn't match\n"));
+		md->recursive = new_recursive.prevrec;
+		if (new_recursive.offset_save != stacksave)
+		    (pcre_free) (new_recursive.offset_save);
+		RRETURN (MATCH_NOMATCH);
+	    }
+	    /* Control never reaches here */
+
+	    /* "Once" brackets are like assertion brackets except that after a match,
+	       the point in the subject string is not moved back. Thus there can never be
+	       a move back into the brackets. Friedl calls these "atomic" subpatterns.
+	       Check the alternative branches in turn - the matching won't pass the KET
+	       for this kind of subpattern. If any one branch matches, we carry on as at
+	       the end of a normal bracket, leaving the subject pointer. */
+
+	case OP_ONCE:
+	    {
+		prev = ecode;
+		saved_eptr = eptr;
+
+		do {
+		    RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top,
+			    md, ims, eptrb, match_isgroup);
+		    if (rrc == MATCH_MATCH)
+			break;
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		    ecode += GET (ecode, 1);
+		}
+		while (*ecode == OP_ALT);
+
+		/* If hit the end of the group (which could be repeated), fail */
+
+		if (*ecode != OP_ONCE && *ecode != OP_ALT)
+		    RRETURN (MATCH_NOMATCH);
+
+		/* Continue as from after the assertion, updating the offsets high water
+		   mark, since extracts may have been taken. */
+
+		do
+		    ecode += GET (ecode, 1);
+		while (*ecode == OP_ALT);
+
+		offset_top = md->end_offset_top;
+		eptr = md->end_match_ptr;
+
+		/* For a non-repeating ket, just continue at this level. This also
+		   happens for a repeating ket if no characters were matched in the group.
+		   This is the forcible breaking of infinite loops as implemented in Perl
+		   5.005. If there is an options reset, it will get obeyed in the normal
+		   course of events. */
+
+		if (*ecode == OP_KET || eptr == saved_eptr) {
+		    ecode += 1 + LINK_SIZE;
+		    break;
+		}
+
+		/* The repeating kets try the rest of the pattern or restart from the
+		   preceding bracket, in the appropriate order. We need to reset any options
+		   that changed within the bracket before re-running it, so check the next
+		   opcode. */
+
+		if (ecode[1 + LINK_SIZE] == OP_OPT) {
+		    ims = (ims & ~PCRE_IMS) | ecode[4];
+		    DPRINTF (("ims set to %02lx at group repeat\n", ims));
+		}
+
+		if (*ecode == OP_KETRMIN) {
+		    RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top,
+			    md, ims, eptrb, 0);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		    RMATCH (rrc, eptr, prev, offset_top, md, ims, eptrb,
+			    match_isgroup);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		} else {	/* OP_KETRMAX */
+
+		    RMATCH (rrc, eptr, prev, offset_top, md, ims, eptrb,
+			    match_isgroup);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		    RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top,
+			    md, ims, eptrb, 0);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		}
+	    }
+	    RRETURN (MATCH_NOMATCH);
+
+	    /* An alternation is the end of a branch; scan along to find the end of the
+	       bracketed group and go to there. */
+
+	case OP_ALT:
+	    do
+		ecode += GET (ecode, 1);
+	    while (*ecode == OP_ALT);
+	    break;
+
+	    /* BRAZERO and BRAMINZERO occur just before a bracket group, indicating
+	       that it may occur zero times. It may repeat infinitely, or not at all -
+	       i.e. it could be ()* or ()? in the pattern. Brackets with fixed upper
+	       repeat limits are compiled as a number of copies, with the optional ones
+	       preceded by BRAZERO or BRAMINZERO. */
+
+	case OP_BRAZERO:
+	    {
+		next = ecode + 1;
+		RMATCH (rrc, eptr, next, offset_top, md, ims, eptrb,
+			match_isgroup);
+		if (rrc != MATCH_NOMATCH)
+		    RRETURN (rrc);
+		do
+		    next += GET (next, 1);
+		while (*next == OP_ALT);
+		ecode = next + 1 + LINK_SIZE;
+	    }
+	    break;
+
+	case OP_BRAMINZERO:
+	    {
+		next = ecode + 1;
+		do
+		    next += GET (next, 1);
+		while (*next == OP_ALT);
+		RMATCH (rrc, eptr, next + 1 + LINK_SIZE, offset_top, md,
+			ims, eptrb, match_isgroup);
+		if (rrc != MATCH_NOMATCH)
+		    RRETURN (rrc);
+		ecode++;
+	    }
+	    break;
+
+	    /* End of a group, repeated or non-repeating. If we are at the end of
+	       an assertion "group", stop matching and return MATCH_MATCH, but record the
+	       current high water mark for use by positive assertions. Do this also
+	       for the "once" (not-backup up) groups. */
+
+	case OP_KET:
+	case OP_KETRMIN:
+	case OP_KETRMAX:
+	    {
+		prev = ecode - GET (ecode, 1);
+		saved_eptr = eptrb->epb_saved_eptr;
+
+		/* Back up the stack of bracket start pointers. */
+
+		eptrb = eptrb->epb_prev;
+
+		if (*prev == OP_ASSERT || *prev == OP_ASSERT_NOT ||
+		    *prev == OP_ASSERTBACK || *prev == OP_ASSERTBACK_NOT ||
+		    *prev == OP_ONCE) {
+		    md->end_match_ptr = eptr;	/* For ONCE */
+		    md->end_offset_top = offset_top;
+		    RRETURN (MATCH_MATCH);
+		}
+
+		/* In all other cases except a conditional group we have to check the
+		   group number back at the start and if necessary complete handling an
+		   extraction by setting the offsets and bumping the high water mark. */
+
+		if (*prev != OP_COND) {
+		    number = *prev - OP_BRA;
+
+		    /* For extended extraction brackets (large number), we have to fish out
+		       the number from a dummy opcode at the start. */
+
+		    if (number > EXTRACT_BASIC_MAX)
+			number = GET2 (prev, 2 + LINK_SIZE);
+		    offset = number << 1;
+
+#ifdef DEBUG
+		    printf ("end bracket %d", number);
+		    printf ("\n");
+#endif
+
+		    /* Test for a numbered group. This includes groups called as a result
+		       of recursion. Note that whole-pattern recursion is coded as a recurse
+		       into group 0, so it won't be picked up here. Instead, we catch it when
+		       the OP_END is reached. */
+
+		    if (number > 0) {
+			md->capture_last = number;
+			if (offset >= md->offset_max)
+			    md->offset_overflow = TRUE;
+			else {
+			    md->offset_vector[offset] =
+				md->offset_vector[md->offset_end - number];
+			    md->offset_vector[offset + 1] =
+				eptr - md->start_subject;
+			    if (offset_top <= offset)
+				offset_top = offset + 2;
+			}
+
+			/* Handle a recursively called group. Restore the offsets
+			   appropriately and continue from after the call. */
+
+			if (md->recursive != NULL
+			    && md->recursive->group_num == number) {
+			    recursion_info *rec = md->recursive;
+			    DPRINTF (
+				     ("Recursion (%d) succeeded - continuing\n",
+				      number));
+			    md->recursive = rec->prevrec;
+			    md->start_match = rec->save_start;
+			    memcpy (md->offset_vector, rec->offset_save,
+				    rec->saved_max * sizeof (int));
+			    ecode = rec->after_call;
+			    ims = original_ims;
+			    break;
+			}
+		    }
+		}
+
+		/* Reset the value of the ims flags, in case they got changed during
+		   the group. */
+
+		ims = original_ims;
+		DPRINTF (("ims reset to %02lx\n", ims));
+
+		/* For a non-repeating ket, just continue at this level. This also
+		   happens for a repeating ket if no characters were matched in the group.
+		   This is the forcible breaking of infinite loops as implemented in Perl
+		   5.005. If there is an options reset, it will get obeyed in the normal
+		   course of events. */
+
+		if (*ecode == OP_KET || eptr == saved_eptr) {
+		    ecode += 1 + LINK_SIZE;
+		    break;
+		}
+
+		/* The repeating kets try the rest of the pattern or restart from the
+		   preceding bracket, in the appropriate order. */
+
+		if (*ecode == OP_KETRMIN) {
+		    RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top,
+			    md, ims, eptrb, 0);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		    RMATCH (rrc, eptr, prev, offset_top, md, ims, eptrb,
+			    match_isgroup);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		} else {	/* OP_KETRMAX */
+
+		    RMATCH (rrc, eptr, prev, offset_top, md, ims, eptrb,
+			    match_isgroup);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		    RMATCH (rrc, eptr, ecode + 1 + LINK_SIZE, offset_top,
+			    md, ims, eptrb, 0);
+		    if (rrc != MATCH_NOMATCH)
+			RRETURN (rrc);
+		}
+	    }
+
+	    RRETURN (MATCH_NOMATCH);
+
+	    /* Start of subject unless notbol, or after internal newline if multiline */
+
+	case OP_CIRC:
+	    if (md->notbol && eptr == md->start_subject)
+		RRETURN (MATCH_NOMATCH);
+	    if ((ims & PCRE_MULTILINE) != 0) {
+		if (eptr != md->start_subject && eptr[-1] != NEWLINE)
+		    RRETURN (MATCH_NOMATCH);
+		ecode++;
+		break;
+	    }
+	    /* ... else fall through */
+
+	    /* Start of subject assertion */
+
+	case OP_SOD:
+	    if (eptr != md->start_subject)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	    /* Start of match assertion */
+
+	case OP_SOM:
+	    if (eptr != md->start_subject + md->start_offset)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	    /* Assert before internal newline if multiline, or before a terminating
+	       newline unless endonly is set, else end of subject unless noteol is set. */
+
+	case OP_DOLL:
+	    if ((ims & PCRE_MULTILINE) != 0) {
+		if (eptr < md->end_subject) {
+		    if (*eptr != NEWLINE)
+			RRETURN (MATCH_NOMATCH);
+		} else {
+		    if (md->noteol)
+			RRETURN (MATCH_NOMATCH);
+		}
+		ecode++;
+		break;
+	    } else {
+		if (md->noteol)
+		    RRETURN (MATCH_NOMATCH);
+		if (!md->endonly) {
+		    if (eptr < md->end_subject - 1 ||
+			(eptr == md->end_subject - 1 && *eptr != NEWLINE))
+			RRETURN (MATCH_NOMATCH);
+		    ecode++;
+		    break;
+		}
+	    }
+	    /* ... else fall through */
+
+	    /* End of subject assertion (\z) */
+
+	case OP_EOD:
+	    if (eptr < md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	    /* End of subject or ending \n assertion (\Z) */
+
+	case OP_EODN:
+	    if (eptr < md->end_subject - 1 ||
+		(eptr == md->end_subject - 1 && *eptr != NEWLINE))
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	    /* Word boundary assertions */
+
+	case OP_NOT_WORD_BOUNDARY:
+	case OP_WORD_BOUNDARY:
+	    {
+
+		/* Find out if the previous and current characters are "word" characters.
+		   It takes a bit more work in UTF-8 mode. Characters > 255 are assumed to
+		   be "non-word" characters. */
+
+#ifdef SUPPORT_UTF8
+		if (1 /* md->utf8 */ ) {
+		    if (eptr == md->start_subject)
+			prev_is_word = FALSE;
+		    else {
+			const uschar *lastptr = eptr - 1;
+			while ((*lastptr & 0xc0) == 0x80)
+			    lastptr--;
+			GETCHAR (c, lastptr);
+			prev_is_word = c < 256
+			    && (md->ctypes[c] & ctype_word) != 0;
+		    }
+		    if (eptr >= md->end_subject)
+			cur_is_word = FALSE;
+		    else {
+			GETCHAR (c, eptr);
+			cur_is_word = c < 256
+			    && (md->ctypes[c] & ctype_word) != 0;
+		    }
+		} else
+#endif
+
+		    /* More streamlined when not in UTF-8 mode */
+
+		{
+		    prev_is_word = (eptr != md->start_subject) &&
+			((md->ctypes[eptr[-1]] & ctype_word) != 0);
+		    cur_is_word = (eptr < md->end_subject) &&
+			((md->ctypes[*eptr] & ctype_word) != 0);
+		}
+
+		/* Now see if the situation is what we want */
+
+		if ((*ecode++ == OP_WORD_BOUNDARY) ?
+		    cur_is_word == prev_is_word : cur_is_word !=
+		    prev_is_word) RRETURN (MATCH_NOMATCH);
+	    }
+	    break;
+
+	    /* Match a single character type; inline for speed */
+
+	case OP_ANY:
+	    if ((ims & PCRE_DOTALL) == 0 && eptr < md->end_subject
+		&& *eptr == NEWLINE)
+		RRETURN (MATCH_NOMATCH);
+	    if (eptr++ >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+#ifdef SUPPORT_UTF8
+	    if (1 /* md->utf8 */ )
+		while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80)
+		    eptr++;
+#endif
+	    ecode++;
+	    break;
+
+	    /* Match a single byte, even in UTF-8 mode. This opcode really does match
+	       any byte, even newline, independent of the setting of PCRE_DOTALL. */
+
+	case OP_ANYBYTE:
+	    if (eptr++ >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	case OP_NOT_DIGIT:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    if (
+#ifdef SUPPORT_UTF8
+		   c < 256 &&
+#endif
+		   (md->ctypes[c] & ctype_digit) != 0)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	case OP_DIGIT:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    if (
+#ifdef SUPPORT_UTF8
+		   c >= 256 ||
+#endif
+		   (md->ctypes[c] & ctype_digit) == 0)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	case OP_NOT_WHITESPACE:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    if (
+#ifdef SUPPORT_UTF8
+		   c < 256 &&
+#endif
+		   (md->ctypes[c] & ctype_space) != 0)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	case OP_WHITESPACE:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    if (
+#ifdef SUPPORT_UTF8
+		   c >= 256 ||
+#endif
+		   (md->ctypes[c] & ctype_space) == 0)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	case OP_NOT_WORDCHAR:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    if (
+#ifdef SUPPORT_UTF8
+		   c < 256 &&
+#endif
+		   (md->ctypes[c] & ctype_word) != 0)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+	case OP_WORDCHAR:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    if (
+#ifdef SUPPORT_UTF8
+		   c >= 256 ||
+#endif
+		   (md->ctypes[c] & ctype_word) == 0)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    break;
+
+#ifdef SUPPORT_UCP
+	    /* Check the next character by Unicode property. We will get here only
+	       if the support is in the binary; otherwise a compile-time error occurs. */
+
+	case OP_PROP:
+	case OP_NOTPROP:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    {
+		int chartype, rqdtype;
+		int othercase;
+		int category = ucp_findchar (c, &chartype, &othercase);
+
+		rqdtype = *(++ecode);
+		ecode++;
+
+		if (rqdtype >= 128) {
+		    if ((rqdtype - 128 != category) == (op == OP_PROP))
+			RRETURN (MATCH_NOMATCH);
+		} else {
+		    if ((rqdtype != chartype) == (op == OP_PROP))
+			RRETURN (MATCH_NOMATCH);
+		}
+	    }
+	    break;
+
+	    /* Match an extended Unicode sequence. We will get here only if the support
+	       is in the binary; otherwise a compile-time error occurs. */
+
+	case OP_EXTUNI:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    GETCHARINCTEST (c, eptr);
+	    {
+		int chartype;
+		int othercase;
+		int category = ucp_findchar (c, &chartype, &othercase);
+		if (category == ucp_M)
+		    RRETURN (MATCH_NOMATCH);
+		while (eptr < md->end_subject) {
+		    int len = 1;
+		    if (!1 /* md->utf8 */ )
+			c = *eptr;
+		    else {
+			GETCHARLEN (c, eptr, len);
+		    }
+		    category = ucp_findchar (c, &chartype, &othercase);
+		    if (category != ucp_M)
+			break;
+		    eptr += len;
+		}
+	    }
+	    ecode++;
+	    break;
+#endif
+
+
+	    /* Match a back reference, possibly repeatedly. Look past the end of the
+	       item to see if there is repeat information following. The code is similar
+	       to that for character classes, but repeated for efficiency. Then obey
+	       similar code to character type repeats - written out again for speed.
+	       However, if the referenced string is the empty string, always treat
+	       it as matched, any number of times (otherwise there could be infinite
+	       loops). */
+
+	case OP_REF:
+	    {
+		offset = GET2 (ecode, 1) << 1;	/* Doubled ref number */
+		ecode += 3;	/* Advance past item */
+
+		/* If the reference is unset, set the length to be longer than the amount
+		   of subject left; this ensures that every attempt at a match fails. We
+		   can't just fail here, because of the possibility of quantifiers with zero
+		   minima. */
+
+		length = (offset >= offset_top
+			  || md->offset_vector[offset] <
+			  0) ? md->end_subject - eptr +
+		    1 : md->offset_vector[offset + 1] -
+		    md->offset_vector[offset];
+
+		/* Set up for repetition, or handle the non-repeated case */
+
+		switch (*ecode) {
+		case OP_CRSTAR:
+		case OP_CRMINSTAR:
+		case OP_CRPLUS:
+		case OP_CRMINPLUS:
+		case OP_CRQUERY:
+		case OP_CRMINQUERY:
+		    c = *ecode++ - OP_CRSTAR;
+		    minimize = (c & 1) != 0;
+		    min = rep_min[c];	/* Pick up values from tables; */
+		    max = rep_max[c];	/* zero for max => infinity */
+		    if (max == 0)
+			max = INT_MAX;
+		    break;
+
+		case OP_CRRANGE:
+		case OP_CRMINRANGE:
+		    minimize = (*ecode == OP_CRMINRANGE);
+		    min = GET2 (ecode, 1);
+		    max = GET2 (ecode, 3);
+		    if (max == 0)
+			max = INT_MAX;
+		    ecode += 5;
+		    break;
+
+		default:	/* No repeat follows */
+		    if (!match_ref (offset, eptr, length, md, ims))
+			RRETURN (MATCH_NOMATCH);
+		    eptr += length;
+		    continue;	/* With the main loop */
+		}
+
+		/* If the length of the reference is zero, just continue with the
+		   main loop. */
+
+		if (length == 0)
+		    continue;
+
+		/* First, ensure the minimum number of matches are present. We get back
+		   the length of the reference string explicitly rather than passing the
+		   address of eptr, so that eptr can be a register variable. */
+
+		for (i = 1; i <= min; i++) {
+		    if (!match_ref (offset, eptr, length, md, ims))
+			RRETURN (MATCH_NOMATCH);
+		    eptr += length;
+		}
+
+		/* If min = max, continue at the same level without recursion.
+		   They are not both allowed to be zero. */
+
+		if (min == max)
+		    continue;
+
+		/* If minimizing, keep trying and advancing the pointer */
+
+		if (minimize) {
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max
+			    || !match_ref (offset, eptr, length, md, ims))
+			    RRETURN (MATCH_NOMATCH);
+			eptr += length;
+		    }
+		    /* Control never gets here */
+		}
+
+		/* If maximizing, find the longest string and work backwards */
+
+		else {
+		    pp = eptr;
+		    for (i = min; i < max; i++) {
+			if (!match_ref (offset, eptr, length, md, ims))
+			    break;
+			eptr += length;
+		    }
+		    while (eptr >= pp) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			eptr -= length;
+		    }
+		    RRETURN (MATCH_NOMATCH);
+		}
+	    }
+	    /* Control never gets here */
+
+
+
+	    /* Match a bit-mapped character class, possibly repeatedly. This op code is
+	       used when all the characters in the class have values in the range 0-255,
+	       and either the matching is caseful, or the characters are in the range
+	       0-127 when UTF-8 processing is enabled. The only difference between
+	       OP_CLASS and OP_NCLASS occurs when a data character outside the range is
+	       encountered.
+
+	       First, look past the end of the item to see if there is repeat information
+	       following. Then obey similar code to character type repeats - written out
+	       again for speed. */
+
+	case OP_NCLASS:
+	case OP_CLASS:
+	    {
+		data = ecode + 1;	/* Save for matching */
+		ecode += 33;	/* Advance past the item */
+
+		switch (*ecode) {
+		case OP_CRSTAR:
+		case OP_CRMINSTAR:
+		case OP_CRPLUS:
+		case OP_CRMINPLUS:
+		case OP_CRQUERY:
+		case OP_CRMINQUERY:
+		    c = *ecode++ - OP_CRSTAR;
+		    minimize = (c & 1) != 0;
+		    min = rep_min[c];	/* Pick up values from tables; */
+		    max = rep_max[c];	/* zero for max => infinity */
+		    if (max == 0)
+			max = INT_MAX;
+		    break;
+
+		case OP_CRRANGE:
+		case OP_CRMINRANGE:
+		    minimize = (*ecode == OP_CRMINRANGE);
+		    min = GET2 (ecode, 1);
+		    max = GET2 (ecode, 3);
+		    if (max == 0)
+			max = INT_MAX;
+		    ecode += 5;
+		    break;
+
+		default:	/* No repeat follows */
+		    min = max = 1;
+		    break;
+		}
+
+		/* First, ensure the minimum number of matches are present. */
+
+#ifdef SUPPORT_UTF8
+		/* UTF-8 mode */
+		if (1 /* md->utf8 */ ) {
+		    for (i = 1; i <= min; i++) {
+			if (eptr >= md->end_subject)
+			    RRETURN (MATCH_NOMATCH);
+			GETCHARINC (c, eptr);
+			if (c > 255) {
+			    if (op == OP_CLASS)
+				RRETURN (MATCH_NOMATCH);
+			} else {
+			    if ((data[c / 8] & (1 << (c & 7))) == 0)
+				RRETURN (MATCH_NOMATCH);
+			}
+		    }
+		} else
+#endif
+		    /* Not UTF-8 mode */
+		{
+		    for (i = 1; i <= min; i++) {
+			if (eptr >= md->end_subject)
+			    RRETURN (MATCH_NOMATCH);
+			c = *eptr++;
+			if ((data[c / 8] & (1 << (c & 7))) == 0)
+			    RRETURN (MATCH_NOMATCH);
+		    }
+		}
+
+		/* If max == min we can continue with the main loop without the
+		   need to recurse. */
+
+		if (min == max)
+		    continue;
+
+		/* If minimizing, keep testing the rest of the expression and advancing
+		   the pointer while it matches the class. */
+
+		if (minimize) {
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+		    if (1 /* md->utf8 */ ) {
+			for (fi = min;; fi++) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (fi >= max || eptr >= md->end_subject)
+				RRETURN (MATCH_NOMATCH);
+			    GETCHARINC (c, eptr);
+			    if (c > 255) {
+				if (op == OP_CLASS)
+				    RRETURN (MATCH_NOMATCH);
+			    } else {
+				if ((data[c / 8] & (1 << (c & 7))) == 0)
+				    RRETURN (MATCH_NOMATCH);
+			    }
+			}
+		    } else
+#endif
+			/* Not UTF-8 mode */
+		    {
+			for (fi = min;; fi++) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (fi >= max || eptr >= md->end_subject)
+				RRETURN (MATCH_NOMATCH);
+			    c = *eptr++;
+			    if ((data[c / 8] & (1 << (c & 7))) == 0)
+				RRETURN (MATCH_NOMATCH);
+			}
+		    }
+		    /* Control never gets here */
+		}
+
+		/* If maximizing, find the longest possible run, then work backwards. */
+
+		else {
+		    pp = eptr;
+
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+		    if (1 /* md->utf8 */ ) {
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (c, eptr, len);
+			    if (c > 255) {
+				if (op == OP_CLASS)
+				    break;
+			    } else {
+				if ((data[c / 8] & (1 << (c & 7))) == 0)
+				    break;
+			    }
+			    eptr += len;
+			}
+			for (;;) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (eptr-- == pp)
+				break;	/* Stop if tried at original pos */
+			    BACKCHAR (eptr);
+			}
+		    } else
+#endif
+			/* Not UTF-8 mode */
+		    {
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject)
+				break;
+			    c = *eptr;
+			    if ((data[c / 8] & (1 << (c & 7))) == 0)
+				break;
+			    eptr++;
+			}
+			while (eptr >= pp) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    eptr--;
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			}
+		    }
+
+		    RRETURN (MATCH_NOMATCH);
+		}
+	    }
+	    /* Control never gets here */
+
+
+	    /* Match an extended character class. This opcode is encountered only
+	       in UTF-8 mode, because that's the only time it is compiled. */
+
+#ifdef SUPPORT_UTF8
+	case OP_XCLASS:
+	    {
+		data = ecode + 1 + LINK_SIZE;	/* Save for matching */
+		ecode += GET (ecode, 1);	/* Advance past the item */
+
+		switch (*ecode) {
+		case OP_CRSTAR:
+		case OP_CRMINSTAR:
+		case OP_CRPLUS:
+		case OP_CRMINPLUS:
+		case OP_CRQUERY:
+		case OP_CRMINQUERY:
+		    c = *ecode++ - OP_CRSTAR;
+		    minimize = (c & 1) != 0;
+		    min = rep_min[c];	/* Pick up values from tables; */
+		    max = rep_max[c];	/* zero for max => infinity */
+		    if (max == 0)
+			max = INT_MAX;
+		    break;
+
+		case OP_CRRANGE:
+		case OP_CRMINRANGE:
+		    minimize = (*ecode == OP_CRMINRANGE);
+		    min = GET2 (ecode, 1);
+		    max = GET2 (ecode, 3);
+		    if (max == 0)
+			max = INT_MAX;
+		    ecode += 5;
+		    break;
+
+		default:	/* No repeat follows */
+		    min = max = 1;
+		    break;
+		}
+
+		/* First, ensure the minimum number of matches are present. */
+
+		for (i = 1; i <= min; i++) {
+		    if (eptr >= md->end_subject)
+			RRETURN (MATCH_NOMATCH);
+		    GETCHARINC (c, eptr);
+		    if (!match_xclass (c, data))
+			RRETURN (MATCH_NOMATCH);
+		}
+
+		/* If max == min we can continue with the main loop without the
+		   need to recurse. */
+
+		if (min == max)
+		    continue;
+
+		/* If minimizing, keep testing the rest of the expression and advancing
+		   the pointer while it matches the class. */
+
+		if (minimize) {
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max || eptr >= md->end_subject)
+			    RRETURN (MATCH_NOMATCH);
+			GETCHARINC (c, eptr);
+			if (!match_xclass (c, data))
+			    RRETURN (MATCH_NOMATCH);
+		    }
+		    /* Control never gets here */
+		}
+
+		/* If maximizing, find the longest possible run, then work backwards. */
+
+		else {
+		    pp = eptr;
+		    for (i = min; i < max; i++) {
+			int len = 1;
+			if (eptr >= md->end_subject)
+			    break;
+			GETCHARLEN (c, eptr, len);
+			if (!match_xclass (c, data))
+			    break;
+			eptr += len;
+		    }
+		    for (;;) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (eptr-- == pp)
+			    break;	/* Stop if tried at original pos */
+			BACKCHAR (eptr)
+		    }
+		    RRETURN (MATCH_NOMATCH);
+		}
+
+		/* Control never gets here */
+	    }
+#endif				/* End of XCLASS */
+
+	    /* Match a single character, casefully */
+
+	case OP_CHAR:
+#ifdef SUPPORT_UTF8
+	    if (1 /* md->utf8 */ ) {
+		length = 1;
+		ecode++;
+		GETCHARLEN (fc, ecode, length);
+		if (length > md->end_subject - eptr)
+		    RRETURN (MATCH_NOMATCH);
+		while (length-- > 0)
+		    if (*ecode++ != *eptr++)
+			RRETURN (MATCH_NOMATCH);
+	    } else
+#endif
+
+		/* Non-UTF-8 mode */
+	    {
+		if (md->end_subject - eptr < 1)
+		    RRETURN (MATCH_NOMATCH);
+		if (ecode[1] != *eptr++)
+		    RRETURN (MATCH_NOMATCH);
+		ecode += 2;
+	    }
+	    break;
+
+	    /* Match a single character, caselessly */
+
+	case OP_CHARNC:
+#ifdef SUPPORT_UTF8
+	    if (1 /* md->utf8 */ ) {
+		length = 1;
+		ecode++;
+		GETCHARLEN (fc, ecode, length);
+
+		if (length > md->end_subject - eptr)
+		    RRETURN (MATCH_NOMATCH);
+
+		/* If the pattern character's value is < 128, we have only one byte, and
+		   can use the fast lookup table. */
+
+		if (fc < 128) {
+		    if (md->lcc[*ecode++] != md->lcc[*eptr++])
+			RRETURN (MATCH_NOMATCH);
+		}
+
+		/* Otherwise we must pick up the subject character */
+
+		else {
+		    int dc;
+		    GETCHARINC (dc, eptr);
+		    ecode += length;
+
+		    /* If we have Unicode property support, we can use it to test the other
+		       case of the character, if there is one. The result of ucp_findchar() is
+		       < 0 if the char isn't found, and othercase is returned as zero if there
+		       isn't one. */
+
+		    if (fc != dc) {
+#ifdef SUPPORT_UCP
+			int chartype;
+			int othercase;
+			if (ucp_findchar (fc, &chartype, &othercase) < 0
+			    || dc != othercase)
+#endif
+			    RRETURN (MATCH_NOMATCH);
+		    }
+		}
+	    } else
+#endif				/* SUPPORT_UTF8 */
+
+		/* Non-UTF-8 mode */
+	    {
+		if (md->end_subject - eptr < 1)
+		    RRETURN (MATCH_NOMATCH);
+		if (md->lcc[ecode[1]] != md->lcc[*eptr++])
+		    RRETURN (MATCH_NOMATCH);
+		ecode += 2;
+	    }
+	    break;
+
+	    /* Match a single character repeatedly; different opcodes share code. */
+
+	case OP_EXACT:
+	    min = max = GET2 (ecode, 1);
+	    ecode += 3;
+	    goto REPEATCHAR;
+
+	case OP_UPTO:
+	case OP_MINUPTO:
+	    min = 0;
+	    max = GET2 (ecode, 1);
+	    minimize = *ecode == OP_MINUPTO;
+	    ecode += 3;
+	    goto REPEATCHAR;
+
+	case OP_STAR:
+	case OP_MINSTAR:
+	case OP_PLUS:
+	case OP_MINPLUS:
+	case OP_QUERY:
+	case OP_MINQUERY:
+	    c = *ecode++ - OP_STAR;
+	    minimize = (c & 1) != 0;
+	    min = rep_min[c];	/* Pick up values from tables; */
+	    max = rep_max[c];	/* zero for max => infinity */
+	    if (max == 0)
+		max = INT_MAX;
+
+	    /* Common code for all repeated single-character matches. We can give
+	       up quickly if there are fewer than the minimum number of characters left in
+	       the subject. */
+
+	  REPEATCHAR:
+#ifdef SUPPORT_UTF8
+	    if (1 /* md->utf8 */ ) {
+		length = 1;
+		charptr = ecode;
+		GETCHARLEN (fc, ecode, length);
+		if (min * length > md->end_subject - eptr)
+		    RRETURN (MATCH_NOMATCH);
+		ecode += length;
+
+		/* Handle multibyte character matching specially here. There is
+		   support for caseless matching if UCP support is present. */
+
+		if (length > 1) {
+		    int oclength = 0;
+		    uschar occhars[8];
+
+#ifdef SUPPORT_UCP
+		    int othercase;
+		    int chartype;
+		    if ((ims & PCRE_CASELESS) != 0 &&
+			ucp_findchar (fc, &chartype, &othercase) >= 0 &&
+			othercase > 0)
+			oclength = g_unichar_to_utf8 (othercase, occhars);
+#endif				/* SUPPORT_UCP */
+
+		    for (i = 1; i <= min; i++) {
+			if (memcmp (eptr, charptr, length) == 0)
+			    eptr += length;
+			/* Need braces because of following else */
+			else if (oclength == 0) {
+			    RRETURN (MATCH_NOMATCH);
+			} else {
+			    if (memcmp (eptr, occhars, oclength) != 0)
+				RRETURN (MATCH_NOMATCH);
+			    eptr += oclength;
+			}
+		    }
+
+		    if (min == max)
+			continue;
+
+		    if (minimize) {
+			for (fi = min;; fi++) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (fi >= max || eptr >= md->end_subject)
+				RRETURN (MATCH_NOMATCH);
+			    if (memcmp (eptr, charptr, length) == 0)
+				eptr += length;
+			    /* Need braces because of following else */
+			    else if (oclength == 0) {
+				RRETURN (MATCH_NOMATCH);
+			    } else {
+				if (memcmp (eptr, occhars, oclength) != 0)
+				    RRETURN (MATCH_NOMATCH);
+				eptr += oclength;
+			    }
+			}
+			/* Control never gets here */
+		    } else {
+			pp = eptr;
+			for (i = min; i < max; i++) {
+			    if (eptr > md->end_subject - length)
+				break;
+			    if (memcmp (eptr, charptr, length) == 0)
+				eptr += length;
+			    else if (oclength == 0)
+				break;
+			    else {
+				if (memcmp (eptr, occhars, oclength) != 0)
+				    break;
+				eptr += oclength;
+			    }
+			}
+			while (eptr >= pp) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    eptr -= length;
+			}
+			RRETURN (MATCH_NOMATCH);
+		    }
+		    /* Control never gets here */
+		}
+
+		/* If the length of a UTF-8 character is 1, we fall through here, and
+		   obey the code as for non-UTF-8 characters below, though in this case the
+		   value of fc will always be < 128. */
+	    } else
+#endif				/* SUPPORT_UTF8 */
+
+		/* When not in UTF-8 mode, load a single-byte character. */
+	    {
+		if (min > md->end_subject - eptr)
+		    RRETURN (MATCH_NOMATCH);
+		fc = *ecode++;
+	    }
+
+	    /* The value of fc at this point is always less than 256, though we may or
+	       may not be in UTF-8 mode. The code is duplicated for the caseless and
+	       caseful cases, for speed, since matching characters is likely to be quite
+	       common. First, ensure the minimum number of matches are present. If min =
+	       max, continue at the same level without recursing. Otherwise, if
+	       minimizing, keep trying the rest of the expression and advancing one
+	       matching character if failing, up to the maximum. Alternatively, if
+	       maximizing, find the maximum number of characters and work backwards. */
+
+	    DPRINTF (
+		     ("matching %c{%d,%d} against subject %.*s\n", fc, min,
+		      max, max, eptr));
+
+	    if ((ims & PCRE_CASELESS) != 0) {
+		fc = md->lcc[fc];
+		for (i = 1; i <= min; i++)
+		    if (fc != md->lcc[*eptr++])
+			RRETURN (MATCH_NOMATCH);
+		if (min == max)
+		    continue;
+		if (minimize) {
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max || eptr >= md->end_subject ||
+			    fc != md->lcc[*eptr++])
+			    RRETURN (MATCH_NOMATCH);
+		    }
+		    /* Control never gets here */
+		} else {
+		    pp = eptr;
+		    for (i = min; i < max; i++) {
+			if (eptr >= md->end_subject
+			    || fc != md->lcc[*eptr]) break;
+			eptr++;
+		    }
+		    while (eptr >= pp) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			eptr--;
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+		    }
+		    RRETURN (MATCH_NOMATCH);
+		}
+		/* Control never gets here */
+	    }
+
+	    /* Caseful comparisons (includes all multi-byte characters) */
+
+	    else {
+		for (i = 1; i <= min; i++)
+		    if (fc != *eptr++)
+			RRETURN (MATCH_NOMATCH);
+		if (min == max)
+		    continue;
+		if (minimize) {
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max || eptr >= md->end_subject
+			    || fc != *eptr++)
+			    RRETURN (MATCH_NOMATCH);
+		    }
+		    /* Control never gets here */
+		} else {
+		    pp = eptr;
+		    for (i = min; i < max; i++) {
+			if (eptr >= md->end_subject || fc != *eptr)
+			    break;
+			eptr++;
+		    }
+		    while (eptr >= pp) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			eptr--;
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+		    }
+		    RRETURN (MATCH_NOMATCH);
+		}
+	    }
+	    /* Control never gets here */
+
+	    /* Match a negated single one-byte character. The character we are
+	       checking can be multibyte. */
+
+	case OP_NOT:
+	    if (eptr >= md->end_subject)
+		RRETURN (MATCH_NOMATCH);
+	    ecode++;
+	    GETCHARINCTEST (c, eptr);
+	    if ((ims & PCRE_CASELESS) != 0) {
+#ifdef SUPPORT_UTF8
+		if (c < 256)
+#endif
+		    c = md->lcc[c];
+		if (md->lcc[*ecode++] == c)
+		    RRETURN (MATCH_NOMATCH);
+	    } else {
+		if (*ecode++ == c)
+		    RRETURN (MATCH_NOMATCH);
+	    }
+	    break;
+
+	    /* Match a negated single one-byte character repeatedly. This is almost a
+	       repeat of the code for a repeated single character, but I haven't found a
+	       nice way of commoning these up that doesn't require a test of the
+	       positive/negative option for each character match. Maybe that wouldn't add
+	       very much to the time taken, but character matching *is* what this is all
+	       about... */
+
+	case OP_NOTEXACT:
+	    min = max = GET2 (ecode, 1);
+	    ecode += 3;
+	    goto REPEATNOTCHAR;
+
+	case OP_NOTUPTO:
+	case OP_NOTMINUPTO:
+	    min = 0;
+	    max = GET2 (ecode, 1);
+	    minimize = *ecode == OP_NOTMINUPTO;
+	    ecode += 3;
+	    goto REPEATNOTCHAR;
+
+	case OP_NOTSTAR:
+	case OP_NOTMINSTAR:
+	case OP_NOTPLUS:
+	case OP_NOTMINPLUS:
+	case OP_NOTQUERY:
+	case OP_NOTMINQUERY:
+	    c = *ecode++ - OP_NOTSTAR;
+	    minimize = (c & 1) != 0;
+	    min = rep_min[c];	/* Pick up values from tables; */
+	    max = rep_max[c];	/* zero for max => infinity */
+	    if (max == 0)
+		max = INT_MAX;
+
+	    /* Common code for all repeated single-byte matches. We can give up quickly
+	       if there are fewer than the minimum number of bytes left in the
+	       subject. */
+
+	  REPEATNOTCHAR:
+	    if (min > md->end_subject - eptr)
+		RRETURN (MATCH_NOMATCH);
+	    fc = *ecode++;
+
+	    /* The code is duplicated for the caseless and caseful cases, for speed,
+	       since matching characters is likely to be quite common. First, ensure the
+	       minimum number of matches are present. If min = max, continue at the same
+	       level without recursing. Otherwise, if minimizing, keep trying the rest of
+	       the expression and advancing one matching character if failing, up to the
+	       maximum. Alternatively, if maximizing, find the maximum number of
+	       characters and work backwards. */
+
+	    DPRINTF (
+		     ("negative matching %c{%d,%d} against subject %.*s\n",
+		      fc, min, max, max, eptr));
+
+	    if ((ims & PCRE_CASELESS) != 0) {
+		fc = md->lcc[fc];
+
+#ifdef SUPPORT_UTF8
+		/* UTF-8 mode */
+		if (1 /* md->utf8 */ ) {
+		    register int d;
+		    for (i = 1; i <= min; i++) {
+			GETCHARINC (d, eptr);
+			if (d < 256)
+			    d = md->lcc[d];
+			if (fc == d)
+			    RRETURN (MATCH_NOMATCH);
+		    }
+		} else
+#endif
+
+		    /* Not UTF-8 mode */
+		{
+		    for (i = 1; i <= min; i++)
+			if (fc == md->lcc[*eptr++])
+			    RRETURN (MATCH_NOMATCH);
+		}
+
+		if (min == max)
+		    continue;
+
+		if (minimize) {
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+		    if (1 /* md->utf8 */ ) {
+			register int d;
+			for (fi = min;; fi++) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    GETCHARINC (d, eptr);
+			    if (d < 256)
+				d = md->lcc[d];
+			    if (fi >= max || eptr >= md->end_subject
+				|| fc == d)
+				RRETURN (MATCH_NOMATCH);
+			}
+		    } else
+#endif
+			/* Not UTF-8 mode */
+		    {
+			for (fi = min;; fi++) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (fi >= max || eptr >= md->end_subject
+				|| fc == md->lcc[*eptr++])
+				RRETURN (MATCH_NOMATCH);
+			}
+		    }
+		    /* Control never gets here */
+		}
+
+		/* Maximize case */
+
+		else {
+		    pp = eptr;
+
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+		    if (1 /* md->utf8 */ ) {
+			register int d;
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (d, eptr, len);
+			    if (d < 256)
+				d = md->lcc[d];
+			    if (fc == d)
+				break;
+			    eptr += len;
+			}
+			for (;;) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (eptr-- == pp)
+				break;	/* Stop if tried at original pos */
+			    BACKCHAR (eptr);
+			}
+		    } else
+#endif
+			/* Not UTF-8 mode */
+		    {
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject
+				|| fc == md->lcc[*eptr]) break;
+			    eptr++;
+			}
+			while (eptr >= pp) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    eptr--;
+			}
+		    }
+
+		    RRETURN (MATCH_NOMATCH);
+		}
+		/* Control never gets here */
+	    }
+
+	    /* Caseful comparisons */
+
+	    else {
+#ifdef SUPPORT_UTF8
+		/* UTF-8 mode */
+		if (1 /* md->utf8 */ ) {
+		    register int d;
+		    for (i = 1; i <= min; i++) {
+			GETCHARINC (d, eptr);
+			if (fc == d)
+			    RRETURN (MATCH_NOMATCH);
+		    }
+		} else
+#endif
+		    /* Not UTF-8 mode */
+		{
+		    for (i = 1; i <= min; i++)
+			if (fc == *eptr++)
+			    RRETURN (MATCH_NOMATCH);
+		}
+
+		if (min == max)
+		    continue;
+
+		if (minimize) {
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+		    if (1 /* md->utf8 */ ) {
+			register int d;
+			for (fi = min;; fi++) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    GETCHARINC (d, eptr);
+			    if (fi >= max || eptr >= md->end_subject
+				|| fc == d)
+				RRETURN (MATCH_NOMATCH);
+			}
+		    } else
+#endif
+			/* Not UTF-8 mode */
+		    {
+			for (fi = min;; fi++) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (fi >= max || eptr >= md->end_subject
+				|| fc == *eptr++)
+				RRETURN (MATCH_NOMATCH);
+			}
+		    }
+		    /* Control never gets here */
+		}
+
+		/* Maximize case */
+
+		else {
+		    pp = eptr;
+
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+		    if (1 /* md->utf8 */ ) {
+			register int d;
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (d, eptr, len);
+			    if (fc == d)
+				break;
+			    eptr += len;
+			}
+			for (;;) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    if (eptr-- == pp)
+				break;	/* Stop if tried at original pos */
+			    BACKCHAR (eptr);
+			}
+		    } else
+#endif
+			/* Not UTF-8 mode */
+		    {
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject || fc == *eptr)
+				break;
+			    eptr++;
+			}
+			while (eptr >= pp) {
+			    RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				    eptrb, 0);
+			    if (rrc != MATCH_NOMATCH)
+				RRETURN (rrc);
+			    eptr--;
+			}
+		    }
+
+		    RRETURN (MATCH_NOMATCH);
+		}
+	    }
+	    /* Control never gets here */
+
+	    /* Match a single character type repeatedly; several different opcodes
+	       share code. This is very similar to the code for single characters, but we
+	       repeat it in the interests of efficiency. */
+
+	case OP_TYPEEXACT:
+	    min = max = GET2 (ecode, 1);
+	    minimize = TRUE;
+	    ecode += 3;
+	    goto REPEATTYPE;
+
+	case OP_TYPEUPTO:
+	case OP_TYPEMINUPTO:
+	    min = 0;
+	    max = GET2 (ecode, 1);
+	    minimize = *ecode == OP_TYPEMINUPTO;
+	    ecode += 3;
+	    goto REPEATTYPE;
+
+	case OP_TYPESTAR:
+	case OP_TYPEMINSTAR:
+	case OP_TYPEPLUS:
+	case OP_TYPEMINPLUS:
+	case OP_TYPEQUERY:
+	case OP_TYPEMINQUERY:
+	    c = *ecode++ - OP_TYPESTAR;
+	    minimize = (c & 1) != 0;
+	    min = rep_min[c];	/* Pick up values from tables; */
+	    max = rep_max[c];	/* zero for max => infinity */
+	    if (max == 0)
+		max = INT_MAX;
+
+	    /* Common code for all repeated single character type matches. Note that
+	       in UTF-8 mode, '.' matches a character of any length, but for the other
+	       character types, the valid characters are all one-byte long. */
+
+	  REPEATTYPE:
+	    ctype = *ecode++;	/* Code for the character type */
+
+#ifdef SUPPORT_UCP
+	    if (ctype == OP_PROP || ctype == OP_NOTPROP) {
+		prop_fail_result = ctype == OP_NOTPROP;
+		prop_type = *ecode++;
+		if (prop_type >= 128) {
+		    prop_test_against = prop_type - 128;
+		    prop_test_variable = &prop_category;
+		} else {
+		    prop_test_against = prop_type;
+		    prop_test_variable = &prop_chartype;
+		}
+	    } else
+		prop_type = -1;
+#endif
+
+	    /* First, ensure the minimum number of matches are present. Use inline
+	       code for maximizing the speed, and do the type test once at the start
+	       (i.e. keep it out of the loop). Also we can test that there are at least
+	       the minimum number of bytes before we start. This isn't as effective in
+	       UTF-8 mode, but it does no harm. Separate the UTF-8 code completely as that
+	       is tidier. Also separate the UCP code, which can be the same for both UTF-8
+	       and single-bytes. */
+
+	    if (min > md->end_subject - eptr)
+		RRETURN (MATCH_NOMATCH);
+	    if (min > 0) {
+#ifdef SUPPORT_UCP
+		if (prop_type > 0) {
+		    for (i = 1; i <= min; i++) {
+			GETCHARINC (c, eptr);
+			prop_category =
+			    ucp_findchar (c, &prop_chartype,
+					  &prop_othercase);
+			if ((*prop_test_variable == prop_test_against) ==
+			    prop_fail_result) RRETURN (MATCH_NOMATCH);
+		    }
+		}
+
+		/* Match extended Unicode sequences. We will get here only if the
+		   support is in the binary; otherwise a compile-time error occurs. */
+
+		else if (ctype == OP_EXTUNI) {
+		    for (i = 1; i <= min; i++) {
+			GETCHARINCTEST (c, eptr);
+			prop_category =
+			    ucp_findchar (c, &prop_chartype,
+					  &prop_othercase);
+			if (prop_category == ucp_M)
+			    RRETURN (MATCH_NOMATCH);
+			while (eptr < md->end_subject) {
+			    int len = 1;
+			    if (!1 /* md->utf8 */ )
+				c = *eptr;
+			    else {
+				GETCHARLEN (c, eptr, len);
+			    }
+			    prop_category =
+				ucp_findchar (c, &prop_chartype,
+					      &prop_othercase);
+			    if (prop_category != ucp_M)
+				break;
+			    eptr += len;
+			}
+		    }
+		}
+
+		else
+#endif				/* SUPPORT_UCP */
+
+		    /* Handle all other cases when the coding is UTF-8 */
+
+#ifdef SUPPORT_UTF8
+		if (1 /* md->utf8 */ )
+		    switch (ctype) {
+		    case OP_ANY:
+			for (i = 1; i <= min; i++) {
+			    if (eptr >= md->end_subject ||
+				(*eptr++ == NEWLINE
+				 && (ims & PCRE_DOTALL) == 0))
+				RRETURN (MATCH_NOMATCH);
+			    while (eptr < md->end_subject
+				   && (*eptr & 0xc0) == 0x80)
+				eptr++;
+			}
+			break;
+
+		    case OP_ANYBYTE:
+			eptr += min;
+			break;
+
+		    case OP_NOT_DIGIT:
+			for (i = 1; i <= min; i++) {
+			    if (eptr >= md->end_subject)
+				RRETURN (MATCH_NOMATCH);
+			    GETCHARINC (c, eptr);
+			    if (c < 128
+				&& (md->ctypes[c] & ctype_digit) !=
+				0) RRETURN (MATCH_NOMATCH);
+			}
+			break;
+
+		    case OP_DIGIT:
+			for (i = 1; i <= min; i++) {
+			    if (eptr >= md->end_subject ||
+				*eptr >= 128
+				|| (md->ctypes[*eptr++] & ctype_digit) ==
+				0) RRETURN (MATCH_NOMATCH);
+			    /* No need to skip more bytes - we know it's a 1-byte character */
+			}
+			break;
+
+		    case OP_NOT_WHITESPACE:
+			for (i = 1; i <= min; i++) {
+			    if (eptr >= md->end_subject ||
+				(*eptr < 128
+				 && (md->ctypes[*eptr++] & ctype_space) !=
+				 0)) RRETURN (MATCH_NOMATCH);
+			    while (eptr < md->end_subject
+				   && (*eptr & 0xc0) == 0x80)
+				eptr++;
+			}
+			break;
+
+		    case OP_WHITESPACE:
+			for (i = 1; i <= min; i++) {
+			    if (eptr >= md->end_subject ||
+				*eptr >= 128
+				|| (md->ctypes[*eptr++] & ctype_space) ==
+				0) RRETURN (MATCH_NOMATCH);
+			    /* No need to skip more bytes - we know it's a 1-byte character */
+			}
+			break;
+
+		    case OP_NOT_WORDCHAR:
+			for (i = 1; i <= min; i++) {
+			    if (eptr >= md->end_subject ||
+				(*eptr < 128
+				 && (md->ctypes[*eptr++] & ctype_word) !=
+				 0)) RRETURN (MATCH_NOMATCH);
+			    while (eptr < md->end_subject
+				   && (*eptr & 0xc0) == 0x80)
+				eptr++;
+			}
+			break;
+
+		    case OP_WORDCHAR:
+			for (i = 1; i <= min; i++) {
+			    if (eptr >= md->end_subject ||
+				*eptr >= 128
+				|| (md->ctypes[*eptr++] & ctype_word) == 0)
+				RRETURN (MATCH_NOMATCH);
+			    /* No need to skip more bytes - we know it's a 1-byte character */
+			}
+			break;
+
+		    default:
+			RRETURN (PCRE_ERROR_INTERNAL);
+		    }
+		/* End switch(ctype) */
+		else
+#endif				/* SUPPORT_UTF8 */
+
+		    /* Code for the non-UTF-8 case for minimum matching of operators other
+		       than OP_PROP and OP_NOTPROP. */
+
+		    switch (ctype) {
+		    case OP_ANY:
+			if ((ims & PCRE_DOTALL) == 0) {
+			    for (i = 1; i <= min; i++)
+				if (*eptr++ == NEWLINE)
+				    RRETURN (MATCH_NOMATCH);
+			} else
+			    eptr += min;
+			break;
+
+		    case OP_ANYBYTE:
+			eptr += min;
+			break;
+
+		    case OP_NOT_DIGIT:
+			for (i = 1; i <= min; i++)
+			    if ((md->ctypes[*eptr++] & ctype_digit) != 0)
+				RRETURN (MATCH_NOMATCH);
+			break;
+
+		    case OP_DIGIT:
+			for (i = 1; i <= min; i++)
+			    if ((md->ctypes[*eptr++] & ctype_digit) == 0)
+				RRETURN (MATCH_NOMATCH);
+			break;
+
+		    case OP_NOT_WHITESPACE:
+			for (i = 1; i <= min; i++)
+			    if ((md->ctypes[*eptr++] & ctype_space) != 0)
+				RRETURN (MATCH_NOMATCH);
+			break;
+
+		    case OP_WHITESPACE:
+			for (i = 1; i <= min; i++)
+			    if ((md->ctypes[*eptr++] & ctype_space) == 0)
+				RRETURN (MATCH_NOMATCH);
+			break;
+
+		    case OP_NOT_WORDCHAR:
+			for (i = 1; i <= min; i++)
+			    if ((md->ctypes[*eptr++] & ctype_word) != 0)
+				RRETURN (MATCH_NOMATCH);
+			break;
+
+		    case OP_WORDCHAR:
+			for (i = 1; i <= min; i++)
+			    if ((md->ctypes[*eptr++] & ctype_word) == 0)
+				RRETURN (MATCH_NOMATCH);
+			break;
+
+		    default:
+			RRETURN (PCRE_ERROR_INTERNAL);
+		    }
+	    }
+
+	    /* If min = max, continue at the same level without recursing */
+
+	    if (min == max)
+		continue;
+
+	    /* If minimizing, we have to test the rest of the pattern before each
+	       subsequent match. Again, separate the UTF-8 case for speed, and also
+	       separate the UCP cases. */
+
+	    if (minimize) {
+#ifdef SUPPORT_UCP
+		if (prop_type > 0) {
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max || eptr >= md->end_subject)
+			    RRETURN (MATCH_NOMATCH);
+			GETCHARINC (c, eptr);
+			prop_category =
+			    ucp_findchar (c, &prop_chartype,
+					  &prop_othercase);
+			if ((*prop_test_variable == prop_test_against) ==
+			    prop_fail_result) RRETURN (MATCH_NOMATCH);
+		    }
+		}
+
+		/* Match extended Unicode sequences. We will get here only if the
+		   support is in the binary; otherwise a compile-time error occurs. */
+
+		else if (ctype == OP_EXTUNI) {
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max || eptr >= md->end_subject)
+			    RRETURN (MATCH_NOMATCH);
+			GETCHARINCTEST (c, eptr);
+			prop_category =
+			    ucp_findchar (c, &prop_chartype,
+					  &prop_othercase);
+			if (prop_category == ucp_M)
+			    RRETURN (MATCH_NOMATCH);
+			while (eptr < md->end_subject) {
+			    int len = 1;
+			    if (!1 /* md->utf8 */ )
+				c = *eptr;
+			    else {
+				GETCHARLEN (c, eptr, len);
+			    }
+			    prop_category =
+				ucp_findchar (c, &prop_chartype,
+					      &prop_othercase);
+			    if (prop_category != ucp_M)
+				break;
+			    eptr += len;
+			}
+		    }
+		}
+
+		else
+#endif				/* SUPPORT_UCP */
+
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+		if (1 /* md->utf8 */ ) {
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max || eptr >= md->end_subject)
+			    RRETURN (MATCH_NOMATCH);
+
+			GETCHARINC (c, eptr);
+			switch (ctype) {
+			case OP_ANY:
+			    if ((ims & PCRE_DOTALL) == 0 && c == NEWLINE)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_ANYBYTE:
+			    break;
+
+			case OP_NOT_DIGIT:
+			    if (c < 256
+				&& (md->ctypes[c] & ctype_digit) !=
+				0) RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_DIGIT:
+			    if (c >= 256
+				|| (md->ctypes[c] & ctype_digit) == 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_NOT_WHITESPACE:
+			    if (c < 256
+				&& (md->ctypes[c] & ctype_space) !=
+				0) RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_WHITESPACE:
+			    if (c >= 256
+				|| (md->ctypes[c] & ctype_space) == 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_NOT_WORDCHAR:
+			    if (c < 256
+				&& (md->ctypes[c] & ctype_word) !=
+				0) RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_WORDCHAR:
+			    if (c >= 256
+				&& (md->ctypes[c] & ctype_word) ==
+				0) RRETURN (MATCH_NOMATCH);
+			    break;
+
+			default:
+			    RRETURN (PCRE_ERROR_INTERNAL);
+			}
+		    }
+		} else
+#endif
+		    /* Not UTF-8 mode */
+		{
+		    for (fi = min;; fi++) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (fi >= max || eptr >= md->end_subject)
+			    RRETURN (MATCH_NOMATCH);
+			c = *eptr++;
+			switch (ctype) {
+			case OP_ANY:
+			    if ((ims & PCRE_DOTALL) == 0 && c == NEWLINE)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_ANYBYTE:
+			    break;
+
+			case OP_NOT_DIGIT:
+			    if ((md->ctypes[c] & ctype_digit) != 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_DIGIT:
+			    if ((md->ctypes[c] & ctype_digit) == 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_NOT_WHITESPACE:
+			    if ((md->ctypes[c] & ctype_space) != 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_WHITESPACE:
+			    if ((md->ctypes[c] & ctype_space) == 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_NOT_WORDCHAR:
+			    if ((md->ctypes[c] & ctype_word) != 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			case OP_WORDCHAR:
+			    if ((md->ctypes[c] & ctype_word) == 0)
+				RRETURN (MATCH_NOMATCH);
+			    break;
+
+			default:
+			    RRETURN (PCRE_ERROR_INTERNAL);
+			}
+		    }
+		}
+		/* Control never gets here */
+	    }
+
+	    /* If maximizing it is worth using inline code for speed, doing the type
+	       test once at the start (i.e. keep it out of the loop). Again, keep the
+	       UTF-8 and UCP stuff separate. */
+
+	    else {
+		pp = eptr;	/* Remember where we started */
+
+#ifdef SUPPORT_UCP
+		if (prop_type > 0) {
+		    for (i = min; i < max; i++) {
+			int len = 1;
+			if (eptr >= md->end_subject)
+			    break;
+			GETCHARLEN (c, eptr, len);
+			prop_category =
+			    ucp_findchar (c, &prop_chartype,
+					  &prop_othercase);
+			if ((*prop_test_variable == prop_test_against) ==
+			    prop_fail_result) break;
+			eptr += len;
+		    }
+
+		    /* eptr is now past the end of the maximum run */
+
+		    for (;;) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (eptr-- == pp)
+			    break;	/* Stop if tried at original pos */
+			BACKCHAR (eptr);
+		    }
+		}
+
+		/* Match extended Unicode sequences. We will get here only if the
+		   support is in the binary; otherwise a compile-time error occurs. */
+
+		else if (ctype == OP_EXTUNI) {
+		    for (i = min; i < max; i++) {
+			if (eptr >= md->end_subject)
+			    break;
+			GETCHARINCTEST (c, eptr);
+			prop_category =
+			    ucp_findchar (c, &prop_chartype,
+					  &prop_othercase);
+			if (prop_category == ucp_M)
+			    break;
+			while (eptr < md->end_subject) {
+			    int len = 1;
+			    if (!1 /* md->utf8 */ )
+				c = *eptr;
+			    else {
+				GETCHARLEN (c, eptr, len);
+			    }
+			    prop_category =
+				ucp_findchar (c, &prop_chartype,
+					      &prop_othercase);
+			    if (prop_category != ucp_M)
+				break;
+			    eptr += len;
+			}
+		    }
+
+		    /* eptr is now past the end of the maximum run */
+
+		    for (;;) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (eptr-- == pp)
+			    break;	/* Stop if tried at original pos */
+			for (;;) {	/* Move back over one extended */
+			    int len = 1;
+			    BACKCHAR (eptr);
+			    if (!1 /* md->utf8 */ )
+				c = *eptr;
+			    else {
+				GETCHARLEN (c, eptr, len);
+			    }
+			    prop_category =
+				ucp_findchar (c, &prop_chartype,
+					      &prop_othercase);
+			    if (prop_category != ucp_M)
+				break;
+			    eptr--;
+			}
+		    }
+		}
+
+		else
+#endif				/* SUPPORT_UCP */
+
+#ifdef SUPPORT_UTF8
+		    /* UTF-8 mode */
+
+		if (1 /* md->utf8 */ ) {
+		    switch (ctype) {
+		    case OP_ANY:
+
+			/* Special code is required for UTF8, but when the maximum is unlimited
+			   we don't need it, so we repeat the non-UTF8 code. This is probably
+			   worth it, because .* is quite a common idiom. */
+
+			if (max < INT_MAX) {
+			    if ((ims & PCRE_DOTALL) == 0) {
+				for (i = min; i < max; i++) {
+				    if (eptr >= md->end_subject
+					|| *eptr == NEWLINE) break;
+				    eptr++;
+				    while (eptr < md->end_subject
+					   && (*eptr & 0xc0) == 0x80)
+					eptr++;
+				}
+			    } else {
+				for (i = min; i < max; i++) {
+				    eptr++;
+				    while (eptr < md->end_subject
+					   && (*eptr & 0xc0) == 0x80)
+					eptr++;
+				}
+			    }
+			}
+
+			/* Handle unlimited UTF-8 repeat */
+
+			else {
+			    if ((ims & PCRE_DOTALL) == 0) {
+				for (i = min; i < max; i++) {
+				    if (eptr >= md->end_subject
+					|| *eptr == NEWLINE) break;
+				    eptr++;
+				}
+				break;
+			    } else {
+				c = max - min;
+				if (c > md->end_subject - eptr)
+				    c = md->end_subject - eptr;
+				eptr += c;
+			    }
+			}
+			break;
+
+			/* The byte case is the same as non-UTF8 */
+
+		    case OP_ANYBYTE:
+			c = max - min;
+			if (c > md->end_subject - eptr)
+			    c = md->end_subject - eptr;
+			eptr += c;
+			break;
+
+		    case OP_NOT_DIGIT:
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (c, eptr, len);
+			    if (c < 256
+				&& (md->ctypes[c] & ctype_digit) !=
+				0) break;
+			    eptr += len;
+			}
+			break;
+
+		    case OP_DIGIT:
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (c, eptr, len);
+			    if (c >= 256
+				|| (md->ctypes[c] & ctype_digit) == 0)
+				break;
+			    eptr += len;
+			}
+			break;
+
+		    case OP_NOT_WHITESPACE:
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (c, eptr, len);
+			    if (c < 256
+				&& (md->ctypes[c] & ctype_space) !=
+				0) break;
+			    eptr += len;
+			}
+			break;
+
+		    case OP_WHITESPACE:
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (c, eptr, len);
+			    if (c >= 256
+				|| (md->ctypes[c] & ctype_space) == 0)
+				break;
+			    eptr += len;
+			}
+			break;
+
+		    case OP_NOT_WORDCHAR:
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (c, eptr, len);
+			    if (c < 256
+				&& (md->ctypes[c] & ctype_word) !=
+				0) break;
+			    eptr += len;
+			}
+			break;
+
+		    case OP_WORDCHAR:
+			for (i = min; i < max; i++) {
+			    int len = 1;
+			    if (eptr >= md->end_subject)
+				break;
+			    GETCHARLEN (c, eptr, len);
+			    if (c >= 256
+				|| (md->ctypes[c] & ctype_word) ==
+				0) break;
+			    eptr += len;
+			}
+			break;
+
+		    default:
+			RRETURN (PCRE_ERROR_INTERNAL);
+		    }
+
+		    /* eptr is now past the end of the maximum run */
+
+		    for (;;) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+			if (eptr-- == pp)
+			    break;	/* Stop if tried at original pos */
+			BACKCHAR (eptr);
+		    }
+		} else
+#endif
+
+		    /* Not UTF-8 mode */
+		{
+		    switch (ctype) {
+		    case OP_ANY:
+			if ((ims & PCRE_DOTALL) == 0) {
+			    for (i = min; i < max; i++) {
+				if (eptr >= md->end_subject
+				    || *eptr == NEWLINE) break;
+				eptr++;
+			    }
+			    break;
+			}
+			/* For DOTALL case, fall through and treat as \C */
+
+		    case OP_ANYBYTE:
+			c = max - min;
+			if (c > md->end_subject - eptr)
+			    c = md->end_subject - eptr;
+			eptr += c;
+			break;
+
+		    case OP_NOT_DIGIT:
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject
+				|| (md->ctypes[*eptr] & ctype_digit) != 0)
+				break;
+			    eptr++;
+			}
+			break;
+
+		    case OP_DIGIT:
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject
+				|| (md->ctypes[*eptr] & ctype_digit) == 0)
+				break;
+			    eptr++;
+			}
+			break;
+
+		    case OP_NOT_WHITESPACE:
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject
+				|| (md->ctypes[*eptr] & ctype_space) != 0)
+				break;
+			    eptr++;
+			}
+			break;
+
+		    case OP_WHITESPACE:
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject
+				|| (md->ctypes[*eptr] & ctype_space) == 0)
+				break;
+			    eptr++;
+			}
+			break;
+
+		    case OP_NOT_WORDCHAR:
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject
+				|| (md->ctypes[*eptr] & ctype_word) != 0)
+				break;
+			    eptr++;
+			}
+			break;
+
+		    case OP_WORDCHAR:
+			for (i = min; i < max; i++) {
+			    if (eptr >= md->end_subject
+				|| (md->ctypes[*eptr] & ctype_word) == 0)
+				break;
+			    eptr++;
+			}
+			break;
+
+		    default:
+			RRETURN (PCRE_ERROR_INTERNAL);
+		    }
+
+		    /* eptr is now past the end of the maximum run */
+
+		    while (eptr >= pp) {
+			RMATCH (rrc, eptr, ecode, offset_top, md, ims,
+				eptrb, 0);
+			eptr--;
+			if (rrc != MATCH_NOMATCH)
+			    RRETURN (rrc);
+		    }
+		}
+
+		/* Get here if we can't make it match with any permitted repetitions */
+
+		RRETURN (MATCH_NOMATCH);
+	    }
+	    /* Control never gets here */
+
+	    /* There's been some horrible disaster. Since all codes > OP_BRA are
+	       for capturing brackets, and there shouldn't be any gaps between 0 and
+	       OP_BRA, arrival here can only mean there is something seriously wrong
+	       in the code above or the OP_xxx definitions. */
+
+	default:
+	    DPRINTF (("Unknown opcode %d\n", *ecode));
+	    RRETURN (PCRE_ERROR_UNKNOWN_NODE);
+	}
+
+	/* Do not stick any code in here without much thought; it is assumed
+	   that "continue" in the code above comes out to here to repeat the main
+	   loop. */
+
+    }				/* End of main loop */
+    /* Control never reaches here */
+}
+
+
+/***************************************************************************
+****************************************************************************
+                   RECURSION IN THE match() FUNCTION
+
+Undefine all the macros that were defined above to handle this. */
+
+#ifdef NO_RECURSE
+#undef eptr
+#undef ecode
+#undef offset_top
+#undef ims
+#undef eptrb
+#undef flags
+
+#undef callpat
+#undef charptr
+#undef data
+#undef next
+#undef pp
+#undef prev
+#undef saved_eptr
+
+#undef new_recursive
+
+#undef cur_is_word
+#undef condition
+#undef minimize
+#undef prev_is_word
+
+#undef original_ims
+
+#undef ctype
+#undef length
+#undef max
+#undef min
+#undef number
+#undef offset
+#undef op
+#undef save_capture_last
+#undef save_offset1
+#undef save_offset2
+#undef save_offset3
+#undef stacksave
+
+#undef newptrb
+
+#endif
+
+/* These two are defined as macros in both cases */
+
+#undef fc
+#undef fi
+
+/***************************************************************************
+***************************************************************************/
+
+
+
+/*************************************************
+*         Execute a Regular Expression           *
+*************************************************/
+
+/* This function applies a compiled re to a subject string and picks out
+   portions of the string if it matches. Two elements in the vector are set for
+   each substring: the offsets to the start and end of the substring.
+
+   Arguments:
+   argument_re     points to the compiled expression
+   extra_data      points to extra data or is NULL
+   subject         points to the subject string
+   length          length of subject string (may contain binary zeros)
+   start_offset    where to start in the subject string
+   options         option bits
+   offsets         points to a vector of ints to be filled in with offsets
+   offsetcount     the number of elements in the vector
+
+   Returns:          > 0 => success; value is the number of elements filled in
+   = 0 => success, but offsets is not big enough
+   -1 => failed to match
+   < -1 => some kind of unexpected problem
+ */
+
+int
+pcre_exec (const pcre * argument_re, const pcre_extra * extra_data,
+	   const char *subject, int length, int start_offset, int options,
+	   int *offsets, int offsetcount)
+{
+    int rc, resetcount, ocount;
+    int first_byte = -1;
+    int req_byte = -1;
+    int req_byte2 = -1;
+    unsigned long int ims = 0;
+    BOOL using_temporary_offsets = FALSE;
+    BOOL anchored;
+    BOOL startline;
+    BOOL first_byte_caseless = FALSE;
+    BOOL req_byte_caseless = FALSE;
+    match_data match_block;
+    const uschar *tables;
+    const uschar *start_bits = NULL;
+    const uschar *start_match = (const uschar *) subject + start_offset;
+    const uschar *end_subject;
+    const uschar *req_byte_ptr = start_match - 1;
+
+    pcre_study_data internal_study;
+    const pcre_study_data *study;
+
+    real_pcre internal_re;
+    const real_pcre *external_re = (const real_pcre *) argument_re;
+    const real_pcre *re = external_re;
+
+    /* Plausibility checks */
+
+    if ((options & ~PUBLIC_EXEC_OPTIONS) != 0)
+	return PCRE_ERROR_BADOPTION;
+    if (re == NULL || subject == NULL ||
+	(offsets == NULL && offsetcount > 0)) return PCRE_ERROR_NULL;
+    if (offsetcount < 0)
+	return PCRE_ERROR_BADCOUNT;
+
+    /* Fish out the optional data from the extra_data structure, first setting
+       the default values. */
+
+    study = NULL;
+    match_block.match_limit = MATCH_LIMIT;
+    match_block.callout_data = NULL;
+
+    /* The table pointer is always in native byte order. */
+
+    tables = external_re->tables;
+
+    if (extra_data != NULL) {
+	register unsigned int flags = extra_data->flags;
+	if ((flags & PCRE_EXTRA_STUDY_DATA) != 0)
+	    study = (const pcre_study_data *) extra_data->study_data;
+	if ((flags & PCRE_EXTRA_MATCH_LIMIT) != 0)
+	    match_block.match_limit = extra_data->match_limit;
+	if ((flags & PCRE_EXTRA_CALLOUT_DATA) != 0)
+	    match_block.callout_data = extra_data->callout_data;
+	if ((flags & PCRE_EXTRA_TABLES) != 0)
+	    tables = extra_data->tables;
+    }
+
+    /* If the exec call supplied NULL for tables, use the inbuilt ones. This
+       is a feature that makes it possible to save compiled regex and re-use them
+       in other programs later. */
+
+    if (tables == NULL)
+	tables = make_pcre_default_tables ();
+
+    /* Check that the first field in the block is the magic number. If it is not,
+       test for a regex that was compiled on a host of opposite endianness. If this is
+       the case, flipped values are put in internal_re and internal_study if there was
+       study data too. */
+
+    if (re->magic_number != MAGIC_NUMBER) {
+	re = try_flipped (re, &internal_re, study, &internal_study);
+	if (re == NULL)
+	    return PCRE_ERROR_BADMAGIC;
+	if (study != NULL)
+	    study = &internal_study;
+    }
+
+    /* Set up other data */
+
+    anchored = ((re->options | options) & PCRE_ANCHORED) != 0;
+    startline = (re->options & PCRE_STARTLINE) != 0;
+
+    /* The code starts after the real_pcre block and the capture name table. */
+
+    match_block.start_code =
+	(const uschar *) external_re + re->name_table_offset +
+	re->name_count * re->name_entry_size;
+
+    match_block.start_subject = (const uschar *) subject;
+    match_block.start_offset = start_offset;
+    match_block.end_subject = match_block.start_subject + length;
+    end_subject = match_block.end_subject;
+
+    match_block.endonly = (re->options & PCRE_DOLLAR_ENDONLY) != 0;
+    match_block.utf8 = (re->options & PCRE_UTF8) != 0;
+
+    match_block.notbol = (options & PCRE_NOTBOL) != 0;
+    match_block.noteol = (options & PCRE_NOTEOL) != 0;
+    match_block.notempty = (options & PCRE_NOTEMPTY) != 0;
+    match_block.partial = (options & PCRE_PARTIAL) != 0;
+    match_block.hitend = FALSE;
+
+    match_block.recursive = NULL;	/* No recursion at top level */
+
+    match_block.lcc = tables + lcc_offset;
+    match_block.ctypes = tables + ctypes_offset;
+
+    /* Partial matching is supported only for a restricted set of regexes at the
+       moment. */
+
+    if (match_block.partial && (re->options & PCRE_NOPARTIAL) != 0)
+	return PCRE_ERROR_BADPARTIAL;
+
+    /* Check a UTF-8 string if required. Unfortunately there's no way of passing
+       back the character offset. */
+
+#ifdef SUPPORT_UTF8
+    if (match_block.utf8 && (options & PCRE_NO_UTF8_CHECK) == 0) {
+	if (valid_utf8 ((uschar *) subject, length) >= 0)
+	    return PCRE_ERROR_BADUTF8;
+	if (start_offset > 0 && start_offset < length) {
+	    int tb = ((uschar *) subject)[start_offset];
+	    if (tb > 127) {
+		tb &= 0xc0;
+		if (tb != 0 && tb != 0xc0)
+		    return PCRE_ERROR_BADUTF8_OFFSET;
+	    }
+	}
+    }
+#endif
+
+    /* The ims options can vary during the matching as a result of the presence
+       of (?ims) items in the pattern. They are kept in a local variable so that
+       restoring at the exit of a group is easy. */
+
+    ims = re->options & (PCRE_CASELESS | PCRE_MULTILINE | PCRE_DOTALL);
+
+    /* If the expression has got more back references than the offsets supplied can
+       hold, we get a temporary chunk of working store to use during the matching.
+       Otherwise, we can use the vector supplied, rounding down its size to a multiple
+       of 3. */
+
+    ocount = offsetcount - (offsetcount % 3);
+
+    if (re->top_backref > 0 && re->top_backref >= ocount / 3) {
+	ocount = re->top_backref * 3 + 3;
+	match_block.offset_vector =
+	    (int *) (pcre_malloc) (ocount * sizeof (int));
+	if (match_block.offset_vector == NULL)
+	    return PCRE_ERROR_NOMEMORY;
+	using_temporary_offsets = TRUE;
+	DPRINTF (("Got memory to hold back references\n"));
+    } else
+	match_block.offset_vector = offsets;
+
+    match_block.offset_end = ocount;
+    match_block.offset_max = (2 * ocount) / 3;
+    match_block.offset_overflow = FALSE;
+    match_block.capture_last = -1;
+
+    /* Compute the minimum number of offsets that we need to reset each time. Doing
+       this makes a huge difference to execution time when there aren't many brackets
+       in the pattern. */
+
+    resetcount = 2 + re->top_bracket * 2;
+    if (resetcount > offsetcount)
+	resetcount = ocount;
+
+    /* Reset the working variable associated with each extraction. These should
+       never be used unless previously set, but they get saved and restored, and so we
+       initialize them to avoid reading uninitialized locations. */
+
+    if (match_block.offset_vector != NULL) {
+	register int *iptr = match_block.offset_vector + ocount;
+	register int *iend = iptr - resetcount / 2 + 1;
+	while (--iptr >= iend)
+	    *iptr = -1;
+    }
+
+    /* Set up the first character to match, if available. The first_byte value is
+       never set for an anchored regular expression, but the anchoring may be forced
+       at run time, so we have to test for anchoring. The first char may be unset for
+       an unanchored pattern, of course. If there's no first char and the pattern was
+       studied, there may be a bitmap of possible first characters. */
+
+    if (!anchored) {
+	if ((re->options & PCRE_FIRSTSET) != 0) {
+	    first_byte = re->first_byte & 255;
+	    if (
+		(first_byte_caseless =
+		 ((re->first_byte & REQ_CASELESS) != 0)) == TRUE)
+		first_byte = match_block.lcc[first_byte];
+	}
+	    else
+	    if (!startline && study != NULL &&
+		(study->options & PCRE_STUDY_MAPPED) != 0)
+		start_bits = study->start_bits;
+    }
+
+    /* For anchored or unanchored matches, there may be a "last known required
+       character" set. */
+
+    if ((re->options & PCRE_REQCHSET) != 0) {
+	req_byte = re->req_byte & 255;
+	req_byte_caseless = (re->req_byte & REQ_CASELESS) != 0;
+	req_byte2 = (tables + fcc_offset)[req_byte];	/* case flipped */
+    }
+
+    /* Loop for handling unanchored repeated matching attempts; for anchored regexs
+       the loop runs just once. */
+
+    do {
+	/* Reset the maximum number of extractions we might see. */
+
+	if (match_block.offset_vector != NULL) {
+	    register int *iptr = match_block.offset_vector;
+	    register int *iend = iptr + resetcount;
+	    while (iptr < iend)
+		*iptr++ = -1;
+	}
+
+	/* Advance to a unique first char if possible */
+
+	if (first_byte >= 0) {
+	    if (first_byte_caseless)
+		while (start_match < end_subject &&
+		       match_block.lcc[*start_match] != first_byte)
+		    start_match++;
+	    else
+		while (start_match < end_subject
+		       && *start_match != first_byte) start_match++;
+	}
+
+	/* Or to just after \n for a multiline match if possible */
+
+	else if (startline) {
+	    if (start_match > match_block.start_subject + start_offset) {
+		while (start_match < end_subject
+		       && start_match[-1] != NEWLINE) start_match++;
+	    }
+	}
+
+	/* Or to a non-unique first char after study */
+
+	else if (start_bits != NULL) {
+	    while (start_match < end_subject) {
+		register unsigned int c = *start_match;
+		if ((start_bits[c / 8] & (1 << (c & 7))) == 0)
+		    start_match++;
+		else
+		    break;
+	    }
+	}
+#ifdef DEBUG			/* Sigh. Some compilers never learn. */
+	printf (">>>> Match against: ");
+	pchars (start_match, end_subject - start_match, TRUE,
+		&match_block);
+	printf ("\n");
+#endif
+
+	/* If req_byte is set, we know that that character must appear in the subject
+	   for the match to succeed. If the first character is set, req_byte must be
+	   later in the subject; otherwise the test starts at the match point. This
+	   optimization can save a huge amount of backtracking in patterns with nested
+	   unlimited repeats that aren't going to match. Writing separate code for
+	   cased/caseless versions makes it go faster, as does using an autoincrement
+	   and backing off on a match.
+
+	   HOWEVER: when the subject string is very, very long, searching to its end can
+	   take a long time, and give bad performance on quite ordinary patterns. This
+	   showed up when somebody was matching /^C/ on a 32-megabyte string... so we
+	   don't do this when the string is sufficiently long.
+
+	   ALSO: this processing is disabled when partial matching is requested.
+	 */
+
+	if (req_byte >= 0 &&
+	    end_subject - start_match < REQ_BYTE_MAX &&
+	    !match_block.partial) {
+	    register const uschar *p =
+		start_match + ((first_byte >= 0) ? 1 : 0);
+
+	    /* We don't need to repeat the search if we haven't yet reached the
+	       place we found it at last time. */
+
+	    if (p > req_byte_ptr) {
+		if (req_byte_caseless) {
+		    while (p < end_subject) {
+			register int pp = *p++;
+			if (pp == req_byte || pp == req_byte2) {
+			    p--;
+			    break;
+			}
+		    }
+		} else {
+		    while (p < end_subject) {
+			if (*p++ == req_byte) {
+			    p--;
+			    break;
+			}
+		    }
+		}
+
+		/* If we can't find the required character, break the matching loop */
+
+		if (p >= end_subject)
+		    break;
+
+		/* If we have found the required character, save the point where we
+		   found it, so that we don't search again next time round the loop if
+		   the start hasn't passed this character yet. */
+
+		req_byte_ptr = p;
+	    }
+	}
+
+	/* When a match occurs, substrings will be set for all internal extractions;
+	   we just need to set up the whole thing as substring 0 before returning. If
+	   there were too many extractions, set the return code to zero. In the case
+	   where we had to get some local store to hold offsets for backreferences, copy
+	   those back references that we can. In this case there need not be overflow
+	   if certain parts of the pattern were not used. */
+
+	match_block.start_match = start_match;
+	match_block.match_call_count = 0;
+
+	rc =
+	    match (start_match, match_block.start_code, 2, &match_block,
+		   ims, NULL, match_isgroup);
+
+	if (rc == MATCH_NOMATCH) {
+	    start_match++;
+#ifdef SUPPORT_UTF8
+	    if (match_block.utf8)
+		while (start_match < end_subject
+		       && (*start_match & 0xc0) == 0x80)
+		    start_match++;
+#endif
+	    continue;
+	}
+
+	if (rc != MATCH_MATCH) {
+	    DPRINTF ((">>>> error: returning %d\n", rc));
+	    return rc;
+	}
+
+	/* We have a match! Copy the offset information from temporary store if
+	   necessary */
+
+	if (using_temporary_offsets) {
+	    if (offsetcount >= 4) {
+		memcpy (offsets + 2, match_block.offset_vector + 2,
+			(offsetcount - 2) * sizeof (int));
+		DPRINTF (("Copied offsets from temporary memory\n"));
+	    }
+	    if (match_block.end_offset_top > offsetcount)
+		match_block.offset_overflow = TRUE;
+
+	    DPRINTF (("Freeing temporary memory\n"));
+	    (pcre_free) (match_block.offset_vector);
+	}
+
+	rc =
+	    match_block.offset_overflow ? 0 : match_block.end_offset_top /
+	    2;
+
+	if (offsetcount < 2)
+	    rc = 0;
+	else {
+	    offsets[0] = start_match - match_block.start_subject;
+	    offsets[1] =
+		match_block.end_match_ptr - match_block.start_subject;
+	}
+
+	DPRINTF ((">>>> returning %d\n", rc));
+	return rc;
+    }
+
+    /* This "while" is the end of the "do" above */
+
+    while (!anchored && start_match <= end_subject);
+
+    if (using_temporary_offsets) {
+	DPRINTF (("Freeing temporary memory\n"));
+	(pcre_free) (match_block.offset_vector);
+    }
+
+    if (match_block.partial && match_block.hitend) {
+	DPRINTF ((">>>> returning PCRE_ERROR_PARTIAL\n"));
+	return PCRE_ERROR_PARTIAL;
+    } else {
+	DPRINTF ((">>>> returning PCRE_ERROR_NOMATCH\n"));
+	return PCRE_ERROR_NOMATCH;
+    }
+}
+
+/* End of pcre.c */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcre.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,245 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see pcre.c.  */
+
+/*************************************************
+*       Perl-Compatible Regular Expressions      *
+*************************************************/
+
+/* In its original form, this is the .in file that is transformed by
+   "configure" into pcre.h.
+
+   Copyright (c) 1997-2004 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+#ifndef _PCRE_H
+#define _PCRE_H
+
+/* The file pcre.h is build by "configure". Do not edit it; instead
+   make changes to pcre.in. */
+
+#define PCRE_MAJOR          5
+#define PCRE_MINOR          0
+#define PCRE_DATE           13-Sep-2004
+
+/* Win32 uses DLL by default */
+
+#ifdef _WIN32
+#  ifdef PCRE_DEFINITION
+#    ifdef DLL_EXPORT
+#      define PCRE_DATA_SCOPE __declspec(dllexport)
+#    endif
+#  else
+#    ifndef PCRE_STATIC
+#      define PCRE_DATA_SCOPE extern __declspec(dllimport)
+#    endif
+#  endif
+#endif
+#ifndef PCRE_DATA_SCOPE
+#  define PCRE_DATA_SCOPE     extern
+#endif
+
+/* Have to include stdlib.h in order to ensure that size_t is defined;
+   it is needed here for malloc. */
+
+#include <stdlib.h>
+
+/* Allow for C++ users */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    /* Options */
+
+#define PCRE_CASELESS           0x0001
+#define PCRE_MULTILINE          0x0002
+#define PCRE_DOTALL             0x0004
+#define PCRE_EXTENDED           0x0008
+#define PCRE_ANCHORED           0x0010
+#define PCRE_DOLLAR_ENDONLY     0x0020
+#define PCRE_EXTRA              0x0040
+#define PCRE_NOTBOL             0x0080
+#define PCRE_NOTEOL             0x0100
+#define PCRE_UNGREEDY           0x0200
+#define PCRE_NOTEMPTY           0x0400
+#define PCRE_UTF8               0x0800
+#define PCRE_NO_AUTO_CAPTURE    0x1000
+#define PCRE_NO_UTF8_CHECK      0x2000
+#define PCRE_AUTO_CALLOUT       0x4000
+#define PCRE_PARTIAL            0x8000
+
+    /* Exec-time and get/set-time error codes */
+
+#define PCRE_ERROR_NOMATCH         (-1)
+#define PCRE_ERROR_NULL            (-2)
+#define PCRE_ERROR_BADOPTION       (-3)
+#define PCRE_ERROR_BADMAGIC        (-4)
+#define PCRE_ERROR_UNKNOWN_NODE    (-5)
+#define PCRE_ERROR_NOMEMORY        (-6)
+#define PCRE_ERROR_NOSUBSTRING     (-7)
+#define PCRE_ERROR_MATCHLIMIT      (-8)
+#define PCRE_ERROR_CALLOUT         (-9)	/* Never used by PCRE itself */
+#define PCRE_ERROR_BADUTF8        (-10)
+#define PCRE_ERROR_BADUTF8_OFFSET (-11)
+#define PCRE_ERROR_PARTIAL        (-12)
+#define PCRE_ERROR_BADPARTIAL     (-13)
+#define PCRE_ERROR_INTERNAL       (-14)
+#define PCRE_ERROR_BADCOUNT       (-15)
+
+    /* Request types for pcre_fullinfo() */
+
+#define PCRE_INFO_OPTIONS            0
+#define PCRE_INFO_SIZE               1
+#define PCRE_INFO_CAPTURECOUNT       2
+#define PCRE_INFO_BACKREFMAX         3
+#define PCRE_INFO_FIRSTBYTE          4
+#define PCRE_INFO_FIRSTCHAR          4	/* For backwards compatibility */
+#define PCRE_INFO_FIRSTTABLE         5
+#define PCRE_INFO_LASTLITERAL        6
+#define PCRE_INFO_NAMEENTRYSIZE      7
+#define PCRE_INFO_NAMECOUNT          8
+#define PCRE_INFO_NAMETABLE          9
+#define PCRE_INFO_STUDYSIZE         10
+#define PCRE_INFO_DEFAULT_TABLES    11
+
+    /* Request types for pcre_config() */
+
+#define PCRE_CONFIG_UTF8                    0
+#define PCRE_CONFIG_NEWLINE                 1
+#define PCRE_CONFIG_LINK_SIZE               2
+#define PCRE_CONFIG_POSIX_MALLOC_THRESHOLD  3
+#define PCRE_CONFIG_MATCH_LIMIT             4
+#define PCRE_CONFIG_STACKRECURSE            5
+#define PCRE_CONFIG_UNICODE_PROPERTIES      6
+
+    /* Bit flags for the pcre_extra structure */
+
+#define PCRE_EXTRA_STUDY_DATA          0x0001
+#define PCRE_EXTRA_MATCH_LIMIT         0x0002
+#define PCRE_EXTRA_CALLOUT_DATA        0x0004
+#define PCRE_EXTRA_TABLES              0x0008
+
+    /* Types */
+
+    struct real_pcre;		/* declaration; the definition is private  */
+    typedef struct real_pcre pcre;
+
+    /* The structure for passing additional data to pcre_exec(). This is defined in
+       such as way as to be extensible. Always add new fields at the end, in order to
+       remain compatible. */
+
+    typedef struct pcre_extra {
+	unsigned long int flags;	/* Bits for which fields are set */
+	void *study_data;	/* Opaque data from pcre_study() */
+	unsigned long int match_limit;	/* Maximum number of calls to match() */
+	void *callout_data;	/* Data passed back in callouts */
+	const unsigned char *tables;	/* Pointer to character tables */
+    } pcre_extra;
+
+    /* The structure for passing out data via the pcre_callout_function. We use a
+       structure so that new fields can be added on the end in future versions,
+       without changing the API of the function, thereby allowing old clients to work
+       without modification. */
+
+    typedef struct pcre_callout_block {
+	int version;		/* Identifies version of block */
+	/* ------------------------ Version 0 ------------------------------- */
+	int callout_number;	/* Number compiled into pattern */
+	int *offset_vector;	/* The offset vector */
+	const char *subject;	/* The subject being matched */
+	int subject_length;	/* The length of the subject */
+	int start_match;	/* Offset to start of this match attempt */
+	int current_position;	/* Where we currently are in the subject */
+	int capture_top;	/* Max current capture */
+	int capture_last;	/* Most recently closed capture */
+	void *callout_data;	/* Data passed in with the call */
+	/* ------------------- Added for Version 1 -------------------------- */
+	int pattern_position;	/* Offset to next item in the pattern */
+	int next_item_length;	/* Length of next item in the pattern */
+	/* ------------------------------------------------------------------ */
+    } pcre_callout_block;
+
+    /* Indirection for store get and free functions. These can be set to
+       alternative malloc/free functions if required. Special ones are used in the
+       non-recursive case for "frames". There is also an optional callout function
+       that is triggered by the (?) regex item. Some magic is required for Win32 DLL;
+       it is null on other OS. For Virtual Pascal, these have to be different again.
+     */
+
+#ifndef VPCOMPAT
+    PCRE_DATA_SCOPE void *(*pcre_malloc) (size_t);
+    PCRE_DATA_SCOPE void (*pcre_free) (void *);
+    PCRE_DATA_SCOPE void *(*pcre_stack_malloc) (size_t);
+    PCRE_DATA_SCOPE void (*pcre_stack_free) (void *);
+    PCRE_DATA_SCOPE int (*pcre_callout) (pcre_callout_block *);
+#else				/* VPCOMPAT */
+    extern void *pcre_malloc (size_t);
+    extern void pcre_free (void *);
+    extern void *pcre_stack_malloc (size_t);
+    extern void pcre_stack_free (void *);
+    extern int pcre_callout (pcre_callout_block *);
+#endif				/* VPCOMPAT */
+
+    /* Exported PCRE functions */
+
+    extern pcre *pcre_compile (const char *, int, const char **,
+			       int *, const unsigned char *);
+    extern int pcre_config (int, void *);
+    extern int pcre_copy_named_substring (const pcre *, const char *,
+					  int *, int, const char *, char *,
+					  int);
+    extern int pcre_copy_substring (const char *, int *, int, int, char *,
+				    int);
+    extern int pcre_exec (const pcre *, const pcre_extra *, const char *,
+			  int, int, int, int *, int);
+    extern void pcre_free_substring (const char *);
+    extern void pcre_free_substring_list (const char **);
+    extern int pcre_fullinfo (const pcre *, const pcre_extra *, int,
+			      void *);
+    extern int pcre_get_named_substring (const pcre *, const char *,
+					 int *, int, const char *,
+					 const char **);
+    extern int pcre_get_stringnumber (const pcre *, const char *);
+    extern int pcre_get_substring (const char *, int *, int, int,
+				   const char **);
+    extern int pcre_get_substring_list (const char *, int *, int,
+					const char ***);
+    extern int pcre_info (const pcre *, int *, int *);
+    extern const unsigned char *pcre_maketables (void);
+    extern pcre_extra *pcre_study (const pcre *, int, const char **);
+    extern const char *pcre_version (void);
+
+#ifdef __cplusplus
+}				/* extern "C" */
+#endif
+#endif				/* End of pcre.h */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,339 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see below.  */
+
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/*
+   This is a library of functions to support regular expressions whose syntax
+   and semantics are as close as possible to those of the Perl 5 language. See
+   the file Tech.Notes for some information on the internals.
+
+   This module is a wrapper that provides a POSIX API to the underlying PCRE
+   functions.
+
+   Written by: Philip Hazel <ph10 at cam.ac.uk>
+
+   Copyright (c) 1997-2004 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+#include <goffice/goffice-config.h>
+#include "internal.h"
+#include "pcreposix.h"
+#include "stdlib.h"
+
+
+
+/* Corresponding tables of PCRE error messages and POSIX error codes. */
+
+static const char *const estring[] = {
+    ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, ERR10,
+    ERR11, ERR12, ERR13, ERR14, ERR15, ERR16, ERR17, ERR18, ERR19, ERR20,
+    ERR21, ERR22, ERR23, ERR24, ERR25, ERR26, ERR27, ERR29, ERR29, ERR30,
+    ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39, ERR40,
+    ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47
+};
+
+static const int eint[] = {
+    REG_EESCAPE,		/* "\\ at end of pattern" */
+    REG_EESCAPE,		/* "\\c at end of pattern" */
+    REG_EESCAPE,		/* "unrecognized character follows \\" */
+    REG_BADBR,			/* "numbers out of order in {} quantifier" */
+    REG_BADBR,			/* "number too big in {} quantifier" */
+    REG_EBRACK,			/* "missing terminating ] for character class" */
+    REG_ECTYPE,			/* "invalid escape sequence in character class" */
+    REG_ERANGE,			/* "range out of order in character class" */
+    REG_BADRPT,			/* "nothing to repeat" */
+    REG_BADRPT,			/* "operand of unlimited repeat could match the empty string" */
+    REG_ASSERT,			/* "internal error: unexpected repeat" */
+    REG_BADPAT,			/* "unrecognized character after (?" */
+    REG_BADPAT,			/* "POSIX named classes are supported only within a class" */
+    REG_EPAREN,			/* "missing )" */
+    REG_ESUBREG,		/* "reference to non-existent subpattern" */
+    REG_INVARG,			/* "erroffset passed as NULL" */
+    REG_INVARG,			/* "unknown option bit(s) set" */
+    REG_EPAREN,			/* "missing ) after comment" */
+    REG_ESIZE,			/* "parentheses nested too deeply" */
+    REG_ESIZE,			/* "regular expression too large" */
+    REG_ESPACE,			/* "failed to get memory" */
+    REG_EPAREN,			/* "unmatched brackets" */
+    REG_ASSERT,			/* "internal error: code overflow" */
+    REG_BADPAT,			/* "unrecognized character after (?<" */
+    REG_BADPAT,			/* "lookbehind assertion is not fixed length" */
+    REG_BADPAT,			/* "malformed number after (?(" */
+    REG_BADPAT,			/* "conditional group containe more than two branches" */
+    REG_BADPAT,			/* "assertion expected after (?(" */
+    REG_BADPAT,			/* "(?R or (?digits must be followed by )" */
+    REG_ECTYPE,			/* "unknown POSIX class name" */
+    REG_BADPAT,			/* "POSIX collating elements are not supported" */
+    REG_INVARG,			/* "this version of PCRE is not compiled with PCRE_UTF8 support" */
+    REG_BADPAT,			/* "spare error" */
+    REG_BADPAT,			/* "character value in \x{...} sequence is too large" */
+    REG_BADPAT,			/* "invalid condition (?(0)" */
+    REG_BADPAT,			/* "\\C not allowed in lookbehind assertion" */
+    REG_EESCAPE,		/* "PCRE does not support \\L, \\l, \\N, \\U, or \\u" */
+    REG_BADPAT,			/* "number after (?C is > 255" */
+    REG_BADPAT,			/* "closing ) for (?C expected" */
+    REG_BADPAT,			/* "recursive call could loop indefinitely" */
+    REG_BADPAT,			/* "unrecognized character after (?P" */
+    REG_BADPAT,			/* "syntax error after (?P" */
+    REG_BADPAT,			/* "two named groups have the same name" */
+    REG_BADPAT,			/* "invalid UTF-8 string" */
+    REG_BADPAT,			/* "support for \\P, \\p, and \\X has not been compiled" */
+    REG_BADPAT,			/* "malformed \\P or \\p sequence" */
+    REG_BADPAT			/* "unknown property name after \\P or \\p" */
+};
+
+/* Table of texts corresponding to POSIX error codes */
+
+static const char *const pstring[] = {
+    "",				/* Dummy for value 0 */
+    "internal error",		/* REG_ASSERT */
+    "invalid repeat counts in {}",	/* BADBR      */
+    "pattern error",		/* BADPAT     */
+    "? * + invalid",		/* BADRPT     */
+    "unbalanced {}",		/* EBRACE     */
+    "unbalanced []",		/* EBRACK     */
+    "collation error - not relevant",	/* ECOLLATE   */
+    "bad class",		/* ECTYPE     */
+    "bad escape sequence",	/* EESCAPE    */
+    "empty expression",		/* EMPTY      */
+    "unbalanced ()",		/* EPAREN     */
+    "bad range inside []",	/* ERANGE     */
+    "expression too big",	/* ESIZE      */
+    "failed to get memory",	/* ESPACE     */
+    "bad back reference",	/* ESUBREG    */
+    "bad argument",		/* INVARG     */
+    "match failed"		/* NOMATCH    */
+};
+
+
+
+
+/*************************************************
+*          Translate PCRE text code to int       *
+*************************************************/
+
+/* PCRE compile-time errors are given as strings defined as macros. We can just
+   look them up in a table to turn them into POSIX-style error codes. */
+
+static int
+pcre_posix_error_code (const char *s)
+{
+    size_t i;
+    for (i = 0; i < sizeof (estring) / sizeof (char *); i++)
+	if (strcmp (s, estring[i]) == 0)
+	    return eint[i];
+    return REG_ASSERT;
+}
+
+
+
+/*************************************************
+*          Translate error code to string        *
+*************************************************/
+
+size_t
+go_regerror (int errcode, const GORegexp * preg, char *errbuf,
+	     size_t errbuf_size)
+{
+    const char *message, *addmessage;
+    size_t length, addlength;
+
+    message = (errcode >= (int) (sizeof (pstring) / sizeof (char *)))?
+	"unknown error code" : pstring[errcode];
+    length = strlen (message) + 1;
+
+    addmessage = " at offset ";
+    addlength = (preg != NULL && (int) preg->re_erroffset != -1) ?
+	strlen (addmessage) + 6 : 0;
+
+    if (errbuf_size > 0) {
+	if (addlength > 0 && errbuf_size >= length + addlength)
+	    sprintf (errbuf, "%s%s%-6d", message, addmessage,
+		     (int) preg->re_erroffset);
+	else {
+	    strncpy (errbuf, message, errbuf_size - 1);
+	    errbuf[errbuf_size - 1] = 0;
+	}
+    }
+
+    return length + addlength;
+}
+
+
+
+
+/*************************************************
+*           Free store held by a regex           *
+*************************************************/
+
+void
+go_regfree (GORegexp * preg)
+{
+    (pcre_free) (preg->re_pcre);
+}
+
+
+
+
+/*************************************************
+*            Compile a regular expression        *
+*************************************************/
+
+/*
+   Arguments:
+   preg        points to a structure for recording the compiled expression
+   pattern     the pattern to compile
+   cflags      compilation flags
+
+   Returns:      0 on success
+   various non-zero codes on failure
+ */
+
+int
+go_regcomp (GORegexp * preg, const char *pattern, int cflags)
+{
+    const char *errorptr;
+    int erroffset;
+    int options = 0;
+
+    if ((cflags & REG_ICASE) != 0)
+	options |= PCRE_CASELESS;
+    if ((cflags & REG_NEWLINE) != 0)
+	options |= PCRE_MULTILINE;
+
+    preg->re_pcre =
+	pcre_compile (pattern, options | PCRE_UTF8 | PCRE_NO_UTF8_CHECK,
+		      &errorptr, &erroffset, NULL);
+    preg->re_erroffset = erroffset;
+
+    if (preg->re_pcre == NULL)
+	return pcre_posix_error_code (errorptr);
+
+    preg->re_nsub = pcre_info ((const pcre *) preg->re_pcre, NULL, NULL);
+    return 0;
+}
+
+
+
+
+/*************************************************
+*              Match a regular expression        *
+*************************************************/
+
+/* Unfortunately, PCRE requires 3 ints of working space for each captured
+   substring, so we have to get and release working store instead of just using
+   the POSIX structures as was done in earlier releases when PCRE needed only 2
+   ints. However, if the number of possible capturing brackets is small, use a
+   block of store on the stack, to reduce the use of malloc/free. The threshold is
+   in a macro that can be changed at configure time. */
+
+int
+go_regexec (const GORegexp * preg, const char *string, size_t nmatch,
+	    regmatch_t pmatch[], int eflags)
+{
+    int rc;
+    int options = 0;
+    int *ovector = NULL;
+    int small_ovector[POSIX_MALLOC_THRESHOLD * 3];
+    BOOL allocated_ovector = FALSE;
+
+    if ((eflags & REG_NOTBOL) != 0)
+	options |= PCRE_NOTBOL;
+    if ((eflags & REG_NOTEOL) != 0)
+	options |= PCRE_NOTEOL;
+
+    ((GORegexp *) preg)->re_erroffset = (size_t) (-1);	/* Only has meaning after compile */
+
+    if (nmatch > 0) {
+	if (nmatch <= POSIX_MALLOC_THRESHOLD) {
+	    ovector = &(small_ovector[0]);
+	} else {
+	    ovector = (int *) malloc (sizeof (int) * nmatch * 3);
+	    if (ovector == NULL)
+		return REG_ESPACE;
+	    allocated_ovector = TRUE;
+	}
+    }
+
+    rc =
+	pcre_exec ((const pcre *) preg->re_pcre, NULL, string,
+		   (int) strlen (string), 0, options, ovector, nmatch * 3);
+
+    if (rc == 0)
+	rc = nmatch;		/* All captured slots were filled in */
+
+    if (rc >= 0) {
+	size_t i;
+	for (i = 0; i < (size_t) rc; i++) {
+	    pmatch[i].rm_so = ovector[i * 2];
+	    pmatch[i].rm_eo = ovector[i * 2 + 1];
+	}
+	if (allocated_ovector)
+	    free (ovector);
+	for (; i < nmatch; i++)
+	    pmatch[i].rm_so = pmatch[i].rm_eo = -1;
+	return 0;
+    }
+
+    else {
+	if (allocated_ovector)
+	    free (ovector);
+	switch (rc) {
+	case PCRE_ERROR_NOMATCH:
+	    return REG_NOMATCH;
+	case PCRE_ERROR_NULL:
+	    return REG_INVARG;
+	case PCRE_ERROR_BADOPTION:
+	    return REG_INVARG;
+	case PCRE_ERROR_BADMAGIC:
+	    return REG_INVARG;
+	case PCRE_ERROR_UNKNOWN_NODE:
+	    return REG_ASSERT;
+	case PCRE_ERROR_NOMEMORY:
+	    return REG_ESPACE;
+	case PCRE_ERROR_MATCHLIMIT:
+	    return REG_ESPACE;
+	case PCRE_ERROR_BADUTF8:
+	    return REG_INVARG;
+	case PCRE_ERROR_BADUTF8_OFFSET:
+	    return REG_INVARG;
+	default:
+	    return REG_ASSERT;
+	}
+    }
+}
+
+/* End of pcreposix.c */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/pcreposix.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,123 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see pcreposix.c.  */
+
+/*************************************************
+*       Perl-Compatible Regular Expressions      *
+*************************************************/
+
+#ifndef _PCREPOSIX_H
+#define _PCREPOSIX_H
+
+/* This is the header for the POSIX wrapper interface to the PCRE Perl-
+   Compatible Regular Expression library. It defines the things POSIX says should
+   be there. I hope.
+
+   Copyright (c) 1997-2004 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+/* Have to include stdlib.h in order to ensure that size_t is defined. */
+
+#include <stdlib.h>
+
+/* Allow for C++ users */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    /* Options defined by POSIX. */
+
+#define REG_ICASE     0x01
+#define REG_NEWLINE   0x02
+#define REG_NOTBOL    0x04
+#define REG_NOTEOL    0x08
+
+    /* These are not used by PCRE, but by defining them we make it easier
+       to slot PCRE into existing programs that make POSIX calls. */
+
+#define REG_EXTENDED  0
+#define REG_NOSUB     0
+
+    /* Error values. Not all these are relevant or used by the wrapper. */
+
+    enum {
+	REG_OK = 0,
+	REG_ASSERT = 1,		/* internal error ? */
+	REG_BADBR,		/* invalid repeat counts in {} */
+	REG_BADPAT,		/* pattern error */
+	REG_BADRPT,		/* ? * + invalid */
+	REG_EBRACE,		/* unbalanced {} */
+	REG_EBRACK,		/* unbalanced [] */
+	REG_ECOLLATE,		/* collation error - not relevant */
+	REG_ECTYPE,		/* bad class */
+	REG_EESCAPE,		/* bad escape sequence */
+	REG_EMPTY,		/* empty expression */
+	REG_EPAREN,		/* unbalanced () */
+	REG_ERANGE,		/* bad range inside [] */
+	REG_ESIZE,		/* expression too big */
+	REG_ESPACE,		/* failed to get memory */
+	REG_ESUBREG,		/* bad back reference */
+	REG_INVARG,		/* bad argument */
+	REG_NOMATCH		/* match failed */
+    };
+
+
+    /* The structure representing a compiled regular expression. */
+
+    typedef struct {
+	void *re_pcre;
+	size_t re_nsub;
+	size_t re_erroffset;
+    } GORegexp;
+
+    /* The structure in which a captured offset is returned. */
+
+    typedef int go_regoff_t;
+
+    typedef struct {
+	go_regoff_t rm_so;
+	go_regoff_t rm_eo;
+    } regmatch_t;
+
+    /* The functions */
+
+    extern int go_regcomp (GORegexp *, const char *, int);
+    extern int go_regexec (const GORegexp *, const char *, size_t,
+			   regmatch_t *, int);
+    extern size_t go_regerror (int, const GORegexp *, char *, size_t);
+    extern void go_regfree (GORegexp *);
+
+#ifdef __cplusplus
+}				/* extern "C" */
+#endif
+#endif				/* End of pcreposix.h */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/semantic.cache
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/semantic.cache	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/semantic.cache	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,15 @@
+;; Object pcre/
+;; SEMANTICDB Tags save file
+(semanticdb-project-database-file "pcre/"
+  :tables (list 
+   (semanticdb-table "Makefile.am"
+    :major-mode 'makefile-mode
+    :tags '(("noinst_LTLIBRARIES" variable (:default-value ("libpcre.la")) nil [1 33]) ("libpcre_la_SOURCES" variable (:default-value ("maketables.c" "get.c" "study.c" "pcre.c" "pcreposix.c")) nil [33 100]) ("EXTRA_DIST" variable (:default-value ("COPYING")) nil [100 121]) ("libpcre_a_ladir" variable (:default-value ("$(includedir)/libgoffice-1/goffice/cut-n-paste/pcre")) nil [122 192]) ("libpcre_a_la_HEADERS" variable (:default-value ("pcreposix.h")) nil [192 227]) ("noinst_HEADERS" variable (:default-value ("internal.h" "pcre.h")) nil [227 262]) ("AM_CPPFLAGS" variable (:default-value ("$(GOFFICE_DEPS_CFLAGS)" "-I$(top_builddir)/lib/goffice-0.0.4" "-DSUPPORT_UTF8" "-DNEWLINE=10" "-DPOSIX_MALLOC_THRESHOLD=100" "-DLINK_SIZE=2" "-DMATCH_LIMIT=10000000")) nil [263 451]))
+    :file "Makefile.am"
+    :pointmax 452
+    )
+   )
+  :file "semantic.cache"
+  :semantic-tag-version "2.0pre3"
+  :semanticdb-version "2.0pre3"
+  )

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/study.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/study.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/cut-n-paste/pcre/study.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,493 @@
+/* File import from pcre to goffice by import-pcre.  Do not edit.  */
+
+/* This file has been programatically changed.  */
+/* This makes the following file fall under GPL license, see below.  */
+
+/*************************************************
+*      Perl-Compatible Regular Expressions       *
+*************************************************/
+
+/*
+   This is a library of functions to support regular expressions whose syntax
+   and semantics are as close as possible to those of the Perl 5 language. See
+   the file Tech.Notes for some information on the internals.
+
+   Written by: Philip Hazel <ph10 at cam.ac.uk>
+
+   Copyright (c) 1997-2004 University of Cambridge
+
+   -----------------------------------------------------------------------------
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   * Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+   * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+   * Neither the name of the University of Cambridge nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+   -----------------------------------------------------------------------------
+ */
+
+
+/* Include the internals header, which itself includes Standard C headers plus
+   the external pcre header. */
+
+#include <goffice/goffice-config.h>
+#include "internal.h"
+
+
+
+/*************************************************
+*      Set a bit and maybe its alternate case    *
+*************************************************/
+
+/* Given a character, set its bit in the table, and also the bit for the other
+   version of a letter if we are caseless.
+
+   Arguments:
+   start_bits    points to the bit map
+   c             is the character
+   caseless      the caseless flag
+   cd            the block with char table pointers
+
+   Returns:        nothing
+ */
+
+static void
+set_bit (uschar * start_bits, unsigned int c, BOOL caseless,
+	 compile_data * cd)
+{
+    start_bits[c / 8] |= (1 << (c & 7));
+    if (caseless && (cd->ctypes[c] & ctype_letter) != 0)
+	start_bits[cd->fcc[c] / 8] |= (1 << (cd->fcc[c] & 7));
+}
+
+
+
+/*************************************************
+*          Create bitmap of starting chars       *
+*************************************************/
+
+/* This function scans a compiled unanchored expression and attempts to build a
+   bitmap of the set of initial characters. If it can't, it returns FALSE. As time
+   goes by, we may be able to get more clever at doing this.
+
+   Arguments:
+   code         points to an expression
+   start_bits   points to a 32-byte table, initialized to 0
+   caseless     the current state of the caseless flag
+   utf8         TRUE if in UTF-8 mode
+   cd           the block with char table pointers
+
+   Returns:       TRUE if table built, FALSE otherwise
+ */
+
+static BOOL
+set_start_bits (const uschar * code, uschar * start_bits, BOOL caseless,
+		BOOL utf8, compile_data * cd)
+{
+    register int c;
+
+    /* This next statement and the later reference to dummy are here in order to
+       trick the optimizer of the IBM C compiler for OS/2 into generating correct
+       code. Apparently IBM isn't going to fix the problem, and we would rather not
+       disable optimization (in this module it actually makes a big difference, and
+       the pcre module can use all the optimization it can get). */
+
+    volatile int dummy;
+
+    do {
+	const uschar *tcode = code + 1 + LINK_SIZE;
+	BOOL try_next = TRUE;
+
+	while (try_next) {
+	    /* If a branch starts with a bracket or a positive lookahead assertion,
+	       recurse to set bits from within them. That's all for this branch. */
+
+	    if ((int) *tcode >= OP_BRA || *tcode == OP_ASSERT) {
+		if (!set_start_bits
+		    (tcode, start_bits, caseless, utf8, cd)) return FALSE;
+		try_next = FALSE;
+	    }
+
+	    else
+		switch (*tcode) {
+		default:
+		    return FALSE;
+
+		    /* Skip over callout */
+
+		case OP_CALLOUT:
+		    tcode += 2 + 2 * LINK_SIZE;
+		    break;
+
+		    /* Skip over extended extraction bracket number */
+
+		case OP_BRANUMBER:
+		    tcode += 3;
+		    break;
+
+		    /* Skip over lookbehind and negative lookahead assertions */
+
+		case OP_ASSERT_NOT:
+		case OP_ASSERTBACK:
+		case OP_ASSERTBACK_NOT:
+		    do
+			tcode += GET (tcode, 1);
+		    while (*tcode == OP_ALT);
+		    tcode += 1 + LINK_SIZE;
+		    break;
+
+		    /* Skip over an option setting, changing the caseless flag */
+
+		case OP_OPT:
+		    caseless = (tcode[1] & PCRE_CASELESS) != 0;
+		    tcode += 2;
+		    break;
+
+		    /* BRAZERO does the bracket, but carries on. */
+
+		case OP_BRAZERO:
+		case OP_BRAMINZERO:
+		    if (!set_start_bits
+			(++tcode, start_bits, caseless, utf8, cd))
+			return FALSE;
+		    dummy = 1;
+		    do
+			tcode += GET (tcode, 1);
+		    while (*tcode == OP_ALT);
+		    tcode += 1 + LINK_SIZE;
+		    break;
+
+		    /* Single-char * or ? sets the bit and tries the next item */
+
+		case OP_STAR:
+		case OP_MINSTAR:
+		case OP_QUERY:
+		case OP_MINQUERY:
+		    set_bit (start_bits, tcode[1], caseless, cd);
+		    tcode += 2;
+#ifdef SUPPORT_UTF8
+		    if (1 /* utf8 */ )
+			while ((*tcode & 0xc0) == 0x80)
+			    tcode++;
+#endif
+		    break;
+
+		    /* Single-char upto sets the bit and tries the next */
+
+		case OP_UPTO:
+		case OP_MINUPTO:
+		    set_bit (start_bits, tcode[3], caseless, cd);
+		    tcode += 4;
+#ifdef SUPPORT_UTF8
+		    if (1 /* utf8 */ )
+			while ((*tcode & 0xc0) == 0x80)
+			    tcode++;
+#endif
+		    break;
+
+		    /* At least one single char sets the bit and stops */
+
+		case OP_EXACT:	/* Fall through */
+		    tcode += 2;
+
+		case OP_CHAR:
+		case OP_CHARNC:
+		case OP_PLUS:
+		case OP_MINPLUS:
+		    set_bit (start_bits, tcode[1], caseless, cd);
+		    try_next = FALSE;
+		    break;
+
+		    /* Single character type sets the bits and stops */
+
+		case OP_NOT_DIGIT:
+		    for (c = 0; c < 32; c++)
+			start_bits[c] |= ~cd->cbits[c + cbit_digit];
+		    try_next = FALSE;
+		    break;
+
+		case OP_DIGIT:
+		    for (c = 0; c < 32; c++)
+			start_bits[c] |= cd->cbits[c + cbit_digit];
+		    try_next = FALSE;
+		    break;
+
+		case OP_NOT_WHITESPACE:
+		    for (c = 0; c < 32; c++)
+			start_bits[c] |= ~cd->cbits[c + cbit_space];
+		    try_next = FALSE;
+		    break;
+
+		case OP_WHITESPACE:
+		    for (c = 0; c < 32; c++)
+			start_bits[c] |= cd->cbits[c + cbit_space];
+		    try_next = FALSE;
+		    break;
+
+		case OP_NOT_WORDCHAR:
+		    for (c = 0; c < 32; c++)
+			start_bits[c] |= ~cd->cbits[c + cbit_word];
+		    try_next = FALSE;
+		    break;
+
+		case OP_WORDCHAR:
+		    for (c = 0; c < 32; c++)
+			start_bits[c] |= cd->cbits[c + cbit_word];
+		    try_next = FALSE;
+		    break;
+
+		    /* One or more character type fudges the pointer and restarts, knowing
+		       it will hit a single character type and stop there. */
+
+		case OP_TYPEPLUS:
+		case OP_TYPEMINPLUS:
+		    tcode++;
+		    break;
+
+		case OP_TYPEEXACT:
+		    tcode += 3;
+		    break;
+
+		    /* Zero or more repeats of character types set the bits and then
+		       try again. */
+
+		case OP_TYPEUPTO:
+		case OP_TYPEMINUPTO:
+		    tcode += 2;	/* Fall through */
+
+		case OP_TYPESTAR:
+		case OP_TYPEMINSTAR:
+		case OP_TYPEQUERY:
+		case OP_TYPEMINQUERY:
+		    switch (tcode[1]) {
+		    case OP_ANY:
+			return FALSE;
+
+		    case OP_NOT_DIGIT:
+			for (c = 0; c < 32; c++)
+			    start_bits[c] |= ~cd->cbits[c + cbit_digit];
+			break;
+
+		    case OP_DIGIT:
+			for (c = 0; c < 32; c++)
+			    start_bits[c] |= cd->cbits[c + cbit_digit];
+			break;
+
+		    case OP_NOT_WHITESPACE:
+			for (c = 0; c < 32; c++)
+			    start_bits[c] |= ~cd->cbits[c + cbit_space];
+			break;
+
+		    case OP_WHITESPACE:
+			for (c = 0; c < 32; c++)
+			    start_bits[c] |= cd->cbits[c + cbit_space];
+			break;
+
+		    case OP_NOT_WORDCHAR:
+			for (c = 0; c < 32; c++)
+			    start_bits[c] |= ~cd->cbits[c + cbit_word];
+			break;
+
+		    case OP_WORDCHAR:
+			for (c = 0; c < 32; c++)
+			    start_bits[c] |= cd->cbits[c + cbit_word];
+			break;
+		    }
+
+		    tcode += 2;
+		    break;
+
+		    /* Character class where all the information is in a bit map: set the
+		       bits and either carry on or not, according to the repeat count. If it was
+		       a negative class, and we are operating with UTF-8 characters, any byte
+		       with a value >= 0xc4 is a potentially valid starter because it starts a
+		       character with a value > 255. */
+
+		case OP_NCLASS:
+		    if (1 /* utf8 */ ) {
+			start_bits[24] |= 0xf0;	/* Bits for 0xc4 - 0xc8 */
+			memset (start_bits + 25, 0xff, 7);	/* Bits for 0xc9 - 0xff */
+		    }
+		    /* Fall through */
+
+		case OP_CLASS:
+		    {
+			tcode++;
+
+			/* In UTF-8 mode, the bits in a bit map correspond to character
+			   values, not to byte values. However, the bit map we are constructing is
+			   for byte values. So we have to do a conversion for characters whose
+			   value is > 127. In fact, there are only two possible starting bytes for
+			   characters in the range 128 - 255. */
+
+			if (1 /* utf8 */ ) {
+			    for (c = 0; c < 16; c++)
+				start_bits[c] |= tcode[c];
+			    for (c = 128; c < 256; c++) {
+				if ((tcode[c / 8] && (1 << (c & 7))) != 0) {
+				    int d = (c >> 6) | 0xc0;	/* Set bit for this starter */
+				    start_bits[d / 8] |= (1 << (d & 7));	/* and then skip on to the */
+				    c = (c & 0xc0) + 0x40 - 1;	/* next relevant character. */
+				}
+			    }
+			}
+
+			/* In non-UTF-8 mode, the two bit maps are completely compatible. */
+
+			else {
+			    for (c = 0; c < 32; c++)
+				start_bits[c] |= tcode[c];
+			}
+
+			/* Advance past the bit map, and act on what follows */
+
+			tcode += 32;
+			switch (*tcode) {
+			case OP_CRSTAR:
+			case OP_CRMINSTAR:
+			case OP_CRQUERY:
+			case OP_CRMINQUERY:
+			    tcode++;
+			    break;
+
+			case OP_CRRANGE:
+			case OP_CRMINRANGE:
+			    if (((tcode[1] << 8) + tcode[2]) == 0)
+				tcode += 5;
+			    else
+				try_next = FALSE;
+			    break;
+
+			default:
+			    try_next = FALSE;
+			    break;
+			}
+		    }
+		    break;	/* End of bitmap class handling */
+
+		}		/* End of switch */
+	}			/* End of try_next loop */
+
+	code += GET (code, 1);	/* Advance to next branch */
+    }
+    while (*code == OP_ALT);
+    return TRUE;
+}
+
+
+
+/*************************************************
+*          Study a compiled expression           *
+*************************************************/
+
+/* This function is handed a compiled expression that it must study to produce
+   information that will speed up the matching. It returns a pcre_extra block
+   which then gets handed back to pcre_exec().
+
+   Arguments:
+   re        points to the compiled expression
+   options   contains option bits
+   errorptr  points to where to place error messages;
+   set NULL unless error
+
+   Returns:    pointer to a pcre_extra block, with study_data filled in and the
+   appropriate flag set;
+   NULL on error or if no optimization possible
+ */
+
+pcre_extra *
+pcre_study (const pcre * external_re, int options, const char **errorptr)
+{
+    uschar start_bits[32];
+    pcre_extra *extra;
+    pcre_study_data *study;
+    const uschar *tables;
+    const real_pcre *re = (const real_pcre *) external_re;
+    uschar *code = (uschar *) re + re->name_table_offset +
+	(re->name_count * re->name_entry_size);
+    compile_data compile_block;
+
+    *errorptr = NULL;
+
+    if (re == NULL || re->magic_number != MAGIC_NUMBER) {
+	*errorptr = "argument is not a compiled regular expression";
+	return NULL;
+    }
+
+    if ((options & ~PUBLIC_STUDY_OPTIONS) != 0) {
+	*errorptr = "unknown or incorrect option bit(s) set";
+	return NULL;
+    }
+
+    /* For an anchored pattern, or an unanchored pattern that has a first char, or
+       a multiline pattern that matches only at "line starts", no further processing
+       at present. */
+
+    if ((re->options & (PCRE_ANCHORED | PCRE_FIRSTSET | PCRE_STARTLINE)) !=
+	0) return NULL;
+
+    /* Set the character tables in the block that is passed around */
+
+    tables = re->tables;
+    if (tables == NULL)
+	(void) pcre_fullinfo (external_re, NULL, PCRE_INFO_DEFAULT_TABLES, &tables);
+
+    compile_block.lcc = tables + lcc_offset;
+    compile_block.fcc = tables + fcc_offset;
+    compile_block.cbits = tables + cbits_offset;
+    compile_block.ctypes = tables + ctypes_offset;
+
+    /* See if we can find a fixed set of initial characters for the pattern. */
+
+    memset (start_bits, 0, 32 * sizeof (uschar));
+    if (!set_start_bits
+	(code, start_bits, (re->options & PCRE_CASELESS) != 0,
+	 (re->options & PCRE_UTF8) != 0, &compile_block))
+	return NULL;
+
+    /* Get a pcre_extra block and a pcre_study_data block. The study data is put in
+       the latter, which is pointed to by the former, which may also get additional
+       data set later by the calling program. At the moment, the size of
+       pcre_study_data is fixed. We nevertheless save it in a field for returning via
+       the pcre_fullinfo() function so that if it becomes variable in the future, we
+       don't have to change that code. */
+
+    extra = (pcre_extra *) (pcre_malloc)
+	(sizeof (pcre_extra) + sizeof (pcre_study_data));
+
+    if (extra == NULL) {
+	*errorptr = "failed to get memory";
+	return NULL;
+    }
+
+    study = (pcre_study_data *) ((char *) extra + sizeof (pcre_extra));
+    extra->flags = PCRE_EXTRA_STUDY_DATA;
+    extra->study_data = study;
+
+    study->size = sizeof (pcre_study_data);
+    study->options = PCRE_STUDY_MAPPED;
+    memcpy (study->start_bits, start_bits, sizeof (start_bits));
+
+    return extra;
+}
+
+/* End of study.c */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,14 @@
+noinst_LTLIBRARIES = libgoffice-data.la
+
+libgoffice_data_la_SOURCES =	\
+	go-data.c 		\
+	go-data-simple.c
+
+libgoffice_data_ladir = $(goffice_include_dir)/data
+libgoffice_data_la_HEADERS = 	\
+	goffice-data.h		\
+	go-data.h 		\
+	go-data-impl.h 		\
+	go-data-simple.h 
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,542 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LTLIBRARIES = libgoffice-data.la
+
+libgoffice_data_la_SOURCES = \
+	go-data.c 		\
+	go-data-simple.c
+
+
+libgoffice_data_ladir = $(goffice_include_dir)/data
+libgoffice_data_la_HEADERS = \
+	goffice-data.h		\
+	go-data.h 		\
+	go-data-impl.h 		\
+	go-data-simple.h 
+
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice/data
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libgoffice_data_la_LDFLAGS =
+libgoffice_data_la_LIBADD =
+am_libgoffice_data_la_OBJECTS = go-data.lo go-data-simple.lo
+libgoffice_data_la_OBJECTS = $(am_libgoffice_data_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/go-data-simple.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-data.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgoffice_data_la_SOURCES)
+HEADERS = $(libgoffice_data_la_HEADERS)
+
+DIST_COMMON = $(libgoffice_data_la_HEADERS) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice.mk Makefile.am
+SOURCES = $(libgoffice_data_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/data/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-data.la: $(libgoffice_data_la_OBJECTS) $(libgoffice_data_la_DEPENDENCIES) 
+	$(LINK)  $(libgoffice_data_la_LDFLAGS) $(libgoffice_data_la_OBJECTS) $(libgoffice_data_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-data-simple.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-data.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgoffice_data_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_data_laHEADERS: $(libgoffice_data_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_data_ladir)
+	@list='$(libgoffice_data_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_data_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_data_ladir)/$$f"; \
+	  $(libgoffice_data_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_data_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_data_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_data_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_data_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_data_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_data_ladir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libgoffice_data_laHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libgoffice_data_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libgoffice_data_laHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-libgoffice_data_laHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,103 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-data-impl.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_DATA_IMPL_H
+#define GO_DATA_IMPL_H
+
+#include <goffice/data/goffice-data.h>
+#include <goffice/data/go-data.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GO_DATA_CACHE_IS_VALID =	1 << 0,
+	GO_DATA_IS_EDITABLE =		1 << 1,
+	GO_DATA_VECTOR_LEN_CACHED =	1 << 2,
+	GO_DATA_MATRIX_SIZE_CACHED = GO_DATA_VECTOR_LEN_CACHED
+} GODataFlags;
+
+struct _GOData {
+	GObject		base;
+	gint32		flags; /* dunno what to do with these yet */
+};
+typedef struct {
+	GObjectClass base;
+
+	GOData	  *(*dup)	    (GOData const *src);
+	gboolean   (*eq)	    (GOData const *a, GOData const *b);
+	GOFormat  *(*preferred_fmt) (GOData const *dat);
+	char      *(*as_str)	    (GOData const *dat);
+	gboolean   (*from_str)	    (GOData *dat, char const *str);
+	void	   (*emit_changed)  (GOData *dat);
+
+	/* signals */
+	void (*changed)	(GOData *dat);
+} GODataClass;
+
+struct _GODataScalar {
+	GOData base;
+};
+
+typedef struct {
+	GODataClass base;
+	double       (*get_value)  (GODataScalar *scalar);
+	char const  *(*get_str)	   (GODataScalar *scalar);
+/*	PangoLayout *(get_fmt_str) (GODataScalar *scalar); */
+} GODataScalarClass;
+
+struct _GODataVector {
+	GOData base;
+
+	int len;	/* negative if dirty, includes missing values */
+	double *values;	/* NULL = inititialized/unsupported, nan = missing */
+	double minimum, maximum;
+};
+typedef struct {
+	GODataClass base;
+
+	void	 (*load_len)    (GODataVector *vec);
+	void	 (*load_values) (GODataVector *vec);
+	double	 (*get_value)   (GODataVector *vec, unsigned i);
+	char	*(*get_str)	(GODataVector *vec, unsigned i);
+/*	PangoLayout *(get_fmt_str)  (GODataVector *vec, unsigned i); */
+} GODataVectorClass;
+
+struct _GODataMatrix {
+	GOData base;
+
+	GODataMatrixSize size;	/* negative if dirty, includes missing values */
+	double *values;	/* NULL = uninitialized/unsupported, nan = missing */
+	double minimum, maximum;
+};
+
+typedef struct {
+	GODataClass base;
+
+	void	 (*load_size)    (GODataMatrix *vec);
+	void	 (*load_values) (GODataMatrix *vec);
+	double	 (*get_value)   (GODataMatrix *mat, unsigned i, unsigned j);
+	char	*(*get_str)	(GODataMatrix *mat, unsigned i, unsigned j);
+/*	PangoLayout *(get_fmt_str)  (GODataMatrix *mat, unsigned i, unsigned j); */
+} GODataMatrixClass;
+
+G_END_DECLS
+
+#endif /* GO_DATA_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1006 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-data-simple.c : 
+ *
+ * Copyright (C) 2003-2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <goffice/goffice-config.h>
+#include "go-data-simple.h"
+#include "go-data-impl.h"
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-math.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+struct _GODataScalarVal {
+	GODataScalar	 base;
+	double		 val;
+	char		*str;
+};
+typedef GODataScalarClass GODataScalarValClass;
+
+static GObjectClass *scalar_val_parent_klass;
+
+static void
+go_data_scalar_val_finalize (GObject *obj)
+{
+	GODataScalarVal *val = (GODataScalarVal *)obj;
+
+	if (val->str != NULL) {
+		g_free (val->str);
+		val->str = NULL;
+	}
+
+	(*scalar_val_parent_klass->finalize) (obj);
+}
+
+static GOData *
+go_data_scalar_val_dup (GOData const *src)
+{
+	GODataScalarVal *dst = g_object_new (G_OBJECT_TYPE (src), NULL);
+	GODataScalarVal const *src_val = (GODataScalarVal const *)src;
+	dst->val = src_val->val;
+	return GO_DATA (dst);
+}
+
+static gboolean
+go_data_scalar_val_eq (GOData const *a, GOData const *b)
+{
+	GODataScalarVal const *sval_a = (GODataScalarVal const *)a;
+	GODataScalarVal const *sval_b = (GODataScalarVal const *)b;
+
+	/* GOData::eq is used for identity, not arithmetic */
+	return sval_a->val == sval_b->val;
+}
+
+static char *
+go_data_scalar_val_as_str (GOData const *dat)
+{
+	return g_strdup (go_data_scalar_get_str (GO_DATA_SCALAR (dat)));
+}
+
+static gboolean
+go_data_scalar_val_from_str (GOData *dat, char const *str)
+{
+	GODataScalarVal *sval = (GODataScalarVal *)dat;
+	double tmp;
+	char *end;
+	errno = 0; /* strto(ld) sets errno, but does not clear it.  */
+	tmp = strtod (str, &end);
+
+	if (end == str || *end != '\0' || errno == ERANGE)
+		return FALSE;
+
+	g_free (sval->str);
+	sval->str = NULL;
+	sval->val = tmp;
+	return TRUE;
+}
+
+static double
+go_data_scalar_val_get_value (GODataScalar *dat)
+{
+	GODataScalarVal const *sval = (GODataScalarVal const *)dat;
+	return sval->val;
+}
+
+static char const *
+go_data_scalar_val_get_str (GODataScalar *dat)
+{
+	GODataScalarVal *sval = (GODataScalarVal *)dat;
+
+	if (sval->str == NULL)
+		sval->str = g_strdup_printf ("%g", sval->val);
+	return sval->str;
+}
+
+static void
+go_data_scalar_val_class_init (GObjectClass *gobject_klass)
+{
+	GODataClass *godata_klass = (GODataClass *) gobject_klass;
+	GODataScalarClass *scalar_klass = (GODataScalarClass *) gobject_klass;
+
+	scalar_val_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize = go_data_scalar_val_finalize;
+	godata_klass->dup	= go_data_scalar_val_dup;
+	godata_klass->eq	= go_data_scalar_val_eq;
+	godata_klass->as_str	= go_data_scalar_val_as_str;
+	godata_klass->from_str	= go_data_scalar_val_from_str;
+	scalar_klass->get_value	= go_data_scalar_val_get_value;
+	scalar_klass->get_str	= go_data_scalar_val_get_str;
+}
+
+GSF_CLASS (GODataScalarVal, go_data_scalar_val,
+	   go_data_scalar_val_class_init, NULL,
+	   GO_DATA_SCALAR_TYPE)
+
+GOData *
+go_data_scalar_val_new (double val)
+{
+	GODataScalarVal *res = g_object_new (GO_DATA_SCALAR_VAL_TYPE, NULL);
+	res->val = val;
+	return GO_DATA (res);
+}
+
+/*****************************************************************************/
+
+struct _GODataScalarStr {
+	GODataScalar	 base;
+	char const *str;
+	gboolean    needs_free;
+};
+typedef GODataScalarClass GODataScalarStrClass;
+
+static GObjectClass *scalar_str_parent_klass;
+
+static void
+go_data_scalar_str_finalize (GObject *obj)
+{
+	GODataScalarStr *str = (GODataScalarStr *)obj;
+
+	if (str->needs_free && str->str != NULL) {
+		g_free ((char *)str->str);
+		str->str = NULL;
+	}
+	(*scalar_str_parent_klass->finalize) (obj);
+}
+
+static GOData *
+go_data_scalar_str_dup (GOData const *src)
+{
+	GODataScalarStr *dst = g_object_new (G_OBJECT_TYPE (src), NULL);
+	GODataScalarStr const *src_val = (GODataScalarStr const *)src;
+	dst->needs_free = TRUE;
+	dst->str = g_strdup (src_val->str);
+	return GO_DATA (dst);
+}
+
+static gboolean
+go_data_scalar_str_eq (GOData const *a, GOData const *b)
+{
+	GODataScalarStr const *str_a = (GODataScalarStr const *)a;
+	GODataScalarStr const *str_b = (GODataScalarStr const *)b;
+	return 0 == strcmp (str_a->str, str_b->str);
+}
+
+static char *
+go_data_scalar_str_as_str (GOData const *dat)
+{
+	GODataScalarStr const *str = (GODataScalarStr const *)dat;
+	return g_strdup (str->str);
+}
+
+static gboolean
+go_data_scalar_str_from_str (GOData *dat, char const *string)
+{
+	GODataScalarStr *str = (GODataScalarStr *)dat;
+
+	if (str->str == string)
+		return TRUE;
+	if (str->needs_free)
+		g_free ((char *)str->str);
+	str->str = g_strdup (string);
+	str->needs_free = TRUE;
+	return TRUE;
+}
+
+static double
+go_data_scalar_str_get_value (GODataScalar *dat)
+{
+	return go_nan;
+}
+
+static char const *
+go_data_scalar_str_get_str (GODataScalar *dat)
+{
+	GODataScalarStr const *str = (GODataScalarStr const *)dat;
+	return str->str;
+}
+
+static void
+go_data_scalar_str_class_init (GObjectClass *gobject_klass)
+{
+	GODataClass *godata_klass = (GODataClass *) gobject_klass;
+	GODataScalarClass *scalar_klass = (GODataScalarClass *) gobject_klass;
+
+	scalar_str_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize	= go_data_scalar_str_finalize;
+	godata_klass->dup	= go_data_scalar_str_dup;
+	godata_klass->eq	= go_data_scalar_str_eq;
+	godata_klass->as_str	= go_data_scalar_str_as_str;
+	godata_klass->from_str	= go_data_scalar_str_from_str;
+	scalar_klass->get_value	= go_data_scalar_str_get_value;
+	scalar_klass->get_str	= go_data_scalar_str_get_str;
+}
+
+static void
+go_data_scalar_str_init (GObject *obj)
+{
+	GODataScalarStr *str = (GODataScalarStr *)obj;
+	str->str = "";
+	str->needs_free = FALSE;
+}
+
+GSF_CLASS (GODataScalarStr, go_data_scalar_str,
+	   go_data_scalar_str_class_init, go_data_scalar_str_init,
+	   GO_DATA_SCALAR_TYPE)
+
+GOData *
+go_data_scalar_str_new (char const *str, gboolean needs_free)
+{
+	GODataScalarStr *res = g_object_new (GO_DATA_SCALAR_STR_TYPE, NULL);
+	res->str	= str;
+	res->needs_free = needs_free;
+	return GO_DATA (res);
+}
+void
+go_data_scalar_str_set_str (GODataScalarStr *str,
+			    char const *text, gboolean needs_free)
+{
+	if (str->str == text)
+		return;
+	if (str->needs_free)
+		g_free ((char *)str->str);
+	str->str = text;
+	str->needs_free = needs_free;
+	go_data_emit_changed (GO_DATA (str));
+}
+
+/*****************************************************************************/
+
+struct _GODataVectorVal {
+	GODataVector	 base;
+	unsigned	 n;
+	double *val;
+	GDestroyNotify notify;
+};
+typedef GODataVectorClass GODataVectorValClass;
+
+static GObjectClass *vector_val_parent_klass;
+
+static void
+go_data_vector_val_finalize (GObject *obj)
+{
+	GODataVectorVal *vec = (GODataVectorVal *)obj;
+	if (vec->notify && vec->val)
+		(*vec->notify) (vec->val);
+
+	(*vector_val_parent_klass->finalize) (obj);
+}
+
+static GOData *
+go_data_vector_val_dup (GOData const *src)
+{
+	GODataVectorVal *dst = g_object_new (G_OBJECT_TYPE (src), NULL);
+	GODataVectorVal const *src_val = (GODataVectorVal const *)src;
+	if (src_val->notify) {
+		dst->val = g_new (double, src_val->n);
+		memcpy (dst->val, src_val->val, src_val->n * sizeof (double));
+		dst->notify = g_free;
+	} else
+		dst->val = src_val->val;
+	dst->n = src_val->n;
+	return GO_DATA (dst);
+}
+
+static gboolean
+go_data_vector_val_eq (GOData const *a, GOData const *b)
+{
+	GODataVectorVal const *val_a = (GODataVectorVal const *)a;
+	GODataVectorVal const *val_b = (GODataVectorVal const *)b;
+
+	/* GOData::eq is used for identity, not arithmetic */
+	return val_a->val == val_b->val && val_a->n == val_b->n;
+}
+
+static void
+go_data_vector_val_load_len (GODataVector *vec)
+{
+	vec->base.flags |= GO_DATA_VECTOR_LEN_CACHED;
+	vec->len = ((GODataVectorVal *)vec)->n;
+}
+
+static void
+go_data_vector_val_load_values (GODataVector *vec)
+{
+	GODataVectorVal const *val = (GODataVectorVal const *)vec;
+	double minimum = DBL_MAX, maximum = -DBL_MAX;
+	int i = val->n;
+
+	vec->values = (double *)val->val;
+
+	while (i-- > 0) {
+		if (minimum > val->val[i])
+			minimum = val->val[i];
+		if (maximum < val->val[i])
+			maximum = val->val[i];
+	}
+	vec->minimum = minimum;
+	vec->maximum = maximum;
+	vec->base.flags |= GO_DATA_CACHE_IS_VALID;
+}
+
+static double
+go_data_vector_val_get_value (GODataVector *vec, unsigned i)
+{
+	GODataVectorVal const *val = (GODataVectorVal const *)vec;
+	g_return_val_if_fail (val != NULL && val->val != NULL && i < val->n, go_nan);
+	return val->val[i];
+}
+
+static char *
+go_data_vector_val_get_str (GODataVector *vec, unsigned i)
+{
+	GODataVectorVal const *val = (GODataVectorVal const *)vec;
+	g_return_val_if_fail (val != NULL && val->val != NULL && i < val->n, NULL);
+	return g_strdup_printf ("%g", val->val[i]);
+}
+
+static char *
+go_data_vector_val_as_str (GOData const *dat)
+{
+	GODataVectorVal *vec = GO_DATA_VECTOR_VAL (dat);
+	GString *str;
+	char sep, sz[G_ASCII_DTOSTR_BUF_SIZE];
+	unsigned i;
+
+	if (vec->n ==0)
+		return g_strdup ("");
+
+	sep = format_get_col_sep ();
+	g_snprintf (sz, sizeof (sz), "%g", vec->val[0]);
+	str = g_string_new (sz);
+	for (i = 1; i < vec->n; i++) {
+		g_string_append_c (str, sep);
+		g_snprintf (sz, sizeof (sz), "%g", vec->val[i]);
+		g_string_append (str, sz);
+	}
+	return g_string_free (str, FALSE);
+}
+
+static gboolean
+go_data_vector_val_from_str (GOData *dat, char const *str)
+{
+	GODataVectorVal *vec = GO_DATA_VECTOR_VAL (dat);
+	char sep, *end = (char*) str;
+	double val;
+	GArray *values;
+
+	g_return_val_if_fail (str != NULL, TRUE);
+
+	if (vec->notify && vec->val)
+		(*vec->notify) (vec->val);
+
+	values = g_array_sized_new (FALSE, FALSE, sizeof(double), 16);
+	sep = 0;
+	vec->val = NULL;
+	vec->n = 0;
+	vec->notify = (GDestroyNotify) g_free;
+	while (1) {
+		val = g_strtod (end, &end);
+		g_array_append_val (values, val);
+		if (*end) {
+			if (!sep) {
+				/* allow the use of all possible seps */
+				if ((sep = format_get_arg_sep ()) != *end)
+					if ((sep = format_get_col_sep ()) != *end)
+						sep = format_get_row_sep ();
+			}
+			if (*end != sep) {
+				g_array_free (values, TRUE);
+				return FALSE;
+			}
+			end++;
+		} else
+			break;
+	}
+	if (values->len == 0) {
+		g_array_free (values, TRUE);
+		return TRUE;
+	}
+	vec->n = values->len;
+	vec->val = (double*) values->data;
+	g_array_free (values, FALSE);
+	go_data_emit_changed (GO_DATA (vec));
+	return TRUE;
+}
+
+static void
+go_data_vector_val_class_init (GObjectClass *gobject_klass)
+{
+	GODataClass *godata_klass = (GODataClass *) gobject_klass;
+	GODataVectorClass *vector_klass = (GODataVectorClass *) gobject_klass;
+
+	vector_val_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize = go_data_vector_val_finalize;
+	godata_klass->dup	= go_data_vector_val_dup;
+	godata_klass->eq	= go_data_vector_val_eq;
+	godata_klass->as_str	= go_data_vector_val_as_str;
+	godata_klass->from_str	= go_data_vector_val_from_str;
+	vector_klass->load_len    = go_data_vector_val_load_len;
+	vector_klass->load_values = go_data_vector_val_load_values;
+	vector_klass->get_value   = go_data_vector_val_get_value;
+	vector_klass->get_str     = go_data_vector_val_get_str;
+}
+
+GSF_CLASS (GODataVectorVal, go_data_vector_val,
+	   go_data_vector_val_class_init, NULL,
+	   GO_DATA_VECTOR_TYPE)
+
+GOData *
+go_data_vector_val_new (double *val, unsigned n, GDestroyNotify notify)
+{
+	GODataVectorVal *res = g_object_new (GO_DATA_VECTOR_VAL_TYPE, NULL);
+	res->val = val;
+	res->n = n;
+	res->notify = notify;
+	return GO_DATA (res);
+}
+
+/*****************************************************************************/
+
+struct _GODataVectorStr {
+	GODataVector	 base;
+	char const * const *str;
+	int n;
+	GDestroyNotify notify;   
+
+	GOTranslateFunc translate_func;
+	gpointer        translate_data;
+	GDestroyNotify  translate_notify;   
+};
+typedef GODataVectorClass GODataVectorStrClass;
+
+static GObjectClass *vector_str_parent_klass;
+
+static void
+cb_strings_destroy_notify (gpointer data)
+{
+	char **str = (char **) data;
+	unsigned i = 0;
+	while (str[i] != NULL)
+		g_free (str[i++]);
+	g_free (str);
+}
+
+static void
+go_data_vector_str_finalize (GObject *obj)
+{
+	GODataVectorStr *str = (GODataVectorStr *)obj;
+	if (str->notify && str->str != NULL)
+		(*str->notify) ((gpointer)str->str);
+
+	if (str->translate_notify != NULL)
+		(*str->translate_notify) (str->translate_data);
+
+	if (str->base.values != NULL)
+		g_free (str->base.values);
+	str->base.values = NULL;
+
+	(*vector_str_parent_klass->finalize) (obj);
+}
+
+static GOData *
+go_data_vector_str_dup (GOData const *src)
+{
+	GODataVectorStr *dst = g_object_new (G_OBJECT_TYPE (src), NULL);
+	GODataVectorStr const *src_val = (GODataVectorStr const *)src;
+	dst->n = src_val->n;
+	if (src_val->notify) {
+		int i;
+		char const * *str = g_new (char const *, src_val->n + 1);
+		for (i = 0; i < src_val->n; i++)
+			str[i] = g_strdup (src_val->str[i]);
+		str[src_val->n] = NULL;
+		dst->str = str;
+		dst->notify = cb_strings_destroy_notify;
+	} else
+		dst->str = src_val->str;
+	return GO_DATA (dst);
+}
+
+static gboolean
+go_data_vector_str_eq (GOData const *a, GOData const *b)
+{
+	GODataVectorStr const *str_a = (GODataVectorStr const *)a;
+	GODataVectorStr const *str_b = (GODataVectorStr const *)b;
+	return str_a->str == str_b->str && str_a->n == str_b->n;
+}
+
+static char *
+go_data_vector_str_as_str (GOData const *dat)
+{
+	GODataVectorStr *vec = GO_DATA_VECTOR_STR (dat);
+	GString *str;
+	char sep;
+	int i;
+
+	sep = format_get_col_sep ();
+	if (vec->n ==0)
+		return g_strdup ("");
+
+	str = g_string_new ("");
+	g_string_append_c (str, '\"');
+	g_string_append (str, vec->str[0]);
+	g_string_append_c (str, '\"');
+	for (i = 1; i < vec->n; i++) {
+		g_string_append_c (str, sep);
+		g_string_append_c (str, '\"');
+		g_string_append (str, vec->str[i]);
+		g_string_append_c (str, '\"');
+	}
+	return g_string_free (str, FALSE);
+}
+
+static gboolean
+go_data_vector_str_from_str (GOData *dat, char const *str)
+{
+	GODataVectorStr *vec = GO_DATA_VECTOR_STR (dat);
+	char sep, *cur = (char*) str, *end, *val;
+	GArray *values;
+
+	g_return_val_if_fail (str != NULL, TRUE);
+
+	if (vec->notify && vec->str)
+		(*vec->notify) ((gpointer)vec->str);
+
+	values = g_array_sized_new (FALSE, FALSE, sizeof(char*), 16);
+	/* search which separator has been used */
+	sep = format_get_col_sep ();
+	end = strchr (cur, sep);
+	if (end == NULL) {
+		sep = format_get_arg_sep ();
+		end = strchr (cur, sep);
+		if (end ==NULL)
+			sep = format_get_row_sep ();
+	}
+	vec->str = NULL;
+	vec->n = 0;
+	vec->notify = cb_strings_destroy_notify;
+	while (*cur) {
+		if (*cur == '\"') {
+			cur++;
+			end = strchr (cur, '\"');
+			if (end == NULL) {
+				g_array_free (values, TRUE);
+				return FALSE;
+			}
+			val = g_strndup (cur, end - cur);
+			g_array_append_val (values, val);
+			if (end[1] == 0)
+				break;
+			if (end[1] != sep) {
+				g_array_free (values, TRUE);
+				return FALSE;
+			}
+			cur = end + 2;
+		} else {
+			/* the string is not quotes delimited */
+			end = strchr (cur, sep);
+			if (end == NULL) {
+				if (strchr (cur, '\"')) {
+					/* string containg quotes are not allowed */
+					g_array_free (values, TRUE);
+					return FALSE;
+				}
+				val = g_strdup (cur);
+				g_array_append_val (values, val);
+				break;
+			}
+			val = g_strndup (cur, end - cur);
+			g_array_append_val (values, val);
+			if (strchr (val, '\"')) {
+				/* string containg quotes are not allowed */
+				g_array_free (values, TRUE);
+				return FALSE;
+			}					
+			cur = end + 1;
+		}
+	}
+	if (values->len == 0) {
+		g_array_free (values, TRUE);
+		return TRUE;
+	}
+	vec->n = values->len;
+	val = NULL;
+	g_array_append_val (values, val);
+	vec->str = (char const*const*) values->data;
+	g_array_free (values, FALSE);
+	go_data_emit_changed (GO_DATA (vec));
+	return TRUE;
+}
+
+static void
+go_data_vector_str_load_len (GODataVector *vec)
+{
+	vec->base.flags |= GO_DATA_VECTOR_LEN_CACHED;
+	if (vec->values && vec->len != ((GODataVectorStr *)vec)->n) {
+		g_free (vec->values);
+		vec->values = NULL;
+	}
+	vec->len = ((GODataVectorStr *)vec)->n;
+}
+
+static void
+go_data_vector_str_load_values (GODataVector *vec)
+{
+	char *end;
+	GODataVectorStr const *strs = (GODataVectorStr const *)vec;
+	double minimum = DBL_MAX, maximum = -DBL_MAX;
+	int i = vec->len = strs->n;
+
+	if (vec->values == NULL)
+		vec->values = g_new (double, strs->n);
+	while (i-- > 0) {
+		vec->values[i] = g_strtod (strs->str[i], &end);
+		if (*end) {
+			vec->values[i] = go_nan;
+			continue;
+		}
+		if (minimum > vec->values[i])
+			minimum = vec->values[i];
+		if (maximum < vec->values[i])
+			maximum = vec->values[i];
+	}
+	vec->minimum = minimum;
+	vec->maximum = maximum;
+	vec->base.flags |= GO_DATA_CACHE_IS_VALID;
+}
+
+static double
+go_data_vector_str_get_value (GODataVector *vec, unsigned i)
+{
+	char *end;
+	GODataVectorStr *strs = (GODataVectorStr *)vec;
+	double d = g_strtod (strs->str[i], &end);
+	return (*end)? go_nan: d;
+}
+
+static char *
+go_data_vector_str_get_str (GODataVector *vec, unsigned i)
+{
+	GODataVectorStr *strs = (GODataVectorStr *)vec;
+	if (strs->translate_func == NULL)
+		return g_strdup (strs->str[i]);
+	return g_strdup ((strs->translate_func) (strs->str[i],
+						 strs->translate_data));
+}
+
+static void
+go_data_vector_str_class_init (GObjectClass *gobject_klass)
+{
+	GODataClass *godata_klass = (GODataClass *) gobject_klass;
+	GODataVectorClass *vector_klass = (GODataVectorClass *) gobject_klass;
+
+	vector_str_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize	= go_data_vector_str_finalize;
+	godata_klass->dup	= go_data_vector_str_dup;
+	godata_klass->eq	= go_data_vector_str_eq;
+	godata_klass->as_str	= go_data_vector_str_as_str;
+	godata_klass->from_str	= go_data_vector_str_from_str;
+	vector_klass->load_len    = go_data_vector_str_load_len;
+	vector_klass->load_values = go_data_vector_str_load_values;
+	vector_klass->get_value   = go_data_vector_str_get_value;
+	vector_klass->get_str     = go_data_vector_str_get_str;
+}
+
+static void
+go_data_vector_str_init (GObject *obj)
+{
+	GODataVectorStr *str = (GODataVectorStr *)obj;
+	str->str = NULL;
+	str->n = 0;
+	str->notify = NULL;
+	str->translate_func = NULL;
+	str->translate_data = NULL;
+	str->translate_notify = NULL;
+}
+
+GSF_CLASS (GODataVectorStr, go_data_vector_str,
+	   go_data_vector_str_class_init, go_data_vector_str_init,
+	   GO_DATA_VECTOR_TYPE)
+
+GOData *
+go_data_vector_str_new (char const * const *str, unsigned n, GDestroyNotify notify)
+{
+	GODataVectorStr *res = g_object_new (GO_DATA_VECTOR_STR_TYPE, NULL);
+	res->str = str;
+	res->n	 = n;
+	res->notify = notify;
+	return GO_DATA (res);
+}
+
+/**
+ * go_data_vector_str_set_translate_func:
+ * @vec: a #GODataVectorStr
+ * @func: a #GOTranslateFunc
+ * @data: data to be passed to @func and @notify
+ * @notify: a #GODestroyNotify function to be called when @vec is 
+ *   destroyed or when the translation function is changed
+ * 
+ * Sets a function to be used for translating elements of @vec
+ **/
+void
+go_data_vector_str_set_translate_func (GODataVectorStr	*vec,
+				       GOTranslateFunc	 func,
+				       gpointer		 data,
+				       GDestroyNotify	 notify)
+{
+	g_return_if_fail (GO_DATA_VECTOR_STR (vec) != NULL);
+
+	if (vec->translate_notify != NULL)
+		(*vec->translate_notify) (vec->translate_data);
+
+	vec->translate_func = func;
+	vec->translate_data = data;
+	vec->translate_notify = notify;
+}
+
+static char const *
+dgettext_swapped (char const *msgid, 
+		  char const *domainname)
+{
+	return dgettext (domainname, msgid);
+}
+
+/**
+ * go_data_vector_str_set_translation_domain:
+ * @action_group: a #GtkActionGroup
+ * @domain: the translation domain to use for dgettext() calls
+ * 
+ * Sets the translation domain and uses dgettext() for translating the 
+ * elements of @vec.
+ * Note that libgoffice expects all strings to be encoded in UTF-8, therefore
+ * the translation domain must have its codeset set to UTF-8, see
+ * bind_textdomain_codeset() in the gettext() documentation. 
+ *
+ * If you're not using gettext() for localization, see 
+ * go_data_vector_str_set_translate_func().
+ **/
+void 
+go_data_vector_str_set_translation_domain (GODataVectorStr *vec,
+					   char const      *domain)
+{
+	g_return_if_fail (GO_DATA_VECTOR_STR (vec) != NULL);
+
+	go_data_vector_str_set_translate_func (vec, 
+		(GOTranslateFunc)dgettext_swapped, g_strdup (domain), g_free);
+}
+/*****************************************************************************/
+
+struct _GODataMatrixVal {
+	GODataMatrix	 base;
+	GODataMatrixSize size;
+	double *val;
+	GDestroyNotify notify;
+};
+
+typedef GODataMatrixClass GODataMatrixValClass;
+
+static GObjectClass *matrix_val_parent_klass;
+
+static void
+go_data_matrix_val_finalize (GObject *obj)
+{
+	GODataMatrixVal *mat = (GODataMatrixVal *)obj;
+	if (mat->notify && mat->val)
+		(*mat->notify) (mat->val);
+
+	(*matrix_val_parent_klass->finalize) (obj);
+}
+
+static GOData *
+go_data_matrix_val_dup (GOData const *src)
+{
+	GODataMatrixVal *dst = g_object_new (G_OBJECT_TYPE (src), NULL);
+	GODataMatrixVal const *src_val = (GODataMatrixVal const *)src;
+	if (src_val->notify) {
+		dst->val = g_new (double, src_val->size.rows * src_val->size.columns);
+		memcpy (dst->val, src_val->val, src_val->size.rows * src_val->size.columns * sizeof (double));
+		dst->notify = g_free;
+	} else
+		dst->val = src_val->val;
+	dst->size = src_val->size;
+	return GO_DATA (dst);
+}
+
+static gboolean
+go_data_matrix_val_eq (GOData const *a, GOData const *b)
+{
+	GODataMatrixVal const *val_a = (GODataMatrixVal const *)a;
+	GODataMatrixVal const *val_b = (GODataMatrixVal const *)b;
+
+	/* GOData::eq is used for identity, not arithmetic */
+	return val_a->val == val_b->val &&
+			val_a->size.rows == val_b->size.rows &&
+			val_a->size.columns == val_b->size.columns;
+}
+
+static void
+go_data_matrix_val_load_size (GODataMatrix *mat)
+{
+	mat->base.flags |= GO_DATA_MATRIX_SIZE_CACHED;
+	mat->size = ((GODataMatrixVal *)mat)->size;
+}
+
+static void
+go_data_matrix_val_load_values (GODataMatrix *mat)
+{
+	GODataMatrixVal const *val = (GODataMatrixVal const *)mat;
+	double minimum = DBL_MAX, maximum = -DBL_MAX;
+	int i = val->size.rows * val->size.columns;
+
+	mat->values = (double *)val->val;
+
+	while (i-- > 0) {
+		if (minimum > val->val[i])
+			minimum = val->val[i];
+		if (maximum < val->val[i])
+			maximum = val->val[i];
+	}
+	mat->minimum = minimum;
+	mat->maximum = maximum;
+	mat->base.flags |= GO_DATA_CACHE_IS_VALID;
+}
+
+static double
+go_data_matrix_val_get_value (GODataMatrix *mat, unsigned i, unsigned j)
+{
+	return mat->values[i * mat->size.columns + j];
+}
+
+static char *
+go_data_matrix_val_get_str (GODataMatrix *mat, unsigned i, unsigned j)
+{
+	return g_strdup_printf ("%g", mat->values[i * mat->size.columns + j]);
+}
+
+static char *
+go_data_matrix_val_as_str (GOData const *dat)
+{
+	GODataMatrixVal *mat = GO_DATA_MATRIX_VAL (dat);
+	GString *str;
+	char row_sep, col_sep, sz[G_ASCII_DTOSTR_BUF_SIZE];
+	int i, j;
+
+	if (mat->size.rows == 0 || mat->size.columns == 0)
+		return g_strdup ("");
+
+	col_sep = format_get_col_sep ();
+	row_sep = format_get_row_sep ();
+	g_snprintf (sz, sizeof (sz), "%g", mat->val[0]);
+	str = g_string_new (sz);
+	for (j = 1; j < mat->size.columns; j++) {
+		g_string_append_c (str, col_sep);
+		g_snprintf (sz, sizeof (sz), "%g", mat->val[j]);
+		g_string_append (str, sz);
+	}
+	for (i = 1; i < mat->size.rows; i++) {
+		g_string_append_c (str, row_sep);
+		g_snprintf (sz, sizeof (sz), "%g", mat->val[i * mat->size.columns]);
+		g_string_append (str, sz);
+		for (j = 1; j < mat->size.columns; j++) {
+			g_string_append_c (str, col_sep);
+			g_snprintf (sz, sizeof (sz), "%g", mat->val[i * mat->size.columns + j]);
+			g_string_append (str, sz);
+		}
+	}
+	return g_string_free (str, FALSE);
+}
+
+static gboolean
+go_data_matrix_val_from_str (GOData *dat, char const *str)
+{
+	GODataMatrixVal *mat = GO_DATA_MATRIX_VAL (dat);
+	char row_sep, col_sep, *end = (char*) str;
+	int i, j, columns;
+	double val;
+	GArray *values;
+
+	g_return_val_if_fail (str != NULL, TRUE);
+
+	values = g_array_sized_new (FALSE, FALSE, sizeof(double), 16);
+	col_sep = format_get_col_sep ();
+	row_sep = format_get_row_sep ();
+	i = j = columns = 0;
+	if (mat->notify && mat->val)
+		(*mat->notify) (mat->val);
+	mat->val = NULL;
+	mat->size.rows = 0;
+	mat->size.columns = 0;
+	mat->notify = g_free;
+	while (1) {
+		val = g_strtod (end, &end);
+		g_array_append_val (values, val);
+		if (*end) {
+			if (*end == col_sep)
+				j++;
+			else if (*end == row_sep) {
+				if (columns > 0) {
+					if (j == columns - 1) {
+						i++;
+						j = 0;
+					} else {
+						g_array_free (values, TRUE);
+						return FALSE;
+					}
+				} else {
+					columns = j + 1;
+					i++;
+					j = 0;
+				}
+			} else {
+				g_array_free (values, TRUE);
+				return FALSE;
+			}
+			end++;
+		} else
+			break;
+	}
+	if (j != columns - 1) {
+		g_array_free (values, TRUE);
+		return FALSE;
+	}
+	if (columns == 0) {
+		g_array_free (values, TRUE);
+		return TRUE;
+	}
+	mat->size.columns = columns;
+	mat->size.rows = i + 1;
+	mat->val = (double*) values->data;
+	g_array_free (values, FALSE);
+	go_data_emit_changed (GO_DATA (mat));
+	return TRUE;
+}
+
+static void
+go_data_matrix_val_class_init (GObjectClass *gobject_klass)
+{
+	GODataClass *godata_klass = (GODataClass *) gobject_klass;
+	GODataMatrixClass *matrix_klass = (GODataMatrixClass *) gobject_klass;
+
+	matrix_val_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize = go_data_matrix_val_finalize;
+	godata_klass->dup	= go_data_matrix_val_dup;
+	godata_klass->eq	= go_data_matrix_val_eq;
+	godata_klass->as_str	= go_data_matrix_val_as_str;
+	godata_klass->from_str	= go_data_matrix_val_from_str;
+	matrix_klass->load_size    = go_data_matrix_val_load_size;
+	matrix_klass->load_values = go_data_matrix_val_load_values;
+	matrix_klass->get_value   = go_data_matrix_val_get_value;
+	matrix_klass->get_str     = go_data_matrix_val_get_str;
+}
+
+GSF_CLASS (GODataMatrixVal, go_data_matrix_val,
+	   go_data_matrix_val_class_init, NULL,
+	   GO_DATA_MATRIX_TYPE)
+
+GOData *
+go_data_matrix_val_new (double *val, unsigned rows, unsigned columns, GDestroyNotify   notify)
+{
+	GODataMatrixVal *res = g_object_new (GO_DATA_MATRIX_VAL_TYPE, NULL);
+	res->val = val;
+	res->size.rows = rows;
+	res->size.columns = columns;
+	res->notify = notify;
+	return GO_DATA (res);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data-simple.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,79 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-data-simple.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_DATA_SIMPLE_H
+#define GO_DATA_SIMPLE_H
+
+#include <goffice/data/goffice-data.h>
+#include <goffice/data/go-data.h>
+
+G_BEGIN_DECLS
+
+#define GO_DATA_SCALAR_VAL_TYPE  (go_data_scalar_val_get_type ())
+#define GO_DATA_SCALAR_VAL(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_SCALAR_VAL_TYPE, GODataScalarVal))
+#define IS_GO_DATA_SCALAR_VAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_SCALAR_VAL_TYPE))
+
+typedef struct _GODataScalarVal GODataScalarVal;
+GType	 go_data_scalar_val_get_type (void);
+GOData	*go_data_scalar_val_new      (double val);
+
+#define GO_DATA_SCALAR_STR_TYPE  (go_data_scalar_str_get_type ())
+#define GO_DATA_SCALAR_STR(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_SCALAR_STR_TYPE, GODataScalarStr))
+#define IS_GO_DATA_SCALAR_STR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_SCALAR_STR_TYPE))
+
+typedef struct _GODataScalarStr GODataScalarStr;
+GType	 go_data_scalar_str_get_type (void);
+GOData	*go_data_scalar_str_new      (char const *text, gboolean needs_free);
+void     go_data_scalar_str_set_str  (GODataScalarStr *str,
+				      char const *text, gboolean needs_free);
+
+#define GO_DATA_VECTOR_VAL_TYPE  (go_data_vector_val_get_type ())
+#define GO_DATA_VECTOR_VAL(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_VECTOR_VAL_TYPE, GODataVectorVal))
+#define IS_GO_DATA_VECTOR_VAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_VECTOR_VAL_TYPE))
+
+typedef struct _GODataVectorVal GODataVectorVal;
+GType	 go_data_vector_val_get_type (void);
+GOData	*go_data_vector_val_new      (double *val, unsigned n, GDestroyNotify   notify);
+
+#define GO_DATA_VECTOR_STR_TYPE  (go_data_vector_str_get_type ())
+#define GO_DATA_VECTOR_STR(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_VECTOR_STR_TYPE, GODataVectorStr))
+#define IS_GO_DATA_VECTOR_STR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_VECTOR_STR_TYPE))
+
+typedef struct _GODataVectorStr GODataVectorStr;
+GType	go_data_vector_str_get_type	      (void);
+GOData *go_data_vector_str_new		      (char const * const *str, unsigned n, GDestroyNotify notify);
+void    go_data_vector_str_set_translate_func (GODataVectorStr *vector,
+					       GOTranslateFunc  func,
+					       gpointer         data,
+					       GDestroyNotify   notify);
+void go_data_vector_str_set_translation_domain (GODataVectorStr *vec,
+						char const      *domain);
+
+#define GO_DATA_MATRIX_VAL_TYPE  (go_data_matrix_val_get_type ())
+#define GO_DATA_MATRIX_VAL(o)	 (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_MATRIX_VAL_TYPE, GODataMatrixVal))
+#define IS_GO_DATA_MATRIX_VAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_MATRIX_VAL_TYPE))
+
+typedef struct _GODataMatrixVal GODataMatrixVal;
+GType	 go_data_matrix_val_get_type (void);
+GOData	*go_data_matrix_val_new      (double *val, unsigned rows, unsigned columns, GDestroyNotify   notify);
+
+G_END_DECLS
+
+#endif /* GO_DATA_SIMPLE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,433 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-data.c :
+ *
+ * Copyright (C) 2003-2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-data.h"
+#include "go-data-impl.h"
+#include <goffice/utils/go-math.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <string.h>
+
+#define GO_DATA_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GO_DATA_TYPE, GODataClass))
+#define IS_GO_DATA_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GO_DATA_TYPE))
+#define GO_DATA_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GO_DATA_TYPE, GODataClass))
+
+enum {
+	CHANGED,
+	LAST_SIGNAL
+};
+
+static gulong go_data_signals [LAST_SIGNAL] = { 0, };
+
+/* trivial fall back */
+static GOData *
+go_data_dup_real (GOData const *src)
+{
+	char   *str = go_data_as_str (src);
+	GOData *dst = g_object_new (G_OBJECT_TYPE (src), NULL);
+	if (dst != NULL)
+		go_data_from_str (dst, str);
+	g_free (str);
+
+	return dst;
+}
+
+static void
+go_data_init (GOData *data)
+{
+	data->flags = 0;
+}
+
+#if 0
+static GObjectClass *parent_klass;
+static void
+go_data_finalize (GOData *obj)
+{
+	g_warning ("finalize");
+	(parent_klass->finalize) (obj);
+}
+#endif
+
+static void
+go_data_class_init (GODataClass *klass)
+{
+	go_data_signals [CHANGED] = g_signal_new ("changed",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GODataClass, changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__VOID,
+		G_TYPE_NONE, 0);
+	klass->dup = go_data_dup_real;
+#if 0
+	{
+		GObjectClass *gobj_klass = (GObjectClass *)klass;
+		gobj_klass->finalize = go_data_finalize;
+		parent_klass = g_type_class_peek_parent (klass);
+	}
+#endif
+}
+
+GSF_CLASS_ABSTRACT (GOData, go_data,
+		    go_data_class_init, go_data_init,
+		    G_TYPE_OBJECT)
+
+/**
+ * go_data_dup : 
+ * @src : #GOData
+ *
+ * A deep copy of @src.
+ **/
+GOData *
+go_data_dup (GOData const *src)
+{
+	if (src != NULL) {
+		GODataClass const *klass = GO_DATA_GET_CLASS (src);
+		g_return_val_if_fail (klass != NULL, NULL);
+		return (*klass->dup) (src);
+	}
+	return NULL;
+}
+
+/**
+ * go_data_eq :
+ * @a : #GOData
+ * @b : #GOData
+ *
+ * Returns TRUE if @a and @b are the same
+ **/
+gboolean
+go_data_eq (GOData const *a, GOData const *b)
+{
+	if (a == b)
+		return TRUE;
+	else {
+		GODataClass *a_klass = GO_DATA_GET_CLASS (a);
+		GODataClass *b_klass = GO_DATA_GET_CLASS (b);
+
+		g_return_val_if_fail (a_klass != NULL, FALSE);
+		g_return_val_if_fail (a_klass->eq != NULL, FALSE);
+
+		if (a_klass != b_klass)
+			return FALSE;
+
+		return (*a_klass->eq) (a, b);
+	}
+}
+
+/**
+ * go_data_prefered_fmt :
+ * @dat : #GOData
+ *
+ * Caller is responsible for unrefing the result.
+ * Returns the fmt preferred by the the data
+ **/
+GOFormat *
+go_data_preferred_fmt (GOData const *dat)
+{
+	GODataClass const *klass = GO_DATA_GET_CLASS (dat);
+	g_return_val_if_fail (klass != NULL, NULL);
+	if (klass->preferred_fmt)
+		return (*klass->preferred_fmt) (dat);
+	return NULL;
+}
+
+/**
+ * go_data_as_str :
+ * @dat : #GOData
+ *
+ * Return a string representation of the data source that the caller is
+ * responsible for freeing
+ *
+ * NOTE : This is the _source_ not the content.
+ **/
+char *
+go_data_as_str (GOData const *dat)
+{
+	GODataClass const *klass = GO_DATA_GET_CLASS (dat);
+	g_return_val_if_fail (klass != NULL, NULL);
+	return (*klass->as_str) (dat);
+}
+
+/**
+ * go_data_from_str :
+ * @dat : #GOData
+ * @str :
+ *
+ * De-serializes the source information returned from go_data_as_str.
+ * Returns FALSE on error.
+ **/
+gboolean
+go_data_from_str (GOData *dat, char const *str)
+{
+	GODataClass const *klass = GO_DATA_GET_CLASS (dat);
+	g_return_val_if_fail (klass != NULL, FALSE);
+	return (*klass->from_str) (dat, str);
+}
+
+/**
+ * go_data_emit_changed :
+ * @dat : #GOData
+ *
+ * protected utility to emit a 'changed' signal
+ **/
+void
+go_data_emit_changed (GOData *dat)
+{
+	GODataClass const *klass = GO_DATA_GET_CLASS (dat);
+
+	g_return_if_fail (klass != NULL);
+
+	if (klass->emit_changed)
+		(*klass->emit_changed) (dat);
+
+	g_signal_emit (G_OBJECT (dat), go_data_signals [CHANGED], 0);
+}
+
+/*************************************************************************/
+
+#define GO_DATA_SCALAR_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GO_DATA_SCALAR_TYPE, GODataScalarClass))
+#define IS_GO_DATA_SCALAR_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GO_DATA_SCALAR_TYPE))
+#define GO_DATA_SCALAR_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GO_DATA_SCALAR_TYPE, GODataScalarClass))
+
+GSF_CLASS_ABSTRACT (GODataScalar, go_data_scalar,
+		    NULL, NULL,
+		    GO_DATA_TYPE)
+
+double
+go_data_scalar_get_value (GODataScalar *scalar)
+{
+	GODataScalarClass const *klass = GO_DATA_SCALAR_GET_CLASS (scalar);
+	g_return_val_if_fail (klass != NULL, 0.); /* TODO : make this a nan */
+	return (*klass->get_value) (scalar);
+}
+
+char const *
+go_data_scalar_get_str (GODataScalar *scalar)
+{
+	GODataScalarClass const *klass = GO_DATA_SCALAR_GET_CLASS (scalar);
+	g_return_val_if_fail (klass != NULL, NULL);
+	return (*klass->get_str) (scalar);
+}
+
+/*************************************************************************/
+
+#define GO_DATA_VECTOR_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GO_DATA_VECTOR_TYPE, GODataVectorClass))
+#define IS_GO_DATA_VECTOR_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GO_DATA_VECTOR_TYPE))
+#define GO_DATA_VECTOR_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GO_DATA_VECTOR_TYPE, GODataVectorClass))
+
+static void
+go_data_vector_emit_changed (GOData *data)
+{
+	data->flags &= ~(GO_DATA_CACHE_IS_VALID | GO_DATA_VECTOR_LEN_CACHED);
+}
+static void
+go_data_vector_class_init (GODataClass *klass)
+{
+	klass->emit_changed = go_data_vector_emit_changed;
+}
+
+GSF_CLASS_ABSTRACT (GODataVector, go_data_vector,
+		    go_data_vector_class_init, NULL,
+		    GO_DATA_TYPE)
+
+int
+go_data_vector_get_len (GODataVector *vec)
+{
+	if (! (vec->base.flags & GO_DATA_VECTOR_LEN_CACHED)) {
+		GODataVectorClass const *klass = GO_DATA_VECTOR_GET_CLASS (vec);
+
+		g_return_val_if_fail (klass != NULL, 0);
+
+		(*klass->load_len) (vec);
+
+		g_return_val_if_fail (vec->base.flags & GO_DATA_VECTOR_LEN_CACHED, 0);
+	}
+
+	return vec->len;
+}
+
+double *
+go_data_vector_get_values (GODataVector *vec)
+{
+	if (! (vec->base.flags & GO_DATA_CACHE_IS_VALID)) {
+		GODataVectorClass const *klass = GO_DATA_VECTOR_GET_CLASS (vec);
+
+		g_return_val_if_fail (klass != NULL, NULL);
+
+		(*klass->load_values) (vec);
+
+		g_return_val_if_fail (vec->base.flags & GO_DATA_CACHE_IS_VALID, NULL);
+	}
+
+	return vec->values;
+}
+
+double
+go_data_vector_get_value (GODataVector *vec, unsigned i)
+{
+	if (! (vec->base.flags & GO_DATA_CACHE_IS_VALID)) {
+		GODataVectorClass const *klass = GO_DATA_VECTOR_GET_CLASS (vec);
+		g_return_val_if_fail (klass != NULL, go_nan);
+		return (*klass->get_value) (vec, i);
+	}
+
+	g_return_val_if_fail ((int)i < vec->len, go_nan);
+	return vec->values [i];
+}
+
+char *
+go_data_vector_get_str (GODataVector *vec, unsigned i)
+{
+	GODataVectorClass const *klass = GO_DATA_VECTOR_GET_CLASS (vec);
+	char *res;
+
+	g_return_val_if_fail (klass != NULL, g_strdup (""));
+	g_return_val_if_fail ((int)i < vec->len, g_strdup (""));
+
+	res = (*klass->get_str) (vec, i);
+	if (res == NULL)
+		return g_strdup ("");
+	return res;
+}
+
+void
+go_data_vector_get_minmax (GODataVector *vec, double *min, double *max)
+{
+	if (! (vec->base.flags & GO_DATA_CACHE_IS_VALID)) {
+		GODataVectorClass const *klass = GO_DATA_VECTOR_GET_CLASS (vec);
+
+		g_return_if_fail (klass != NULL);
+
+		(*klass->load_values) (vec);
+
+		g_return_if_fail (vec->base.flags & GO_DATA_CACHE_IS_VALID);
+	}
+
+	if (min != NULL)
+		*min = vec->minimum;
+	if (max != NULL)
+		*max = vec->maximum;
+}
+
+/*************************************************************************/
+
+#define GO_DATA_MATRIX_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GO_DATA_MATRIX_TYPE, GODataMatrixClass))
+#define IS_GO_DATA_MATRIX_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GO_DATA_MATRIX_TYPE))
+#define GO_DATA_MATRIX_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GO_DATA_MATRIX_TYPE, GODataMatrixClass))
+
+static void
+go_data_matrix_emit_changed (GOData *data)
+{
+	data->flags &= ~(GO_DATA_CACHE_IS_VALID | GO_DATA_MATRIX_SIZE_CACHED);
+}
+
+static void
+go_data_matrix_class_init (GODataClass *klass)
+{
+	klass->emit_changed = go_data_matrix_emit_changed;
+}
+
+GSF_CLASS_ABSTRACT (GODataMatrix, go_data_matrix,
+		    go_data_matrix_class_init, NULL,
+		    GO_DATA_TYPE)
+
+GODataMatrixSize
+go_data_matrix_get_size (GODataMatrix *mat)
+{
+	if (! (mat->base.flags & GO_DATA_MATRIX_SIZE_CACHED)) {
+		GODataMatrixClass const *klass = GO_DATA_MATRIX_GET_CLASS (mat);
+		static GODataMatrixSize null_size = {0, 0};
+
+		g_return_val_if_fail (klass != NULL, null_size);
+
+		(*klass->load_size) (mat);
+
+		g_return_val_if_fail (mat->base.flags & GO_DATA_MATRIX_SIZE_CACHED, null_size);
+	}
+
+	return mat->size;
+}
+
+double *
+go_data_matrix_get_values (GODataMatrix *mat)
+{
+	if (! (mat->base.flags & GO_DATA_CACHE_IS_VALID)) {
+		GODataMatrixClass const *klass = GO_DATA_MATRIX_GET_CLASS (mat);
+
+		g_return_val_if_fail (klass != NULL, NULL);
+
+		(*klass->load_values) (mat);
+
+		g_return_val_if_fail (mat->base.flags & GO_DATA_CACHE_IS_VALID, NULL);
+	}
+
+	return mat->values;
+}
+
+double
+go_data_matrix_get_value (GODataMatrix *mat, unsigned i, unsigned j)
+{
+	g_return_val_if_fail (((int)i < mat->size.rows) && ((int)j < mat->size.columns), go_nan);
+	if (! (mat->base.flags & GO_DATA_CACHE_IS_VALID)) {
+		GODataMatrixClass const *klass = GO_DATA_MATRIX_GET_CLASS (mat);
+		g_return_val_if_fail (klass != NULL, go_nan);
+		return (*klass->get_value) (mat, i, j);
+	}
+
+	return mat->values[i * mat->size.columns + j];
+}
+
+char *
+go_data_matrix_get_str (GODataMatrix *mat, unsigned i, unsigned j)
+{
+	GODataMatrixClass const *klass = GO_DATA_MATRIX_GET_CLASS (mat);
+	char *res;
+
+	g_return_val_if_fail (klass != NULL, NULL);
+	g_return_val_if_fail (((int)i < mat->size.rows) && ((int)j < mat->size.columns), g_strdup (""));
+
+	res = (*klass->get_str) (mat, i, j);
+	if (res == NULL)
+		return g_strdup ("");
+	return res;
+}
+
+void
+go_data_matrix_get_minmax (GODataMatrix *mat, double *min, double *max)
+{
+	if (! (mat->base.flags & GO_DATA_CACHE_IS_VALID)) {
+		GODataMatrixClass const *klass = GO_DATA_MATRIX_GET_CLASS (mat);
+
+		g_return_if_fail (klass != NULL);
+
+		(*klass->load_values) (mat);
+
+		g_return_if_fail (mat->base.flags & GO_DATA_CACHE_IS_VALID);
+	}
+
+	if (min != NULL)
+		*min = mat->minimum;
+	if (max != NULL)
+		*max = mat->maximum;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/go-data.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,84 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-data.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_DATA_H
+#define GO_DATA_H
+
+#include <goffice/data/goffice-data.h>
+#include <goffice/utils/goffice-utils.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_DATA_TYPE	(go_data_get_type ())
+#define GO_DATA(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_TYPE, GOData))
+#define IS_GO_DATA(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_TYPE))
+
+GType go_data_get_type (void);
+gboolean  go_data_needs_recalc	(GOData const *dat);
+GOData	 *go_data_dup		(GOData const *src);
+gboolean  go_data_eq		(GOData const *a, GOData const *b);
+GOFormat *go_data_preferred_fmt (GOData const *dat);
+char     *go_data_as_str	(GOData const *dat);
+gboolean  go_data_from_str	(GOData *dat, char const *str);
+void	  go_data_emit_changed  (GOData *dat);
+
+/*************************************************************************/
+
+#define GO_DATA_SCALAR_TYPE	(go_data_scalar_get_type ())
+#define GO_DATA_SCALAR(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_SCALAR_TYPE, GODataScalar))
+#define IS_GO_DATA_SCALAR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_SCALAR_TYPE))
+
+GType go_data_scalar_get_type (void);
+
+double      go_data_scalar_get_value  (GODataScalar *val);
+char const *go_data_scalar_get_str    (GODataScalar *val);
+
+/*************************************************************************/
+
+#define GO_DATA_VECTOR_TYPE	(go_data_vector_get_type ())
+#define GO_DATA_VECTOR(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_VECTOR_TYPE, GODataVector))
+#define IS_GO_DATA_VECTOR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_VECTOR_TYPE))
+
+GType go_data_vector_get_type (void);
+
+int	 go_data_vector_get_len    (GODataVector *vec);
+double	*go_data_vector_get_values (GODataVector *vec);
+double	 go_data_vector_get_value  (GODataVector *vec, unsigned i);
+char	*go_data_vector_get_str    (GODataVector *vec, unsigned i);
+void	 go_data_vector_get_minmax (GODataVector *vec, double *min, double *max);
+
+/*************************************************************************/
+
+#define GO_DATA_MATRIX_TYPE	(go_data_matrix_get_type ())
+#define GO_DATA_MATRIX(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_DATA_MATRIX_TYPE, GODataMatrix))
+#define IS_GO_DATA_MATRIX(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_DATA_MATRIX_TYPE))
+
+GType go_data_matrix_get_type (void);
+
+GODataMatrixSize	 go_data_matrix_get_size    (GODataMatrix *mat);
+double	*go_data_matrix_get_values (GODataMatrix *mat);
+double	 go_data_matrix_get_value  (GODataMatrix *mat, unsigned i, unsigned j);
+char	*go_data_matrix_get_str    (GODataMatrix *mat, unsigned i, unsigned j);
+void	 go_data_matrix_get_minmax (GODataMatrix *mat, double *min, double *max);
+
+G_END_DECLS
+
+#endif /* GO_DATA_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/goffice-data.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/goffice-data.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/data/goffice-data.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice-data.h: 
+ *
+ * Copyright (C) 2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOFFICE_DATA_H
+#define GOFFICE_DATA_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/* Data */
+typedef struct _GOData		 GOData;
+typedef struct _GODataScalar	 GODataScalar;
+typedef struct _GODataVector	 GODataVector;
+typedef struct _GODataMatrix	 GODataMatrix;
+typedef struct {
+	int rows;	/* negative if dirty, includes missing values */
+	int columns;	/* negative if dirty, includes missing values */
+} GODataMatrixSize;
+
+G_END_DECLS
+
+#endif /* GOFFICE_DATA_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,32 @@
+noinst_LTLIBRARIES = libgoffice-drawing.la 
+
+libgoffice_drawing_la_SOURCES = 	\
+	god-anchor.c			\
+	god-default-attributes.c	\
+	god-drawing-group.c		\
+	god-drawing-renderer-gdk.c	\
+	god-drawing-view.c		\
+	god-drawing.c			\
+	god-image-store.c		\
+	god-image.c			\
+	god-paragraph-attributes.c	\
+	god-property-table.c		\
+	god-shape.c			\
+	god-text-model.c
+
+libgoffice_drawing_ladir = $(goffice_include_dir)/drawing
+libgoffice_drawing_la_HEADERS = 	\
+	god-anchor.h			\
+	god-default-attributes.h	\
+	god-drawing-group.h		\
+	god-drawing-renderer-gdk.h	\
+	god-drawing-view.h		\
+	god-drawing.h			\
+	god-image-store.h		\
+	god-image.h			\
+	god-paragraph-attributes.h	\
+	god-property-table.h		\
+	god-shape.h			\
+	god-text-model.h
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,584 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LTLIBRARIES = libgoffice-drawing.la 
+
+libgoffice_drawing_la_SOURCES = \
+	god-anchor.c			\
+	god-default-attributes.c	\
+	god-drawing-group.c		\
+	god-drawing-renderer-gdk.c	\
+	god-drawing-view.c		\
+	god-drawing.c			\
+	god-image-store.c		\
+	god-image.c			\
+	god-paragraph-attributes.c	\
+	god-property-table.c		\
+	god-shape.c			\
+	god-text-model.c
+
+
+libgoffice_drawing_ladir = $(goffice_include_dir)/drawing
+libgoffice_drawing_la_HEADERS = \
+	god-anchor.h			\
+	god-default-attributes.h	\
+	god-drawing-group.h		\
+	god-drawing-renderer-gdk.h	\
+	god-drawing-view.h		\
+	god-drawing.h			\
+	god-image-store.h		\
+	god-image.h			\
+	god-paragraph-attributes.h	\
+	god-property-table.h		\
+	god-shape.h			\
+	god-text-model.h
+
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice/drawing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libgoffice_drawing_la_LDFLAGS =
+libgoffice_drawing_la_LIBADD =
+am_libgoffice_drawing_la_OBJECTS = god-anchor.lo \
+	god-default-attributes.lo god-drawing-group.lo \
+	god-drawing-renderer-gdk.lo god-drawing-view.lo god-drawing.lo \
+	god-image-store.lo god-image.lo god-paragraph-attributes.lo \
+	god-property-table.lo god-shape.lo god-text-model.lo
+libgoffice_drawing_la_OBJECTS = $(am_libgoffice_drawing_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/god-anchor.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-default-attributes.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-drawing-group.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-drawing-renderer-gdk.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-drawing-view.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-drawing.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-image-store.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-image.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-paragraph-attributes.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-property-table.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-shape.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-text-model.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgoffice_drawing_la_SOURCES)
+HEADERS = $(libgoffice_drawing_la_HEADERS)
+
+DIST_COMMON = $(libgoffice_drawing_la_HEADERS) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice.mk Makefile.am
+SOURCES = $(libgoffice_drawing_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/drawing/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-drawing.la: $(libgoffice_drawing_la_OBJECTS) $(libgoffice_drawing_la_DEPENDENCIES) 
+	$(LINK)  $(libgoffice_drawing_la_LDFLAGS) $(libgoffice_drawing_la_OBJECTS) $(libgoffice_drawing_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-anchor.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-default-attributes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-drawing-group.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-drawing-renderer-gdk.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-drawing-view.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-drawing.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-image-store.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-image.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-paragraph-attributes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-property-table.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-shape.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-text-model.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgoffice_drawing_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_drawing_laHEADERS: $(libgoffice_drawing_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_drawing_ladir)
+	@list='$(libgoffice_drawing_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_drawing_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_drawing_ladir)/$$f"; \
+	  $(libgoffice_drawing_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_drawing_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_drawing_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_drawing_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_drawing_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_drawing_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_drawing_ladir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libgoffice_drawing_laHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libgoffice_drawing_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libgoffice_drawing_laHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-libgoffice_drawing_laHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,122 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-anchor.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-anchor.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodAnchorPrivate_ {
+	GoRect rect;
+};
+
+GodAnchor *
+god_anchor_new (void)
+{
+	GodAnchor *anchor;
+
+	anchor = g_object_new (GOD_ANCHOR_TYPE, NULL);
+
+	return anchor;
+}
+
+void
+god_anchor_get_rect  (GodAnchor *anchor,
+		      GoRect    *rect)
+{
+	if (GOD_ANCHOR_GET_CLASS (anchor)->get_rect) {
+		GOD_ANCHOR_GET_CLASS (anchor)->get_rect (anchor, rect);
+	} else {
+		rect->top    = 0;
+		rect->left   = 0;
+		rect->bottom = 0;
+		rect->right  = 0;
+	}
+}
+
+void
+god_anchor_set_rect  (GodAnchor    *anchor,
+		      const GoRect *rect)
+{
+	if (GOD_ANCHOR_GET_CLASS (anchor)->set_rect)
+		GOD_ANCHOR_GET_CLASS (anchor)->set_rect (anchor, rect);
+}
+
+static void
+god_anchor_init (GObject *object)
+{
+	GodAnchor *anchor          = GOD_ANCHOR (object);
+	anchor->priv               = g_new0 (GodAnchorPrivate, 1);
+	anchor->priv->rect.top    = 0.0;
+	anchor->priv->rect.left   = 0.0;
+	anchor->priv->rect.bottom = 0.0;
+	anchor->priv->rect.right  = 0.0;
+}
+
+static void
+god_anchor_finalize (GObject *object)
+{
+	GodAnchor *anchor = GOD_ANCHOR (object);
+
+	g_free (anchor->priv);
+	anchor->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+real_god_anchor_get_rect (GodAnchor *anchor,
+			  GoRect *rect)
+{
+	*rect = anchor->priv->rect;
+}
+
+static void
+real_god_anchor_set_rect (GodAnchor *anchor,
+			  const GoRect    *rect)
+{
+	anchor->priv->rect = *rect;
+}
+
+static void
+god_anchor_class_init (GodAnchorClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class           = (GObjectClass *) class;
+
+	parent_class           = g_type_class_peek_parent (class);
+
+	object_class->finalize = god_anchor_finalize;
+
+	class->get_rect        = real_god_anchor_get_rect;
+	class->set_rect        = real_god_anchor_set_rect;
+}
+
+GSF_CLASS (GodAnchor, god_anchor,
+	   god_anchor_class_init, god_anchor_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-anchor.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,55 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-anchor.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GOD_ANCHOR_H
+#define GOD_ANCHOR_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/utils/go-units.h>
+
+G_BEGIN_DECLS
+
+#define GOD_ANCHOR_TYPE		(god_anchor_get_type ())
+#define GOD_ANCHOR(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_ANCHOR_TYPE, GodAnchor))
+#define GOD_ANCHOR_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOD_ANCHOR_TYPE, GodAnchorClass))
+#define GOD_ANCHOR_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GOD_ANCHOR_TYPE, GodAnchorClass))
+#define IS_GOD_ANCHOR(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_ANCHOR_TYPE))
+#define IS_GOD_ANCHOR_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_ANCHOR_TYPE))
+
+typedef struct GodAnchorPrivate_ GodAnchorPrivate;
+
+typedef struct {
+	GObject parent;
+	GodAnchorPrivate *priv;
+} GodAnchor;
+
+typedef struct {
+	GObjectClass parent_class;
+
+	void (*get_rect)  (GodAnchor *anchor, GoRect *rect);
+	void (*set_rect)  (GodAnchor *anchor, const GoRect *rect);
+} GodAnchorClass;
+
+GType      god_anchor_get_type  (void);
+
+GodAnchor *god_anchor_new       (void);
+void       god_anchor_get_rect  (GodAnchor    *anchor,
+				 GoRect       *rect);
+void       god_anchor_set_rect  (GodAnchor    *anchor,
+				 const GoRect *anchor_value);
+
+
+
+G_END_DECLS
+
+#endif /* GOD_ANCHOR_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,201 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-default-attributes.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-default-attributes.h>
+
+#include <pango/pango-attributes.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+static GObjectClass *parent_class;
+
+struct GodDefaultAttributesPrivate_ {
+	GPtrArray *paragraph_attributes;
+	GPtrArray *pango_attributes;
+};
+
+GodDefaultAttributes *
+god_default_attributes_new (void)
+{
+	GodDefaultAttributes *default_attributes;
+
+	default_attributes = g_object_new (GOD_DEFAULT_ATTRIBUTES_TYPE, NULL);
+
+	return default_attributes;
+}
+
+void
+god_default_attributes_set_paragraph_attributes             (GodDefaultAttributes   *attributes,
+							     GodParagraphAttributes *paragraph_attributes)
+{
+	god_default_attributes_set_paragraph_attributes_for_indent  (attributes,
+								     0,
+								     paragraph_attributes);
+}
+
+void
+god_default_attributes_set_paragraph_attributes_for_indent  (GodDefaultAttributes   *attributes,
+							     guint                     indent,
+							     GodParagraphAttributes *paragraph_attributes)
+{
+	if (attributes->priv->paragraph_attributes == NULL)
+		attributes->priv->paragraph_attributes = g_ptr_array_new();
+	if (attributes->priv->paragraph_attributes->len <= indent)
+		g_ptr_array_set_size (attributes->priv->paragraph_attributes, indent + 1);
+	if (g_ptr_array_index (attributes->priv->paragraph_attributes, indent))
+		g_object_unref (g_ptr_array_index (attributes->priv->paragraph_attributes, indent));
+	g_ptr_array_index (attributes->priv->paragraph_attributes, indent) = paragraph_attributes;
+	if (paragraph_attributes)
+		g_object_ref (paragraph_attributes);
+}
+
+void
+god_default_attributes_set_pango_attributes                 (GodDefaultAttributes   *attributes,
+							     GList                  *pango_attributes)
+{
+	god_default_attributes_set_pango_attributes_for_indent  (attributes,
+								 0,
+								 pango_attributes);
+}
+
+static void
+add_attributes (PangoAttribute *attribute, GList **new_attributes)
+{
+	PangoAttribute *new_attribute = pango_attribute_copy (attribute);
+	new_attribute->start_index = 0;
+	new_attribute->end_index = (guint) -1;
+	*new_attributes = g_list_prepend (*new_attributes, pango_attribute_copy (attribute));
+}
+
+void
+god_default_attributes_set_pango_attributes_for_indent      (GodDefaultAttributes  *attributes,
+							     guint                  indent,
+							     GList                 *pango_attributes)
+{
+	GList **pango_attributes_location;
+	if (attributes->priv->pango_attributes == NULL)
+		attributes->priv->pango_attributes = g_ptr_array_new();
+	if (attributes->priv->pango_attributes->len <= indent)
+		g_ptr_array_set_size (attributes->priv->pango_attributes, indent + 1);
+
+	pango_attributes_location = (GList **) &g_ptr_array_index (attributes->priv->pango_attributes, indent);
+
+	g_list_foreach (*pango_attributes_location, (GFunc) pango_attribute_destroy, NULL);
+	g_list_free (*pango_attributes_location);
+	*pango_attributes_location = NULL;
+	g_list_foreach (pango_attributes, (GFunc) add_attributes, pango_attributes_location);
+	*pango_attributes_location = g_list_reverse (*pango_attributes_location);
+}
+
+const GodParagraphAttributes *
+god_default_attributes_get_paragraph_attributes             (GodDefaultAttributes   *attributes)
+{
+	return god_default_attributes_get_paragraph_attributes_for_indent  (attributes,
+									    0);
+}
+
+const GodParagraphAttributes *
+god_default_attributes_get_paragraph_attributes_for_indent  (GodDefaultAttributes   *attributes,
+							     guint                   indent)
+{
+	if (attributes->priv->paragraph_attributes == NULL)
+		return NULL;
+	if (attributes->priv->paragraph_attributes->len <= indent)
+		return NULL;
+	return g_ptr_array_index (attributes->priv->paragraph_attributes, indent);
+}
+
+const GList *
+god_default_attributes_get_pango_attributes                 (GodDefaultAttributes   *attributes)
+{
+	return god_default_attributes_get_pango_attributes_for_indent  (attributes,
+									0);
+}
+
+const GList *
+god_default_attributes_get_pango_attributes_for_indent      (GodDefaultAttributes   *attributes,
+							     guint                     indent)
+{
+	if (attributes->priv->pango_attributes == NULL)
+		return NULL;
+	if (attributes->priv->pango_attributes->len <= indent)
+		return NULL;
+	return g_ptr_array_index (attributes->priv->pango_attributes, indent);
+}
+
+static void
+god_default_attributes_init (GObject *object)
+{
+	GodDefaultAttributes *default_attributes = GOD_DEFAULT_ATTRIBUTES (object);
+	default_attributes->priv = g_new0 (GodDefaultAttributesPrivate, 1);
+	default_attributes->priv->paragraph_attributes = NULL;
+	default_attributes->priv->pango_attributes = NULL;
+}
+
+static void
+maybe_unref (gpointer data, gpointer user_data)
+{
+	if (data)
+		g_object_unref (data);
+}
+
+static void
+free_list (gpointer data, gpointer user_data)
+{
+	g_list_foreach (data, (GFunc) pango_attribute_destroy, NULL);
+}
+
+static void
+god_default_attributes_finalize (GObject *object)
+{
+	GodDefaultAttributes *default_attributes = GOD_DEFAULT_ATTRIBUTES (object);
+
+	g_ptr_array_foreach (default_attributes->priv->paragraph_attributes, maybe_unref, NULL);
+	g_ptr_array_foreach (default_attributes->priv->pango_attributes, free_list, NULL);
+	g_ptr_array_free (default_attributes->priv->paragraph_attributes, TRUE);
+	g_ptr_array_free (default_attributes->priv->pango_attributes, TRUE);
+	g_free (default_attributes->priv);
+	default_attributes->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+god_default_attributes_class_init (GodDefaultAttributesClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class               = (GObjectClass *) class;
+
+	parent_class               = g_type_class_peek_parent (class);
+
+	object_class->finalize     = god_default_attributes_finalize;
+}
+
+GSF_CLASS (GodDefaultAttributes, god_default_attributes,
+	   god_default_attributes_class_init, god_default_attributes_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-default-attributes.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,63 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-default-attributes.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+#ifndef GOD_DEFAULT_ATTRIBUTES_H
+#define GOD_DEFAULT_ATTRIBUTES_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-paragraph-attributes.h>
+
+G_BEGIN_DECLS
+
+#define GOD_DEFAULT_ATTRIBUTES_TYPE		(god_default_attributes_get_type ())
+#define GOD_DEFAULT_ATTRIBUTES(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_DEFAULT_ATTRIBUTES_TYPE, GodDefaultAttributes))
+#define GOD_DEFAULT_ATTRIBUTES_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOD_DEFAULT_ATTRIBUTES_TYPE, GodDefaultAttributesClass))
+#define GOD_DEFAULT_ATTRIBUTES_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GOD_DEFAULT_ATTRIBUTES_TYPE, GodDefaultAttributesClass))
+#define IS_GOD_DEFAULT_ATTRIBUTES(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_DEFAULT_ATTRIBUTES_TYPE))
+#define IS_GOD_DEFAULT_ATTRIBUTES_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_DEFAULT_ATTRIBUTES_TYPE))
+
+typedef struct GodDefaultAttributesPrivate_ GodDefaultAttributesPrivate;
+
+typedef struct {
+	GObject parent;
+	GodDefaultAttributesPrivate *priv;
+} GodDefaultAttributes;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodDefaultAttributesClass;
+
+GType                         god_default_attributes_get_type                             (void);
+GodDefaultAttributes         *god_default_attributes_new                                  (void);
+
+void                          god_default_attributes_set_paragraph_attributes             (GodDefaultAttributes   *attributes,
+											   GodParagraphAttributes *paragraph_attributes);
+void                          god_default_attributes_set_paragraph_attributes_for_indent  (GodDefaultAttributes   *attributes,
+											   guint                   indent,
+											   GodParagraphAttributes *paragraph_attributes);
+void                          god_default_attributes_set_pango_attributes                 (GodDefaultAttributes   *attributes,
+											   GList                  *pango_attributes);
+void                          god_default_attributes_set_pango_attributes_for_indent      (GodDefaultAttributes   *attributes,
+											   guint                   indent,
+											   GList                  *pango_attributes);
+
+const GodParagraphAttributes *god_default_attributes_get_paragraph_attributes             (GodDefaultAttributes   *attributes);
+const GodParagraphAttributes *god_default_attributes_get_paragraph_attributes_for_indent  (GodDefaultAttributes   *attributes,
+											   guint                   indent);
+const GList                  *god_default_attributes_get_pango_attributes                 (GodDefaultAttributes   *attributes);
+const GList                  *god_default_attributes_get_pango_attributes_for_indent      (GodDefaultAttributes   *attributes,
+											   guint                   indent);
+
+
+G_END_DECLS
+
+#endif /* GOD_DEFAULT_ATTRIBUTES_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,97 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-drawing-group.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-drawing-group.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodDrawingGroupPrivate_ {
+	GodImageStore *image_store;
+};
+
+static void
+ensure_image_store (GodDrawingGroup *drawing_group)
+{
+	if (drawing_group->priv->image_store == NULL)
+		drawing_group->priv->image_store =
+			god_image_store_new();
+}
+
+GodDrawingGroup *
+god_drawing_group_new (void)
+{
+	GodDrawingGroup *drawing_group;
+
+	drawing_group = g_object_new (GOD_DRAWING_GROUP_TYPE, NULL);
+
+	return drawing_group;
+}
+
+GodImageStore *
+god_drawing_group_get_image_store  (GodDrawingGroup *group)
+{
+	ensure_image_store (group);
+	g_object_ref (group->priv->image_store);
+	return group->priv->image_store;
+}
+
+static void
+god_drawing_group_init (GObject *object)
+{
+	GodDrawingGroup *group = GOD_DRAWING_GROUP (object);
+	group->priv = g_new0 (GodDrawingGroupPrivate, 1);
+}
+
+static void
+god_drawing_group_dispose (GObject *object)
+{
+	GodDrawingGroup *group = GOD_DRAWING_GROUP (object);
+
+	if (group->priv->image_store)
+		g_object_unref (group->priv->image_store);
+	g_free (group->priv);
+	group->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+god_drawing_group_class_init (GodDrawingGroupClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class          = (GObjectClass *) class;
+
+	parent_class          = g_type_class_peek_parent (class);
+
+	object_class->dispose = god_drawing_group_dispose;
+}
+
+GSF_CLASS (GodDrawingGroup, god_drawing_group,
+	   god_drawing_group_class_init, god_drawing_group_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-group.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,48 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-drawing-group.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GOD_DRAWING_GROUP_H
+#define GOD_DRAWING_GROUP_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-image-store.h>
+
+G_BEGIN_DECLS
+
+#define GOD_DRAWING_GROUP_TYPE		(god_drawing_group_get_type ())
+#define GOD_DRAWING_GROUP(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_DRAWING_GROUP_TYPE, GodDrawingGroup))
+#define GOD_DRAWING_GROUP_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_DRAWING_GROUP_TYPE, GodDrawingGroupClass))
+#define GOD_DRAWING_GROUP_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GOD_DRAWING_GROUP_TYPE, GodDrawingGroupClass))
+#define IS_GOD_DRAWING_GROUP(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_DRAWING_GROUP_TYPE))
+#define IS_GOD_DRAWING_GROUP_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_DRAWING_GROUP_TYPE))
+
+typedef struct GodDrawingGroupPrivate_ GodDrawingGroupPrivate;
+
+typedef struct {
+	GObject parent;
+	GodDrawingGroupPrivate *priv;
+} GodDrawingGroup;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodDrawingGroupClass;
+
+GType            god_drawing_group_get_type  (void);
+
+GodDrawingGroup *god_drawing_group_new       (void);
+
+GodImageStore   *god_drawing_group_get_image_store (GodDrawingGroup *drawing_group);
+
+G_END_DECLS
+
+#endif /* GOD_DRAWING_GROUP_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,579 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-drawing-renderer-gdk.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-drawing-renderer-gdk.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gdk/gdk.h>
+#include <string.h>
+#include <math.h>
+
+static GObjectClass *parent_class;
+
+struct GodDrawingRendererGdkPrivate_ {
+	GodDrawing *drawing;
+	GdkDrawable *drawable;
+	GdkGC *gc;
+	GodAnchor *extents;
+	go_unit_t x_units_per_pixel;
+	go_unit_t y_units_per_pixel;
+};
+
+GodDrawingRendererGdk *
+god_drawing_renderer_gdk_new (void)
+{
+	GodDrawingRendererGdk *renderer;
+
+	renderer = g_object_new (GOD_DRAWING_RENDERER_GDK_TYPE, NULL);
+
+	return renderer;
+}
+
+static void
+update_units_per_pixel (GodDrawingRendererGdk *renderer)
+{
+	if (renderer->priv->drawable && renderer->priv->extents) {
+		gint pixel_width, pixel_height;
+		GoRect extent_rect;
+		gdk_drawable_get_size (renderer->priv->drawable, &pixel_width, &pixel_height);
+		god_anchor_get_rect (renderer->priv->extents, &extent_rect);
+
+		renderer->priv->x_units_per_pixel = (extent_rect.right - extent_rect.left) / pixel_width;
+		renderer->priv->y_units_per_pixel = (extent_rect.bottom - extent_rect.top) / pixel_height;
+	} else {
+		renderer->priv->x_units_per_pixel = 0;
+		renderer->priv->y_units_per_pixel = 0;
+	}
+}
+
+GodDrawing *
+god_drawing_renderer_gdk_get_drawing  (GodDrawingRendererGdk *renderer)
+{
+	if (renderer->priv->drawing)
+		g_object_ref (renderer->priv->drawing);
+	return renderer->priv->drawing;
+}
+
+void
+god_drawing_renderer_gdk_set_drawing  (GodDrawingRendererGdk *renderer,
+					  GodDrawing *drawing)
+{
+	if (renderer->priv->drawing)
+		g_object_unref (renderer->priv->drawing);
+	renderer->priv->drawing = drawing;
+	if (renderer->priv->drawing)
+		g_object_ref (renderer->priv->drawing);
+}
+
+GdkDrawable *
+god_drawing_renderer_gdk_get_drawable  (GodDrawingRendererGdk *renderer)
+{
+	if (renderer->priv->drawable)
+		g_object_ref (renderer->priv->drawable);
+	return renderer->priv->drawable;
+}
+
+void
+god_drawing_renderer_gdk_set_drawable  (GodDrawingRendererGdk *renderer,
+					GdkDrawable *drawable)
+{
+	if (renderer->priv->drawable)
+		g_object_unref (renderer->priv->drawable);
+	renderer->priv->drawable = drawable;
+	if (renderer->priv->drawable)
+		g_object_ref (renderer->priv->drawable);
+	update_units_per_pixel (renderer);
+}
+
+GdkGC *
+god_drawing_renderer_gdk_get_gc  (GodDrawingRendererGdk *renderer)
+{
+	if (renderer->priv->gc)
+		g_object_ref (renderer->priv->gc);
+	return renderer->priv->gc;
+}
+
+void
+god_drawing_renderer_gdk_set_gc  (GodDrawingRendererGdk *renderer,
+				  GdkGC *gc)
+{
+	if (renderer->priv->gc)
+		g_object_unref (renderer->priv->gc);
+	renderer->priv->gc = gc;
+	if (renderer->priv->gc)
+		g_object_ref (renderer->priv->gc);
+	update_units_per_pixel (renderer);
+}
+
+GodAnchor *
+god_drawing_renderer_gdk_get_extents  (GodDrawingRendererGdk *renderer)
+{
+	if (renderer->priv->extents)
+		g_object_ref (renderer->priv->extents);
+	return renderer->priv->extents;
+}
+
+void
+god_drawing_renderer_gdk_set_extents  (GodDrawingRendererGdk *renderer,
+					  GodAnchor *extents)
+{
+	if (renderer->priv->extents)
+		g_object_unref (renderer->priv->extents);
+	renderer->priv->extents = extents;
+	if (renderer->priv->extents)
+		g_object_ref (renderer->priv->extents);
+	update_units_per_pixel (renderer);
+}
+
+static GdkPixbuf *
+get_pixbuf (GodDrawingRendererGdk *renderer,
+	    int which_pic)
+{
+	GodDrawingGroup *drawing_group;
+	GdkPixbuf *ret_val = NULL;
+
+	if (which_pic < 0)
+		return NULL;
+
+	drawing_group = god_drawing_get_drawing_group (renderer->priv->drawing);
+	if (drawing_group) {
+		GodImageStore *image_store = god_drawing_group_get_image_store (drawing_group);
+		if (which_pic < god_image_store_get_image_count (image_store)) {
+			GodImage *image = god_image_store_get_image (image_store, which_pic);
+			ret_val = god_image_get_pixbuf (image);
+			g_object_unref (image);
+		}
+		g_object_unref (image_store);
+		g_object_unref (drawing_group);
+	}
+	return ret_val;
+}
+
+typedef struct {
+	GodDrawingRendererGdk *renderer;
+	GdkRectangle *rect;
+	long long y_ofs;
+	const GodDefaultAttributes *default_attributes;
+} DrawTextContext;
+
+static gboolean
+make_absolute (PangoAttribute *attr, gpointer user_data)
+{
+	DrawTextContext *draw_context = user_data;
+#if HAVE_PANGO18
+	if (attr->klass->type == PANGO_ATTR_SIZE &&
+	    ! ((PangoAttrSize *) attr)->absolute) {
+		PangoAttrSize *size_attr = (PangoAttrSize *) attr;
+		size_attr->size = GO_PT_TO_UN ((long long) size_attr->size) / draw_context->renderer->priv->y_units_per_pixel;
+		size_attr->absolute = TRUE;
+	}
+#else
+	if (attr->klass->type == PANGO_ATTR_SIZE) {
+		PangoAttrInt *size_attr = (PangoAttrInt *) attr;
+		size_attr->value = GO_PT_TO_UN ((long long) size_attr->value) / draw_context->renderer->priv->y_units_per_pixel;
+	}
+#endif // HAVE_PANGO18
+	return FALSE;
+}
+
+static void
+draw_text (GodTextModel *text,
+	   GodTextModelParagraph *paragraph,
+	   gpointer user_data)
+{
+	int height;
+	PangoLayout *layout;
+	DrawTextContext *draw_context = user_data;
+	double space_before = 0;
+	double space_after = 0;
+	double indent = 0;
+	const GList *iterator;
+	PangoAttrList *attributes;
+	GodParagraphAlignment alignment = GOD_PARAGRAPH_ALIGNMENT_LEFT;
+	const GodParagraphAttributes *default_para_attributes;
+	gunichar bullet_character = 0;
+	double bullet_indent = 0;
+	double bullet_size = 0;
+	char *bullet_family = NULL;
+	gboolean bullet_on = FALSE;
+	PangoFontDescription *bullet_desc;
+	PangoAttrIterator *attr_iterator;
+
+	if (draw_context->default_attributes) {
+		default_para_attributes = god_default_attributes_get_paragraph_attributes_for_indent ((GodDefaultAttributes *)draw_context->default_attributes, paragraph->indent);
+		if (default_para_attributes) {
+			g_object_get ((GodParagraphAttributes *) default_para_attributes,
+				      "space_before", &space_before,
+				      "space_after", &space_after,
+				      "indent", &indent,
+				      "alignment", &alignment,
+				      "bullet_character", &bullet_character,
+				      "bullet_indent", &bullet_indent,
+				      "bullet_size", &bullet_size,
+				      "bullet_family", &bullet_family,
+				      "bullet_on", &bullet_on,
+				      NULL);
+		}
+	}
+	if (paragraph->para_attributes) {
+		GodParagraphAttributesFlags flags;
+		g_object_get (paragraph->para_attributes,
+			      "flags", &flags,
+			      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_SPACE_BEFORE)
+			g_object_get (paragraph->para_attributes,
+				      "space_before", &space_before,
+				      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_SPACE_AFTER)
+			g_object_get (paragraph->para_attributes,
+				      "space_after", &space_after,
+				      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_INDENT)
+			g_object_get (paragraph->para_attributes,
+				      "indent", &indent,
+				      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_ALIGNMENT)
+			g_object_get (paragraph->para_attributes,
+				      "alignment", &alignment,
+				      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_CHARACTER)
+			g_object_get (paragraph->para_attributes,
+				      "bullet_character", &bullet_character,
+				      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_INDENT)
+			g_object_get (paragraph->para_attributes,
+				      "bullet_indent", &bullet_indent,
+				      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_SIZE)
+			g_object_get (paragraph->para_attributes,
+				      "bullet_size", &bullet_size,
+				      NULL);
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_FAMILY) {
+			g_free (bullet_family);
+			bullet_family = NULL;
+			g_object_get (paragraph->para_attributes,
+				      "bullet_family", &bullet_family,
+				      NULL);
+		}
+		if (flags & GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_ON) {
+			g_object_get (paragraph->para_attributes,
+				      "bullet_on", &bullet_on,
+				      NULL);
+		}
+	}
+	draw_context->y_ofs += space_before;
+
+	layout = pango_layout_new (gdk_pango_context_get_for_screen (gdk_screen_get_default()));
+	pango_layout_set_alignment (layout, alignment == GOD_PARAGRAPH_ALIGNMENT_JUSTIFY ? PANGO_ALIGN_LEFT : alignment);
+	pango_layout_set_width (layout, draw_context->rect->width * PANGO_SCALE);
+	if (strchr (paragraph->text, 0xb)) {
+		int i;
+		char *paragraph_text = g_strdup (paragraph->text);
+		for (i = 0; paragraph_text[i]; i++) {
+			if (paragraph_text[i] == 0xb)
+				paragraph_text[i] = '\r';
+		}
+		pango_layout_set_text (layout, paragraph_text, -1);
+		g_free (paragraph_text);
+	} else {
+		pango_layout_set_text (layout, paragraph->text, -1);
+	}
+	pango_layout_set_auto_dir (layout, FALSE);
+	if (paragraph->char_attributes)
+		attributes = pango_attr_list_copy (paragraph->char_attributes);
+	else
+		attributes = pango_attr_list_new ();
+	if (draw_context->default_attributes) {
+		iterator = god_default_attributes_get_pango_attributes_for_indent ((GodDefaultAttributes *)draw_context->default_attributes, paragraph->indent);
+		for (; iterator; iterator = iterator->next) {
+			PangoAttribute *attr = pango_attribute_copy (iterator->data);
+			attr->start_index = 0;
+			attr->end_index = -1;
+			pango_attr_list_insert_before (attributes, attr);
+		}
+	}
+	pango_attr_list_filter (attributes, make_absolute, draw_context);
+	pango_layout_set_attributes (layout, attributes);
+	attr_iterator = pango_attr_list_get_iterator (attributes);
+	bullet_desc = pango_font_description_new ();
+	pango_attr_iterator_get_font (attr_iterator, bullet_desc, NULL, NULL);
+	pango_attr_iterator_destroy (attr_iterator);
+	pango_attr_list_unref (attributes);
+	gdk_draw_layout (draw_context->renderer->priv->drawable,
+			 draw_context->renderer->priv->gc,
+			 draw_context->rect->x + indent / draw_context->renderer->priv->x_units_per_pixel,
+			 draw_context->rect->y + draw_context->y_ofs / draw_context->renderer->priv->y_units_per_pixel,
+			 layout);
+
+	pango_layout_get_size (layout, NULL, &height);
+
+	g_object_unref (layout);
+	layout = NULL;
+
+	if (bullet_character != 0 &&
+	    bullet_character != 0xe011 &&
+	    bullet_size != 0 &&
+	    bullet_family != NULL &&
+	    bullet_on) {
+		char utf8[7];
+		int length;
+		layout = pango_layout_new (gdk_pango_context_get_for_screen (gdk_screen_get_default()));
+		pango_layout_set_alignment (layout, PANGO_ALIGN_LEFT);
+		length = g_unichar_to_utf8 (bullet_character, utf8);
+		pango_layout_set_text (layout, utf8, length);
+		pango_layout_set_auto_dir (layout, FALSE);
+#if 0
+		pango_font_description_set_absolute_size (bullet_desc, 
+							  GO_PT_TO_UN ((go_unit_t) bullet_size * PANGO_SCALE) /
+							  draw_context->renderer->priv->y_units_per_pixel);
+#endif
+		pango_font_description_set_size (bullet_desc, pango_font_description_get_size (bullet_desc) * sqrt (bullet_size));
+		pango_font_description_set_family (bullet_desc, bullet_family);
+		pango_layout_set_font_description (layout, bullet_desc);
+
+		gdk_draw_layout (draw_context->renderer->priv->drawable,
+				 draw_context->renderer->priv->gc,
+				 draw_context->rect->x + bullet_indent / draw_context->renderer->priv->x_units_per_pixel,
+				 draw_context->rect->y + draw_context->y_ofs / draw_context->renderer->priv->y_units_per_pixel,
+				 layout);
+		pango_font_description_free (bullet_desc);
+		g_object_unref (layout);
+		layout = NULL;
+	}
+
+	draw_context->y_ofs += height * draw_context->renderer->priv->y_units_per_pixel / PANGO_SCALE;
+	draw_context->y_ofs += space_after;
+}
+
+static void
+god_drawing_renderer_gdk_render_shape (GodDrawingRendererGdk *renderer,
+				       GdkRectangle          *area,
+				       GodShape              *shape)
+{
+	GodAnchor *anchor;
+	GdkRectangle rect;
+	GdkRectangle intersection;
+	GoRect anchor_rect;
+
+	anchor = god_shape_get_anchor (shape);
+	if (anchor) {
+		god_anchor_get_rect (anchor, &anchor_rect);
+		rect.x = anchor_rect.left / renderer->priv->x_units_per_pixel;
+		rect.width = anchor_rect.right / renderer->priv->x_units_per_pixel - rect.x;
+		rect.y = anchor_rect.top / renderer->priv->y_units_per_pixel;
+		rect.height = anchor_rect.bottom / renderer->priv->y_units_per_pixel - rect.y;
+		g_object_unref (anchor);
+	} else {
+		rect.x = 0;
+		rect.y = 0;
+		gdk_drawable_get_size (renderer->priv->drawable, &(rect.width), &(rect.height));
+	}
+
+	if (!gdk_rectangle_intersect (area, &rect, &intersection))
+		return;
+
+	{
+		GodPropertyTable *prop_table;
+		gboolean filled;
+		GodFillType fill_type;
+		GodTextModel *text_model;
+		DrawTextContext *draw_context;
+
+		prop_table = god_shape_get_prop_table (shape);
+		filled = god_property_table_get_flag (prop_table,
+						      GOD_PROPERTY_FILLED,
+						      TRUE);
+		fill_type = god_property_table_get_int (prop_table,
+							GOD_PROPERTY_FILL_TYPE,
+							GOD_FILL_TYPE_SOLID);
+		if (filled && fill_type == GOD_FILL_TYPE_PICTURE) {
+			int which_pic = god_property_table_get_int (prop_table,
+								    GOD_PROPERTY_BLIP_ID,
+								    -1);
+			GdkPixbuf *pixbuf = get_pixbuf (renderer, which_pic);
+			if (pixbuf) {
+				GdkPixbuf *to_blit = gdk_pixbuf_new (gdk_pixbuf_get_colorspace (pixbuf),
+								     gdk_pixbuf_get_has_alpha (pixbuf),
+								     gdk_pixbuf_get_bits_per_sample (pixbuf),
+								     intersection.width, intersection.height);
+				double offset_x, offset_y;
+				double scale_x, scale_y;
+
+				scale_x = (double) rect.width / (double) gdk_pixbuf_get_width (pixbuf);
+				scale_y = (double) rect.height / (double) gdk_pixbuf_get_height (pixbuf);
+				offset_x = rect.x - intersection.x;
+				offset_y = rect.y - intersection.y;
+
+				gdk_pixbuf_scale (pixbuf,
+						  to_blit,
+						  0,
+						  0,
+						  intersection.width,
+						  intersection.height,
+						  offset_x,
+						  offset_y,
+						  scale_x,
+						  scale_y,
+						  GDK_INTERP_HYPER);
+			
+
+				gdk_draw_pixbuf (renderer->priv->drawable,
+						 renderer->priv->gc,
+						 to_blit,
+						 0,
+						 0,
+						 intersection.x,
+						 intersection.y,
+						 intersection.width,
+						 intersection.height,
+						 GDK_RGB_DITHER_NORMAL,
+						 intersection.x,
+						 intersection.y);
+
+				g_object_unref (to_blit);
+				g_object_unref (pixbuf);
+			}
+		}
+		if (filled && fill_type == GOD_FILL_TYPE_SOLID) {
+			GdkColor old_color, color;
+			guint32 colornum = god_property_table_get_uint (prop_table,
+								     GOD_PROPERTY_FILL_COLOR,
+								     0xffffff);
+			GdkGCValues values;
+
+			gdk_gc_get_values (renderer->priv->gc,
+					   &values);
+			old_color = values.foreground;
+
+			color.red = (colornum & 0xff0000) >> 16;
+			color.blue = (colornum & 0xff00) >> 8;
+			color.green = colornum & 0xff;
+
+			color.red = color.red | (color.red << 8);
+			color.blue = color.blue | (color.blue << 8);
+			color.green = color.green + (color.green << 8);
+
+			gdk_gc_set_rgb_fg_color (renderer->priv->gc, &color);
+
+			gdk_draw_rectangle (renderer->priv->drawable,
+					    renderer->priv->gc,
+					    TRUE,
+					    intersection.x,
+					    intersection.y,
+					    intersection.width,
+					    intersection.height);
+
+			gdk_gc_set_foreground (renderer->priv->gc, &old_color);
+		}
+		text_model = god_shape_get_text_model (shape);
+		draw_context = g_new (DrawTextContext, 1);
+		draw_context->renderer = renderer;
+		draw_context->rect = &rect;
+		draw_context->y_ofs = 0;
+		draw_context->default_attributes = god_text_model_get_default_attributes (text_model);
+		god_text_model_paragraph_foreach (text_model, draw_text, draw_context);
+		g_object_unref (prop_table);
+	}
+
+	{
+		int i, child_count;
+		GodShape *child;
+		child_count = god_shape_get_child_count (shape);
+		for (i = 0; i < child_count; i++) {
+			child = god_shape_get_child (shape, i);
+			god_drawing_renderer_gdk_render_shape (renderer, area, child);
+		}
+	}
+}
+
+void
+god_drawing_renderer_gdk_render        (GodDrawingRendererGdk *renderer,
+					GdkRectangle          *area)
+{
+	GodShape *shape;
+
+	update_units_per_pixel (renderer);
+	shape = god_drawing_get_background (renderer->priv->drawing);
+	if (shape) {
+		god_drawing_renderer_gdk_render_shape (renderer,
+						       area,
+						       shape);
+		g_object_unref (shape);
+	}
+
+	shape = god_drawing_get_root_shape (renderer->priv->drawing);
+	if (shape) {
+		god_drawing_renderer_gdk_render_shape (renderer,
+						       area,
+						       shape);
+		g_object_unref (shape);
+	}
+}
+
+static void
+god_drawing_renderer_gdk_init (GObject *object)
+{
+	GodDrawingRendererGdk *renderer = GOD_DRAWING_RENDERER_GDK (object);
+
+	renderer->priv = g_new0 (GodDrawingRendererGdkPrivate, 1);
+}
+
+static void
+god_drawing_renderer_gdk_dispose (GObject *object)
+{
+	GodDrawingRendererGdk *renderer = GOD_DRAWING_RENDERER_GDK (object);
+
+	if (renderer->priv == NULL)
+		return;
+
+	if (renderer->priv->drawing)
+		g_object_unref (renderer->priv->drawing);
+	if (renderer->priv->drawable)
+		g_object_unref (renderer->priv->drawable);
+	if (renderer->priv->gc)
+		g_object_unref (renderer->priv->gc);
+	if (renderer->priv->extents)
+		g_object_unref (renderer->priv->extents);
+	g_free (renderer->priv);
+	renderer->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+god_drawing_renderer_gdk_class_init (GodDrawingRendererGdkClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class           = (GObjectClass *) class;
+
+	parent_class           = g_type_class_peek_parent (class);
+
+	object_class->dispose = god_drawing_renderer_gdk_dispose;
+}
+
+GSF_CLASS (GodDrawingRendererGdk, god_drawing_renderer_gdk,
+	   god_drawing_renderer_gdk_class_init, god_drawing_renderer_gdk_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-renderer-gdk.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,68 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- *//* vim: set sw=8: */
+#ifndef GOD_DRAWING_RENDERER_GDK_H
+#define GOD_DRAWING_RENDERER_GDK_H
+
+/**
+ * god-drawing-renderer-gdk.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-drawing.h>
+#include <goffice/drawing/god-anchor.h>
+#include <gdk/gdkdrawable.h>
+
+G_BEGIN_DECLS
+
+#define GOD_DRAWING_RENDERER_GDK_TYPE		(god_drawing_renderer_gdk_get_type ())
+#define GOD_DRAWING_RENDERER_GDK(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_DRAWING_RENDERER_GDK_TYPE, GodDrawingRendererGdk))
+#define GOD_DRAWING_RENDERER_GDK_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_DRAWING_RENDERER_GDK_TYPE, GodDrawingRendererGdkClass))
+#define IS_GOD_DRAWING_RENDERER_GDK(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_DRAWING_RENDERER_GDK_TYPE))
+#define IS_GOD_DRAWING_RENDERER_GDK_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_DRAWING_RENDERER_GDK_TYPE))
+
+typedef struct GodDrawingRendererGdkPrivate_ GodDrawingRendererGdkPrivate;
+
+typedef struct {
+	GObject parent;
+	GodDrawingRendererGdkPrivate *priv;
+} GodDrawingRendererGdk;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodDrawingRendererGdkClass;
+
+GType                  god_drawing_renderer_gdk_get_type      (void);
+GodDrawingRendererGdk *god_drawing_renderer_gdk_new           (void);
+
+/* Return value is reffed. */
+GodDrawing            *god_drawing_renderer_gdk_get_drawing   (GodDrawingRendererGdk *renderer);
+void                   god_drawing_renderer_gdk_set_drawing   (GodDrawingRendererGdk *renderer,
+							       GodDrawing            *drawing);
+
+/* Return value is reffed. */
+GdkDrawable           *god_drawing_renderer_gdk_get_drawable  (GodDrawingRendererGdk *renderer);
+void                   god_drawing_renderer_gdk_set_drawable  (GodDrawingRendererGdk *renderer,
+							       GdkDrawable           *drawable);
+
+/* Return value is reffed. */
+GdkGC                 *god_drawing_renderer_gdk_get_gc        (GodDrawingRendererGdk *renderer);
+void                   god_drawing_renderer_gdk_set_gc        (GodDrawingRendererGdk *renderer,
+							       GdkGC                 *gc);
+
+/* Return value is reffed. */
+GodAnchor             *god_drawing_renderer_gdk_get_extents   (GodDrawingRendererGdk *renderer);
+void                   god_drawing_renderer_gdk_set_extents   (GodDrawingRendererGdk *renderer,
+							       GodAnchor             *extents);
+void                   god_drawing_renderer_gdk_render        (GodDrawingRendererGdk *renderer,
+							       GdkRectangle          *area);
+
+G_END_DECLS
+
+#endif /* GOD_DRAWING_RENDERER_GDK_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,142 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-drawing-view.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-drawing-view.h>
+#include <gsf/gsf-impl-utils.h>
+#include <goffice/drawing/god-drawing-renderer-gdk.h>
+
+static GObjectClass *parent_class;
+
+struct GodDrawingViewPrivate_ {
+	GodDrawingRendererGdk *renderer;
+};
+
+GodDrawingView *
+god_drawing_view_new (void)
+{
+	GodDrawingView *view;
+
+	view = g_object_new (GOD_DRAWING_VIEW_TYPE, NULL);
+
+	return view;
+}
+
+GodDrawing *
+god_drawing_view_get_drawing  (GodDrawingView *view)
+{
+	return god_drawing_renderer_gdk_get_drawing (view->priv->renderer);
+}
+
+void
+god_drawing_view_set_drawing  (GodDrawingView *view,
+			       GodDrawing *drawing)
+{
+	god_drawing_renderer_gdk_set_drawing (view->priv->renderer, drawing);
+	gtk_widget_queue_draw (GTK_WIDGET (view));
+}
+
+GodAnchor *
+god_drawing_view_get_extents  (GodDrawingView *view)
+{
+	return god_drawing_renderer_gdk_get_extents (view->priv->renderer);
+}
+
+void
+god_drawing_view_set_extents  (GodDrawingView *view,
+					  GodAnchor *extents)
+{
+	god_drawing_renderer_gdk_set_extents (view->priv->renderer, extents);
+	gtk_widget_queue_draw (GTK_WIDGET (view));
+}
+
+static void
+god_drawing_view_init (GObject *object)
+{
+	GodDrawingView *view = GOD_DRAWING_VIEW (object);
+
+	view->priv = g_new0 (GodDrawingViewPrivate, 1);
+	view->priv->renderer = god_drawing_renderer_gdk_new ();
+}
+
+static void
+god_drawing_view_realize (GtkWidget *widget)
+{
+	GodDrawingView *view = GOD_DRAWING_VIEW (widget);
+
+	GTK_WIDGET_CLASS(parent_class)->realize (widget);
+
+	god_drawing_renderer_gdk_set_drawable (view->priv->renderer,
+					       widget->window);
+	god_drawing_renderer_gdk_set_gc (view->priv->renderer,
+					 widget->style->fg_gc[0]);
+}
+
+static gboolean
+god_drawing_view_expose_event (GtkWidget	   *widget,
+			       GdkEventExpose      *event)
+{
+	GodDrawingView *view = GOD_DRAWING_VIEW (widget);
+	god_drawing_renderer_gdk_render (view->priv->renderer,
+					 &event->area);
+	return TRUE;
+}
+
+static void
+god_drawing_view_dispose (GObject *object)
+{
+	GodDrawingView *view = GOD_DRAWING_VIEW (object);
+
+	if (view->priv == NULL)
+		return;
+
+	if (view->priv->renderer)
+		g_object_unref (view->priv->renderer);
+	g_free (view->priv);
+	view->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+god_drawing_view_class_init (GodDrawingViewClass *class)
+{
+	GObjectClass *object_class;
+	GtkWidgetClass *widget_class;
+
+	object_class               = (GObjectClass *) class;
+	widget_class               = (GtkWidgetClass *) class;
+
+	parent_class               = g_type_class_peek_parent (class);
+
+	object_class->dispose      = god_drawing_view_dispose;
+
+	widget_class->realize      = god_drawing_view_realize;
+	widget_class->expose_event = god_drawing_view_expose_event;
+}
+
+GSF_CLASS (GodDrawingView, god_drawing_view,
+	   god_drawing_view_class_init, god_drawing_view_init,
+	   GTK_TYPE_DRAWING_AREA)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing-view.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- *//* vim: set sw=8: */
+#ifndef GOD_DRAWING_VIEW_H
+#define GOD_DRAWING_VIEW_H
+
+/**
+ * god-drawing-view.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-drawing.h>
+#include <goffice/drawing/god-anchor.h>
+#include <gdk/gdkdrawable.h>
+#include <gtk/gtkdrawingarea.h>
+
+G_BEGIN_DECLS
+
+#define GOD_DRAWING_VIEW_TYPE		(god_drawing_view_get_type ())
+#define GOD_DRAWING_VIEW(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_DRAWING_VIEW_TYPE, GodDrawingView))
+#define GOD_DRAWING_VIEW_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_DRAWING_VIEW_TYPE, GodDrawingViewClass))
+#define IS_GOD_DRAWING_VIEW(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_DRAWING_VIEW_TYPE))
+#define IS_GOD_DRAWING_VIEW_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_DRAWING_VIEW_TYPE))
+
+typedef struct GodDrawingViewPrivate_ GodDrawingViewPrivate;
+
+typedef struct {
+	GtkDrawingArea parent;
+	GodDrawingViewPrivate *priv;
+} GodDrawingView;
+
+typedef struct {
+	GtkDrawingAreaClass parent_class;
+} GodDrawingViewClass;
+
+GType           god_drawing_view_get_type     (void);
+GodDrawingView *god_drawing_view_new          (void);
+
+/* Return value is reffed. */
+GodDrawing     *god_drawing_view_get_drawing  (GodDrawingView *renderer);
+void            god_drawing_view_set_drawing  (GodDrawingView *renderer,
+					       GodDrawing     *drawing);
+
+/* Return value is reffed. */
+GodAnchor      *god_drawing_view_get_extents  (GodDrawingView *renderer);
+void            god_drawing_view_set_extents  (GodDrawingView *renderer,
+					       GodAnchor      *extents);
+
+G_END_DECLS
+
+#endif /* GOD_DRAWING_VIEW_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,147 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-drawing.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-drawing.h>
+#include <gsf/gsf-impl-utils.h>
+
+static GObjectClass *parent_class;
+
+struct GodDrawingPrivate_ {
+	GodShape *root_shape;
+	GodShape *background;
+	GodDrawingGroup *drawing_group;
+};
+
+GodDrawing *
+god_drawing_new (void)
+{
+	GodDrawing *drawing;
+
+	drawing = g_object_new (GOD_DRAWING_TYPE, NULL);
+
+	return drawing;
+}
+
+GodShape *
+god_drawing_get_root_shape  (GodDrawing *drawing)
+{
+	if (drawing->priv->root_shape)
+		g_object_ref (drawing->priv->root_shape);
+	return drawing->priv->root_shape;
+}
+
+void
+god_drawing_set_root_shape  (GodDrawing *drawing,
+			     GodShape *root_shape)
+{
+	if (drawing->priv->root_shape)
+		g_object_unref (drawing->priv->root_shape);
+	drawing->priv->root_shape = root_shape;
+	if (drawing->priv->root_shape)
+		g_object_ref (drawing->priv->root_shape);
+}
+
+GodShape *
+god_drawing_get_background  (GodDrawing *drawing)
+{
+	if (drawing->priv->background)
+		g_object_ref (drawing->priv->background);
+	return drawing->priv->background;
+}
+
+void
+god_drawing_set_background  (GodDrawing *drawing,
+			     GodShape *background)
+{
+	if (drawing->priv->background)
+		g_object_unref (drawing->priv->background);
+	drawing->priv->background = background;
+	if (drawing->priv->background)
+		g_object_ref (drawing->priv->background);
+}
+
+GodDrawingGroup *
+god_drawing_get_drawing_group  (GodDrawing *drawing)
+{
+	if (drawing->priv->drawing_group)
+		g_object_ref (drawing->priv->drawing_group);
+	return drawing->priv->drawing_group;
+}
+
+void
+god_drawing_set_drawing_group  (GodDrawing *drawing,
+				GodDrawingGroup *drawing_group)
+{
+	if (drawing->priv->drawing_group)
+		g_object_unref (drawing->priv->drawing_group);
+	drawing->priv->drawing_group = drawing_group;
+	if (drawing->priv->drawing_group)
+		g_object_ref (drawing->priv->drawing_group);
+}
+
+static void
+god_drawing_init (GObject *object)
+{
+	GodDrawing *drawing = GOD_DRAWING (object);
+
+	drawing->priv = g_new0 (GodDrawingPrivate, 1);
+}
+
+static void
+god_drawing_dispose (GObject *object)
+{
+	GodDrawing *drawing = GOD_DRAWING (object);
+
+	if (drawing->priv == NULL)
+		return;
+
+	if (drawing->priv->root_shape)
+		g_object_unref (drawing->priv->root_shape);
+	if (drawing->priv->background)
+		g_object_unref (drawing->priv->background);
+	if (drawing->priv->drawing_group)
+		g_object_unref (drawing->priv->drawing_group);
+	g_free (drawing->priv);
+	drawing->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+god_drawing_class_init (GodDrawingClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class           = (GObjectClass *) class;
+
+	parent_class           = g_type_class_peek_parent (class);
+
+	object_class->dispose = god_drawing_dispose;
+}
+
+GSF_CLASS (GodDrawing, god_drawing,
+	   god_drawing_class_init, god_drawing_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-drawing.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,60 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-drawing.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+#ifndef GOD_DRAWING_H
+#define GOD_DRAWING_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-shape.h>
+#include <goffice/drawing/god-drawing-group.h>
+
+G_BEGIN_DECLS
+
+#define GOD_DRAWING_TYPE	(god_drawing_get_type ())
+#define GOD_DRAWING(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_DRAWING_TYPE, GodDrawing))
+#define GOD_DRAWING_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_DRAWING_TYPE, GodDrawingClass))
+#define IS_GOD_DRAWING(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_DRAWING_TYPE))
+#define IS_GOD_DRAWING_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_DRAWING_TYPE))
+
+typedef struct GodDrawingPrivate_ GodDrawingPrivate;
+
+typedef struct {
+	GObject parent;
+	GodDrawingPrivate *priv;
+} GodDrawing;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodDrawingClass;
+
+GType            god_drawing_get_type           (void);
+GodDrawing      *god_drawing_new                (void);
+
+/* Return value is reffed. */
+GodShape        *god_drawing_get_root_shape     (GodDrawing      *drawing);
+void             god_drawing_set_root_shape     (GodDrawing      *drawing,
+						 GodShape        *root_shape);
+
+/* Return value is reffed. */
+GodShape        *god_drawing_get_background     (GodDrawing      *drawing);
+void             god_drawing_set_background     (GodDrawing      *drawing,
+						 GodShape        *root_shape);
+
+/* Return value is reffed. */
+GodDrawingGroup *god_drawing_get_drawing_group  (GodDrawing      *drawing);
+void             god_drawing_set_drawing_group  (GodDrawing      *drawing,
+						 GodDrawingGroup *drawing_group);
+
+
+G_END_DECLS
+
+#endif /* GOD_DRAWING_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,165 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-image-store.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-image-store.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodImageStorePrivate_ {
+	GPtrArray *images; /* Of type GodImage. */
+};
+
+static GPtrArray*
+g_ptr_array_insert_val (GPtrArray        *array,
+			guint             index,
+			gpointer          data) 
+{
+	g_ptr_array_add (array, data);
+	memmove (array->pdata + index + 1,
+		 array->pdata + index,
+		 array->len - index - 1);
+	g_ptr_array_index (array, index) = data;
+	return array;
+}
+
+GodImageStore *
+god_image_store_new (void)
+{
+	GodImageStore *shape;
+
+	shape = g_object_new (GOD_IMAGE_STORE_TYPE, NULL);
+
+	return shape;
+}
+
+void
+god_image_store_append_image   (GodImageStore       *store,
+				GodImage       *image)
+{
+	god_image_store_insert_image (store, image, -1);
+}
+
+/* pos can be -1 to represent the end. */
+void
+god_image_store_insert_image   (GodImageStore       *store,
+				GodImage       *image,
+				int                   pos)
+{
+	g_return_if_fail (store != NULL);
+	g_return_if_fail (image != NULL);
+
+	if (pos == -1)
+		pos = store->priv->images->len;
+
+	g_ptr_array_insert_val (store->priv->images, pos, image);
+	g_object_ref (image);
+}
+
+/* pos must be an actual position */
+void
+god_image_store_delete_image   (GodImageStore       *store,
+				int                   pos)
+{
+	GodImage *image = g_ptr_array_remove_index (store->priv->images, pos);
+	g_object_unref (image);
+}
+
+/* old_pos must be an actual position.  new_pos can be -1 to represent the end. */
+void
+god_image_store_reorder_image  (GodImageStore       *store,
+				int                   old_pos,
+				int                   new_pos)
+{
+	GodImage *image = g_ptr_array_remove_index (store->priv->images, old_pos);
+	god_image_store_insert_image (store, image, new_pos);
+	g_object_unref (image);
+}
+
+int
+god_image_store_get_image_count  (GodImageStore       *store)
+{
+	return store->priv->images->len;
+}
+
+GodImage *
+god_image_store_get_image  (GodImageStore       *store,
+			    int pos)
+{
+	GodImage *image;
+
+	g_return_val_if_fail (pos < god_image_store_get_image_count (store), NULL);
+
+	image = g_ptr_array_index (store->priv->images, pos);
+
+	g_return_val_if_fail (image, NULL);
+
+	g_object_ref (image);
+	return image;
+}
+
+static void
+god_image_store_init (GObject *object)
+{
+	GodImageStore *shape = GOD_IMAGE_STORE (object);
+	shape->priv = g_new0 (GodImageStorePrivate, 1);
+	shape->priv->images = g_ptr_array_new ();
+}
+
+static void
+god_image_store_dispose (GObject *object)
+{
+	GodImageStore *shape = GOD_IMAGE_STORE (object);
+	guint i;
+
+	if (shape->priv == NULL)
+		return;
+
+	for (i = 0; i < shape->priv->images->len; i++)
+		g_object_unref (g_ptr_array_index (shape->priv->images, i));
+	g_ptr_array_free (shape->priv->images, TRUE);
+	g_free (shape->priv);
+	shape->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+god_image_store_class_init (GodImageStoreClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class          = (GObjectClass *) class;
+
+	parent_class          = g_type_class_peek_parent (class);
+
+	object_class->dispose = god_image_store_dispose;
+}
+
+GSF_CLASS (GodImageStore, god_image_store,
+	   god_image_store_class_init, god_image_store_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image-store.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,59 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-image-store.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+#ifndef GOD_IMAGE_STORE_H
+#define GOD_IMAGE_STORE_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-image.h>
+
+G_BEGIN_DECLS
+
+#define GOD_IMAGE_STORE_TYPE		(god_image_store_get_type ())
+#define GOD_IMAGE_STORE(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_IMAGE_STORE_TYPE, GodImageStore))
+#define GOD_IMAGE_STORE_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_IMAGE_STORE_TYPE, GodImageStoreClass))
+#define IS_GOD_IMAGE_STORE(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_IMAGE_STORE_TYPE))
+#define IS_GOD_IMAGE_STORE_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_IMAGE_STORE_TYPE))
+
+typedef struct GodImageStorePrivate_ GodImageStorePrivate;
+
+typedef struct {
+	GObject parent;
+	GodImageStorePrivate *priv;
+} GodImageStore;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodImageStoreClass;
+
+GType          god_image_store_get_type         (void);
+GodImageStore *god_image_store_new              (void);
+
+/* Tree functions */
+void           god_image_store_append_image     (GodImageStore *store,
+						 GodImage      *image);
+void           god_image_store_insert_image     (GodImageStore *store,
+						 GodImage      *image,
+						 int            pos);
+void           god_image_store_delete_image     (GodImageStore *store,
+						 int            pos);
+void           god_image_store_reorder_image    (GodImageStore *store,
+						 int            old_pos,
+						 int            new_pos);
+int            god_image_store_get_image_count  (GodImageStore *store);
+/* Return value is reffed. */
+GodImage      *god_image_store_get_image        (GodImageStore *store,
+						 int            pos);
+
+G_END_DECLS
+
+#endif /* GOD_IMAGE_STORE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,140 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-image.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-image.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodImagePrivate_ {
+	char *format;
+	guint8 *data;
+	guint32 length;
+	GdkPixbuf *pixbuf;
+};
+
+static void
+ensure_pixbuf (GodImage *image)
+{
+	GdkPixbufLoader *loader;
+
+	if (image->priv->pixbuf)
+		return;
+
+	if (image->priv->format)
+		loader = gdk_pixbuf_loader_new_with_type (image->priv->format, NULL);
+	else
+		loader = gdk_pixbuf_loader_new ();
+	if (loader) {
+		if (gdk_pixbuf_loader_write (loader, image->priv->data, image->priv->length, NULL)) {
+			image->priv->pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+			if (image->priv->pixbuf) {
+				g_object_ref (image->priv->pixbuf);
+			}
+		}
+		gdk_pixbuf_loader_close (loader, NULL);
+		g_object_unref (loader);
+	}
+}
+
+GodImage *
+god_image_new (void)
+{
+	GodImage *image;
+
+	image = g_object_new (GOD_IMAGE_TYPE, NULL);
+
+	return image;
+}
+
+GdkPixbuf *
+god_image_get_pixbuf  (GodImage *image)
+{
+	ensure_pixbuf (image);
+
+	if (image->priv->pixbuf)
+		g_object_ref (image->priv->pixbuf);
+	return image->priv->pixbuf;
+}
+
+void
+god_image_set_image_data  (GodImage *image,
+			   const char   *format,
+			   const guint8 *data,
+			   guint32       length)
+{
+	g_free (image->priv->data);
+	g_free (image->priv->format);
+	image->priv->format = g_strdup (format);
+	image->priv->length = length;
+	image->priv->data = g_memdup (data, length);
+
+	if (image->priv->pixbuf)
+		g_object_unref (image->priv->pixbuf);
+	image->priv->pixbuf = NULL;
+}
+
+static void
+god_image_init (GObject *object)
+{
+	GodImage *image = GOD_IMAGE (object);
+	image->priv = g_new0 (GodImagePrivate, 1);
+}
+
+static void
+god_image_dispose (GObject *object)
+{
+	GodImage *image = GOD_IMAGE (object);
+
+	if (image->priv == NULL)
+		return;
+
+	if (image->priv->pixbuf)
+		g_object_unref (image->priv->pixbuf);
+	g_free (image->priv->data);
+	g_free (image->priv->format);
+	g_free (image->priv);
+	image->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+god_image_class_init (GodImageClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class          = (GObjectClass *) class;
+
+	parent_class          = g_type_class_peek_parent (class);
+
+	object_class->dispose = god_image_dispose;
+}
+
+GSF_CLASS (GodImage, god_image,
+	   god_image_class_init, god_image_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-image.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,53 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-image.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+#ifndef GOD_IMAGE_H
+#define GOD_IMAGE_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-property-table.h>
+#include <goffice/drawing/god-anchor.h>
+#include <goffice/drawing/god-text-model.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+G_BEGIN_DECLS
+
+#define GOD_IMAGE_TYPE		(god_image_get_type ())
+#define GOD_IMAGE(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_IMAGE_TYPE, GodImage))
+#define GOD_IMAGE_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_IMAGE_TYPE, GodImageClass))
+#define IS_GOD_IMAGE(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_IMAGE_TYPE))
+#define IS_GOD_IMAGE_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_IMAGE_TYPE))
+
+typedef struct GodImagePrivate_ GodImagePrivate;
+
+typedef struct {
+	GObject parent;
+	GodImagePrivate *priv;
+} GodImage;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodImageClass;
+
+GType      god_image_get_type        (void);
+GodImage  *god_image_new             (void);
+
+GdkPixbuf *god_image_get_pixbuf      (GodImage     *image);
+/* Instead of setting the pixbuf, you set the image data.  */
+void       god_image_set_image_data  (GodImage     *image,
+				      const char   *format,
+				      const guint8 *data,
+				      guint32       length);
+
+G_END_DECLS
+
+#endif /* GOD_IMAGE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,265 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-paragraph-attributes.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-paragraph-attributes.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+static GObjectClass *parent_class;
+
+struct GodParagraphAttributesPrivate_ {
+	GodParagraphAttributesFlags flags;
+	double indent;
+	double space_before;
+	double space_after;
+	GodParagraphAlignment alignment;
+	gunichar bullet_character;
+	double bullet_indent;
+	double bullet_size;
+	char *bullet_family;
+	gboolean bullet_on;
+};
+
+enum {
+	PROP_0,
+	PROP_FLAGS,
+	PROP_INDENT,
+	PROP_SPACE_BEFORE,
+	PROP_SPACE_AFTER,
+	PROP_ALIGNMENT,
+	PROP_BULLET_CHARACTER,
+	PROP_BULLET_INDENT,
+	PROP_BULLET_SIZE,
+	PROP_BULLET_FAMILY,
+	PROP_BULLET_ON,
+};
+
+GodParagraphAttributes *
+god_paragraph_attributes_new (void)
+{
+	GodParagraphAttributes *paragraph;
+
+	paragraph = g_object_new (GOD_PARAGRAPH_ATTRIBUTES_TYPE, NULL);
+
+	return paragraph;
+}
+
+static void
+god_paragraph_attributes_init (GObject *object)
+{
+	GodParagraphAttributes *paragraph = GOD_PARAGRAPH_ATTRIBUTES (object);
+	paragraph->priv                   = g_new0 (GodParagraphAttributesPrivate, 1);
+	paragraph->priv->indent           = 0;
+	paragraph->priv->space_before     = 0;
+	paragraph->priv->space_after      = 0;
+	paragraph->priv->alignment        = GOD_PARAGRAPH_ALIGNMENT_LEFT;
+	paragraph->priv->bullet_character = 0;
+	paragraph->priv->bullet_indent    = 0;
+	paragraph->priv->bullet_size      = 1.0;
+	paragraph->priv->bullet_family    = NULL;
+	paragraph->priv->bullet_on        = FALSE;
+	paragraph->priv->flags            = 0;
+}
+
+static void
+god_paragraph_attributes_finalize (GObject *object)
+{
+	GodParagraphAttributes *paragraph = GOD_PARAGRAPH_ATTRIBUTES (object);
+
+	g_free (paragraph->priv->bullet_family);
+	g_free (paragraph->priv);
+	paragraph->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+god_paragraph_attributes_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+{
+	GodParagraphAttributes *paragraph = GOD_PARAGRAPH_ATTRIBUTES (object);
+
+	switch (prop_id) {
+	case PROP_INDENT:
+		paragraph->priv->indent = g_value_get_double (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_INDENT;
+		break;
+	case PROP_SPACE_BEFORE:
+		paragraph->priv->space_before = g_value_get_double (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_SPACE_BEFORE;
+		break;
+	case PROP_SPACE_AFTER:
+		paragraph->priv->space_after = g_value_get_double (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_SPACE_AFTER;
+		break;
+	case PROP_ALIGNMENT:
+		paragraph->priv->alignment = g_value_get_uint (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_ALIGNMENT;
+		break;
+	case PROP_BULLET_CHARACTER:
+		paragraph->priv->bullet_character = g_value_get_uint (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_CHARACTER;
+		break;
+	case PROP_BULLET_INDENT:
+		paragraph->priv->bullet_indent = g_value_get_double (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_INDENT;
+		break;
+	case PROP_BULLET_SIZE:
+		paragraph->priv->bullet_size = g_value_get_double (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_SIZE;
+		break;
+	case PROP_BULLET_FAMILY:
+		g_free (paragraph->priv->bullet_family);
+		paragraph->priv->bullet_family = g_value_dup_string (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_FAMILY;
+		break;
+	case PROP_BULLET_ON:
+		paragraph->priv->bullet_on = g_value_get_boolean (value);
+		paragraph->priv->flags |= GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_ON;
+		break;
+	}
+}
+
+static void
+god_paragraph_attributes_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+	GodParagraphAttributes *paragraph = GOD_PARAGRAPH_ATTRIBUTES (object);
+
+	switch (prop_id){
+	case PROP_FLAGS:
+		g_value_set_uint (value, paragraph->priv->flags);
+		break;
+	case PROP_INDENT:
+		g_value_set_double (value, paragraph->priv->indent);
+		break;
+	case PROP_SPACE_BEFORE:
+		g_value_set_double (value, paragraph->priv->space_before);
+		break;
+	case PROP_SPACE_AFTER:
+		g_value_set_double (value, paragraph->priv->space_after);
+		break;
+	case PROP_ALIGNMENT:
+		g_value_set_uint (value, paragraph->priv->alignment);
+		break;
+	case PROP_BULLET_CHARACTER:
+		g_value_set_uint (value, paragraph->priv->bullet_character);
+		break;
+	case PROP_BULLET_INDENT:
+		g_value_set_double (value, paragraph->priv->bullet_indent);
+		break;
+	case PROP_BULLET_SIZE:
+		g_value_set_double (value, paragraph->priv->bullet_size);
+		break;
+	case PROP_BULLET_FAMILY:
+		g_value_set_string (value, paragraph->priv->bullet_family);
+		break;
+	case PROP_BULLET_ON:
+		g_value_set_boolean (value, paragraph->priv->bullet_on);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+god_paragraph_attributes_class_init (GodParagraphAttributesClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class               = (GObjectClass *) class;
+
+	parent_class               = g_type_class_peek_parent (class);
+
+	object_class->finalize     = god_paragraph_attributes_finalize;
+	object_class->get_property = god_paragraph_attributes_get_property;
+	object_class->set_property = god_paragraph_attributes_set_property;
+
+	g_object_class_install_property (object_class, PROP_FLAGS,
+					 g_param_spec_uint ("flags",
+							    _( "Flags" ),
+							    _( "Flags" ),
+							    0, GOD_PARAGRAPH_ATTRIBUTES_FLAGS_ALL, 0,
+							    G_PARAM_READABLE));
+	g_object_class_install_property (object_class, PROP_INDENT,
+					 g_param_spec_double ("indent",
+							      _( "Indent" ),
+							      _( "Indent" ),
+							      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_SPACE_BEFORE,
+					 g_param_spec_double ("space_before",
+							      _( "Space Before" ),
+							      _( "Space Before" ),
+							      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_SPACE_AFTER,
+					 g_param_spec_double ("space_after",
+							      _( "Space After" ),
+							      _( "Space After" ),
+							      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_ALIGNMENT,
+					 g_param_spec_uint ("alignment",
+							      _( "Alignment" ),
+							      _( "Alignment" ),
+							      GOD_PARAGRAPH_ALIGNMENT_LEFT, GOD_PARAGRAPH_ALIGNMENT_JUSTIFY, GOD_PARAGRAPH_ALIGNMENT_LEFT,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_BULLET_CHARACTER,
+					 g_param_spec_uint ("bullet_character",
+							      _( "Bullet Character" ),
+							      _( "Bullet Character" ),
+							      0, 0xffffffff, 0,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_BULLET_INDENT,
+					 g_param_spec_double ("bullet_indent",
+							      _( "Bullet Indent" ),
+							      _( "Bullet Indent" ),
+							      -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_BULLET_SIZE,
+					 g_param_spec_double ("bullet_size",
+							      _( "Bullet Size" ),
+							      _( "Bullet Size" ),
+							      0, G_MAXDOUBLE, 1.0,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_BULLET_FAMILY,
+					 g_param_spec_string ("bullet_family",
+							      _( "Bullet Family" ),
+							      _( "Bullet Family" ),
+							      NULL,
+							      G_PARAM_READWRITE));
+	g_object_class_install_property (object_class, PROP_BULLET_ON,
+					 g_param_spec_boolean ("bullet_on",
+							       _( "Bullet On" ),
+							       _( "Bullet On" ),
+							       FALSE,
+							       G_PARAM_READWRITE));
+}
+
+GSF_CLASS (GodParagraphAttributes, god_paragraph_attributes,
+	   god_paragraph_attributes_class_init, god_paragraph_attributes_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-paragraph-attributes.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,64 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-paragraph-attributes.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+#ifndef GOD_PARAGRAPH_ATTRIBUTES_H
+#define GOD_PARAGRAPH_ATTRIBUTES_H
+
+#include <glib-object.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+#define GOD_PARAGRAPH_ATTRIBUTES_TYPE		(god_paragraph_attributes_get_type ())
+#define GOD_PARAGRAPH_ATTRIBUTES(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_PARAGRAPH_ATTRIBUTES_TYPE, GodParagraphAttributes))
+#define GOD_PARAGRAPH_ATTRIBUTES_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_PARAGRAPH_ATTRIBUTES_TYPE, GodParagraphAttributesClass))
+#define GOD_PARAGRAPH_ATTRIBUTES_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GOD_PARAGRAPH_ATTRIBUTES_TYPE, GodParagraphAttributesClass))
+#define IS_GOD_PARAGRAPH_ATTRIBUTES(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_PARAGRAPH_ATTRIBUTES_TYPE))
+#define IS_GOD_PARAGRAPH_ATTRIBUTES_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_PARAGRAPH_ATTRIBUTES_TYPE))
+
+typedef struct GodParagraphAttributesPrivate_ GodParagraphAttributesPrivate;
+
+typedef struct {
+	GObject parent;
+	GodParagraphAttributesPrivate *priv;
+} GodParagraphAttributes;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodParagraphAttributesClass;
+
+typedef enum {
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_INDENT           = 1 << 0,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_SPACE_BEFORE     = 1 << 1,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_SPACE_AFTER      = 1 << 2,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_ALIGNMENT        = 1 << 3,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_CHARACTER = 1 << 4,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_INDENT    = 1 << 5,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_SIZE      = 1 << 6,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_FAMILY    = 1 << 7,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_BULLET_ON        = 1 << 8,
+	GOD_PARAGRAPH_ATTRIBUTES_FLAGS_ALL              = ((1 << 9) - 1),
+} GodParagraphAttributesFlags;
+
+typedef enum {
+	GOD_PARAGRAPH_ALIGNMENT_LEFT = 0,
+	GOD_PARAGRAPH_ALIGNMENT_CENTER = 1,
+	GOD_PARAGRAPH_ALIGNMENT_RIGHT = 2,
+	GOD_PARAGRAPH_ALIGNMENT_JUSTIFY = 3
+} GodParagraphAlignment;
+
+GType                   god_paragraph_attributes_get_type       (void);
+GodParagraphAttributes *god_paragraph_attributes_new            (void);
+
+
+G_END_DECLS
+
+#endif /* GOD_PARAGRAPH_ATTRIBUTES_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,993 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-property-table.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2004
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-property-table.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <gsf/gsf-utils.h>
+#include <stdio.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodPropertyTablePrivate_ {
+	GHashTable *attrs;
+};
+
+#define GR_END                0x00
+#define GR_MACRO              0x04
+#define GR_COMMAND_BUTTON     0x05
+#define GR_GROUP	      0x06
+#define GR_CLIPBOARD_FORMAT   0x07
+#define GR_PICTURE_OPTIONS    0x08
+#define GR_PICTURE_FORMULA    0x09
+#define GR_CHECKBOX_LINK      0x0A
+#define GR_RADIO_BUTTON       0x0B
+#define GR_SCROLLBAR          0x0C
+#define GR_NOTE_STRUCTURE     0x0D
+#define GR_SCROLLBAR_FORMULA  0x0E
+#define GR_GROUP_BOX_DATA     0x0F
+#define GR_EDIT_CONTROL_DATA  0x10
+#define GR_RADIO_BUTTON_DATA  0x11
+#define GR_CHECKBOX_DATA      0x12
+#define GR_LISTBOX_DATA       0x13
+#define GR_CHECKBOX_FORMULA   0x14
+#define GR_COMMON_OBJ_DATA    0x15
+
+static GValue *
+g_value_new (GType type)
+{
+	GValue *value = g_new0 (GValue, 1);
+	g_value_init (value, type);
+	return value;
+}
+
+static void
+g_value_free (gpointer data)
+{
+	GValue *value = data;
+	g_value_unset (value);
+	g_free (value);
+}
+
+void
+god_property_table_set (GodPropertyTable *prop_table, GodPropertyID id, GValue *value)
+{
+	g_hash_table_insert (prop_table->priv->attrs, g_strdup(id), value);
+}
+
+GValue *
+god_property_table_get (GodPropertyTable *prop_table, GodPropertyID id)
+{
+	g_return_val_if_fail (prop_table != NULL, NULL);
+	return g_hash_table_lookup (prop_table->priv->attrs, id);
+}
+
+void
+god_property_table_set_flag     (GodPropertyTable       *prop_table,
+				 GodPropertyID           id,
+				 gboolean                      val)
+{
+	GValue *value = g_value_new(G_TYPE_BOOLEAN);
+	g_value_set_boolean (value, val);
+	god_property_table_set (prop_table, id, value);
+}
+
+void
+god_property_table_set_uint     (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 guint32             val)
+{
+	GValue *value = g_value_new(G_TYPE_UINT);
+	g_value_set_uint (value, val);
+	god_property_table_set (prop_table, id, value);
+}
+
+void
+god_property_table_set_int      (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 gint32              val)
+{
+	GValue *value = g_value_new(G_TYPE_INT);
+	g_value_set_int (value, val);
+	god_property_table_set (prop_table, id, value);
+}
+
+void
+god_property_table_set_length   (GodPropertyTable *prop_table,
+				 GodPropertyID     id,
+				 go_unit_t         val)
+{
+	GValue *value = g_value_new(G_TYPE_INT64);
+	g_value_set_int64 (value, val);
+	god_property_table_set (prop_table, id, value);
+}
+
+void
+god_property_table_set_pointer  (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 gpointer            val)
+{
+	GValue *value = g_value_new(G_TYPE_POINTER);
+	g_value_set_pointer (value, val);
+	god_property_table_set (prop_table, id, value);
+}
+
+void
+god_property_table_set_array    (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 GArray             *val)
+{
+	GValue *value = g_value_new(G_TYPE_POINTER);
+	g_value_set_pointer (value, val);
+	god_property_table_set (prop_table, id, value);
+}
+
+void
+god_property_table_set_markup   (GodPropertyTable *prop_table,
+				 GodPropertyID     id,
+				 PangoAttrList    *list)
+{
+	GValue *value = g_value_new (PANGO_TYPE_ATTR_LIST);
+	g_value_set_pointer (value, list);
+	god_property_table_set (prop_table, id, value);
+}
+
+gboolean
+god_property_table_get_flag     (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 gboolean             default_value)
+{
+	GValue *value;
+
+	g_return_val_if_fail (prop_table != NULL, default_value);
+	value = g_hash_table_lookup (prop_table->priv->attrs, id);
+	if (value == NULL)
+		return default_value;
+
+	g_return_val_if_fail (G_VALUE_HOLDS_BOOLEAN (value), default_value);
+
+	return g_value_get_boolean (value);
+}
+
+guint32
+god_property_table_get_uint     (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 guint32             default_value)
+{
+	GValue *value;
+
+	g_return_val_if_fail (prop_table != NULL, default_value);
+	value = g_hash_table_lookup (prop_table->priv->attrs, id);
+	if (value == NULL)
+		return default_value;
+
+	g_return_val_if_fail (G_VALUE_HOLDS_UINT (value), default_value);
+
+	return g_value_get_uint (value);
+}
+
+gint32
+god_property_table_get_int      (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 gint32              default_value)
+{
+	GValue *value;
+
+	g_return_val_if_fail (prop_table != NULL, default_value);
+	value = g_hash_table_lookup (prop_table->priv->attrs, id);
+	if (value == NULL)
+		return default_value;
+
+	g_return_val_if_fail (G_VALUE_HOLDS_INT (value), default_value);
+
+	return g_value_get_int (value);
+}
+
+go_unit_t
+god_property_table_get_length   (GodPropertyTable *prop_table,
+				 GodPropertyID     id,
+				 go_unit_t         default_value)
+{
+	GValue *value;
+
+	g_return_val_if_fail (prop_table != NULL, default_value);
+	value = g_hash_table_lookup (prop_table->priv->attrs, id);
+	if (value == NULL)
+		return default_value;
+
+	g_return_val_if_fail (G_VALUE_HOLDS_INT64 (value), default_value);
+
+	return g_value_get_int64 (value);
+}
+
+gpointer
+god_property_table_get_pointer  (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 gpointer            default_value)
+{
+	GValue *value;
+
+	g_return_val_if_fail (prop_table != NULL, default_value);
+	value = g_hash_table_lookup (prop_table->priv->attrs, id);
+	if (value == NULL)
+		return default_value;
+
+	g_return_val_if_fail (G_VALUE_HOLDS_POINTER (value), default_value);
+
+	return g_value_get_pointer (value);
+}
+
+GArray *
+god_property_table_get_array    (GodPropertyTable       *prop_table,
+				 GodPropertyID  id,
+				 GArray            *default_value)
+{
+	GValue *value;
+
+	g_return_val_if_fail (prop_table != NULL, default_value);
+	value = g_hash_table_lookup (prop_table->priv->attrs, id);
+	if (value == NULL)
+		return default_value;
+
+	g_return_val_if_fail (G_VALUE_HOLDS_POINTER (value), default_value);
+
+	return g_value_get_pointer (value);
+}
+
+PangoAttrList *
+god_property_table_get_markup	  (GodPropertyTable *prop_table,
+				   GodPropertyID     id,
+				   PangoAttrList *default_value)
+{
+	GValue *value;
+
+	g_return_val_if_fail (prop_table != NULL, default_value);
+	value = g_hash_table_lookup (prop_table->priv->attrs, id);
+	if (value == NULL)
+		return default_value;
+
+	g_return_val_if_fail (G_VALUE_HOLDS_POINTER (value), default_value);
+
+	return g_value_get_pointer (value);
+}
+
+GodPropertyTable *
+god_property_table_new (void)
+{
+	GodPropertyTable *prop_table;
+
+	prop_table = g_object_new (GOD_PROPERTY_TABLE_TYPE, NULL);
+
+	return prop_table;
+}
+
+static void
+god_property_table_init (GObject *object)
+{
+	GodPropertyTable *prop_table = GOD_PROPERTY_TABLE (object);
+	prop_table->priv = g_new0 (GodPropertyTablePrivate, 1);
+	prop_table->priv->attrs = g_hash_table_new_full (g_str_hash,
+							 g_str_equal,
+							 g_free,
+							 g_value_free);
+}
+
+static void
+god_property_table_finalize (GObject *object)
+{
+	GodPropertyTable *prop_table = GOD_PROPERTY_TABLE (object);
+
+	g_hash_table_destroy (prop_table->priv->attrs);
+	g_free (prop_table->priv);
+	prop_table->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+god_property_table_class_init (GodPropertyTableClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class           = (GObjectClass *) class;
+
+	parent_class           = g_type_class_peek_parent (class);
+
+	object_class->finalize = god_property_table_finalize;
+}
+
+GSF_CLASS (GodPropertyTable, god_property_table,
+	   god_property_table_class_init, god_property_table_init,
+	   G_TYPE_OBJECT)
+
+#if 0
+/********************************************************************************/
+
+GODrawingPropertyTable *
+ms_obj_new (GODrawingPropertyTableAttrBag *attrs)
+{
+	GODrawingPropertyTable *obj = g_new0 (GODrawingPropertyTable, 1);
+
+	obj->excel_type = (unsigned)-1; /* Set to undefined */
+	obj->excel_type_name = NULL;
+	obj->id = -1;
+	obj->gnum_obj = NULL;
+	obj->attrs = (attrs != NULL) ? attrs : ms_obj_attr_bag_new ();
+	obj->combo_in_autofilter	= FALSE;
+	obj->is_linked			= FALSE;
+	obj->comment_pos.col = obj->comment_pos.row = -1;
+
+	return obj;
+}
+
+void
+ms_obj_delete (GODrawingPropertyTable *obj)
+{
+	if (obj) {
+		if (obj->gnum_obj) {
+			g_object_unref (obj->gnum_obj);
+			obj->gnum_obj = NULL;
+		}
+		if (obj->attrs) {
+			ms_obj_attr_bag_destroy (obj->attrs);
+			obj->attrs = NULL;
+		}
+		g_free (obj);
+	}
+}
+
+/* S59EOE.HTM */
+char *
+ms_read_TXO (BiffQuery *q)
+{
+	static char const * const orientations [] = {
+		"Left to right",
+		"Top to Bottom",
+		"Bottom to Top on Side",
+		"Top to Bottom on Side"
+	};
+	static char const * const haligns [] = {
+		"At left", "Horizontaly centered",
+		"At right", "Horizontaly justified"
+	};
+	static char const * const valigns [] = {
+		"At top", "Verticaly centered",
+		"At bottom", "Verticaly justified"
+	};
+
+	guint16 const options     = GSF_LE_GET_GUINT16 (q->data);
+	guint16 const orient      = GSF_LE_GET_GUINT16 (q->data + 2);
+	guint16 const text_len    = GSF_LE_GET_GUINT16 (q->data + 10);
+/*	guint16 const num_formats = GSF_LE_GET_GUINT16 (q->data + 12);*/
+	int const halign = (options >> 1) & 0x7;
+	int const valign = (options >> 4) & 0x7;
+	char         *text;
+	guint16       peek_op;
+
+	if (text_len == 0)
+		return NULL;
+
+	g_return_val_if_fail (orient <= 3, NULL);
+	g_return_val_if_fail (1 <= halign && halign <= 4, NULL);
+	g_return_val_if_fail (1 <= valign && valign <= 4, NULL);
+
+	if (ms_biff_query_peek_next (q, &peek_op) && peek_op == BIFF_CONTINUE) {
+		ms_biff_query_next (q);
+
+		if ((int)q->length < text_len) {
+			g_warning ("Broken continue in TXO record");
+			text = g_strdup ("Broken continue");
+		} else
+			text = ms_biff_get_chars (q->data + 1, text_len,
+						  *(q->data) != 0);
+
+		if (ms_biff_query_peek_next (q, &peek_op) &&
+		    peek_op == BIFF_CONTINUE)
+			ms_biff_query_next (q);
+		else
+			g_warning ("Unusual, TXO text with no formatting has 0x%x @ 0x%x", peek_op, q->streamPos);
+	} else {
+		if (text_len > 0)
+			g_warning ("TXO len of %d but no continue", text_len);
+		text = g_strdup ("");
+	}
+
+#ifndef NO_DEBUG_EXCEL
+	if (ms_excel_object_debug > 0) {
+		printf ("{ TextObject\n");
+		printf ("Text '%s'\n", text);
+		printf ("is %s, %s & %s;\n",
+			orientations[orient], haligns[halign], valigns[valign]);
+		printf ("}; /* TextObject */\n");
+	}
+#endif
+	return text;
+}
+
+#ifndef NO_DEBUG_EXCEL
+#define ms_obj_dump(data, len, data_left, name) ms_obj_dump_impl (data, len, data_left, name)
+static void
+ms_obj_dump_impl (guint8 const *data, int len, int data_left, char const *name)
+{
+	if (ms_excel_object_debug < 2)
+		return;
+
+	printf ("{ %s \n", name);
+	if (len+4 > data_left) {
+		printf ("/* invalid length %d (0x%x) > %d(0x%x)*/\n",
+			len+4, len+4, data_left, data_left);
+		len = data_left - 4;
+	}
+	if (ms_excel_object_debug > 2)
+		gsf_mem_dump (data, len+4);
+	printf ("}; /* %s */\n", name);
+}
+#else
+#define ms_obj_dump (data, len, data_left, name)
+#endif
+
+/* S59DAD.HTM */
+static gboolean
+ms_obj_read_pre_biff8_obj (BiffQuery *q, MSContainer *container, GODrawingPropertyTable *obj)
+{
+	guint16 peek_op, tmp, len;
+	guint8 const *data;
+	gboolean const has_fmla = GSF_LE_GET_GUINT16 (q->data+26) != 0;
+
+	/* undocumented */
+	gboolean const has_name = GSF_LE_GET_GUINT16 (q->data+30) != 0;
+
+#if 0
+	guint16 const flags = GSF_LE_GET_GUINT16(q->data+8);
+#endif
+	guint8 *anchor = g_malloc (MS_ANCHOR_SIZE);
+	memcpy (anchor, q->data+8, MS_ANCHOR_SIZE);
+	ms_obj_attr_bag_insert (obj->attrs,
+		ms_obj_attr_new_ptr (MS_OBJ_ATTR_ANCHOR, anchor));
+
+	obj->excel_type = GSF_LE_GET_GUINT16(q->data + 4);
+	obj->id         = GSF_LE_GET_GUINT32(q->data + 6);
+
+	switch (obj->excel_type) {
+	case 0: /* group */
+		break;
+	case 1: /* line */
+		tmp = GSF_LE_GET_GUINT8 (q->data+40);
+		if (GSF_LE_GET_GUINT16 (q->data + 10) == 0 &&
+		    GSF_LE_GET_GUINT16 (q->data + 14) < 20) {
+			g_warning("%hhu", tmp);
+		}
+		if (GSF_LE_GET_GUINT8 (q->data+38) & 0x0F)
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_flag (MS_OBJ_ATTR_ARROW_END));
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_FILL_COLOR,
+				0x80000000 | GSF_LE_GET_GUINT8 (q->data+34)));
+
+		if (tmp == 1 || tmp == 2)
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_flag (MS_OBJ_ATTR_FLIP_H));
+		if (tmp >= 2)
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_flag (MS_OBJ_ATTR_FLIP_V));
+		break;
+
+	case 2: /* rectangle */
+		break;
+	case 3: /* oval */
+		break;
+	case 4: /* arc */
+		break;
+	case 5: /* chart */
+		break;
+	case 6: /* textbox */
+		/* gsf_mem_dump (q->data+34, q->length - 34); */
+		if (GSF_LE_GET_GUINT8 (q->data+36) > 0) {
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_flag (MS_OBJ_ATTR_FILLED));
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_uint (MS_OBJ_ATTR_FILL_COLOR,
+					0x80000000 | GSF_LE_GET_GUINT8 (q->data+35)));
+		}
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_FONT_COLOR,
+				0x80000000 | GSF_LE_GET_GUINT8 (q->data+34)));
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_OUTLINE_COLOR,
+				0x80000000 | GSF_LE_GET_GUINT8 (q->data+38)));
+
+		/* only pull in the text if it exists */
+		len = GSF_LE_GET_GUINT16 (q->data + 44);
+		if (len > 0) {
+			data = q->data + 70;
+			g_return_val_if_fail ((unsigned)(data - q->data) < q->length, TRUE);
+
+			g_return_val_if_fail (!has_fmla, TRUE); /* how would this happen */
+
+			/* skip the obj name if defined */
+			if (has_name) {
+				data += *data + ((*data & 0x1) ? 1 : 2); /* padding byte */
+				g_return_val_if_fail ((unsigned)(data - q->data) < q->length, TRUE);
+			}
+
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_ptr (MS_OBJ_ATTR_TEXT,
+					g_strndup (data, len)));
+		}
+		break;
+
+	case 7: /* button */
+		break;
+	case 8: /* picture */
+		break;
+	case 9: /* polygon */
+
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_FILL_COLOR,
+				0x80000000 | GSF_LE_GET_GUINT8 (q->data+35)));
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_OUTLINE_COLOR,
+				0x80000000 | GSF_LE_GET_GUINT8 (q->data+38)));
+
+		if (ms_biff_query_peek_next (q, &peek_op) &&
+		    peek_op == BIFF_COORDLIST) {
+			unsigned i, n;
+			guint tmp;
+			GArray *array;
+
+			ms_biff_query_next (q);
+			n = q->length / 2;
+			array = g_array_set_size (
+				g_array_new (FALSE, FALSE, sizeof (double)), n + 2);
+
+			for (i = 0; i < n ; i++) {
+				tmp = GSF_LE_GET_GUINT16 (q->data + 2*i);
+				g_array_index (array, double, i) = (double)tmp/ 16384.;
+			}
+			g_array_index (array, double, i)   = g_array_index (array, double, 0);
+			g_array_index (array, double, i+1) = g_array_index (array, double, 1);
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_array (MS_OBJ_ATTR_POLYGON_COORDS, array));
+		}
+		break;
+
+	case 0xB  : /* check box */
+		break;
+	case 0xC  : /* option button */
+		break;
+	case 0xD  : /* edit box */
+		break;
+	case 0xE  : /* label */
+		break;
+	case 0xF  : /* dialog frame */
+		break;
+	case 0x10 : /* spinner & scrollbar (layout is the same) */
+	case 0x11 :
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_VALUE,
+				GSF_LE_GET_GUINT16 (q->data+48)));
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_MIN,
+				GSF_LE_GET_GUINT16 (q->data+50)));
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_MAX,
+				GSF_LE_GET_GUINT16 (q->data+52)));
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_INC,
+				GSF_LE_GET_GUINT16 (q->data+54)));
+		ms_obj_attr_bag_insert (obj->attrs,
+			ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_PAGE,
+				GSF_LE_GET_GUINT16 (q->data+56)));
+
+		{
+			GnmExpr const *ref;
+			guint16 len;
+			guint8 const *last = q->data + q->length;
+			guint8 const *ptr = q->data + 64;
+
+			ptr += 1 + *ptr;		/* object name */
+			if ((ptr - q->data) & 1) ptr++;	/* align on word */
+			if (ptr >= last) break;
+
+			ptr += 2 + GSF_LE_GET_GUINT16 (ptr); /* the macro */
+			if ((ptr - q->data) & 1) ptr++;	/* align on word */
+			if (ptr >= last) break;
+
+			len = GSF_LE_GET_GUINT16 (ptr+2); /* the assigned macro */
+			ref = ms_container_parse_expr (container, ptr + 8, len);
+			if (ref != NULL)
+				ms_obj_attr_bag_insert (obj->attrs,
+					ms_obj_attr_new_expr (MS_OBJ_ATTR_LINKED_TO_CELL, ref));
+		}
+		break;
+	case 0x12 : /* list box */
+		break;
+	case 0x13 : /* group box */
+		break;
+	case 0x14 : /* drop down */
+		obj->combo_in_autofilter =
+			(GSF_LE_GET_GUINT16 (q->data + 8) & 0x8000) ? TRUE : FALSE;
+		break;
+	default :
+		;
+	}
+
+	return FALSE;
+}
+
+/* S59DAD.HTM */
+static gboolean
+ms_obj_read_biff8_obj (BiffQuery *q, MSContainer *container, GODrawingPropertyTable *obj)
+{
+	guint8 *data;
+	gint32 data_len_left;
+	gboolean hit_end = FALSE;
+	gboolean next_biff_record_maybe_imdata = FALSE;
+
+	g_return_val_if_fail (q, TRUE);
+	g_return_val_if_fail (q->ls_op == BIFF_OBJ, TRUE);
+
+	data = q->data;
+	data_len_left = q->length;
+
+#if 0
+	ms_biff_query_dump (q);
+#endif
+
+	/* Scan through the pseudo BIFF substream */
+	while (data_len_left > 0 && !hit_end) {
+		guint16 const record_type = GSF_LE_GET_GUINT16(data);
+
+		/* All the sub-records seem to have this layout
+		 * 2001/Mar/29 JEG : liars.  Ok not all records have this
+		 * layout.  Create a list box.  It seems to do something
+		 * unique.  It acts like an end, and has no length specified.
+		 */
+		guint16 len = GSF_LE_GET_GUINT16(data+2);
+
+		/* 1st record must be COMMON_OBJ*/
+		g_return_val_if_fail (obj->excel_type >= 0 ||
+				      record_type == GR_COMMON_OBJ_DATA,
+				      TRUE);
+
+		switch (record_type) {
+		case GR_END:
+			g_return_val_if_fail (len == 0, TRUE);
+			/* ms_obj_dump (data, len, data_len_left, "ObjEnd"); */
+			hit_end = TRUE;
+			break;
+
+		case GR_MACRO :
+			ms_obj_dump (data, len, data_len_left, "MacroObject");
+			break;
+
+		case GR_COMMAND_BUTTON :
+			ms_obj_dump (data, len, data_len_left, "CommandButton");
+			break;
+
+		case GR_GROUP :
+			ms_obj_dump (data, len, data_len_left, "Group");
+			break;
+
+		case GR_CLIPBOARD_FORMAT :
+			ms_obj_dump (data, len, data_len_left, "ClipboardFmt");
+			break;
+
+		case GR_PICTURE_OPTIONS :
+			if (len == 2) {
+				guint16 opt = GSF_LE_GET_GUINT16 (data + 4);
+
+				obj->is_linked = (opt & 0x2) ? TRUE : FALSE;
+#ifndef NO_DEBUG_EXCEL
+				if (ms_excel_object_debug >= 1) {
+					printf ("{ /* PictOpt */\n");
+					printf ("value = %x;\n", opt);
+					printf ("}; /* PictOpt */\n");
+				}
+#endif
+			} else {
+				/* no docs on this so be careful */
+				g_warning ("PictOpt record with size other than 2");
+			}
+
+			next_biff_record_maybe_imdata = TRUE;
+			break;
+
+		case GR_PICTURE_FORMULA :
+			ms_obj_dump (data, len, data_len_left, "PictFormula");
+			break;
+
+		case GR_CHECKBOX_LINK :
+			ms_obj_dump (data, len, data_len_left, "CheckboxLink");
+			break;
+
+		case GR_RADIO_BUTTON :
+			ms_obj_dump (data, len, data_len_left, "RadioButton");
+			break;
+
+		case GR_SCROLLBAR :
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_VALUE,
+					GSF_LE_GET_GUINT16 (data+8)));
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_MIN,
+					GSF_LE_GET_GUINT16 (data+10)));
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_MAX,
+					GSF_LE_GET_GUINT16 (data+12)));
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_INC,
+					GSF_LE_GET_GUINT16 (data+14)));
+			ms_obj_attr_bag_insert (obj->attrs,
+				ms_obj_attr_new_uint (MS_OBJ_ATTR_SCROLLBAR_PAGE,
+					GSF_LE_GET_GUINT16 (data+16)));
+			ms_obj_dump (data, len, data_len_left, "ScrollBar");
+			break;
+
+		case GR_NOTE_STRUCTURE :
+			ms_obj_dump (data, len, data_len_left, "Note");
+			break;
+
+		case GR_SCROLLBAR_FORMULA : {
+			guint16 const expr_len = GSF_LE_GET_GUINT16 (data+4);
+			GnmExpr const *ref = ms_container_parse_expr (container, data+10, expr_len);
+			if (ref != NULL)
+				ms_obj_attr_bag_insert (obj->attrs,
+					ms_obj_attr_new_expr (MS_OBJ_ATTR_LINKED_TO_CELL, ref));
+			ms_obj_dump (data, len, data_len_left, "ScrollbarFmla");
+			break;
+		}
+
+		case GR_GROUP_BOX_DATA :
+			ms_obj_dump (data, len, data_len_left, "GroupBoxData");
+			break;
+
+		case GR_EDIT_CONTROL_DATA :
+			ms_obj_dump (data, len, data_len_left, "EditCtrlData");
+			break;
+
+		case GR_RADIO_BUTTON_DATA :
+			ms_obj_dump (data, len, data_len_left, "RadioData");
+			break;
+
+		case GR_CHECKBOX_DATA :
+			ms_obj_dump (data, len, data_len_left, "CheckBoxData");
+			break;
+
+		case GR_LISTBOX_DATA : {
+			/* FIXME : find some docs for this
+			 * It seems as if list box data does not conform to
+			 * the docs.  It acts like an end and has no size.
+			 */
+			hit_end = TRUE;
+			len = data_len_left - 4;
+
+			ms_obj_dump (data, len, data_len_left, "ListBoxData");
+			break;
+		}
+
+		case GR_CHECKBOX_FORMULA : {
+			guint16 const expr_len = GSF_LE_GET_GUINT16 (data+4);
+			GnmExpr const *ref = ms_container_parse_expr (container, data+10, expr_len);
+			if (ref != NULL)
+				ms_obj_attr_bag_insert (obj->attrs,
+					ms_obj_attr_new_expr (MS_OBJ_ATTR_LINKED_TO_CELL, ref));
+			ms_obj_dump (data, len, data_len_left, "CheckBoxFmla");
+			break;
+		}
+
+		case GR_COMMON_OBJ_DATA : {
+			guint16 const options =GSF_LE_GET_GUINT16 (data+8);
+
+			/* Multiple objects in 1 record ?? */
+			g_return_val_if_fail (obj->excel_type == -1, TRUE);
+
+			obj->excel_type = GSF_LE_GET_GUINT16(data+4);
+			obj->id = GSF_LE_GET_GUINT16(data+6);
+
+			/* Undocumented.  It appears that combos for filters are marked
+			 * with flag 0x100
+			 */
+			obj->combo_in_autofilter =
+				(obj->excel_type == 0x14) && (options & 0x100);
+
+#ifndef NO_DEBUG_EXCEL
+			/* only print when debug is enabled */
+			if (ms_excel_object_debug == 0)
+				break;
+
+			printf ("OBJECT TYPE = %d\n", obj->excel_type);
+			if (options&0x0001)
+				printf ("Locked;\n");
+			if (options&0x0010)
+				printf ("Printable;\n");
+			if (options&0x2000)
+				printf ("AutoFilled;\n");
+			if (options&0x4000)
+				printf ("AutoLines;\n");
+
+			if (ms_excel_object_debug > 4) {
+				/* According to the docs this should not fail
+				 * but there appears to be a flag at 0x200 for
+				 * scrollbars and 0x100 for combos
+				 * associated with filters.
+				 */
+				if ((options & 0x9fee) != 0)
+					printf ("WARNING : Why is option not 0 (%x)\n",
+						options & 0x9fee);
+			}
+#endif
+		}
+		break;
+
+		default:
+			printf ("ERROR : Unknown Obj record 0x%x len 0x%x dll %d;\n",
+				record_type, len, data_len_left);
+		}
+
+		if (data_len_left < len+4)
+			printf ("record len %d (0x%x) > %d\n", len+4, len+4, data_len_left);
+
+		/* FIXME : We need a structure akin to the escher code to do this properly */
+		for (data_len_left -= len+4; data_len_left < 0; ) {
+			guint16 peek_op;
+
+			printf ("deficit of %d\n", data_len_left);
+
+			/* FIXME : what do we expect here ??
+			 * I've seen what seem to be embedded drawings
+			 * but I am not sure what is embedding what.
+			 */
+			if (!ms_biff_query_peek_next (q, &peek_op) ||
+			    (peek_op != BIFF_CONTINUE &&
+			     peek_op != BIFF_MS_O_DRAWING &&
+			     peek_op != BIFF_TXO &&
+			     peek_op != BIFF_OBJ)) {
+				printf ("0x%x vs 0x%x\n", q->opcode, peek_op);
+				return TRUE;
+			}
+
+			ms_biff_query_next (q);
+			data_len_left += q->length;
+			printf ("merged in 0x%x with len %d\n", q->opcode, q->length);
+		}
+		data = q->data + q->length - data_len_left;
+	}
+
+	/* The ftEnd record should have been the last */
+	if (data_len_left > 0) {
+		printf("OBJ : unexpected extra data after Object End record;\n");
+		gsf_mem_dump (data, data_len_left);
+		return TRUE;
+	}
+
+	/* Catch underflow too */
+	g_return_val_if_fail (data_len_left == 0, TRUE);
+
+	/* FIXME : Throw away the IMDATA that may follow.
+	 * I am not sure when the IMDATA does follow, or how to display it,
+	 * but very careful in case it is not there.
+	 */
+	if (next_biff_record_maybe_imdata) {
+		guint16 op;
+
+		if (ms_biff_query_peek_next (q, &op) && op == BIFF_IMDATA) {
+			printf ("Reading trailing IMDATA;\n");
+			ms_biff_query_next (q);
+			excel_read_IMDATA (q, FALSE);
+		}
+	}
+
+	return FALSE;
+}
+
+/**
+ * ms_read_OBJ :
+ * @q : The biff record to start with.
+ * @container : The object's container
+ * @attrs : an OPTIONAL hash of object attributes.
+ */
+void
+ms_read_OBJ (BiffQuery *q, MSContainer *container, GODrawingPropertyTableAttrBag *attrs)
+{
+	static char const * const object_type_names[] = {
+		"Group", 	/* 0x00 */
+		"Line",		/* 0x01 */
+		"Rectangle",	/* 0x02 */
+		"Oval",		/* 0x03 */
+		"Arc",		/* 0x04 */
+		"Chart",	/* 0x05 */
+		"TextBox",	/* 0x06 */
+		"Button",	/* 0x07 */
+		"Picture",	/* 0x08 */
+		"Polygon",	/* 0x09 */
+		NULL,		/* 0x0A */
+		"CheckBox",	/* 0x0B */
+		"Option",	/* 0x0C */
+		"Edit",		/* 0x0D */
+		"Label",	/* 0x0E */
+		"Dialog",	/* 0x0F */
+		"Spinner",	/* 0x10 */
+		"Scroll",	/* 0x11 */
+		"List",		/* 0x12 */
+		"Group",	/* 0x13 */
+		"Combo",	/* 0x14 */
+		NULL, NULL, NULL, NULL, /* 0x15 - 0x18 */
+		"Comment",	/* 0x19 */
+		NULL, NULL, NULL, NULL,	/* 0x1A - 0x1D */
+		"MS Drawing"	/* 0x1E */
+	};
+
+	gboolean errors;
+	GODrawingPropertyTable *obj = ms_obj_new (attrs);
+
+#ifndef NO_DEBUG_EXCEL
+	if (ms_excel_object_debug > 0)
+		printf ("{ /* OBJ start */\n");
+#endif
+	errors = (container->ver >= MS_BIFF_V8)
+		? ms_obj_read_biff8_obj (q, container, obj)
+		: ms_obj_read_pre_biff8_obj (q, container, obj);
+
+	if (errors) {
+#ifndef NO_DEBUG_EXCEL
+		if (ms_excel_object_debug > 0)
+			printf ("}; /* OBJ error 1 */\n");
+#endif
+		ms_obj_delete (obj);
+		return;
+	}
+
+	obj->excel_type_name = NULL;
+	if (obj->excel_type < (int)G_N_ELEMENTS (object_type_names))
+		obj->excel_type_name = object_type_names [obj->excel_type];
+	if (obj->excel_type_name == NULL)
+		obj->excel_type_name = "Unknown";
+
+#ifndef NO_DEBUG_EXCEL
+	if (ms_excel_object_debug > 0) {
+		printf ("Object (%d) is a '%s'\n", obj->id, obj->excel_type_name);
+		printf ("}; /* OBJ end */\n");
+	}
+#endif
+
+	if (container->vtbl->create_obj != NULL)
+		obj->gnum_obj = (*container->vtbl->create_obj) (container, obj);
+
+	/* Chart, There should be a BOF next */
+	if (obj->excel_type == 0x5 &&
+	    ms_excel_chart_read_BOF (q, container, obj->gnum_obj)) {
+		ms_obj_delete (obj);
+		return;
+	}
+
+#if 0
+	g_warning ("registered obj %d\n", obj->id);
+#endif
+	ms_container_add_obj (container, obj);
+}
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-property-table.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,174 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-property-table.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GOD_PROPERTY_TABLE_H
+#define GOD_PROPERTY_TABLE_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/utils/go-units.h>
+#include <pango/pango-attributes.h>
+
+G_BEGIN_DECLS
+
+#define GOD_PROPERTY_TABLE_TYPE	(god_property_table_get_type ())
+#define GOD_PROPERTY_TABLE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_PROPERTY_TABLE_TYPE, GodPropertyTable))
+#define GOD_PROPERTY_TABLE_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_PROPERTY_TABLE_TYPE, GodClassPropertyTable))
+#define IS_GOD_PROPERTY_TABLE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_PROPERTY_TABLE_TYPE))
+#define IS_GOD_PROPERTY_TABLE_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_PROPERTY_TABLE_TYPE))
+
+typedef struct GodPropertyTablePrivate_ GodPropertyTablePrivate;
+
+typedef struct {
+	GObject parent;
+	GodPropertyTablePrivate *priv;
+} GodPropertyTable;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodPropertyTableClass;
+
+/* Flags */
+#define GOD_PROPERTY_FLIP_H	         "flip-h"
+#define GOD_PROPERTY_FLIP_V		 "flip-v"
+#define GOD_PROPERTY_FILLED		 "filled"
+#define GOD_PROPERTY_BACKGROUND		 "background"
+
+/* will be enums when we support multiple "arrow shapes */
+#define GOD_PROPERTY_ARROW_START	 "arrow-start"
+#define GOD_PROPERTY_ARROW_END		 "arrow-end"
+
+/* Integers & Enums */
+#define GOD_PROPERTY_BLIP_ID		 "blip-id"
+#define GOD_PROPERTY_FONT_COLOR		 "font-color"
+#define GOD_PROPERTY_FILL_TYPE		 "fill-type"
+#define GOD_PROPERTY_FILL_SHADE_TYPE	 "fill-shade_type"
+#define GOD_PROPERTY_FILL_ANGLE	 	 "fill-angle"
+#define GOD_PROPERTY_FILL_FOCUS	 	 "fill-focus"
+#define GOD_PROPERTY_FILL_COLOR		 "fill-color"
+#define GOD_PROPERTY_FILL_ALPHA		 "fill-alpha"
+#define GOD_PROPERTY_FILL_PRESET	 "fill-preset"
+#define GOD_PROPERTY_FILL_BACKGROUND	 "fill-background"
+#define GOD_PROPERTY_FILL_BACKGROUND_ALPHA "fill-background-alpha"
+#define GOD_PROPERTY_OUTLINE_COLOR	 "outline-color"
+#define GOD_PROPERTY_OUTLINE_WIDTH	 "outline-width"
+#define GOD_PROPERTY_OUTLINE_STYLE	 "outline-style"
+#define GOD_PROPERTY_SCROLLBAR_VALUE	 "scrollbar-value"
+#define GOD_PROPERTY_SCROLLBAR_MIN	 "scrollbar-min"
+#define GOD_PROPERTY_SCROLLBAR_MAX	 "scrollbar-max"
+#define GOD_PROPERTY_SCROLLBAR_INC	 "scrollbar-inc"
+#define GOD_PROPERTY_SCROLLBAR_PAGE	 "scrollbar-page"
+#define GOD_PROPERTY_BLIP_CROP_TOP	 "blip-crop-top"
+#define GOD_PROPERTY_BLIP_CROP_BOTTOM	 "blip-crop-bottom"
+#define GOD_PROPERTY_BLIP_CROP_LEFT	 "blip-crop-left"
+#define GOD_PROPERTY_BLIP_CROP_RIGHT	 "blip-crop-right"
+
+#define GOD_PROPERTY_LTXID                "ltxid"
+#define GOD_PROPERTY_DX_TEXT_LEFT         "dx-text-left"
+#define GOD_PROPERTY_DX_TEXT_TOP          "dx-text-top"
+#define GOD_PROPERTY_DX_TEXT_RIGHT        "dx-text-right"
+#define GOD_PROPERTY_DX_TEXT_BOTTOM       "dx-text-bottom"
+#define GOD_PROPERTY_FILL_RECT_LEFT       "fill-rect-left"
+#define GOD_PROPERTY_FILL_RECT_TOP        "fill-rect-top"
+#define GOD_PROPERTY_FILL_RECT_RIGHT      "fill-rect-right"
+#define GOD_PROPERTY_FILL_RECT_BOTTOM     "fill-rect-bottom"
+
+/* Ptrs */
+#define GOD_PROPERTY_ANCHOR		  "anchor"
+#define GOD_PROPERTY_TEXT		  "text"
+
+/* GArrays */
+#define GOD_PROPERTY_POLYGON_COORDS	  "polygon-coords"
+
+/* Expressions */
+#define GOD_PROPERTY_CHECKBOX_LINK	  "checkbox-link"
+#define GOD_PROPERTY_SCROLLBAR_LINK	  "scrollbar-link"
+
+/* PangoAttrList */
+#define GOD_PROPERTY_MARKUP	  	  "markup"
+
+typedef enum {
+	GOD_FILL_TYPE_SOLID,
+	GOD_FILL_TYPE_PATTERN,
+	GOD_FILL_TYPE_TEXTURE,
+	GOD_FILL_TYPE_PICTURE,
+	GOD_FILL_TYPE_SHADE,
+	GOD_FILL_TYPE_SHADE_CENTER,
+	GOD_FILL_TYPE_SHADE_SHAPE,
+	GOD_FILL_TYPE_SHADE_SCALE,
+	GOD_FILL_TYPE_SHADE_TITLE,
+	GOD_FILL_TYPE_SHADE_BACKGROUND
+} GodFillType;
+
+typedef const char *GodPropertyID;
+
+GType             god_property_table_get_type     (void);
+
+/* Base methods */
+void              god_property_table_set          (GodPropertyTable *attrs,
+						   GodPropertyID     id,
+						   GValue           *attr);
+GValue           *god_property_table_get          (GodPropertyTable *table,
+						   GodPropertyID     id);
+
+/* Set methods */
+void              god_property_table_set_flag     (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   gboolean          val);
+void              god_property_table_set_uint     (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   guint32           val);
+void              god_property_table_set_int      (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   gint32            val);
+void              god_property_table_set_length   (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   go_unit_t         val);
+void              god_property_table_set_pointer  (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   gpointer          val);
+void              god_property_table_set_array    (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   GArray           *array);
+void              god_property_table_set_markup   (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   PangoAttrList    *list);
+
+/* Get methods */
+gboolean          god_property_table_get_flag     (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   gboolean          default_value);
+guint32           god_property_table_get_uint     (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   guint32           default_value);
+gint32            god_property_table_get_int      (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   gint32            default_value);
+go_unit_t         god_property_table_get_length   (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   go_unit_t         default_value);
+gpointer          god_property_table_get_pointer  (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   gpointer          default_value);
+GArray           *god_property_table_get_array    (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   GArray           *default_value);
+PangoAttrList	 *god_property_table_get_markup	  (GodPropertyTable *table,
+						   GodPropertyID     id,
+						   PangoAttrList *default_value);
+
+/* Allocation */
+GodPropertyTable *god_property_table_new          (void);
+
+G_END_DECLS
+
+#endif /* GOD_PROPERTY_TABLE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,269 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-shape.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-shape.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodShapePrivate_ {
+	GodShape *parent;
+	GPtrArray *children; /* Of type GodShape. */
+	GodPropertyTable *prop_table;
+	GodAnchor *anchor;
+	GodTextModel *text_model;
+};
+
+static GPtrArray*
+g_ptr_array_insert_val (GPtrArray        *array,
+			guint             index,
+			gpointer          data) 
+{
+	g_ptr_array_add (array, data);
+	memmove (array->pdata + index + 1,
+		 array->pdata + index,
+		 array->len - index - 1);
+	g_ptr_array_index (array, index) = data;
+	return array;
+}
+
+static void
+ensure_prop_table (GodShape *shape)
+{
+	if (shape->priv->prop_table == NULL)
+		shape->priv->prop_table =
+			god_property_table_new();
+}
+
+static void
+ensure_text_model (GodShape *shape)
+{
+	if (shape->priv->text_model == NULL)
+		shape->priv->text_model =
+			god_text_model_new();
+}
+
+GodShape *
+god_shape_new (void)
+{
+	GodShape *shape;
+
+	shape = g_object_new (GOD_SHAPE_TYPE, NULL);
+
+	return shape;
+}
+
+void
+god_shape_append_child   (GodShape       *parent,
+				 GodShape       *child)
+{
+	god_shape_insert_child (parent, child, -1);
+}
+
+/* pos can be -1 to represent the end. */
+void
+god_shape_insert_child   (GodShape       *parent,
+				 GodShape       *child,
+				 int                   pos)
+{
+	g_return_if_fail (parent != NULL);
+	g_return_if_fail (child != NULL);
+	g_return_if_fail (child->priv->parent == NULL);
+
+	if (pos == -1)
+		pos = parent->priv->children->len;
+
+	g_ptr_array_insert_val (parent->priv->children, pos, child);
+	g_object_ref (child);
+	child->priv->parent = parent;
+}
+
+/* pos must be an actual position */
+void
+god_shape_delete_child   (GodShape       *parent,
+				 int                   pos)
+{
+	GodShape *child = g_ptr_array_remove_index (parent->priv->children, pos);
+	g_object_unref (child);
+}
+
+/* old_pos must be an actual position.  new_pos can be -1 to represent the end. */
+void
+god_shape_reorder_child  (GodShape       *parent,
+				 int                   old_pos,
+				 int                   new_pos)
+{
+	GodShape *child = g_ptr_array_remove_index (parent->priv->children, old_pos);
+	child->priv->parent = NULL;
+	god_shape_insert_child (parent, child, new_pos);
+	g_object_unref (child);
+}
+
+int
+god_shape_get_child_count  (GodShape       *parent)
+{
+	return parent->priv->children->len;
+}
+
+GodShape *
+god_shape_get_child  (GodShape       *parent,
+		      int pos)
+{
+	GodShape *child;
+
+	g_return_val_if_fail (pos < god_shape_get_child_count (parent), NULL);
+
+	child = g_ptr_array_index (parent->priv->children, pos);
+
+	g_return_val_if_fail (child, NULL);
+
+	g_object_ref (child);
+	return child;
+}
+
+GodPropertyTable *
+god_shape_get_prop_table  (GodShape *shape)
+{
+	ensure_prop_table (shape);
+	g_object_ref (shape->priv->prop_table);
+	return shape->priv->prop_table;
+}
+
+void
+god_shape_set_prop_table  (GodShape *shape,
+				  GodPropertyTable *prop_table)
+{
+	if (shape->priv->prop_table)
+		g_object_unref (shape->priv->prop_table);
+	shape->priv->prop_table = prop_table;
+	if (shape->priv->prop_table)
+		g_object_ref (shape->priv->prop_table);
+}
+
+GodAnchor *
+god_shape_get_anchor  (GodShape *shape)
+{
+	if (shape->priv->anchor)
+		g_object_ref (shape->priv->anchor);
+	return shape->priv->anchor;
+}
+
+void
+god_shape_set_anchor  (GodShape  *shape,
+		       GodAnchor *anchor)
+{
+	if (shape->priv->anchor)
+		g_object_unref (shape->priv->anchor);
+	shape->priv->anchor = anchor;
+	if (shape->priv->anchor)
+		g_object_ref (shape->priv->anchor);
+}
+
+GodTextModel *
+god_shape_get_text_model  (GodShape *shape)
+{
+	ensure_text_model (shape);
+	g_object_ref (shape->priv->text_model);
+	return shape->priv->text_model;
+}
+
+void
+god_shape_set_text_model  (GodShape *shape,
+			   GodTextModel *text_model)
+{
+	if (shape->priv->text_model)
+		g_object_unref (shape->priv->text_model);
+	shape->priv->text_model = text_model;
+	if (shape->priv->text_model)
+		g_object_ref (shape->priv->text_model);
+}
+
+const char *
+god_shape_get_text  (GodShape *shape)
+{
+	if (shape->priv->text_model)
+		return god_text_model_get_text (shape->priv->text_model);
+	else
+		return NULL;
+}
+
+void
+god_shape_set_text  (GodShape *shape,
+			    const char     *text)
+{
+	ensure_text_model (shape);
+	god_text_model_set_text (shape->priv->text_model, text);
+}
+
+static void
+god_shape_init (GObject *object)
+{
+	GodShape *shape = GOD_SHAPE (object);
+	shape->priv = g_new0 (GodShapePrivate, 1);
+	shape->priv->children = g_ptr_array_new ();
+	shape->priv->parent = NULL;
+}
+
+static void
+god_shape_dispose (GObject *object)
+{
+	GodShape *shape = GOD_SHAPE (object);
+	guint i;
+
+	if (shape->priv == NULL)
+		return;
+
+	for (i = 0; i < shape->priv->children->len; i++)
+		g_object_unref (g_ptr_array_index (shape->priv->children, i));
+	g_ptr_array_free (shape->priv->children, TRUE);
+	if (shape->priv->prop_table)
+		g_object_unref (shape->priv->prop_table);
+	if (shape->priv->anchor)
+		g_object_unref (shape->priv->anchor);
+	if (shape->priv->text_model)
+		g_object_unref (shape->priv->text_model);
+	g_free (shape->priv);
+	shape->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+god_shape_class_init (GodShapeClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class          = (GObjectClass *) class;
+
+	parent_class          = g_type_class_peek_parent (class);
+
+	object_class->dispose = god_shape_dispose;
+}
+
+GSF_CLASS (GodShape, god_shape,
+	   god_shape_class_init, god_shape_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-shape.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,80 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-shape.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+#ifndef GOD_SHAPE_H
+#define GOD_SHAPE_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-property-table.h>
+#include <goffice/drawing/god-anchor.h>
+#include <goffice/drawing/god-text-model.h>
+
+G_BEGIN_DECLS
+
+#define GOD_SHAPE_TYPE		(god_shape_get_type ())
+#define GOD_SHAPE(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_SHAPE_TYPE, GodShape))
+#define GOD_SHAPE_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOD_SHAPE_TYPE, GodShapeClass))
+#define IS_GOD_SHAPE(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_SHAPE_TYPE))
+#define IS_GOD_SHAPE_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_SHAPE_TYPE))
+
+typedef struct GodShapePrivate_ GodShapePrivate;
+
+typedef struct {
+	GObject parent;
+	GodShapePrivate *priv;
+} GodShape;
+
+typedef struct {
+	GObjectClass parent_class;
+} GodShapeClass;
+
+GType             god_shape_get_type         (void);
+GodShape         *god_shape_new              (void);
+
+/* Tree functions */
+void              god_shape_append_child     (GodShape         *parent,
+					      GodShape         *child);
+void              god_shape_insert_child     (GodShape         *parent,
+					      GodShape         *child,
+					      int               pos);
+void              god_shape_delete_child     (GodShape         *parent,
+					      int               pos);
+void              god_shape_reorder_child    (GodShape         *parent,
+					      int               old_pos,
+					      int               new_pos);
+int               god_shape_get_child_count  (GodShape         *parent);
+/* Return value is reffed. */
+GodShape         *god_shape_get_child        (GodShape         *parent,
+					      int               pos);
+
+/* Return value is reffed. */
+GodPropertyTable *god_shape_get_prop_table   (GodShape         *shape);
+void              god_shape_set_prop_table   (GodShape         *shape,
+					      GodPropertyTable *prop_table);
+
+/* Return value is reffed. */
+GodAnchor        *god_shape_get_anchor       (GodShape         *shape);
+void              god_shape_set_anchor       (GodShape         *shape,
+					      GodAnchor        *anchor);
+
+/* Return value is reffed. */
+GodTextModel     *god_shape_get_text_model   (GodShape         *shape);
+void              god_shape_set_text_model   (GodShape         *shape,
+					      GodTextModel     *text);
+
+const char       *god_shape_get_text         (GodShape         *shape);
+void              god_shape_set_text         (GodShape         *shape,
+					      const char       *text_value);
+
+G_END_DECLS
+
+#endif /* GOD_SHAPE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,330 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-text-model.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/drawing/god-text-model.h>
+#include <goffice/drawing/god-default-attributes.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+#define PARAGRAPH(i) (text && text->priv && text->priv->paragraphs ? ((GodTextModelParagraph *)(text->priv->paragraphs->data)) + (i) : (GodTextModelParagraph *) NULL)
+
+static GObjectClass *parent_class;
+
+struct GodTextModelPrivate {
+	GArray *paragraphs; /* Of type GodTextModelParagraph */
+	char *text_cache;
+};
+
+GodTextModel *
+god_text_model_new (void)
+{
+	GodTextModel *text;
+
+	text = g_object_new (GOD_TEXT_MODEL_TYPE, NULL);
+
+	return text;
+}
+
+const char *
+god_text_model_get_text  (GodTextModel *text)
+{
+	if (GOD_TEXT_MODEL_GET_CLASS (text)->get_text)
+		return GOD_TEXT_MODEL_GET_CLASS (text)->get_text (text);
+	else
+		return NULL;
+}
+
+void
+god_text_model_set_text  (GodTextModel *text,
+			  const char    *text_value)
+{
+	if (GOD_TEXT_MODEL_GET_CLASS (text)->set_text)
+		GOD_TEXT_MODEL_GET_CLASS (text)->set_text (text, text_value);
+}
+
+void
+god_text_model_set_paragraph_attributes (GodTextModel *text,
+					 int start,
+					 int end,
+					 GodParagraphAttributes *attributes)
+{
+	if (GOD_TEXT_MODEL_GET_CLASS (text)->set_paragraph_attributes)
+		GOD_TEXT_MODEL_GET_CLASS (text)->set_paragraph_attributes (text, start, end, attributes);
+}
+
+void
+god_text_model_set_indent (GodTextModel *text,
+			   int start,
+			   int end,
+			   int indent)
+{
+	if (GOD_TEXT_MODEL_GET_CLASS (text)->set_indent)
+		GOD_TEXT_MODEL_GET_CLASS (text)->set_indent (text, start, end, indent);
+}
+
+void
+god_text_model_set_pango_attributes (GodTextModel *text,
+				     int start,
+				     int end,
+				     GList *attributes)
+{
+	if (GOD_TEXT_MODEL_GET_CLASS (text)->set_pango_attributes)
+		GOD_TEXT_MODEL_GET_CLASS (text)->set_pango_attributes (text, start, end, attributes);
+}
+
+const GodDefaultAttributes *
+god_text_model_get_default_attributes (GodTextModel *text)
+{
+	if (GOD_TEXT_MODEL_GET_CLASS (text)->get_default_attributes)
+		return GOD_TEXT_MODEL_GET_CLASS (text)->get_default_attributes (text);
+	else
+		return NULL;
+}
+
+void
+god_text_model_paragraph_foreach  (GodTextModel *text,
+				   GodTextModelParagraphForeachCallback callback,
+				   gpointer user_data)
+{
+	if (GOD_TEXT_MODEL_GET_CLASS (text)->paragraph_foreach)
+		GOD_TEXT_MODEL_GET_CLASS (text)->paragraph_foreach (text, callback, user_data);
+}
+
+static void
+god_text_model_init (GObject *object)
+{
+	GodTextModel *text = GOD_TEXT_MODEL (object);
+	text->priv = g_new0 (GodTextModelPrivate, 1);
+}
+
+static void
+god_text_model_finalize (GObject *object)
+{
+	GodTextModel *text = GOD_TEXT_MODEL (object);
+
+	g_free (text->priv->text_cache);
+	g_free (text->priv);
+	text->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static const char *
+real_god_text_model_get_text (GodTextModel *text)
+{
+	guint i;
+	if (text->priv->text_cache == NULL && text->priv->paragraphs) {
+		GString *string;
+		string = g_string_new ("");
+		for (i = 0; i < text->priv->paragraphs->len; i++) {
+			g_string_append (string, PARAGRAPH(i)->text);
+			g_string_append_c (string, '\n');
+		}
+		if (string->len > 0)
+			g_string_truncate (string, string->len - 1);
+		text->priv->text_cache = string->str;
+		g_string_free (string, FALSE);
+	}
+	return text->priv->text_cache;
+}
+
+int
+god_text_model_get_length (GodTextModel *text)
+{
+	guint i;
+	if (text->priv->text_cache != NULL)
+		return strlen (text->priv->text_cache);
+	if (text->priv->paragraphs) {
+		int length = 0;
+		for (i = 0; i < text->priv->paragraphs->len; i++)
+			length += strlen (PARAGRAPH(i)->text) + 1;
+		if (length > 0)
+			length --;
+		return length;
+	}
+	return 0;
+}
+
+static void
+real_god_text_model_set_text (GodTextModel *text,
+			       const char    *text_value)
+{
+	gchar **paras;
+	guint i;
+
+	g_free (text->priv->text_cache);
+	text->priv->text_cache = NULL;
+	
+	if (text->priv->paragraphs) {
+		for (i = 0; i < text->priv->paragraphs->len; i++) {
+			g_free (PARAGRAPH(i)->text);
+			if (PARAGRAPH(i)->char_attributes)
+				g_object_unref (PARAGRAPH(i)->char_attributes);
+			if (PARAGRAPH(i)->para_attributes)
+				g_object_unref (PARAGRAPH(i)->para_attributes);
+		}
+		g_array_free (text->priv->paragraphs, TRUE);
+	}
+
+	text->priv->paragraphs = g_array_new (TRUE, TRUE, sizeof (GodTextModelParagraph));
+	
+	paras = g_strsplit (text_value, "\r", 0);
+	for (i = 0; paras[i]; i++) {
+		GodTextModelParagraph paragraph;
+		paragraph.text = paras[i];
+		paragraph.char_attributes = NULL;
+		paragraph.para_attributes = NULL;
+		g_array_append_vals (text->priv->paragraphs, &paragraph, 1);
+	}
+	g_free (paras);
+}
+
+static void
+real_god_text_model_set_paragraph_attributes (GodTextModel *text,
+					      int start,
+					      int end,
+					      GodParagraphAttributes *attributes)
+{
+	guint i;
+	int count = 0;
+	if (text->priv->paragraphs) {
+		for (i = 0; i < text->priv->paragraphs->len; i++) {
+			int length = strlen (PARAGRAPH(i)->text);
+			if (count >= end)
+				return;
+			if (count + length + 1 > start) {
+				if (PARAGRAPH(i)->para_attributes)
+					g_object_unref (PARAGRAPH(i)->para_attributes);
+				PARAGRAPH(i)->para_attributes = attributes;
+				if (PARAGRAPH(i)->para_attributes)
+					g_object_ref (PARAGRAPH(i)->para_attributes);
+			}
+			count += length + 1;
+		}
+	}
+}
+
+static void
+real_god_text_model_set_pango_attributes (GodTextModel *text,
+					  int start,
+					  int end,
+					  GList *attributes)
+{
+	guint i;
+	int count = 0;
+	if (start == end)
+	    return;
+	if (text->priv->paragraphs) {
+		for (i = 0; i < text->priv->paragraphs->len; i++) {
+			int length = strlen (PARAGRAPH(i)->text);
+			if (length == 0)
+				continue;
+			if (count >= end)
+				return;
+			if (count + length >= start) {
+				int thisstart = MAX (start, count) - count;
+				int thisend = MIN (end, count + length) - count;
+				GList *iterator;
+
+				if (thisstart == thisend)
+					continue;
+
+				if (!PARAGRAPH(i)->char_attributes)
+					PARAGRAPH(i)->char_attributes = pango_attr_list_new ();
+
+				for (iterator = attributes; iterator; iterator = iterator->next) {
+					PangoAttribute *new_attr = pango_attribute_copy (iterator->data);
+					new_attr->start_index = thisstart;
+					new_attr->end_index = thisend;
+					pango_attr_list_insert (PARAGRAPH(i)->char_attributes, new_attr);
+				}
+			}
+			count += length + 1;
+		}
+	}
+}
+
+static void
+real_god_text_model_set_indent (GodTextModel *text,
+				int start,
+				int end,
+				int indent)
+{
+	guint i;
+	int count = 0;
+	if (text->priv->paragraphs) {
+		for (i = 0; i < text->priv->paragraphs->len; i++) {
+			int length = strlen (PARAGRAPH(i)->text);
+			if (count >= end)
+				return;
+			if (count + length + 1 > start) {
+				PARAGRAPH(i)->indent = indent;
+			}
+			count += length + 1;
+		}
+	}
+}
+
+static void
+real_god_text_model_paragraph_foreach  (GodTextModel *text,
+					GodTextModelParagraphForeachCallback callback,
+					gpointer user_data)
+{
+	guint i;
+
+	if (callback == NULL)
+		return;
+	if (text->priv->paragraphs) {
+		for (i = 0; i < text->priv->paragraphs->len; i++) {
+			callback (text, PARAGRAPH(i), user_data);
+		}
+	}
+}
+
+static void
+god_text_model_class_init (GodTextModelClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class                    = (GObjectClass *) class;
+
+	parent_class                    = g_type_class_peek_parent (class);
+
+	object_class->finalize          = god_text_model_finalize;
+
+	class->get_text                 = real_god_text_model_get_text;
+	class->set_text                 = real_god_text_model_set_text;
+
+	class->set_paragraph_attributes = real_god_text_model_set_paragraph_attributes;
+	class->set_pango_attributes     = real_god_text_model_set_pango_attributes;
+	class->set_indent               = real_god_text_model_set_indent;
+	class->get_default_attributes   = NULL;
+	class->paragraph_foreach        = real_god_text_model_paragraph_foreach;
+}
+
+GSF_CLASS (GodTextModel, god_text_model,
+	   god_text_model_class_init, god_text_model_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/drawing/god-text-model.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,98 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-text-model.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GOD_TEXT_MODEL_H
+#define GOD_TEXT_MODEL_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-paragraph-attributes.h>
+#include <goffice/drawing/god-default-attributes.h>
+#include <pango/pango-attributes.h>
+
+G_BEGIN_DECLS
+
+#define GOD_TEXT_MODEL_TYPE		(god_text_model_get_type ())
+#define GOD_TEXT_MODEL(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_TEXT_MODEL_TYPE, GodTextModel))
+#define GOD_TEXT_MODEL_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOD_TEXT_MODEL_TYPE, GodTextModelClass))
+#define GOD_TEXT_MODEL_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GOD_TEXT_MODEL_TYPE, GodTextModelClass))
+#define IS_GOD_TEXT_MODEL(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_TEXT_MODEL_TYPE))
+#define IS_GOD_TEXT_MODEL_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_TEXT_MODEL_TYPE))
+
+typedef struct GodTextModelPrivate GodTextModelPrivate;
+typedef struct GodTextModel GodTextModel;
+typedef struct GodTextModelClass GodTextModelClass;
+
+typedef struct {
+	char *text;
+	PangoAttrList *char_attributes;
+	GodParagraphAttributes *para_attributes;
+	int indent;
+} GodTextModelParagraph;
+
+typedef void (*GodTextModelParagraphForeachCallback) (GodTextModel *text,
+						      GodTextModelParagraph *paragraph,
+						      gpointer user_data);
+
+struct GodTextModel {
+	GObject parent;
+	GodTextModelPrivate *priv;
+};
+
+struct GodTextModelClass {
+	GObjectClass parent_class;
+
+	const char    *(*get_text)  (GodTextModel *text);
+	void           (*set_text)  (GodTextModel *text, const char    *text_value);
+	void           (*set_paragraph_attributes) (GodTextModel *text, int start, int end, GodParagraphAttributes *attributes);
+	void           (*set_pango_attributes) (GodTextModel *text, int start, int end, GList *attributes);
+	void           (*set_indent) (GodTextModel *text, int start, int end, int indent);
+	const GodDefaultAttributes *           (*get_default_attributes) (GodTextModel *text);
+	void           (*paragraph_foreach) (GodTextModel *text, GodTextModelParagraphForeachCallback callback, gpointer user_data);
+};
+
+GType                       god_text_model_get_type                  (void);
+
+/* Set routines*/
+GodTextModel               *god_text_model_new                       (void);
+void                        god_text_model_set_text                  (GodTextModel                         *text,
+								      const char                           *text_value);
+#if 0
+void                       *god_text_model_append_paragraph          (GodTextModel                         *text,
+								      PangoLayout                          *layout,
+								      GodParagraphAttributes               *para_attr);
+#endif
+void                        god_text_model_set_paragraph_attributes  (GodTextModel                         *text,
+								      int                                   start,
+								      int                                   end,
+								      GodParagraphAttributes               *para_attr);
+void                        god_text_model_set_pango_attributes      (GodTextModel                         *text,
+								      int                                   start,
+								      int                                   end,
+								      GList                                *char_attrs);
+void                        god_text_model_set_indent                (GodTextModel                         *text,
+								      int                                   start,
+								      int                                   end,
+								      int                                   indent);
+const GodDefaultAttributes *god_text_model_get_default_attributes    (GodTextModel                         *text);
+
+/* Get routines */
+const char                 *god_text_model_get_text                  (GodTextModel                         *text);
+int                         god_text_model_get_length                (GodTextModel                         *text);
+void                        god_text_model_paragraph_foreach         (GodTextModel                         *text,
+								      GodTextModelParagraphForeachCallback  callback,
+								      gpointer                              user_data);
+
+
+G_END_DECLS
+
+#endif /* GOD_TEXT_MODEL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,195 @@
+#include "glib24_26-compat.h"
+
+/**
+ * g_date_get_iso8601_week_of_year:
+ * @date: a valid #GDate
+ *
+ * Returns the week of the year, where weeks are interpreted according
+ * to ISO 8601. 
+ * 
+ * Returns: ISO 8601 week number of the year.
+ *
+ * Since: 2.6
+ **/
+guint
+g_date_get_iso8601_week_of_year (const GDate *d)
+{
+  guint j, d4, L, d1, w;
+
+  g_return_val_if_fail (g_date_valid (d), 0);
+  
+  if (!d->julian)
+    g_date_update_julian (d);
+  g_return_val_if_fail (d->julian, 0);
+
+  /* Formula taken from the Calendar FAQ; the formula was for the
+   * Julian Period which starts on 1 January 4713 BC, so we add
+   * 1,721,425 to the number of days before doing the formula. 
+   */
+  j  = d->julian_days + 1721425;
+  d4 = (j + 31741 - (j % 7)) % 146097 % 36524 % 1461;
+  L  = d4 / 1460;
+  d1 = ((d4 - L) % 365) + L;
+  w  = d1 / 7 + 1;
+
+  return w;
+}
+
+/** ------------------------------------------------------------ **/
+
+/* The following is (partly) taken from the gettext package.
+   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.  */
+
+static const gchar *
+guess_category_value (const gchar *category_name)
+{
+  const gchar *retval;
+
+  /* The highest priority value is the `LANGUAGE' environment
+     variable.  This is a GNU extension.  */
+  retval = g_getenv ("LANGUAGE");
+  if ((retval != NULL) && (retval[0] != '\0'))
+    return retval;
+
+  /* `LANGUAGE' is not set.  So we have to proceed with the POSIX
+     methods of looking to `LC_ALL', `LC_xxx', and `LANG'.  On some
+     systems this can be done by the `setlocale' function itself.  */
+
+  /* Setting of LC_ALL overwrites all other.  */
+  retval = g_getenv ("LC_ALL");  
+  if ((retval != NULL) && (retval[0] != '\0'))
+    return retval;
+
+  /* Next comes the name of the desired category.  */
+  retval = g_getenv (category_name);
+  if ((retval != NULL) && (retval[0] != '\0'))
+    return retval;
+
+  /* Last possibility is the LANG environment variable.  */
+  retval = g_getenv ("LANG");
+  if ((retval != NULL) && (retval[0] != '\0'))
+    return retval;
+
+#ifdef G_PLATFORM_WIN32
+  /* g_win32_getlocale() first checks for LC_ALL, LC_MESSAGES and
+   * LANG, which we already did above. Oh well. The main point of
+   * calling g_win32_getlocale() is to get the thread's locale as used
+   * by Windows and the Microsoft C runtime (in the "English_United
+   * States" format) translated into the Unixish format.
+   */
+  retval = g_win32_getlocale ();
+  if ((retval != NULL) && (retval[0] != '\0'))
+    return retval;
+#endif  
+
+  return NULL;
+}
+
+typedef struct _GLanguageNamesCache GLanguageNamesCache;
+
+struct _GLanguageNamesCache {
+  gchar *languages;
+  gchar **language_names;
+};
+
+static void
+language_names_cache_free (gpointer data)
+{
+  GLanguageNamesCache *cache = data;
+  g_free (cache->languages);
+  g_strfreev (cache->language_names);
+  g_free (cache);
+}
+
+/**
+ * g_get_language_names:
+ * 
+ * Computes a list of applicable locale names, which can be used to 
+ * e.g. construct locale-dependent filenames or search paths. The returned 
+ * list is sorted from most desirable to least desirable and always contains 
+ * the default locale "C".
+ *
+ * For example, if LANGUAGE=de:en_US, then the returned list is
+ * "de", "en_US", "en", "C".
+ *
+ * This function consults the environment variables <envar>LANGUAGE</envar>, 
+ * <envar>LC_ALL</envar>, <envar>LC_MESSAGES</envar> and <envar>LANG</envar> 
+ * to find the list of locales specified by the user.
+ * 
+ * Return value: a %NULL-terminated array of strings owned by GLib 
+ *    that must not be modified or freed.
+ *
+ * Since: 2.6
+ **/
+G_CONST_RETURN gchar * G_CONST_RETURN * 
+g_get_language_names (void)
+{
+  static GStaticPrivate cache_private = G_STATIC_PRIVATE_INIT;
+  GLanguageNamesCache *cache = g_static_private_get (&cache_private);
+  const gchar *value;
+
+  if (!cache)
+    {
+      cache = g_new0 (GLanguageNamesCache, 1);
+      g_static_private_set (&cache_private, cache, language_names_cache_free);
+    }
+
+  value = guess_category_value ("LC_MESSAGES");
+  if (!value)
+    value = "C";
+
+  if (!(cache->languages && strcmp (cache->languages, value) == 0))
+    {
+      gchar **languages;
+      gchar **alist, **a;
+      GSList *list, *l;
+      gint i;
+
+      g_free (cache->languages);
+      g_strfreev (cache->language_names);
+      cache->languages = g_strdup (value);
+
+      alist = g_strsplit (value, ":", 0);
+      list = NULL;
+      for (a = alist; *a; a++)
+	{
+	  gchar *b = unalias_lang (*a);
+	  list = g_slist_concat (list, _g_compute_locale_variants (b));
+	}
+      g_strfreev (alist);
+      list = g_slist_append (list, g_strdup ("C"));
+
+      cache->language_names = languages = g_new (gchar *, g_slist_length (list) + 1);
+      for (l = list, i = 0; l; l = l->next, i++)
+	languages[i] = l->data;
+      languages[i] = NULL;
+
+      g_slist_free (list);
+    }
+
+  return (G_CONST_RETURN gchar * G_CONST_RETURN *) cache->language_names;
+}
+
+/**
+ * g_strv_length:
+ * @str_array: a %NULL-terminated array of strings.
+ * 
+ * Returns the length of the given %NULL-terminated 
+ * string array @str_array.
+ * 
+ * Return value: length of @str_array.
+ *
+ * Since: 2.6
+ **/
+guint
+g_strv_length (gchar **str_array)
+{
+  guint i = 0;
+
+  g_return_val_if_fail (str_array != NULL, 0);
+
+  while (str_array[i])
+    ++i;
+
+  return i;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/glib24_26-compat.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,32 @@
+/* from glib-2.6[.6] gdate.h */
+guint        g_date_get_iso8601_week_of_year (const GDate *date);
+
+/* from glib-2.6[.6] gutils.h */
+G_CONST_RETURN gchar* G_CONST_RETURN * g_get_language_names (void);
+
+#ifdef G_OS_WIN32
+
+/* On Win32, the canonical directory separator is the backslash, and
+ * the search path separator is the semicolon. Note that also the
+ * (forward) slash works as directory separator.
+ */
+#define G_DIR_SEPARATOR '\\'
+#define G_DIR_SEPARATOR_S "\\"
+#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
+#define G_SEARCHPATH_SEPARATOR ';'
+#define G_SEARCHPATH_SEPARATOR_S ";"
+
+#else  /* !G_OS_WIN32 */
+
+/* Unix */
+
+#define G_DIR_SEPARATOR '/'
+#define G_DIR_SEPARATOR_S "/"
+#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
+#define G_SEARCHPATH_SEPARATOR ':'
+#define G_SEARCHPATH_SEPARATOR_S ":"
+
+#endif /* !G_OS_WIN32 */
+
+/* from glib-2.6[.6] gstrfuncs.h */
+guint                 g_strv_length    (gchar       **str_array);

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-config.h.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-config.h.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-config.h.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,220 @@
+/* goffice/goffice-config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Conditionally include >2.4 pieces we use. */
+#undef HAVE_GLIB26
+#undef HAVE_GTK26
+
+/* Conditionally work around exposed-in-1.8-functionality. */
+#undef HAVE_PANGO18
+
+/* always defined to indicate that i18n is enabled */
+#undef ENABLE_NLS
+
+/* The package name, for gettext */
+#undef GETTEXT_PACKAGE
+
+/* Define if G Office supplies acosh. */
+#undef GOFFICE_SUPPLIED_ACOSH
+
+/* Define if G Office supplies asinh. */
+#undef GOFFICE_SUPPLIED_ASINH
+
+/* Define if G Office supplies atanh. */
+#undef GOFFICE_SUPPLIED_ATANH
+
+/* Define if G Office supplies expm1. */
+#undef GOFFICE_SUPPLIED_EXPM1
+
+/* Define if G Office supplies frexpl. */
+#undef GOFFICE_SUPPLIED_FREXPL
+
+/* Define if G Office supplies ldexpl. */
+#undef GOFFICE_SUPPLIED_LDEXPL
+
+/* Define if G Office supplies log1p. */
+#undef GOFFICE_SUPPLIED_LOG1P
+
+/* Define if G Office supplies modfl. */
+#undef GOFFICE_SUPPLIED_MODFL
+
+/* Define if G Office supplies strtold. */
+#undef GOFFICE_SUPPLIED_STRTOLD
+
+/* The version number of this release, possibly with additional suffix */
+#undef GOFFICE_VERSION
+
+/* Define if G Office supports long double. */
+#undef GOFFICE_WITH_LONG_DOUBLE
+
+/* The Epoch of this release */
+#undef GO_VERSION_EPOCH
+
+/* Extra, possibly empty tag for this release */
+#undef GO_VERSION_EXTRA
+
+/* The Major version number of this release */
+#undef GO_VERSION_MAJOR
+
+/* The Minor version number of this release */
+#undef GO_VERSION_MINOR
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#undef HAVE_BIND_TEXTDOMAIN_CODESET
+
+/* Define to 1 if you have the `dcgettext' function. */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the `decimal_to_quadruple' function. */
+#undef HAVE_DECIMAL_TO_QUADRUPLE
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the `drand48' function. */
+#undef HAVE_DRAND48
+
+/* Define if the finite function is available */
+#undef HAVE_FINITE
+
+/* Define to 1 if you have the <floatingpoint.h> header file. */
+#undef HAVE_FLOATINGPOINT_H
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define if the gettimeofday function is available */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <ieee754.h> header file. */
+#undef HAVE_IEEE754_H
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+#undef HAVE_IEEEFP_H
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if the isfinite() macro is available */
+#undef HAVE_ISFINITE
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#undef HAVE_LANGINFO_H
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the `intl' library (-lintl). */
+#undef HAVE_LIBINTL
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define if the log function is available */
+#undef HAVE_LOG
+
+/* Define to 1 if long double works and has more range or precision than
+   double. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkdtemp' function. */
+#undef HAVE_MKDTEMP
+
+/* Define to 1 if you have the `random' function. */
+#undef HAVE_RANDOM
+
+/* Define if libXrender is available. */
+#undef HAVE_RENDER
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `string_to_decimal' function. */
+#undef HAVE_STRING_TO_DECIMAL
+
+/* Define to 1 if you have the `strtold' function. */
+#undef HAVE_STRTOLD
+
+/* Define to 1 if you have the <sunmath.h> header file. */
+#undef HAVE_SUNMATH_H
+
+/* Define to 1 if you have the `sysconf' function. */
+#undef HAVE_SYSCONF
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the `times' function. */
+#undef HAVE_TIMES
+
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
+
+/* Define if goffice is build with cairo */
+#undef WITH_CAIRO
+
+/* Define if GNOME extensions are available */
+#undef WITH_GNOME
+
+/* Define if UI is built */
+#undef WITH_GTK
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+   `char[]'. */
+#undef YYTEXT_POINTER
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Don't include goffice-features.h, it's a subset of goffice-config.h. */
+#define GOFFICE_FEATURES_H

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-features.h.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-features.h.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-features.h.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,51 @@
+/*
+ * goffice-features.h.in: 
+ *
+ * Copyright (C) 2005 Morten Welinder (terra at gnome.org)
+ */
+#ifndef GOFFICE_FEATURES_H
+#define GOFFICE_FEATURES_H
+
+/* Define if G Office supports long double. */
+#undef GOFFICE_WITH_LONG_DOUBLE
+
+/* Define if G Office supplies acosh. */
+#undef GOFFICE_SUPPLIED_ACOSH
+
+/* Define if G Office supplies asinh. */
+#undef GOFFICE_SUPPLIED_ASINH
+
+/* Define if G Office supplies atanh. */
+#undef GOFFICE_SUPPLIED_ATANH
+
+/* Define if G Office supplies expm1. */
+#undef GOFFICE_SUPPLIED_EXPM1
+
+/* Define if G Office supplies frexpl. */
+#undef GOFFICE_SUPPLIED_FREXPL
+
+/* Define if G Office supplies ldexpl. */
+#undef GOFFICE_SUPPLIED_LDEXPL
+
+/* Define if G Office supplies modfl. */
+#undef GOFFICE_SUPPLIED_MODFL
+
+/* Define if G Office supplies strtold. */
+#undef GOFFICE_SUPPLIED_STRTOLD
+
+/* The version number of this release, possibly with additional suffix */
+#undef GOFFICE_VERSION
+
+/* The Epoch of this release */
+#undef GO_VERSION_EPOCH
+
+/* The Major version number of this release */
+#undef GO_VERSION_MAJOR
+
+/* The Minor version number of this release */
+#undef GO_VERSION_MINOR
+
+/* Extra, possibly empty tag for this release */
+#undef GO_VERSION_EXTRA
+
+#endif /* GOFFICE_FEATURES_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-priv.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-priv.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice-priv.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice-priv.h : 
+ *
+ * Copyright (C) 2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOFFICE_PRIV_H
+#define GOFFICE_PRIV_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+gchar const *go_sys_data_dir (void);
+gchar const *go_sys_icon_dir (void);
+gchar const *go_sys_lib_dir (void);
+
+G_END_DECLS
+
+#endif /* GOFFICE_PRIV_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,138 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice.c : a bogus little init file to pull all the parts together
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/goffice.h>
+#include <goffice/goffice-priv.h>
+#include <goffice/graph/gog-series.h>
+#include <goffice/graph/gog-plot.h>
+#include <goffice/graph/gog-plot-engine.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-legend.h>
+#include <goffice/graph/gog-label.h>
+#include <goffice/graph/gog-grid.h>
+#include <goffice/graph/gog-grid-line.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-error-bar.h>
+#include <goffice/graph/gog-series-lines.h>
+#include <goffice/data/go-data-simple.h>
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-font.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/app/go-plugin-service.h>
+#include <gsf/gsf-utils.h>
+
+#include "goffice-paths.h"
+
+#include <libintl.h>
+
+int goffice_graph_debug_level = 0;
+
+static char const *libgoffice_data_dir   = GOFFICE_DATADIR;
+static char const *libgoffice_icon_dir   = GOFFICE_ICONDIR;
+static char const *libgoffice_locale_dir = GOFFICE_LOCALEDIR;
+static char const *libgoffice_lib_dir    = GOFFICE_LIBDIR;
+
+gchar const *
+go_sys_data_dir ()
+{
+	return libgoffice_data_dir;
+}
+
+gchar const *
+go_sys_icon_dir ()
+{
+	return libgoffice_icon_dir;
+}
+
+gchar const *
+go_sys_lib_dir ()
+{
+	return libgoffice_lib_dir;
+}
+
+void
+libgoffice_init (void)
+{
+	static gboolean initialized = FALSE;
+
+	if (initialized)
+		return;
+
+#ifdef G_OS_WIN32
+{
+	gchar *dir = g_win32_get_package_installation_directory (NULL, "libgoffice-1-0.dll");
+	libgoffice_data_dir = g_build_filename (dir,
+		"share", "goffice", GOFFICE_VERSION, NULL);
+	libgoffice_icon_dir = g_build_filename (dir,
+		"share", "pixmaps", "goffice", NULL);
+	libgoffice_locale_dir = g_build_filename (dir,
+		"share", "locale", NULL);
+	libgoffice_lib_dir = g_build_filename (dir,
+		"lib", "goffice", GOFFICE_VERSION, NULL);
+	g_free (dir);
+}
+#endif
+
+	bindtextdomain ("libgoffice", libgoffice_locale_dir);
+	go_fonts_init ();
+	go_math_init ();
+	gsf_init ();
+
+	/* keep trigger happy linkers from leaving things out */
+	plugin_services_init ();
+	gog_plugin_services_init ();
+	(void) GOG_GRAPH_TYPE;
+	(void) GOG_CHART_TYPE;
+	(void) GOG_PLOT_TYPE;
+	(void) GOG_SERIES_TYPE;
+	(void) GOG_SERIES_ELEMENT_TYPE;
+	(void) GOG_LEGEND_TYPE;
+	(void) GOG_AXIS_TYPE;
+	(void) GOG_AXIS_LINE_TYPE;
+	(void) GOG_LABEL_TYPE;
+	(void) GOG_GRID_TYPE;
+	(void) GOG_GRID_LINE_TYPE;
+	(void) GOG_ERROR_BAR_TYPE;
+	(void) GOG_REG_EQN_TYPE;
+	(void) GOG_SERIES_LINES_TYPE;
+	(void) GO_DATA_SCALAR_VAL_TYPE;
+	(void) GO_DATA_SCALAR_STR_TYPE;
+	gog_themes_init	();
+	number_format_init ();
+}
+
+void
+libgoffice_shutdown (void)
+{
+	gog_themes_shutdown ();
+	go_fonts_shutdown ();
+	gog_plugin_services_shutdown ();
+	number_format_shutdown ();
+#ifdef G_OS_WIN32
+	g_free (libgoffice_data_dir);
+	g_free (libgoffice_icon_dir);
+	g_free (libgoffice_locale_dir);
+	g_free (libgoffice_lib_dir);
+#endif
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/goffice.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,33 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice.h : 
+ *
+ * Copyright (C) 2003-2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOFFICE_H
+#define GOFFICE_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+void libgoffice_init     (void);
+void libgoffice_shutdown (void);
+
+G_END_DECLS
+
+#endif /* GOFFICE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,95 @@
+noinst_LTLIBRARIES = libgoffice-graph.la
+
+libgoffice_graph_la_SOURCES = \
+	gog-object.c			\
+	gog-object-xml.c		\
+	gog-styled-object.c		\
+	gog-outlined-object.c		\
+	gog-view.c			\
+	\
+	gog-graph.c			\
+	gog-chart.c			\
+	\
+	gog-axis.c			\
+	gog-axis-line.c			\
+	gog-legend.c			\
+	gog-label.c			\
+	gog-grid.c			\
+	gog-grid-line.c			\
+	\
+	gog-style.c			\
+	gog-theme.c			\
+	\
+	gog-plot.c			\
+	gog-plot-engine.c		\
+	gog-series.c			\
+	gog-error-bar.c			\
+	gog-reg-curve.c			\
+	gog-series-lines.c		\
+	gog-data-allocator.c		\
+	gog-data-set.c			\
+	\
+	gog-guru.c			\
+	gog-renderer.c			\
+	gog-renderer-pixbuf.c		\
+	gog-control-foocanvas.c		\
+	gog-renderer-gnome-print.c	\
+	gog-renderer-svg.c
+
+libgoffice_graph_ladir = $(goffice_include_dir)/graph
+libgoffice_graph_la_HEADERS = \
+	goffice-graph.h			\
+	gog-object.h			\
+	gog-object-xml.h		\
+	gog-styled-object.h		\
+	gog-outlined-object.h		\
+	gog-view.h			\
+	gog-graph.h			\
+	gog-graph-impl.h		\
+	gog-chart.h			\
+	gog-chart-impl.h		\
+	gog-axis.h			\
+	gog-axis-line.h			\
+	gog-axis-line-impl.h		\
+	gog-legend.h			\
+	gog-label.h			\
+	gog-grid.h			\
+	gog-grid-line.h			\
+	gog-style.h			\
+	gog-theme.h			\
+	gog-plot.h			\
+	gog-plot-impl.h			\
+	gog-plot-engine.h		\
+	gog-series.h			\
+	gog-series-impl.h		\
+	gog-error-bar.h			\
+	gog-reg-curve.h			\
+	gog-series-lines.h		\
+	gog-data-allocator.h		\
+	gog-data-set.h			\
+	gog-guru.h			\
+	gog-renderer.h			\
+	gog-renderer-impl.h		\
+	gog-renderer-pixbuf.h		\
+	gog-control-foocanvas.h		\
+	gog-renderer-gnome-print.h	\
+	gog-renderer-svg.h
+
+if WITH_CAIRO
+  libgoffice_graph_la_SOURCES += gog-renderer-cairo.c	
+  libgoffice_graph_la_HEADERS += gog-renderer-cairo.h
+endif
+
+gladedir = $(goffice_datadir)/glade
+dist_glade_DATA = \
+	gog-guru.glade			\
+	gog-guru-type-selector.glade	\
+	gog-object-prefs.glade		\
+	gog-chart-prefs.glade		\
+	gog-style-prefs.glade		\
+	gog-axis-prefs.glade		\
+	gog-error-bar-prefs.glade	\
+	gog-reg-curve-prefs.glade	\
+	gog-reg-eqn-prefs.glade
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,715 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ at WITH_CAIRO_TRUE@am__append_1 = gog-renderer-cairo.c	
+ at WITH_CAIRO_TRUE@am__append_2 = gog-renderer-cairo.h
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LTLIBRARIES = libgoffice-graph.la
+
+libgoffice_graph_la_SOURCES = \
+	gog-object.c			\
+	gog-object-xml.c		\
+	gog-styled-object.c		\
+	gog-outlined-object.c		\
+	gog-view.c			\
+	\
+	gog-graph.c			\
+	gog-chart.c			\
+	\
+	gog-axis.c			\
+	gog-axis-line.c			\
+	gog-legend.c			\
+	gog-label.c			\
+	gog-grid.c			\
+	gog-grid-line.c			\
+	\
+	gog-style.c			\
+	gog-theme.c			\
+	\
+	gog-plot.c			\
+	gog-plot-engine.c		\
+	gog-series.c			\
+	gog-error-bar.c			\
+	gog-reg-curve.c			\
+	gog-series-lines.c		\
+	gog-data-allocator.c		\
+	gog-data-set.c			\
+	\
+	gog-guru.c			\
+	gog-renderer.c			\
+	gog-renderer-pixbuf.c		\
+	gog-control-foocanvas.c		\
+	gog-renderer-gnome-print.c	\
+	gog-renderer-svg.c\
+$(am__append_1)
+
+libgoffice_graph_ladir = $(goffice_include_dir)/graph
+libgoffice_graph_la_HEADERS = \
+	goffice-graph.h			\
+	gog-object.h			\
+	gog-object-xml.h		\
+	gog-styled-object.h		\
+	gog-outlined-object.h		\
+	gog-view.h			\
+	gog-graph.h			\
+	gog-graph-impl.h		\
+	gog-chart.h			\
+	gog-chart-impl.h		\
+	gog-axis.h			\
+	gog-axis-line.h			\
+	gog-axis-line-impl.h		\
+	gog-legend.h			\
+	gog-label.h			\
+	gog-grid.h			\
+	gog-grid-line.h			\
+	gog-style.h			\
+	gog-theme.h			\
+	gog-plot.h			\
+	gog-plot-impl.h			\
+	gog-plot-engine.h		\
+	gog-series.h			\
+	gog-series-impl.h		\
+	gog-error-bar.h			\
+	gog-reg-curve.h			\
+	gog-series-lines.h		\
+	gog-data-allocator.h		\
+	gog-data-set.h			\
+	gog-guru.h			\
+	gog-renderer.h			\
+	gog-renderer-impl.h		\
+	gog-renderer-pixbuf.h		\
+	gog-control-foocanvas.h		\
+	gog-renderer-gnome-print.h	\
+	gog-renderer-svg.h\
+$(am__append_2)
+
+gladedir = $(goffice_datadir)/glade
+dist_glade_DATA = \
+	gog-guru.glade			\
+	gog-guru-type-selector.glade	\
+	gog-object-prefs.glade		\
+	gog-chart-prefs.glade		\
+	gog-style-prefs.glade		\
+	gog-axis-prefs.glade		\
+	gog-error-bar-prefs.glade	\
+	gog-reg-curve-prefs.glade	\
+	gog-reg-eqn-prefs.glade
+
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice/graph
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libgoffice_graph_la_LDFLAGS =
+libgoffice_graph_la_LIBADD =
+am__libgoffice_graph_la_SOURCES_DIST = gog-object.c gog-object-xml.c \
+	gog-styled-object.c gog-outlined-object.c gog-view.c \
+	gog-graph.c gog-chart.c gog-axis.c gog-axis-line.c gog-legend.c \
+	gog-label.c gog-grid.c gog-grid-line.c gog-style.c gog-theme.c \
+	gog-plot.c gog-plot-engine.c gog-series.c gog-error-bar.c \
+	gog-reg-curve.c gog-series-lines.c gog-data-allocator.c \
+	gog-data-set.c gog-guru.c gog-renderer.c gog-renderer-pixbuf.c \
+	gog-control-foocanvas.c gog-renderer-gnome-print.c \
+	gog-renderer-svg.c gog-renderer-cairo.c
+ at WITH_CAIRO_TRUE@am__objects_1 = gog-renderer-cairo.lo
+am_libgoffice_graph_la_OBJECTS = gog-object.lo gog-object-xml.lo \
+	gog-styled-object.lo gog-outlined-object.lo gog-view.lo \
+	gog-graph.lo gog-chart.lo gog-axis.lo gog-axis-line.lo \
+	gog-legend.lo gog-label.lo gog-grid.lo gog-grid-line.lo \
+	gog-style.lo gog-theme.lo gog-plot.lo gog-plot-engine.lo \
+	gog-series.lo gog-error-bar.lo gog-reg-curve.lo \
+	gog-series-lines.lo gog-data-allocator.lo gog-data-set.lo \
+	gog-guru.lo gog-renderer.lo gog-renderer-pixbuf.lo \
+	gog-control-foocanvas.lo gog-renderer-gnome-print.lo \
+	gog-renderer-svg.lo $(am__objects_1)
+libgoffice_graph_la_OBJECTS = $(am_libgoffice_graph_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-axis-line.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-axis.Plo ./$(DEPDIR)/gog-chart.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-control-foocanvas.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-data-allocator.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-data-set.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-error-bar.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-graph.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-grid-line.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-grid.Plo ./$(DEPDIR)/gog-guru.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-label.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-legend.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-object-xml.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-object.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-outlined-object.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-plot-engine.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-plot.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-reg-curve.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-renderer-cairo.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-renderer-gnome-print.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-renderer-pixbuf.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-renderer-svg.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-renderer.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-series-lines.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-series.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-style.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-styled-object.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-theme.Plo ./$(DEPDIR)/gog-view.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(am__libgoffice_graph_la_SOURCES_DIST)
+DATA = $(dist_glade_DATA)
+
+HEADERS = $(libgoffice_graph_la_HEADERS)
+
+DIST_COMMON = README $(dist_glade_DATA) $(libgoffice_graph_la_HEADERS) \
+	$(srcdir)/Makefile.in $(top_srcdir)/goffice.mk Makefile.am
+SOURCES = $(libgoffice_graph_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/graph/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-graph.la: $(libgoffice_graph_la_OBJECTS) $(libgoffice_graph_la_DEPENDENCIES) 
+	$(LINK)  $(libgoffice_graph_la_LDFLAGS) $(libgoffice_graph_la_OBJECTS) $(libgoffice_graph_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-axis-line.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-axis.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-chart.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-control-foocanvas.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-data-allocator.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-data-set.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-error-bar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-graph.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-grid-line.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-grid.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-guru.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-label.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-legend.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-object-xml.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-object.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-outlined-object.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-plot-engine.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-plot.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-reg-curve.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-renderer-cairo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-renderer-gnome-print.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-renderer-pixbuf.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-renderer-svg.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-renderer.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-series-lines.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-series.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-style.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-styled-object.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-theme.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-view.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_gladeDATA_INSTALL = $(INSTALL_DATA)
+install-dist_gladeDATA: $(dist_glade_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(gladedir)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+	  $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+	done
+
+uninstall-dist_gladeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+	  rm -f $(DESTDIR)$(gladedir)/$$f; \
+	done
+libgoffice_graph_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_graph_laHEADERS: $(libgoffice_graph_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_graph_ladir)
+	@list='$(libgoffice_graph_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_graph_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_graph_ladir)/$$f"; \
+	  $(libgoffice_graph_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_graph_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_graph_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_graph_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_graph_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_graph_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(gladedir) $(DESTDIR)$(libgoffice_graph_ladir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_gladeDATA \
+	install-libgoffice_graph_laHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_gladeDATA uninstall-info-am \
+	uninstall-libgoffice_graph_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-dist_gladeDATA \
+	install-exec install-exec-am install-info install-info-am \
+	install-libgoffice_graph_laHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_gladeDATA \
+	uninstall-info-am uninstall-libgoffice_graph_laHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/README
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/README	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/README	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,30 @@
+GOffice Graph -- A graphing library based on gtk technologies
+Jody Goldberg <jody at gnome.org>
+
+   licensed under the terms of the GNU GPL included in the file COPYING.
+
+Terminology
+-----------
+
+graph   == the parent which contains a set of charts layed out in tabular form
+chart   == a rectangular region with axis, titles, and legends, and multiple
+	   plots
+plot    == a set of drawings, overlapping with a chart with axis assigned
+series  == 1 displayable set of data of dimensionality related to its
+	   associated plot type
+element == 1 'point' in a series
+
+Mailing lists
+-------------
+
+   There is a no mailing list to discuss only the graphing.  For now discussion
+   will be on the Gnumeric list, to subscribe send a mail to:
+
+	gnumeric-list-request at gnome.org
+
+   And in the body of the message write "subscribe"
+
+   An archive of the mailing lists is available in:
+
+	http://www.gnome.org/mailing-lists/archives/gnumeric-list/
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/goffice-graph.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/goffice-graph.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/goffice-graph.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,193 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice-graph.h: 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOFFICE_GRAPH_H
+#define GOFFICE_GRAPH_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GogObject	 GogObject;
+typedef struct _GogObjectRole	 GogObjectRole;
+typedef struct _GogView		 GogView;	 /* view of an Object */
+
+typedef struct _GogGraph	 GogGraph;	/* collection of charts */
+typedef struct _GogChart	 GogChart;	/* collection of plots */
+typedef struct _GogPlot		 GogPlot;	/* abstract base for plots */
+typedef struct _GogPlotType	 GogPlotType;	/* visible characterization */
+typedef struct _GogPlotFamily	 GogPlotFamily; /* a group of plot types */
+typedef struct _GogPlotDesc	 GogPlotDesc;	/* data/axis requirements */
+typedef struct _GogSeries	 GogSeries;	/* single plotable entity */
+typedef struct _GogSeriesDesc	 GogSeriesDesc; /* data requirements */
+typedef struct _GogSeriesDimDesc GogSeriesDimDesc; /* dimension of a series */
+
+/* Useful objects */
+typedef struct _GogLegend	GogLegend;
+typedef struct _GogLabel	GogLabel;
+typedef struct _GogStyledObject	GogStyledObject;
+typedef struct _GogAxis		GogAxis;
+typedef struct _GogAxisLine	GogAxisLine;
+typedef struct _GogGrid		GogGrid;
+typedef struct _GogGridLine	GogGridLine;
+typedef struct _GogErrorBar	GogErrorBar;
+typedef struct _GogRegCurve	GogRegCurve;
+typedef struct _GogRegEqn	GogRegEqn;
+typedef struct _GogRegCurveType	GogRegCurveType;
+
+/* formating */
+typedef struct _GogTheme	GogTheme;
+typedef struct _GogStyle	GogStyle;
+typedef GSList 			GogSeriesElementStyleList;
+
+/* Data */
+typedef struct _GogDataAllocator GogDataAllocator;
+typedef struct _GogDataset	 GogDataset;
+
+/* Rendering */
+typedef struct _GogRenderer	 GogRenderer;
+
+typedef struct {
+	double w, h;
+} GogViewRequisition;
+
+typedef struct {
+	double w, h;
+	double x, y;
+} GogViewAllocation;
+
+typedef struct {
+	double wr, hb;
+	double wl, ht;
+} GogViewPadding;
+
+typedef void (*GogEnumFunc) (unsigned i, GogStyle *style,
+			     char const *name, gpointer data);
+
+typedef enum {
+	GOG_AXIS_UNKNOWN = -1,
+	GOG_AXIS_X	 = 0,
+	GOG_AXIS_Y,
+	GOG_AXIS_Z,
+	GOG_AXIS_CIRCULAR,
+	GOG_AXIS_RADIAL,
+	GOG_AXIS_PSEUDO_3D,
+	GOG_AXIS_TYPES
+} GogAxisType;
+typedef enum {
+	GOG_AXIS_SET_UNKNOWN 	  = -1,
+	GOG_AXIS_SET_NONE   	  = 0,
+	GOG_AXIS_SET_X		  = (1 << GOG_AXIS_X),
+	GOG_AXIS_SET_XY		  = (1 << GOG_AXIS_X) | (1 << GOG_AXIS_Y),
+	GOG_AXIS_SET_XY_pseudo_3d = (1 << GOG_AXIS_X) | (1 << GOG_AXIS_Y) | (1 << GOG_AXIS_PSEUDO_3D),
+	GOG_AXIS_SET_XYZ	  = (1 << GOG_AXIS_X) | (1 << GOG_AXIS_Y) | (1 << GOG_AXIS_Z),
+	GOG_AXIS_SET_RADAR        = (1 << GOG_AXIS_CIRCULAR) | (1 << GOG_AXIS_RADIAL),
+	GOG_AXIS_SET_ALL	  = ((1 << GOG_AXIS_TYPES) -1)
+} GogAxisSet;
+
+typedef enum {
+	GOG_DIM_INVALID = -1,
+	GOG_DIM_LABEL = 0,
+	GOG_DIM_INDEX,
+	GOG_DIM_VALUE,
+	GOG_DIM_MATRIX,
+	GOG_DIM_TYPES
+} GogDimType;
+
+typedef enum {
+	GOG_DATA_SCALAR,
+	GOG_DATA_VECTOR,
+	GOG_DATA_MATRIX
+}	GogDataType;
+
+/* A helper enum to simplify import/export from MS Excel (tm) which uses the
+ * same logical dim names for all plot types.  Do _NOT_ reorder, or change the
+ * enumeration without checking the xls code */
+typedef enum {
+	GOG_MS_DIM_LABELS	= 0,
+	GOG_MS_DIM_VALUES	= 1,
+	GOG_MS_DIM_CATEGORIES	= 2,
+	GOG_MS_DIM_BUBBLES	= 3, /* undocumented */
+	GOG_MS_DIM_TYPES,
+	GOG_MS_DIM_ERR_plus1,	/* we made it up */
+	GOG_MS_DIM_ERR_minus1,	/* we made it up */
+	GOG_MS_DIM_ERR_plus2,	/* we made it up */
+	GOG_MS_DIM_ERR_minus2,	/* we made it up */
+	GOG_MS_DIM_START,	/* we made it up for dropbars*/
+	GOG_MS_DIM_END,	/* we made it up for dropbars */
+	GOG_MS_DIM_LOW,	/* we made it up for hi-lo*/
+	GOG_MS_DIM_HIGH,	/* we made it up for hi-lo */
+} GogMSDimType;
+
+typedef enum {
+	GOG_POSITION_AUTO	= 0,
+	GOG_POSITION_N		= 1 << 0,	/* can be used with E or W */
+	GOG_POSITION_S		= 1 << 1,	/* can be used with E or W */
+	GOG_POSITION_E		= 1 << 2,
+	GOG_POSITION_W		= 1 << 3,
+	GOG_POSITION_COMPASS	= 0x0f,
+
+	/* modifiers for compass */
+	GOG_POSITION_ALIGN_FILL	  = 0 << 4,
+	GOG_POSITION_ALIGN_START  = 1 << 4,
+	GOG_POSITION_ALIGN_END	  = 2 << 4,
+	GOG_POSITION_ALIGN_CENTER = 3 << 4,
+	GOG_POSITION_ALIGNMENT	  = 0x30,
+
+	GOG_POSITION_SPECIAL	= 1 << 6,
+
+	GOG_POSITION_MANUAL	  = 1 << 7,
+	GOG_POSITION_MANUAL_X_ABS = 1 << 8, /* abs vs relative pos */
+	GOG_POSITION_MANUAL_Y_ABS = 1 << 9,
+	GOG_POSITION_MANUAL_X_END = 1 << 10, /* pos relative to start or end */
+	GOG_POSITION_MANUAL_Y_END = 1 << 11,
+
+	/* modifiers for manual */
+	GOG_POSITION_ANCHOR_NW       = 0 << 12,
+	GOG_POSITION_ANCHOR_N	     = 1 << 12,
+	GOG_POSITION_ANCHOR_NE	     = 2 << 12,
+	GOG_POSITION_ANCHOR_E        = 3 << 12,
+	GOG_POSITION_ANCHOR_SE       = 4 << 12,
+	GOG_POSITION_ANCHOR_S        = 5 << 12,
+	GOG_POSITION_ANCHOR_SW       = 6 << 12,
+	GOG_POSITION_ANCHOR_W        = 7 << 12,
+	GOG_POSITION_ANCHOR_CENTER   = 8 << 12,
+	GOG_POSITION_ANCHOR          = 0xf000,
+	
+	GOG_POSITION_ANY_MANUAL      = 0xff80,
+       	
+	GOG_POSITION_PADDING	     = 1 << 16
+} GogObjectPosition;
+
+#define GOG_POSITION_IS_SPECIAL(pos) (((pos) & GOG_POSITION_SPECIAL)&&(!((pos) & GOG_POSITION_MANUAL)))
+#define GOG_POSITION_IS_PADDING(pos) (((pos) & GOG_POSITION_PADDING)&&(!((pos) & GOG_POSITION_MANUAL)))
+
+/* #define NO_DEBUG_CHARTS */
+#ifndef NO_DEBUG_CHARTS
+#define gog_debug(level, code)	do { if (goffice_graph_debug_level > level) { code } } while (0)
+#else
+#define gog_debug(level, code)
+#endif
+extern int goffice_graph_debug_level;
+
+G_END_DECLS
+
+#endif /* GOFFICE_GRAPH_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,75 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-axis-line-impl.h :
+ *
+ * Copyright (C) 2005 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_AXIS_LINE_IMPL_H
+#define GOG_AXIS_LINE_IMPL_H
+
+#include <goffice/graph/gog-axis-line.h>
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/graph/gog-view.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GogStyledObject	 base;
+
+	GogChart	*chart;
+	GogAxis		*axis;
+
+	GogAxisPosition    position;
+	unsigned 	   crossed_axis_id;
+	GogDatasetElement  cross_location;
+	
+	struct {
+		gboolean tick_in, tick_out;
+		int size_pts;
+	} major, minor;
+	gboolean major_tick_labeled;
+} GogAxisBase;
+
+typedef GogStyledObjectClass GogAxisBaseClass;
+
+#define GOG_AXIS_BASE_TYPE	(gog_axis_base_get_type ())
+#define GOG_AXIS_BASE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_AXIS_BASE_TYPE, GogAxisBase))
+#define IS_GOG_AXIS_BASE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_AXIS_BASE_TYPE))
+
+GType gog_axis_base_get_type (void);
+
+GogAxisPosition 	gog_axis_base_get_position (GogAxisBase *axis_base);
+void		    	gog_axis_base_set_position (GogAxisBase *axis_base, GogAxisPosition position);
+
+void			gog_axis_base_set_label_angle (GogAxisBase *axis_base, double angle);
+
+typedef GogView		GogAxisBaseView;
+typedef GogViewClass	GogAxisBaseViewClass;
+
+#define GOG_AXIS_BASE_VIEW_TYPE		(gog_axis_base_view_get_type ())
+#define GOG_AXIS_BASE_VIEW(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_AXIS_BASE_VIEW_TYPE, GogAxisBaseView))
+#define IS_GOG_AXIS_BASE_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_AXIS_BASE_VIEW_TYPE))
+
+GType gog_axis_base_view_get_type (void);
+
+G_END_DECLS
+
+#endif /*GOG_AXIS_LINE_IMPL_H*/
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1552 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-axis-line.c :
+ *
+ * Copyright (C) 2005 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+
+#include <goffice/graph/gog-axis-line-impl.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+
+#include <goffice/gtk/goffice-gtk.h>
+
+#include <goffice/utils/go-math.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkcelllayout.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtktogglebutton.h>
+
+#include <glib/gi18n.h>
+
+static GogViewClass *gab_view_parent_klass;
+static GObjectClass *gab_parent_klass;
+
+enum {
+	AXIS_BASE_PROP_0,
+	AXIS_BASE_PROP_POSITION,
+	AXIS_BASE_PROP_MAJOR_TICK_LABELED,
+	AXIS_BASE_PROP_MAJOR_TICK_IN,
+	AXIS_BASE_PROP_MAJOR_TICK_OUT,
+	AXIS_BASE_PROP_MAJOR_TICK_SIZE_PTS,
+	AXIS_BASE_PROP_MINOR_TICK_IN,
+	AXIS_BASE_PROP_MINOR_TICK_OUT,
+	AXIS_BASE_PROP_MINOR_TICK_SIZE_PTS,
+	AXIS_BASE_PROP_CROSS_AXIS_ID,
+	AXIS_BASE_PROP_CROSS_LOCATION
+};
+
+static double gog_axis_base_get_cross_location (GogAxisBase *axis_base);
+
+static void
+gog_axis_base_set_property (GObject *obj, guint param_id,
+			    GValue const *value, GParamSpec *pspec)
+{
+	gboolean resized = FALSE;
+	char const *str;
+	GogAxisBase *axis_base = GOG_AXIS_BASE (obj);
+	int itmp;
+	unsigned position;
+
+	switch (param_id) {
+		case AXIS_BASE_PROP_POSITION:
+			str = g_value_get_string (value);
+			if (str == NULL)
+				return;
+			else if (!g_ascii_strcasecmp (str, "low"))
+				position = GOG_AXIS_AT_LOW;
+			else if (!g_ascii_strcasecmp (str, "cross"))
+				position = GOG_AXIS_CROSS;
+			else if (!g_ascii_strcasecmp (str, "high"))
+				position = GOG_AXIS_AT_HIGH;
+			else
+				return;
+			resized = (position != axis_base->position);
+			axis_base->position = position;
+			break;
+		case AXIS_BASE_PROP_CROSS_AXIS_ID:
+			axis_base->crossed_axis_id = g_value_get_uint (value);
+			break;
+
+		case AXIS_BASE_PROP_MAJOR_TICK_LABELED:
+			itmp = g_value_get_boolean (value);
+			if (axis_base->major_tick_labeled != itmp) {
+				axis_base->major_tick_labeled = itmp;
+				resized = TRUE;
+			}
+			break;
+		case AXIS_BASE_PROP_MAJOR_TICK_IN :
+			axis_base->major.tick_in = g_value_get_boolean (value);
+			break;
+		case AXIS_BASE_PROP_MAJOR_TICK_OUT :
+			itmp = g_value_get_boolean (value);
+			if (axis_base->major.tick_out != itmp) {
+				axis_base->major.tick_out = itmp;
+				resized = axis_base->major.size_pts > 0;
+			}
+			break;
+		case AXIS_BASE_PROP_MAJOR_TICK_SIZE_PTS:
+			itmp = g_value_get_int (value);
+			if (axis_base->major.size_pts != itmp) {
+				axis_base->major.size_pts = itmp;
+				resized = axis_base->major.tick_out;
+			}
+			break;
+
+		case AXIS_BASE_PROP_MINOR_TICK_IN :
+			axis_base->minor.tick_in = g_value_get_boolean (value);
+			break;
+		case AXIS_BASE_PROP_MINOR_TICK_OUT :
+			itmp = g_value_get_boolean (value);
+			if (axis_base->minor.tick_out != itmp) {
+				axis_base->minor.tick_out = itmp;
+				resized = axis_base->minor.size_pts > 0;
+			}
+			break;
+		case AXIS_BASE_PROP_MINOR_TICK_SIZE_PTS:
+			itmp = g_value_get_int (value);
+			if (axis_base->minor.size_pts != itmp) {
+				axis_base->minor.size_pts = itmp;
+				resized = axis_base->minor.tick_out;
+		}
+			break;
+
+		default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+			 return; /* NOTE : RETURN */
+	}
+
+	gog_object_emit_changed (GOG_OBJECT (obj), resized);
+}
+
+static void
+gog_axis_base_get_property (GObject *obj, guint param_id,
+			    GValue *value, GParamSpec *pspec)
+{
+	GogAxisBase *axis_base = GOG_AXIS_BASE (obj);
+
+	switch (param_id) {
+		case AXIS_BASE_PROP_POSITION:
+			switch (axis_base->position) {
+				case GOG_AXIS_AT_LOW:
+					g_value_set_static_string (value, "low");
+					break;
+				case GOG_AXIS_CROSS:
+					g_value_set_static_string (value, "cross");
+					break;
+				case GOG_AXIS_AT_HIGH:
+					g_value_set_static_string (value, "high");
+					break;
+				default:
+					g_warning ("[GogAxisBase::set_property] invalid axis position");
+				break;
+			}
+			break;
+		case AXIS_BASE_PROP_CROSS_AXIS_ID:
+			g_value_set_uint (value, axis_base->crossed_axis_id);
+			break;
+
+		case AXIS_BASE_PROP_MAJOR_TICK_LABELED:
+			g_value_set_boolean (value, axis_base->major_tick_labeled);
+			break;
+		case AXIS_BASE_PROP_MAJOR_TICK_IN:
+			g_value_set_boolean (value, axis_base->major.tick_in);
+			break;
+		case AXIS_BASE_PROP_MAJOR_TICK_OUT:
+			g_value_set_boolean (value, axis_base->major.tick_out);
+			break;
+		case AXIS_BASE_PROP_MAJOR_TICK_SIZE_PTS:
+			g_value_set_int (value, axis_base->major.size_pts);
+			break;
+
+		case AXIS_BASE_PROP_MINOR_TICK_IN:
+			g_value_set_boolean (value, axis_base->minor.tick_in);
+			break;
+		case AXIS_BASE_PROP_MINOR_TICK_OUT:
+			g_value_set_boolean (value, axis_base->minor.tick_out);
+			break;
+		case AXIS_BASE_PROP_MINOR_TICK_SIZE_PTS:
+			g_value_set_int (value, axis_base->minor.size_pts);
+			break;
+
+		default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+			 break;
+	}
+}
+
+static void
+gog_axis_base_parent_changed (GogObject *child, gboolean was_set)
+{
+	GogAxisBase *axis_base = GOG_AXIS_BASE (child);
+
+	if (was_set) {
+		if (IS_GOG_AXIS (child))
+			axis_base->axis = GOG_AXIS (child);
+		else
+			axis_base->axis = GOG_AXIS (child->parent);
+		axis_base->chart = GOG_CHART (GOG_OBJECT (axis_base->axis)->parent);
+
+	} else {
+		axis_base->axis = NULL;
+		axis_base->chart = NULL;
+	}
+	(GOG_OBJECT_CLASS (gab_parent_klass)->parent_changed) (child, was_set);
+}
+
+static void
+gog_axis_base_finalize (GObject *obj)
+{
+	gog_dataset_finalize (GOG_DATASET (obj));
+	(gab_parent_klass->finalize) (obj);
+}
+
+static GogAxisType
+gog_axis_base_get_crossed_axis_type (GogAxisBase *axis_base)
+{
+	GogAxisType axis_type, crossed_type;
+	GogAxisSet axis_set;
+
+	axis_type = gog_axis_get_atype (axis_base->axis);
+	axis_set = gog_chart_get_axis_set (axis_base->chart);
+
+	crossed_type = GOG_AXIS_UNKNOWN;
+	switch (axis_set) {
+		case GOG_AXIS_SET_XY:
+		case GOG_AXIS_SET_XY_pseudo_3d:
+			if (axis_type == GOG_AXIS_X)
+				crossed_type = GOG_AXIS_Y;
+			else
+				crossed_type = GOG_AXIS_X;
+			break;
+		case GOG_AXIS_SET_RADAR:
+			if (axis_type == GOG_AXIS_RADIAL)
+				crossed_type = GOG_AXIS_CIRCULAR;
+			else
+				crossed_type = GOG_AXIS_RADIAL;
+			break;
+		case GOG_AXIS_SET_X:
+		case GOG_AXIS_SET_UNKNOWN:
+			break;
+		case GOG_AXIS_SET_XYZ:
+		case GOG_AXIS_SET_ALL:
+		case GOG_AXIS_SET_NONE:
+			g_message ("[GogAxisBase::get_crossed_axis_type] unimplemented for this axis set (%i)",
+				   axis_set);
+			break;
+	}
+	return crossed_type;
+}
+
+static GogAxis *
+gog_axis_base_get_crossed_axis (GogAxisBase *axis_base)
+{
+	GogAxis *crossed_axis = NULL;
+	GSList *axes, *ptr;
+	gboolean found = FALSE;
+
+	axes = gog_chart_get_axes (axis_base->chart,
+		gog_axis_base_get_crossed_axis_type (axis_base));
+	g_return_val_if_fail (axes != NULL, NULL);
+
+	for (ptr = axes; ptr != NULL && !found; ptr = ptr->next) {
+		crossed_axis = GOG_AXIS (ptr->data);
+		if (gog_object_get_id (GOG_OBJECT (crossed_axis)) == axis_base->crossed_axis_id)
+			found = TRUE;
+	}
+
+	if (!found)
+		crossed_axis = GOG_AXIS (axes->data);
+
+	g_slist_free (axes);
+	return crossed_axis;
+}
+
+void
+gog_axis_base_set_position (GogAxisBase *axis_base, GogAxisPosition position)
+{
+	GogAxis *axis;
+	GogChart *chart;
+	GSList *lines, *axes = NULL, *lptr, *aptr;
+	gboolean can_at_low = TRUE, can_at_high = TRUE;
+
+	g_return_if_fail (GOG_AXIS_BASE (axis_base) != NULL);
+
+	if (position == GOG_AXIS_AUTO) {
+		if (IS_GOG_AXIS (axis_base))
+			axis = GOG_AXIS (axis_base);
+		else
+			axis = GOG_AXIS (gog_object_get_parent (GOG_OBJECT (axis_base)));
+
+		chart = GOG_CHART (gog_object_get_parent (GOG_OBJECT (axis)));
+		if (chart != NULL)
+			axes = gog_chart_get_axes (chart, gog_axis_get_atype (axis));
+		else
+			axes = g_slist_prepend (axes, axis);
+
+		for (aptr = axes; aptr != NULL; aptr = aptr->next) {
+			lines = gog_object_get_children (GOG_OBJECT (aptr->data), NULL);
+			lines = g_slist_prepend (lines, aptr->data);
+			for (lptr = lines; lptr != NULL; lptr = lptr->next) {
+				if (lptr->data == axis_base || !IS_GOG_AXIS_BASE (lptr->data))
+					continue;
+				position = gog_axis_base_get_position (GOG_AXIS_BASE (lptr->data));
+				if (position == GOG_AXIS_AT_HIGH )
+					can_at_high = FALSE;
+				else if (position == GOG_AXIS_AT_LOW)
+					can_at_low = FALSE;
+			}
+			g_slist_free (lines);
+		}
+		g_slist_free (axes);
+
+		if (can_at_low)
+			position = GOG_AXIS_AT_LOW;
+		else if (can_at_high)
+			position = GOG_AXIS_AT_HIGH;
+		else
+			position = GOG_AXIS_CROSS;
+	}
+
+	axis_base->position = position;
+}
+
+typedef struct {
+	GogAxisBase 	*axis_base;
+	GladeXML 	*gui;
+} AxisBasePrefs;
+
+static void
+axis_base_pref_free (AxisBasePrefs *state)
+{
+	g_object_unref (state->gui);
+	g_free (state);
+}
+
+static void
+cb_cross_location_changed (GtkWidget *editor, AxisBasePrefs *state)
+{
+	gtk_toggle_button_set_active
+		(GTK_TOGGLE_BUTTON (glade_xml_get_widget (state->gui, "axis_cross")),
+		 TRUE);
+}
+
+static void
+cb_cross_axis_changed (GtkComboBox *combo, AxisBasePrefs *state)
+{
+	GtkTreeIter iter;
+	GValue value;
+	GtkTreeModel *model = gtk_combo_box_get_model (combo);
+
+	gtk_combo_box_get_active_iter (combo, &iter);
+	gtk_tree_model_get_value (model, &iter, 1, &value);
+	state->axis_base->crossed_axis_id = g_value_get_uint (&value);
+
+	gtk_toggle_button_set_active
+		(GTK_TOGGLE_BUTTON (glade_xml_get_widget (state->gui, "axis_cross")),
+		 TRUE);
+}
+
+static void
+cb_position_toggled (GtkWidget *button, GogAxisBase *axis_base)
+{
+	GogAxisPosition position;
+	char const *widget_name = gtk_widget_get_name (button);
+	GSList *lines, *axes, *aptr, *lptr;
+
+	if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
+		return;
+
+	if (g_ascii_strcasecmp ("axis_high", widget_name) == 0)
+		position = GOG_AXIS_AT_HIGH;
+	else if (g_ascii_strcasecmp ("axis_cross", widget_name) == 0)
+		position = GOG_AXIS_CROSS;
+	else
+		position = GOG_AXIS_AT_LOW;
+
+	if (position != GOG_AXIS_CROSS) {
+		axes = gog_chart_get_axes (axis_base->chart, gog_axis_get_atype (axis_base->axis));
+		for (aptr = axes; aptr != NULL; aptr = aptr->next) {
+			lines = gog_object_get_children (GOG_OBJECT (aptr->data), NULL);
+			lines = g_slist_prepend (lines, aptr->data);
+			for (lptr = lines; lptr != NULL; lptr = lptr->next) {
+				if (lptr->data == axis_base || !IS_GOG_AXIS_BASE (lptr->data))
+					continue;
+				if (position == gog_axis_base_get_position (GOG_AXIS_BASE (lptr->data))) {
+					gog_axis_base_set_position (GOG_AXIS_BASE (lptr->data),
+								    gog_axis_base_get_position (axis_base));
+					break;
+				}
+			}
+			g_slist_free (lines);
+		}
+		g_slist_free (axes);
+	}
+	gog_axis_base_set_position (axis_base, position);
+	gog_object_emit_changed (GOG_OBJECT (axis_base), TRUE);
+}
+
+static void
+cb_tick_toggle_changed (GtkToggleButton *toggle_button, GObject *axis_base)
+{
+	g_object_set (axis_base,
+		gtk_widget_get_name (GTK_WIDGET (toggle_button)),
+		gtk_toggle_button_get_active (toggle_button),
+		NULL);
+}
+
+static void
+gog_axis_base_populate_editor (GogObject *gobj,
+			       GogEditor *editor,
+			       GogDataAllocator *dalloc,
+			       GOCmdContext *cc)
+{
+	static char const *toggle_props[] = {
+		"major-tick-labeled",
+		"major-tick-out",
+		"major-tick-in",
+		"minor-tick-out",
+		"minor-tick-in"
+	};
+	GogAxis *crossed_axis;
+	GogAxisBase *axis_base;
+	GladeXML *gui;
+	GtkListStore *store;
+	GtkTreeIter iter;
+	GtkWidget *combo, *data_editor, *container, *w;
+	GtkCellRenderer *cell;
+	GSList *axes, *ptr;
+	AxisBasePrefs *state;
+	GogAxisType crossed_axis_type;
+	static guint axis_base_pref_page = 0;
+	unsigned axis_count;
+	unsigned crossed_axis_id;
+	unsigned i;
+
+	axis_base = GOG_AXIS_BASE (gobj);
+	g_return_if_fail (GOG_AXIS_BASE (axis_base) != NULL);
+
+	gog_editor_set_store_page (editor, &axis_base_pref_page);
+	
+	if (gog_axis_get_atype (axis_base->axis) == GOG_AXIS_PSEUDO_3D) {
+		(GOG_OBJECT_CLASS(gab_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+		return;
+	}
+
+	gui = go_libglade_new ("gog-axis-prefs.glade", "axis_base_pref_box", NULL, cc);
+	if (gui == NULL) {
+		(GOG_OBJECT_CLASS(gab_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+		return;
+	}
+
+	crossed_axis_type = gog_axis_base_get_crossed_axis_type (axis_base);
+	if (crossed_axis_type != GOG_AXIS_UNKNOWN) {
+		store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_UINT);
+		combo = glade_xml_get_widget (gui, "cross_axis_combo");
+		gtk_combo_box_set_model (GTK_COMBO_BOX (combo), GTK_TREE_MODEL (store));
+
+		cell = gtk_cell_renderer_text_new ();
+		gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE);
+		gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), cell,
+						"text", 0,
+						NULL);
+
+		axes = gog_chart_get_axes (axis_base->chart, crossed_axis_type);
+		axis_count = 0;
+		for (ptr = axes; ptr != NULL; ptr = ptr->next) {
+			crossed_axis = GOG_AXIS (ptr->data);
+			crossed_axis_id = gog_object_get_id (GOG_OBJECT (crossed_axis));
+			gtk_list_store_prepend (store, &iter);
+			gtk_list_store_set (store, &iter,
+					    0, gog_object_get_name (GOG_OBJECT (crossed_axis)),
+					    1, crossed_axis_id,
+					    -1);
+			if (axis_base->crossed_axis_id == crossed_axis_id || axis_count == 0)
+				gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter);
+			axis_count++;
+		}
+		if (axis_count < 2)
+			gtk_widget_set_sensitive (GTK_WIDGET (combo), FALSE);
+		g_slist_free (axes);
+
+		data_editor = gog_data_allocator_editor (dalloc, GOG_DATASET (axis_base),
+							 GOG_AXIS_ELEM_CROSS_POINT, GOG_DATA_SCALAR);
+		container = glade_xml_get_widget (gui, "cross_location_alignment");
+		gtk_container_add (GTK_CONTAINER (container), data_editor);
+		gtk_widget_show_all (container);
+
+		state = g_new (AxisBasePrefs, 1);
+		state->axis_base = axis_base;
+		state->gui = gui;
+		g_signal_connect (G_OBJECT (combo), "changed",
+				  G_CALLBACK (cb_cross_axis_changed), state);
+		g_signal_connect (G_OBJECT (data_editor), "changed",
+				  G_CALLBACK (cb_cross_location_changed), state);
+		g_object_set_data_full (G_OBJECT (combo),
+					"state", state, (GDestroyNotify) axis_base_pref_free);
+
+		w = glade_xml_get_widget (gui, "axis_low");
+		if (axis_base->position == GOG_AXIS_AT_LOW)
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), TRUE);
+		g_signal_connect (G_OBJECT (w), "toggled",
+				  G_CALLBACK (cb_position_toggled), axis_base);
+		w = glade_xml_get_widget (gui, "axis_cross");
+		if (axis_base->position == GOG_AXIS_CROSS)
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), TRUE);
+		g_signal_connect (G_OBJECT (w), "toggled",
+				  G_CALLBACK (cb_position_toggled), axis_base);
+		w = glade_xml_get_widget (gui, "axis_high");
+		if (axis_base->position == GOG_AXIS_AT_HIGH)
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), TRUE);
+		g_signal_connect (G_OBJECT (w), "toggled",
+				  G_CALLBACK (cb_position_toggled), axis_base);
+	}
+	else {
+		w = glade_xml_get_widget (gui, "position_box");
+		gtk_widget_hide (w);
+	}
+
+	for (i = 0; i < G_N_ELEMENTS (toggle_props) ; i++) {
+		gboolean cur_val;
+
+		w = glade_xml_get_widget (gui, toggle_props[i]);
+		g_object_get (G_OBJECT (gobj), toggle_props[i], &cur_val, NULL);
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), cur_val);
+		g_signal_connect_object (G_OBJECT (w),
+					 "toggled",
+					 G_CALLBACK (cb_tick_toggle_changed), axis_base, 0);
+	}
+
+	if (gog_axis_is_discrete (axis_base->axis)) {
+		/* Hide minor tick properties */
+		GtkWidget *w = glade_xml_get_widget (gui, "minor_tick_box");
+		gtk_widget_hide (w);
+	}
+
+	gog_editor_add_page (editor,
+			     glade_xml_get_widget (gui, "axis_base_pref_box"),
+			     _("Layout"));
+
+	(GOG_OBJECT_CLASS(gab_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+}
+
+static void
+gog_axis_base_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	style->interesting_fields = GOG_STYLE_LINE | GOG_STYLE_FONT;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+gog_axis_base_class_init (GObjectClass *gobject_klass)
+{
+	GogObjectClass *gog_klass = (GogObjectClass *) gobject_klass;
+	GogStyledObjectClass *gso_klass = (GogStyledObjectClass *) gobject_klass;
+
+	gab_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->set_property 	= gog_axis_base_set_property;
+	gobject_klass->get_property 	= gog_axis_base_get_property;
+	gobject_klass->finalize	    	= gog_axis_base_finalize;
+	gog_klass->parent_changed 	= gog_axis_base_parent_changed;
+
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_POSITION,
+		g_param_spec_string ("pos_str", "pos_str",
+			"Where to position an axis low, high, or crossing",
+			"low", G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_MAJOR_TICK_LABELED,
+		g_param_spec_boolean ("major-tick-labeled", NULL,
+			"Show labels for major ticks",
+			TRUE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_MAJOR_TICK_IN,
+		g_param_spec_boolean ("major-tick-in", NULL,
+			"Major tick marks inside the axis",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_MAJOR_TICK_OUT,
+		g_param_spec_boolean ("major-tick-out", NULL,
+			"Major tick marks outside the axis",
+			TRUE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_MAJOR_TICK_SIZE_PTS,
+		g_param_spec_int ("major-tick-size-pts", "major-tick-size-pts",
+			"Size of the major tick marks in pts",
+			0, 20, 4, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_MINOR_TICK_IN,
+		g_param_spec_boolean ("minor-tick-in", NULL,
+			"Minor tick marks inside the axis",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_MINOR_TICK_OUT,
+		g_param_spec_boolean ("minor-tick-out", NULL,
+			"Minor tick marks outside the axis",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_MINOR_TICK_SIZE_PTS,
+		g_param_spec_int ("minor-tick-size-pts", NULL,
+			"Size of the minor tick marks in pts",
+			0, 15, 2, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	g_object_class_install_property (gobject_klass, AXIS_BASE_PROP_CROSS_AXIS_ID,
+		g_param_spec_uint ("cross_axis_id", NULL,
+			"Which axis to cross",
+			0, G_MAXUINT, 0, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_klass->populate_editor	= gog_axis_base_populate_editor;
+	gog_klass->view_type		= gog_axis_base_view_get_type ();
+	gso_klass->init_style 		= gog_axis_base_init_style;
+}
+
+static void
+gog_axis_base_init (GogAxisBase *gab)
+{
+	gab->chart = NULL;
+	gab->axis = NULL;
+
+	gab->position = GOG_AXIS_AT_LOW;
+	gab->crossed_axis_id = 0;
+
+	gab->minor.tick_in = gab->minor.tick_out = gab->major.tick_in = FALSE;
+	gab->major.tick_out = TRUE;
+	gab->major_tick_labeled = TRUE;
+	gab->major.size_pts = 4;
+	gab->minor.size_pts = 2;
+}
+
+static double
+gog_axis_base_get_cross_location (GogAxisBase *axis_base)
+{
+	GOData *data;
+
+	g_return_val_if_fail (GOG_AXIS_BASE (axis_base) != NULL, 0.);
+
+	data = axis_base->cross_location.data;
+	if (data != NULL && IS_GO_DATA_SCALAR (data))
+		return go_data_scalar_get_value (GO_DATA_SCALAR (data));
+
+	return 0.;
+}
+
+GogAxisPosition
+gog_axis_base_get_position (GogAxisBase *axis_base)
+{
+	g_return_val_if_fail (GOG_AXIS_BASE (axis_base) != NULL, GOG_AXIS_AT_LOW);
+
+	return axis_base->position;
+}
+
+GSF_CLASS_ABSTRACT (GogAxisBase, gog_axis_base,
+		    gog_axis_base_class_init, gog_axis_base_init,
+		    GOG_STYLED_OBJECT_TYPE);
+
+/************************************************************************/
+
+#define POINT_MIN_DISTANCE 	5 	/* distance minimum between point and axis for point = TRUE, in pixels */
+
+typedef enum {
+	GOG_AXIS_BASE_RENDER,
+	GOG_AXIS_BASE_POINT,
+	GOG_AXIS_BASE_PADDING_REQUEST
+} GogAxisBaseAction;
+
+static gboolean
+axis_line_point (double x, double y,
+		 double xa, double ya, double wa, double ha)
+{
+	return go_geometry_point_to_segment (x, y, xa, ya, wa, ha) <= POINT_MIN_DISTANCE;
+}
+
+static GogViewAllocation
+axis_line_get_bbox (GogAxisBase *axis_base, GogRenderer *renderer,
+		    double x, double y, double w, double h,
+		    GOGeometrySide side, double start_at, gboolean draw_labels)
+{
+	GogAxisMap *map = NULL;
+	GogAxisTick *ticks;
+	GOGeometryAABR total_bbox, bbox;
+	GogStyle *style = axis_base->base.style;
+	GOGeometryAABR txt_aabr;
+	GOGeometryOBR txt_obr;
+	double line_width;
+	double axis_length, axis_angle, label_padding;
+	double cos_alpha, sin_alpha;
+	double pos;
+	unsigned i, tick_nbr;
+	gboolean is_line_visible;
+	double minor_tick_len, major_tick_len, tick_len;
+
+	go_geometry_cartesian_to_polar (w, h, &axis_length, &axis_angle);
+	cos_alpha = side == GO_SIDE_LEFT ? - sin (axis_angle) : + sin (axis_angle);
+	sin_alpha = side == GO_SIDE_LEFT ? + cos (axis_angle) : - cos (axis_angle);
+
+	is_line_visible = gog_style_is_line_visible (style);
+	line_width = gog_renderer_line_size (renderer, style->line.width) / 2;
+
+	minor_tick_len = gog_renderer_pt2r (renderer, axis_base->minor.size_pts);
+	major_tick_len = gog_renderer_pt2r (renderer, axis_base->major.size_pts);
+	tick_len = axis_base->major.tick_out ? major_tick_len :
+		(axis_base->minor.tick_out ? minor_tick_len : 0.);
+	gog_renderer_get_text_OBR (renderer, "0", &txt_obr);
+	label_padding = txt_obr.w;
+
+	total_bbox.x = x; total_bbox.y = y; 
+	total_bbox.w = w; total_bbox.h = h;
+
+	if (is_line_visible) {
+		double out_len, in_len;
+
+		out_len = line_width;
+		if (axis_base->major.tick_out)
+			out_len += major_tick_len;
+		else if (axis_base->minor.tick_out)
+			out_len += minor_tick_len;
+		in_len  = line_width;
+		if (axis_base->major.tick_in)
+			in_len += major_tick_len;
+		else if (axis_base->minor.tick_in)
+			in_len += minor_tick_len;
+
+		bbox.x = x - out_len * cos_alpha;
+		bbox.y = y - out_len * sin_alpha;
+		bbox.w = (out_len + in_len) * cos_alpha;
+		bbox.h = (out_len + in_len) * sin_alpha;
+		go_geometry_AABR_add (&total_bbox, &bbox);
+		bbox.x += w;
+		bbox.y += h;
+		go_geometry_AABR_add (&total_bbox, &bbox);
+	}
+
+	tick_nbr = gog_axis_get_ticks (axis_base->axis, &ticks);
+
+	if (!draw_labels)
+		return total_bbox;
+
+	map = gog_axis_map_new (axis_base->axis, 0., axis_length);
+
+	for (i = 0; i < tick_nbr; i++) {
+		if (ticks[i].label != NULL) {
+			pos = gog_axis_map_to_view (map, ticks[i].position);
+			gog_renderer_get_text_OBR (renderer, ticks[i].label, &txt_obr);
+			txt_obr.w += label_padding;
+			go_geometry_calc_label_position (&txt_obr, axis_angle, tick_len, side);
+			txt_obr.x += x + pos * cos (axis_angle);
+			txt_obr.y += y + pos * sin (axis_angle);
+			go_geometry_OBR_to_AABR (&txt_obr, &txt_aabr);
+			go_geometry_AABR_add (&total_bbox, &txt_aabr);
+		}
+	}
+	gog_axis_map_free (map);
+
+	return total_bbox;
+}
+
+static void
+axis_line_render (GogAxisBase *axis_base, GogRenderer *renderer,
+		  double x, double y, double w, double h,
+		  GOGeometrySide side,
+		  double start_at,
+		  gboolean draw_labels,
+		  gboolean sharp)
+{
+	GogAxisMap *map = NULL;
+	GogAxisTick *ticks;
+	GogViewAllocation label_pos;
+	GogStyle *style = axis_base->base.style;
+	GOGeometryOBR txt_obr, txt_obr_old = {0., 0., 0., 0., 0.};
+	ArtVpath path[3];
+	double line_width;
+	double axis_length, axis_angle, label_padding;
+	double major_tick_len, minor_tick_len, tick_len;
+	double major_out_x = 0., major_out_y= 0., major_in_x = 0., major_in_y = 0.;
+	double minor_out_x = 0., minor_out_y= 0., minor_in_x = 0., minor_in_y = 0.;
+	double cos_alpha, sin_alpha;
+	double pos, pos_x, pos_y;
+	unsigned i, tick_nbr;
+	gboolean draw_major, draw_minor;
+	gboolean is_line_visible;
+
+	go_geometry_cartesian_to_polar (w, h, &axis_length, &axis_angle);
+	cos_alpha = side == GO_SIDE_LEFT ? - sin (axis_angle) : + sin (axis_angle);
+	sin_alpha = side == GO_SIDE_LEFT ? + cos (axis_angle) : - cos (axis_angle);
+	
+	is_line_visible = gog_style_is_line_visible (style);
+	line_width = gog_renderer_line_size (renderer, style->line.width) / 2;
+	if (is_line_visible)
+	{
+		path[0].code = ART_MOVETO;
+		path[1].code = ART_LINETO;
+		path[2].code = ART_END;
+
+		path[0].x = x;
+		path[0].y = y;
+		path[1].x = path[0].x + w;
+		path[1].y = path[0].y + h;
+		if (sharp)
+			gog_renderer_draw_sharp_path (renderer, path);
+		else
+			gog_renderer_draw_path (renderer, path);
+	}
+
+	map = gog_axis_map_new (axis_base->axis, 0., axis_length);
+
+	draw_major = axis_base->major.tick_in || axis_base->major.tick_out;
+	draw_minor = axis_base->minor.tick_in || axis_base->minor.tick_out;
+
+	minor_tick_len = gog_renderer_pt2r (renderer, axis_base->minor.size_pts) + line_width;
+	minor_out_x = axis_base->minor.tick_out ? - minor_tick_len * cos_alpha : 0.;
+	minor_out_y = axis_base->minor.tick_out ? - minor_tick_len * sin_alpha : 0.;
+	minor_in_x = axis_base->minor.tick_in ? minor_tick_len * cos_alpha : 0.;
+	minor_in_y = axis_base->minor.tick_in ? minor_tick_len * sin_alpha : 0.;
+
+	major_tick_len = gog_renderer_pt2r (renderer, axis_base->major.size_pts) + line_width;
+	major_out_x = axis_base->major.tick_out ? - major_tick_len * cos_alpha : 0.;
+	major_out_y = axis_base->major.tick_out ? - major_tick_len * sin_alpha : 0.;
+	major_in_x = axis_base->major.tick_in ? major_tick_len * cos_alpha : 0.;
+	major_in_y = axis_base->major.tick_in ? major_tick_len * sin_alpha : 0.;
+
+	tick_len = axis_base->major.tick_out ? major_tick_len :
+		(axis_base->minor.tick_out ? minor_tick_len : 0.);
+	gog_renderer_get_text_OBR (renderer, "0", &txt_obr);
+	label_padding = txt_obr.w;
+
+	tick_nbr = gog_axis_get_ticks (axis_base->axis, &ticks);
+
+	for (i = 0; i < tick_nbr; i++) {
+		if (gog_axis_map (map, ticks[i].position) < start_at)
+			continue;
+
+		pos = gog_axis_map_to_view (map, ticks[i].position);
+		pos_x = x + pos * cos (axis_angle);
+		pos_y = y + pos * sin (axis_angle);
+
+		if (is_line_visible) {
+			switch (ticks[i].type) {
+				case GOG_AXIS_TICK_MAJOR:
+					if (draw_major) {
+						path[0].x = major_out_x + pos_x;
+						path[1].x = major_in_x + pos_x;
+						path[0].y = major_out_y + pos_y;
+						path[1].y = major_in_y + pos_y;
+						if (sharp)
+							gog_renderer_draw_sharp_path (renderer, path);
+						else
+							gog_renderer_draw_path (renderer, path);
+					}
+					break;
+
+				case GOG_AXIS_TICK_MINOR:
+					if (draw_minor) {
+						path[0].x = minor_out_x + pos_x;
+						path[1].x = minor_in_x + pos_x;
+						path[0].y = minor_out_y + pos_y;
+						path[1].y = minor_in_y + pos_y;
+						if (sharp)
+							gog_renderer_draw_sharp_path (renderer, path);
+						else
+							gog_renderer_draw_path (renderer, path);
+					}
+					break;
+
+				default:
+					break;
+			}
+		}
+
+		if (ticks[i].label != NULL && draw_labels) {
+			pos = gog_axis_map_to_view (map, ticks[i].position);
+			gog_renderer_get_text_OBR (renderer, ticks[i].label, &txt_obr);
+			txt_obr.w += label_padding;
+			go_geometry_calc_label_position (&txt_obr, axis_angle, tick_len, side);
+			txt_obr.x += x + pos * cos (axis_angle);
+			txt_obr.y += y + pos * sin (axis_angle);
+			if (!go_geometry_test_OBR_overlap (&txt_obr, &txt_obr_old)) {
+				label_pos.x = txt_obr.x;
+				label_pos.y = txt_obr.y;
+				gog_renderer_draw_text (renderer, ticks[i].label,
+							&label_pos, GTK_ANCHOR_CENTER, NULL);
+				txt_obr_old = txt_obr;
+			}
+		}
+	}
+
+	gog_axis_map_free (map);
+}
+
+static gboolean
+axis_circle_point (double x, double y, double center_x, double center_y, double radius, int num_radii)
+{
+
+	if (num_radii > 0.0) {
+		int i;
+		double x0 = center_x;
+		double y0 = center_y;
+		double x1, y1;
+		double angle_rad = 0;
+
+		for (i = 1; i <= num_radii; i++) {
+			x1 = x0;
+			y1 = y0;
+			angle_rad = 2.0 * M_PI * (double) i / (double) num_radii;
+			x0 = center_x + radius * sin (angle_rad);
+			y0 = center_y - radius * cos (angle_rad);
+			if (go_geometry_point_to_segment (x, y, x0, y0, x1 - x0, y1 - y0) < POINT_MIN_DISTANCE)
+				return TRUE;
+		}
+	}
+
+	return (radius - sqrt ((x - center_x) * (x - center_x) + (y - center_y) * (y - center_y))) < POINT_MIN_DISTANCE;
+}
+
+static GogViewAllocation
+axis_circle_get_bbox (GogAxisBase *axis_base, GogRenderer *renderer,
+		      GogChartMap *c_map, gboolean draw_labels)
+{
+	GogAxisMap *map;
+	GogAxisTick *ticks;
+	GogViewAllocation total_bbox;
+	GogChartMapPolarData *parms = gog_chart_map_get_polar_parms (c_map);
+	GOGeometryOBR txt_obr;
+	GOGeometryAABR txt_aabr;
+	double angle, offset, position, label_padding;
+	double major_tick_len, minor_tick_len, tick_len, x, y;
+	unsigned i, tick_nbr;
+	gboolean draw_ticks;
+
+	total_bbox.x = parms->cx; total_bbox.y = parms->cy; total_bbox.w = 0.; total_bbox.h = 0.;
+
+	minor_tick_len = gog_renderer_pt2r (renderer, axis_base->minor.size_pts);
+	major_tick_len = gog_renderer_pt2r (renderer, axis_base->major.size_pts);
+	tick_len = axis_base->major.tick_out ? major_tick_len :
+		(axis_base->minor.tick_out ? minor_tick_len : 0.);
+	gog_renderer_get_text_OBR (renderer, "0", &txt_obr);
+	label_padding = txt_obr.w;
+
+	draw_ticks = gog_style_is_line_visible (axis_base->base.style) &&
+		(axis_base->major.tick_out || axis_base->minor.tick_out);
+
+	map = gog_chart_map_get_axis_map (c_map, 1);
+	gog_axis_map_get_extents (map, &offset , &position);
+	map = gog_chart_map_get_axis_map (c_map, 0);
+	tick_nbr = gog_axis_get_ticks (axis_base->axis, &ticks);
+	for (i = 0; i < tick_nbr; i++) {
+		angle = gog_axis_map_to_view (map, ticks[i].position);
+		gog_chart_map_2D_to_view (c_map, ticks[i].position, position, &x, &y);
+
+		if (ticks[i].label != NULL && draw_labels) {
+			gog_renderer_get_text_OBR (renderer, ticks[i].label, &txt_obr);
+			txt_obr.w += label_padding;
+			go_geometry_calc_label_position (&txt_obr, angle + M_PI / 2.0, tick_len, GO_SIDE_LEFT);
+			txt_obr.x += x;
+			txt_obr.y += y;
+			go_geometry_OBR_to_AABR (&txt_obr, &txt_aabr);
+			go_geometry_AABR_add (&total_bbox, &txt_aabr);
+		} else
+			if (draw_ticks) {
+				txt_aabr.x = x + cos (angle) * tick_len;
+				txt_aabr.y = y + sin (angle) * tick_len;
+				txt_aabr.w = txt_aabr.h = 0.;
+				go_geometry_AABR_add (&total_bbox, &txt_aabr);
+			}
+	}
+
+	return total_bbox;
+}
+
+static void
+axis_circle_render (GogAxisBase *axis_base, GogRenderer *renderer,
+		    GogChartMap *c_map, gboolean is_discrete, gboolean draw_labels)
+{
+	GogAxisMap *map;
+	GogAxisTick *ticks;
+	GogViewAllocation label_pos;
+	GogChartMapPolarData *parms = gog_chart_map_get_polar_parms (c_map);
+	GOGeometryOBR txt_obr, txt_obr_old = {0., 0., 0., 0., 0.};
+	GOGeometryOBR txt_obr_first;
+	ArtVpath *cpath, path[3];
+	double angle, offset, position, label_padding;
+	double start, stop;
+	double major_tick_len, minor_tick_len, tick_len;
+	unsigned i, step_nbr, tick_nbr;
+	gboolean draw_major, draw_minor;
+	gboolean is_line_visible;
+	gboolean first_label_done = FALSE;
+
+	map = gog_chart_map_get_axis_map (c_map, 1);
+	gog_axis_map_get_extents (map, &offset , &position);
+	map = gog_chart_map_get_axis_map (c_map, 0);
+
+	if (is_discrete) {
+		gog_axis_map_get_extents (map, &start, &stop);
+		step_nbr = go_rint (parms->th1 - parms->th0) + 1;
+		cpath = art_new (ArtVpath, step_nbr + 2);
+		for (i = 0; i <= step_nbr; i++) {
+			gog_chart_map_2D_to_view (c_map, i + parms->th0, 
+						  position, &cpath[i].x, &cpath[i].y);
+			cpath[i].code = ART_LINETO;
+		}
+		cpath[0].code = ART_MOVETO;
+		cpath[step_nbr + 1].code = ART_END;
+		gog_renderer_draw_path (renderer, cpath);
+		g_free (cpath);
+	} else {
+		gog_renderer_draw_arc (renderer, parms->cx, parms->cy, parms->rx, parms->ry,
+				      -parms->th1, -parms->th0);
+	}
+
+	is_line_visible = gog_style_is_line_visible (axis_base->base.style);
+	draw_major = axis_base->major.tick_in || axis_base->major.tick_out;
+	draw_minor = axis_base->minor.tick_in || axis_base->minor.tick_out;
+
+	if (is_line_visible) {
+		path[0].code = ART_MOVETO;
+		path[1].code = ART_LINETO;
+		path[2].code = ART_END;
+	}
+
+	minor_tick_len = gog_renderer_pt2r (renderer, axis_base->minor.size_pts);
+	major_tick_len = gog_renderer_pt2r (renderer, axis_base->major.size_pts);
+	tick_len = axis_base->major.tick_out ? major_tick_len :
+		(axis_base->minor.tick_out ? minor_tick_len : 0.);
+	gog_renderer_get_text_OBR (renderer, "0", &txt_obr);
+	label_padding = txt_obr.w;
+
+	tick_nbr = gog_axis_get_ticks (axis_base->axis, &ticks);
+	for (i = 0; i < tick_nbr; i++) {
+		angle = gog_axis_map_to_view (map, ticks[i].position);
+		if (is_line_visible) {
+			switch (ticks[i].type) {
+				case GOG_AXIS_TICK_MAJOR:
+					if (draw_major) {
+						gog_chart_map_2D_to_view (c_map, ticks[i].position, position,
+									  &path[0].x, &path[0].y);
+						if (axis_base->major.tick_in) {
+							path[1].x = path[0].x - major_tick_len * cos (angle);
+							path[1].y = path[0].y - major_tick_len * sin (angle);
+						} else {
+							path[1].x = path[0].x;
+							path[1].y = path[0].y;
+						}
+						if (axis_base->major.tick_out) {
+							path[0].x += major_tick_len * cos (angle);
+							path[0].y += major_tick_len * sin (angle);
+						}
+						gog_renderer_draw_path (renderer, path);
+					}
+					break;
+
+				case GOG_AXIS_TICK_MINOR:
+					if (draw_minor) {
+						gog_chart_map_2D_to_view (c_map, ticks[i].position, position,
+									  &path[0].x, &path[0].y);
+						if (axis_base->minor.tick_in) {
+							path[1].x = path[0].x - minor_tick_len * cos (angle);
+							path[1].y = path[0].y - minor_tick_len * sin (angle);
+						} else {
+							path[1].x = path[0].x;
+							path[1].y = path[0].y;
+						}
+						if (axis_base->minor.tick_out) {
+							path[0].x += minor_tick_len * cos (angle);
+							path[0].y += minor_tick_len * sin (angle);
+						}
+						gog_renderer_draw_path (renderer, path);
+					}
+					break;
+
+				default:
+					break;
+			}
+		}
+
+		if (ticks[i].label != NULL && draw_labels) {
+			gog_chart_map_2D_to_view (c_map, ticks[i].position, position,
+						  &label_pos.x, &label_pos.y);
+			gog_renderer_get_text_OBR (renderer, ticks[i].label, &txt_obr);
+			txt_obr.w += label_padding;
+			go_geometry_calc_label_position (&txt_obr, angle + M_PI / 2.0, tick_len, GO_SIDE_LEFT);
+			label_pos.x += txt_obr.x;
+			label_pos.y += txt_obr.y;
+			txt_obr.x = label_pos.x;
+			txt_obr.y = label_pos.y;
+			if (!first_label_done || 
+			    (!go_geometry_test_OBR_overlap (&txt_obr, &txt_obr_old) &&
+			     !go_geometry_test_OBR_overlap (&txt_obr, &txt_obr_first))) {
+				gog_renderer_draw_text (renderer, ticks[i].label,
+							&label_pos, GTK_ANCHOR_CENTER, NULL);
+				txt_obr_old = txt_obr;
+			}
+			if (!first_label_done) {
+				txt_obr_first = txt_obr;
+				first_label_done = TRUE;
+			}
+		}
+	}
+}
+
+static gboolean
+x_process (GogAxisBaseAction action, GogView *view, GogViewPadding *padding,
+	   GogViewAllocation const *plot_area, double x, double y)
+{
+	GogAxisBase *axis_base = GOG_AXIS_BASE (view->model);
+	GogAxisType axis_type = gog_axis_get_atype (axis_base->axis);
+	GogChartMap *c_map;
+	GogAxisMap *a_map;
+	GogViewAllocation tmp = *plot_area;
+	GogViewAllocation axis_line_bbox;
+	double ax, ay, bx, by;
+	double start, stop;
+
+	g_return_val_if_fail (axis_type == GOG_AXIS_X, FALSE);
+
+	c_map = gog_chart_map_new (axis_base->chart, plot_area, axis_base->axis, NULL, NULL, TRUE);
+	a_map = gog_chart_map_get_axis_map (c_map, 0);
+
+	gog_axis_map_get_extents (a_map, &start, &stop);
+	gog_chart_map_2D_to_view (c_map, start, 0, &ax, &ay);
+	gog_chart_map_2D_to_view (c_map, stop, 0, &bx, &by);
+
+	gog_chart_map_free (c_map);
+
+	switch (action) {
+		case GOG_AXIS_BASE_RENDER:
+			axis_line_render (GOG_AXIS_BASE (view->model),
+				view->renderer, ax, ay, bx - ax , by - ay, 
+				GO_SIDE_RIGHT, -1.,
+				axis_base->major_tick_labeled, TRUE);
+			break;
+
+		case GOG_AXIS_BASE_PADDING_REQUEST:
+			axis_line_bbox = axis_line_get_bbox (GOG_AXIS_BASE (view->model),
+							     view->renderer, ax, ay, bx - ax, by - ay, 
+							     GO_SIDE_RIGHT, -1.,
+							     axis_base->major_tick_labeled);
+			padding->wl = MAX (0., tmp.x - axis_line_bbox.x);
+			padding->ht = MAX (0., tmp.y - axis_line_bbox.y);
+			padding->wr = MAX (0., axis_line_bbox.x + axis_line_bbox.w - tmp.x - tmp.w);
+			padding->hb = MAX (0., axis_line_bbox.y + axis_line_bbox.h - tmp.y - tmp.h);
+			break;
+
+		case GOG_AXIS_BASE_POINT:
+			return axis_line_point (x, y, ax, ay, bx - ax, by - ay);
+			break;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+xy_process (GogAxisBaseAction action, GogView *view, GogViewPadding *padding,
+	    GogViewAllocation const *plot_area, double x, double y)
+{
+	GogAxisBase *axis_base = GOG_AXIS_BASE (view->model);
+	GogAxis *cross_axis;
+	GogChartMap *c_map;
+	GogAxisMap *a_map;
+	GogViewAllocation tmp = *plot_area;
+	GogViewAllocation axis_line_bbox;
+	double ax, ay, bx, by;
+	GogAxisType axis_type = gog_axis_get_atype (axis_base->axis);
+	double position;
+	double minimum, maximum, start, stop;
+	GOGeometrySide side;
+
+	g_return_val_if_fail (axis_type == GOG_AXIS_X ||
+			      axis_type == GOG_AXIS_Y, FALSE);
+
+	cross_axis = gog_axis_base_get_crossed_axis (axis_base);
+	if (axis_type == GOG_AXIS_X) {
+		c_map = gog_chart_map_new (axis_base->chart, plot_area, axis_base->axis, cross_axis, NULL, TRUE);
+		a_map = gog_chart_map_get_axis_map (c_map, 1);
+	} else {
+		c_map = gog_chart_map_new (axis_base->chart, plot_area, cross_axis, axis_base->axis, NULL, TRUE);
+		a_map = gog_chart_map_get_axis_map (c_map, 0);
+	}
+
+	gog_axis_map_get_extents (a_map, &start, &stop);
+	gog_axis_map_get_bounds (a_map, &minimum, &maximum);
+	if (axis_base->position == GOG_AXIS_CROSS) {
+		position = gog_axis_base_get_cross_location (axis_base);
+		if (position < minimum || position > maximum) {
+			gog_chart_map_free (c_map);
+			return FALSE;
+		}
+	} else
+		position = axis_base->position == GOG_AXIS_AT_LOW ?  start : stop;
+
+	side = axis_base->position == GOG_AXIS_AT_LOW ? GO_SIDE_RIGHT : GO_SIDE_LEFT;
+
+	if (axis_type == GOG_AXIS_X) {
+		a_map = gog_chart_map_get_axis_map (c_map, 0);
+		gog_axis_map_get_extents (a_map, &start, &stop);
+		gog_chart_map_2D_to_view (c_map, start, position, &ax, &ay);
+		gog_chart_map_2D_to_view (c_map, stop, position, &bx, &by);
+	} else {
+		a_map = gog_chart_map_get_axis_map (c_map, 1);
+		gog_axis_map_get_extents (a_map, &start, &stop);
+		gog_chart_map_2D_to_view (c_map, position, start, &ax, &ay);
+		gog_chart_map_2D_to_view (c_map, position, stop, &bx, &by);
+		side = (side == GO_SIDE_LEFT) ? GO_SIDE_RIGHT : GO_SIDE_LEFT;
+	}
+	gog_chart_map_free (c_map);
+
+	switch (action) {
+		case GOG_AXIS_BASE_RENDER:
+			axis_line_render (GOG_AXIS_BASE (view->model),
+				view->renderer, ax, ay, bx - ax , by - ay, side, -1.,
+				axis_base->major_tick_labeled, TRUE);
+			break;
+
+		case GOG_AXIS_BASE_PADDING_REQUEST:
+			axis_line_bbox = axis_line_get_bbox (GOG_AXIS_BASE (view->model),
+							     view->renderer, ax, ay, bx - ax, by - ay, side, -1.,
+							     axis_base->major_tick_labeled);
+			padding->wl = MAX (0., tmp.x - axis_line_bbox.x);
+			padding->ht = MAX (0., tmp.y - axis_line_bbox.y);
+			padding->wr = MAX (0., axis_line_bbox.x + axis_line_bbox.w - tmp.x - tmp.w);
+			padding->hb = MAX (0., axis_line_bbox.y + axis_line_bbox.h - tmp.y - tmp.h);
+			break;
+
+		case GOG_AXIS_BASE_POINT:
+			return axis_line_point (x, y, ax, ay, bx - ax, by - ay);
+			break;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+radar_process (GogAxisBaseAction action, GogView *view, GogViewPadding *padding,
+	       GogViewAllocation const *area, double x, double y)
+{
+	GogAxisBase *axis_base = GOG_AXIS_BASE (view->model);
+	GogAxis *cross_axis;
+	GogChartMap *c_map;
+	GogAxisMap *a_map;
+	GogAxisType axis_type = gog_axis_get_atype (axis_base->axis);
+	GogChartMapPolarData *parms;
+	GogViewAllocation tmp = *area;
+	GogViewAllocation bbox;
+	GOGeometrySide side;
+	double start, stop, minimum, maximum;
+	double bx, by, position;
+	unsigned i;
+	gboolean point = FALSE;
+
+	g_return_val_if_fail (axis_type == GOG_AXIS_CIRCULAR ||
+			      axis_type == GOG_AXIS_RADIAL, FALSE);
+
+	cross_axis = gog_axis_base_get_crossed_axis (axis_base);
+
+	if (axis_type == GOG_AXIS_RADIAL) {
+		c_map = gog_chart_map_new (axis_base->chart, area, cross_axis, axis_base->axis, NULL,
+					   action == GOG_AXIS_BASE_PADDING_REQUEST);
+		parms = gog_chart_map_get_polar_parms (c_map);
+		a_map = gog_chart_map_get_axis_map (c_map, 0);
+		gog_axis_map_get_bounds (a_map, &minimum, &maximum);
+		gog_axis_map_get_extents (a_map, &start, &stop);
+		if (axis_base->position == GOG_AXIS_CROSS) {
+			position = gog_axis_base_get_cross_location (axis_base);
+			if (position < minimum || position > maximum) {
+				gog_chart_map_free (c_map);
+				return FALSE;
+			}
+		} else
+			position = axis_base->position == GOG_AXIS_AT_LOW ?  start : stop;
+		side = axis_base->position == GOG_AXIS_AT_LOW ? GO_SIDE_RIGHT : GO_SIDE_LEFT;
+
+		a_map = gog_chart_map_get_axis_map (c_map, 1);
+		gog_axis_map_get_extents (a_map, &start, &stop);
+
+		switch (action) {
+			case GOG_AXIS_BASE_RENDER:
+				if (gog_axis_is_discrete (cross_axis))
+					for (i = parms->th0; i <= parms->th1; i++) {
+					       	gog_chart_map_2D_to_view (c_map, i, stop, &bx, &by);
+						axis_line_render (axis_base, view->renderer,
+								  parms->cx, parms->cy,
+								  bx - parms->cx, by - parms->cy,
+								  side, 0.1, i == parms->th0 && axis_base->major_tick_labeled,
+								  FALSE);
+					} else {
+					       	gog_chart_map_2D_to_view (c_map, position, stop, &bx, &by);
+						axis_line_render (axis_base, view->renderer,
+								  parms->cx, parms->cy,
+								  bx - parms->cx, by - parms->cy,
+								  side, 0., axis_base->major_tick_labeled,
+								  FALSE);
+					}
+				break;
+			case GOG_AXIS_BASE_PADDING_REQUEST:
+				if (gog_axis_is_discrete (cross_axis)) break;
+
+				gog_chart_map_2D_to_view (c_map, position, stop, &bx, &by);
+				bbox = axis_line_get_bbox (axis_base,
+					view->renderer, parms->cx, parms->cy,
+					bx - parms->cx, by - parms->cy, side, -1.,
+					axis_base->major_tick_labeled);
+				padding->wl = MAX (0., tmp.x - bbox.x);
+				padding->ht = MAX (0., tmp.y - bbox.y);
+				padding->wr = MAX (0., bbox.x + bbox.w - tmp.x - tmp.w);
+				padding->hb = MAX (0., bbox.y + bbox.h - tmp.y - tmp.h);
+				break;
+			case GOG_AXIS_BASE_POINT:
+				if (gog_axis_is_discrete (cross_axis))
+					for (i = parms->th0; i <= parms->th1; i++) {
+						gog_chart_map_2D_to_view (c_map, i, stop, &bx, &by);
+						point = axis_line_point (x, y, parms->cx, parms->cy,
+								     bx - parms->cx, by - parms->cy);
+						if (point)
+							break;
+					}
+				else {
+					gog_chart_map_2D_to_view (c_map, position, stop, &bx, &by);
+					point = axis_line_point (x, y, parms->cx, parms->cy,
+								 bx - parms->cx, by - parms->cy);
+				}
+				break;
+		}
+		gog_chart_map_free (c_map);
+	} else {
+		c_map = gog_chart_map_new (axis_base->chart, area, axis_base->axis, cross_axis, NULL,
+					   action == GOG_AXIS_BASE_PADDING_REQUEST);
+		parms = gog_chart_map_get_polar_parms (c_map);
+
+		switch (action) {
+			case GOG_AXIS_BASE_RENDER:
+				axis_circle_render (GOG_AXIS_BASE (view->model), view->renderer,
+						    c_map, gog_axis_is_discrete (axis_base->axis),
+						    axis_base->major_tick_labeled);
+				break;
+			case GOG_AXIS_BASE_PADDING_REQUEST:
+				bbox = axis_circle_get_bbox (axis_base, view->renderer, c_map,
+							     axis_base->major_tick_labeled);
+				padding->wl = MAX (0., tmp.x - bbox.x);
+				padding->ht = MAX (0., tmp.y - bbox.y);
+				padding->wr = MAX (0., bbox.x + bbox.w - tmp.x - tmp.w);
+				padding->hb = MAX (0., bbox.y + bbox.h - tmp.y - tmp.h);
+				break;
+			case GOG_AXIS_BASE_POINT:
+				point = axis_circle_point (x, y, parms->cx, parms->cy, parms->rx, parms->th1);
+				break;
+		}
+		gog_chart_map_free (c_map);
+	}
+	return point;
+}
+
+static gboolean
+gog_axis_base_view_info_at_point (GogView *view, double x, double y,
+				  GogObject const *cur_selection,
+				  GogObject **obj, char **name)
+{
+	GogAxisBase *axis_base = GOG_AXIS_BASE (view->model);
+	GogAxisSet axis_set = gog_chart_get_axis_set (axis_base->chart);
+	gboolean pointed = FALSE;
+	GogViewAllocation const *plot_area;
+
+	/* FIXME: not nice */
+	if (IS_GOG_AXIS (view->model))
+		plot_area = gog_chart_view_get_plot_area (view->parent);
+	else
+		plot_area = gog_chart_view_get_plot_area (view->parent->parent);
+
+	switch (axis_set) {
+		case GOG_AXIS_SET_X:
+			pointed = x_process (GOG_AXIS_BASE_POINT, view, NULL, plot_area, x, y);
+			break;
+		case GOG_AXIS_SET_XY:
+			pointed = xy_process (GOG_AXIS_BASE_POINT, view, NULL, plot_area, x, y);
+			break;
+		case GOG_AXIS_SET_XY_pseudo_3d:
+			if (gog_axis_get_atype (axis_base->axis) != GOG_AXIS_PSEUDO_3D)
+				pointed = xy_process (GOG_AXIS_BASE_POINT, view, NULL, plot_area, x, y);
+			break;
+		case GOG_AXIS_SET_RADAR:
+			pointed = radar_process (GOG_AXIS_BASE_POINT, view, NULL, plot_area, x, y);
+			break;
+		case GOG_AXIS_SET_UNKNOWN:
+			break;
+		default:
+			g_warning ("[AxisBaseView::info_at_point] not implemented for this axis set (%i)",
+				   axis_set);
+			break;
+	}
+
+	if (pointed) {
+		if (obj != NULL)
+			*obj = view->model;
+		if (name != NULL)
+			*name = NULL;
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static void
+gog_axis_base_view_padding_request (GogView *view, GogViewAllocation const *bbox, GogViewPadding *padding)
+{
+	GogAxisSet axis_set;
+	GogAxisBase *axis_base = GOG_AXIS_BASE (view->model);
+	GogStyle *style = axis_base->base.style;
+
+	axis_set = gog_chart_get_axis_set (axis_base->chart);
+
+	gog_renderer_push_style (view->renderer, style);
+
+	switch (axis_set) {
+		case GOG_AXIS_SET_X:
+			x_process (GOG_AXIS_BASE_PADDING_REQUEST, view, padding, bbox, 0., 0.);
+			break;
+		case GOG_AXIS_SET_XY:
+			xy_process (GOG_AXIS_BASE_PADDING_REQUEST, view, padding, bbox, 0., 0.);
+			break;
+		case GOG_AXIS_SET_XY_pseudo_3d:
+			if (gog_axis_get_atype (axis_base->axis) != GOG_AXIS_PSEUDO_3D)
+				xy_process (GOG_AXIS_BASE_PADDING_REQUEST, view, padding, bbox, 0., 0.);
+			break;
+		case GOG_AXIS_SET_RADAR:
+			radar_process (GOG_AXIS_BASE_PADDING_REQUEST, view, padding, bbox, 0., 0.);
+			break;
+		case GOG_AXIS_SET_UNKNOWN:
+			break;
+		default:
+			g_warning ("[AxisBaseView::padding_request] not implemented for this axis set (%i)",
+				   axis_set);
+			break;
+	}
+
+	gog_renderer_pop_style (view->renderer);
+}
+
+static void
+gog_axis_base_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogAxisSet axis_set;
+	GogAxisBase *axis_base = GOG_AXIS_BASE (view->model);
+	GogStyle *style = axis_base->base.style;
+	GogViewAllocation const *plot_area;
+
+	axis_set = gog_chart_get_axis_set (axis_base->chart);
+	/* FIXME: not nice */
+	if (IS_GOG_AXIS (view->model))
+		plot_area = gog_chart_view_get_plot_area (view->parent);
+	else
+		plot_area = gog_chart_view_get_plot_area (view->parent->parent);
+
+	gog_renderer_push_style (view->renderer, style);
+
+	switch (axis_set) {
+		case GOG_AXIS_SET_X:
+			x_process (GOG_AXIS_BASE_RENDER, view, NULL, plot_area, 0., 0.);
+			break;
+		case GOG_AXIS_SET_XY:
+			xy_process (GOG_AXIS_BASE_RENDER, view, NULL, plot_area, 0., 0.);
+			break;
+		case GOG_AXIS_SET_XY_pseudo_3d:
+			if (gog_axis_get_atype (axis_base->axis) != GOG_AXIS_PSEUDO_3D)
+				xy_process (GOG_AXIS_BASE_RENDER, view, NULL, plot_area, 0., 0.);
+			break;
+		case GOG_AXIS_SET_RADAR:
+			radar_process (GOG_AXIS_BASE_RENDER, view, NULL, plot_area, 0., 0.);
+			break;
+		case GOG_AXIS_SET_UNKNOWN:
+			break;
+		default:
+			g_warning ("[AxisBaseView::render] not implemented for this axis set (%i)",
+				   axis_set);
+			break;
+	}
+
+	gog_renderer_pop_style (view->renderer);
+}
+
+static void
+gog_axis_base_view_class_init (GogAxisBaseViewClass *gview_klass)
+{
+	GogViewClass *view_klass = (GogViewClass *) gview_klass;
+
+	gab_view_parent_klass = g_type_class_peek_parent (gview_klass);
+
+	view_klass->info_at_point	= gog_axis_base_view_info_at_point;
+	view_klass->padding_request 	= gog_axis_base_view_padding_request;
+	view_klass->render 		= gog_axis_base_view_render;
+}
+
+GSF_CLASS (GogAxisBaseView, gog_axis_base_view,
+	   gog_axis_base_view_class_init, NULL,
+	   GOG_VIEW_TYPE)
+
+/*****************************************************************************/
+/*****************************************************************************/
+/*****************************************************************************/
+
+struct _GogAxisLine {
+	GogAxisBase	base;
+};
+
+typedef GogAxisBaseClass GogAxisLineClass;
+
+static GObjectClass *gal_parent_klass;
+
+static void
+gog_axis_line_class_init (GObjectClass *gobject_klass)
+{
+	gal_parent_klass = g_type_class_peek_parent (gobject_klass);
+}
+
+static void
+gog_axis_line_dataset_dims (GogDataset const *set, int *first, int *last)
+{
+	*first = GOG_AXIS_ELEM_CROSS_POINT;
+	*last  = GOG_AXIS_ELEM_CROSS_POINT;
+}
+
+static GogDatasetElement *
+gog_axis_line_dataset_get_elem (GogDataset const *set, int dim_i)
+{
+	GogAxisBase *axis_base = GOG_AXIS_BASE (set);
+
+	g_return_val_if_fail (dim_i == GOG_AXIS_ELEM_CROSS_POINT, NULL);
+
+	return &axis_base->cross_location;
+}
+
+static void
+gog_axis_line_dim_changed (GogDataset *set, int dim_i)
+{
+	gog_object_emit_changed (GOG_OBJECT (set), TRUE);
+}
+
+static void
+gog_axis_line_dataset_init (GogDatasetClass *iface)
+{
+	iface->dims	   = gog_axis_line_dataset_dims;
+	iface->get_elem	   = gog_axis_line_dataset_get_elem;
+	iface->dim_changed = gog_axis_line_dim_changed;
+}
+
+GSF_CLASS_FULL (GogAxisLine, gog_axis_line,
+		NULL, NULL, gog_axis_line_class_init, NULL,
+		NULL /*init*/, GOG_AXIS_BASE_TYPE, 0,
+		GSF_INTERFACE (gog_axis_line_dataset_init, GOG_DATASET_TYPE))

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-line.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,51 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-axis-line.h :
+ *
+ * Copyright (C) 2005 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_AXIS_BASE_H
+#define GOG_AXIS_BASE_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GOG_AXIS_AT_LOW,
+	GOG_AXIS_CROSS,
+	GOG_AXIS_AT_HIGH,
+	GOG_AXIS_AUTO
+} GogAxisPosition;
+
+typedef enum {
+	GOG_AXIS_TICK_NONE,
+	GOG_AXIS_TICK_MAJOR,
+	GOG_AXIS_TICK_MINOR
+} GogAxisTickTypes;
+
+#define GOG_AXIS_LINE_TYPE	(gog_axis_line_get_type ())
+#define GOG_AXIS_LINE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_AXIS_LINE_TYPE, GogAxisLine))
+#define IS_GOG_AXIS_LINE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_AXIS_LINE_TYPE))
+
+GType gog_axis_line_get_type (void);
+
+G_END_DECLS
+
+#endif /*GOG_AXIS_BASE_H*/
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,751 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="axis_prefs">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window2</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkHBox" id="axis_pref_box">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">24</property>
+
+      <child>
+	<widget class="GtkVBox" id="vbox7">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">12</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="bound_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label1">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Bounds&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment16">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">6</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">12</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkTable" id="bound_table">
+		      <property name="visible">True</property>
+		      <property name="n_rows">2</property>
+		      <property name="n_columns">2</property>
+		      <property name="homogeneous">False</property>
+		      <property name="row_spacing">6</property>
+		      <property name="column_spacing">12</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label7">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Automatic</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="mapping_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label2">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Mapping&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment9">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">6</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">12</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox4">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkCheckButton" id="invert-axis">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">_Invert axis</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkHBox" id="map_type_box">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="map_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Type:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkComboBox" id="map_type_combo">
+			      <property name="visible">True</property>
+			      <property name="items" translatable="yes"></property>
+			      <property name="add_tearoffs">False</property>
+			      <property name="focus_on_click">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+<widget class="GtkWindow" id="axis_base_prefs">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window3</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkVBox" id="axis_base_pref_box">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkHBox" id="hbox3">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">24</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="major_tick_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label3">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Major ticks&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment12">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">6</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">12</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox13">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkCheckButton" id="major-tick-out">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">_Outside</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkCheckButton" id="major-tick-in">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">_Inside</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkCheckButton" id="major-tick-labeled">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">_Show Labels</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="minor_tick_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label4">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Minor ticks&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment13">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">6</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">12</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox15">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkCheckButton" id="minor-tick-out">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">O_utside</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkCheckButton" id="minor-tick-in">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">I_nside</property>
+			  <property name="use_underline">True</property>
+			  <property name="relief">GTK_RELIEF_NORMAL</property>
+			  <property name="focus_on_click">True</property>
+			  <property name="active">False</property>
+			  <property name="inconsistent">False</property>
+			  <property name="draw_indicator">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkVBox" id="position_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label5">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Position&lt;/b&gt;</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkAlignment" id="alignment14">
+	      <property name="visible">True</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xscale">1</property>
+	      <property name="yscale">1</property>
+	      <property name="top_padding">6</property>
+	      <property name="bottom_padding">0</property>
+	      <property name="left_padding">12</property>
+	      <property name="right_padding">0</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox17">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkRadioButton" id="axis_low">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">_Low</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkRadioButton" id="axis_high">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">_High</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		      <property name="group">axis_low</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox4">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">12</property>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment15">
+			  <property name="visible">True</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkRadioButton" id="axis_cross">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="label" translatable="yes">_Cross</property>
+			      <property name="use_underline">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+			      <property name="active">False</property>
+			      <property name="inconsistent">False</property>
+			      <property name="draw_indicator">True</property>
+			      <property name="group">axis_low</property>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkComboBox" id="cross_axis_combo">
+			  <property name="visible">True</property>
+			  <property name="add_tearoffs">False</property>
+			  <property name="focus_on_click">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label6">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">at</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="cross_location_alignment">
+			  <property name="visible">True</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xscale">1</property>
+			  <property name="yscale">1</property>
+			  <property name="top_padding">0</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <placeholder/>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2024 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-axis.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-axis-line-impl.h>
+#include <goffice/graph/gog-grid-line.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-label.h>
+#include <goffice/graph/gog-plot.h>
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/gtk/go-format-sel.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkcelllayout.h>
+#include <gtk/gtkcheckbutton.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtkmisc.h>
+#include <gtk/gtknotebook.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtktogglebutton.h>
+
+#include <string.h>
+
+/* this should be per model */
+#define PAD_HACK	4	/* pts */
+
+struct _GogAxis {
+	GogAxisBase	 base;
+
+	GogAxisType	 type;
+	GSList		*contributors;
+
+	GogDatasetElement source [GOG_AXIS_ELEM_CROSS_POINT];
+	double		  auto_bound [GOG_AXIS_ELEM_CROSS_POINT];
+	gboolean inverted; /* apply to all map type */
+
+	double		min_val, max_val;
+	double		logical_min_val, logical_max_val;
+	gpointer	min_contrib, max_contrib; /* NULL means use the manual sources */
+	gboolean	is_discrete;
+	gboolean	center_on_ticks;
+	GODataVector   *labels;
+	GogPlot	       *plot_that_supplied_labels;
+	GOFormat       *format, *assigned_format;
+
+	GogAxisMapDesc const 	*map_desc;
+
+	GogAxisTick	*ticks;
+	unsigned	 tick_nbr;
+};
+
+/*****************************************************************************/
+
+#define TICK_LABEL_PAD_VERT	0
+#define TICK_LABEL_PAD_HORIZ	1
+
+#define GOG_AXIS_MAX_TICK_NBR				1000
+#define GOG_AXIS_LOG_AUTO_MAX_MAJOR_TICK_NBR 		8
+#define GOG_AXIS_DISCRETE_AUTO_MAX_MAJOR_TICK_NBR 	20
+
+static void gog_axis_set_ticks (GogAxis *axis,int tick_nbr, GogAxisTick *ticks);
+
+static GogAxisTick *
+get_adjusted_tick_array (GogAxisTick *ticks, int allocated_size, int exact_size) 
+{
+	GogAxisTick *tmp_ticks;
+	
+	if (exact_size > 0) {
+		if (exact_size != allocated_size) {
+			tmp_ticks = g_new (GogAxisTick, exact_size);
+			memcpy (tmp_ticks, ticks, sizeof (GogAxisTick) * exact_size);
+			g_free (ticks);
+		} else
+			tmp_ticks = ticks;
+	} else {
+		g_free (ticks);
+		tmp_ticks = NULL;
+	}
+
+	return tmp_ticks;
+}
+
+static GogAxisTick *
+create_invalid_axis_ticks (double min, double max) 
+{
+	GogAxisTick *ticks;
+	
+	ticks = g_new (GogAxisTick, 2);
+	ticks[0].position = min;
+	ticks[1].position = max;
+	ticks[0].type = ticks[1].type = GOG_AXIS_TICK_MAJOR;
+	ticks[0].label = g_strdup ("##");
+	ticks[1].label = g_strdup ("##");
+
+	return ticks;
+}
+
+/*
+ * Discrete mapping
+ */
+
+typedef struct
+{
+	double min;
+	double max;
+	double scale;
+	double a;
+	double b;
+} MapData;
+
+static gboolean
+map_discrete_init (GogAxisMap *map, double offset, double length)
+{
+	MapData *data;
+	
+	map->data = g_new (MapData, 1);
+	data = map->data;
+
+	if (gog_axis_get_bounds (map->axis, &data->min, &data->max)) {
+		data->scale = 1.0 / (data->max - data->min);
+		data->a = data->scale * length;
+		data->b = offset - data->a * data->min;
+		return TRUE;
+	}
+	data->min = 0.0;
+	data->max = 1.0;
+	data->scale = 1.0;
+	data->a = length;
+	data->b = offset;
+	return FALSE;
+}
+
+static double
+map_discrete (GogAxisMap *map, double value) 
+{
+	MapData *data = map->data;
+	
+	return (value - data->min) * data->scale;
+}
+
+static double
+map_discrete_to_view (GogAxisMap *map, double value)
+{
+	MapData *data = map->data;
+
+	return map->axis->inverted ? 
+		(data->min + data->max - value) * data->a + data->b :
+		value * data->a + data->b;
+}
+
+static double
+map_discrete_from_view (GogAxisMap *map, double value)
+{
+	MapData *data = map->data;
+
+	return map->axis->inverted ? 
+		data->min + data->max - (value - data->b) / data->a :
+		(value - data->b) / data->a;
+}
+
+static void
+map_discrete_auto_bound (GogAxis *axis, 
+			 double minimum, 
+			 double maximum, 
+			 double *bound)
+{
+	if ((maximum - minimum) > GOG_AXIS_DISCRETE_AUTO_MAX_MAJOR_TICK_NBR) 
+		bound [GOG_AXIS_ELEM_MAJOR_TICK] = 
+		bound [GOG_AXIS_ELEM_MINOR_TICK] =
+			ceil ((maximum - minimum + 1.0) / 
+			      (double) GOG_AXIS_DISCRETE_AUTO_MAX_MAJOR_TICK_NBR); 
+	else
+		bound [GOG_AXIS_ELEM_MAJOR_TICK] = 
+		bound [GOG_AXIS_ELEM_MINOR_TICK] = 1.;
+
+	bound [GOG_AXIS_ELEM_MIN] = minimum;
+	bound [GOG_AXIS_ELEM_MAX] = maximum;
+}
+
+static void
+map_discrete_calc_ticks (GogAxis *axis) 
+{
+	GogAxisTick *ticks;
+	gboolean valid;
+	double maximum, minimum;
+	double tick_start, label_start;
+	int tick_nbr, label_nbr;
+	int i, j, index;
+	int major_tick, major_label;
+
+	major_tick = go_rint (gog_axis_get_entry (axis, GOG_AXIS_ELEM_MAJOR_TICK, NULL));
+	major_label = go_rint (gog_axis_get_entry (axis, GOG_AXIS_ELEM_MINOR_TICK, NULL));
+	if (major_tick < 1)
+		major_tick = 1;
+	if (major_label < 1)
+		major_label = 1;
+	
+	valid = gog_axis_get_bounds (axis, &minimum, &maximum);
+	if (!valid) {
+		gog_axis_set_ticks (axis, 2, create_invalid_axis_ticks (0.0, 1.0));
+		return;
+	}
+		
+	tick_start = axis->center_on_ticks ? 
+		ceil (minimum / (double) major_tick) * major_tick : 
+		ceil ((minimum - 0.5) / (double) major_tick) * major_tick + 0.5;
+	label_start = ceil (minimum / (double) major_label) * major_label;
+	tick_nbr = floor (go_add_epsilon (maximum - tick_start) / major_tick + 1.0);
+	label_nbr = floor (go_add_epsilon (maximum - label_start) / major_label + 1.0);
+	tick_nbr = CLAMP (tick_nbr, 0, GOG_AXIS_MAX_TICK_NBR);
+	label_nbr = CLAMP (label_nbr, 0, GOG_AXIS_MAX_TICK_NBR);
+	if (tick_nbr < 1  && label_nbr < 1) {
+		gog_axis_set_ticks (axis, 2, create_invalid_axis_ticks (0.0, 1.0));
+		return;
+	}
+	ticks = g_new (GogAxisTick, tick_nbr + label_nbr);
+	
+	for (i = 0; i < tick_nbr; i++) {
+		ticks[i].position = tick_start + (double) (i) * major_tick;
+		ticks[i].type = GOG_AXIS_TICK_MAJOR;
+		ticks[i].label = NULL;
+	}
+	for (i = 0, j = tick_nbr; i < label_nbr; i++, j++) {
+		ticks[j].position = go_rint (label_start + (double) (i) * major_label);
+		index = ticks[j].position - 1;
+		ticks[j].type = GOG_AXIS_TICK_NONE;
+		if (axis->labels != NULL) {
+			if (index < go_data_vector_get_len (axis->labels) && index >= 0)
+				ticks[j].label = go_data_vector_get_str (axis->labels, index);
+			else
+				ticks[j].label = NULL;
+		}
+		else
+			ticks[j].label = g_strdup_printf ("%d", index + 1);
+	}
+
+	gog_axis_set_ticks (axis, tick_nbr + label_nbr, ticks);
+}
+
+/*
+ *  Linear mapping 
+ */
+
+static gboolean
+map_linear_init (GogAxisMap *map, double offset, double length)
+{
+	MapData *data;
+	
+	map->data = g_new (MapData, 1);
+	data = (MapData *) map->data;
+
+	if (gog_axis_get_bounds (map->axis, &data->min, &data->max)) {
+		data->scale = 1 / (data->max - data->min);
+		data->a = data->scale * length;
+		data->b = offset - data->a * data->min;
+		return TRUE;
+	}
+	data->min = 0.0;
+	data->max = 1.0;
+	data->scale = 1.0;
+	data->a = length;
+	data->b = offset;
+	return FALSE;
+}
+
+static double
+map_linear (GogAxisMap *map, double value) 
+{
+	MapData *data = map->data;
+	
+	return (value - data->min) * data->scale;
+}
+
+static double
+map_linear_to_view (GogAxisMap *map, double value)
+{
+	MapData *data = map->data;
+
+	return map->axis->inverted ? 
+		(data->min + data->max - value) * data->a + data->b :
+		value * data->a + data->b;
+}
+
+static double
+map_linear_from_view (GogAxisMap *map, double value)
+{
+	MapData *data = map->data;
+
+	return map->axis->inverted ? 
+		data->min + data->max - (value - data->b) / data->a :
+		(value - data->b) / data->a;
+}
+
+static double
+map_baseline (GogAxisMap *map)
+{
+	MapData *data = map->data;
+
+	if (0. < data->min)
+		return map_linear_to_view (map, data->min);
+	else if (0 > data->max)
+		return map_linear_to_view (map, data->max);
+
+	return map_linear_to_view (map, 0.);
+}
+
+static void
+map_bounds (GogAxisMap *map, double *minimum, double *maximum)
+{
+	MapData *data = map->data;
+
+	if (minimum != NULL) *minimum = data->min;
+	if (maximum != NULL) *maximum = data->max;	
+}
+
+static void
+map_linear_auto_bound (GogAxis *axis, double minimum, double maximum, double *bound)
+{
+	double step, range, mant;
+	int expon;
+
+	if (gog_axis_get_atype (axis) == GOG_AXIS_CIRCULAR) {
+		bound[GOG_AXIS_ELEM_MIN] = 0.0;
+		bound[GOG_AXIS_ELEM_MAX] = 360.0;
+		bound[GOG_AXIS_ELEM_MAJOR_TICK] = 30.0;
+		bound[GOG_AXIS_ELEM_MINOR_TICK] = 10.0;
+		return;
+	}	
+
+	range = fabs (maximum - minimum);
+
+	/* handle singletons */
+	if (go_sub_epsilon (range) <= 0.) {
+		if (maximum > 0)
+			minimum = 0.;
+		else if (minimum < 0.)
+			maximum = 0.;
+		else {
+			maximum = 1;
+			minimum = 0;
+		}
+
+		range = fabs (maximum - minimum);
+	}
+
+	step  = pow (10, go_fake_floor (log10 (range)));
+	if (range/step < 1.6)
+		step /= 5.;	/* .2 .4 .6 */
+	else if (range/step < 3)
+		step /= 2.;	/* 0 5 10 */
+	else if (range/step > 8)
+		step *= 2.;	/* 2 4 6 */
+
+	/* we want the bounds to be loose so jump up a step if we get too close */
+	mant = frexp (minimum / step, &expon);
+	bound [GOG_AXIS_ELEM_MIN] = step * floor (ldexp (mant - DBL_EPSILON, expon));
+	mant = frexp (maximum / step, &expon);
+	bound [GOG_AXIS_ELEM_MAX] = step * ceil (ldexp (mant + DBL_EPSILON, expon));
+	bound [GOG_AXIS_ELEM_MAJOR_TICK] = step;
+	bound [GOG_AXIS_ELEM_MINOR_TICK] = step / 5.;
+
+	/* pull to zero if its nearby (do not pull both directions to 0) */
+	if (bound [GOG_AXIS_ELEM_MIN] > 0 &&
+	    (bound [GOG_AXIS_ELEM_MIN] - 10. * step) < 0)
+		bound [GOG_AXIS_ELEM_MIN] = 0;
+	else if (bound [GOG_AXIS_ELEM_MAX] < 0 &&
+	    (bound [GOG_AXIS_ELEM_MAX] + 10. * step) > 0)
+		bound [GOG_AXIS_ELEM_MAX] = 0;
+
+	/* The epsilon shift can pull us away from a zero we want to
+	 * keep (eg percentage bars withno negative elements) */
+	if (bound [GOG_AXIS_ELEM_MIN] < 0 && minimum >= 0.)
+		bound [GOG_AXIS_ELEM_MIN] = 0;
+	else if (bound [GOG_AXIS_ELEM_MAX] > 0 && maximum <= 0.)
+		bound [GOG_AXIS_ELEM_MAX] = 0;
+}
+
+static void
+map_linear_calc_ticks (GogAxis *axis) 
+{
+	GogAxisTick *ticks;
+	double maximum, minimum, start;
+	double tick_step;
+	double major_tick, minor_tick, ratio;
+	int tick_nbr, i;
+
+	if (!gog_axis_get_bounds (axis, &minimum, &maximum)) {
+		gog_axis_set_ticks (axis, 2, create_invalid_axis_ticks (0.0, 1.0));
+		return;
+	}
+
+	major_tick = gog_axis_get_entry (axis, GOG_AXIS_ELEM_MAJOR_TICK, NULL);
+	minor_tick = gog_axis_get_entry (axis, GOG_AXIS_ELEM_MINOR_TICK, NULL);
+	if (major_tick <= 0.) major_tick = maximum - minimum;
+	if (minor_tick <= 0.) minor_tick = maximum - minimum;
+	if (minor_tick < major_tick) {
+		minor_tick = major_tick / rint (major_tick / minor_tick);
+		tick_step = minor_tick;
+	} else
+		tick_step = major_tick;
+	
+	start = ceil (minimum / tick_step) * tick_step;
+	tick_nbr = floor (go_add_epsilon ((maximum - start) / tick_step + 1.0));
+	if (tick_nbr < 1 || tick_nbr > GOG_AXIS_MAX_TICK_NBR) {
+		gog_axis_set_ticks (axis, 0, NULL);
+		return;
+	}
+	ticks = g_new0 (GogAxisTick, tick_nbr);
+
+	for (i = 0; i < tick_nbr; i++) {
+		ticks[i].position = start + (double) i * tick_step;
+		if (fabs (ticks[i].position) < tick_step / 1E10)
+			ticks[i].position = 0.0;
+		ratio = ticks[i].position / major_tick;
+		if (fabs (ratio - rint (ratio)) < 1E-3) {
+			ticks[i].type = GOG_AXIS_TICK_MAJOR;
+				if (axis->assigned_format == NULL || 
+				    go_format_is_general (axis->assigned_format))
+					ticks[i].label = go_format_value (axis->format, ticks[i].position);
+				else
+					ticks[i].label = go_format_value (axis->assigned_format, ticks[i].position);
+			}
+		else {
+			ticks[i].type = GOG_AXIS_TICK_MINOR;
+			ticks[i].label = NULL;
+		}
+	}
+	gog_axis_set_ticks (axis, tick_nbr, ticks);
+}
+
+/*
+ * Logarithmic mapping
+ */
+
+typedef struct
+{
+	double min;
+	double max;
+	double scale;
+	double a;
+	double b;
+	double a_inv;
+	double b_inv;
+} MapLogData;
+
+static gboolean
+map_log_init (GogAxisMap *map, double offset, double length)
+{
+	MapLogData *data;
+	
+	map->data = g_new (MapLogData, 1);
+	data = map->data;
+
+	if (gog_axis_get_bounds (map->axis, &data->min, &data->max))  
+		if (data->min > 0.0)  {
+			data->min = log (data->min);
+			data->max = log (data->max);
+			data->scale = 1/ (data->max - data->min);
+			data->a = data->scale * length;
+			data->b = offset - data->a * data->min;
+			data->a_inv = -data->scale * length;
+			data->b_inv = offset + length - data->a_inv * data->min;
+			return TRUE;
+		}
+	
+	data->min = 0.0;
+	data->max = log (10.0);
+	data->scale = 1 / log(10.0);
+	data->a = data->scale * length;
+	data->b = offset;
+	data->a_inv = -data->scale * length;
+	data->b_inv = offset + length;
+
+	return FALSE;
+}
+
+static double
+map_log (GogAxisMap *map, double value) 
+{
+	MapLogData *data = map->data;
+	
+	return (log (value) - data->min) * data->scale;
+}
+
+static double
+map_log_to_view (GogAxisMap *map, double value)
+{
+	MapLogData *data = map->data;
+	double result;
+	
+	if (value <= 0.) 
+		/* Make libart happy */
+		result = map->axis->inverted ? -DBL_MAX : DBL_MAX;
+	else
+		result = map->axis->inverted ? 
+			log (value) * data->a_inv + data->b_inv :
+			log (value) * data->a + data->b;
+
+	return result;
+}
+
+static double
+map_log_from_view (GogAxisMap *map, double value)
+{
+	MapLogData *data = map->data;
+	
+	return  map->axis->inverted ? 
+		exp ((value - data->b_inv) / data->a_inv) :
+		exp ((value - data->b) / data->a);
+}
+
+static gboolean 
+map_log_finite (double value)
+{
+	return go_finite (value) && value > 0.;
+}
+
+static double
+map_log_baseline (GogAxisMap *map)
+{
+	MapLogData *data = map->data;
+
+	return map->axis->inverted ?
+		data->max * data->a_inv + data->b_inv :
+		data->min * data->a + data->b;
+}
+
+static void
+map_log_bounds (GogAxisMap *map, double *minimum, double *maximum)
+{
+	MapLogData *data = map->data;
+
+	if (minimum != NULL) *minimum = exp (data->min);
+	if (maximum != NULL) *maximum = exp (data->max);	
+}
+
+static void
+map_log_auto_bound (GogAxis *axis, double minimum, double maximum, double *bound)
+{
+	double step;
+
+	if (maximum <= 0.0)
+		maximum = 1.0;
+	if (minimum <= 0.0)
+		minimum = maximum / 100.0;
+	if (maximum < minimum)
+		maximum = minimum * 100.0;
+
+	maximum = ceil (log10 (maximum));
+	minimum = floor (log10 (minimum));
+	
+	step = ceil ((maximum - minimum + 1.0) / 
+		     (double) GOG_AXIS_LOG_AUTO_MAX_MAJOR_TICK_NBR); 
+
+	bound [GOG_AXIS_ELEM_MIN] = pow ( 10.0, minimum);
+	bound [GOG_AXIS_ELEM_MAX] = pow ( 10.0, maximum);
+	bound [GOG_AXIS_ELEM_MAJOR_TICK] = step;
+	bound [GOG_AXIS_ELEM_MINOR_TICK] = 8;
+}
+
+static void
+map_log_calc_ticks (GogAxis *axis)
+{
+	GogAxisTick *ticks;
+	double maximum, minimum;
+	double position;
+	int major_tick, minor_tick, major_label, start_tick;
+	int tick_nbr, i, j;
+	int count;
+
+	major_label = rint (gog_axis_get_entry (axis, GOG_AXIS_ELEM_MAJOR_TICK, NULL));
+	minor_tick = rint (gog_axis_get_entry (axis, GOG_AXIS_ELEM_MINOR_TICK, NULL) + 1.0);
+
+	if (!gog_axis_get_bounds (axis, &minimum, &maximum) || major_label < 1) {
+		gog_axis_set_ticks (axis, 2, create_invalid_axis_ticks (1.0, 10.0));
+		return;
+	}
+	if (minimum <= 0.0) {
+		gog_axis_set_ticks (axis, 2, create_invalid_axis_ticks (1.0, 10.0));
+		return;
+	}
+
+	start_tick = ceil (log10 (minimum));
+	tick_nbr = major_tick = ceil (ceil (log10 (maximum)) - floor (log10 (minimum)) + 1.0);
+	tick_nbr *= minor_tick;
+	if (tick_nbr < 1 || tick_nbr > GOG_AXIS_MAX_TICK_NBR) {
+		gog_axis_set_ticks (axis, 0, NULL);
+		return;
+	}
+	ticks = g_new0 (GogAxisTick, tick_nbr);
+
+	count = 0;
+	for (i = 0; i < major_tick; i++) {
+		position = pow (10.0, i + start_tick);
+		if (position >= go_sub_epsilon (minimum) && go_sub_epsilon (position) <= maximum) {
+			ticks[count].position = position;
+			if (i % major_label == 0) {
+				ticks[count].type = GOG_AXIS_TICK_MAJOR;
+				if (axis->assigned_format == NULL || 
+				    go_format_is_general (axis->assigned_format))
+					ticks[count].label = go_format_value (axis->format, ticks[count].position);
+				else
+					ticks[count].label = go_format_value (axis->assigned_format, ticks[count].position);
+				count++;
+			}
+			else {
+				ticks[count].type = GOG_AXIS_TICK_MINOR;
+				ticks[count].label = NULL;
+				count++;
+			}
+		} 
+			for (j = 1; j < minor_tick; j++) {
+				position = pow (10.0, i + start_tick) * (9.0 / (double)minor_tick * (double) j + 1.0);
+				if (position >= go_sub_epsilon (minimum) && go_sub_epsilon (position) <= maximum) {
+					ticks[count].position = position;
+					ticks[count].type = GOG_AXIS_TICK_MINOR;
+					ticks[count].label = NULL;
+					count++;
+				}
+			}
+	}
+
+	ticks = get_adjusted_tick_array (ticks, tick_nbr, count);
+	gog_axis_set_ticks (axis, count, ticks);
+}
+
+static const GogAxisMapDesc map_desc_discrete = 
+{
+	map_discrete,			map_discrete_to_view,
+	map_discrete_from_view,		go_finite,
+	map_baseline,			map_bounds,
+	map_discrete_init,		NULL,
+	map_discrete_auto_bound,	map_discrete_calc_ticks,
+	N_("Discrete"),			N_("Discrete mapping")
+};
+
+static const GogAxisMapDesc map_descs[] = 
+{
+	{
+		map_linear,		map_linear_to_view,
+		map_linear_from_view,   go_finite,
+		map_baseline,		map_bounds,
+		map_linear_init, 	NULL,	
+		map_linear_auto_bound, 	map_linear_calc_ticks,	
+		N_("Linear"),		N_("Linear mapping")
+	},
+	{
+		map_log,		map_log_to_view,
+		map_log_from_view,	map_log_finite,
+		map_log_baseline,	map_log_bounds,
+		map_log_init,		NULL,	
+		map_log_auto_bound, 	map_log_calc_ticks,	
+		N_("Log"),		N_("Logarithm mapping")
+	}
+};
+
+static void
+gog_axis_map_set_by_num (GogAxis *axis, unsigned num)
+{
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	if (num >= 0 && num < G_N_ELEMENTS (map_descs))
+		g_object_set (G_OBJECT (axis), "map-name", map_descs[num].name, NULL);
+	else
+		g_object_set (G_OBJECT (axis), "map-name", "", NULL);
+}
+
+static void
+gog_axis_map_populate_combo (GogAxis *axis, GtkComboBox *combo)
+{
+	unsigned i;
+
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	for (i = 0; i < G_N_ELEMENTS (map_descs); i++) {
+		gtk_combo_box_append_text (combo, _(map_descs[i].name));
+		if (!g_ascii_strcasecmp (map_descs[i].name,
+					 axis->map_desc->name))
+			gtk_combo_box_set_active (combo, i);
+	}
+}
+
+static void
+gog_axis_map_set (GogAxis *axis, char const *name) 
+{
+	unsigned i, map = 0;
+	
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	if (name != NULL)
+		for (i = 0; i < G_N_ELEMENTS(map_descs); i++) 
+			if (!g_ascii_strcasecmp (name, map_descs[i].name)) {
+				map = i;
+				break;
+			}
+
+	axis->map_desc = &map_descs[map];
+}
+
+/**
+ * gog_axis_map_is_valid
+ * @axis : #GogAxis
+ *
+ * Return TRUE if map is valid, ie bounds are valid.
+ **/
+
+gboolean
+gog_axis_map_is_valid (GogAxisMap *map) 
+{
+	g_return_val_if_fail (map != NULL, FALSE);
+
+	return map->is_valid;
+}
+
+/**
+ * gog_axis_map_new :
+ * @axis : #GogAxis
+ * @offset : start of plot area.
+ * @length : length of plot area.
+ *
+ * Return a new GogAxisMap for data mapping to plot window.
+ * offset and length are optional parameters to be used with 
+ * gog_axis_map_to_view in order to translates data coordinates 
+ * into canvas space.
+ **/
+
+GogAxisMap *
+gog_axis_map_new (GogAxis *axis, double offset, double length)
+{
+	GogAxisMap *map;
+	
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, NULL);
+	
+	map = g_new0 (GogAxisMap, 1);
+
+	g_object_ref (axis);
+	map->desc = axis->is_discrete ? &map_desc_discrete : axis->map_desc;
+	map->axis = axis;
+	map->data = NULL;
+	map->is_valid = FALSE;
+
+	if (map->desc->init != NULL)
+		map->is_valid = map->desc->init (map, offset, length);
+
+	return map;
+}
+
+/**
+ * gog_axis_map :
+ * @map : #GogAxisMap
+ * value : value to map to plot space.
+ *
+ * Return a value where [0,1.0] means a data within plot
+ * bounds.
+ * */
+
+double 
+gog_axis_map (GogAxisMap *map,
+	      double value)
+{
+	return (map->axis->inverted ?
+		1.0 - map->desc->map (map, value) :
+		map->desc->map (map, value));
+}
+
+/**
+ * gog_axis_map_from_view :
+ * @map : #GogAxisMap
+ * @value : value to unmap from canvas space.
+ **/
+
+double 
+gog_axis_map_from_view (GogAxisMap *map,
+			double value)
+{
+	return map->desc->map_from_view (map, value);
+}
+
+/**
+ * gog_axis_map_to_view :
+ * @map : #GogAxisMap
+ * @value : value to map to canvas space.
+ *
+ * Return a value in canvas coordinates, where
+ * [offset,offset+length] means a data within plot bounds.
+ **/
+
+double 
+gog_axis_map_to_view (GogAxisMap *map,
+			double value)
+{
+	return map->desc->map_to_view (map, value);
+}
+
+/**
+ * gog_axis_map_finite :
+ * @map : #GogAxisMap
+ * @value : value to test
+ *
+ * Returns TRUE if value means something in this map
+ **/
+
+gboolean 
+gog_axis_map_finite (GogAxisMap *map, double value)
+{
+	return map->desc->map_finite (value);
+}
+
+/**
+ * gog_axis_map_get_baseline :
+ * @map : #GogAxisMap
+ *
+ * Returns the baseline for the given map, in view coordinates,
+ * clipped to offset and offset+length, where offset and length
+ * are the parameters of gog_axis_map_new.
+ **/
+
+double
+gog_axis_map_get_baseline (GogAxisMap *map)
+{
+	return map->desc->map_baseline (map);
+}
+
+/**
+ * gog_axis_map_get_extents:
+ * @map : #GogAxisMap
+ * @start : start for this axis
+ * @stop : stop for this axis
+ *
+ * Returns start and stop for the given axis map in data coordinates. If
+ * axis is not inverted, start = minimum and stop = maximum. If axis is invalid, 
+ * it'll return arbitrary bounds. For example, an non inverted invalid X axis 
+ * will have start set to 0.0 and stop set to 1.0.
+ *
+ * minimum or maximum can be NULL.
+ * */
+
+void
+gog_axis_map_get_extents (GogAxisMap *map, double *start, double *stop)
+{
+	if (map->axis->inverted)
+		return map->desc->map_bounds (map, stop, start);
+	else
+		return map->desc->map_bounds (map, start, stop);
+}
+
+/**
+ * gog_axis_map_get_bounds:
+ * @map : #GogAxisMap
+ * @minimum : minimum for this axis
+ * @maximum : maximum for this axis
+ *
+ * Returns bounds for the given axis map in data coordinates. If axis is invalid, 
+ * it'll return arbitrary bounds. For example, for an invalid x axis, minimum = 0.0
+ * and maximum = 1.0. 
+ *
+ * minimum or maximum can be NULL.
+ * */
+
+void
+gog_axis_map_get_bounds (GogAxisMap *map, double *minimum, double *maximum)
+{
+	return map->desc->map_bounds (map, minimum, maximum);
+}
+/**
+ * gog_axis_map_free :
+ * @map : #GogAxisMap
+ *
+ * Free GogAxisMap object.
+ **/
+
+void
+gog_axis_map_free (GogAxisMap *map)
+{
+	g_return_if_fail (map != NULL);
+
+	if (map->desc->destroy != NULL)
+		map->desc->destroy (map);
+
+	g_object_unref (map->axis);
+	g_free (map->data);
+	g_free (map);
+}
+
+static void
+gog_axis_auto_bound (GogAxis *axis)
+{
+	double maximum, minimum;
+	double tmp;
+	gboolean user_defined;
+	
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	minimum = axis->min_val;
+	maximum = axis->max_val;
+
+	tmp = gog_axis_get_entry (axis, GOG_AXIS_ELEM_MIN, &user_defined);
+	if (user_defined) minimum = tmp;
+
+	tmp = gog_axis_get_entry (axis, GOG_AXIS_ELEM_MAX, &user_defined);
+	if (user_defined) maximum = tmp;
+
+	if (axis->is_discrete)
+		map_desc_discrete.auto_bound (axis, minimum, maximum, axis->auto_bound);
+	else
+		if (axis->map_desc->auto_bound)
+			axis->map_desc->auto_bound (axis, minimum, maximum, axis->auto_bound);
+}
+
+static void
+gog_axis_set_ticks (GogAxis *axis, int tick_nbr, GogAxisTick *ticks)
+{
+	unsigned i;
+
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	if (axis->ticks != NULL) {
+		for (i = 0; i < axis->tick_nbr; i++)
+			g_free (axis->ticks[i].label);
+
+		g_free (axis->ticks);
+	}
+
+	axis->tick_nbr = tick_nbr;
+	axis->ticks = ticks;
+}
+
+static void 
+gog_axis_calc_ticks (GogAxis *axis)
+{
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	if (axis->is_discrete)
+		map_desc_discrete.calc_ticks (axis);
+	else
+		if (axis->map_desc->calc_ticks)
+			axis->map_desc->calc_ticks (axis);
+
+	if (axis->type == GOG_AXIS_PSEUDO_3D || axis->type == GOG_AXIS_Z) {
+		GSList *l = axis->contributors;
+		while (l) {
+			gog_plot_update_3d (GOG_PLOT (l->data));
+			l = l->next;
+		}
+	}
+}
+
+/************************************************************************/
+
+typedef GogAxisBaseClass GogAxisClass;
+
+static GType gog_axis_view_get_type (void);
+
+static GObjectClass *parent_klass;
+
+enum {
+	AXIS_PROP_0,
+	AXIS_PROP_TYPE,
+	AXIS_PROP_INVERT,
+	AXIS_PROP_MAP,
+	AXIS_PROP_ASSIGNED_FORMAT_STR_XL
+};
+
+/*****************************************************************************/
+
+static gboolean
+role_grid_line_major_can_add (GogObject const *parent)
+{
+	GogAxis *axis = GOG_AXIS (parent);
+	GogAxisType type = gog_axis_get_atype (axis);
+	
+	return ((type == GOG_AXIS_X || type == GOG_AXIS_Y || type == GOG_AXIS_RADIAL || 
+		 (type == GOG_AXIS_CIRCULAR && !gog_axis_is_discrete (axis))) &&
+		gog_axis_get_grid_line (GOG_AXIS (parent), TRUE) == NULL);
+}
+
+static gboolean
+role_grid_line_minor_can_add (GogObject const *parent)
+{
+	GogAxis *axis = GOG_AXIS (parent);
+	GogAxisType type = gog_axis_get_atype (axis);
+	
+	return (!gog_axis_is_discrete (GOG_AXIS (parent)) &&
+		(type == GOG_AXIS_X || type == GOG_AXIS_Y || 
+		 type == GOG_AXIS_RADIAL || type == GOG_AXIS_CIRCULAR) &&
+		gog_axis_get_grid_line (GOG_AXIS (parent), FALSE) == NULL);
+}
+
+static void 
+role_grid_line_major_post_add (GogObject *parent, GogObject *child)  
+{
+	g_object_set (G_OBJECT (child), "is-minor", (gboolean)FALSE, NULL);
+}
+
+static void 
+role_grid_line_minor_post_add (GogObject *parent, GogObject *child)  
+{ 
+	g_object_set (G_OBJECT (child), "is-minor", (gboolean)TRUE, NULL);
+}
+
+static gboolean
+role_axis_line_can_add (GogObject const *parent)
+{
+	GogChart *chart = GOG_AXIS_BASE (parent)->chart;
+	GogAxisSet axis_set = gog_chart_get_axis_set (chart);
+	
+	if (axis_set == GOG_AXIS_SET_XY ||
+	    (axis_set == GOG_AXIS_SET_RADAR && 
+	     gog_axis_get_atype (GOG_AXIS (parent)) == GOG_AXIS_RADIAL))  
+		return TRUE;
+
+	return FALSE;
+}
+
+static void
+role_axis_line_post_add (GogObject *parent, GogObject *child)
+{
+	gog_axis_base_set_position (GOG_AXIS_BASE (child), GOG_AXIS_AUTO);
+}
+
+static gboolean 
+role_label_can_add (GogObject const *parent)
+{
+	GogAxisType type = gog_axis_get_atype (GOG_AXIS (parent));
+	
+	return (type == GOG_AXIS_X ||
+		type == GOG_AXIS_Y);
+}
+
+/**
+ * gog_axis_set_format :
+ * @axis : #GogAxis
+ * @fmt  : #GOFormat
+ *
+ * Absorbs a reference to @fmt, and accepts NULL.
+ * returns TRUE if things changed
+ **/
+static gboolean
+gog_axis_set_format (GogAxis *axis, GOFormat *fmt)
+{
+	if (go_format_eq (fmt, axis->assigned_format)) {
+		go_format_unref (fmt);
+		return FALSE;
+	}
+	if (axis->assigned_format != NULL)
+		go_format_unref (axis->assigned_format);
+	axis->assigned_format = fmt;
+	return TRUE;
+}
+
+static void
+gog_axis_set_property (GObject *obj, guint param_id,
+		       GValue const *value, GParamSpec *pspec)
+{
+	GogAxis *axis = GOG_AXIS (obj);
+	gboolean resized = FALSE;
+	gboolean calc_ticks = FALSE;
+	gboolean request_update = FALSE;
+	int itmp;
+
+	switch (param_id) {
+	case AXIS_PROP_TYPE:
+		itmp = g_value_get_int (value);
+		if (axis->type != itmp) {
+			axis->type = itmp;
+			resized = TRUE;
+			if (axis->type == GOG_AXIS_PSEUDO_3D)
+				g_object_set (obj,
+						"major-tick-labeled", FALSE,
+						"major-tick-in", FALSE,
+						"major-tick-out", FALSE,
+						"minor-tick-in", FALSE,
+						"minor-tick-out", FALSE,
+						NULL);
+		}
+		break;
+	case AXIS_PROP_INVERT:
+		axis->inverted = g_value_get_boolean (value);
+		resized = calc_ticks = TRUE;
+		break;
+	case AXIS_PROP_MAP :
+		gog_axis_map_set (axis, g_value_get_string (value));
+		request_update = TRUE;
+		break;
+	case AXIS_PROP_ASSIGNED_FORMAT_STR_XL : {
+		char const *str = g_value_get_string (value);
+		resized = gog_axis_set_format (axis, (str != NULL)
+			? go_format_new_from_XL (str, FALSE)
+			: NULL);
+		calc_ticks = resized;
+		break;
+	}
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+
+	if (request_update)
+		gog_object_request_update (GOG_OBJECT (axis));
+	else {
+		if (calc_ticks)
+			gog_axis_calc_ticks (axis);
+		gog_object_emit_changed (GOG_OBJECT (obj), resized);
+	}
+}
+
+static void
+gog_axis_get_property (GObject *obj, guint param_id,
+		       GValue *value, GParamSpec *pspec)
+{
+	GogAxis const *axis = GOG_AXIS (obj);
+
+	switch (param_id) {
+	case AXIS_PROP_TYPE:
+		g_value_set_int (value, axis->type);
+		break;
+	case AXIS_PROP_INVERT:
+		g_value_set_boolean (value, axis->inverted);
+		break;
+	case AXIS_PROP_MAP:
+		g_value_set_string (value, axis->map_desc->name);
+		break;
+	case AXIS_PROP_ASSIGNED_FORMAT_STR_XL :
+		if (axis->assigned_format != NULL)
+			g_value_take_string (value,
+				go_format_as_XL	(axis->assigned_format, FALSE));
+		else
+			g_value_set_static_string (value, NULL);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_axis_finalize (GObject *obj)
+{
+	GogAxis *axis = GOG_AXIS (obj);
+
+	gog_axis_clear_contributors (axis);
+
+	g_slist_free (axis->contributors);	axis->contributors = NULL;
+	if (axis->labels != NULL) {
+		g_object_unref (axis->labels);
+		axis->labels   = NULL;
+		/* this is for information only, no ref */
+		axis->plot_that_supplied_labels = NULL;
+	}
+	if (axis->assigned_format != NULL) {
+		go_format_unref (axis->assigned_format);
+		axis->assigned_format = NULL;
+	}
+	if (axis->format != NULL) {
+		go_format_unref (axis->format);
+		axis->format = NULL;
+	}
+
+	gog_axis_set_ticks (axis, 0, NULL);
+
+	gog_dataset_finalize (GOG_DATASET (axis));
+	(parent_klass->finalize) (obj);
+}
+
+/**
+ * gog_axis_get_entry :
+ * @axis : #GogAxis
+ * @i :
+ * @user_defined : an optionally NULL pointr to gboolean
+ *
+ * Returns the value of axis element @i and sets @user_defined or
+ * 	NaN on error
+ **/
+double
+gog_axis_get_entry (GogAxis const *axis, GogAxisElemType i, gboolean *user_defined)
+{
+	GOData *dat;
+
+	if (user_defined)
+		*user_defined = FALSE;
+
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, go_nan);
+	g_return_val_if_fail (i >= GOG_AXIS_ELEM_MIN && i < GOG_AXIS_ELEM_MAX_ENTRY, go_nan);
+
+	if (i != GOG_AXIS_ELEM_CROSS_POINT)
+		dat = axis->source [i].data;
+	else 
+		dat = GOG_AXIS_BASE (axis)->cross_location.data;
+
+	if (dat != NULL && IS_GO_DATA_SCALAR (dat)) {
+		double tmp = go_data_scalar_get_value (GO_DATA_SCALAR (dat));
+		if (go_finite (tmp)) {
+			if (user_defined)
+				*user_defined = TRUE;
+			return tmp;
+		}
+	}
+
+	if (i != GOG_AXIS_ELEM_CROSS_POINT)
+		return axis->auto_bound [i];
+	else
+		return 0.;
+}
+
+static void
+gog_axis_update (GogObject *obj)
+{
+	GSList *ptr;
+	GogAxis *axis = GOG_AXIS (obj);
+	double old_min = axis->auto_bound [GOG_AXIS_ELEM_MIN];
+	double old_max = axis->auto_bound [GOG_AXIS_ELEM_MAX];
+	GOData *labels;
+	GogPlotBoundInfo bounds;
+
+	gog_debug (0, g_warning ("axis::update"););
+
+	if (axis->labels != NULL) {
+		g_object_unref (axis->labels);
+		axis->labels   = NULL;
+		axis->plot_that_supplied_labels = NULL;
+	}
+	axis->is_discrete = TRUE;
+	axis->min_val  =  DBL_MAX;
+	axis->max_val  = -DBL_MAX;
+	axis->min_contrib = axis->max_contrib = NULL;
+	if (axis->format != NULL) {
+		go_format_unref (axis->format);
+		axis->format = NULL;
+	}
+
+	/* everything else is initialized in gog_plot_get_axis_bounds */
+	bounds.fmt = NULL;
+	for (ptr = axis->contributors ; ptr != NULL ; ptr = ptr->next) {
+		labels = gog_plot_get_axis_bounds (GOG_PLOT (ptr->data),
+						   axis->type, &bounds);
+
+		/* value dimensions have more information than index dimensions.
+		 * At least thats what I am guessing today*/
+		if (!bounds.is_discrete)
+			axis->is_discrete = FALSE;
+		else if (axis->labels == NULL && labels != NULL) {
+			g_object_ref (labels);
+			axis->labels = GO_DATA_VECTOR (labels);
+			axis->plot_that_supplied_labels = GOG_PLOT (ptr->data);
+		}
+		axis->center_on_ticks = bounds.center_on_ticks;
+
+		if (axis->min_val > bounds.val.minima) {
+			axis->min_val = bounds.val.minima;
+			axis->logical_min_val = bounds.logical.minima;
+			axis->min_contrib = ptr->data;
+		} else if (axis->min_contrib == ptr->data) {
+			axis->min_contrib = NULL;
+			axis->min_val = bounds.val.minima;
+		}
+
+		if (axis->max_val < bounds.val.maxima) {
+			axis->max_val = bounds.val.maxima;
+			axis->logical_max_val = bounds.logical.maxima;
+			axis->max_contrib = ptr->data;
+		} else if (axis->max_contrib == ptr->data) {
+			axis->max_contrib = NULL;
+			axis->max_val = bounds.val.maxima;
+		}
+	}
+	axis->format = bounds.fmt; /* just absorb the ref if it exists */
+
+	gog_axis_auto_bound (axis);
+
+	if (go_finite (axis->logical_min_val) &&
+	    axis->auto_bound [GOG_AXIS_ELEM_MIN] < axis->logical_min_val)
+		axis->auto_bound [GOG_AXIS_ELEM_MIN] = axis->logical_min_val;
+	if (go_finite (axis->logical_max_val) &&
+	    axis->auto_bound [GOG_AXIS_ELEM_MAX] > axis->logical_max_val)
+		axis->auto_bound [GOG_AXIS_ELEM_MAX] = axis->logical_max_val;
+
+	gog_axis_calc_ticks (axis);
+
+	if (old_min != axis->auto_bound [GOG_AXIS_ELEM_MIN] ||
+	    old_max != axis->auto_bound [GOG_AXIS_ELEM_MAX])
+		gog_object_emit_changed (GOG_OBJECT (obj), TRUE);
+}
+
+static void
+cb_axis_toggle_changed (GtkToggleButton *toggle_button, GObject *axis)
+{
+	g_object_set (axis,
+		gtk_widget_get_name (GTK_WIDGET (toggle_button)),
+		gtk_toggle_button_get_active (toggle_button),
+		NULL);
+}
+
+typedef struct {
+	GtkWidget *editor;
+	GtkToggleButton *toggle;
+	GogDataset *set;
+	unsigned dim;
+} ElemToggleData;
+
+static void
+cb_enable_dim (GtkToggleButton *toggle_button, ElemToggleData *closure)
+{
+	gboolean is_auto = gtk_toggle_button_get_active (toggle_button);
+	double bound = GOG_AXIS (closure->set)->auto_bound [closure->dim];
+
+	gtk_widget_set_sensitive (closure->editor, !is_auto);
+
+	if (is_auto) /* clear the data */
+		gog_dataset_set_dim (closure->set, closure->dim, NULL, NULL);
+
+	if (go_finite (bound) && DBL_MAX > bound && bound > -DBL_MAX) {
+		char *str = g_strdup_printf ("%g", bound);
+		g_object_set (closure->editor, "text", str, NULL);
+		g_free (str);
+	} else
+		g_object_set (closure->editor, "text", "", NULL);
+}
+
+static void
+cb_axis_bound_changed (GogObject *axis, gboolean resize, ElemToggleData *closure)
+{
+	if (gtk_toggle_button_get_active (closure->toggle)) {
+		double bound = GOG_AXIS (closure->set)->auto_bound [closure->dim];
+		if (go_finite (bound) && DBL_MAX > bound && bound > -DBL_MAX) {
+			char *str = g_strdup_printf ("%g", bound);
+			g_object_set (closure->editor, "text", str, NULL);
+			g_free (str);
+		} else
+			g_object_set (closure->editor, "text", "", NULL);
+	}
+}
+
+static void
+make_dim_editor (GogDataset *set, GtkTable *table, unsigned dim,
+		 GogDataAllocator *dalloc, char const * const *dim_name)
+{
+	ElemToggleData *info;
+	GClosure *closure;
+	GtkWidget *editor = gog_data_allocator_editor (dalloc, set, dim, GOG_DATA_SCALAR);
+	char *txt = g_strconcat (_(dim_name [dim]), ":", NULL);
+	GtkWidget *toggle = gtk_check_button_new_with_mnemonic (txt);
+	g_free (txt);
+
+	info = g_new0 (ElemToggleData, 1);
+	info->editor = editor;
+	info->set = set;
+	info->dim = dim;
+	info->toggle = GTK_TOGGLE_BUTTON (toggle);
+	g_signal_connect (G_OBJECT (toggle),
+		"toggled",
+		G_CALLBACK (cb_enable_dim), info);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
+		gog_dataset_get_dim (set, dim) == NULL);
+
+	closure = g_cclosure_new (G_CALLBACK (cb_axis_bound_changed),
+				  info, (GClosureNotify)g_free);
+	g_object_watch_closure (G_OBJECT (toggle), closure);
+	g_signal_connect_closure (G_OBJECT (set),
+		"changed",
+		closure, FALSE);
+
+	gtk_table_attach (table, toggle,
+		0, 1, dim + 1, dim + 2, GTK_FILL, 0, 0, 0);
+	gtk_table_attach (table, editor,
+		1, 2, dim + 1, dim + 2, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+}
+
+static void
+cb_axis_fmt_changed (G_GNUC_UNUSED GtkWidget *widget,
+		     char *fmt,
+		     GObject *axis)
+{
+	g_object_set (axis, "assigned-format-string-XL", fmt, NULL);
+}
+
+static void
+cb_map_combo_changed (GtkComboBox *combo,
+		      GogAxis *axis)
+{
+	gog_axis_map_set_by_num (axis, gtk_combo_box_get_active (combo));
+}
+
+#if 0
+static void
+cb_axis_fmt_assignment_toggled (GtkToggleButton *toggle_button, GtkNotebook *notebook)
+{
+	/* any time the toggle changes assume the user wanted to select the page too */
+	gtk_notebook_set_current_page (notebook, 0); /* assume it is the first page */ 
+}
+#endif
+
+static void
+gog_axis_populate_editor (GogObject *gobj, 
+			  GogEditor *editor, 
+			  GogDataAllocator *dalloc, 
+			  GOCmdContext *cc)
+{
+	static guint axis_pref_page = 0;
+	static char const *toggle_props[] = {
+		"invert-axis"
+	};
+	GtkWidget *w;
+	GtkTable  *table;
+	unsigned i = 0;
+	GogAxis *axis = GOG_AXIS (gobj);
+	GogDataset *set = GOG_DATASET (gobj);
+	GladeXML *gui;
+
+	gui = go_libglade_new ("gog-axis-prefs.glade", "axis_pref_box", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	/* Bounds Page */
+	table = GTK_TABLE (glade_xml_get_widget (gui, "bound_table"));
+	if (axis->is_discrete) {
+		static char const * const dim_names[] = {
+			N_("M_inimum"),
+			N_("M_aximum"),
+			N_("Categories between _ticks"),
+			N_("Categories between _labels")
+		};
+		for (i = GOG_AXIS_ELEM_MIN; i < GOG_AXIS_ELEM_CROSS_POINT ; i++)
+			make_dim_editor (set, table, i, dalloc, dim_names);
+	} else {
+		static char const * const dim_names[] = {
+			N_("M_inimum"),
+			N_("M_aximum"),
+			N_("Ma_jor ticks"),
+			N_("Mi_nor ticks")
+		};
+
+		for (i = GOG_AXIS_ELEM_MIN; i < GOG_AXIS_ELEM_CROSS_POINT ; i++)
+			make_dim_editor (set, table, i, dalloc, dim_names);
+	}
+	gtk_widget_show_all (GTK_WIDGET (table));
+
+	/* Details page */
+	if (!axis->is_discrete && gog_axis_get_atype (axis) != GOG_AXIS_CIRCULAR) {
+		GtkWidget *w = glade_xml_get_widget (gui, "map_type_combo");
+		gog_axis_map_populate_combo (axis, GTK_COMBO_BOX (w));
+		g_signal_connect_object (G_OBJECT (w),
+					 "changed",
+					 G_CALLBACK (cb_map_combo_changed),
+					 axis, 0);
+	} else {
+		GtkWidget *w = glade_xml_get_widget (gui, "map_type_box");
+		gtk_widget_hide (w);
+	}
+
+	for (i = 0; i < G_N_ELEMENTS (toggle_props) ; i++) {
+		gboolean cur_val;
+		GtkWidget *w = glade_xml_get_widget (gui, toggle_props[i]);
+
+		g_object_get (G_OBJECT (gobj), toggle_props[i], &cur_val, NULL);
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), cur_val);
+		g_signal_connect_object (G_OBJECT (w),
+					 "toggled",
+					 G_CALLBACK (cb_axis_toggle_changed), axis, 0);
+	}
+
+	gog_editor_add_page (editor, 
+			     glade_xml_get_widget (gui, "axis_pref_box"),
+			     _("Scale"));
+
+	/* Style page */
+	(GOG_OBJECT_CLASS(parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+
+	/* Format page */
+	if (!axis->is_discrete && gog_axis_get_atype (axis) != GOG_AXIS_PSEUDO_3D) {
+		w = go_format_sel_new ();
+		if (axis->assigned_format != NULL && !go_format_is_general (axis->assigned_format))
+			go_format_sel_set_style_format (GO_FORMAT_SEL (w),
+				axis->assigned_format);
+		else if (axis->format != NULL)
+			go_format_sel_set_style_format (GO_FORMAT_SEL (w),
+				axis->format);
+
+#if 0
+		/* TOO CHEESY to go into production
+		 * We need a way to toggle auto vs user formats
+		 * but the selector is too tall already
+		 * disable for now */
+		cbox = gtk_check_button_new_with_label (_("Format"));
+		g_signal_connect (G_OBJECT (cbox),
+			"toggled",
+			G_CALLBACK (cb_axis_fmt_assignment_toggled), notebook);
+		gtk_notebook_prepend_page (GTK_NOTEBOOK (notebook), w, cbox);
+#else
+		gog_editor_add_page (editor, w, _("Format"));
+#endif
+
+		gtk_widget_show (w);
+		g_signal_connect (G_OBJECT (w),
+			"format_changed", G_CALLBACK (cb_axis_fmt_changed), axis);
+	}
+
+	w = glade_xml_get_widget (gui, "axis_pref_box");
+	g_object_set_data_full (G_OBJECT (w), "gui", gui,
+				(GDestroyNotify)g_object_unref);
+
+	gog_editor_set_store_page (editor, &axis_pref_page);
+}
+
+static void
+gog_axis_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	if (gog_axis_get_atype (GOG_AXIS (gso)) != GOG_AXIS_PSEUDO_3D)
+		style->interesting_fields = GOG_STYLE_LINE | GOG_STYLE_FONT |
+			GOG_STYLE_TEXT_LAYOUT;
+	else
+		style->interesting_fields = 0;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+				style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+gog_axis_class_init (GObjectClass *gobject_klass)
+{
+	static GogObjectRole const roles[] = { 
+		{ N_("MajorGrid"), "GogGridLine", 0,
+		  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+		  role_grid_line_major_can_add, NULL, NULL, role_grid_line_major_post_add, NULL, NULL, { -1 } },
+		{ N_("MinorGrid"), "GogGridLine", 1,
+		  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+		  role_grid_line_minor_can_add, NULL, NULL, role_grid_line_minor_post_add, NULL, NULL, { -1 } },
+		{ N_("AxisLine"), "GogAxisLine", 2,
+		  GOG_POSITION_PADDING, GOG_POSITION_PADDING, GOG_OBJECT_NAME_BY_ROLE,
+		  role_axis_line_can_add, NULL, NULL, role_axis_line_post_add, NULL, NULL, { -1 } },
+		{ N_("Label"), "GogLabel", 3,
+		  GOG_POSITION_SPECIAL|GOG_POSITION_ANY_MANUAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+		  role_label_can_add, NULL, NULL, NULL, NULL, NULL, { -1 } }
+	};
+
+	GogObjectClass *gog_klass = (GogObjectClass *) gobject_klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) gog_klass;
+
+	parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->set_property = gog_axis_set_property;
+	gobject_klass->get_property = gog_axis_get_property;
+	gobject_klass->finalize	    = gog_axis_finalize;
+
+	/* no need to persist, the role handles that */
+	g_object_class_install_property (gobject_klass, AXIS_PROP_TYPE,
+		g_param_spec_int ("type", "Type",
+			"GogAxisType",
+			GOG_AXIS_UNKNOWN, GOG_AXIS_TYPES, GOG_AXIS_UNKNOWN, G_PARAM_READWRITE));
+	g_object_class_install_property (gobject_klass, AXIS_PROP_INVERT,
+		g_param_spec_boolean ("invert-axis", NULL,
+			"Scale from high to low rather than low to high",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_PROP_MAP,
+		g_param_spec_string ("map-name", "MapName",
+			"The name of the map for scaling",
+			"linear", G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, AXIS_PROP_ASSIGNED_FORMAT_STR_XL,
+		g_param_spec_string ("assigned-format-string-XL", NULL,
+			"The user assigned format to use for non-discrete axis labels (XL format)",
+			"General", G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+
+	gog_klass->update	= gog_axis_update;
+	gog_klass->populate_editor	= gog_axis_populate_editor;
+	gog_klass->view_type	= gog_axis_view_get_type ();
+	style_klass->init_style = gog_axis_init_style;
+}
+
+static void
+gog_axis_init (GogAxis *axis)
+{
+	axis->type	 = GOG_AXIS_UNKNOWN;
+	axis->contributors = NULL;
+	axis->inverted = FALSE;
+
+	/* yes we want min = MAX */
+	axis->min_val =  DBL_MAX;
+	axis->max_val = -DBL_MAX;
+	axis->min_contrib = axis->max_contrib = NULL;
+	axis->is_discrete = FALSE;
+	axis->center_on_ticks = FALSE;
+	axis->labels = NULL;
+	axis->plot_that_supplied_labels = NULL;
+	axis->format = axis->assigned_format = NULL;
+
+	gog_axis_map_set (axis, NULL);
+
+	axis->ticks = NULL;
+	axis->tick_nbr = 0;
+}
+
+static void
+gog_axis_dataset_dims (GogDataset const *set, int *first, int *last)
+{
+	*first = GOG_AXIS_ELEM_MIN;
+	*last  = GOG_AXIS_ELEM_CROSS_POINT;
+}
+
+static GogDatasetElement *
+gog_axis_dataset_get_elem (GogDataset const *set, int dim_i)
+{
+	GogAxis *axis = GOG_AXIS (set);
+	if (GOG_AXIS_ELEM_MIN <= dim_i && dim_i < GOG_AXIS_ELEM_CROSS_POINT)
+		return &axis->source[dim_i];
+	if (dim_i == GOG_AXIS_ELEM_CROSS_POINT) {
+		return &(axis->base.cross_location);
+	}
+	return NULL;
+}
+
+static void
+gog_axis_dim_changed (GogDataset *set, int dim_i)
+{
+	gog_axis_update (GOG_OBJECT (set));
+	gog_object_emit_changed (GOG_OBJECT (set), TRUE);
+}
+
+static void
+gog_axis_dataset_init (GogDatasetClass *iface)
+{
+	iface->dims	   = gog_axis_dataset_dims;
+	iface->get_elem	   = gog_axis_dataset_get_elem;
+	iface->dim_changed = gog_axis_dim_changed;
+}
+
+GSF_CLASS_FULL (GogAxis, gog_axis,
+		NULL, NULL, gog_axis_class_init, NULL,
+		gog_axis_init, GOG_AXIS_BASE_TYPE, 0,
+		GSF_INTERFACE (gog_axis_dataset_init, GOG_DATASET_TYPE))
+
+
+GogAxisType
+gog_axis_get_atype (GogAxis const *axis)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, GOG_AXIS_UNKNOWN);
+	return axis->type;
+}
+
+/**
+ * gog_axis_is_center_on_ticks :
+ * @axis : #GogAxis
+ * 
+ * Returns TRUE if labels are centered on ticks when @axis is discrete
+ **/ 
+gboolean
+gog_axis_is_center_on_ticks (GogAxis const *axis)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, FALSE);
+	return axis->center_on_ticks;
+}
+
+/**
+ * gog_axis_is_discrete :
+ * @axis : #GogAxis
+ * 
+ * Returns TRUE if @axis enumerates a set of discrete items, rather than a
+ * continuous value
+ **/ 
+gboolean
+gog_axis_is_discrete (GogAxis const *axis)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, FALSE);
+	return axis->is_discrete;
+}
+
+/**
+ * gog_axis_is_inverted :
+ * @axis : #GogAxis
+ * 
+ * Returns TRUE if @axis is inverted.
+ **/ 
+gboolean
+gog_axis_is_inverted (GogAxis const *axis)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, FALSE);
+	return axis->inverted;
+}
+
+/**
+ * gog_axis_get_bounds :
+ * @axis : #GogAxis
+ * @minima : result
+ * @maxima : result
+ *
+ * return TRUE if the bounds stored in @minima and @maxima are sane
+ **/
+gboolean
+gog_axis_get_bounds (GogAxis const *axis, double *minima, double *maxima)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, FALSE);
+	g_return_val_if_fail (minima != NULL, FALSE);
+	g_return_val_if_fail (maxima != NULL, FALSE);
+
+	*minima = gog_axis_get_entry (axis, GOG_AXIS_ELEM_MIN, NULL);
+	*maxima = gog_axis_get_entry (axis, GOG_AXIS_ELEM_MAX, NULL);
+
+	return go_finite (*minima) && go_finite (*maxima) && *minima < *maxima;
+}
+
+/**
+ * gog_axis_get_ticks :
+ * @axis : #GogAxis
+ * @ticks : result
+ *
+ * Retrieve an array of tick descriptions, and return the number of ticks.
+ **/
+unsigned 
+gog_axis_get_ticks (GogAxis *axis, GogAxisTick **ticks)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, 0);
+	g_return_val_if_fail (ticks != NULL, 0);
+
+	*ticks = axis->ticks;
+	return axis->tick_nbr;
+}
+
+/**
+ * gog_axis_get_labels :
+ * @axi : #GogAxis
+ * @plot_that_labeled_axis : #GogPlot
+ *
+ * Return the possibly NULL #GOData used as a label for this axis
+ * along with the plot that it was associated with
+ **/
+GOData *
+gog_axis_get_labels (GogAxis const *axis, GogPlot **plot_that_labeled_axis)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, NULL);
+
+	if (axis->is_discrete) {
+		if (plot_that_labeled_axis != NULL)
+			*plot_that_labeled_axis = axis->plot_that_supplied_labels;
+		return GO_DATA (axis->labels);
+	}
+	if (plot_that_labeled_axis != NULL)
+		*plot_that_labeled_axis = NULL;
+	return NULL;
+}
+
+/**
+ * gog_axis_add_contributor :
+ * @axis : #GogAxis
+ * @contrib : #GogObject (can we relax this to use an interface ?)
+ *
+ * Register @contrib as taking part in the negotiation of @axis's bounds.
+ **/
+void
+gog_axis_add_contributor (GogAxis *axis, GogObject *contrib)
+{
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+	g_return_if_fail (g_slist_find (axis->contributors, contrib) == NULL);
+
+	axis->contributors = g_slist_prepend (axis->contributors, contrib);
+
+	gog_object_request_update (GOG_OBJECT (axis));
+}
+
+/**
+ * gog_axis_del_contributor :
+ * @axis : #GogAxis
+ * @contrib : #GogObject (can we relax this to use an interface ?)
+ *
+ * @contrib no longer takes part in the negotiation of @axis's bounds.
+ **/
+void
+gog_axis_del_contributor (GogAxis *axis, GogObject *contrib)
+{
+	gboolean update = FALSE;
+
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+	g_return_if_fail (g_slist_find (axis->contributors, contrib) != NULL);
+
+	if (axis->min_contrib == contrib) {
+		axis->min_contrib = NULL;
+		update = TRUE;
+	}
+	if (axis->max_contrib == contrib) {
+		axis->max_contrib = NULL;
+		update = TRUE;
+	}
+	axis->contributors = g_slist_remove (axis->contributors, contrib);
+
+	if (update)
+		gog_object_request_update (GOG_OBJECT (axis));
+}
+
+void
+gog_axis_clear_contributors (GogAxis *axis)
+{
+	GSList *ptr, *list;
+	GogAxisSet filter;
+
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	filter = 1 << axis->type;
+	list = g_slist_copy (axis->contributors);
+	for (ptr = list; ptr != NULL ; ptr = ptr->next)
+		gog_plot_axis_clear (GOG_PLOT (ptr->data), filter);
+	g_slist_free (list);
+}
+
+GSList const *
+gog_axis_contributors (GogAxis *axis)
+{
+	g_return_val_if_fail (GOG_AXIS (axis) != NULL, NULL);
+
+	return axis->contributors;
+}
+
+/**
+ * gog_axis_bound_changed :
+ * @axis : #GogAxis
+ * @contrib : #GogObject
+**/
+void
+gog_axis_bound_changed (GogAxis *axis, GogObject *contrib)
+{
+	g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+	gog_object_request_update (GOG_OBJECT (axis));
+}
+
+/* gog_axis_get_grid_line:
+ * @axis: #GogAxis
+ * @major: whether to retrieve major or minor grid line.
+ *
+ * Returns a pointer to GridLine object associated to given axis, NULL
+ * if it doesn't exists.
+ **/
+GogGridLine *
+gog_axis_get_grid_line (GogAxis *axis, gboolean major)
+{
+	GogGridLine *grid_line;
+	GSList *children;
+
+	children = gog_object_get_children (GOG_OBJECT (axis), 
+		gog_object_find_role_by_name (GOG_OBJECT (axis), 
+			major ? "MajorGrid" : "MinorGrid"));
+	if (children != NULL) {
+		grid_line = GOG_GRID_LINE (children->data);
+		g_slist_free (children);
+		return grid_line;
+	}
+	return NULL;
+}
+
+/****************************************************************************/
+
+typedef GogAxisBaseView		GogAxisView;
+typedef GogAxisBaseViewClass	GogAxisViewClass;
+
+#define GOG_AXIS_VIEW_TYPE	(gog_axis_view_get_type ())
+#define GOG_AXIS_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_AXIS_VIEW_TYPE, GogAxisView))
+#define IS_GOG_AXIS_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_AXIS_VIEW_TYPE))
+
+static GogViewClass *aview_parent_klass;
+
+static void
+gog_axis_view_padding_request (GogView *view, 
+			       GogViewAllocation const *bbox,
+			       GogViewPadding *padding) 
+{
+	GogView *child;
+	GogAxis *axis = GOG_AXIS (view->model);
+	GogAxisType type = gog_axis_get_atype (axis);
+	GogObjectPosition pos;
+	GogViewAllocation tmp = *bbox;
+	GogViewRequisition req;
+	GogViewPadding label_padding, child_padding;
+	GSList *ptr;
+	double const pad_h = gog_renderer_pt2r_y (view->renderer, PAD_HACK);
+	double const pad_w = gog_renderer_pt2r_x (view->renderer, PAD_HACK);
+
+	label_padding.wr = label_padding.wl = label_padding.ht = label_padding.hb = 0;
+
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+		pos = child->model->position;
+		if (IS_GOG_LABEL (child->model) && !(pos & GOG_POSITION_MANUAL)) {
+			gog_view_size_request (child, &req);
+			if (type == GOG_AXIS_X) 
+				label_padding.hb += req.h + pad_h;
+			else  
+				label_padding.wl += req.w + pad_w;
+		}
+	}
+
+	tmp.x += label_padding.wl;
+	tmp.w -= label_padding.wl + label_padding.wr;
+	tmp.y += label_padding.hb;
+	tmp.h -= label_padding.hb + label_padding.ht;
+
+	(aview_parent_klass->padding_request) (view, &tmp, padding);
+
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+		if (GOG_POSITION_IS_PADDING (child->model->position)) {
+			gog_view_padding_request (child, &tmp, &child_padding);
+			padding->wr = MAX (padding->wr, child_padding.wr);
+			padding->wl = MAX (padding->wl, child_padding.wl);
+			padding->hb = MAX (padding->hb, child_padding.hb);
+			padding->ht = MAX (padding->ht, child_padding.ht);
+		}
+	}
+
+	padding->wr += label_padding.wr;
+	padding->wl += label_padding.wl;
+	padding->ht += label_padding.ht;
+	padding->hb += label_padding.hb;
+}
+
+static void
+gog_axis_view_size_allocate (GogView *view, GogViewAllocation const *bbox)
+{
+	GSList *ptr;
+	GogView *child;
+	GogAxis *axis = GOG_AXIS (view->model);
+	GogAxisType type = gog_axis_get_atype (axis);
+	GogViewAllocation tmp = *bbox;
+	GogViewAllocation const *plot_area = gog_chart_view_get_plot_area (view->parent);
+	GogViewAllocation child_bbox;
+	GogViewRequisition req;
+	GogObjectPosition pos;
+	double const pad_h = gog_renderer_pt2r_y (view->renderer, PAD_HACK);
+	double const pad_w = gog_renderer_pt2r_x (view->renderer, PAD_HACK);
+
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+		pos = child->model->position;
+		if (IS_GOG_LABEL (child->model) && (pos & GOG_POSITION_MANUAL)) {
+			gog_view_size_request (child, &req);
+			child_bbox = gog_object_get_manual_allocation (gog_view_get_model (child), 
+								       plot_area, &req);
+			gog_view_size_allocate (child, &child_bbox);
+		} else {
+			if (GOG_POSITION_IS_SPECIAL (pos)) {
+				if (IS_GOG_LABEL (child->model)) {
+					gog_view_size_request (child, &req);
+					if (type == GOG_AXIS_X) {
+						child_bbox.x = plot_area->x + (plot_area->w - req.w) / 2.0;
+						child_bbox.w = plot_area->w;
+						child_bbox.y = tmp.y + tmp.h - req.h;
+						child_bbox.h = req.h;
+						tmp.h -= req.h + pad_h;
+					} else {
+						child_bbox.x = tmp.x;
+						child_bbox.w = req.w;
+						child_bbox.y = plot_area->y + (plot_area->h - req.h) / 2.0;
+						child_bbox.h = plot_area->h;
+						tmp.x += req.w + pad_w;
+						tmp.w -= req.w + pad_w;
+					}
+					gog_view_size_allocate (child, &child_bbox);
+				} else {
+					gog_view_size_allocate (child, plot_area);
+				}
+			}
+		}	
+	}
+}
+
+static void
+gog_axis_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GSList *ptr;
+
+	(aview_parent_klass->render) (view, bbox);	
+
+	/* Render every child except grid lines. Those are rendered
+	 * before in gog_chart_view since we don't want to render them
+	 * over axis. */
+	for (ptr = view->children ; ptr != NULL ; ptr = ptr->next) {
+		if (!IS_GOG_GRID_LINE (GOG_VIEW (ptr->data)->model))
+			gog_view_render	(ptr->data, bbox);
+	}
+}
+
+static void
+gog_axis_view_class_init (GogAxisViewClass *gview_klass)
+{
+	GogViewClass *view_klass    = (GogViewClass *) gview_klass;
+
+	aview_parent_klass = g_type_class_peek_parent (gview_klass);
+	view_klass->size_allocate = gog_axis_view_size_allocate;
+	view_klass->padding_request = gog_axis_view_padding_request;
+	view_klass->render	    = gog_axis_view_render;
+}
+
+static GSF_CLASS (GogAxisView, gog_axis_view,
+		  gog_axis_view_class_init, NULL,
+		  GOG_AXIS_BASE_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-axis.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,115 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-axis.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_AXIS_H
+#define GOG_AXIS_H
+
+#include <goffice/graph/gog-axis-line.h>
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/data/go-data.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GOG_AXIS_ELEM_MIN = 0,
+	GOG_AXIS_ELEM_MAX,
+	GOG_AXIS_ELEM_MAJOR_TICK,
+	GOG_AXIS_ELEM_MINOR_TICK,
+	GOG_AXIS_ELEM_CROSS_POINT,
+	GOG_AXIS_ELEM_MAX_ENTRY
+} GogAxisElemType;
+
+typedef struct {
+	double		 position;
+	GogAxisTickTypes	 type;
+	char 		*label;
+} GogAxisTick;
+
+typedef struct _GogAxisMapDesc GogAxisMapDesc;
+
+typedef struct {
+	GogAxis		*axis;
+	GogAxisMapDesc	const *desc;
+	gpointer	 data;
+	gboolean	 is_valid;	/* Default to FALSE if desc::init == NULL */
+} GogAxisMap;
+
+struct _GogAxisMapDesc {
+	double 		(*map) 		 (GogAxisMap *map, double value);
+	double 		(*map_to_view)   (GogAxisMap *map, double value);
+	double 		(*map_from_view) (GogAxisMap *map, double value);
+	gboolean	(*map_finite)    (double value);
+	double		(*map_baseline)  (GogAxisMap *map);
+	void		(*map_bounds)	 (GogAxisMap *map, double *minimum, double *maximum);
+	gboolean 	(*init) 	 (GogAxisMap *map, double offset, double length);
+	void		(*destroy) 	 (GogAxisMap *map);
+	void		(*auto_bound) 	 (GogAxis *axis, 
+					  double minimum, double maximum,
+					  double *bound);
+	void		(*calc_ticks) 	 (GogAxis *axis);
+	char const	*name;
+	char const	*description;
+};
+
+GogAxisMap*   gog_axis_map_new	 	  (GogAxis *axis, double offset, double length);
+double	      gog_axis_map 		  (GogAxisMap *map, double x);
+double	      gog_axis_map_to_view	  (GogAxisMap *map, double x);
+double	      gog_axis_map_from_view	  (GogAxisMap *map, double x);
+gboolean      gog_axis_map_finite	  (GogAxisMap *map, double value);
+double	      gog_axis_map_get_baseline	  (GogAxisMap *map);
+void 	      gog_axis_map_get_extents 	  (GogAxisMap *map, double *start, double *stop);
+void	      gog_axis_map_get_bounds 	  (GogAxisMap *map, double *minimum, double *maximum);
+void 	      gog_axis_map_free		  (GogAxisMap *map);
+gboolean      gog_axis_map_is_valid 	  (GogAxisMap *map);
+
+/*****************************************************************************/
+
+#define GOG_AXIS_TYPE	(gog_axis_get_type ())
+#define GOG_AXIS(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_AXIS_TYPE, GogAxis))
+#define IS_GOG_AXIS(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_AXIS_TYPE))
+
+GType gog_axis_get_type (void);
+
+GogAxisType   gog_axis_get_atype 	  (GogAxis const *axis);
+gboolean      gog_axis_is_center_on_ticks (GogAxis const *axis);
+gboolean      gog_axis_is_discrete        (GogAxis const *axis);
+gboolean      gog_axis_is_inverted	  (GogAxis const *axis);
+gboolean      gog_axis_get_bounds 	  (GogAxis const *axis,
+					   double *minima, double *maxima);
+unsigned      gog_axis_get_ticks 	  (GogAxis *axis, GogAxisTick **ticks);
+GOData	     *gog_axis_get_labels	  (GogAxis const *axis,
+					   GogPlot **plot_that_labeled_axis);
+
+double 	      gog_axis_get_entry 	  (GogAxis const *axis, GogAxisElemType i, 
+					   gboolean *user_defined);
+
+void 	      gog_axis_add_contributor	  (GogAxis *axis, GogObject *contrib);
+void 	      gog_axis_del_contributor	  (GogAxis *axis, GogObject *contrib);
+GSList const *gog_axis_contributors	  (GogAxis *axis);
+void	      gog_axis_clear_contributors (GogAxis *axis);
+void	      gog_axis_bound_changed	  (GogAxis *axis, GogObject *contrib);
+
+GogGridLine  *gog_axis_get_grid_line 	  (GogAxis *axis, gboolean major);
+
+G_END_DECLS
+
+#endif /* GOG_AXIS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,58 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-chart-impl.h : implementation details for charts
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_CHART_IMPL_H
+#define GOG_CHART_IMPL_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-outlined-object.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _GogChart {
+	GogOutlinedObject	 base;
+
+	GSList  *plots;
+	unsigned full_cardinality, visible_cardinality;
+	gboolean cardinality_valid;
+
+	/* use a simple grid layout to position charts within graph */
+	unsigned x, y, cols, rows;
+
+	GogObject *grid;
+	GSList  *axes;
+	GogAxisSet axis_set;
+
+	GogViewAllocation plot_area;
+	gboolean	  is_plot_area_manual;
+};
+typedef GogOutlinedObjectClass GogChartClass;
+
+#define GOG_CHART_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOG_CHART_TYPE, GogChartClass))
+#define IS_GOG_CHART_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_CHART_TYPE))
+
+/* protected */
+
+G_END_DECLS
+
+#endif /* GOG_CHART_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,448 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="gog_chart_prefs_window">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">GogChartPrefs</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="icon_name"></property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkVBox" id="gog_chart_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child>
+	<widget class="GtkVBox" id="plot_area_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">6</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label54">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Plot area position&lt;/b&gt;</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkAlignment" id="alignment4">
+	      <property name="visible">True</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xscale">1</property>
+	      <property name="yscale">1</property>
+	      <property name="top_padding">0</property>
+	      <property name="bottom_padding">0</property>
+	      <property name="left_padding">24</property>
+	      <property name="right_padding">0</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox14">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkCheckButton" id="manual_toggle">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">_Use manual positionning</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="focus_on_click">True</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkTable" id="table1">
+		      <property name="visible">True</property>
+		      <property name="n_rows">4</property>
+		      <property name="n_columns">3</property>
+		      <property name="homogeneous">False</property>
+		      <property name="row_spacing">6</property>
+		      <property name="column_spacing">12</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label47">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Y:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">y_spin</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label48">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Width:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">w_spin</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label49">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Height:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">h_spin</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label51">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">%</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label52">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">%</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label53">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">%</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkSpinButton" id="x_spin">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="climb_rate">1</property>
+			  <property name="digits">1</property>
+			  <property name="numeric">True</property>
+			  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			  <property name="snap_to_ticks">False</property>
+			  <property name="wrap">False</property>
+			  <property name="adjustment">0 0 100 1 10 0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkSpinButton" id="y_spin">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="climb_rate">1</property>
+			  <property name="digits">1</property>
+			  <property name="numeric">True</property>
+			  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			  <property name="snap_to_ticks">False</property>
+			  <property name="wrap">False</property>
+			  <property name="adjustment">0 0 100 1 10 0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkSpinButton" id="w_spin">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="climb_rate">1</property>
+			  <property name="digits">1</property>
+			  <property name="numeric">True</property>
+			  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			  <property name="snap_to_ticks">False</property>
+			  <property name="wrap">False</property>
+			  <property name="adjustment">0 0 100 1 10 0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkSpinButton" id="h_spin">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="climb_rate">1</property>
+			  <property name="digits">1</property>
+			  <property name="numeric">True</property>
+			  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			  <property name="snap_to_ticks">False</property>
+			  <property name="wrap">False</property>
+			  <property name="adjustment">0 0 100 1 10 0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label50">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">%</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">2</property>
+			  <property name="right_attach">3</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label46">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_X:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">x_spin</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1242 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-chart.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-chart-impl.h>
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-graph-impl.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-axis-line-impl.h>
+#include <goffice/graph/gog-grid.h>
+#include <goffice/graph/gog-grid-line.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/utils/go-math.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <math.h>
+
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtktogglebutton.h>
+
+#ifndef HAVE_GLIB26
+#include "glib24_26-compat.h"
+#endif
+
+const struct {
+	char const *name;
+	GogAxisSet const axis_set;
+} axis_set_desc[] = {
+	{ "none",	GOG_AXIS_SET_NONE},
+	{ "x",		GOG_AXIS_SET_X},
+	{ "xy", 	GOG_AXIS_SET_XY},
+	{ "xyz",	GOG_AXIS_SET_XYZ},
+	{ "radar",	GOG_AXIS_SET_RADAR},
+	{ "pseudo-3d",	GOG_AXIS_SET_XY_pseudo_3d}
+};
+	
+GogAxisSet
+gog_axis_set_from_str (char const *str)
+{
+	GogAxisSet axis_set = GOG_AXIS_SET_NONE;
+	unsigned i;
+	gboolean found = FALSE;
+
+	if (str == NULL)
+		return GOG_AXIS_SET_NONE;
+
+	for (i = 0; i < G_N_ELEMENTS (axis_set_desc); i++) 
+		if (strcmp (axis_set_desc[i].name, str) == 0) {
+			axis_set = axis_set_desc[i].axis_set;
+			found = TRUE;
+			break;
+		}
+	if (!found) 
+		g_warning ("[GogAxisSet::from_str] unknown axis set (%s)", str);
+	return axis_set;
+}
+
+static void
+calc_polygon_parameters (GogViewAllocation const *area, GogChartMapPolarData *data, gboolean fill_area)
+{
+	double edges = data->th1 - data->th0 + 1.0;
+	double width = 2.0 * sin (2.0 * M_PI * go_rint (edges / 4.0) / edges);
+	double height = 1.0 - cos (2.0 * M_PI * go_rint (edges / 2.0) / edges);
+
+	data->rx = area->w / width;
+	data->ry = area->h / height;
+
+	if (!fill_area) {
+		data->rx = MIN (data->rx, data->ry);
+		data->ry = data->rx;
+	}
+
+	data->cx = area->x + area->w / 2.0;
+	data->cy = area->y + data->ry + (area->h - data->ry * height) / 2.0;
+}
+
+static void
+calc_circle_parameters (GogViewAllocation const *area, GogChartMapPolarData *data, gboolean fill_area)
+{
+	double x_min, x_max, y_min, y_max;
+	
+	if (data->th0 >= data->th1) {
+		x_min = y_min = -1.0;
+		x_max = y_max = 1.0;
+	} else {
+		double x;
+		if (data->th0 > 2.0 * M_PI) {
+			x = data->th0 - fmod (data->th0, 2.0 * M_PI);
+			data->th0 -= x;
+			data->th1 -= x;
+		} else if (data->th1 < - 2.0 * M_PI) {
+			x = data->th1 - fmod (data->th1, 2.0 * M_PI);
+			data->th0 -= x;
+			data->th1 -= x;
+		}
+		if (data->th1 - data->th0 > go_add_epsilon (2 * M_PI)) 
+			data->th1 = data->th0 + 
+				fmod (data->th1 - data->th0, 2.0 * M_PI);
+
+		x_min = x_max = y_min = y_max = 0;
+		x = cos (-data->th0);
+		x_min = MIN (x_min, x); x_max = MAX (x_max, x);
+		x = sin (-data->th0);
+		y_min = MIN (y_min, x); y_max = MAX (y_max, x);
+		x = cos (-data->th1);
+		x_min = MIN (x_min, x); x_max = MAX (x_max, x);
+		x = sin (-data->th1);
+		y_min = MIN (y_min, x); y_max = MAX (y_max, x);
+
+		if (0 > data->th0 && 0 < data->th1)
+			x_max = 1.0;
+		if (M_PI / 2.0 > data->th0 && M_PI / 2.0 < data->th1)
+			y_min = -1.0;
+		if (M_PI > data->th0 && M_PI < data->th1)
+			x_min = -1.0;
+		if (3.0 * M_PI / 2.0 > data->th0 && 3.0 * M_PI / 2.0 < data->th1)
+			y_max = 1.0;
+	}
+	data->rx = area->w / (x_max - x_min);
+	data->ry = area->h / (y_max - y_min);
+	if (!fill_area) {
+		data->rx = MIN (data->rx, data->ry);
+		data->ry = data->rx;
+	}	
+	data->cx = -x_min * data->rx + area->x + (area->w - data->rx * (x_max - x_min)) / 2.0;
+	data->cy = -y_min * data->ry + area->y + (area->h - data->ry * (y_max - y_min)) / 2.0;
+}
+
+static void 
+null_map_2D (GogChartMap *map, double x, double y, double *u, double *v)
+{
+	g_warning ("[GogChartMap::map_2D] not implemented");
+}
+
+typedef struct {
+	double a, b;
+} XMapData;
+
+static void 
+x_map_2D_to_view (GogChartMap *map, double x, double y, double *u, double *v)
+{
+	XMapData *data = map->data;
+
+	*u = gog_axis_map_to_view (map->axis_map[0], x);
+	*v = data->a * y + data->b;
+}
+
+typedef struct {
+	double		a[2][2];
+	double		b[2];
+} XYMapData;
+
+static void
+xy_map_2D_to_view (GogChartMap *map, double x, double y, double *u, double *v)
+{
+	*u = gog_axis_map_to_view (map->axis_map[0], x);
+	*v = gog_axis_map_to_view (map->axis_map[1], y);
+}
+
+static void
+polar_map_2D_to_view (GogChartMap *map, double x, double y, double *u, double *v)
+{
+	GogChartMapPolarData *data = (GogChartMapPolarData *) map->data;
+	double r = gog_axis_map_to_view (map->axis_map[1], y);
+	double t = gog_axis_map_to_view (map->axis_map[0], x);
+	
+	*u = data->cx + r * data->rx * cos (t);
+	*v = data->cy + r * data->ry * sin (t);		
+}
+
+GogChartMapPolarData *
+gog_chart_map_get_polar_parms (GogChartMap *map)
+{
+	return (GogChartMapPolarData *) map->data;
+}	
+
+GogChartMap *
+gog_chart_map_new (GogChart *chart, GogViewAllocation const *area, 
+		   GogAxis *axis0, GogAxis *axis1, GogAxis *axis2,
+		   gboolean fill_area)
+{
+	GogChartMap *map;
+	GogAxisSet axis_set;
+
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, NULL);
+
+	map = g_new (GogChartMap, 1);
+
+	g_object_ref (chart);
+	map->chart = chart;
+	map->area = *area;
+	map->data = NULL;
+	map->is_valid = FALSE;
+
+	axis_set = gog_chart_get_axis_set (chart);
+	switch (axis_set) {
+		case GOG_AXIS_SET_X:
+			{
+				XMapData *data = g_new (XMapData, 1);
+
+				map->axis_map[0] = gog_axis_map_new (axis0, map->area.x, map->area.w);
+				map->axis_map[1] = map->axis_map[2] = NULL;
+
+				data->b = area->y + area->h;
+				data->a = - area->h;
+
+				map->map_2D_to_view = x_map_2D_to_view;
+				map->data = data;
+
+				map->is_valid = gog_axis_map_is_valid (map->axis_map [0]);
+				break;
+			}
+		case GOG_AXIS_SET_XY:
+		case GOG_AXIS_SET_XY_pseudo_3d:
+			{
+				map->axis_map[0] = gog_axis_map_new (axis0, map->area.x, map->area.w);
+				map->axis_map[1] = gog_axis_map_new (axis1, map->area.y + map->area.h, 
+								     -map->area.h);
+				map->axis_map[2] = NULL;
+
+				map->data = NULL;
+				map->map_2D_to_view = xy_map_2D_to_view;
+
+				map->is_valid = gog_axis_map_is_valid (map->axis_map[0]) &&
+					gog_axis_map_is_valid (map->axis_map[1]);
+				break;
+			}
+		case GOG_AXIS_SET_RADAR:
+			{
+				double minimum, maximum;
+				GogChartMapPolarData *data = g_new (GogChartMapPolarData, 1);
+				
+				map->axis_map[0] = gog_axis_map_new (axis0, 0.0, 1.0);
+				gog_axis_map_get_bounds (map->axis_map[0], &minimum, &maximum);
+				if (gog_axis_is_discrete (axis0)) {
+					data->th0 = go_rint (minimum);
+					data->th1 = go_rint (maximum);
+					calc_polygon_parameters (area, data, fill_area);
+					gog_axis_map_free (map->axis_map[0]);
+					map->axis_map[0] = gog_axis_map_new (axis0, 
+						- M_PI / 2.0,
+						2.0 * M_PI * (maximum - minimum) / (maximum - minimum + 1));
+				} else {
+					minimum *= 2.0 * M_PI / 360.0;
+					maximum *= 2.0 * M_PI / 360.0;
+					data->th0 = minimum;
+					data->th1 = maximum;
+					calc_circle_parameters (area, data, fill_area);
+					gog_axis_map_free (map->axis_map[0]);
+					map->axis_map[0] = gog_axis_map_new (axis0, -minimum,
+									     minimum - maximum);
+				}
+				map->axis_map[1] = gog_axis_map_new (axis1, 0.0, 1.0);
+				map->axis_map[2] = NULL;
+
+				map->data = data;
+				map->map_2D_to_view = polar_map_2D_to_view;
+
+				map->is_valid = gog_axis_map_is_valid (map->axis_map[0]) &&
+					gog_axis_map_is_valid (map->axis_map[1]);
+				break;
+			}
+		case GOG_AXIS_SET_XYZ:
+		case GOG_AXIS_SET_ALL:
+		case GOG_AXIS_SET_NONE:
+		case GOG_AXIS_SET_UNKNOWN:
+			g_warning ("[Chart::map_new] not implemented for this axis set (%i)",
+				   axis_set);
+			map->map_2D_to_view = null_map_2D;
+			break;
+	}
+
+	return map;
+}
+
+void
+gog_chart_map_2D_to_view (GogChartMap *map, double x, double y, double *u, double *v)
+{
+	return (map->map_2D_to_view) (map, x, y, u, v);
+}
+
+GogAxisMap *
+gog_chart_map_get_axis_map (GogChartMap *map, unsigned i)
+{
+	g_return_val_if_fail (map != NULL, NULL);
+	g_return_val_if_fail (i < 3, NULL);
+
+	return map->axis_map[i];
+}
+
+gboolean
+gog_chart_map_is_valid (GogChartMap *map)
+{
+	g_return_val_if_fail (map != NULL, FALSE);
+
+	return map->is_valid;
+}
+
+void
+gog_chart_map_free (GogChartMap *map)
+{
+	int i;
+
+	g_return_if_fail (map != NULL);
+
+	for (i = 0; i < 3; i++)
+		if (map->axis_map[i] != NULL)
+			gog_axis_map_free (map->axis_map[i]);
+
+	g_free (map->data);
+	g_object_unref (map->chart);
+	g_free (map);
+}
+
+enum {
+	CHART_PROP_0,
+	CHART_PROP_CARDINALITY_VALID,
+	CHART_PROP_PLOT_AREA,
+	CHART_PROP_PLOT_AREA_IS_MANUAL
+};
+
+static GType gog_chart_view_get_type (void);
+static GObjectClass *chart_parent_klass;
+
+static void
+gog_chart_update (GogObject *obj)
+{
+	GogChart *chart = GOG_CHART (obj);
+	unsigned full = chart->full_cardinality;
+	unsigned visible = chart->visible_cardinality;
+
+	gog_chart_get_cardinality (chart, NULL, NULL);
+
+	if (full != chart->full_cardinality ||
+	    visible != chart->visible_cardinality)
+		g_object_notify (G_OBJECT (chart), "cardinality-valid");
+}
+
+static void
+gog_chart_finalize (GObject *obj)
+{
+	GogChart *chart = GOG_CHART (obj);
+
+	/* on exit the role remove routines are not called */
+	g_slist_free (chart->plots);
+	g_slist_free (chart->axes);
+
+	(chart_parent_klass->finalize) (obj);
+}
+
+static void
+gog_chart_set_property (GObject *obj, guint param_id,
+			 GValue const *value, GParamSpec *pspec)
+{
+	GogChart *chart = GOG_CHART (obj);
+	char **str_doubles;
+	char const *str;
+
+	switch (param_id) {
+	case CHART_PROP_PLOT_AREA:
+		str = g_value_get_string (value);
+		str_doubles = g_strsplit (str, " ", 4);
+		if (g_strv_length (str_doubles) != 4) {
+			g_strfreev (str_doubles);
+			break;
+		}
+		chart->plot_area.x = g_ascii_strtod (str_doubles[0], NULL);
+		chart->plot_area.y = g_ascii_strtod (str_doubles[1], NULL);
+		chart->plot_area.w = g_ascii_strtod (str_doubles[2], NULL);
+		chart->plot_area.h = g_ascii_strtod (str_doubles[3], NULL);
+		g_strfreev (str_doubles);
+		break;
+	case CHART_PROP_PLOT_AREA_IS_MANUAL:
+		chart->is_plot_area_manual = g_value_get_boolean (value);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_chart_get_property (GObject *obj, guint param_id,
+			GValue *value, GParamSpec *pspec)
+{
+	GogChart *chart = GOG_CHART (obj);
+	GString *string;
+	char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+
+	switch (param_id) {
+	case CHART_PROP_CARDINALITY_VALID:
+		g_value_set_boolean (value, chart->cardinality_valid);
+		break;
+	case CHART_PROP_PLOT_AREA:
+		string = g_string_new ("");
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), chart->plot_area.x));
+		g_string_append_c (string, ' ');
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), chart->plot_area.y));
+		g_string_append_c (string, ' ');
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), chart->plot_area.w));
+		g_string_append_c (string, ' ');
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), chart->plot_area.h));
+		g_value_set_string (value, string->str);
+		g_string_free (string, TRUE);
+		break;
+	case CHART_PROP_PLOT_AREA_IS_MANUAL:
+		g_value_set_boolean (value, chart->is_plot_area_manual);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+typedef struct {
+	GtkWidget	*x_spin, *y_spin, *w_spin, *h_spin;
+	gulong		w_spin_signal, h_spin_signal;
+	GtkWidget	*manual_toggle;
+	GogChart 	*chart;
+	GladeXML	*gui;
+} ChartPrefState;
+
+static void
+chart_pref_state_free (ChartPrefState *state) 
+{
+	g_object_unref (state->chart);
+	g_object_unref (state->gui);
+}
+
+static void
+cb_plot_area_changed (GtkWidget *spin, ChartPrefState *state)
+{
+	GogViewAllocation pos;
+	double value;
+	double max;
+
+       	value = gtk_spin_button_get_value (GTK_SPIN_BUTTON (spin)) / 100.0;
+
+       	gog_chart_get_plot_area (state->chart, &pos);
+	if (spin == state->x_spin) {
+		pos.x = value;
+		max = 1.0 - pos.x;
+		g_signal_handler_block (state->w_spin, state->w_spin_signal);
+		gtk_spin_button_set_range (GTK_SPIN_BUTTON (state->w_spin), 0.0, max * 100.0);
+		if (pos.w > max) pos.w = max;
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (state->w_spin), pos.w * 100.0);
+		g_signal_handler_unblock (state->w_spin, state->w_spin_signal);
+	}
+	else if (spin == state->y_spin) {
+		pos.y = value;
+		max = 1.0 - pos.y;
+		g_signal_handler_block (state->h_spin, state->h_spin_signal);
+		gtk_spin_button_set_range (GTK_SPIN_BUTTON (state->h_spin), 0.0, max * 100.0);
+		if (pos.h > max) pos.h = max;
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (state->h_spin), pos.w * 100.0);
+		g_signal_handler_unblock (state->h_spin, state->h_spin_signal);
+	}
+	else if (spin == state->w_spin) {
+		pos.w = value;
+	}
+	else if (spin == state->h_spin) {
+		pos.h = value;
+	}
+	gog_chart_set_plot_area (state->chart, &pos);
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->manual_toggle), TRUE);
+}
+
+static void
+cb_manual_toggle_changed (GtkToggleButton *button, ChartPrefState *state)
+{
+	gog_chart_set_plot_area (state->chart, 
+		gtk_toggle_button_get_active (button) ?
+		&state->chart->plot_area : NULL);
+}
+
+static void
+gog_chart_populate_editor (GogObject *gobj, 
+			   GogEditor *editor, 
+			   G_GNUC_UNUSED GogDataAllocator *dalloc, 
+			   GOCmdContext *cc)
+{
+	GogChart *chart = GOG_CHART (gobj);
+	GtkWidget *w;
+	GladeXML *gui;
+	ChartPrefState *state;
+	static guint chart_pref_page = 0;
+	
+	gui = go_libglade_new ("gog-chart-prefs.glade", "gog_chart_prefs", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	state = g_new (ChartPrefState, 1);
+	state->chart = chart;
+	state->gui = gui;
+	g_object_ref (G_OBJECT (gobj));
+
+	state->x_spin = glade_xml_get_widget (gui, "x_spin");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (state->x_spin), 
+				   chart->plot_area.x * 100.0); 
+	g_signal_connect (G_OBJECT (state->x_spin), "value-changed", 
+			  G_CALLBACK (cb_plot_area_changed), state);
+
+	state->y_spin = glade_xml_get_widget (gui, "y_spin");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (state->y_spin), 
+				   chart->plot_area.y * 100.0); 
+	g_signal_connect (G_OBJECT (state->y_spin), "value-changed", 
+			  G_CALLBACK (cb_plot_area_changed), state);
+
+	state->w_spin = glade_xml_get_widget (gui, "w_spin");
+	gtk_spin_button_set_range (GTK_SPIN_BUTTON (state->w_spin), 
+				   0.0, (1.0 - chart->plot_area.x) * 100.0);
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (state->w_spin), 
+				   100.0 * chart->plot_area.w); 
+	state->w_spin_signal = g_signal_connect (G_OBJECT (state->w_spin), "value-changed", 
+						 G_CALLBACK (cb_plot_area_changed), state);
+
+	state->h_spin = glade_xml_get_widget (gui, "h_spin");
+	gtk_spin_button_set_range (GTK_SPIN_BUTTON (state->h_spin), 
+				   0.0, (1.0 - chart->plot_area.y) * 100.0);
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (state->h_spin), 
+				   100.0 * chart->plot_area.h); 
+	state->h_spin_signal = g_signal_connect (G_OBJECT (state->h_spin), "value-changed", 
+						 G_CALLBACK (cb_plot_area_changed), state);
+
+	state->manual_toggle = glade_xml_get_widget (gui, "manual_toggle");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->manual_toggle), 
+				      chart->is_plot_area_manual);
+	g_signal_connect (G_OBJECT (state->manual_toggle), "toggled", 
+			  G_CALLBACK (cb_manual_toggle_changed), state);
+
+	(GOG_OBJECT_CLASS(chart_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+
+	w = glade_xml_get_widget (gui, "gog_chart_prefs");
+	g_object_set_data_full (G_OBJECT (w), "state", state, 
+				(GDestroyNotify) chart_pref_state_free);  
+	gog_editor_add_page (editor, w, _("Plot area"));
+	
+	gog_editor_set_store_page (editor, &chart_pref_page);
+}
+
+static void
+gog_chart_children_reordered (GogObject *obj)
+{
+	GSList *ptr, *accum = NULL;
+	GogChart *chart = GOG_CHART (obj);
+
+	for (ptr = obj->children; ptr != NULL ; ptr = ptr->next)
+		if (IS_GOG_PLOT (ptr->data))
+			accum = g_slist_prepend (accum, ptr->data);
+	g_slist_free (chart->plots);
+	chart->plots = g_slist_reverse (accum);
+
+	gog_chart_request_cardinality_update (chart);
+}
+
+static void
+role_plot_post_add (GogObject *parent, GogObject *plot)
+{
+	GogChart *chart = GOG_CHART (parent);
+	gboolean ok = TRUE;
+
+	/* APPEND to keep order, there won't be that many */
+	chart->plots = g_slist_append (chart->plots, plot);
+	gog_chart_request_cardinality_update (chart);
+	
+	if (chart->plots->next == NULL)
+		ok = gog_chart_axis_set_assign (chart,
+			gog_plot_axis_set_pref (GOG_PLOT (plot)));
+	ok |= gog_plot_axis_set_assign (GOG_PLOT (plot),
+		chart->axis_set);
+
+	/* a quick post condition to keep us on our toes */
+	g_return_if_fail (ok);
+}
+
+static void
+role_plot_pre_remove (GogObject *parent, GogObject *plot)
+{
+	GogChart *chart = GOG_CHART (parent);
+	gog_plot_axis_clear (GOG_PLOT (plot), GOG_AXIS_SET_ALL);
+	chart->plots = g_slist_remove (chart->plots, plot);
+	gog_chart_request_cardinality_update (chart);
+	
+	if (chart->plots == NULL)
+		gog_chart_axis_set_assign (chart, GOG_AXIS_SET_UNKNOWN);
+
+	if (chart->grid != NULL && 
+	    chart->axis_set != GOG_AXIS_SET_XY &&
+	    chart->axis_set != GOG_AXIS_SET_X && 
+	    chart->axis_set != GOG_AXIS_SET_XY_pseudo_3d &&
+	    chart->axis_set != GOG_AXIS_SET_RADAR) {
+		GogObject *grid = chart->grid; /* clear_parent clears ::grid */
+		gog_object_clear_parent (GOG_OBJECT (grid));
+		g_object_unref (grid);
+	}
+}
+
+static gboolean
+role_grid_can_add (GogObject const *parent)
+{
+	GogChart const *chart = GOG_CHART (parent);
+	return chart->grid == NULL &&
+		(chart->axis_set == GOG_AXIS_SET_XY ||
+		 chart->axis_set == GOG_AXIS_SET_X ||
+		 chart->axis_set == GOG_AXIS_SET_XY_pseudo_3d ||
+		 chart->axis_set == GOG_AXIS_SET_RADAR);
+}
+
+static void
+role_grid_post_add (GogObject *parent, GogObject *child)
+{
+	GogChart *chart = GOG_CHART (parent);
+	g_return_if_fail (chart->grid == NULL);
+	chart->grid = child;
+}
+
+static void
+role_grid_pre_remove (GogObject *parent, GogObject *grid)
+{
+	GogChart *chart = GOG_CHART (parent);
+	g_return_if_fail (chart->grid == grid);
+	chart->grid = NULL;
+}
+
+static gboolean
+axis_can_add (GogObject const *parent, GogAxisType t)
+{
+	GogChart *chart = GOG_CHART (parent);
+	if (chart->axis_set == GOG_AXIS_SET_UNKNOWN)
+		return FALSE;
+	return (chart->axis_set & (1 << t)) != 0;
+}
+
+static gboolean
+axis_can_remove (GogObject const *child)
+{
+	return NULL == gog_axis_contributors (GOG_AXIS (child));
+}
+
+static void
+axis_post_add (GogObject *axis, GogAxisType t)
+{
+	GogChart *chart = GOG_CHART (axis->parent);
+	g_object_set (G_OBJECT (axis), "type", (int)t, NULL);
+	chart->axes = g_slist_prepend (chart->axes, axis);
+
+	gog_axis_base_set_position (GOG_AXIS_BASE (axis), GOG_AXIS_AUTO);
+}
+
+static void
+axis_pre_remove (GogObject *parent, GogObject *axis)
+{
+	GogChart *chart = GOG_CHART (parent);
+	gog_axis_clear_contributors (GOG_AXIS (axis));
+	chart->axes = g_slist_remove (chart->axes, axis);
+}
+
+static gboolean x_axis_can_add (GogObject const *parent) { return axis_can_add (parent, GOG_AXIS_X); }
+static void x_axis_post_add    (GogObject *parent, GogObject *child)  { axis_post_add   (child, GOG_AXIS_X); }
+static gboolean y_axis_can_add (GogObject const *parent) { return axis_can_add (parent, GOG_AXIS_Y); }
+static void y_axis_post_add    (GogObject *parent, GogObject *child)  { axis_post_add   (child, GOG_AXIS_Y); }
+static gboolean z_axis_can_add (GogObject const *parent) { return axis_can_add (parent, GOG_AXIS_Z); }
+static void z_axis_post_add    (GogObject *parent, GogObject *child)  { axis_post_add   (child, GOG_AXIS_Z); }
+static gboolean circular_axis_can_add (GogObject const *parent) { return axis_can_add (parent, GOG_AXIS_CIRCULAR); }
+static void circular_axis_post_add    (GogObject *parent, GogObject *child)  { axis_post_add   (child, GOG_AXIS_CIRCULAR); }
+static gboolean radial_axis_can_add (GogObject const *parent) { return axis_can_add (parent, GOG_AXIS_RADIAL); }
+static void radial_axis_post_add    (GogObject *parent, GogObject *child)  { axis_post_add   (child, GOG_AXIS_RADIAL); }
+static gboolean pseudo_3d_axis_can_add (GogObject const *parent) { return axis_can_add (parent, GOG_AXIS_PSEUDO_3D); }
+static void pseudo_3d_axis_post_add    (GogObject *parent, GogObject *child)  { axis_post_add   (child, GOG_AXIS_PSEUDO_3D); }
+
+static GogObjectRole const roles[] = {
+	{ N_("Grid"), "GogGrid",	0,
+	  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+	  role_grid_can_add, NULL, NULL, role_grid_post_add, role_grid_pre_remove, NULL, { -1 } },
+	{ N_("X-Axis"), "GogAxis",	1,
+	  GOG_POSITION_PADDING, GOG_POSITION_PADDING, GOG_OBJECT_NAME_BY_ROLE,
+	  x_axis_can_add, axis_can_remove, NULL, x_axis_post_add, axis_pre_remove, NULL,
+	  { GOG_AXIS_X } },
+	{ N_("Y-Axis"), "GogAxis",	2,
+	  GOG_POSITION_PADDING, GOG_POSITION_PADDING, GOG_OBJECT_NAME_BY_ROLE,
+	  y_axis_can_add, axis_can_remove, NULL, y_axis_post_add, axis_pre_remove, NULL,
+	  { GOG_AXIS_Y } },
+	{ N_("Z-Axis"), "GogAxis",	3,
+	  GOG_POSITION_PADDING, GOG_POSITION_PADDING, GOG_OBJECT_NAME_BY_ROLE,
+	  z_axis_can_add, axis_can_remove, NULL, z_axis_post_add, axis_pre_remove, NULL,
+	  { GOG_AXIS_Z } },
+	{ N_("Circular-Axis"), "GogAxis", 1,
+	  GOG_POSITION_PADDING, GOG_POSITION_PADDING, GOG_OBJECT_NAME_BY_ROLE,
+	  circular_axis_can_add, axis_can_remove, NULL, circular_axis_post_add, axis_pre_remove, NULL,
+	  { GOG_AXIS_CIRCULAR } },
+	{ N_("Radial-Axis"), "GogAxis",	2,
+	  GOG_POSITION_PADDING, GOG_POSITION_PADDING, GOG_OBJECT_NAME_BY_ROLE,
+	  radial_axis_can_add, axis_can_remove, NULL, radial_axis_post_add, axis_pre_remove, NULL,
+	  { GOG_AXIS_RADIAL } },
+	{ N_("Pseudo-3D-Axis"), "GogAxis", 3,
+	  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+	  pseudo_3d_axis_can_add, axis_can_remove, NULL, pseudo_3d_axis_post_add, axis_pre_remove, NULL,
+	  { GOG_AXIS_PSEUDO_3D } },
+	{ N_("Plot"), "GogPlot",	4,	/* keep the axis before the plots */
+	  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_TYPE,
+	  NULL, NULL, NULL, role_plot_post_add, role_plot_pre_remove, NULL, { -1 } },
+	{ N_("Title"), "GogLabel",	10,
+	  GOG_POSITION_COMPASS|GOG_POSITION_ANY_MANUAL, 
+	  GOG_POSITION_N|GOG_POSITION_ALIGN_CENTER, 
+	  GOG_OBJECT_NAME_BY_ROLE,
+	  NULL, NULL, NULL, NULL, NULL, NULL, { -1 } },
+	{ N_("Legend"), "GogLegend",	11,
+	  GOG_POSITION_COMPASS|GOG_POSITION_ANY_MANUAL, 
+	  GOG_POSITION_E|GOG_POSITION_ALIGN_CENTER, 
+	  GOG_OBJECT_NAME_BY_ROLE,
+	  NULL, NULL, NULL, NULL, NULL, NULL, { -1 } }
+};
+
+static void
+gog_chart_class_init (GogObjectClass *gog_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *)gog_klass;
+
+	chart_parent_klass = g_type_class_peek_parent (gog_klass);
+	gobject_klass->finalize = gog_chart_finalize;
+	gobject_klass->set_property = gog_chart_set_property;
+	gobject_klass->get_property = gog_chart_get_property;
+
+	gog_klass->populate_editor = gog_chart_populate_editor;
+
+	gog_klass->can_manual_size = TRUE;
+
+	g_object_class_install_property (gobject_klass, CHART_PROP_CARDINALITY_VALID,
+		g_param_spec_boolean ("cardinality-valid", "cardinality-valid",
+				      "Is the charts cardinality currently vaid",
+				      FALSE, G_PARAM_READABLE));
+	g_object_class_install_property (gobject_klass, CHART_PROP_PLOT_AREA,
+		g_param_spec_string ("plot-area", "Plot area",
+				     "Position and size of plot area, in percentage of chart size",
+				     "0 0 1 1", G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, CHART_PROP_PLOT_AREA_IS_MANUAL,
+		g_param_spec_boolean ("is-plot-area-manual", "Is plot area manual", 
+				      "Is plot area manual",
+				      FALSE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+
+	gog_klass->view_type = gog_chart_view_get_type ();
+	gog_klass->update    = gog_chart_update;
+	gog_klass->children_reordered = gog_chart_children_reordered;
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+}
+
+static void
+gog_chart_init (GogChart *chart)
+{
+	chart->x     = 0;
+	chart->y     = 0;
+	chart->cols  = 0;
+	chart->rows  = 0;
+
+	/* start as true so that we can queue an update when it changes */
+	chart->cardinality_valid = TRUE;
+	chart->axis_set = GOG_AXIS_SET_UNKNOWN;
+
+	chart->is_plot_area_manual = FALSE;
+	chart->plot_area.x =
+	chart->plot_area.y = 0.0;
+	chart->plot_area.w = 
+	chart->plot_area.h = 1.0;
+}
+
+GSF_CLASS (GogChart, gog_chart,
+	   gog_chart_class_init, gog_chart_init,
+	   GOG_OUTLINED_OBJECT_TYPE)
+
+/**
+ * gog_chart_get_position :
+ * @chart : const #GogChart
+ * @x :
+ * @y :
+ * @cols :
+ * @rows :
+ *
+ * Returns TRUE if the chart has been positioned.
+ **/
+gboolean
+gog_chart_get_position (GogChart const *chart,
+			unsigned *x, unsigned *y, unsigned *cols, unsigned *rows)
+{
+	g_return_val_if_fail (GOG_CHART (chart), FALSE);
+
+	if (chart->cols <= 0 || chart->rows <= 0)
+		return FALSE;
+
+	if (x != NULL)	  *x	= chart->x;
+	if (y != NULL)	  *y	= chart->y;
+	if (cols != NULL) *cols	= chart->cols;
+	if (rows != NULL) *rows	= chart->rows;
+
+	return TRUE;
+}
+
+/**
+ * gog_chart_set_position :
+ * @chart : #GogChart
+ * @x :
+ * @y :
+ * @cols :
+ * @rows :
+ *
+ **/
+void
+gog_chart_set_position (GogChart *chart,
+			unsigned x, unsigned y, unsigned cols, unsigned rows)
+{
+	g_return_if_fail (GOG_CHART (chart) != NULL);
+
+	if (chart->x == x && chart->y == y &&
+	    chart->cols == cols && chart->rows == rows)
+		return;
+
+	chart->x = x;
+	chart->y = y;
+	chart->cols = cols;
+	chart->rows = rows;
+
+	gog_graph_validate_chart_layout (GOG_GRAPH (GOG_OBJECT (chart)->parent));
+	gog_object_emit_changed (GOG_OBJECT (chart), TRUE);
+}
+
+/**
+ * gog_chart_get_plot_area :
+ * @chart : #GogChart
+ * @plot_area  : #GogViewAllocation
+ *
+ * Stores plot area in plot_area, in fraction of chart size, and returns
+ * TRUE if plot area position is manual.
+ **/
+gboolean
+gog_chart_get_plot_area (GogChart *chart, GogViewAllocation *plot_area)
+{
+	if (plot_area != NULL)
+		*plot_area = chart->plot_area;
+	
+	return chart->is_plot_area_manual;
+}
+
+/**
+ * gog_chart_set_plot_area :
+ * @chart : #GogChart
+ * @plot_area  : #GogViewAllocation
+ *
+ * If plot_area != NULL, sets plot area size and location, in fraction
+ * of chart size, and sets GogChart::is_plot_area_manual flag to TRUE.
+ * If plot_area == NULL, sets GogChart::is_plot_area_manual to FALSE.
+ **/
+void
+gog_chart_set_plot_area (GogChart *chart, GogViewAllocation const *plot_area)
+{
+	if (plot_area == NULL) {
+		chart->is_plot_area_manual = FALSE;
+	} else {
+		chart->plot_area = *plot_area;
+		chart->is_plot_area_manual = TRUE;
+	}
+	gog_object_emit_changed (GOG_OBJECT (chart), TRUE);
+}
+
+/* FIXME: function description here */
+void
+gog_chart_get_cardinality (GogChart *chart, unsigned *full, unsigned *visible)
+{
+	GSList *ptr;
+	unsigned tmp_full, tmp_visible;
+
+	g_return_if_fail (GOG_CHART (chart) != NULL);
+
+	if (!chart->cardinality_valid) {
+		chart->cardinality_valid = TRUE;
+		chart->full_cardinality = chart->visible_cardinality = 0;
+		for (ptr = chart->plots ; ptr != NULL ; ptr = ptr->next) {
+			gog_plot_get_cardinality (ptr->data, &tmp_full, &tmp_visible);
+			chart->full_cardinality += tmp_full;
+			chart->visible_cardinality += tmp_visible;
+		}
+	}
+
+	if (full != NULL)
+		*full = chart->full_cardinality;
+	if (visible != NULL)
+		*visible = chart->visible_cardinality;
+}
+
+void
+gog_chart_request_cardinality_update (GogChart *chart)
+{
+	g_return_if_fail (GOG_CHART (chart) != NULL);
+	
+	if (chart->cardinality_valid) {
+		chart->cardinality_valid = FALSE;
+		gog_object_request_update (GOG_OBJECT (chart));
+	}
+}
+
+void
+gog_chart_foreach_elem (GogChart *chart, gboolean only_visible,
+			GogEnumFunc handler, gpointer data)
+{
+	GSList *ptr;
+
+	g_return_if_fail (GOG_CHART (chart) != NULL);
+	g_return_if_fail (chart->cardinality_valid);
+
+	for (ptr = chart->plots ; ptr != NULL ; ptr = ptr->next)
+		gog_plot_foreach_elem (ptr->data, only_visible, handler, data);
+}
+
+GSList *
+gog_chart_get_plots (GogChart const *chart)
+{
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, NULL);
+	return chart->plots;
+}
+
+GogAxisSet
+gog_chart_get_axis_set (GogChart const *chart)
+{
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, GOG_AXIS_SET_UNKNOWN);
+	return chart->axis_set;
+}
+
+gboolean
+gog_chart_axis_set_is_valid (GogChart const *chart, GogAxisSet type)
+{
+	GSList *ptr;
+
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, FALSE);
+
+	for (ptr = chart->plots ; ptr != NULL ; ptr = ptr->next)
+		if (!gog_plot_axis_set_is_valid (ptr->data, type))
+			return FALSE;
+	return TRUE;
+}
+
+static void
+gog_chart_add_axis (GogChart *chart, GogAxisType type)
+{
+	unsigned i = G_N_ELEMENTS (roles);
+	while (i-- > 0)
+		if (roles[i].user.i == (int)type) {
+			gog_object_add_by_role (GOG_OBJECT (chart), roles + i, NULL);
+			return;
+		}
+	g_warning ("unknown axis type %d", type);
+}
+
+gboolean
+gog_chart_axis_set_assign (GogChart *chart, GogAxisSet axis_set)
+{
+	GogAxis *axis;
+	GSList  *ptr;
+	GogAxisType type;
+
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, FALSE);
+
+	if (chart->axis_set == axis_set)
+		return TRUE;
+	chart->axis_set = axis_set;
+
+	if (axis_set == GOG_AXIS_SET_UNKNOWN)
+		return TRUE;
+
+	/* Add at least 1 instance of any required axis */
+	for (type = 0 ; type < GOG_AXIS_TYPES ; type++)
+		if ((axis_set & (1 << type))) {
+			GSList *tmp = gog_chart_get_axes (chart, type);
+			if (tmp == NULL)
+				gog_chart_add_axis (chart, type);
+			else
+				g_slist_free (tmp);
+		}
+
+	/* link the plots */
+	for (ptr = chart->plots ; ptr != NULL ; ptr = ptr->next)
+		if (!gog_plot_axis_set_assign (ptr->data, axis_set))
+			return FALSE;
+
+	/* remove any existing axis that do not fit this scheme */
+	for (ptr = GOG_OBJECT (chart)->children ; ptr != NULL ; ) {
+		axis = ptr->data;
+		ptr = ptr->next; /* list may change under us */
+		if (IS_GOG_AXIS (axis)) {
+			type = -1;
+			g_object_get (G_OBJECT (axis), "type", &type, NULL);
+			if (type < 0 || type >= GOG_AXIS_TYPES) {
+				g_warning ("Invalid axis");
+				continue;
+			}
+
+			if (0 == (axis_set & (1 << type))) {
+				gog_object_clear_parent (GOG_OBJECT (axis));
+				g_object_unref (axis);
+			}
+		}
+	}
+
+	return TRUE;
+}
+
+/**
+ * gog_chart_get_axes :
+ * @chart : #GogChart
+ * @target  : #GogAxisType
+ *
+ * Return a list which the caller must free of all axis of type @target
+ * associated with @chart.
+ **/
+GSList *
+gog_chart_get_axes (GogChart const *chart, GogAxisType target)
+{
+	GSList *ptr, *res = NULL;
+	GogAxis *axis;
+	int type;
+
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, NULL);
+
+	for (ptr = GOG_OBJECT (chart)->children ; ptr != NULL ; ptr = ptr->next) {
+		axis = ptr->data;
+		if (IS_GOG_AXIS (axis)) {
+			type = -1;
+			g_object_get (G_OBJECT (axis), "type", &type, NULL);
+			if (type < 0 || type >= GOG_AXIS_TYPES) {
+				g_warning ("Invalid axis");
+				continue;
+			}
+			if (type == target)
+				res = g_slist_prepend (res, axis);
+		}
+	}
+
+	return res;
+}
+
+/**
+ * gog_chart_get_grid :
+ * @chart : #GogChart
+ *
+ * Returns the grid associated with @chart if one exists
+ * otherwise NULL.
+ **/
+GogGrid  *
+gog_chart_get_grid (GogChart const *chart)
+{
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, NULL);
+	return GOG_GRID (chart->grid);
+}
+
+/*********************************************************************/
+
+typedef struct {
+	GogOutlinedView base;
+
+	GogViewAllocation	plot_area;
+} GogChartView;
+typedef GogOutlinedViewClass	GogChartViewClass;
+
+#define GOG_CHART_VIEW_TYPE	(gog_chart_view_get_type ())
+#define GOG_CHART_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_CHART_VIEW_TYPE, GogChartView))
+#define IS_GOG_CHART_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_CHART_VIEW_TYPE))
+
+static GogViewClass *cview_parent_klass;
+
+GogViewAllocation const *
+gog_chart_view_get_plot_area (GogView const *view)
+{
+	GogChartView *chart_view = GOG_CHART_VIEW (view);
+
+	g_return_val_if_fail ((GOG_CHART_VIEW (view) != NULL), NULL);
+
+	return & (chart_view->plot_area);
+}
+
+static void
+gog_chart_view_size_allocate (GogView *view, GogViewAllocation const *bbox)
+{
+	GSList *ptr;
+	GogView *child;
+	GogChartView *chart_view = GOG_CHART_VIEW (view);
+	GogViewAllocation tmp, *plot_area = &chart_view->plot_area;
+	GogViewPadding padding;
+	GogChart *chart = GOG_CHART (gog_view_get_model (view));
+
+	(cview_parent_klass->size_allocate) (view, bbox);
+
+	if (chart->is_plot_area_manual) {
+		plot_area->x = bbox->x + chart->plot_area.x * bbox->w;
+		plot_area->y = bbox->y + chart->plot_area.y * bbox->h;
+		plot_area->w = chart->plot_area.w * bbox->w;
+		plot_area->h = chart->plot_area.h * bbox->h;
+	} else
+		*plot_area = view->residual;
+
+	tmp = *plot_area;
+	gog_view_padding_request (view, plot_area, &padding);
+	
+	if (!chart->is_plot_area_manual) {
+		plot_area->x += padding.wl;
+		plot_area->w -= padding.wl + padding.wr;
+		plot_area->y += padding.ht;
+		plot_area->h -= padding.ht + padding.hb;
+	} else {
+		tmp.x -= padding.wl;
+		tmp.w += padding.wl + padding.wr;
+		tmp.y -= padding.ht;
+		tmp.h += padding.ht + padding.hb;
+	}
+
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+		if (GOG_POSITION_IS_PADDING (child->model->position)) {
+			gog_view_size_allocate (child, &tmp);
+		}
+	}
+
+	/* by default, overlay all GOG_POSITION_SPECIAL children in residual */
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+		if (GOG_POSITION_IS_SPECIAL (child->model->position))
+			gog_view_size_allocate (child, plot_area);
+	}
+}
+
+static void
+gog_chart_view_init (GogChartView *cview)
+{
+}
+
+static void
+grid_line_render (GSList *start_ptr, GogViewAllocation const *bbox) 
+{
+	GSList *ptr, *child_ptr;
+	GogView *child_view, *axis_child_view;
+
+	/* Render minor lines first */
+	for (ptr = start_ptr; ptr != NULL; ptr = ptr->next) {
+		child_view = ptr->data;
+		if (IS_GOG_AXIS (child_view->model)) {
+			for (child_ptr = child_view->children; child_ptr != NULL; child_ptr = child_ptr->next) {
+				axis_child_view = child_ptr->data;
+				if (IS_GOG_GRID_LINE (axis_child_view->model) &&
+				    gog_grid_line_is_minor (GOG_GRID_LINE (axis_child_view->model)))
+					gog_view_render (axis_child_view, bbox);
+			}
+		}
+	}	    
+	/* then render major lines */
+	for (ptr = start_ptr; ptr != NULL; ptr = ptr->next) {
+		child_view = ptr->data;
+		if (IS_GOG_AXIS (child_view->model)) {
+			for (child_ptr = child_view->children; child_ptr != NULL; child_ptr = child_ptr->next) {
+				axis_child_view = child_ptr->data;
+				if (IS_GOG_GRID_LINE (axis_child_view->model) &&
+				    !gog_grid_line_is_minor (GOG_GRID_LINE (axis_child_view->model)))
+					gog_view_render (axis_child_view, bbox);
+			}
+		}
+	}	    
+}
+
+static void
+plot_render (GogView *view, GogViewAllocation const *bbox) 
+{
+	GSList *ptr;
+	GogView *child_view;
+
+	/* Render some plots before axes */
+	for (ptr = view->children ; ptr != NULL ; ptr = ptr->next) {
+		child_view = ptr->data;
+		if (IS_GOG_PLOT (child_view->model) && 
+		    GOG_PLOT (child_view->model)->render_before_axes)
+			gog_view_render	(ptr->data, bbox);
+	}
+}
+
+static void
+gog_chart_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GSList *ptr;
+	GogView *child_view;
+	gboolean grid_line_rendered = FALSE;
+
+	cview_parent_klass->render (view, bbox);
+
+	/* KLUDGE: render grid lines before axis */
+	for (ptr = view->children ; ptr != NULL ; ptr = ptr->next) {
+		child_view = ptr->data;
+		if (!grid_line_rendered && IS_GOG_AXIS (child_view->model)) {
+			grid_line_render (ptr, bbox);
+			plot_render (view, bbox);
+			grid_line_rendered = TRUE;
+		}
+		if (IS_GOG_PLOT (child_view->model)) {
+		    if (!GOG_PLOT (child_view->model)->render_before_axes)
+			gog_view_render	(ptr->data, bbox);
+		} else
+			gog_view_render	(ptr->data, bbox);
+	}
+
+}
+
+static void
+gog_chart_view_class_init (GogChartViewClass *gview_klass)
+{
+	GogViewClass *view_klass = (GogViewClass *) gview_klass;
+	GogOutlinedViewClass *oview_klass = (GogOutlinedViewClass *) gview_klass;
+
+	cview_parent_klass = g_type_class_peek_parent (gview_klass);
+	view_klass->size_allocate   = gog_chart_view_size_allocate;
+	view_klass->clip = FALSE;
+	view_klass->render = gog_chart_view_render;
+	oview_klass->call_parent_render = FALSE;
+}
+
+static GSF_CLASS (GogChartView, gog_chart_view,
+		  gog_chart_view_class_init, gog_chart_view_init,
+		  GOG_OUTLINED_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-chart.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,93 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-chart.h :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_CHART_H
+#define GOG_CHART_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-axis.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+GogAxisSet gog_axis_set_from_str (char const *str);
+	
+typedef struct {
+	double cx, cy;
+	double rx, ry;
+	double th0, th1;
+} GogChartMapPolarData;
+
+typedef struct _GogChartMap GogChartMap;
+
+struct _GogChartMap {
+	GogChart 		*chart;
+	GogViewAllocation	 area;
+	gpointer	 	 data;
+	GogAxisMap		*axis_map[3];
+	gboolean		 is_valid;
+
+	void (*map_2D_to_view)	(GogChartMap *map, double x, double y, double *u, double *v);
+};
+
+GogChartMap 	*gog_chart_map_new 		(GogChart *chart, GogViewAllocation const *area,
+						 GogAxis *axis0, GogAxis *axis1, GogAxis *axis2,
+						 gboolean fill_area);
+void 		 gog_chart_map_2D_to_view	(GogChartMap *map, double x, double y, double *u, double *v);
+GogAxisMap	*gog_chart_map_get_axis_map 	(GogChartMap *map, unsigned i);
+gboolean	 gog_chart_map_is_valid 	(GogChartMap *map);
+void		 gog_chart_map_free 		(GogChartMap *map);
+
+GogChartMapPolarData *gog_chart_map_get_polar_parms (GogChartMap *map);
+	
+#define GOG_CHART_TYPE	(gog_chart_get_type ())
+#define GOG_CHART(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_CHART_TYPE, GogChart))
+#define IS_GOG_CHART(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_CHART_TYPE))
+
+GType gog_chart_get_type (void);
+
+gboolean  gog_chart_get_position  (GogChart const *chart, unsigned *x, unsigned *y,
+				   unsigned *cols, unsigned *rows);
+void	  gog_chart_set_position  (GogChart *chart, unsigned x, unsigned y,
+				   unsigned cols, unsigned rows);
+gboolean  gog_chart_get_plot_area (GogChart *chart, GogViewAllocation *plot_area);
+void 	  gog_chart_set_plot_area (GogChart *chart, GogViewAllocation const *plot_area);
+
+void	 gog_chart_request_cardinality_update (GogChart *chart);
+void	 gog_chart_get_cardinality (GogChart *chart,
+				    unsigned *full, unsigned *visible);
+void	 gog_chart_foreach_elem	   (GogChart *chart, gboolean only_visible,
+				    GogEnumFunc handler, gpointer data);
+GSList	*gog_chart_get_plots	   (GogChart const *chart);
+
+GogAxisSet gog_chart_get_axis_set    (GogChart const *chart);
+gboolean gog_chart_axis_set_is_valid (GogChart const *chart, GogAxisSet type);
+gboolean gog_chart_axis_set_assign   (GogChart *chart, GogAxisSet type);
+GSList	*gog_chart_get_axes	     (GogChart const *chart, GogAxisType type);
+
+GogGrid *gog_chart_get_grid	     (GogChart const *chart);
+
+/* View utils */
+GogViewAllocation const *gog_chart_view_get_plot_area (GogView const *view);
+
+G_END_DECLS
+
+#endif /* GOG_CHART_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,265 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-control-foocanvas.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-control-foocanvas.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-util.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <math.h>
+
+enum {
+	CTRL_FOO_PROP_0,
+	CTRL_FOO_PROP_H,
+	CTRL_FOO_PROP_W,
+	CTRL_FOO_PROP_MODEL,
+	CTRL_FOO_PROP_RENDERER
+};
+
+static GObjectClass *parent_klass;
+
+#define GOG_CONTROL_FOOCANVAS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST ((k), GOG_CONTROL_FOOCANVAS_TYPE, GogControlFooCanvasClass))
+#define IS_GOG_CONTROL_FOOCANVAS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GOG_CONTROL_FOOCANVAS_TYPE))
+#define GOG_CONTROL_FOOCANVAS_GET_CLASS(k) (G_TYPE_INSTANCE_GET_CLASS ((k), GOG_CONTROL_FOOCANVAS_TYPE, GogControlFooCanvasClass))
+
+static void
+gog_control_foocanvas_set_property (GObject *gobject, guint param_id,
+				    GValue const *value, GParamSpec *pspec)
+{
+	GogControlFooCanvas *ctrl = GOG_CONTROL_FOOCANVAS (gobject);
+	gboolean setup_renderer = (ctrl->renderer == NULL);
+
+	switch (param_id) {
+	case CTRL_FOO_PROP_H: ctrl->new_h = g_value_get_double (value); break;
+	case CTRL_FOO_PROP_W: ctrl->new_w = g_value_get_double (value); break;
+
+	case CTRL_FOO_PROP_MODEL:
+		if (ctrl->renderer != NULL)
+			g_object_unref (ctrl->renderer);
+#ifdef WITH_CAIRO
+		ctrl->renderer = g_object_new (GOG_RENDERER_CAIRO_TYPE,
+					       "model", g_value_get_object (value),
+					       NULL);
+#else
+		ctrl->renderer = g_object_new (GOG_RENDERER_PIXBUF_TYPE,
+					       "model", g_value_get_object (value),
+					       NULL);
+#endif
+		break;
+
+	case CTRL_FOO_PROP_RENDERER:
+		if (ctrl->renderer != NULL)
+			g_object_unref (ctrl->renderer);
+#ifdef WITH_CAIRO
+		ctrl->renderer = GOG_RENDERER_CAIRO (g_value_get_object (value));
+#else
+		ctrl->renderer = GOG_RENDERER_PIXBUF (g_value_get_object (value));
+#endif
+		if (ctrl->renderer != NULL)
+			g_object_ref (ctrl->renderer);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		return; /* NOTE : RETURN */
+	}
+
+	if (setup_renderer && ctrl->renderer != NULL)
+		g_signal_connect_object (G_OBJECT (ctrl->renderer),
+			"request_update",
+			G_CALLBACK (foo_canvas_item_request_update),
+			ctrl, G_CONNECT_SWAPPED);
+	foo_canvas_item_request_update (FOO_CANVAS_ITEM (ctrl));
+}
+
+static void
+gog_control_foocanvas_get_property (GObject *gobject, guint param_id,
+				    GValue *value, GParamSpec *pspec)
+{
+	GogControlFooCanvas *ctrl = GOG_CONTROL_FOOCANVAS (gobject);
+
+	switch (param_id) {
+	case CTRL_FOO_PROP_H: g_value_set_double (value, ctrl->new_h); break;
+	case CTRL_FOO_PROP_W: g_value_set_double (value, ctrl->new_w); break;
+	case CTRL_FOO_PROP_RENDERER  : g_value_set_object (value, ctrl->renderer); break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		break;
+	}
+}
+
+static void
+gog_control_foocanvas_finalize (GObject *obj)
+{
+	GogControlFooCanvas *ctrl = GOG_CONTROL_FOOCANVAS (obj);
+
+	if (ctrl->model != NULL) {
+		g_object_unref (ctrl->model);
+		ctrl->model = NULL;
+	}
+	if (ctrl->renderer != NULL) {
+		g_object_unref (ctrl->renderer);
+		ctrl->renderer = NULL;
+	}
+	(*parent_klass->finalize) (obj);
+}
+
+static void
+gog_control_foocanvas_draw (FooCanvasItem *item, GdkDrawable *drawable,
+			    GdkEventExpose *ev)
+{
+	GogControlFooCanvas *ctrl = GOG_CONTROL_FOOCANVAS (item);
+#ifdef WITH_CAIRO
+	GdkPixbuf *buffer = gog_renderer_cairo_get_pixbuf (ctrl->renderer);
+#else
+	GdkPixbuf *buffer = gog_renderer_pixbuf_get (ctrl->renderer);
+#endif
+	GdkRectangle display_rect, draw_rect;
+	GdkRegion *draw_region;
+
+	if (buffer) {
+		display_rect.x = item->x1;
+		display_rect.y = item->y1;
+		display_rect.width  = item->x2 - item->x1;
+		display_rect.height = item->y2 - item->y1;
+
+		draw_region = gdk_region_rectangle (&display_rect);
+		gdk_region_intersect (draw_region, ev->region);
+		if (!gdk_region_empty (draw_region)) {
+			gdk_region_get_clipbox (draw_region, &draw_rect);
+			gdk_draw_pixbuf (drawable, NULL, buffer,
+				/* pixbuf 0, 0 is at pix_rect.x, pix_rect.y */
+				     draw_rect.x - display_rect.x,
+				     draw_rect.y - display_rect.y,
+				     draw_rect.x,
+				     draw_rect.y,
+				     draw_rect.width,
+				     draw_rect.height,
+				     GDK_RGB_DITHER_NORMAL, 0, 0);
+		}
+		gdk_region_destroy (draw_region);
+	}
+
+	/* we are a canvas group, there could be some children */
+	if (FOO_CANVAS_ITEM_CLASS (parent_klass)->draw)
+		(FOO_CANVAS_ITEM_CLASS (parent_klass)->draw) (item, drawable, ev);
+}
+
+static void
+gog_control_foocanvas_update (FooCanvasItem *item,
+			      double i2w_dx, double i2w_dy, gint flags)
+{
+	GogControlFooCanvas *ctrl = GOG_CONTROL_FOOCANVAS (item);
+	gboolean redraw;
+	int x1, x2, y1, y2;
+	int orig_x1 = item->x1, orig_x2 = item->x2, orig_y1 = item->y1, orig_y2 = item->y2;
+
+	if (FOO_CANVAS_ITEM_CLASS (parent_klass)->update)
+		(FOO_CANVAS_ITEM_CLASS (parent_klass)->update) (item, i2w_dx, i2w_dy, flags);
+	/* foo_canvas_group_update wipes the bbox */
+	item->x1 = orig_x1;	item->x2 = orig_x2;
+	item->y1 = orig_y1;	item->y2 = orig_y2;
+
+	foo_canvas_w2c (item->canvas, ctrl->base.xpos, ctrl->base.ypos, &x1, &y1);
+	foo_canvas_w2c (item->canvas, ctrl->base.xpos + ctrl->new_w, ctrl->base.ypos + ctrl->new_h, &x2, &y2);
+
+#ifdef WITH_CAIRO
+	redraw = gog_renderer_cairo_update (ctrl->renderer, x2-x1, y2-y1,
+		item->canvas->pixels_per_unit);
+#else
+	redraw = gog_renderer_pixbuf_update (ctrl->renderer, x2-x1, y2-y1,
+		item->canvas->pixels_per_unit);
+#endif
+	if (item->x1 != x1 || item->y1 != y1 || item->x2 != x2 || item->y2 != y2)
+		foo_canvas_update_bbox (FOO_CANVAS_ITEM (ctrl), x1, y1, x2, y2);
+	else if (redraw)
+		foo_canvas_item_request_redraw (FOO_CANVAS_ITEM (ctrl));
+}
+
+static void
+gog_control_foocanvas_bounds (FooCanvasItem *item,
+			      double *x1, double *y1, double *x2, double *y2)
+{
+	*x1 = item->x1;
+	*x2 = item->x2;
+	*y1 = item->y1;
+	*y2 = item->y2;
+}
+
+static double
+gog_control_foocanvas_point (FooCanvasItem *item, double x, double y, int cx, int cy,
+			     FooCanvasItem **actual_item)
+{
+	*actual_item = item;
+	return 0.;
+}
+
+static void
+gog_control_foocanvas_class_init (GogControlFooCanvasClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+	FooCanvasItemClass *item_klass = (FooCanvasItemClass *) klass;
+
+	parent_klass = g_type_class_peek_parent (klass);
+
+	gobject_klass->set_property = gog_control_foocanvas_set_property;
+	gobject_klass->get_property = gog_control_foocanvas_get_property;
+	gobject_klass->finalize	    = gog_control_foocanvas_finalize;
+	item_klass->draw   = gog_control_foocanvas_draw;
+	item_klass->update = gog_control_foocanvas_update;
+	item_klass->bounds = gog_control_foocanvas_bounds;
+	item_klass->point  = gog_control_foocanvas_point;
+
+	g_object_class_install_property (gobject_klass, CTRL_FOO_PROP_H,
+		 g_param_spec_double ("h", _("H"), _("Height"),
+			0, G_MAXDOUBLE, 100., G_PARAM_READWRITE));
+	g_object_class_install_property (gobject_klass, CTRL_FOO_PROP_W,
+		 g_param_spec_double ("w", _("W"), _("Width"),
+			0, G_MAXDOUBLE, 100., G_PARAM_READWRITE));
+	g_object_class_install_property (gobject_klass, CTRL_FOO_PROP_MODEL,
+		g_param_spec_object ("model", "model",
+			"the GogObject this object displays",
+			GOG_OBJECT_TYPE, G_PARAM_WRITABLE));
+#ifdef WITH_CAIRO
+	g_object_class_install_property (gobject_klass, CTRL_FOO_PROP_RENDERER,
+		g_param_spec_object ("renderer", "renderer",
+			"the GogRendererCairo being displayed",
+			GOG_RENDERER_CAIRO_TYPE, G_PARAM_READWRITE));
+#else
+	g_object_class_install_property (gobject_klass, CTRL_FOO_PROP_RENDERER,
+		g_param_spec_object ("renderer", "renderer",
+			"the GogRendererPixbuf being displayed",
+			GOG_RENDERER_PIXBUF_TYPE, G_PARAM_READWRITE));
+#endif
+}
+
+static void
+gog_control_foocanvas_init (GogControlFooCanvas *ctrl)
+{
+	ctrl->new_h = ctrl->new_w = 0.;
+}
+
+GSF_CLASS (GogControlFooCanvas, gog_control_foocanvas,
+	   gog_control_foocanvas_class_init, gog_control_foocanvas_init,
+	   FOO_TYPE_CANVAS_GROUP)
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-control-foocanvas.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,56 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-control-foocanvas.h : A foocanvas item to display GogGraph
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_CONTROL_FOOCANVAS_H
+#define GOG_CONTROL_FOOCANVAS_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+#ifdef WITH_CAIRO
+#include <goffice/graph/gog-renderer-cairo.h>
+#else
+#include <goffice/graph/gog-renderer-pixbuf.h>
+#endif
+
+G_BEGIN_DECLS
+
+#define GOG_CONTROL_FOOCANVAS_TYPE	(gog_control_foocanvas_get_type ())
+#define GOG_CONTROL_FOOCANVAS(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_CONTROL_FOOCANVAS_TYPE, GogControlFooCanvas))
+#define IS_GOG_CONTROL_FOOCANVAS(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_CONTROL_FOOCANVAS_TYPE))
+
+typedef struct {
+	FooCanvasGroup	base;
+
+	double new_h, new_w;
+
+	GogGraph *model;
+#ifdef WITH_CAIRO
+	GogRendererCairo *renderer;
+#else
+	GogRendererPixbuf *renderer;
+#endif
+} GogControlFooCanvas;
+typedef FooCanvasGroupClass GogControlFooCanvasClass;
+
+GType gog_control_foocanvas_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_CONTROL_FOOCANVAS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,61 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-data-allocator.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/data/go-data.h>
+
+GType
+gog_data_allocator_get_type (void)
+{
+	static GType gog_data_allocator_type = 0;
+
+	if (!gog_data_allocator_type) {
+		static GTypeInfo const gog_data_allocator_info = {
+			sizeof (GogDataAllocatorClass),	/* class_size */
+			NULL,		/* base_init */
+			NULL,		/* base_finalize */
+		};
+
+		gog_data_allocator_type = g_type_register_static (G_TYPE_INTERFACE,
+			"GogDataAllocator", &gog_data_allocator_info, 0);
+	}
+
+	return gog_data_allocator_type;
+}
+
+void
+gog_data_allocator_allocate (GogDataAllocator *dalloc, GogPlot *plot)
+{
+	g_return_if_fail (IS_GOG_DATA_ALLOCATOR (dalloc));
+	GOG_DATA_ALLOCATOR_GET_CLASS (dalloc)->allocate (dalloc, plot);
+}
+
+gpointer
+gog_data_allocator_editor (GogDataAllocator *dalloc, GogDataset *set,
+			   int dim_i, GogDataType data_type)
+{
+	g_return_val_if_fail (IS_GOG_DATA_ALLOCATOR (dalloc), NULL);
+	return GOG_DATA_ALLOCATOR_GET_CLASS (dalloc)->editor (dalloc, set,
+							      dim_i, data_type);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-allocator.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,53 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-data-allocator.h :  
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_DATA_ALLOCATOR_H
+#define GOG_DATA_ALLOCATOR_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GTypeInterface		   base;
+
+	void	 (*allocate) (GogDataAllocator *a, GogPlot *plot);
+	gpointer (*editor)   (GogDataAllocator *a, GogDataset *set,
+			      int dim_i, GogDataType data_type);
+} GogDataAllocatorClass;
+
+#define GOG_DATA_ALLOCATOR_TYPE		(gog_data_allocator_get_type ())
+#define GOG_DATA_ALLOCATOR(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_DATA_ALLOCATOR_TYPE, GogDataAllocator))
+#define IS_GOG_DATA_ALLOCATOR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_DATA_ALLOCATOR_TYPE))
+#define GOG_DATA_ALLOCATOR_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOG_DATA_ALLOCATOR_TYPE, GogDataAllocatorClass))
+#define IS_GOG_DATA_ALLOCATOR_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_DATA_ALLOCATOR_TYPE))
+#define GOG_DATA_ALLOCATOR_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_INTERFACE ((o), GOG_DATA_ALLOCATOR_TYPE, GogDataAllocatorClass))
+
+GType gog_data_allocator_get_type (void);
+
+void	 gog_data_allocator_allocate (GogDataAllocator *a, GogPlot *plot);
+gpointer gog_data_allocator_editor   (GogDataAllocator *dalloc, GogDataset *set,
+				      int dim_i, GogDataType data_type);
+
+G_END_DECLS
+
+#endif /* GOG_DATA_ALLOCATOR_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,268 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-data-set.c : A Utility interface for managing GOData as attributes
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/data/go-data.h>
+#include <goffice/data/go-data-simple.h>
+#include <goffice/utils/go-math.h>
+
+GType
+gog_dataset_get_type (void)
+{
+	static GType gog_dataset_type = 0;
+
+	if (!gog_dataset_type) {
+		static GTypeInfo const gog_dataset_info = {
+			sizeof (GogDatasetClass),	/* class_size */
+			NULL,		/* base_init */
+			NULL,		/* base_finalize */
+		};
+
+		gog_dataset_type = g_type_register_static (G_TYPE_INTERFACE,
+			"GogDataset", &gog_dataset_info, 0);
+	}
+
+	return gog_dataset_type;
+}
+
+/**
+ * gog_dataset_dims :
+ * @set : #GogDataset
+ * @first : inclusive
+ * @last : _inclusive_
+ *
+ * Returns the first and last valid indicises to get/set dim.
+ **/
+void
+gog_dataset_dims (GogDataset const *set, int *first, int *last)
+{
+	GogDatasetClass *klass = GOG_DATASET_GET_CLASS (set);
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (first != NULL);
+	g_return_if_fail (last != NULL);
+	return (klass->dims) (set, first, last);
+}
+
+/**
+ * gog_dataset_get_dim :
+ * @set : #GogDataset
+ * @dim_i :
+ *
+ * Returns the GOData associated with dimension @dim_i.  Does NOT add a
+ * reference.
+ **/
+GOData *
+gog_dataset_get_dim (GogDataset const *set, int dim_i)
+{
+	GogDatasetElement *elem = gog_dataset_get_elem (set, dim_i);
+	g_return_val_if_fail (elem != NULL, NULL);
+	return elem->data;
+}
+
+/**
+ * gog_dataset_set_dim :
+ * @series : #GogSeries
+ * @dim_i :  < 0 gets the name
+ * @val : #GOData
+ * @err : #GError
+ *
+ * Absorbs a ref to @val if it is non NULL
+ **/
+void
+gog_dataset_set_dim (GogDataset *set, int dim_i, GOData *val, GError **err)
+{
+	GogDatasetClass *klass;
+
+	g_return_if_fail (val == NULL || GO_DATA (val) != NULL);
+
+	if (set == NULL || !IS_GOG_DATASET (set)) {
+		g_warning ("gog_dataset_set_dim called with invalid GogDataset");
+		goto done;
+	}
+
+	klass = GOG_DATASET_GET_CLASS (set);
+
+	/* short circuit */
+	if (val != gog_dataset_get_dim (set, dim_i)) {
+		gog_dataset_set_dim_internal (set, dim_i, val,
+			gog_object_get_graph (GOG_OBJECT (set)));
+
+		if (klass->set_dim)
+			(klass->set_dim) (set, dim_i, val, err);
+		if (klass->dim_changed)
+			(klass->dim_changed) (set, dim_i);
+	}
+
+done :
+	/* absorb ref to orig, simplifies life cycle easier for new GODatas */
+	if (val != NULL)
+		g_object_unref (val);
+}
+
+GogDatasetElement *
+gog_dataset_get_elem (GogDataset const *set, int dim_i)
+{
+	GogDatasetClass *klass = GOG_DATASET_GET_CLASS (set);
+	g_return_val_if_fail (klass != NULL, NULL);
+	return (klass->get_elem) (set, dim_i);
+}
+
+static void
+cb_dataset_dim_changed (GOData *data, GogDatasetElement *elem)
+{
+	GogDatasetClass *klass = GOG_DATASET_GET_CLASS (elem->set);
+
+	g_return_if_fail (klass != NULL);
+	if (klass->dim_changed)
+		(klass->dim_changed) (elem->set, elem->dim_i);
+}
+
+/**
+ * gog_dataset_set_dim_internal :
+ * 
+ * and internal routine to handle signal setup and teardown
+ **/
+void
+gog_dataset_set_dim_internal (GogDataset *set, int dim_i,
+			      GOData *val, GogGraph *graph)
+{
+	GogDatasetElement *elem = gog_dataset_get_elem (set, dim_i);
+
+	g_return_if_fail (elem != NULL);
+
+	if (graph != NULL) {
+		if (val == elem->data)
+			return;
+		if (val != NULL)
+			val = gog_graph_ref_data (graph, val);
+		if (elem->handler != 0) {
+			g_signal_handler_disconnect (G_OBJECT (elem->data),
+				elem->handler);
+			elem->handler = 0;
+			gog_graph_unref_data (graph, elem->data);
+		}
+		if (val != NULL)
+			elem->handler = g_signal_connect (
+				G_OBJECT (val), "changed",
+				G_CALLBACK (cb_dataset_dim_changed), elem);
+	} else {
+		if (val != NULL)
+			g_object_ref (val);
+		if (elem->data != NULL)
+			g_object_unref (elem->data);
+	}
+	elem->data  = val;
+	elem->set   = set;
+	elem->dim_i = dim_i;
+	gog_object_request_update (GOG_OBJECT (set));
+}
+
+void
+gog_dataset_finalize (GogDataset *set)
+{
+	GogGraph *graph = gog_object_get_graph (GOG_OBJECT (set));
+	int first, last;
+
+	gog_dataset_dims (set, &first, &last);
+	while (first <= last)
+		gog_dataset_set_dim_internal (set, first++, NULL, graph);
+}
+
+void
+gog_dataset_parent_changed (GogDataset *set, gboolean was_set)
+{
+	GogGraph *graph = gog_object_get_graph (GOG_OBJECT (set));
+	GogDatasetElement *elem;
+	GOData *dat;
+	int i, last;
+
+	for (gog_dataset_dims (set, &i, &last); i <= last ; i++) {
+		elem = gog_dataset_get_elem (set, i);
+		if (elem == NULL || elem->data == NULL)
+			continue;
+		dat = elem->data;
+		if (!was_set) {
+			g_object_ref (dat);
+			gog_dataset_set_dim_internal (set, i, NULL, graph);
+			elem->data = dat;
+		} else if (elem->handler == 0) {
+			elem->data = NULL; /* disable the short circuit */
+			gog_dataset_set_dim_internal (set, i, dat, graph);
+			g_object_unref (dat);
+		}
+	}
+	if (was_set)
+		gog_object_request_update (GOG_OBJECT (set));
+}
+
+void
+gog_dataset_dup_to_simple (GogDataset const *src, GogDataset *dst)
+{
+	gint	     n, last;
+	GOData *src_dat, *dst_dat;
+	gog_dataset_dims (src, &n, &last);
+	for ( ; n <= last ; n++) {
+		src_dat = gog_dataset_get_dim (src, n);
+		if (src_dat == NULL)
+			continue;
+		dst_dat = NULL;
+		/* for scalar and vector data, try to transform to values first
+		if we find non finite, use strings */
+		if (IS_GO_DATA_SCALAR (src_dat)) {
+			char const *str = go_data_scalar_get_str (GO_DATA_SCALAR (src_dat));
+			char *end;
+			double d =  g_strtod (str, &end);
+			dst_dat =(*end == 0)? go_data_scalar_val_new (d):
+						go_data_scalar_str_new (g_strdup (str), TRUE);
+		} else if (IS_GO_DATA_VECTOR (src_dat)) {
+			gboolean as_values = TRUE;
+			GODataVector *vec = GO_DATA_VECTOR (src_dat);
+			double *d = go_data_vector_get_values (vec);
+			int i, n = go_data_vector_get_len (vec);
+			for (i = 0; i < n; i++)
+				if (go_finite (d[i])) {
+					as_values = FALSE;
+					break;
+				}
+			if (as_values)
+				/* we don't need to duplicate, since this is used only for
+				short lived objects */
+				dst_dat = go_data_vector_val_new (d, n, NULL);
+			else {
+				char **str = g_new (char*, n + 1);
+				str[n] = NULL;
+				for (i = 0; i < n; i++)
+					str[i] = go_data_vector_get_str (vec, i);
+				dst_dat = go_data_vector_str_new ((char const* const*) str, n, g_free);
+			}
+		} else if (IS_GO_DATA_MATRIX (src_dat)) {
+			/* only values are supported so don't care */
+			GODataMatrix *mat = GO_DATA_MATRIX (src_dat);
+			GODataMatrixSize size = go_data_matrix_get_size (mat);
+			dst_dat = go_data_matrix_val_new (go_data_matrix_get_values (mat),
+									size.rows, size.columns, NULL);
+		}
+		gog_dataset_set_dim (dst, n, dst_dat, NULL);
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-data-set.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,72 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-data-set.h :  
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_DATA_SET_H
+#define GOG_DATA_SET_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/data/goffice-data.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GOData	   *data;
+	GogDataset *set;
+	int	    dim_i;
+	gulong	    handler;
+} GogDatasetElement;
+typedef struct {
+	GTypeInterface		   base;
+
+	GogDatasetElement *(*get_elem) (GogDataset const *set, int dim_i);
+	void (*set_dim)     (GogDataset *set, int dim_i,
+			     GOData *val, GError **err);
+	void (*dims)	    (GogDataset const *set, int *first, int *last);
+	void (*dim_changed) (GogDataset *set, int dim_i);
+} GogDatasetClass;
+
+#define GOG_DATASET_TYPE		(gog_dataset_get_type ())
+#define GOG_DATASET(o)			(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_DATASET_TYPE, GogDataset))
+#define IS_GOG_DATASET(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_DATASET_TYPE))
+#define GOG_DATASET_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOG_DATASET_TYPE, GogDatasetClass))
+#define IS_GOG_DATASET_CLASS(k)		(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_DATASET_TYPE))
+#define GOG_DATASET_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_INTERFACE ((o), GOG_DATASET_TYPE, GogDatasetClass))
+
+GType gog_dataset_get_type (void);
+
+void    gog_dataset_dims    (GogDataset const *set, int *first, int *last);
+GOData *gog_dataset_get_dim (GogDataset const *set, int dim_i);
+void	gog_dataset_set_dim (GogDataset *set, int dim_i,
+			     GOData *val, GError **err);
+
+/* protected */
+void 		   gog_dataset_finalize (GogDataset *set);
+void 		   gog_dataset_parent_changed (GogDataset *set, gboolean was_set);
+GogDatasetElement *gog_dataset_get_elem (GogDataset const *set, int dim_i);
+void gog_dataset_set_dim_internal (GogDataset *set, int dim_i,
+				   GOData *val, GogGraph *graph);
+
+void gog_dataset_dup_to_simple (GogDataset const *src, GogDataset *dst);
+
+G_END_DECLS
+
+#endif /* GOG_DATA_SET_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,422 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window2">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window2</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkVBox" id="gog_error_bar_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkHBox" id="hbox1">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">24</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox1">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="category_label">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Error category&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="category_alignment">
+		  <property name="visible">True</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0</property>
+		  <property name="xscale">0</property>
+		  <property name="yscale">0</property>
+		  <property name="top_padding">6</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">18</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkComboBox" id="category_combo">
+		      <property name="visible">True</property>
+		      <property name="items" translatable="yes">None
+Absolute
+Relative
+Percent</property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="style_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkLabel" id="style_label">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Style&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment1">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">6</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">18</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkTable" id="style_table">
+		      <property name="visible">True</property>
+		      <property name="n_rows">4</property>
+		      <property name="n_columns">2</property>
+		      <property name="homogeneous">False</property>
+		      <property name="row_spacing">6</property>
+		      <property name="column_spacing">12</property>
+
+		      <child>
+			<widget class="GtkLabel" id="display_label">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Dis_play:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">5</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">0</property>
+			  <property name="bottom_attach">1</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="width_label">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Width:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_RIGHT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">5</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">width</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="line_width_label">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Line width:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_RIGHT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">5</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">line_width</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="color_label">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Colo_r:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_RIGHT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">5</property>
+			  <property name="ypad">0</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">0</property>
+			  <property name="right_attach">1</property>
+			  <property name="top_attach">3</property>
+			  <property name="bottom_attach">4</property>
+			  <property name="x_options">fill</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkSpinButton" id="width">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="climb_rate">1</property>
+			  <property name="digits">0</property>
+			  <property name="numeric">False</property>
+			  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			  <property name="snap_to_ticks">False</property>
+			  <property name="wrap">False</property>
+			  <property name="adjustment">4 0 100 1 10 10</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">1</property>
+			  <property name="bottom_attach">2</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkSpinButton" id="line_width">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="climb_rate">1</property>
+			  <property name="digits">0</property>
+			  <property name="numeric">False</property>
+			  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			  <property name="snap_to_ticks">False</property>
+			  <property name="wrap">False</property>
+			  <property name="adjustment">1 0 100 1 10 10</property>
+			</widget>
+			<packing>
+			  <property name="left_attach">1</property>
+			  <property name="right_attach">2</property>
+			  <property name="top_attach">2</property>
+			  <property name="bottom_attach">3</property>
+			  <property name="y_options"></property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkVBox" id="values_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="values_label">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Values&lt;/b&gt;</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkAlignment" id="alignment3">
+	      <property name="visible">True</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xscale">1</property>
+	      <property name="yscale">1</property>
+	      <property name="top_padding">6</property>
+	      <property name="bottom_padding">0</property>
+	      <property name="left_padding">18</property>
+	      <property name="right_padding">0</property>
+
+	      <child>
+		<widget class="GtkTable" id="values_table">
+		  <property name="visible">True</property>
+		  <property name="n_rows">2</property>
+		  <property name="n_columns">2</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">6</property>
+		  <property name="column_spacing">12</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="plus_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">(+)</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="minus_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">(-)</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,748 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-error-bar.c :  
+ *
+ * Copyright (C) 2004 Jean Brefort (jean.brefort at ac-dijon.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-error-bar.h"
+#include "gog-series-impl.h"
+#include "gog-plot-impl.h"
+#include "gog-object-xml.h"
+#include "gog-data-allocator.h"
+#include "gog-style.h"
+#include "gog-renderer.h"
+#include <goffice/data/go-data-impl.h>
+#include <goffice/data/go-data.h>
+#include <goffice/gtk/go-color-palette.h>
+#include <goffice/gtk/go-combo-color.h>
+#include <goffice/gtk/go-combo-pixmaps.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/utils/go-math.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtklabel.h>
+#include <glade/glade-xml.h>
+#include <glib/gi18n.h>
+
+#include <string.h>
+
+#define CC2XML(s) ((const xmlChar *)(s))
+
+typedef GObjectClass GogErrorBarClass;
+static GObjectClass *error_bar_parent_klass;
+
+#ifdef WITH_GTK
+typedef struct {
+	GogSeries *series;
+	GogErrorBar *bar;
+	char const* property;
+	GogErrorBarDisplay display;
+	GOColor color;
+	double width, line_width;
+} GogErrorBarEditor;
+
+static void
+cb_destroy (G_GNUC_UNUSED GtkWidget *w, GogErrorBarEditor *editor)
+{
+	g_free (editor);
+}
+
+static void
+cb_width_changed (GtkAdjustment *adj, GogErrorBarEditor *editor)
+{
+	editor->width = adj->value;
+	if (editor->bar) {
+		editor->bar->width = adj->value;
+		gog_object_request_update (GOG_OBJECT (editor->series));
+	}
+}
+
+static void
+cb_line_width_changed (GtkAdjustment *adj, GogErrorBarEditor *editor)
+{
+	editor->line_width = adj->value;
+	if (editor->bar) {
+		editor->bar->style->line.width = adj->value;
+		gog_object_request_update (GOG_OBJECT (editor->series));
+	}
+}
+
+static void
+cb_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+		     G_GNUC_UNUSED gboolean is_custom,
+		     G_GNUC_UNUSED gboolean by_user,
+		     G_GNUC_UNUSED gboolean is_default, GogErrorBarEditor *editor)
+{
+	editor->color = color;
+	if (editor->bar) {
+		editor->bar->style->line.color = color;
+		gog_object_request_update (GOG_OBJECT (editor->series));
+	}
+}
+
+static void
+cb_display_changed (G_GNUC_UNUSED GOComboPixmaps *combo, GogErrorBarDisplay display, GogErrorBarEditor *editor)
+{
+	editor->display = display;
+	if (editor->bar) {
+		editor->bar->display = display;
+		gog_object_request_update (GOG_OBJECT (editor->series));
+	}
+}
+
+static void
+cb_type_changed (GtkWidget *w, GogErrorBarEditor *editor)
+{
+	GladeXML *gui = GLADE_XML (g_object_get_data (G_OBJECT (w), "gui"));
+	gpointer data;
+	GogDataset *set;
+	GogDataAllocator *dalloc;
+	int type = gtk_combo_box_get_active (GTK_COMBO_BOX (w));
+	dalloc = GOG_DATA_ALLOCATOR (g_object_get_data (G_OBJECT (w), "allocator"));
+	if (type == GOG_ERROR_BAR_TYPE_NONE) {
+		set = GOG_DATASET (editor->bar->series);
+		gog_dataset_set_dim (set, editor->bar->error_i, NULL, NULL);
+		gog_dataset_set_dim (set, editor->bar->error_i + 1, NULL, NULL);
+		g_object_set (editor->series, editor->property, NULL, NULL);
+		editor->bar = NULL;
+		data = g_object_get_data (G_OBJECT (w), "plus");
+		if (GTK_IS_WIDGET (data))
+			gtk_widget_destroy (GTK_WIDGET(data));
+		data = g_object_get_data (G_OBJECT (w), "minus");
+		if (GTK_IS_WIDGET (data))
+			gtk_widget_destroy (GTK_WIDGET(data));
+		g_object_set_data (G_OBJECT (w), "plus", NULL);
+		g_object_set_data (G_OBJECT (w), "minus", NULL);
+		gtk_widget_hide (glade_xml_get_widget (gui, "values_box"));
+		gtk_widget_hide (glade_xml_get_widget (gui, "style_box"));
+	} else {
+		GtkWidget *table = glade_xml_get_widget (gui, "values_table");
+		if (!editor->bar) {
+			editor->bar = g_object_new (GOG_ERROR_BAR_TYPE, NULL);
+			editor->bar->style->line.color = editor->color;
+			editor->bar->style->line.width = editor->line_width;
+			editor->bar->width = editor->width;
+			editor->bar->display = editor->display;
+			editor->bar->type = type;
+			g_object_set (editor->series, editor->property, editor->bar, NULL);
+			g_object_unref (editor->bar);
+			g_object_get (editor->series, editor->property, &editor->bar, NULL);
+		}
+		editor->bar->type = type;
+		set = GOG_DATASET (editor->bar->series);
+		data = g_object_get_data (G_OBJECT (w), "plus");
+		if (!data) {
+			GtkWidget* al = GTK_WIDGET (gog_data_allocator_editor (dalloc, set, editor->bar->error_i, GOG_DATA_VECTOR));
+			gtk_table_attach (GTK_TABLE (table), al, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+			g_object_set_data (G_OBJECT (w), "plus", al);
+		}
+		data = g_object_get_data (G_OBJECT (w), "minus");
+		if (!data) {
+			GtkWidget* al = GTK_WIDGET (gog_data_allocator_editor (dalloc, set, editor->bar->error_i + 1, GOG_DATA_VECTOR));
+			gtk_table_attach (GTK_TABLE (table), al, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+			g_object_set_data (G_OBJECT (w), "minus", al);
+		}
+		gtk_widget_show_all (glade_xml_get_widget (gui, "values_box"));
+		gtk_widget_show (glade_xml_get_widget (gui, "style_box"));
+	}
+	gog_object_request_update (GOG_OBJECT (editor->series));
+}
+
+gpointer
+gog_error_bar_prefs (GogSeries *series,
+			char const* property,
+			gboolean horizontal,
+			GogDataAllocator *dalloc,
+			GOCmdContext *cc)
+{
+	GladeXML *gui;
+	GtkWidget *w, *bar_prefs;
+	GOComboPixmaps *cpx;
+	GtkTable *style_table, *values_table;
+	GogDataset *set;
+	GdkPixbuf *pixbuf;
+	GogErrorBarEditor *editor;
+	
+	g_return_val_if_fail (IS_GOG_SERIES (series), NULL);
+	
+	editor = g_new0 (GogErrorBarEditor, 1);
+	editor->series = series;
+	editor->property = property;
+	g_object_get (series, property, &editor->bar, NULL);
+	if (editor->bar) {
+		editor->color = editor->bar->style->line.color;
+		editor->line_width = editor->bar->style->line.width;
+		editor->width = editor->bar->width;
+		editor->display = editor->bar->display;
+	} else {
+		editor->color = RGBA_BLACK;
+		editor->line_width = 1.;
+		editor->width = 5.;
+		editor->display = GOG_ERROR_BAR_DISPLAY_BOTH;
+	}
+	set = GOG_DATASET (series);
+
+	gui = go_libglade_new ("gog-error-bar-prefs.glade", "gog_error_bar_prefs", NULL, cc);
+
+	/* Style properties */
+
+	/* Width */
+	w = glade_xml_get_widget (gui, "width");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), editor->width);
+	g_signal_connect (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w)),
+		"value_changed",
+		G_CALLBACK (cb_width_changed), editor);
+	
+	/* Line width */
+	w = glade_xml_get_widget (gui, "line_width");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), editor->line_width);
+	g_signal_connect (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w)),
+		"value_changed",
+		G_CALLBACK (cb_line_width_changed), editor);
+
+	style_table = GTK_TABLE (glade_xml_get_widget (gui, "style_table"));
+
+	/* Color */
+	w = go_combo_color_new (NULL, _("Automatic"), RGBA_BLACK,
+		go_color_group_fetch ("color", NULL));
+	go_combo_color_set_instant_apply (GO_COMBO_COLOR (w), FALSE);
+	go_combo_color_set_allow_alpha (GO_COMBO_COLOR (w), TRUE);
+	gtk_label_set_mnemonic_widget (
+		GTK_LABEL (glade_xml_get_widget (gui, "color_label")), w);
+	go_combo_color_set_color (GO_COMBO_COLOR (w), editor->color);
+	g_signal_connect (G_OBJECT (w),
+		"color_changed",
+		G_CALLBACK (cb_color_changed), editor);
+	gtk_table_attach (GTK_TABLE (style_table), w, 1, 2, 3, 4, 0, 0, 0, 0);
+	
+	/* Display style */
+	cpx = go_combo_pixmaps_new (4);
+	pixbuf = go_pixbuf_new_from_file ("bar-none.png");
+	go_combo_pixmaps_add_element  (cpx,
+				       pixbuf,
+				       GOG_ERROR_BAR_DISPLAY_NONE,
+				       _("No error bar displayed"));
+	if (horizontal) {
+		pixbuf = go_pixbuf_new_from_file ("bar-hplus.png");
+		go_combo_pixmaps_add_element  (cpx,
+					       pixbuf,
+					       GOG_ERROR_BAR_DISPLAY_POSITIVE,
+					       _("Positive error bar displayed"));
+		pixbuf = go_pixbuf_new_from_file ("bar-hminus.png");
+		go_combo_pixmaps_add_element  (cpx,
+					       pixbuf,
+					       GOG_ERROR_BAR_DISPLAY_NEGATIVE,
+					       _("Negative error bar displayed"));
+		pixbuf = go_pixbuf_new_from_file ("bar-hboth.png");
+		go_combo_pixmaps_add_element  (cpx,
+					       pixbuf,
+					       GOG_ERROR_BAR_DISPLAY_BOTH,
+					       _("Full error bar displayed"));
+	} else {
+		pixbuf = go_pixbuf_new_from_file ("bar-vplus.png");
+		go_combo_pixmaps_add_element  (cpx,
+					       pixbuf,
+					       GOG_ERROR_BAR_DISPLAY_POSITIVE,
+					       _("Positive error bar displayed"));
+		pixbuf = go_pixbuf_new_from_file ("bar-vminus.png");
+		go_combo_pixmaps_add_element  (cpx,
+					       pixbuf,
+					       GOG_ERROR_BAR_DISPLAY_NEGATIVE,
+					       _("Negative error bar displayed"));
+		pixbuf = go_pixbuf_new_from_file ("bar-vboth.png");
+		go_combo_pixmaps_add_element  (cpx,
+					       pixbuf,
+					       GOG_ERROR_BAR_DISPLAY_BOTH,
+					       _("Full error bar displayed"));
+	}
+	gtk_table_attach (GTK_TABLE (style_table), GTK_WIDGET(cpx), 1, 2, 0, 1, 0, 0, 0, 0);
+	go_combo_pixmaps_select_id (cpx, editor->display);
+	g_signal_connect (G_OBJECT (cpx), "changed", G_CALLBACK (cb_display_changed), editor);
+
+	/* Category property*/
+	w = glade_xml_get_widget (gui, "category_combo");
+	gtk_combo_box_set_active (GTK_COMBO_BOX (w), (editor->bar)? (int) editor->bar->type: 0);
+	g_object_set_data_full (G_OBJECT (w), "gui", gui, (GDestroyNotify)g_object_unref);
+	g_object_set_data (G_OBJECT (w), "allocator", dalloc);
+	g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (cb_type_changed), editor);
+
+	/* Value properties */
+	bar_prefs = glade_xml_get_widget (gui, "gog_error_bar_prefs");
+	g_signal_connect (bar_prefs, "destroy", G_CALLBACK (cb_destroy), editor);
+	gtk_widget_show_all (bar_prefs);
+
+	values_table = GTK_TABLE (glade_xml_get_widget (gui, "values_table"));
+	if (editor->bar) {
+		GtkWidget* al = GTK_WIDGET (gog_data_allocator_editor (dalloc, set, editor->bar->error_i, GOG_DATA_VECTOR));
+		gtk_widget_show (al);
+		gtk_table_attach (values_table, al, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+		g_object_set_data (G_OBJECT (w), "plus", al);
+		al = GTK_WIDGET (gog_data_allocator_editor (dalloc, set, editor->bar->error_i + 1, GOG_DATA_VECTOR));
+		gtk_widget_show (al);
+		gtk_table_attach (values_table, al, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+		g_object_set_data (G_OBJECT (w), "minus", al);
+	} else {
+		gtk_widget_hide (glade_xml_get_widget (gui, "values_box"));
+		gtk_widget_hide (glade_xml_get_widget (gui, "style_box"));
+	}
+
+	return GTK_WIDGET(bar_prefs);
+}
+#endif
+
+static void
+gog_error_bar_init (GogErrorBar* bar)
+{
+	bar->type = GOG_ERROR_BAR_TYPE_NONE;
+	bar->display = GOG_ERROR_BAR_DISPLAY_BOTH;
+	bar->width = 5.;
+	bar->style = gog_style_new ();
+	bar->style->line.color = RGBA_BLACK;
+	bar->style->line.width = 1.;
+}
+
+static void
+gog_error_bar_finalize (GObject *obj)
+{
+	GogErrorBar *bar = GOG_ERROR_BAR (obj);
+	if (bar->style) {
+		g_object_unref (bar->style);
+		bar->style = NULL;
+	}
+	(error_bar_parent_klass->finalize) (obj);
+}
+
+static void
+gog_error_bar_class_init (GogErrorBarClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+	error_bar_parent_klass = g_type_class_peek_parent (klass);
+
+	gobject_klass->finalize		= gog_error_bar_finalize;
+}
+
+static gboolean
+gog_error_bar_persist_dom_load (GogPersist *gp, xmlNode *node)
+{
+	GogErrorBar *bar = GOG_ERROR_BAR (gp);
+
+	gchar* str;
+	str = xmlGetProp (node, CC2XML ("error_type"));
+	if (str) {
+		if (!strcmp (str, "absolute"))
+			bar->type = GOG_ERROR_BAR_TYPE_ABSOLUTE;
+		else if (!strcmp (str, "relative"))
+			bar->type = GOG_ERROR_BAR_TYPE_RELATIVE;
+		else if (!strcmp (str, "percent"))
+			bar->type = GOG_ERROR_BAR_TYPE_PERCENT;
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, CC2XML ("display"));
+	if (str) {
+		if (!strcmp (str, "none"))
+			bar->display = GOG_ERROR_BAR_DISPLAY_NONE;
+		else if (!strcmp (str, "positive"))
+			bar->display = GOG_ERROR_BAR_DISPLAY_POSITIVE;
+		else if (!strcmp (str, "negative"))
+			bar->display = GOG_ERROR_BAR_DISPLAY_NEGATIVE;
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, CC2XML ("width"));
+	if (str) {
+		bar->width = g_strtod (str, NULL);
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, CC2XML ("line_width"));
+	if (str) {
+		bar->style->line.width = g_strtod (str, NULL);
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, CC2XML ("color"));
+	if (str != NULL) {
+		bar->style->line.color = go_color_from_str (str);
+		xmlFree (str);
+	}
+
+	return TRUE;
+}
+
+static void
+gog_error_bar_persist_dom_save (GogPersist const *gp, xmlNode *parent)
+{
+	GogErrorBar const *bar = GOG_ERROR_BAR (gp);
+
+	{
+		const char *str = NULL;
+		xmlSetProp (parent, CC2XML ("type"), CC2XML ("GogErrorBar"));
+		switch (bar->type) {
+		case GOG_ERROR_BAR_TYPE_ABSOLUTE:
+			str = "absolute";
+			break;
+		case GOG_ERROR_BAR_TYPE_RELATIVE:
+			str = "relative";
+			break;
+		case GOG_ERROR_BAR_TYPE_PERCENT:
+			str = "percent";
+			break;
+		default:
+			break;
+		}
+		if (str)
+			xmlSetProp (parent, CC2XML ("error_type"), CC2XML (str));
+	}
+
+	{
+		const char *str = NULL;
+		switch (bar->display) {
+		case GOG_ERROR_BAR_DISPLAY_NONE:
+			str = "none";
+			break;
+		case GOG_ERROR_BAR_DISPLAY_POSITIVE:
+			str = "positive";
+			break;
+		case GOG_ERROR_BAR_DISPLAY_NEGATIVE:
+			str = "negative";
+			break;
+		default:
+			break;
+		}
+		if (str)
+			xmlSetProp (parent, CC2XML ("display"), CC2XML (str));
+	}
+
+	if (bar->width != 5.) {
+		char *str = g_strdup_printf ("%f",  bar->width);
+		xmlSetProp (parent, CC2XML ("width"), CC2XML (str));
+		g_free (str);
+	}
+
+	if (bar->style->line.width != 1.) {
+		char *str = g_strdup_printf ("%f",  bar->style->line.width);
+		xmlSetProp (parent, CC2XML ("line_width"), CC2XML (str));
+		g_free (str);
+	}
+	if (bar->style->line.color != RGBA_BLACK) {
+		char *str = go_color_as_str (bar->style->line.color);
+		xmlSetProp (parent, CC2XML ("color"), CC2XML (str));
+		g_free (str);
+	}
+}
+
+static void
+gog_error_bar_persist_sax_save (GogPersist const *gp, GsfXMLOut *output)
+{
+	GogErrorBar *bar = GOG_ERROR_BAR (gp);
+	char const *str;
+
+	gsf_xml_out_add_cstr_unchecked (output, "type", "GogErrorBar");
+	switch (bar->type) {
+	case GOG_ERROR_BAR_TYPE_ABSOLUTE: str = "absolute"; break;
+	case GOG_ERROR_BAR_TYPE_RELATIVE: str = "relative"; break;
+	case GOG_ERROR_BAR_TYPE_PERCENT:  str = "percent"; break;
+	default: str = NULL; break;
+	}
+	if (str != NULL)
+		gsf_xml_out_add_cstr_unchecked (output, "error_type", str);
+
+	switch (bar->display) {
+	case GOG_ERROR_BAR_DISPLAY_NONE:	str = "none"; break;
+	case GOG_ERROR_BAR_DISPLAY_POSITIVE:	str = "positive"; break;
+	case GOG_ERROR_BAR_DISPLAY_NEGATIVE:	str = "negative"; break;
+	default: str = NULL; break;
+	}
+	if (str != NULL)
+		gsf_xml_out_add_cstr_unchecked (output, "display", str);
+#warning Why 5.0 and why 1.0 ?
+	if (bar->width != 5.)
+		gsf_xml_out_add_float (output, "width", bar->width, 2);
+	if (bar->style->line.width != 1.)
+		gsf_xml_out_add_float (output, "line_width", bar->style->line.width, 2);
+	if (bar->style->line.color != RGBA_BLACK)
+		go_xml_out_add_color (output, "color", bar->style->line.color);
+}
+
+static void
+gog_error_bar_persist_init (GogPersistClass *iface)
+{
+	iface->dom_load = gog_error_bar_persist_dom_load;
+	iface->dom_save = gog_error_bar_persist_dom_save;
+	iface->sax_save = gog_error_bar_persist_sax_save;
+}
+
+GSF_CLASS_FULL (GogErrorBar, gog_error_bar,
+		NULL, NULL, gog_error_bar_class_init, NULL,
+		gog_error_bar_init, G_TYPE_OBJECT, 0,
+		GSF_INTERFACE (gog_error_bar_persist_init, GOG_PERSIST_TYPE))
+
+
+/**
+ * gog_error_bar_get_bounds :
+ * @bar : A GogErrorBar
+ * @index : the index corresponding to the value which error limits are 
+ * @min : where the minimum value will be stored 
+ * @max : where the maximum value will be stored
+ *
+ * If the value correponding to @index is valid, fills min and max with the error values:
+ * -> positive_error in @max.
+ * -> negative_error in @min.
+ * If one of the errors is not valid or not defined, its value is set to -1.0.
+ *
+ * Return value : FALSE if the @bar->type is GOG_ERROR_BAR_TYPE_NONE or if the value is not valid,
+ * TRUE otherwise.
+ **/
+gboolean
+gog_error_bar_get_bounds (GogErrorBar const *bar, int index, double *min, double *max)
+{
+	double value;
+	GOData *data;
+	int length;
+	
+	/* -1 ensures that the bar will not be displayed if the error is not a correct one.
+		With a 0 value, it might be, because of rounding errors */
+	*min = *max = -1.; 
+
+	g_return_val_if_fail (GOG_ERROR_BAR (bar) != NULL, FALSE);
+	if (!gog_series_is_valid (bar->series))
+		return FALSE;
+	value = go_data_vector_get_value (GO_DATA_VECTOR (bar->series->values[bar->dim_i].data), index);
+	data = bar->series->values[bar->error_i].data;
+	length = (IS_GO_DATA (data)) ? go_data_vector_get_len (GO_DATA_VECTOR (data)) : 0;
+	
+	if ((bar->type == GOG_ERROR_BAR_TYPE_NONE) || isnan (value) || !go_finite (value))
+		return FALSE;
+	
+	if (length == 1) 
+		*max = go_data_vector_get_value (GO_DATA_VECTOR (data), 0);
+	else if (length > index)
+		*max = go_data_vector_get_value (GO_DATA_VECTOR (data), index);
+	
+	data = bar->series->values[bar->error_i + 1].data;
+	length = (IS_GO_DATA (data))? go_data_vector_get_len (GO_DATA_VECTOR (data)): 0;
+	if (length == 0)
+		*min = *max; /* use same values for + and - */
+	else if (length == 1)
+		*min = go_data_vector_get_value (GO_DATA_VECTOR (data), 0);
+	else if (length > index)
+		*min = go_data_vector_get_value (GO_DATA_VECTOR (data), index);
+	
+	if (isnan (*min) || !go_finite (*min) || (*min <= 0)) {
+		*min = -1.;
+	}
+	if (isnan (*max) || !go_finite (*max) || (*max <= 0)) {
+		*max = -1.;
+	}
+	
+	switch (bar->type)
+	{
+	case GOG_ERROR_BAR_TYPE_RELATIVE:
+		*min *= fabs (value);
+		*max *= fabs (value);
+		break;
+	case GOG_ERROR_BAR_TYPE_PERCENT:
+		*min *= fabs (value) / 100;
+		*max *= fabs (value) / 100;
+		break;
+	default:
+		break;
+	}
+	return TRUE;
+}
+
+void
+gog_error_bar_get_minmax (const GogErrorBar *bar, double *min, double *max)
+{
+	double *values;
+	int i, imax;
+	double tmp_min, tmp_max, plus, minus;
+	
+	g_return_if_fail (GOG_ERROR_BAR (bar) != NULL);
+
+	if (!gog_series_is_valid (bar->series)) {
+		*min = DBL_MAX;
+		*max = -DBL_MAX;
+		return;
+	}
+
+	imax = go_data_vector_get_len (GO_DATA_VECTOR (bar->series->values[bar->dim_i].data));
+	go_data_vector_get_minmax (GO_DATA_VECTOR (bar->series->values[bar->dim_i].data), min, max);
+	values = go_data_vector_get_values (GO_DATA_VECTOR (bar->series->values[bar->dim_i].data));
+
+	for (i = 0; i < imax; i++) {
+		if  (gog_error_bar_get_bounds (bar, i, &minus, &plus)) {
+			tmp_min = values[i] - minus;
+			tmp_max = values[i] + plus;
+			if (tmp_min < *min)
+				*min = tmp_min;
+			if (tmp_max > *max)
+				*max = tmp_max;
+		}
+	}
+}
+
+GogErrorBar  *
+gog_error_bar_dup		(GogErrorBar const *bar)
+{
+	GogErrorBar* dbar;
+
+	g_return_val_if_fail (IS_GOG_ERROR_BAR (bar), NULL);
+
+	dbar = g_object_new (GOG_ERROR_BAR_TYPE, NULL);
+	dbar->type = bar->type;
+	dbar->series = bar->series;
+	dbar->dim_i = bar->dim_i;
+	dbar->error_i = bar->error_i;
+	dbar->display = bar->display;
+	dbar->width = bar->width;
+	if (dbar->style) g_object_unref (dbar->style);
+	dbar->style = gog_style_dup (bar->style);
+	return dbar;
+}
+
+/**
+ * gog_error_bar_render :
+ * @bar : A GogErrorBar
+ * @rend : A GogRenderer 
+ * @x_map :  A GogAxisMap for the x axis
+ * @y_map :  A GogAxisMap for the y axis
+ * @x : x coordinate of the origin of the bar 
+ * @y : y coordinate of the origin of the bar
+ * @plus : distance from the origin to the positive end of the bar 
+ * @minus : distance from the origin to the negative end of the bar 
+ * @horizontal : whether the bar is horizontal or not.
+ *
+ * Displays the error bar. If @plus is negative, the positive side of the bar is not displayed,
+ * and if @minus is negative, the negative side of the bar is not displayed.
+ * x_map and y_map are used to convert coordinates from data space to canvas coordinates.
+ * This function must not be called if #gog_error_bar_get_bounds returned FALSE.
+ **/
+void gog_error_bar_render (const GogErrorBar *bar,
+			   GogRenderer *rend,
+			   GogAxisMap *x_map, GogAxisMap *y_map,
+			   double x, double y,
+			   double minus,
+			   double plus,
+			   gboolean horizontal)
+{
+	ArtVpath path [7];
+	int n;
+	double x_start, y_start, x_end, y_end;
+	double line_width, width;
+	gboolean start = plus > .0 && bar ->display & GOG_ERROR_BAR_DISPLAY_POSITIVE,
+		 end = minus > 0. && bar ->display & GOG_ERROR_BAR_DISPLAY_NEGATIVE;
+
+	if (!start && !end) return;
+
+	if (horizontal) {
+		if (!gog_axis_map_finite (x_map, x) ||
+		    !gog_axis_map_finite (y_map, y) ||
+		    (start && !gog_axis_map_finite (x_map, x + plus)) ||
+		    (end   && !gog_axis_map_finite (x_map, x - minus)))
+			return;
+			
+		x_start = start ? 
+			gog_axis_map_to_view (x_map, x + plus) : 
+			gog_axis_map_to_view (x_map, x);
+		x_end =  end ? 
+			gog_axis_map_to_view (x_map , x - minus) :
+			gog_axis_map_to_view (x_map , x);
+		y_start = y_end = gog_axis_map_to_view (y_map, y);
+	} else {
+		if (!gog_axis_map_finite (x_map, x) ||
+		    !gog_axis_map_finite (y_map, y) ||
+		    (start && !gog_axis_map_finite (y_map, y + plus)) ||
+		    (end   && !gog_axis_map_finite (y_map, y - minus)))
+			return;
+
+		x_start = x_end = gog_axis_map_to_view (x_map ,x);
+		y_start = start ? 
+			gog_axis_map_to_view (y_map, y + plus) :
+			gog_axis_map_to_view (y_map, y);
+		y_end =  end ? 
+			gog_axis_map_to_view (y_map, y - minus) :
+			gog_axis_map_to_view (y_map, y);
+	}
+	x = gog_axis_map_to_view (x_map, x);
+	y = gog_axis_map_to_view (y_map, y);
+
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[0].x = x_start;
+	path[1].x = x_end;
+	path[0].y = path[1].y = y_start;
+	path[0].y = y_start;
+	path[1].y = y_end;
+
+	if (horizontal) {
+		width = gog_renderer_pt2r_y (rend, bar->width) / 2.;
+		line_width = gog_renderer_pt2r_x (rend, bar->style->line.width);
+	} else {
+		width = gog_renderer_pt2r_x (rend, bar->width) / 2.;
+		line_width = gog_renderer_pt2r_y (rend, bar->style->line.width);
+	}
+
+	if ((2. * width) > line_width) {
+		if (start && end) {
+			path[2].code = ART_MOVETO;
+			path[3].code = ART_LINETO;
+			n = 4;
+		} else
+		n = 2;
+		path[n].code = ART_MOVETO;
+		path[n + 1].code = ART_LINETO;
+		path[n + 2].code = ART_END;
+		if (horizontal) {
+			if (start) {
+				path[2].x =path[3].x = x_start;
+				path[2].y = y - width;
+				path[3].y = y + width;
+			}
+			if (end) {
+				path[n].x =path[n+1].x = x_end;
+				path[n].y = y - width;
+				path[n+1].y = y + width;
+			}
+		} else {
+			if (start) {
+				path[2].x = x - width;
+				path[3].x = x + width;
+				path[2].y =path[3].y = y_start;
+			}
+			if (end) {
+				path[n].x = x - width;
+				path[n+1].x = x + width;
+				path[n].y =path[n+1].y = y_end;
+			}
+		}
+	} else
+		path[2].code = ART_END;
+
+	gog_renderer_push_style (rend, bar->style);
+	gog_renderer_draw_sharp_path (rend, path);
+	gog_renderer_pop_style (rend);
+}
+
+gboolean
+gog_error_bar_is_visible (GogErrorBar *bar)
+{
+	return (bar != NULL) &&
+		(bar->type != GOG_ERROR_BAR_TYPE_NONE) &&
+		(bar->display != GOG_ERROR_BAR_DISPLAY_NONE);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-error-bar.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,85 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-error-bar.h :  
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_ERROR_BAR_H
+#define GOG_ERROR_BAR_H
+
+#include <goffice/utils/go-color.h>
+#include "gog-series.h"
+#include "gog-data-set.h"
+#include "gog-axis.h"
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GOG_ERROR_BAR_TYPE_NONE,
+	GOG_ERROR_BAR_TYPE_ABSOLUTE,
+	GOG_ERROR_BAR_TYPE_RELATIVE,
+	GOG_ERROR_BAR_TYPE_PERCENT
+} GogErrorBarType;
+
+typedef enum {
+	GOG_ERROR_BAR_DISPLAY_NONE,
+	GOG_ERROR_BAR_DISPLAY_POSITIVE,
+	GOG_ERROR_BAR_DISPLAY_NEGATIVE,
+	GOG_ERROR_BAR_DISPLAY_BOTH
+} GogErrorBarDisplay;
+
+struct  _GogErrorBar{
+	GObject	base;
+	GogErrorBarType type;
+	GogSeries *series;
+	int dim_i;
+	int error_i;
+	GogErrorBarDisplay display;
+	float width;
+	GogStyle* style;
+};
+
+#define GOG_ERROR_BAR_TYPE		(gog_error_bar_get_type ())
+#define GOG_ERROR_BAR(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_ERROR_BAR_TYPE, GogErrorBar))
+#define IS_GOG_ERROR_BAR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_ERROR_BAR_TYPE))
+
+GType gog_error_bar_get_type (void);
+
+GogErrorBar  	*gog_error_bar_dup		(GogErrorBar const *bar);
+
+#ifdef WITH_GTK
+gpointer 	 gog_error_bar_prefs (GogSeries *series, char const* property, 
+				      gboolean horizontal, GogDataAllocator *dalloc, 
+				      GOCmdContext *cc);
+#endif
+
+gboolean 	 gog_error_bar_get_bounds (const GogErrorBar *bar, int index, 
+					   double *min, double *max);
+void 		 gog_error_bar_get_minmax (const GogErrorBar *bar, 
+					   double *min, double *max);
+void 		 gog_error_bar_render (const GogErrorBar *bar, GogRenderer *rend, 
+				       GogAxisMap *x_map, GogAxisMap *y_map,
+				       double x, double y, 
+				       double minus,
+				       double plus,
+				       gboolean horizontal);
+gboolean 	 gog_error_bar_is_visible (GogErrorBar *bar);
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,61 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-graph-impl.h : the top level container for charts
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_GRAPH_IMPL_H
+#define GOG_GRAPH_IMPL_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/graph/gog-outlined-object.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _GogGraph {
+	GogOutlinedObject	 base;
+
+	GogTheme *theme;
+	GSList	 *charts;
+	GSList	 *data;
+
+	unsigned  num_cols, num_rows;
+	double	  width, height;
+
+	guint	  idle_handler;
+};
+typedef struct {
+	GogOutlinedObjectClass base;
+
+	/* signals */
+	void (*add_data)    (GogGraph *graph, GOData *input);
+	void (*remove_data) (GogGraph *graph, GOData *input);
+} GogGraphClass;
+
+#define GOG_GRAPH_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOG_GRAPH_TYPE, GogGraphClass))
+#define IS_GOG_GRAPH_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_GRAPH_TYPE))
+
+/* protected */
+gboolean gog_graph_request_update (GogGraph *graph);
+void     gog_graph_force_update   (GogGraph *graph);
+
+G_END_DECLS
+
+#endif /* GOG_GRAPH_GROUP_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,655 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-graph.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-graph-impl.h>
+#include <goffice/graph/gog-chart-impl.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-units.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define GOG_GRAPH_DEFAULT_WIDTH 	GO_CM_TO_PT (12.0)
+#define GOG_GRAPH_DEFAULT_HEIGHT 	GO_CM_TO_PT (8.0)
+
+enum {
+	GRAPH_PROP_0,
+	GRAPH_PROP_THEME,
+	GRAPH_PROP_THEME_NAME,
+	GRAPH_PROP_WIDTH,
+	GRAPH_PROP_HEIGHT
+};
+
+enum {
+	GRAPH_ADD_DATA,
+	GRAPH_REMOVE_DATA,
+	GRAPH_LAST_SIGNAL
+};
+static gulong gog_graph_signals [GRAPH_LAST_SIGNAL] = { 0, };
+static GObjectClass *graph_parent_klass;
+static GogViewClass *gview_parent_klass;
+
+static void
+gog_graph_set_property (GObject *obj, guint param_id,
+			GValue const *value, GParamSpec *pspec)
+{
+	GogGraph *graph = GOG_GRAPH (obj);
+
+	switch (param_id) {
+	case GRAPH_PROP_THEME :
+		gog_graph_set_theme (graph, g_value_get_object (value));
+		break;
+	case GRAPH_PROP_THEME_NAME :
+		gog_graph_set_theme (graph,
+			gog_theme_lookup (g_value_get_string (value)));
+		break;
+	case GRAPH_PROP_WIDTH:
+		gog_graph_set_size (graph, g_value_get_double (value),
+				    graph->height);
+		break;
+	case GRAPH_PROP_HEIGHT:
+		gog_graph_set_size (graph, graph->width, 
+				    g_value_get_double (value));
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_graph_get_property (GObject *obj, guint param_id,
+			GValue *value, GParamSpec *pspec)
+{
+	GogGraph *graph = GOG_GRAPH (obj);
+
+	switch (param_id) {
+	case GRAPH_PROP_THEME :
+		g_value_set_object (value, graph->theme);
+		break;
+	case GRAPH_PROP_THEME_NAME :
+		g_value_set_string (value, gog_theme_get_name (graph->theme));
+		break;
+	case GRAPH_PROP_WIDTH:
+		g_value_set_double (value, graph->width);
+		break;
+	case GRAPH_PROP_HEIGHT:
+		g_value_set_double (value, graph->height);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_graph_finalize (GObject *obj)
+{
+	GogGraph *graph = GOG_GRAPH (obj);
+	GSList *tmp;
+
+	tmp = graph->data;
+	graph->data = NULL;
+	g_slist_foreach (tmp, (GFunc) g_object_unref, NULL);
+	g_slist_free (tmp);
+
+	/* on exit the role remove routines are not called */
+	g_slist_free (graph->charts);
+
+	if (graph->idle_handler != 0) {
+		g_source_remove (graph->idle_handler);
+		graph->idle_handler = 0;
+	}
+
+	(graph_parent_klass->finalize) (obj);
+}
+
+static char const *
+gog_graph_type_name (GogObject const *gobj)
+{
+	return N_("Graph");
+}
+
+static void
+role_chart_post_add (GogObject *parent, GogObject *chart)
+{
+	GogGraph *graph = GOG_GRAPH (parent);
+	graph->charts = g_slist_prepend (graph->charts, chart);
+	gog_chart_set_position (GOG_CHART (chart),
+		0, GOG_GRAPH (graph)->num_rows, 1, 1);
+}
+
+static void
+role_chart_pre_remove (GogObject *parent, GogObject *child)
+{
+	GogGraph *graph = GOG_GRAPH (parent);
+	GogChart *chart = GOG_CHART (child);
+
+	graph->charts = g_slist_remove (graph->charts, chart);
+	gog_graph_validate_chart_layout (graph);
+}
+
+static void
+gog_graph_update (GogObject *obj)
+{
+	GogGraph *graph = GOG_GRAPH (obj);
+	if (graph->idle_handler != 0) {
+		g_source_remove (graph->idle_handler);
+		graph->idle_handler = 0;
+	}
+}
+
+static void
+gog_graph_class_init (GogGraphClass *klass)
+{
+	GObjectClass *gobject_klass   = (GObjectClass *) klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+
+	static GogObjectRole const roles[] = {
+		{ N_("Chart"), "GogChart",	0,
+		  GOG_POSITION_SPECIAL|GOG_POSITION_ANY_MANUAL, 
+		  GOG_POSITION_SPECIAL, 
+		  GOG_OBJECT_NAME_BY_ROLE,
+		  NULL, NULL, NULL, role_chart_post_add, role_chart_pre_remove, NULL },
+		{ N_("Title"), "GogLabel",	1,
+		  GOG_POSITION_COMPASS|GOG_POSITION_ANY_MANUAL, 
+		  GOG_POSITION_N|GOG_POSITION_ALIGN_CENTER, 
+		  GOG_OBJECT_NAME_BY_ROLE,
+		  NULL, NULL, NULL, NULL, NULL, NULL },
+	};
+
+	graph_parent_klass = g_type_class_peek_parent (klass);
+	gobject_klass->set_property = gog_graph_set_property;
+	gobject_klass->get_property = gog_graph_get_property;
+	gobject_klass->finalize	    = gog_graph_finalize;
+
+	gog_klass->update	= gog_graph_update;
+	gog_klass->type_name	= gog_graph_type_name;
+	gog_klass->view_type	= gog_graph_view_get_type ();
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+
+	gog_graph_signals [GRAPH_ADD_DATA] = g_signal_new ("add-data",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogGraphClass, add_data),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__OBJECT,
+		G_TYPE_NONE,
+		1, G_TYPE_OBJECT);
+
+	gog_graph_signals [GRAPH_REMOVE_DATA] = g_signal_new ("remove-data",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogGraphClass, remove_data),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__OBJECT,
+		G_TYPE_NONE,
+		1, G_TYPE_OBJECT);
+
+	g_object_class_install_property (gobject_klass, GRAPH_PROP_THEME,
+		g_param_spec_object ("theme", "Theme",
+			"The theme for elements of the graph",
+			GOG_THEME_TYPE, G_PARAM_READWRITE));
+	g_object_class_install_property (gobject_klass, GRAPH_PROP_THEME_NAME,
+		g_param_spec_string ("theme-name", "ThemeName",
+			"The name of the theme for elements of the graph",
+			"default", G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GRAPH_PROP_WIDTH,
+		g_param_spec_double ("width-pts", "Width",
+			"Logical graph width, in points",
+			0.0, G_MAXDOUBLE, GOG_GRAPH_DEFAULT_WIDTH,
+			G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GRAPH_PROP_HEIGHT,
+		g_param_spec_double ("height-pts", "Height",
+			"Logical graph heigth, in points",
+			0.0, G_MAXDOUBLE, GOG_GRAPH_DEFAULT_HEIGHT,
+			G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_graph_init (GogGraph *graph)
+{
+	GogStyledObject *gso = GOG_STYLED_OBJECT (graph);
+
+	graph->data = NULL;
+	graph->num_cols = graph->num_rows = 0;
+	graph->width = GOG_GRAPH_DEFAULT_WIDTH;
+	graph->height = GOG_GRAPH_DEFAULT_HEIGHT;
+	graph->idle_handler = 0;
+	graph->theme = gog_theme_lookup (NULL); /* default */
+
+	/* Cheat and assign a name here, graphs will not have parents until we
+	 * support graphs in graphs */
+	GOG_OBJECT (graph)->user_name = g_strdup (_("Graph"));
+	gog_theme_fillin_style (graph->theme,
+		gso->style, GOG_OBJECT (graph), 0, TRUE);
+	gog_styled_object_apply_theme (gso, gso->style);
+}
+
+GSF_CLASS (GogGraph, gog_graph,
+	   gog_graph_class_init, gog_graph_init,
+	   GOG_OUTLINED_OBJECT_TYPE)
+
+/**
+ * gog_graph_validate_chart_layout :
+ * @graph : #GogGraph
+ *
+ * Check the layout of the chart grid and ensure that there are no empty
+ * cols or rows, and resize as necessary
+ */
+gboolean
+gog_graph_validate_chart_layout (GogGraph *graph)
+{
+	GSList *ptr;
+	GogChart *chart = NULL;
+	unsigned i, max_col, max_row;
+	gboolean changed = FALSE;
+
+	g_return_val_if_fail (GOG_GRAPH (graph) != NULL, FALSE);
+
+	/* There won't be many of charts so we do the right thing */
+
+	/* 1) find the max */
+	max_col = max_row = 0;
+	for (ptr = graph->charts ; ptr != NULL ; ptr = ptr->next) {
+		chart = ptr->data;
+		if (max_col < (chart->x + chart->cols))
+			max_col = (chart->x + chart->cols);
+		if (max_row < (chart->y + chart->rows))
+			max_row = (chart->y + chart->rows);
+	}
+
+	/* 2) see if we need to contract any cols */
+	for (i = 0 ; i < max_col ; ) {
+		for (ptr = graph->charts ; ptr != NULL ; ptr = ptr->next) {
+			chart = ptr->data;
+			if (chart->x <= i && i < (chart->x + chart->cols))
+				break;
+		}
+		if (ptr == NULL) {
+			changed = TRUE;
+			max_col--;
+			for (ptr = graph->charts ; ptr != NULL ; ptr = ptr->next) {
+				chart = ptr->data;
+				if (chart->x > i)
+					(chart->x)--;
+			}
+		} else
+			i = chart->x + chart->cols;
+	}
+
+	/* 3) see if we need to contract any rows */
+	for (i = 0 ; i < max_row ; ) {
+		for (ptr = graph->charts ; ptr != NULL ; ptr = ptr->next) {
+			chart = ptr->data;
+			if (chart->y <= i && i < (chart->y + chart->rows))
+				break;
+		}
+		if (ptr == NULL) {
+			changed = TRUE;
+			max_row--;
+			for (ptr = graph->charts ; ptr != NULL ; ptr = ptr->next) {
+				chart = ptr->data;
+				if (chart->y > i)
+					(chart->y)--;
+			}
+		} else
+			i = chart->y + chart->rows;
+	}
+	changed |= (graph->num_cols != max_col || graph->num_rows != max_row);
+
+	graph->num_cols = max_col;
+	graph->num_rows = max_row;
+
+	if (changed)
+		gog_object_emit_changed (GOG_OBJECT (graph), TRUE);
+	return changed;
+}
+
+unsigned
+gog_graph_num_cols (GogGraph const *graph)
+{
+	g_return_val_if_fail (GOG_GRAPH (graph) != NULL, 1);
+	return graph->num_cols;
+}
+
+unsigned
+gog_graph_num_rows (GogGraph const *graph)
+{
+	g_return_val_if_fail (GOG_GRAPH (graph) != NULL, 1);
+	return graph->num_rows;
+}
+
+/**
+ * gog_graph_dup :
+ * @graph : #GogGraph
+ *
+ * A convenience wrapper to make a deep copy of @graph.
+ **/
+GogGraph *
+gog_graph_dup (GogGraph const *graph)
+{
+	GogObject *res = gog_object_dup (GOG_OBJECT (graph), NULL, NULL);
+	return GOG_GRAPH (res);
+}
+
+GogTheme *
+gog_graph_get_theme (GogGraph const *graph)
+{
+	g_return_val_if_fail (GOG_GRAPH (graph) != NULL, NULL);
+	return graph->theme;
+}
+
+void
+gog_graph_set_theme (GogGraph *graph, GogTheme *theme)
+{
+	g_return_if_fail (GOG_GRAPH (graph) != NULL);
+	g_return_if_fail (GOG_THEME (theme) != NULL);
+#warning TODO
+}
+
+/**
+ * gog_graph_get_data :
+ * @graph : #GogGraph
+ *
+ * Returns a list of the GOData objects that are data to the graph.
+ * The caller should _not_ modify or free the list.
+ **/
+GSList *
+gog_graph_get_data (GogGraph const *graph)
+{
+	g_return_val_if_fail (GOG_GRAPH (graph) != NULL, NULL);
+	return graph->data;
+}
+
+/**
+ * gog_graph_ref_data :
+ * @graph : #GogGraph
+ * @dat : #GOData
+ *
+ * If @dat or something equivalent to it already exists in the graph use that.
+ * Otherwaise use @dat.  Adds a gobject ref to the target and increments a
+ * count of the number of refs made from this #GogGraph.
+ **/
+GOData *
+gog_graph_ref_data (GogGraph *graph, GOData *dat)
+{
+	GObject *g_obj;
+	gpointer res;
+	unsigned count;
+
+	if (dat == NULL)
+		return NULL;
+
+	g_return_val_if_fail (GOG_GRAPH (graph) != NULL, dat);
+	g_return_val_if_fail (GO_DATA (dat) != NULL, dat);
+
+	/* Does it already exist in the graph ? */
+	g_obj = G_OBJECT (graph);
+	res = g_object_get_qdata (g_obj, (GQuark)dat);
+	if (res == NULL) {
+
+		/* is there something like it already */
+		GSList *existing = graph->data; 
+		for (; existing != NULL ; existing = existing->next)
+			if (go_data_eq (dat, existing->data))
+				break;
+
+		if (existing == NULL) {
+			g_signal_emit (g_obj, gog_graph_signals [GRAPH_ADD_DATA], 0, dat);
+			graph->data = g_slist_prepend (graph->data, dat);
+			g_object_ref (dat);
+		} else {
+			dat = existing->data;
+			res = g_object_get_qdata (g_obj, (GQuark)dat);
+		}
+	}
+
+	count = GPOINTER_TO_UINT (res) + 1;
+	g_object_set_qdata (g_obj, (GQuark)dat, GUINT_TO_POINTER (count));
+	g_object_ref (dat);
+	return dat;
+}
+
+/**
+ * gog_graph_unref_data :
+ * @graph : #GogGraph
+ * @dat : #GOData
+ *
+ **/
+void
+gog_graph_unref_data (GogGraph *graph, GOData *dat)
+{
+	GObject *g_obj;
+	gpointer res;
+	unsigned count;
+
+	if (dat == NULL)
+		return;
+
+	g_return_if_fail (GO_DATA (dat) != NULL);
+
+	g_object_unref (dat);
+
+	if (graph == NULL)
+		return;
+
+	g_return_if_fail (GOG_GRAPH (graph) != NULL);
+
+	/* once we've been destroyed the list is gone */
+	if (graph->data == NULL)
+		return;
+
+	g_obj = G_OBJECT (graph);
+	res = g_object_get_qdata (g_obj, (GQuark)dat);
+
+	g_return_if_fail (res != NULL);
+
+	count = GPOINTER_TO_UINT (res);
+	if (count-- <= 1) {
+		/* signal before removing in case that unrefs */
+		g_signal_emit (G_OBJECT (graph),
+			gog_graph_signals [GRAPH_REMOVE_DATA], 0, dat);
+		graph->data = g_slist_remove (graph->data, dat);
+		g_object_unref (dat);
+		g_object_set_qdata (g_obj, (GQuark)dat, NULL);
+	} else
+		/* store the decremented count */
+		g_object_set_qdata (g_obj, (GQuark)dat, GUINT_TO_POINTER (count));
+}
+
+static gboolean
+cb_graph_idle (GogGraph *graph)
+{
+	/* an update may queue an update in a different object,
+	 * clear the handler early */
+	graph->idle_handler = 0;
+	gog_object_update (GOG_OBJECT (graph));
+	return FALSE;
+}
+
+/**
+ * gog_graph_request_update :
+ * @graph : #GogGraph
+ *
+ * queue an update if one had not already be queued.
+ **/
+gboolean
+gog_graph_request_update (GogGraph *graph)
+{
+	/* people may try to queue an update during destruction */
+	if (G_OBJECT (graph)->ref_count <= 0)
+		return FALSE;
+
+	g_return_val_if_fail (GOG_GRAPH (graph) != NULL, FALSE);
+
+	if (graph->idle_handler == 0) { /* higher priority than canvas */
+		graph->idle_handler = g_idle_add_full (G_PRIORITY_HIGH_IDLE,
+			(GSourceFunc) cb_graph_idle, graph, NULL);
+		return TRUE;
+	}
+	return FALSE;
+}
+
+/**
+ * gog_graph_force_update :
+ * @graph : #GogGraph
+ *
+ * Do an update now if one has been queued.
+ **/
+void
+gog_graph_force_update (GogGraph *graph)
+{
+	/* people may try to queue an update during destruction */
+	while (G_OBJECT (graph)->ref_count > 0 && graph->idle_handler != 0) {
+		g_source_remove (graph->idle_handler);
+		graph->idle_handler = 0;
+		gog_object_update (GOG_OBJECT (graph));
+	}
+}
+/**
+ * gog_graph_get_size:
+ * @graph: #GogGraph
+ * @width: logical width in pts
+ * @height: logical height in pts
+ *
+ * Returns the logical size of graph, in points.
+ **/
+void
+gog_graph_get_size (GogGraph *graph, double *width, double *height)
+{
+	g_return_if_fail (GOG_GRAPH (graph) != NULL);
+
+	if (width != NULL)
+		*width = graph->width;
+	if (height != NULL)
+		*height = graph->height;
+}
+/**
+ * gog_graph_set_size:
+ * @graph: #GogGraph
+ * @width: logical width in pts
+ * @height: logical height in pts
+ *
+ * Sets the logical size of graph, given in points.
+ **/
+void
+gog_graph_set_size (GogGraph *graph, double width, double height)
+{
+	g_return_if_fail (GOG_GRAPH (graph) != NULL);
+
+	if (width != graph->width || height != graph->height) {
+		graph->height = height;
+		graph->width = width;
+		gog_object_emit_changed (GOG_OBJECT (graph), TRUE);
+	}
+}
+
+/************************************************************************/
+
+typedef GogOutlinedView		GogGraphView;
+typedef GogOutlinedViewClass	GogGraphViewClass;
+
+#define GOG_GRAPH_VIEW_TYPE	(gog_graph_view_get_type ())
+#define GOG_GRAPH_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_GRAPH_VIEW_TYPE, GogGraphView))
+#define IS_GOG_GRAPH_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_GRAPH_VIEW_TYPE))
+
+enum {
+	GRAPH_VIEW_PROP_0,
+	GRAPH_VIEW_PROP_RENDERER
+};
+
+static void
+gog_graph_view_set_property (GObject *gobject, guint param_id,
+			     GValue const *value, GParamSpec *pspec)
+{
+	GogView *view = GOG_VIEW (gobject);
+
+	switch (param_id) {
+	case GRAPH_VIEW_PROP_RENDERER:
+		g_return_if_fail (view->renderer == NULL);
+		view->renderer = GOG_RENDERER (g_value_get_object (value));
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_graph_view_size_allocate (GogView *view, GogViewAllocation const *bbox)
+{
+	GSList *ptr;
+	double h, w;
+	unsigned x, y, rows, cols;
+	GogView *child;
+	GogGraph *graph = GOG_GRAPH (view->model);
+	GogViewAllocation tmp, res = *bbox;
+
+	(gview_parent_klass->size_allocate) (view, &res);
+
+	if (gog_graph_num_cols (graph) <= 0 ||
+	    gog_graph_num_rows (graph) <= 0)
+		return;
+
+	res = view->residual;
+	w = res.w / gog_graph_num_cols (graph);
+	h = res.h / gog_graph_num_rows (graph);
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+		if (GOG_POSITION_IS_SPECIAL (child->model->position)) {
+			gog_chart_get_position (GOG_CHART (child->model),
+				&x, &y, &cols, &rows);
+			tmp.x = x * w + res.x;
+			tmp.y = y * h + res.y;
+			tmp.w = cols * w;
+			tmp.h = rows * h;
+			gog_view_size_allocate (child, &tmp);
+		}
+	}
+}
+
+static void
+gog_graph_view_class_init (GogGraphViewClass *gview_klass)
+{
+	GogViewClass *view_klass    = (GogViewClass *) gview_klass;
+	GObjectClass *gobject_klass = (GObjectClass *) view_klass;
+
+	gview_parent_klass = g_type_class_peek_parent (gview_klass);
+	gobject_klass->set_property = gog_graph_view_set_property;
+	view_klass->size_allocate   = gog_graph_view_size_allocate;
+
+	g_object_class_install_property (gobject_klass, GRAPH_VIEW_PROP_RENDERER,
+		g_param_spec_object ("renderer", "renderer",
+			"the renderer for this view",
+			GOG_RENDERER_TYPE, G_PARAM_WRITABLE));
+}
+
+GSF_CLASS (GogGraphView, gog_graph_view,
+	   gog_graph_view_class_init, NULL,
+	   GOG_OUTLINED_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-graph.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,58 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-graph.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_GRAPH_H
+#define GOG_GRAPH_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/data/goffice-data.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_GRAPH_TYPE	(gog_graph_get_type ())
+#define GOG_GRAPH(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_GRAPH_TYPE, GogGraph))
+#define IS_GOG_GRAPH(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_GRAPH_TYPE))
+
+GType gog_graph_get_type (void);
+GType gog_graph_view_get_type (void);
+
+gboolean  gog_graph_validate_chart_layout (GogGraph *graph);
+unsigned  gog_graph_num_cols	  (GogGraph const *graph);
+unsigned  gog_graph_num_rows	  (GogGraph const *graph);
+
+/* convenience wrappers */
+GogGraph *gog_graph_dup	  	  (GogGraph const *graph);
+GogTheme *gog_graph_get_theme	  (GogGraph const *graph);
+void	  gog_graph_set_theme	  (GogGraph *graph, GogTheme *theme);
+
+/* data management */
+GSList   *gog_graph_get_data	  (GogGraph const *graph);
+
+/* internal routines for use by series */
+GOData   *gog_graph_ref_data   	  (GogGraph *graph, GOData *dat);
+void      gog_graph_unref_data    (GogGraph *graph, GOData *dat);
+
+void	  gog_graph_get_size 	  (GogGraph *graph, double *width, double *height);
+void      gog_graph_set_size      (GogGraph *graph, double width, double height);
+	
+G_END_DECLS
+
+#endif /* GOG_GRAPH_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,345 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-grid-line.c
+ *
+ * Copyright (C) 2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/graph/gog-grid-line.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/data/go-data.h>
+
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-math.h>
+
+#include <goffice/gtk/goffice-gtk.h>
+
+
+#include <glib/gi18n.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <math.h>
+
+struct _GogGridLine {
+	GogStyledObject	base;
+
+	gboolean is_minor;
+};
+
+typedef GogStyledObjectClass GogGridLineClass;
+
+static GType gog_grid_line_view_get_type (void);
+static GogViewClass *gview_parent_klass;
+
+enum {
+	GRID_LINE_PROP_0,
+	GRID_LINE_PROP_IS_MINOR,
+};
+
+gboolean
+gog_grid_line_is_minor (GogGridLine *ggl)
+{
+	g_return_val_if_fail (GOG_GRID_LINE (ggl) != NULL, FALSE);
+
+	return ggl->is_minor;
+}
+
+static void
+gog_grid_line_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	style->interesting_fields = GOG_STYLE_LINE;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+gog_grid_line_set_property (GObject *obj, guint param_id,
+			    GValue const *value, GParamSpec *pspec)
+{
+	GogGridLine *grid_line = GOG_GRID_LINE (obj);
+
+	switch (param_id) {
+		case GRID_LINE_PROP_IS_MINOR:
+			grid_line->is_minor = g_value_get_boolean (value);
+			break;
+
+		default: 
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+			return; /* NOTE : RETURN */
+	}
+
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_grid_line_get_property (GObject *obj, guint param_id,
+			    GValue *value, GParamSpec *pspec)
+{
+	GogGridLine *grid_line = GOG_GRID_LINE (obj);
+
+	switch (param_id) {
+		case GRID_LINE_PROP_IS_MINOR:
+			g_value_set_boolean (value, grid_line->is_minor);
+			break;
+
+		default: 
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+			 break;
+	}
+}
+
+static void
+gog_grid_line_class_init (GogGridLineClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+
+	gobject_klass->set_property = gog_grid_line_set_property;
+	gobject_klass->get_property = gog_grid_line_get_property;
+	gog_klass->view_type	= gog_grid_line_view_get_type ();
+	style_klass->init_style = gog_grid_line_init_style;
+	
+	g_object_class_install_property (gobject_klass, GRID_LINE_PROP_IS_MINOR,
+		g_param_spec_boolean ("is-minor", "is-minor",
+			"Are these minor grid lines", FALSE, G_PARAM_READWRITE));
+}
+
+GSF_CLASS (GogGridLine, gog_grid_line,
+	   gog_grid_line_class_init, NULL,
+	   GOG_STYLED_OBJECT_TYPE)
+
+/************************************************************************/
+
+typedef GogView		GogGridLineView;
+typedef GogViewClass	GogGridLineViewClass;
+
+#define GOG_GRID_LINE_VIEW_TYPE		(gog_grid_line_view_get_type ())
+#define GOG_GRID_LINE_VIEW(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_GRID_LINE_VIEW_TYPE, GogGridLineView))
+#define IS_GOG_GRID_LINE_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_GRID_LINE_VIEW_TYPE))
+
+static void
+gog_grid_line_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogGridLine *grid_line = GOG_GRID_LINE (view->model);
+	GSList *axis_list;
+	GogAxis *axis;
+	GogChart *chart;
+	GogView *chart_view;
+	GogStyle *style;
+	GogAxisType axis_type;
+	GogAxisMap *map = NULL;
+	GogAxisTick *ticks;
+	unsigned tick_nbr, i, j;
+	ArtVpath path[3];
+	ArtVpath *c_path;
+	GogViewAllocation const *plot_area;
+	double line_width;
+
+	axis = GOG_AXIS (view->model->parent);
+	g_return_if_fail (axis != NULL);
+	chart = GOG_CHART (view->model->parent->parent);
+	g_return_if_fail (chart != NULL);
+	g_return_if_fail (view->parent != NULL);
+	chart_view = GOG_VIEW (view->parent->parent);
+	g_return_if_fail (chart_view != NULL);
+
+	axis_type = gog_axis_get_atype (axis);
+	tick_nbr = gog_axis_get_ticks (axis, &ticks);
+	if (tick_nbr < 1)
+		return;
+
+	plot_area = gog_chart_view_get_plot_area (chart_view);
+	style = gog_styled_object_get_style (GOG_STYLED_OBJECT (grid_line));
+	gog_renderer_push_style (view->renderer, style);
+	line_width = gog_renderer_line_size (view->renderer, style->line.width);
+	
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[2].code = ART_END;
+
+	if (line_width > 0) {
+		switch (axis_type) {
+			case GOG_AXIS_X:
+			case GOG_AXIS_Y:
+
+				switch (axis_type) {
+					case GOG_AXIS_X:
+						map = gog_axis_map_new (axis, plot_area->x, plot_area->w);
+						break;
+					case GOG_AXIS_Y:
+						map = gog_axis_map_new (axis, plot_area->y +plot_area->h, -plot_area->h);
+						break;
+					default:
+						return;
+				}
+
+				switch (axis_type) {
+					case GOG_AXIS_X: 
+						for (i = 0; i < tick_nbr; i++) {
+							if ((ticks[i].type == GOG_AXIS_TICK_MAJOR && !grid_line->is_minor) ||
+							    (ticks[i].type == GOG_AXIS_TICK_MINOR && grid_line->is_minor)) {
+								path[0].y = plot_area->y;
+								path[1].y = plot_area->y + plot_area->h;
+								path[0].x = 
+								path[1].x = gog_axis_map_to_view (map, ticks[i].position);
+								gog_renderer_draw_sharp_path (view->renderer, path);
+							}
+						}
+						break;
+					case GOG_AXIS_Y: 
+						for (i = 0; i < tick_nbr; i++) {
+							if ((ticks[i].type == GOG_AXIS_TICK_MAJOR && !grid_line->is_minor) ||
+							    (ticks[i].type == GOG_AXIS_TICK_MINOR && grid_line->is_minor)) {
+								path[0].x = plot_area->x;
+								path[1].x = plot_area->x + plot_area->w;
+								path[0].y = 
+								path[1].y = gog_axis_map_to_view (map, ticks[i].position);
+								gog_renderer_draw_sharp_path (view->renderer, path);
+							}
+						}
+						break;
+					default:
+						break;
+				}
+				gog_axis_map_free (map);
+				break;
+
+			case GOG_AXIS_RADIAL: {
+				GogAxis *circular_axis;
+				GogChartMap *c_map;
+				GogChartMapPolarData *parms;
+
+				axis_list = gog_chart_get_axes (chart, GOG_AXIS_CIRCULAR);
+				if (axis_list == NULL)
+					break;
+				circular_axis = GOG_AXIS (axis_list->data);
+				g_slist_free (axis_list);
+
+				c_map = gog_chart_map_new (GOG_CHART (chart), plot_area, 
+							   circular_axis, axis, NULL, FALSE);
+				parms = gog_chart_map_get_polar_parms (c_map);
+
+				if (gog_axis_is_discrete (circular_axis)) {
+					unsigned step_nbr;
+					double start, stop;
+					
+					map = gog_chart_map_get_axis_map (c_map, 0);
+					gog_axis_map_get_extents (map, &start, &stop);
+					step_nbr = go_rint (parms->th1 - parms->th0) + 1;
+					c_path = art_new (ArtVpath, step_nbr + 2);
+					for (i = 0; i < tick_nbr; i++) {
+						if ((ticks[i].type == GOG_AXIS_TICK_MAJOR && !grid_line->is_minor) ||
+						    (ticks[i].type == GOG_AXIS_TICK_MINOR && grid_line->is_minor)) {
+							for (j = 0; j <= step_nbr; j++) {
+								gog_chart_map_2D_to_view (c_map, 
+									j + parms->th0 , 
+									ticks[i].position, 
+									&c_path[j].x, &c_path[j].y);
+								c_path[j].code = ART_LINETO;
+							}
+							c_path[0].code = ART_MOVETO;
+							c_path[step_nbr + 1].code = ART_END;
+							gog_renderer_draw_path (view->renderer, c_path);
+						}
+					}
+					g_free (c_path);
+				} else {
+					double position;
+					map = gog_chart_map_get_axis_map (c_map, 1);
+
+					for (i = 0; i < tick_nbr; i++) { 
+						if ((ticks[i].type == GOG_AXIS_TICK_MAJOR && !grid_line->is_minor) ||
+						    (ticks[i].type == GOG_AXIS_TICK_MINOR && grid_line->is_minor)) {
+							position = gog_axis_map (map, ticks[i].position);
+							gog_renderer_draw_arc (view->renderer, parms->cx, parms->cy,
+									       position * parms->rx, 
+									       position * parms->ry,
+									       -parms->th1, -parms->th0);
+						}
+					}
+				}
+				gog_chart_map_free (c_map);
+				break;
+					      }
+			case GOG_AXIS_CIRCULAR: {
+				GogAxis *radial_axis;
+				GogChartMap *c_map;
+				double start, stop;
+
+				axis_list = gog_chart_get_axes (chart, GOG_AXIS_RADIAL);
+				if (axis_list == NULL)
+					break;
+				radial_axis = GOG_AXIS (axis_list->data);
+				g_slist_free (axis_list);
+
+				c_map = gog_chart_map_new (GOG_CHART (chart), plot_area, 
+							   axis, radial_axis, NULL, FALSE);
+				map = gog_chart_map_get_axis_map (c_map, 1);
+				gog_axis_map_get_extents (map, &start, &stop);
+				
+				gog_chart_map_2D_to_view (c_map, 0, start, &path[0].x, &path[0].y);
+				path[0].code = ART_MOVETO;
+				path[1].code = ART_LINETO;
+				path[2].code = ART_END;
+				for (i = 0; i < tick_nbr; i++) 
+					if ((ticks[i].type == GOG_AXIS_TICK_MAJOR && !grid_line->is_minor) ||
+					    (ticks[i].type == GOG_AXIS_TICK_MINOR && grid_line->is_minor)) {
+						gog_chart_map_2D_to_view (c_map, ticks[i].position, stop, 
+									  &path[1].x, &path[1].y);
+						gog_renderer_draw_path (view->renderer, path);
+					}
+				gog_chart_map_free (c_map);
+				}
+
+			default:
+				break;
+		}
+	}
+
+	gog_renderer_pop_style (view->renderer);
+}
+
+static gboolean
+gog_grid_line_info_at_point (GogView *view, double x, double y,
+			    GogObject const *cur_selection,
+			    GogObject **obj, char **name)
+{
+	return FALSE;
+}
+
+static void
+gog_grid_line_view_class_init (GogGridLineViewClass *gview_klass)
+{
+	GogViewClass *view_klass    = (GogViewClass *) gview_klass;
+
+	gview_parent_klass = g_type_class_peek_parent (gview_klass);
+	view_klass->render 		= gog_grid_line_view_render;
+	view_klass->info_at_point 	= gog_grid_line_info_at_point;
+}
+
+static GSF_CLASS (GogGridLineView, gog_grid_line_view,
+	   gog_grid_line_view_class_init, NULL,
+	   GOG_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid-line.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-grid-line.h
+ *
+ * Copyright (C) 2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_GRID_LINE_H
+#define GOG_GRID_LINE_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_GRID_LINE_TYPE	(gog_grid_line_get_type ())
+#define GOG_GRID_LINE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_GRID_LINE_TYPE, GogGridLine))
+#define IS_GOG_GRID_LINE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_GRID_LINE_TYPE))
+
+GType gog_grid_line_get_type (void);
+
+gboolean gog_grid_line_is_minor (GogGridLine *ggl);
+
+G_END_DECLS
+
+#endif /* GOG_GRID_LINE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,177 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-grid.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-grid.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-renderer.h>
+
+#include <goffice/utils/go-math.h>
+
+#include <glib/gi18n.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+struct _GogGrid {
+	GogStyledObject	base;
+};
+typedef GogStyledObjectClass GogGridClass;
+
+
+static GType gog_grid_view_get_type (void);
+static GogViewClass *gview_parent_klass;
+
+static void
+gog_grid_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	style->interesting_fields = GOG_STYLE_FILL | GOG_STYLE_OUTLINE;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+gog_grid_class_init (GogGridClass *klass)
+{
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+
+	gog_klass->view_type	= gog_grid_view_get_type ();
+	style_klass->init_style = gog_grid_init_style;
+}
+
+GSF_CLASS (GogGrid, gog_grid,
+	   gog_grid_class_init, NULL,
+	   GOG_STYLED_OBJECT_TYPE)
+
+/************************************************************************/
+
+typedef GogView		GogGridView;
+typedef GogViewClass	GogGridViewClass;
+
+#define GOG_GRID_VIEW_TYPE	(gog_grid_view_get_type ())
+#define GOG_GRID_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_GRID_VIEW_TYPE, GogGridView))
+#define IS_GOG_GRID_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_GRID_VIEW_TYPE))
+
+static void
+gog_grid_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogGrid *grid = GOG_GRID (view->model);
+	GogChart *chart = GOG_CHART (gog_object_get_parent (view->model));
+	
+	gog_renderer_push_style (view->renderer, grid->base.style);
+	switch (gog_chart_get_axis_set (chart)) {
+		case GOG_AXIS_SET_X:
+		case GOG_AXIS_SET_XY: {
+			ArtVpath path[6];
+			
+			path[0].code = ART_MOVETO;
+			path[1].code = ART_LINETO;
+			path[2].code = ART_LINETO;
+			path[3].code = ART_LINETO;
+			path[4].code = ART_LINETO;
+			path[5].code = ART_END;
+			path[0].x = path[1].x = path[4].x = view->allocation.x;
+			path[2].x = path[3].x = path[0].x + view->allocation.w;
+			path[0].y = path[3].y = path[4].y = view->allocation.y; 
+			path[1].y = path[2].y = path[0].y + view->allocation.h; 
+
+			gog_renderer_draw_sharp_polygon (view->renderer, path, FALSE);
+			break;
+			}
+		case GOG_AXIS_SET_RADAR: {
+			GogAxis *c_axis, *r_axis;
+			GogViewAllocation const *area = gog_chart_view_get_plot_area (view->parent);
+			GogChartMap *c_map;
+			GogAxisMap *map;
+			GogChartMapPolarData *parms;
+			GSList *axis_list;
+			ArtVpath *path;
+			double position, start, stop;
+			unsigned step_nbr, i;
+		       
+			axis_list = gog_chart_get_axes (chart, GOG_AXIS_CIRCULAR);
+			if (axis_list == NULL)
+				break;
+			c_axis = GOG_AXIS (axis_list->data);
+			g_slist_free (axis_list);
+
+			axis_list = gog_chart_get_axes (chart, GOG_AXIS_RADIAL);
+			if (axis_list == NULL)
+				break;
+			r_axis = GOG_AXIS (axis_list->data);
+			g_slist_free (axis_list);
+
+			c_map = gog_chart_map_new (chart, area, c_axis, r_axis, NULL, FALSE);
+			parms = gog_chart_map_get_polar_parms (c_map);
+			map = gog_chart_map_get_axis_map (c_map, 1);
+			gog_axis_map_get_extents (map, &start, &position);
+
+			if (gog_axis_is_discrete (c_axis)) {
+				map = gog_chart_map_get_axis_map (c_map, 0);
+				gog_axis_map_get_extents (map, &start, &stop);
+				step_nbr = go_rint (parms->th1 - parms->th0) + 1;
+				path = art_new (ArtVpath, step_nbr + 2);
+				for (i = 0; i <= step_nbr; i++) {
+					gog_chart_map_2D_to_view (c_map, i + parms->th0, 
+								  position, &path[i].x, &path[i].y);
+					path[i].code = ART_LINETO;
+				}
+				path[0].code = ART_MOVETO;
+				path[step_nbr + 1].code = ART_END;
+				gog_renderer_draw_polygon (view->renderer, path, FALSE);
+				g_free (path);
+			} else {
+				double a = gog_axis_map (map, position); 
+				gog_renderer_draw_pie_wedge (view->renderer, parms->cx, parms->cy,
+							     parms->rx * a, parms->ry * a,
+							     -parms->th1, -parms->th0, FALSE);
+			}
+			gog_chart_map_free (c_map);
+			break;
+			}
+		case GOG_AXIS_SET_XYZ:
+		case GOG_AXIS_SET_XY_pseudo_3d:
+		case GOG_AXIS_SET_ALL:
+		case GOG_AXIS_SET_UNKNOWN:
+		case GOG_AXIS_SET_NONE:
+					 break;
+	}
+	gog_renderer_pop_style (view->renderer);
+
+	(gview_parent_klass->render) (view, bbox);
+}
+
+static void
+gog_grid_view_class_init (GogGridViewClass *gview_klass)
+{
+	GogViewClass *view_klass    = (GogViewClass *) gview_klass;
+
+	gview_parent_klass = g_type_class_peek_parent (gview_klass);
+	view_klass->render = gog_grid_view_render;
+}
+
+static GSF_CLASS (GogGridView, gog_grid_view,
+	   gog_grid_view_class_init, NULL,
+	   GOG_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-grid.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,37 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-grid.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_GRID_H
+#define GOG_GRID_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_GRID_TYPE	(gog_grid_get_type ())
+#define GOG_GRID(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_GRID_TYPE, GogGrid))
+#define IS_GOG_GRID(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_GRID_TYPE))
+
+GType gog_grid_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_GRID_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru-type-selector.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru-type-selector.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru-type-selector.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,350 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkAlignment" id="type_selector">
+      <property name="visible">True</property>
+      <property name="xalign">0.5</property>
+      <property name="yalign">0.5</property>
+      <property name="xscale">1</property>
+      <property name="yscale">1</property>
+      <property name="top_padding">6</property>
+      <property name="bottom_padding">0</property>
+      <property name="left_padding">6</property>
+      <property name="right_padding">6</property>
+
+      <child>
+	<widget class="GtkVBox" id="vbox2">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">12</property>
+
+	  <child>
+	    <widget class="GtkHBox" id="hbox1">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">24</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox4">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="type_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">&lt;b&gt;_Plot type&lt;/b&gt;</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">True</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">type_treeview</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkScrolledWindow" id="scrolledwindow1">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		      <child>
+			<widget class="GtkTreeView" id="type_treeview">
+			  <property name="width_request">150</property>
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="headers_visible">False</property>
+			  <property name="rules_hint">False</property>
+			  <property name="reorderable">False</property>
+			  <property name="enable_search">True</property>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox5">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">12</property>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox6">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkLabel" id="subtype_label">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">&lt;b&gt;_Subtype&lt;/b&gt;</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">True</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">type_treeview</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkFrame" id="canvas_container">
+			  <property name="visible">True</property>
+			  <property name="label_xalign">0</property>
+			  <property name="label_yalign">0.5</property>
+			  <property name="shadow_type">GTK_SHADOW_IN</property>
+
+			  <child>
+			    <placeholder/>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkAlignment" id="alignment10">
+			  <property name="visible">True</property>
+			  <property name="xalign">1</property>
+			  <property name="yalign">0</property>
+			  <property name="xscale">0</property>
+			  <property name="yscale">0</property>
+			  <property name="top_padding">6</property>
+			  <property name="bottom_padding">0</property>
+			  <property name="left_padding">0</property>
+			  <property name="right_padding">0</property>
+
+			  <child>
+			    <widget class="GtkButton" id="sample_button">
+			      <property name="visible">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">False</property>
+
+			      <child>
+				<widget class="GtkAlignment" id="alignment8">
+				  <property name="visible">True</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xscale">0</property>
+				  <property name="yscale">0</property>
+				  <property name="top_padding">0</property>
+				  <property name="bottom_padding">0</property>
+				  <property name="left_padding">0</property>
+				  <property name="right_padding">0</property>
+
+				  <child>
+				    <widget class="GtkHBox" id="hbox3">
+				      <property name="visible">True</property>
+				      <property name="homogeneous">False</property>
+				      <property name="spacing">2</property>
+
+				      <child>
+					<widget class="GtkImage" id="image27">
+					  <property name="visible">True</property>
+					  <property name="stock">gtk-dialog-info</property>
+					  <property name="icon_size">4</property>
+					  <property name="xalign">0.5</property>
+					  <property name="yalign">0.5</property>
+					  <property name="xpad">0</property>
+					  <property name="ypad">0</property>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">False</property>
+					</packing>
+				      </child>
+
+				      <child>
+					<widget class="GtkLabel" id="sample_label">
+					  <property name="visible">True</property>
+					  <property name="label" translatable="yes">Show sample</property>
+					  <property name="use_underline">True</property>
+					  <property name="use_markup">False</property>
+					  <property name="justify">GTK_JUSTIFY_LEFT</property>
+					  <property name="wrap">False</property>
+					  <property name="selectable">False</property>
+					  <property name="xalign">0.5</property>
+					  <property name="yalign">0.5</property>
+					  <property name="xpad">0</property>
+					  <property name="ypad">0</property>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">False</property>
+					</packing>
+				      </child>
+				    </widget>
+				  </child>
+				</widget>
+			      </child>
+			    </widget>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkHBox" id="hbox3">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">24</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox3">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="description_title_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">&lt;b&gt;Description&lt;/b&gt;</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">True</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkFrame" id="frame2">
+		      <property name="visible">True</property>
+		      <property name="label_xalign">0</property>
+		      <property name="label_yalign">0.5</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+
+		      <child>
+			<widget class="GtkLabel" id="description_label">
+			  <property name="height_request">60</property>
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">Test de description</property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">True</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0</property>
+			  <property name="xpad">6</property>
+			  <property name="ypad">6</property>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1500 @@
+/* vim: set sw=8: */
+
+/*
+ * go-graph-guru.c:  The Graph guru
+ *
+ * Copyright (C) 2000-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <goffice/goffice-config.h>
+#include <goffice/goffice-priv.h>
+
+#include <goffice/graph/gog-guru.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-plot.h>
+#include <goffice/graph/gog-reg-curve.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-plot-engine.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/graph/gog-control-foocanvas.h>
+#include <goffice/gtk/goffice-gtk.h>
+
+#include <glib/gi18n.h>
+
+#include <libxml/parser.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-pixbuf.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtknotebook.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkentry.h>
+#include <gtk/gtktreeselection.h>
+#include <gtk/gtktreeview.h>
+#include <gtk/gtktreestore.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkframe.h>
+#include <gtk/gtkviewport.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkcellrendererpixbuf.h>
+#include <gtk/gtkstock.h>
+#include <gtk/gtkliststore.h>
+#include <string.h>
+
+typedef struct _GraphGuruState		GraphGuruState;
+typedef struct _GraphGuruTypeSelector	GraphGuruTypeSelector;
+
+struct _GraphGuruState {
+	GogGraph    *graph;
+	GogChart    *chart;
+	GogPlot	    *plot;
+
+	GOCmdContext	 *cc;
+	GogDataAllocator *dalloc;
+	GClosure         *register_closure;
+
+	/* GUI accessors */
+	GladeXML    *gui;
+	GtkWidget   *dialog;
+	GtkWidget   *button_cancel;
+	GtkWidget   *button_navigate;
+	GtkWidget   *button_ok;
+	GtkNotebook *steps;
+	GtkWidget   *add_menu, *delete_button;
+
+	FooCanvasItem	  *sample_graph_item;
+
+	GtkContainer  	  *prop_container;
+	GtkTreeSelection  *prop_selection;
+	GtkTreeView	  *prop_view;
+	GtkTreeStore	  *prop_model;
+	GtkTreeIter        prop_iter;
+	GogObject	  *prop_object;
+
+	GraphGuruTypeSelector *type_selector;
+
+	struct {
+		GtkWidget *inc, *dec, *first, *last, *menu;
+	} prec;
+	/* internal state */
+	int current_page, initial_page;
+	gboolean valid;
+	gboolean updating;
+	gboolean fmt_page_initialized;
+	gboolean editing;
+
+	/* hackish reuse of State as a closure */
+	GogObject *search_target, *new_child;
+};
+
+struct _GraphGuruTypeSelector {
+	GladeXML    	*gui;
+	GtkWidget	*canvas;
+	GtkWidget	*sample_button;
+	GtkLabel	*label;
+	GtkTreeView	*list_view;
+	GtkListStore	*model;
+	FooCanvasItem *selector;
+
+	FooCanvasItem *sample_graph_item;
+
+	GraphGuruState *state;
+
+	FooCanvasGroup *graph_group;
+
+	xmlNode const *plots;
+	GogPlotFamily	*current_family;
+	GogPlotType	*current_type;
+	FooCanvasGroup const *current_family_item;
+	FooCanvasItem const  *current_minor_item;
+
+	int max_priority_so_far;
+};
+
+enum {
+	PLOT_FAMILY_TYPE_IMAGE,
+	PLOT_FAMILY_TYPE_NAME,
+	PLOT_FAMILY_TYPE_CANVAS_GROUP,
+	PLOT_FAMILY_NUM_COLUMNS
+};
+enum {
+	PLOT_ATTR_NAME,
+	PLOT_ATTR_OBJECT,
+	PLOT_ATTR_NUM_COLUMNS
+};
+
+#define MINOR_PIXMAP_WIDTH	64
+#define MINOR_PIXMAP_HEIGHT	60
+#define BORDER	5
+
+#define PLOT_TYPE_KEY		"plot_type"
+#define REG_CURVE_TYPE_KEY	"reg_curve_type"
+#define FIRST_MINOR_TYPE	"first_minor_type"
+#define ROLE_KEY		"role"
+#define STATE_KEY		"plot_type"
+
+static GdkPixbuf *
+get_pixbuf (char const *image_file)
+{
+	static GHashTable *cache = NULL;
+	GdkPixbuf *pixbuf;
+
+	if (cache != NULL) {
+		pixbuf = g_hash_table_lookup (cache, image_file);
+		if (pixbuf != NULL)
+			return pixbuf;
+	} else
+		cache = g_hash_table_new_full (g_str_hash, g_str_equal,
+					       NULL, g_object_unref);
+
+	pixbuf = go_pixbuf_new_from_file (image_file);
+	g_hash_table_insert (cache, (gpointer)image_file, pixbuf);
+
+	return pixbuf;
+}
+
+static void
+get_pos (int col, int row, double *x, double *y)
+{
+	*x = (col-1) * (MINOR_PIXMAP_WIDTH + BORDER) + BORDER;
+	*y = (row-1) * (MINOR_PIXMAP_HEIGHT + BORDER) + BORDER;
+}
+
+/*
+ * graph_typeselect_minor :
+ *
+ * @typesel :
+ * @item : A CanvasItem in the selector.
+ *
+ * Moves the typesel::selector overlay above the @item.
+ * Assumes that the item is visible
+ */
+static void
+graph_typeselect_minor (GraphGuruTypeSelector *typesel, FooCanvasItem *item)
+{
+	GraphGuruState *s = typesel->state;
+	GogPlotType *type;
+	double x1, y1, x2, y2;
+	gboolean enable_next_button;
+	GogPlot *plot;
+
+	if (typesel->current_minor_item == item)
+		return;
+
+	type = g_object_get_data (G_OBJECT (item), PLOT_TYPE_KEY);
+
+	g_return_if_fail (type != NULL);
+
+	typesel->current_type = type;
+	typesel->current_minor_item = item;
+	foo_canvas_item_get_bounds (item, &x1, &y1, &x2, &y2);
+	foo_canvas_item_set (FOO_CANVAS_ITEM (typesel->selector),
+		"x1", x1-1., "y1", y1-1.,
+		"x2", x2+1., "y2", y2+1.,
+		NULL);
+	gtk_label_set_text (typesel->label, _(type->description));
+	gtk_widget_set_sensitive (typesel->sample_button, TRUE);
+
+	enable_next_button = (s->plot == NULL);
+
+	plot = gog_plot_new_by_type (type);
+
+	g_return_if_fail (plot != NULL);
+
+	if (s->chart != NULL) {
+		GogObject *obj = GOG_OBJECT (s->chart);
+		gog_object_clear_parent (obj);
+		g_object_unref (obj);
+		s->chart = GOG_CHART (gog_object_add_by_name (
+				GOG_OBJECT (s->graph), "Chart", NULL));
+	}
+
+	gog_object_add_by_name (GOG_OBJECT (s->chart),
+		"Plot", GOG_OBJECT (s->plot = plot));
+	gog_plot_guru_helper (plot);
+#if 0
+	if (s->original_plot != NULL &&
+	    !gog_plot_make_similar (s->plot, s->original_plot))
+		return;
+#endif
+
+	if (s->dalloc != NULL)
+		gog_data_allocator_allocate (s->dalloc, s->plot);
+
+	if (s->current_page == 0 && enable_next_button)
+		gtk_widget_set_sensitive (s->button_navigate, TRUE);
+}
+
+static gboolean
+graph_typeselect_minor_x_y (GraphGuruTypeSelector *typesel,
+			    double x, double y)
+{
+	FooCanvasItem *item = foo_canvas_get_item_at (
+		FOO_CANVAS (typesel->canvas), x, y);
+
+	if (item != NULL) {
+		if(item != typesel->selector)
+			graph_typeselect_minor (typesel, item);
+		foo_canvas_item_grab_focus (item);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+cb_key_press_event (G_GNUC_UNUSED GtkWidget *wrapper,
+		    GdkEventKey *event,
+		    GraphGuruTypeSelector *typesel)
+{
+	GtkCornerType corner;
+	int col, row;
+	double x, y;
+	GogPlotType const *type = g_object_get_data (
+		G_OBJECT (typesel->current_minor_item), PLOT_TYPE_KEY);
+
+	g_return_val_if_fail (type != NULL, FALSE);
+
+	col = type->col;
+	row = type->row;
+
+	switch (event->keyval){
+	case GDK_KP_Left:	case GDK_Left:
+		corner = GTK_CORNER_BOTTOM_RIGHT;
+		--col;
+		break;
+
+	case GDK_KP_Up:	case GDK_Up:
+		corner = GTK_CORNER_BOTTOM_RIGHT;
+		--row;
+		break;
+
+	case GDK_KP_Right:	case GDK_Right:
+		corner = GTK_CORNER_TOP_LEFT;
+		++col;
+		break;
+
+	case GDK_KP_Down:	case GDK_Down:
+		corner = GTK_CORNER_TOP_LEFT;
+		++row;
+		break;
+
+	default:
+		return FALSE;
+	}
+
+	get_pos (col, row, &x, &y);
+	graph_typeselect_minor_x_y (typesel, x, y);
+
+	return TRUE;
+}
+
+static gint
+cb_button_press_event (GtkWidget *widget, GdkEventButton *event,
+		       GraphGuruTypeSelector *typesel)
+{
+	if (event->button == 1) {
+		FooCanvas *c = FOO_CANVAS (widget);
+		double x, y;
+
+		foo_canvas_window_to_world (c, event->x, event->y, &x, &y);
+
+		graph_typeselect_minor_x_y (typesel, x, y);
+	}
+
+	return FALSE;
+}
+
+static void
+cb_selection_changed (GraphGuruTypeSelector *typesel)
+{
+	GtkTreeSelection *selection = gtk_tree_view_get_selection (typesel->list_view);
+	GtkTreeIter  iter;
+	FooCanvasItem *item;
+	FooCanvasGroup *group;
+
+	if (typesel->current_family_item != NULL)
+		foo_canvas_item_hide (FOO_CANVAS_ITEM (typesel->current_family_item));
+	if (!gtk_tree_selection_get_selected (selection, NULL, &iter))
+		return;
+	gtk_tree_model_get (GTK_TREE_MODEL (typesel->model), &iter,
+		PLOT_FAMILY_TYPE_CANVAS_GROUP, &group,
+		-1);
+
+	foo_canvas_item_show (FOO_CANVAS_ITEM (group));
+	typesel->current_family_item = group;
+
+	foo_canvas_item_hide (FOO_CANVAS_ITEM (typesel->selector));
+	item = g_object_get_data (G_OBJECT (group), FIRST_MINOR_TYPE);
+	if (item != NULL)
+		graph_typeselect_minor (typesel, item);
+	foo_canvas_item_show (FOO_CANVAS_ITEM (typesel->selector));
+}
+
+static void
+cb_typesel_sample_plot_resize (FooCanvas *canvas,
+			       GtkAllocation *alloc, GraphGuruTypeSelector *typesel)
+{
+	/* Use 96dpi and 50% zoom. Hard code the zoom because it is not
+	 * active when sample button is not depressed */
+	if (typesel->sample_graph_item != NULL)
+		foo_canvas_item_set (typesel->sample_graph_item,
+			"w", (double)alloc->width,
+			"h", (double)alloc->height,
+			NULL);
+}
+
+static void
+cb_sample_pressed (GraphGuruTypeSelector *typesel)
+{
+	if (typesel->current_family_item == NULL)
+		return;
+
+	if (typesel->sample_graph_item == NULL) {
+		GtkAllocation *size = &GTK_WIDGET (typesel->canvas)->allocation;
+		typesel->sample_graph_item = foo_canvas_item_new (typesel->graph_group,
+			GOG_CONTROL_FOOCANVAS_TYPE,
+			"model", typesel->state->graph,
+			NULL);
+		cb_typesel_sample_plot_resize (FOO_CANVAS (typesel->canvas),
+					       size, typesel);
+
+		g_return_if_fail (typesel->sample_graph_item != NULL);
+	}
+
+	foo_canvas_item_hide (FOO_CANVAS_ITEM (typesel->current_family_item));
+	foo_canvas_item_hide (FOO_CANVAS_ITEM (typesel->selector));
+	foo_canvas_item_show (FOO_CANVAS_ITEM (typesel->graph_group));
+}
+
+static void
+cb_sample_released (GraphGuruTypeSelector *typesel)
+{
+	if (typesel->current_family_item == NULL)
+		return;
+
+	foo_canvas_item_hide (FOO_CANVAS_ITEM (typesel->graph_group));
+	foo_canvas_item_show (FOO_CANVAS_ITEM (typesel->current_family_item));
+	foo_canvas_item_show (FOO_CANVAS_ITEM (typesel->selector));
+}
+
+typedef struct {
+	GraphGuruTypeSelector	*typesel;
+	FooCanvasGroup		*group;
+	FooCanvasItem		*current_item;
+	GogPlotType 		*current_type;
+	int col, row;
+} type_list_closure;
+
+static void
+cb_plot_types_init (char const *id, GogPlotType *type,
+		    type_list_closure *closure)
+{
+	double x1, y1, w, h;
+	FooCanvasItem *item;
+	int col, row;
+	GdkPixbuf *image = get_pixbuf (type->sample_image_file);
+
+	g_return_if_fail (image != NULL);
+
+	col = type->col;
+	row = type->row;
+	get_pos (col, row, &x1, &y1);
+	w = gdk_pixbuf_get_width (image);
+	if (w > MINOR_PIXMAP_WIDTH)
+		w = MINOR_PIXMAP_WIDTH;
+	h = gdk_pixbuf_get_height (image);
+	if (h > MINOR_PIXMAP_HEIGHT)
+		h = MINOR_PIXMAP_HEIGHT;
+
+	item = foo_canvas_item_new (closure->group,
+		foo_canvas_pixbuf_get_type (),
+		"x",	 x1,	"y",	  y1,
+		"width", w,	"height", h,
+		"pixbuf",	image,
+		"point_ignores_alpha", TRUE,
+		NULL);
+	g_object_set_data (G_OBJECT (item), PLOT_TYPE_KEY, (gpointer)type);
+
+	if (closure->current_type == NULL ||
+	    closure->row > row ||
+	    (closure->row == row && closure->col > col)) {
+		closure->current_type = type;
+		closure->current_item = item;
+		closure->col = col;
+		closure->row = row;
+	}
+}
+
+static void
+cb_plot_families_init (char const *id, GogPlotFamily *family,
+		       GraphGuruTypeSelector *typesel)
+{
+	FooCanvasGroup		*group;
+	GtkTreeIter		 iter;
+	type_list_closure	 closure;
+
+	if (g_hash_table_size (family->types) <= 0)
+		return;
+
+	/* Define a canvas group for all the minor types */
+	group = FOO_CANVAS_GROUP (foo_canvas_item_new (
+		foo_canvas_root (FOO_CANVAS (typesel->canvas)),
+		foo_canvas_group_get_type (),
+		"x", 0.0,
+		"y", 0.0,
+		NULL));
+	foo_canvas_item_hide (FOO_CANVAS_ITEM (group));
+
+	gtk_list_store_append (typesel->model, &iter);
+	gtk_list_store_set (typesel->model, &iter,
+		PLOT_FAMILY_TYPE_IMAGE,		get_pixbuf (family->sample_image_file),
+		PLOT_FAMILY_TYPE_NAME,		_(family->name),
+		PLOT_FAMILY_TYPE_CANVAS_GROUP,	group,
+		-1);
+
+	if (typesel->max_priority_so_far < family->priority) {
+		typesel->max_priority_so_far = family->priority;
+		gtk_tree_selection_select_iter (
+			gtk_tree_view_get_selection (typesel->list_view), &iter);
+	}
+
+	closure.typesel = typesel;
+	closure.group	= group;
+	closure.current_type = NULL;
+	closure.current_item = NULL;
+
+	/* Init the list and the canvas group for each family */
+	g_hash_table_foreach (family->types,
+		(GHFunc) cb_plot_types_init, &closure);
+	g_object_set_data (G_OBJECT (group), FIRST_MINOR_TYPE,
+		closure.current_item);
+}
+
+static void
+cb_canvas_realized (GtkLayout *widget)
+{
+	gdk_window_set_back_pixmap (widget->bin_window, NULL, FALSE);
+}
+
+static void
+graph_guru_state_destroy (GraphGuruState *state)
+{
+	g_return_if_fail (state != NULL);
+
+	if (state->graph != NULL) {
+		g_object_unref (state->graph);
+		state->graph = NULL;
+	}
+
+	if (state->gui != NULL) {
+		g_object_unref (state->gui);
+		state->gui = NULL;
+	}
+
+	if (state->register_closure != NULL) {
+		g_closure_unref (state->register_closure);
+		state->register_closure = NULL;
+	}
+
+	state->dialog = NULL;
+	g_free (state);
+}
+
+static void populate_graph_item_list (GogObject *obj, GogObject *select,
+				      GraphGuruState *s, GtkTreeIter *parent,
+				      gboolean insert);
+
+static void
+cb_graph_guru_add_item (GtkWidget *w, GraphGuruState *s)
+{
+	gog_object_add_by_role (s->prop_object, 
+		g_object_get_data (G_OBJECT (w), ROLE_KEY), NULL);
+}
+
+static void
+cb_graph_guru_delete_item (GraphGuruState *s)
+{
+	if (s->prop_object != NULL) {
+		GtkTreeIter iter;
+		GogObject *obj = s->prop_object;
+
+		/* store parent iter */
+		gtk_tree_model_iter_parent (GTK_TREE_MODEL (s->prop_model),
+			&iter, &s->prop_iter);
+		gog_object_clear_parent (obj);
+		g_object_unref (obj);
+		/* then select the parent after we delete */
+		gtk_tree_selection_select_iter (s->prop_selection, &iter);
+	}
+}
+
+static void
+update_prec_menu (GraphGuruState *s, gboolean inc_ok, gboolean dec_ok)
+{
+	gtk_widget_set_sensitive (s->prec.first,    inc_ok);
+	gtk_widget_set_sensitive (s->prec.inc,	    inc_ok);
+	gtk_widget_set_sensitive (s->prec.dec,	    dec_ok);
+	gtk_widget_set_sensitive (s->prec.last,	    dec_ok);
+	gtk_widget_set_sensitive (s->prec.menu,	    dec_ok | inc_ok);
+}
+
+static gboolean
+cb_reordered_find (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+		   GraphGuruState *s)
+{
+	GogObject *obj;
+	gtk_tree_model_get (model, iter, PLOT_ATTR_OBJECT, &obj, -1);
+	if (obj == s->search_target) {
+		gtk_tree_store_move_after (s->prop_model, &s->prop_iter, iter);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+static void
+reorder (GraphGuruState *s, gboolean inc, gboolean goto_max)
+{
+	gboolean inc_ok, dec_ok;
+	GogObject *after;
+
+	g_return_if_fail (s->search_target == NULL);
+
+	after = gog_object_reorder (s->prop_object, inc, goto_max);
+	if (after != NULL) {
+		s->search_target = after;
+		gtk_tree_model_foreach (GTK_TREE_MODEL (s->prop_model),
+			(GtkTreeModelForeachFunc) cb_reordered_find, s);
+		s->search_target = NULL;
+	} else
+		gtk_tree_store_move_after (s->prop_model, &s->prop_iter, NULL);
+
+	gog_object_can_reorder (s->prop_object, &inc_ok, &dec_ok);
+	update_prec_menu (s, inc_ok, dec_ok);
+}
+static void cb_prec_first (GraphGuruState *s) { reorder (s, TRUE,  TRUE); }
+static void cb_prec_inc	  (GraphGuruState *s) { reorder (s, TRUE,  FALSE); }
+static void cb_prec_dec   (GraphGuruState *s) { reorder (s, FALSE, FALSE); }
+static void cb_prec_last  (GraphGuruState *s) { reorder (s, FALSE, TRUE); }
+
+struct type_menu_create {
+	GraphGuruState *state;
+	GtkWidget   *menu;
+	gboolean non_blank;
+};
+
+
+static gint
+cb_cmp_plot_type (GogPlotType const *a, GogPlotType const *b)
+{
+	if (a->row == b->row)
+		return a->col - b->col;
+	return a->row - b->row;
+}
+
+static void
+cb_plot_type_list (char const *id, GogPlotType *type, GSList **list)
+{
+	*list = g_slist_insert_sorted (*list, type,
+		(GCompareFunc) cb_cmp_plot_type);
+}
+
+static void
+cb_graph_guru_add_plot (GtkWidget *w, GraphGuruState *s)
+{
+	GogPlotType *type = g_object_get_data (G_OBJECT (w), PLOT_TYPE_KEY);
+	GogPlot *plot = gog_plot_new_by_type (type);
+	gog_object_add_by_name (GOG_OBJECT (s->prop_object),
+		"Plot", GOG_OBJECT (plot));
+	gog_plot_guru_helper (plot);
+	/* as a convenience add a series to the newly created plot */
+	gog_object_add_by_name (GOG_OBJECT (plot), "Series", NULL);
+}
+
+static void
+cb_plot_family_menu_create (char const *id, GogPlotFamily *family,
+			    struct type_menu_create *closure)
+{
+	GtkWidget *w, *menu;
+	GSList *ptr, *types = NULL;
+	GogPlotType *type;
+	GogAxisSet axis_set;
+
+	if (g_hash_table_size (family->types) <= 0)
+		return;
+
+	axis_set = gog_chart_get_axis_set (GOG_CHART (closure->state->prop_object));
+
+	if (axis_set != GOG_AXIS_SET_UNKNOWN &&
+	    family->axis_set != axis_set)
+		return;
+
+	menu = gtk_image_menu_item_new_with_label (_(family->name));
+	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu),
+		gtk_image_new_from_pixbuf (
+			get_pixbuf (family->sample_image_file)));
+	gtk_menu_shell_append (GTK_MENU_SHELL (closure->menu), menu);
+	closure->non_blank = TRUE;
+
+	w = gtk_menu_new ();
+	gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu), w);
+
+	menu = w;
+	g_hash_table_foreach (family->types,
+		(GHFunc) cb_plot_type_list, &types);
+	for (ptr = types ; ptr != NULL ; ptr = ptr->next) {
+		type = ptr->data;
+		w = gtk_image_menu_item_new_with_label (_(type->name));
+		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (w),
+			gtk_image_new_from_pixbuf (
+				get_pixbuf (type->sample_image_file)));
+		g_object_set_data (G_OBJECT (w), PLOT_TYPE_KEY, type);
+		g_signal_connect (G_OBJECT (w),
+			"activate",
+			G_CALLBACK (cb_graph_guru_add_plot), closure->state);
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu), w);
+	}
+	g_slist_free (types);
+}
+
+/* return TRUE if there are plot types to add */
+static GtkWidget *
+plot_type_menu_create (GraphGuruState *s)
+{
+	struct type_menu_create closure;
+	closure.state = s;
+	closure.menu = gtk_menu_new ();
+	closure.non_blank = FALSE;
+
+	g_hash_table_foreach ((GHashTable *)gog_plot_families (),
+		(GHFunc) cb_plot_family_menu_create, &closure);
+
+	if (closure.non_blank)
+		return closure.menu;
+	gtk_object_destroy (GTK_OBJECT (closure.menu));
+	return NULL;
+}
+
+static void
+cb_graph_guru_add_reg_curve (GtkWidget *w, GraphGuruState *s)
+{
+	GogRegCurveType *type = g_object_get_data (G_OBJECT (w), REG_CURVE_TYPE_KEY);
+	GogRegCurve *curve = gog_reg_curve_new_by_type (type);
+	gog_object_add_by_name (GOG_OBJECT (s->prop_object),
+		"Regression curve", GOG_OBJECT (curve));
+}
+
+static void
+cb_reg_curve_type_menu_create (char const *id, GogRegCurveType *type,
+			    struct type_menu_create *closure)
+{
+	GtkWidget *menu;
+
+	menu = gtk_menu_item_new_with_label (_(type->name));
+	g_object_set_data (G_OBJECT (menu), REG_CURVE_TYPE_KEY, type);
+	g_signal_connect (G_OBJECT (menu),
+		"activate",
+		G_CALLBACK (cb_graph_guru_add_reg_curve), closure->state);
+	gtk_menu_shell_append (GTK_MENU_SHELL (closure->menu), menu);
+	closure->non_blank = TRUE;
+}
+
+static GtkWidget *
+reg_curve_type_menu_create (GraphGuruState *s)
+{
+	struct type_menu_create closure;
+	closure.state = s;
+	closure.menu = gtk_menu_new ();
+	closure.non_blank = FALSE;
+
+	g_hash_table_foreach ((GHashTable *)gog_reg_curve_types (),
+		(GHFunc) cb_reg_curve_type_menu_create, &closure);
+
+	if (closure.non_blank)
+		return closure.menu;
+	gtk_object_destroy (GTK_OBJECT (closure.menu));
+	return NULL;
+}
+
+static void
+cb_attr_tree_selection_change (GraphGuruState *s)
+{
+	gboolean add_ok = FALSE;
+	gboolean delete_ok = FALSE;
+	gboolean inc_ok = FALSE;
+	gboolean dec_ok = FALSE;
+	GtkTreeModel *model;
+	GogObject  *obj = NULL;
+	GtkWidget *w, *notebook;
+	GtkTreePath *path;
+
+	if (gtk_tree_selection_get_selected (s->prop_selection, &model, &s->prop_iter))
+		gtk_tree_model_get (model, &s->prop_iter,
+				    PLOT_ATTR_OBJECT, &obj,
+				    -1);
+
+	if (s->prop_object == obj)
+		return;
+
+	if (obj) {
+		path = gtk_tree_model_get_path (GTK_TREE_MODEL (s->prop_model), &s->prop_iter);
+		gtk_tree_view_scroll_to_cell (s->prop_view, path, NULL, FALSE, 0, 0);
+		gtk_tree_path_free (path);
+	}
+
+	/* remove the old prop page */
+	s->prop_object = obj;
+	w = gtk_bin_get_child (GTK_BIN (s->prop_container));
+	if (w != NULL)
+		gtk_container_remove (s->prop_container, w);
+
+	if (s->prop_object != NULL) {
+		/* Setup up the additions menu */
+		GSList *additions = gog_object_possible_additions (s->prop_object);
+		if (additions != NULL) {
+			GogObjectRole const *role;
+			GSList *ptr;
+			GtkWidget *tmp, *menu;
+
+			menu = gtk_menu_new ();
+			for (ptr = additions ; ptr != NULL ; ptr = ptr->next) {
+				role = ptr->data;
+				/* somewhat hackish, but I do not see a need
+				 * for anything more general yet */
+				if (!strcmp (role->id, "Regression curve")) {
+					GtkWidget *submenu = reg_curve_type_menu_create (s);
+					if (submenu != NULL) {
+						tmp = gtk_menu_item_new_with_label (_(role->id));
+						gtk_menu_item_set_submenu (GTK_MENU_ITEM (tmp), submenu);
+					} else 
+						continue;
+				} else if (strcmp (role->id, "Plot")) {
+					tmp = gtk_menu_item_new_with_label (_(role->id));
+					g_object_set_data (G_OBJECT (tmp), ROLE_KEY,
+						(gpointer)role);
+					g_signal_connect (G_OBJECT (tmp),
+						"activate",
+						G_CALLBACK (cb_graph_guru_add_item), s);
+				} else {
+					GtkWidget *submenu = plot_type_menu_create (s);
+					if (submenu != NULL) {
+						tmp = gtk_menu_item_new_with_label (_(role->id));
+						gtk_menu_item_set_submenu (GTK_MENU_ITEM (tmp), submenu);
+					} else 
+						continue;
+				}
+
+				gtk_menu_shell_append (GTK_MENU_SHELL (menu), tmp);
+
+			}
+			add_ok = (additions != NULL);
+			g_slist_free (additions);
+
+			gtk_menu_item_set_submenu (GTK_MENU_ITEM (s->add_menu), menu);
+			gtk_widget_show_all (s->add_menu);
+		}
+
+		/* if we ever go back to the typeselector be sure to 
+		 * add the plot to the last selected chart */
+		s->chart = (GogChart *)
+			gog_object_get_parent_typed (obj, GOG_CHART_TYPE);
+		s->plot = (GogPlot *)
+			gog_object_get_parent_typed (obj, GOG_PLOT_TYPE);
+
+		if (s->plot == NULL) {
+			if (s->chart == NULL && s->graph != NULL) {
+				GSList *charts = gog_object_get_children (GOG_OBJECT (s->graph),
+					gog_object_find_role_by_name (GOG_OBJECT (s->graph), "Chart"));
+				if (charts != NULL && charts->next == NULL)
+					s->chart = charts->data;
+				g_slist_free (charts);
+			}
+			if (s->chart != NULL) {
+				GSList *plots = gog_object_get_children (GOG_OBJECT (s->chart),
+					gog_object_find_role_by_name (GOG_OBJECT (s->chart), "Plot"));
+				if (plots != NULL && plots->next == NULL)
+					s->plot = plots->data;
+				g_slist_free (plots);
+			}
+		}
+		gtk_widget_set_sensitive (s->button_navigate, s->chart != NULL);
+
+		delete_ok = gog_object_is_deletable (s->prop_object);
+		gog_object_can_reorder (obj, &inc_ok, &dec_ok);
+
+		/* create a prefs page for the graph obj */
+		notebook = gog_object_get_editor (obj, s->dalloc, s->cc);
+		gtk_widget_show (notebook);
+		gtk_container_add (s->prop_container, notebook);
+	}
+
+	gtk_widget_set_sensitive (s->delete_button, delete_ok);
+	gtk_widget_set_sensitive (s->add_menu,	    add_ok);
+	update_prec_menu (s, inc_ok, dec_ok);
+}
+
+static gboolean
+cb_find_renamed_item (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+		      GraphGuruState *s)
+{
+	GogObject *obj;
+
+	gtk_tree_model_get (model, iter, PLOT_ATTR_OBJECT, &obj, -1);
+	if (obj == s->search_target) {
+		s->search_target = NULL;
+		gtk_tree_store_set (s->prop_model, iter,
+			PLOT_ATTR_NAME, gog_object_get_name (obj),
+			-1);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static void
+cb_obj_name_changed (GogObject *obj, GraphGuruState *s)
+{
+	s->search_target = obj;
+	gtk_tree_model_foreach (GTK_TREE_MODEL (s->prop_model),
+		(GtkTreeModelForeachFunc) cb_find_renamed_item, s);
+}
+
+static gboolean
+cb_find_child_added (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+		     GraphGuruState *s)
+{
+	GogObject *obj;
+
+	gtk_tree_model_get (model, iter, PLOT_ATTR_OBJECT, &obj, -1);
+	if (obj == s->search_target) {
+		s->search_target = NULL;
+		populate_graph_item_list (s->new_child, s->new_child, s, iter, TRUE);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static void
+cb_obj_child_added (GogObject *parent, GogObject *child, GraphGuruState *s)
+{
+	s->search_target = parent;
+	s->new_child = child;
+	gtk_tree_model_foreach (GTK_TREE_MODEL (s->prop_model),
+		(GtkTreeModelForeachFunc) cb_find_child_added, s);
+	s->new_child = NULL;
+}
+
+static gboolean
+cb_find_child_removed (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+		       GraphGuruState *s)
+{
+	GogObject *obj;
+	GtkWidget *w;
+
+	gtk_tree_model_get (model, iter, PLOT_ATTR_OBJECT, &obj, -1);
+	if (obj == s->search_target) {
+		s->search_target = NULL;
+		/* remove the tree element and the prop page */
+		gtk_tree_store_remove (s->prop_model, iter);
+		w = gtk_bin_get_child (GTK_BIN (s->prop_container));
+		if (w != NULL)
+			gtk_container_remove (s->prop_container, w);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+static void
+cb_obj_child_removed (GogObject *parent, GogObject *child, GraphGuruState *s)
+{
+	s->search_target = child;
+	gtk_tree_model_foreach (GTK_TREE_MODEL (s->prop_model),
+		(GtkTreeModelForeachFunc) cb_find_child_removed, s);
+
+	if (s->chart == (gpointer)child) {
+		s->chart = NULL;
+		s->plot = NULL;
+		gtk_widget_set_sensitive (s->button_navigate, FALSE);
+	} else if (s->plot == (gpointer)child)
+		s->plot = NULL;
+}
+
+static void
+populate_graph_item_list (GogObject *obj, GogObject *select, GraphGuruState *s,
+			  GtkTreeIter *parent, gboolean insert)
+{
+	GSList *children, *ptr;
+	GtkTreeIter iter;
+	GtkTreePath *path;
+	GClosure *closure;
+
+	if (insert) {
+		GogObject *gparent = gog_object_get_parent (obj);
+		gint i = g_slist_index (gparent->children, obj);
+		if (i > 0) {
+			GtkTreeIter sibling;
+			gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (s->prop_model),
+				&sibling, parent, i-1);
+			gtk_tree_store_insert_after (s->prop_model, &iter,
+				parent, &sibling);
+		} else
+			gtk_tree_store_prepend (s->prop_model, &iter, parent);
+	} else
+		gtk_tree_store_append (s->prop_model, &iter, parent);
+
+	gtk_tree_store_set (s->prop_model, &iter,
+		PLOT_ATTR_OBJECT,	obj,
+		PLOT_ATTR_NAME, gog_object_get_name (obj),
+		-1);
+
+	/* remove the signal handlers when the guru goes away */
+	closure = g_cclosure_new (G_CALLBACK (cb_obj_name_changed), s, NULL);
+	g_object_watch_closure (G_OBJECT (s->prop_view), closure);
+	g_signal_connect_closure (G_OBJECT (obj),
+		"name-changed",
+		closure, FALSE);
+	closure = g_cclosure_new (G_CALLBACK (cb_obj_child_added), s, NULL);
+	g_object_watch_closure (G_OBJECT (s->prop_view), closure);
+	g_signal_connect_closure (G_OBJECT (obj),
+		"child-added",
+		closure, FALSE);
+	closure = g_cclosure_new (G_CALLBACK (cb_obj_child_removed), s, NULL);
+	g_object_watch_closure (G_OBJECT (s->prop_view), closure);
+	g_signal_connect_closure (G_OBJECT (obj),
+		"child-removed",
+		closure, FALSE);
+
+	children = gog_object_get_children (obj, NULL);
+	for (ptr = children ; ptr != NULL ; ptr = ptr->next)
+		populate_graph_item_list (ptr->data, select, s, &iter, FALSE);
+	g_slist_free (children);
+
+	/* ensure that new items are visible */
+	path = gtk_tree_model_get_path (
+		GTK_TREE_MODEL (s->prop_model), &iter);
+	gtk_tree_view_expand_to_path (s->prop_view, path);
+	gtk_tree_path_free (path);
+
+	if (obj == select)
+		/* select after expanding so that we do not lose selection due
+		 * to visibility */
+		gtk_tree_selection_select_iter (s->prop_selection, &iter);
+}
+
+static gboolean
+cb_find_item (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter,
+	      GraphGuruState *s)
+{
+	GogObject *obj;
+
+	gtk_tree_model_get (model, iter, PLOT_ATTR_OBJECT, &obj, -1);
+	if (obj == s->search_target) {
+		gtk_tree_selection_select_iter (s->prop_selection, iter);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static gint
+cb_canvas_select_item (FooCanvas *canvas, GdkEventButton *event,
+		       GraphGuruState *s)
+{
+	GogView *view;
+	GogRenderer *rend;
+	double x, y, item_x, item_y;
+
+	g_return_val_if_fail (FOO_IS_CANVAS (canvas), FALSE);
+
+	if (canvas->current_item == NULL)
+		return FALSE;
+
+	g_object_get (G_OBJECT (s->sample_graph_item), "renderer", &rend, NULL);
+	g_object_get (G_OBJECT (rend), "view", &view, NULL);
+	g_object_unref (G_OBJECT (rend));
+	foo_canvas_window_to_world (canvas, event->x, event->y, &x, &y);
+	g_object_get (G_OBJECT(s->sample_graph_item), "x", &item_x, "y", &item_y, NULL);
+	gog_view_info_at_point (view,
+		(x - item_x) * canvas->pixels_per_unit,	
+		(y - item_y) * canvas->pixels_per_unit,
+		s->prop_object, &s->search_target, NULL);
+	g_object_unref (G_OBJECT (view));
+	if (s->search_target == NULL)
+		return FALSE;
+
+	gtk_tree_model_foreach (GTK_TREE_MODEL (s->prop_model),
+		(GtkTreeModelForeachFunc) cb_find_item, s);
+	s->search_target = NULL;
+	return TRUE;
+}
+
+static void
+cb_sample_plot_resize (FooCanvas *canvas,
+		       GtkAllocation *alloc, GraphGuruState *state)
+{
+	double aspect_ratio;
+	double width, height, x, y;
+
+	gog_graph_get_size (state->graph, &width, &height);
+       	aspect_ratio = width / height;
+
+	if (alloc->width > alloc->height * aspect_ratio) {
+		height = alloc->height;
+		width = height * aspect_ratio;
+		x = (alloc->width - width) / 2.0;
+		y = 0.0;
+	} else {
+		width = alloc->width;
+		height = width / aspect_ratio;
+		x = 0.0;
+		y = (alloc->height - height) / 2.0;
+	}
+	
+	foo_canvas_item_set (state->sample_graph_item,
+		"w", width,
+		"h", height,
+		"x", x,
+		"y", y,
+		NULL);
+}
+
+static void
+graph_guru_init_format_page (GraphGuruState *s)
+{
+	GtkWidget *w;
+	GtkTreeViewColumn *column;
+
+	if (s->fmt_page_initialized)
+		return;
+	s->fmt_page_initialized = TRUE;
+	s->add_menu	 = glade_xml_get_widget (s->gui, "add_menu");
+	s->delete_button = glade_xml_get_widget (s->gui, "delete");
+	s->prec.menu  = glade_xml_get_widget (s->gui, "precedence_menu");
+	s->prec.inc   = glade_xml_get_widget (s->gui, "inc_precedence");
+	s->prec.dec   = glade_xml_get_widget (s->gui, "dec_precedence");
+	s->prec.first = glade_xml_get_widget (s->gui, "first_precedence");
+	s->prec.last  = glade_xml_get_widget (s->gui, "last_precedence");
+
+	g_signal_connect_swapped (G_OBJECT (s->delete_button),
+		"clicked",
+		G_CALLBACK (cb_graph_guru_delete_item), s);
+	g_signal_connect_swapped (G_OBJECT (s->prec.first),
+		"activate",
+		G_CALLBACK (cb_prec_first), s);
+	g_signal_connect_swapped (G_OBJECT (s->prec.inc),
+		"activate",
+		G_CALLBACK (cb_prec_inc), s);
+	g_signal_connect_swapped (G_OBJECT (s->prec.dec),
+		"activate",
+		G_CALLBACK (cb_prec_dec), s);
+	g_signal_connect_swapped (G_OBJECT (s->prec.last),
+		"activate",
+		G_CALLBACK (cb_prec_last), s);
+
+	/* Load up the sample view and make it fill the entire canvas */
+	w = glade_xml_get_widget (s->gui, "sample_canvas");
+	s->sample_graph_item = foo_canvas_item_new (
+		foo_canvas_root (FOO_CANVAS (w)), GOG_CONTROL_FOOCANVAS_TYPE,
+		"model", s->graph,
+		NULL);
+	cb_sample_plot_resize (FOO_CANVAS (w), &w->allocation, s);
+	g_signal_connect (G_OBJECT (w),
+		"size_allocate",
+		G_CALLBACK (cb_sample_plot_resize), s);
+	g_signal_connect_after (G_OBJECT (w),
+		"button_press_event",
+		G_CALLBACK (cb_canvas_select_item), s);
+	gtk_widget_show (w);
+
+	w = glade_xml_get_widget (s->gui, "prop_alignment");
+	s->prop_container = GTK_CONTAINER (w);
+	s->prop_model = gtk_tree_store_new (PLOT_ATTR_NUM_COLUMNS,
+				    G_TYPE_STRING, G_TYPE_POINTER);
+	s->prop_view = GTK_TREE_VIEW (gtk_tree_view_new_with_model (
+			GTK_TREE_MODEL (s->prop_model)));
+	s->prop_selection = gtk_tree_view_get_selection (s->prop_view);
+	gtk_tree_selection_set_mode (s->prop_selection, GTK_SELECTION_BROWSE);
+	g_signal_connect_swapped (s->prop_selection,
+		"changed",
+		G_CALLBACK (cb_attr_tree_selection_change), s);
+
+	column = gtk_tree_view_column_new_with_attributes (_("Name"),
+		gtk_cell_renderer_text_new (),
+		"text", PLOT_ATTR_NAME, NULL);
+	gtk_tree_view_append_column (s->prop_view, column);
+
+	gtk_tree_view_set_headers_visible (s->prop_view, FALSE);
+
+	gtk_tree_store_clear (s->prop_model);
+	populate_graph_item_list (GOG_OBJECT (s->graph), GOG_OBJECT (s->graph),
+				  s, NULL, FALSE);
+	gtk_tree_view_expand_all (s->prop_view);
+
+	w = glade_xml_get_widget (s->gui, "attr_window");
+	gtk_container_add (GTK_CONTAINER (w), GTK_WIDGET (s->prop_view));
+	gtk_widget_show_all (w);
+}
+
+static void
+graph_guru_set_page (GraphGuruState *s, int page)
+{
+	char *name;
+
+	if (s->current_page == page)
+		return;
+
+	switch (page) {
+	case 0: name = _("Step 1 of 2: Select Chart Type");
+		gtk_widget_set_sensitive (s->button_navigate, s->plot != NULL);
+		gtk_button_set_label (GTK_BUTTON (s->button_navigate),
+				      GTK_STOCK_GO_FORWARD);
+		break;
+
+	case 1:
+		if (s->initial_page == 0) {
+			name = _("Step 2 of 2: Customize Chart");
+			gtk_widget_set_sensitive (s->button_navigate, s->chart != NULL);
+			gtk_button_set_label (GTK_BUTTON (s->button_navigate),
+					      GTK_STOCK_GO_BACK);
+		} else {
+			name = _("Customize Chart");
+			gtk_widget_hide	(s->button_navigate);
+		}
+		graph_guru_init_format_page (s);
+		break;
+
+	default:
+		g_warning ("Invalid Chart Guru page");
+		return;
+	}
+
+	s->current_page = page;
+	gtk_notebook_set_current_page (s->steps, page - s->initial_page);
+	gtk_window_set_title (GTK_WINDOW (s->dialog), name);
+}
+
+static void
+cb_graph_guru_clicked (GtkWidget *button, GraphGuruState *s)
+{
+	if (s->dialog == NULL)
+		return;
+
+	if (button == s->button_navigate) {
+		graph_guru_set_page (s, (s->current_page + 1) % 2);
+		return;
+	} else if (button == s->button_ok &&
+		   s->register_closure != NULL && s->graph != NULL) {
+		/* Invoking closure */
+		GValue instance_and_params[2];
+		gpointer data = s->register_closure->is_invalid ? 
+			NULL : s->register_closure->data;
+		
+		instance_and_params[0].g_type = 0;
+		g_value_init (&instance_and_params[0], GOG_GRAPH_TYPE);
+		g_value_set_instance (&instance_and_params[0], s->graph);
+
+		instance_and_params[1].g_type = 0;
+		g_value_init (&instance_and_params[1], G_TYPE_POINTER);
+		g_value_set_pointer (&instance_and_params[1], data);
+
+		g_closure_set_marshal (s->register_closure,
+				       g_cclosure_marshal_VOID__POINTER);
+
+		g_closure_invoke (s->register_closure,
+				  NULL,
+				  2,
+				  instance_and_params,
+				  NULL);
+		g_value_unset (instance_and_params + 0);
+	}
+
+	gtk_widget_destroy (GTK_WIDGET (s->dialog));
+}
+
+static GtkWidget *
+graph_guru_init_button (GraphGuruState *s, char const *widget_name)
+{
+	GtkWidget *button = glade_xml_get_widget (s->gui, widget_name);
+	g_signal_connect (G_OBJECT (button),
+		"clicked",
+		G_CALLBACK (cb_graph_guru_clicked), s);
+	return button;
+}
+
+static GtkWidget *
+graph_guru_init_ok_button (GraphGuruState *s)
+{
+	GtkButton *button = GTK_BUTTON (glade_xml_get_widget 
+				       (s->gui, "button_ok"));
+	
+	if (s->editing) {
+		gtk_button_set_label (button, GTK_STOCK_APPLY);
+		gtk_button_set_use_stock (button, TRUE);
+	} else {
+		gtk_button_set_use_stock (button, FALSE);
+		gtk_button_set_use_underline (button, TRUE);
+		gtk_button_set_label (button, _("_Insert"));
+	}
+	g_signal_connect (G_OBJECT (button),
+		"clicked",
+		G_CALLBACK (cb_graph_guru_clicked), s);
+	return GTK_WIDGET (button);
+}
+
+static void
+typesel_set_selection_color (GraphGuruTypeSelector *typesel)
+{
+	GtkWidget *w = gtk_entry_new ();
+	GdkColor  *color = &w->style->base [GTK_WIDGET_HAS_FOCUS (typesel->canvas)
+		? GTK_STATE_SELECTED : GTK_STATE_ACTIVE];
+	guint32    select_color = 0;
+
+	select_color |= ((color->red >> 8) & 0xff)   << 24;
+	select_color |= ((color->green >> 8) & 0xff) << 16;
+	select_color |= ((color->blue >> 8) & 0xff)  << 8;
+	select_color |= 0x40; /* alpha of 25% */
+	foo_canvas_item_set (typesel->selector,
+		"fill_color_rgba",	select_color,
+		NULL);
+	gtk_object_destroy (GTK_OBJECT (w));
+}
+
+static GtkWidget *
+graph_guru_type_selector_new (GraphGuruState *s)
+{
+	GtkTreeSelection *selection;
+	GraphGuruTypeSelector *typesel;
+	GtkWidget *selector;
+	GladeXML *gui;
+
+	gui = go_libglade_new ("gog-guru-type-selector.glade", "type_selector", NULL, s->cc);
+
+	typesel = g_new0 (GraphGuruTypeSelector, 1);
+	typesel->state = s;
+	typesel->current_family_item = NULL;
+	typesel->current_minor_item = NULL;
+	typesel->current_type = NULL;
+	typesel->sample_graph_item = NULL;
+	typesel->max_priority_so_far = -1;
+
+	selector = glade_xml_get_widget (gui, "type_selector");
+
+	/* List of family types */
+	typesel->model = gtk_list_store_new (PLOT_FAMILY_NUM_COLUMNS,
+					     GDK_TYPE_PIXBUF,
+					     G_TYPE_STRING,
+					     G_TYPE_POINTER);
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (typesel->model),
+		PLOT_FAMILY_TYPE_NAME, GTK_SORT_ASCENDING);
+
+	typesel->list_view = GTK_TREE_VIEW (glade_xml_get_widget (gui, "type_treeview"));
+	gtk_tree_view_set_model (typesel->list_view, GTK_TREE_MODEL (typesel->model));
+	gtk_tree_view_append_column (typesel->list_view,
+		gtk_tree_view_column_new_with_attributes ("",
+			gtk_cell_renderer_pixbuf_new (),
+			"pixbuf", PLOT_FAMILY_TYPE_IMAGE,
+			NULL));
+	gtk_tree_view_append_column (typesel->list_view,
+		gtk_tree_view_column_new_with_attributes (_("_Plot Type"),
+			gtk_cell_renderer_text_new (),
+			"text", PLOT_FAMILY_TYPE_NAME,
+			NULL));
+
+
+	/* Setup an canvas to display the sample image & the sample plot. */
+	typesel->canvas = foo_canvas_new ();
+	typesel->graph_group = FOO_CANVAS_GROUP (foo_canvas_item_new (
+		foo_canvas_root (FOO_CANVAS (typesel->canvas)),
+		foo_canvas_group_get_type (),
+		"x", 0.0,
+		"y", 0.0,
+		NULL));
+	g_object_connect (typesel->canvas,
+		"signal::realize", G_CALLBACK (cb_canvas_realized), typesel,
+		"signal::size_allocate", G_CALLBACK (cb_typesel_sample_plot_resize), typesel,
+		"signal_after::key_press_event", G_CALLBACK (cb_key_press_event), typesel,
+		"signal::button_press_event", G_CALLBACK (cb_button_press_event), typesel,
+		"swapped_signal::focus_in_event", G_CALLBACK (typesel_set_selection_color), typesel,
+		"swapped_signal::focus_out_event", G_CALLBACK (typesel_set_selection_color), typesel,
+		NULL);
+	gtk_widget_set_size_request (typesel->canvas,
+		MINOR_PIXMAP_WIDTH*3 + BORDER*5,
+		MINOR_PIXMAP_HEIGHT*3 + BORDER*5);
+	foo_canvas_scroll_to (FOO_CANVAS (typesel->canvas), 0, 0);
+	gtk_container_add (GTK_CONTAINER (glade_xml_get_widget (gui, "canvas_container")), 
+			   typesel->canvas);
+
+	/* Init the list and the canvas group for each family */
+	g_hash_table_foreach ((GHashTable *)gog_plot_families (),
+		(GHFunc) cb_plot_families_init, typesel);
+
+	selection = gtk_tree_view_get_selection (typesel->list_view);
+	gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
+	g_signal_connect_swapped (selection,
+		"changed",
+		G_CALLBACK (cb_selection_changed), typesel);
+
+	/* The alpha blended selection box */
+	typesel->selector = foo_canvas_item_new (
+		foo_canvas_root (FOO_CANVAS (typesel->canvas)),
+		foo_canvas_rect_get_type (),
+		"outline_color_rgba",	0x000000ff,	/* black */
+		"width_pixels", 1,
+		NULL);
+	typesel_set_selection_color (typesel);
+
+	/* Setup the description label */
+	typesel->label = GTK_LABEL (glade_xml_get_widget (gui, "description_label"));
+
+	/* Set up sample button */
+	typesel->sample_button = glade_xml_get_widget (gui, "sample_button");
+	g_signal_connect_swapped (G_OBJECT (typesel->sample_button),
+		"pressed",
+		G_CALLBACK (cb_sample_pressed), typesel);
+	g_signal_connect_swapped (G_OBJECT (typesel->sample_button),
+		"released",
+		G_CALLBACK (cb_sample_released), typesel);
+
+	g_object_set_data_full (G_OBJECT (selector),
+		"state", typesel, (GDestroyNotify) g_free);
+
+	g_object_unref (G_OBJECT (gui));
+
+	return selector;
+}
+
+static gboolean
+graph_guru_init (GraphGuruState *s)
+{
+	s->gui = go_libglade_new ("gog-guru.glade", NULL, NULL, s->cc);
+        if (s->gui == NULL)
+                return TRUE;
+
+	s->dialog = glade_xml_get_widget (s->gui, "GraphGuru");
+	s->steps  = GTK_NOTEBOOK (glade_xml_get_widget (s->gui, "notebook"));
+
+	/* Buttons */
+	s->button_cancel   = graph_guru_init_button (s, "button_cancel");
+	s->button_navigate = graph_guru_init_button (s, "button_navigate");
+	s->button_ok	   = graph_guru_init_ok_button (s);
+
+#warning FIXME move the docs down to libgoffice
+	go_gtk_help_button_init	(glade_xml_get_widget (s->gui, "help_button"),
+				 go_sys_data_dir (), "gnumeric",
+				 "sect-graphics-plots");
+
+	return FALSE;
+}
+
+/**
+ * dialog_graph_guru
+ * @wb : The workbook to use as a parent window.
+ * @graph : the graph to edit
+ * @page : the page to start on.
+ *
+ * Pop up a graph guru.
+ */
+GtkWidget *
+gog_guru (GogGraph *graph, GogDataAllocator *dalloc,
+	  GOCmdContext *cc, GtkWindow *toplevel,
+	  GClosure *closure)
+{
+	int page = (graph != NULL) ? 1 : 0;
+	GraphGuruState *state;
+
+	state = g_new0 (GraphGuruState, 1);
+	state->valid	= FALSE;
+	state->updating = FALSE;
+	state->fmt_page_initialized = FALSE;
+	state->editing  = (graph != NULL);
+	state->gui	= NULL;
+	state->cc       = cc;
+	state->dalloc   = dalloc;
+	state->current_page	= -1;
+	state->register_closure	= closure;
+	g_closure_ref (closure);
+
+	if (graph != NULL) {
+		g_return_val_if_fail (IS_GOG_GRAPH (graph), NULL);
+
+		state->graph = gog_graph_dup (graph);
+		state->chart = NULL;
+		state->plot  = NULL;
+	} else {
+		state->plot = NULL;
+		state->graph = g_object_new (GOG_GRAPH_TYPE, NULL);
+		state->chart = GOG_CHART (gog_object_add_by_name (
+				GOG_OBJECT (state->graph), "Chart", NULL));
+	}
+
+	if (state->graph == NULL || graph_guru_init (state)) {
+		graph_guru_state_destroy (state);
+		return NULL;
+	}
+
+	/* Ok everything is hooked up. Let-er rip */
+	state->valid = TRUE;
+
+	state->initial_page = page;
+	if (page == 0) {
+		GtkWidget *w = graph_guru_type_selector_new (state);
+		gtk_notebook_prepend_page (state->steps, w, NULL);
+		gtk_widget_show_all (w);
+	}
+
+	graph_guru_set_page (state, page);
+
+	/* a candidate for merging into attach guru */
+	g_object_set_data_full (G_OBJECT (state->dialog),
+		"state", state, (GDestroyNotify) graph_guru_state_destroy);
+	go_gtk_nonmodal_dialog (toplevel, GTK_WINDOW (state->dialog));
+	gtk_widget_show (GTK_WIDGET (state->dialog));
+
+	return state->dialog;
+}
+
+#if 0
+gtk_tree_sortable_set_sort_func (store, column, compare_rows,
+				 GUINT_TO_POINTER (column), NULL);
+
+for each column of your database table.
+
+int
+compare_rows (GtkTreeModel *model,
+	      GtkTreeIter  *a,
+	      GtkTreeIter  *b,
+	      gpointer      user_data)
+{
+	int column = GPOINTER_TO_UINT (user_data);
+	MyRow *row_a, row_b;
+
+	gtk_tree_model_get (model, DATA_COLUMN, a, &row_a, -1);
+	gtk_tree_model_get (model, DATA_COLUMN, b, &row_b, -1);
+
+	return compare_cells (row_a->cells[column], row_b->cells[column]);
+}
+
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,426 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkDialog" id="GraphGuru">
+  <property name="border_width">6</property>
+  <property name="title" translatable="yes">GNOME Office Graph</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_MOUSE</property>
+  <property name="modal">False</property>
+  <property name="default_width">530</property>
+  <property name="default_height">625</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="has_separator">False</property>
+
+  <child internal-child="vbox">
+    <widget class="GtkVBox" id="dialog-vbox4">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child internal-child="action_area">
+	<widget class="GtkHButtonBox" id="dialog-action_area4">
+	  <property name="visible">True</property>
+	  <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+	  <child>
+	    <widget class="GtkButton" id="help_button">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-help</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-11</property>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="button_cancel">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-cancel</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-6</property>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="button_navigate">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-go-forward</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">2</property>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkButton" id="button_ok">
+	      <property name="visible">True</property>
+	      <property name="can_default">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label">gtk-ok</property>
+	      <property name="use_stock">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="response_id">-5</property>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkNotebook" id="notebook">
+	  <property name="visible">True</property>
+	  <property name="show_tabs">False</property>
+	  <property name="show_border">False</property>
+	  <property name="tab_pos">GTK_POS_TOP</property>
+	  <property name="scrollable">False</property>
+	  <property name="enable_popup">False</property>
+
+	  <child>
+	    <widget class="GtkVPaned" id="v_fmt_pane">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="position">1</property>
+
+	      <child>
+		<widget class="GtkHPaned" id="h_fmt_pane">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="position">1</property>
+
+		  <child>
+		    <widget class="GtkAlignment" id="alignment1">
+		      <property name="visible">True</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xscale">1</property>
+		      <property name="yscale">1</property>
+		      <property name="top_padding">6</property>
+		      <property name="bottom_padding">6</property>
+		      <property name="left_padding">6</property>
+		      <property name="right_padding">6</property>
+
+		      <child>
+			<widget class="GtkVBox" id="vbox1">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">6</property>
+
+			  <child>
+			    <widget class="GtkScrolledWindow" id="attr_window">
+			      <property name="height_request">150</property>
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+			      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+			      <property name="shadow_type">GTK_SHADOW_IN</property>
+			      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">True</property>
+			      <property name="fill">True</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkHBox" id="hbox1">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">0</property>
+
+			      <child>
+				<widget class="GtkMenuBar" id="add_menubar">
+				  <property name="visible">True</property>
+
+				  <child>
+				    <widget class="GtkImageMenuItem" id="add_menu">
+				      <property name="visible">True</property>
+				      <property name="label">gtk-add</property>
+				      <property name="use_stock">True</property>
+				    </widget>
+				  </child>
+
+				  <child>
+				    <widget class="GtkImageMenuItem" id="precedence_menu">
+				      <property name="visible">True</property>
+				      <property name="label" translatable="yes">_Order</property>
+				      <property name="use_underline">True</property>
+
+				      <child internal-child="image">
+					<widget class="GtkImage" id="image71">
+					  <property name="visible">True</property>
+					  <property name="stock">gtk-sort-ascending</property>
+					  <property name="icon_size">1</property>
+					  <property name="xalign">0.5</property>
+					  <property name="yalign">0.5</property>
+					  <property name="xpad">0</property>
+					  <property name="ypad">0</property>
+					</widget>
+				      </child>
+
+				      <child>
+					<widget class="GtkMenu" id="precedence_menu_menu">
+
+					  <child>
+					    <widget class="GtkImageMenuItem" id="first_precedence">
+					      <property name="visible">True</property>
+					      <property name="label" translatable="yes">Push to _back</property>
+					      <property name="use_underline">True</property>
+
+					      <child internal-child="image">
+						<widget class="GtkImage" id="image72">
+						  <property name="visible">True</property>
+						  <property name="stock">gtk-goto-top</property>
+						  <property name="icon_size">1</property>
+						  <property name="xalign">0.5</property>
+						  <property name="yalign">0.5</property>
+						  <property name="xpad">0</property>
+						  <property name="ypad">0</property>
+						</widget>
+					      </child>
+					    </widget>
+					  </child>
+
+					  <child>
+					    <widget class="GtkImageMenuItem" id="inc_precedence">
+					      <property name="visible">True</property>
+					      <property name="label" translatable="yes">Push b_ackward</property>
+					      <property name="use_underline">True</property>
+
+					      <child internal-child="image">
+						<widget class="GtkImage" id="image73">
+						  <property name="visible">True</property>
+						  <property name="stock">gtk-go-up</property>
+						  <property name="icon_size">1</property>
+						  <property name="xalign">0.5</property>
+						  <property name="yalign">0.5</property>
+						  <property name="xpad">0</property>
+						  <property name="ypad">0</property>
+						</widget>
+					      </child>
+					    </widget>
+					  </child>
+
+					  <child>
+					    <widget class="GtkImageMenuItem" id="dec_precedence">
+					      <property name="visible">True</property>
+					      <property name="label" translatable="yes">Pull f_orward</property>
+					      <property name="use_underline">True</property>
+
+					      <child internal-child="image">
+						<widget class="GtkImage" id="image74">
+						  <property name="visible">True</property>
+						  <property name="stock">gtk-go-down</property>
+						  <property name="icon_size">1</property>
+						  <property name="xalign">0.5</property>
+						  <property name="yalign">0.5</property>
+						  <property name="xpad">0</property>
+						  <property name="ypad">0</property>
+						</widget>
+					      </child>
+					    </widget>
+					  </child>
+
+					  <child>
+					    <widget class="GtkImageMenuItem" id="last_precedence">
+					      <property name="visible">True</property>
+					      <property name="label" translatable="yes">Pull to _front</property>
+					      <property name="use_underline">True</property>
+
+					      <child internal-child="image">
+						<widget class="GtkImage" id="image75">
+						  <property name="visible">True</property>
+						  <property name="stock">gtk-goto-bottom</property>
+						  <property name="icon_size">1</property>
+						  <property name="xalign">0.5</property>
+						  <property name="yalign">0.5</property>
+						  <property name="xpad">0</property>
+						  <property name="ypad">0</property>
+						</widget>
+					      </child>
+					    </widget>
+					  </child>
+					</widget>
+				      </child>
+				    </widget>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkButton" id="delete">
+				  <property name="visible">True</property>
+				  <property name="can_focus">True</property>
+				  <property name="label">gtk-remove</property>
+				  <property name="use_stock">True</property>
+				  <property name="relief">GTK_RELIEF_NONE</property>
+				  <property name="focus_on_click">False</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="shrink">False</property>
+		      <property name="resize">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkAlignment" id="alignment2">
+		      <property name="width_request">200</property>
+		      <property name="visible">True</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xscale">1</property>
+		      <property name="yscale">1</property>
+		      <property name="top_padding">6</property>
+		      <property name="bottom_padding">6</property>
+		      <property name="left_padding">6</property>
+		      <property name="right_padding">6</property>
+
+		      <child>
+			<widget class="Custom" id="sample_canvas">
+			  <property name="visible">True</property>
+			  <property name="creation_function">foo_canvas_new</property>
+			  <property name="int1">0</property>
+			  <property name="int2">0</property>
+			  <property name="last_modification_time">Thu, 03 Apr 2003 17:05:22 GMT</property>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="shrink">False</property>
+		      <property name="resize">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="shrink">False</property>
+		  <property name="resize">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="prop_alignment">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">6</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">6</property>
+		  <property name="right_padding">6</property>
+
+		  <child>
+		    <placeholder/>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="shrink">False</property>
+		  <property name="resize">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="tab_expand">False</property>
+	      <property name="tab_fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label1">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes"></property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <placeholder/>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label2">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes"></property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">tab</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-guru.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-guru.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_GURU_H
+#define GOG_GURU_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/app/goffice-app.h>
+#include <gtk/gtkwindow.h>
+
+G_BEGIN_DECLS
+
+/* This interface _will_ change */
+/* The callback in the closure should match the following prototype: */
+/* typedef void (*GogGuruRegister) (GogGraph *graph, gpointer user); */
+
+GtkWidget *gog_guru (GogGraph *graph, GogDataAllocator *dalloc,
+		     GOCmdContext *cc, GtkWindow *toplevel,
+		     GClosure *closure);
+
+G_END_DECLS
+
+#endif /* GOG_GURU_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,501 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-label.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ * Copyright (C) 2005      Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/graph/gog-label.h>
+#include <goffice/graph/gog-outlined-object.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-reg-curve.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/data/go-data.h>
+#include <goffice/gtk/goffice-gtk.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtknotebook.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtktogglebutton.h>
+
+static GType gog_text_view_get_type (void);
+
+enum {
+	TEXT_PROP_0,
+	TEXT_PROP_ALLOW_MARKUP
+};
+
+typedef struct {
+	GogOutlinedObject base;
+
+	gboolean	  allow_markup;
+} GogText;
+
+typedef struct {
+	GogOutlinedObjectClass base;
+	
+	char *(*get_str)    (GogText *text);
+} GogTextClass;
+
+#define GOG_TEXT_TYPE		(gog_text_get_type ())
+#define GOG_TEXT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_TEXT_TYPE, GogText))
+#define IS_GOG_TEXT(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_TEXT_TYPE))
+#define GOG_TEXT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_TEXT_TYPE, GogTextClass))
+
+static GType gog_text_get_type (void);
+
+static GObjectClass *text_parent_klass;
+
+static void
+gog_text_set_property (GObject *obj, guint param_id,
+		       GValue const *value, GParamSpec *pspec)
+{
+	GogText *text = GOG_TEXT (obj);
+
+	switch (param_id) {
+	case TEXT_PROP_ALLOW_MARKUP :
+		text->allow_markup = g_value_get_boolean (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_text_get_property (GObject *obj, guint param_id,
+			     GValue *value, GParamSpec *pspec)
+{
+	GogText *text = GOG_TEXT (obj);
+
+	switch (param_id) {
+	case TEXT_PROP_ALLOW_MARKUP :
+		g_value_set_boolean (value, text->allow_markup);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_text_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogObject *parent;
+
+	style->interesting_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL | 
+		GOG_STYLE_FONT | GOG_STYLE_TEXT_LAYOUT;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+	
+	/* Kludge for default Y axis title orientation. This should have be done
+	 * in GogTheme, but it's not possible without breaking graph persistence
+	 * compatibility */
+	parent = gog_object_get_parent (GOG_OBJECT (gso));
+	if (IS_GOG_AXIS (parent) &&
+	    gog_axis_get_atype (GOG_AXIS (parent)) == GOG_AXIS_Y &&
+	    style->text_layout.auto_angle) 
+		style->text_layout.angle = 90.0;
+}
+
+static void
+gog_text_class_init (GogTextClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+
+	text_parent_klass = g_type_class_peek_parent (klass);
+	gobject_klass->set_property = gog_text_set_property;
+	gobject_klass->get_property = gog_text_get_property;
+
+	g_object_class_install_property (gobject_klass, TEXT_PROP_ALLOW_MARKUP,
+		g_param_spec_boolean ("allow-markup", "Allow markup",
+			"Support basic html-ish markup",
+			TRUE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+
+	gog_klass->view_type		= gog_text_view_get_type ();
+	style_klass->init_style 	= gog_text_init_style;
+}
+
+static void
+gog_text_init (GogText *text)
+{
+	text->allow_markup = FALSE;
+}
+
+static char *
+gog_text_get_str (GogText *text)
+{
+	GogTextClass *klass;
+	
+	g_return_val_if_fail (GOG_TEXT (text) != NULL, NULL);
+	
+       	klass = GOG_TEXT_GET_CLASS (text);
+
+	if (klass->get_str != NULL)
+		return (*klass->get_str) (text);
+
+	return NULL;
+}
+
+GSF_CLASS_ABSTRACT (GogText, gog_text,
+		    gog_text_class_init, gog_text_init,
+		    GOG_OUTLINED_OBJECT_TYPE);
+
+/************************************************************************/
+
+struct _GogLabel {
+	GogText base;
+
+	GogDatasetElement text;
+};
+
+typedef GogTextClass GogLabelClass;
+
+static GObjectClass *label_parent_klass;
+
+static void
+gog_label_populate_editor (GogObject *gobj, 
+			   GogEditor *editor, 
+			   GogDataAllocator *dalloc, 
+			   GOCmdContext *cc)
+{
+	static guint label_pref_page = 0;
+	GtkWidget *hbox = gtk_hbox_new (FALSE, 12);
+	GtkWidget *alignment = gtk_alignment_new (0, 0, 1, 0);
+
+	gtk_container_set_border_width (GTK_CONTAINER (alignment), 12);
+	gtk_box_pack_start (GTK_BOX (hbox), 
+		gtk_label_new_with_mnemonic (_("_Text:")), FALSE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (hbox), 
+		gog_data_allocator_editor (dalloc, GOG_DATASET (gobj), 0, GOG_DATA_SCALAR),
+		TRUE, TRUE, 0);
+	gtk_container_add (GTK_CONTAINER (alignment), hbox);
+	gtk_widget_show_all (alignment);
+
+	gog_editor_add_page (editor, alignment, _("Data"));
+	
+	(GOG_OBJECT_CLASS(label_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+	gog_editor_set_store_page (editor, &label_pref_page);
+}
+
+static char *
+gog_label_get_str (GogText *text)
+{
+	GogLabel *label = GOG_LABEL (text);
+	
+	g_return_val_if_fail (GOG_LABEL (label) != NULL, NULL);
+
+	if (label->text.data != NULL)
+		return g_strdup (go_data_scalar_get_str (GO_DATA_SCALAR (label->text.data)));
+	
+	return NULL;
+}
+
+static void
+gog_label_finalize (GObject *obj)
+{
+	gog_dataset_finalize (GOG_DATASET (obj));
+	(*label_parent_klass->finalize) (obj);
+}
+
+static void
+gog_label_class_init (GogLabelClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+	GogTextClass *got_klass = (GogTextClass *) klass; 
+
+	label_parent_klass = g_type_class_peek_parent (klass);
+	gobject_klass->finalize	   = gog_label_finalize;
+	gog_klass->populate_editor = gog_label_populate_editor;
+	got_klass->get_str	   = gog_label_get_str;
+}
+
+static void
+gog_label_dims (GogDataset const *set, int *first, int *last)
+{
+	*first = *last = 0;
+}
+
+static GogDatasetElement *
+gog_label_get_elem (GogDataset const *set, int dim_i)
+{
+	GogLabel *label = GOG_LABEL (set);
+	return &label->text;
+}
+
+static void
+gog_label_dim_changed (GogDataset *set, int dim_i)
+{
+	gog_object_emit_changed (GOG_OBJECT (set), TRUE);
+}
+
+static void
+gog_label_dataset_init (GogDatasetClass *iface)
+{
+	iface->dims	   = gog_label_dims;
+	iface->get_elem	   = gog_label_get_elem;
+	iface->dim_changed = gog_label_dim_changed;
+}
+
+GSF_CLASS_FULL (GogLabel, gog_label,
+		NULL, NULL, gog_label_class_init, NULL,
+		NULL, GOG_TEXT_TYPE, 0,
+		GSF_INTERFACE (gog_label_dataset_init, GOG_DATASET_TYPE))
+
+/************************************************************************/
+	
+enum {
+	REG_EQN_PROP_0,
+	REG_EQN_SHOW_EQ,
+	REG_EQN_SHOW_R2
+};
+
+struct  _GogRegEqn {
+	GogLabel base;
+	gboolean show_eq, show_r2;
+};
+
+typedef GogTextClass GogRegEqnClass;
+
+static GObjectClass *reg_eqn_parent_klass;
+
+static void
+cb_text_visibility_changed (GtkToggleButton *button, GogObject *gobj)
+{
+	char const* property = (char const*) g_object_get_data (G_OBJECT (button), "prop");
+	g_object_set (G_OBJECT (gobj), property, gtk_toggle_button_get_active (button), NULL);
+	gog_object_emit_changed (gobj, TRUE);
+}
+
+static void
+gog_reg_eqn_set_property (GObject *obj, guint param_id,
+			GValue const *value, GParamSpec *pspec)
+{
+	GogRegEqn *reg_eqn = GOG_REG_EQN (obj);
+
+	switch (param_id) {
+	case REG_EQN_SHOW_EQ:
+		reg_eqn->show_eq = g_value_get_boolean (value);
+		break;
+	case REG_EQN_SHOW_R2:
+		reg_eqn->show_r2 = g_value_get_boolean (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return;
+	}
+}
+
+static void
+gog_reg_eqn_get_property (GObject *obj, guint param_id,
+			GValue *value, GParamSpec *pspec)
+{
+	GogRegEqn *reg_eqn = GOG_REG_EQN (obj);
+
+	switch (param_id) {
+	case REG_EQN_SHOW_EQ:
+		g_value_set_boolean (value, reg_eqn->show_eq);
+		break;
+	case REG_EQN_SHOW_R2:
+		g_value_set_boolean (value, reg_eqn->show_r2);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return;
+	}
+}
+
+static void
+gog_reg_eqn_populate_editor (GogObject *gobj, 
+			     GogEditor *editor, 
+			     GogDataAllocator *dalloc, 
+			     GOCmdContext *cc)
+{
+	GtkWidget *w;
+	GladeXML *gui;
+	GogRegEqn *reg_eqn = GOG_REG_EQN (gobj);
+
+	gui = go_libglade_new ("gog-reg-eqn-prefs.glade", "reg-eqn-prefs", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	gog_editor_add_page (editor, 
+			     glade_xml_get_widget (gui, "reg-eqn-prefs"),
+			     _("Details"));
+
+	w = glade_xml_get_widget (gui, "show_eq");
+	g_object_set_data (G_OBJECT (w), "prop", (void*) "show-eq");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), reg_eqn->show_eq);
+	g_signal_connect (w, "toggled", G_CALLBACK (cb_text_visibility_changed), gobj);
+
+	w = glade_xml_get_widget (gui, "show_r2");
+	g_object_set_data (G_OBJECT (w), "prop", (void*) "show-r2");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), reg_eqn->show_r2);
+	g_signal_connect (w, "toggled", G_CALLBACK (cb_text_visibility_changed), gobj);
+
+	(GOG_OBJECT_CLASS(reg_eqn_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+}
+
+static char const *
+gog_reg_eqn_type_name (GogObject const *gobj)
+{
+	return N_("Regression Equation");
+}
+
+static char *
+gog_reg_eqn_get_str (GogText *text)
+{
+	GogRegCurve *reg_curve = GOG_REG_CURVE ((GOG_OBJECT (text))->parent);
+	GogRegEqn *reg_eqn = GOG_REG_EQN (text);
+	
+	if (!reg_eqn->show_r2) 
+		return reg_eqn->show_eq ? 
+			g_strdup (gog_reg_curve_get_equation (reg_curve)) :
+			NULL;
+	else 
+		return reg_eqn->show_eq ? 
+			g_strdup_printf ("%s\r\nR² = %g",
+					 gog_reg_curve_get_equation (reg_curve),
+					 gog_reg_curve_get_R2 (reg_curve)) :
+			g_strdup_printf ("R² = %g", gog_reg_curve_get_R2 (reg_curve));
+}
+
+static void
+gog_reg_eqn_class_init (GogObjectClass *gog_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *)gog_klass;
+	GogTextClass *got_klass = (GogTextClass *) gog_klass; 
+
+	reg_eqn_parent_klass = g_type_class_peek_parent (gog_klass);
+
+	gobject_klass->set_property	= gog_reg_eqn_set_property;
+	gobject_klass->get_property	= gog_reg_eqn_get_property;
+	gog_klass->populate_editor	= gog_reg_eqn_populate_editor;
+	gog_klass->type_name		= gog_reg_eqn_type_name;
+	got_klass->get_str	   	= gog_reg_eqn_get_str;
+
+	g_object_class_install_property (gobject_klass, REG_EQN_SHOW_EQ,
+		g_param_spec_boolean ("show-eq", NULL,
+			"Show the equation on the graph",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, REG_EQN_SHOW_R2,
+		g_param_spec_boolean ("show-r2", NULL,
+			"Show the correlation coefficient on the graph",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_reg_eqn_init (GogRegEqn *reg_eqn)
+{
+	reg_eqn->show_eq = TRUE;
+	reg_eqn->show_r2 = TRUE;
+}
+
+GSF_CLASS (GogRegEqn, gog_reg_eqn,
+	   gog_reg_eqn_class_init, gog_reg_eqn_init,
+	   GOG_TEXT_TYPE)
+
+/************************************************************************/
+
+typedef GogOutlinedView		GogTextView;
+typedef GogOutlinedViewClass	GogTextViewClass;
+
+#define GOG_LABEL_VIEW_TYPE	(gog_label_view_get_type ())
+#define GOG_LABEL_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_LABEL_VIEW_TYPE, GogLabelView))
+#define IS_GOG_LABEL_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_LABEL_VIEW_TYPE))
+
+static GogViewClass *text_view_parent_klass;
+
+static void
+gog_text_view_size_request (GogView *v, GogViewRequisition *req)
+{
+	GogText *text = GOG_TEXT (v->model);
+	char *str = gog_text_get_str (text);
+	GOGeometryAABR aabr;
+
+	req->w = req->h = 0.;
+	if (str != NULL) {
+		gog_renderer_push_style (v->renderer, text->base.base.style);
+		gog_renderer_get_text_AABR (v->renderer, str, &aabr);
+		gog_renderer_pop_style (v->renderer);
+		req->w = aabr.w;
+		req->h = aabr.h;
+		g_free (str);
+	}
+	text_view_parent_klass->size_request (v, req);
+}
+
+static void
+gog_text_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogText *text = GOG_TEXT (view->model);
+	GogOutlinedObject *goo = GOG_OUTLINED_OBJECT (text);
+	GogStyle *style = text->base.base.style;
+	char *str = gog_text_get_str (text);
+
+	gog_renderer_push_style (view->renderer, style);
+	if (str != NULL) {
+		double outline = gog_renderer_line_size (view->renderer, 
+							 goo->base.style->outline.width);
+		if (style->fill.type != GOG_FILL_STYLE_NONE || outline > 0.) {
+			GogViewAllocation rect;
+			GOGeometryAABR aabr;
+			double pad_x = gog_renderer_pt2r_x (view->renderer, goo->padding_pts);
+			double pad_y = gog_renderer_pt2r_y (view->renderer, goo->padding_pts);
+
+			gog_renderer_get_text_AABR (view->renderer, str, &aabr);
+			rect = view->allocation;
+			rect.w = aabr.w + 2. * outline + pad_x;
+			rect.h = aabr.h + 2. * outline + pad_y;
+			gog_renderer_draw_sharp_rectangle (view->renderer, &rect);
+		}
+		gog_renderer_draw_text (view->renderer, str,
+					&view->residual, GTK_ANCHOR_NW, NULL);
+		g_free (str);
+	}
+	gog_renderer_pop_style (view->renderer);
+}
+
+static void
+gog_text_view_class_init (GogTextViewClass *gview_klass)
+{
+	GogViewClass *view_klass    = (GogViewClass *) gview_klass;
+
+	text_view_parent_klass = g_type_class_peek_parent (gview_klass);
+	view_klass->size_request    = gog_text_view_size_request;
+	view_klass->render	    = gog_text_view_render;
+}
+
+GSF_CLASS (GogTextView, gog_text_view,
+	   gog_text_view_class_init, NULL,
+	   GOG_OUTLINED_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-label.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-label.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ * Copyright (C) 2005      Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_LABEL_H
+#define GOG_LABEL_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_LABEL_TYPE	(gog_label_get_type ())
+#define GOG_LABEL(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_LABEL_TYPE, GogLabel))
+#define IS_GOG_LABEL(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_LABEL_TYPE))
+
+GType gog_label_get_type (void);
+
+#define GOG_REG_EQN_TYPE		(gog_reg_eqn_get_type ())
+#define GOG_REG_EQN(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_REG_EQN_TYPE, GogRegEqn))
+#define IS_GOG_REG_EQN(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_REG_EQN_TYPE))
+
+GType gog_reg_eqn_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_LABEL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,397 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-legend.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-legend.h>
+#include <goffice/graph/gog-outlined-object.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-units.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <gtk/gtknotebook.h>
+#include <glib/gi18n.h>
+
+struct _GogLegend {
+	GogOutlinedObject base;
+
+	double	 swatch_size_pts;
+	double	 swatch_padding_pts;
+	gulong	 chart_cardinality_handle;
+	gulong	 chart_child_name_changed_handle;
+	unsigned cached_count;
+	gboolean names_changed;
+};
+
+typedef GogStyledObjectClass GogLegendClass;
+
+enum {
+	LEGEND_PROP_0,
+	LEGEND_SWATCH_SIZE_PTS,
+	LEGEND_SWATCH_PADDING_PTS
+};
+
+static GType gog_legend_view_get_type (void);
+
+static GObjectClass *parent_klass;
+
+static void
+gog_legend_set_property (GObject *obj, guint param_id,
+			 GValue const *value, GParamSpec *pspec)
+{
+	GogLegend *legend = GOG_LEGEND (obj);
+
+	switch (param_id) {
+	case LEGEND_SWATCH_SIZE_PTS :
+		legend->swatch_size_pts = g_value_get_double (value);
+		break;
+	case LEGEND_SWATCH_PADDING_PTS :
+		legend->swatch_padding_pts = g_value_get_double (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_legend_get_property (GObject *obj, guint param_id,
+			 GValue *value, GParamSpec *pspec)
+{
+	GogLegend *legend = GOG_LEGEND (obj);
+
+	switch (param_id) {
+	case LEGEND_SWATCH_SIZE_PTS :
+		g_value_set_double (value, legend->swatch_size_pts);
+		break;
+	case LEGEND_SWATCH_PADDING_PTS :
+		g_value_set_double (value, legend->swatch_padding_pts);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+cb_chart_names_changed (GogLegend *legend)
+{
+	if (legend->names_changed)
+		return;
+	legend->names_changed = TRUE;
+	gog_object_request_update (GOG_OBJECT (legend));
+}
+
+static void
+gog_legend_parent_changed (GogObject *obj, gboolean was_set)
+{
+	GogObjectClass *gog_object_klass = GOG_OBJECT_CLASS (parent_klass);
+	GogLegend *legend = GOG_LEGEND (obj);
+
+	if (was_set) {
+		if (legend->chart_cardinality_handle == 0)
+			legend->chart_cardinality_handle =
+				g_signal_connect_object (G_OBJECT (obj->parent),
+					"notify::cardinality-valid",
+					G_CALLBACK (gog_object_request_update),
+					legend, G_CONNECT_SWAPPED);
+		if (legend->chart_child_name_changed_handle == 0)
+			legend->chart_child_name_changed_handle =
+				g_signal_connect_object (G_OBJECT (obj->parent),
+					"child-name-changed",
+					G_CALLBACK (cb_chart_names_changed),
+					legend, G_CONNECT_SWAPPED);
+	} else {
+		if (legend->chart_cardinality_handle != 0) {
+			g_signal_handler_disconnect (G_OBJECT (obj->parent),
+				legend->chart_cardinality_handle);
+			legend->chart_cardinality_handle = 0;
+		}
+		if (legend->chart_child_name_changed_handle != 0) {
+			g_signal_handler_disconnect (G_OBJECT (obj->parent),
+				legend->chart_child_name_changed_handle);
+			legend->chart_child_name_changed_handle = 0;
+		}
+	}
+
+	gog_object_klass->parent_changed (obj, was_set);
+}
+
+static void
+gog_legend_update (GogObject *obj)
+{
+	GogLegend *legend = GOG_LEGEND (obj);
+	unsigned visible;
+	gog_chart_get_cardinality (GOG_CHART (obj->parent), NULL, &visible);
+	if (legend->cached_count != visible)
+		legend->cached_count = visible;
+	else if (!legend->names_changed)
+		return;
+	legend->names_changed = FALSE;
+	gog_object_emit_changed	(obj, TRUE);
+}
+
+static void
+gog_legend_populate_editor (GogObject *gobj, 
+			    GogEditor *editor, 
+			    GogDataAllocator *dalloc, 
+			    GOCmdContext *cc)
+{
+	static guint legend_pref_page = 0;
+
+	(GOG_OBJECT_CLASS(parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+	gog_editor_set_store_page (editor, &legend_pref_page);
+}
+
+static void
+gog_legend_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	style->interesting_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL | GOG_STYLE_FONT;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+gog_legend_class_init (GogLegendClass *klass)
+{
+	static GogObjectRole const roles[] = {
+		{ N_("Title"), "GogLabel",	0,
+		  GOG_POSITION_COMPASS, GOG_POSITION_N|GOG_POSITION_ALIGN_CENTER, GOG_OBJECT_NAME_BY_ROLE,
+		  NULL, NULL, NULL, NULL, NULL, NULL },
+	};
+
+	GObjectClass *gobject_klass   = (GObjectClass *) klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+
+	parent_klass = g_type_class_peek_parent (klass);
+	
+	gobject_klass->set_property = gog_legend_set_property;
+	gobject_klass->get_property = gog_legend_get_property;
+	gog_klass->parent_changed = gog_legend_parent_changed;
+	gog_klass->update	  = gog_legend_update;
+	gog_klass->populate_editor	= gog_legend_populate_editor;
+	gog_klass->view_type	  = gog_legend_view_get_type ();
+	style_klass->init_style	  = gog_legend_init_style;
+	
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+
+	g_object_class_install_property (gobject_klass, LEGEND_SWATCH_SIZE_PTS,
+		g_param_spec_double ("swatch_size_pts", "Swatch Size pts",
+			"size of the swatches in pts.",
+			0, G_MAXDOUBLE, 0, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, LEGEND_SWATCH_PADDING_PTS,
+		g_param_spec_double ("swatch_padding_pts", "Swatch Padding pts",
+			"padding between the swatches in pts.",
+			0, G_MAXDOUBLE, 0, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_legend_init (GogLegend *legend)
+{
+	legend->swatch_size_pts = GO_CM_TO_PT ((double).25);
+	legend->swatch_padding_pts = GO_CM_TO_PT ((double).2);
+	legend->cached_count = 0;
+}
+
+GSF_CLASS (GogLegend, gog_legend,
+	   gog_legend_class_init, gog_legend_init,
+	   GOG_OUTLINED_OBJECT_TYPE)
+
+typedef struct {
+	GogOutlinedView	base;
+	double		line_height;
+	gboolean	uses_lines;
+} GogLegendView;
+typedef GogOutlinedViewClass	GogLegendViewClass;
+
+#define GOG_LEGEND_VIEW_TYPE	(gog_legend_view_get_type ())
+#define GOG_LEGEND_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_LEGEND_VIEW_TYPE, GogLegendView))
+#define IS_GOG_LEGEND_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_LEGEND_VIEW_TYPE))
+
+static GogViewClass *lview_parent_klass;
+
+typedef struct {
+	GogView const *view;
+	GogViewRequisition maximum;
+	gboolean	uses_lines;
+	GogStyle* legend_style;
+} size_closure;
+
+static void
+cb_size_elements (unsigned i, GogStyle const *style, char const *name,
+		  size_closure *dat)
+{
+	GOGeometryAABR aabr;
+	
+	gog_renderer_push_style (dat->view->renderer, dat->legend_style);
+	gog_renderer_get_text_AABR (dat->view->renderer, name, &aabr);
+	gog_renderer_pop_style (dat->view->renderer);
+
+	if (dat->maximum.w < aabr.w)
+		dat->maximum.w = aabr.w;
+	if (dat->maximum.h < aabr.h)
+		dat->maximum.h = aabr.h;
+	if (!dat->uses_lines && (style->interesting_fields & GOG_STYLE_LINE))
+		dat->uses_lines = TRUE;
+}
+
+static void
+gog_legend_view_size_request (GogView *v, GogViewRequisition *avail)
+{
+	size_closure dat;
+	GogViewRequisition res;
+	GogChart *chart = GOG_CHART (v->model->parent);
+	GogLegend *l = GOG_LEGEND (v->model);
+	unsigned n, mult = 1;
+
+#warning TODO : make this smarter (multiple columns and shrinking text)
+	dat.view = v;
+	dat.maximum.w = 0.;
+	dat.maximum.h = gog_renderer_pt2r_y (v->renderer, l->swatch_size_pts);
+	dat.uses_lines = FALSE;
+	dat.legend_style = GOG_STYLED_OBJECT (l)->style;
+	gog_chart_foreach_elem (chart, TRUE,
+		(GogEnumFunc) cb_size_elements, &dat);
+	((GogLegendView *)v)->line_height = dat.maximum.h;
+	((GogLegendView *)v)->uses_lines = dat.uses_lines;
+
+	if (dat.uses_lines)
+		mult = 3;
+
+	/* 1/2 between swatch and label */
+	res.w = dat.maximum.w + gog_renderer_pt2r_x (v->renderer,
+		mult * l->swatch_size_pts + .5 * l->swatch_padding_pts);
+	gog_chart_get_cardinality (chart, NULL, &n);
+	res.h = n * dat.maximum.h;
+
+	gog_view_size_child_request (v, avail, &res);
+	avail->w = res.w;
+	avail->h = res.h;
+	lview_parent_klass->size_request (v, avail);
+}
+
+typedef struct {
+	GogView const *view;
+	GogViewAllocation swatch;
+	double step;
+	double label_offset;
+	double bottom;
+	ArtVpath line_path[3];
+} render_closure;
+
+static void
+cb_render_elements (unsigned i, GogStyle const *base_style, char const *name,
+		    render_closure *dat)
+{
+	GogViewAllocation swatch = dat->swatch;
+	GogView  const   *v = dat->view;
+	GogStyle *style = NULL;
+	GogViewAllocation pos, rectangle;
+	GogStyledObject *obj = GOG_STYLED_OBJECT (dat->view->model);
+	GogStyle *legend_style = obj->style;
+	
+	swatch.y += i * dat->step;
+	/* Allow for floating point inaccuracy */
+	if (swatch.y > dat->bottom + 0.0001)
+		return;
+
+	if (base_style->interesting_fields & GOG_STYLE_LINE) { /* line and marker */
+		style = (GogStyle *)base_style;
+		gog_renderer_push_style (v->renderer, style);
+		dat->line_path[0].y = dat->line_path[1].y =  swatch.y + dat->step / 2.;
+		gog_renderer_draw_sharp_path (v->renderer, dat->line_path);
+		gog_renderer_draw_marker (v->renderer,
+			(dat->line_path[0].x + dat->line_path[1].x) / 2.,
+			dat->line_path[0].y);
+	} else {					/* area swatch */
+		style = gog_style_dup (base_style);
+		style->outline.width = 0; /* hairline */
+		style->outline.color = RGBA_BLACK;
+
+		rectangle = swatch;
+		rectangle.y += (dat->step - swatch.h) / 2.0;
+
+		gog_renderer_push_style (v->renderer, style);
+		gog_renderer_draw_sharp_rectangle (v->renderer, &rectangle);
+	}
+	pos.x = swatch.x + dat->label_offset;
+	pos.y = swatch.y;
+	pos.h = pos.w = -1;
+	gog_renderer_pop_style (v->renderer);
+	gog_renderer_push_style (v->renderer, legend_style);
+	gog_renderer_draw_text (v->renderer, name, &pos, GTK_ANCHOR_NW, NULL);
+
+	gog_renderer_pop_style (v->renderer);
+
+	if (style != base_style)
+		g_object_unref (style);
+}
+
+static void
+gog_legend_view_render (GogView *v, GogViewAllocation const *bbox)
+{
+	render_closure dat;
+	GogLegend *l = GOG_LEGEND (v->model);
+	double pad_x = gog_renderer_pt2r_x (v->renderer, l->swatch_padding_pts);
+
+	(lview_parent_klass->render) (v, bbox);
+
+	dat.view = v;
+	dat.swatch.x  = v->residual.x;
+	dat.swatch.y  = v->residual.y;
+	dat.swatch.w  = gog_renderer_pt2r_x (v->renderer, l->swatch_size_pts);
+	dat.swatch.h  = gog_renderer_pt2r_y (v->renderer, l->swatch_size_pts);
+	dat.label_offset = dat.swatch.w + pad_x / 2.;
+	if (((GogLegendView *)v)->uses_lines) {
+		dat.line_path[0].code = ART_MOVETO;
+		dat.line_path[1].code = ART_LINETO;
+		dat.line_path[2].code = ART_END;
+		dat.line_path[0].x = dat.swatch.x;
+		dat.line_path[1].x = dat.swatch.x + 3. * dat.swatch.w;
+		dat.swatch.x += dat.swatch.w;
+		dat.label_offset += dat.swatch.w;
+	}
+	dat.step      = ((GogLegendView *)v)->line_height;
+	dat.bottom    = v->residual.y + v->residual.h -
+		((GogLegendView *)v)->line_height;
+	gog_chart_foreach_elem (GOG_CHART (v->model->parent), TRUE,
+		(GogEnumFunc) cb_render_elements, &dat);
+}
+
+static void
+gog_legend_view_class_init (GogLegendViewClass *gview_klass)
+{
+	GogViewClass *view_klass    = (GogViewClass *) gview_klass;
+
+	lview_parent_klass = g_type_class_peek_parent (gview_klass);
+	view_klass->size_request    = gog_legend_view_size_request;
+	view_klass->render	    = gog_legend_view_render;
+	view_klass->clip 	    = TRUE;
+}
+
+static GSF_CLASS (GogLegendView, gog_legend_view,
+		  gog_legend_view_class_init, NULL,
+		  GOG_OUTLINED_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-legend.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,37 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-legend.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_LEGEND_H
+#define GOG_LEGEND_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_LEGEND_TYPE		(gog_legend_get_type ())
+#define GOG_LEGEND(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_LEGEND_TYPE, GogLegend))
+#define IS_GOG_LEGEND(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_LEGEND_TYPE))
+
+GType gog_legend_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_LEGEND_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,689 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="gog_object_prefs_window">
+  <property name="title" translatable="yes">GogObjectPrefs</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkVBox" id="gog_object_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkCheckButton" id="manual_position_button">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">_Use manual positionning</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="hbox3">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">24</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="manual_position_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label43">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Manual position&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment1">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">0</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">24</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox9">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkTable" id="manual_positions">
+			  <property name="visible">True</property>
+			  <property name="n_rows">3</property>
+			  <property name="n_columns">3</property>
+			  <property name="homogeneous">False</property>
+			  <property name="row_spacing">6</property>
+			  <property name="column_spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="label37">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">%</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">2</property>
+			      <property name="right_attach">3</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label38">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">%</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">2</property>
+			      <property name="right_attach">3</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="y_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Y:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="mnemonic_widget">y_spin</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkSpinButton" id="x_spin">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="climb_rate">1</property>
+			      <property name="digits">1</property>
+			      <property name="numeric">True</property>
+			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			      <property name="snap_to_ticks">False</property>
+			      <property name="wrap">False</property>
+			      <property name="adjustment">0 -10000 10000 1 10 10</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkSpinButton" id="y_spin">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="climb_rate">1</property>
+			      <property name="digits">1</property>
+			      <property name="numeric">True</property>
+			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			      <property name="snap_to_ticks">False</property>
+			      <property name="wrap">False</property>
+			      <property name="adjustment">0 -10000 10000 1 10 10</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="x_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_X:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="mnemonic_widget">x_spin</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="anchor_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Anchor:</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">2</property>
+			      <property name="bottom_attach">3</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkComboBox" id="anchor_combo">
+			      <property name="visible">True</property>
+			      <property name="items" translatable="yes"></property>
+			      <property name="add_tearoffs">False</property>
+			      <property name="focus_on_click">True</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">3</property>
+			      <property name="top_attach">2</property>
+			      <property name="bottom_attach">3</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options">fill</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkTable" id="manual_sizes">
+			  <property name="visible">True</property>
+			  <property name="n_rows">2</property>
+			  <property name="n_columns">3</property>
+			  <property name="homogeneous">False</property>
+			  <property name="row_spacing">6</property>
+			  <property name="column_spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="height_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Height:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="mnemonic_widget">height_spin</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label39">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">%</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">2</property>
+			      <property name="right_attach">3</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label42">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">%</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">2</property>
+			      <property name="right_attach">3</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="width_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Width:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="mnemonic_widget">width_spin</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkSpinButton" id="width_spin">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="climb_rate">1</property>
+			      <property name="digits">1</property>
+			      <property name="numeric">True</property>
+			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			      <property name="snap_to_ticks">False</property>
+			      <property name="wrap">False</property>
+			      <property name="adjustment">0 0 10000 1 10 10</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkSpinButton" id="height_spin">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="climb_rate">1</property>
+			      <property name="digits">1</property>
+			      <property name="numeric">True</property>
+			      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+			      <property name="snap_to_ticks">False</property>
+			      <property name="wrap">False</property>
+			      <property name="adjustment">0 0 10000 1 10 10</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="automatic_position_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkLabel" id="label44">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">&lt;b&gt;Automatic position&lt;/b&gt;</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkAlignment" id="alignment3">
+		  <property name="visible">True</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xscale">1</property>
+		  <property name="yscale">1</property>
+		  <property name="top_padding">0</property>
+		  <property name="bottom_padding">0</property>
+		  <property name="left_padding">24</property>
+		  <property name="right_padding">0</property>
+
+		  <child>
+		    <widget class="GtkVBox" id="vbox12">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">6</property>
+
+		      <child>
+			<widget class="GtkHBox" id="compass_position">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="position_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Position:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkComboBox" id="position_combo">
+			      <property name="visible">True</property>
+			      <property name="items" translatable="yes"></property>
+			      <property name="add_tearoffs">False</property>
+			      <property name="focus_on_click">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkHBox" id="compass_alignment">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="alignment_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Alignment:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkComboBox" id="alignment_combo">
+			      <property name="visible">True</property>
+			      <property name="items" translatable="yes"></property>
+			      <property name="add_tearoffs">False</property>
+			      <property name="focus_on_click">True</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">True</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,550 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-object-xml.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-object-xml.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-plot.h>
+#include <goffice/graph/gog-reg-curve.h>
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-color.h>
+
+#include <glade/glade-build.h>	/* for the xml utils */
+#include <string.h>
+#include <stdlib.h>
+
+GType
+gog_persist_get_type (void)
+{
+	static GType gog_persist_type = 0;
+
+	if (!gog_persist_type) {
+		static GTypeInfo const gog_persist_info = {
+			sizeof (GogPersistClass),	/* class_size */
+			NULL,		/* base_init */
+			NULL,		/* base_finalize */
+		};
+
+		gog_persist_type = g_type_register_static (G_TYPE_INTERFACE,
+			"GogPersist", &gog_persist_info, 0);
+	}
+
+	return gog_persist_type;
+}
+
+gboolean
+gog_persist_dom_load (GogPersist *gp, xmlNode *node)
+{
+	g_return_val_if_fail (IS_GOG_PERSIST (gp), FALSE);
+	return GOG_PERSIST_GET_CLASS (gp)->dom_load (gp, node);
+}
+
+void
+gog_persist_dom_save (GogPersist const *gp, xmlNode *parent)
+{
+	g_return_if_fail (IS_GOG_PERSIST (gp));
+	GOG_PERSIST_GET_CLASS (gp)->dom_save (gp, parent);
+}
+void
+gog_persist_sax_save (GogPersist const *gp, GsfXMLOut *output)
+{
+	g_return_if_fail (IS_GOG_PERSIST (gp));
+	GOG_PERSIST_GET_CLASS (gp)->sax_save (gp, output);
+}
+
+static void
+gog_object_set_arg_full (char const *name, char const *val, GogObject *obj, xmlNode *xml_node)
+{
+	GParamSpec *pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (obj), name);
+	GType prop_type;
+	GValue res = { 0 };
+	gboolean success = TRUE;
+
+	if (pspec == NULL) {
+		g_warning ("unknown property `%s' for class `%s'",
+			   name, G_OBJECT_TYPE_NAME (obj));
+		return;
+	}
+
+	prop_type = G_PARAM_SPEC_VALUE_TYPE (pspec);
+	if (val == NULL &&
+	    G_TYPE_FUNDAMENTAL (prop_type) != G_TYPE_BOOLEAN) {
+		g_warning ("could not convert NULL to type `%s' for property `%s'",
+			   g_type_name (prop_type), pspec->name);
+		return;
+	}
+
+	g_value_init (&res, prop_type);
+	switch (G_TYPE_FUNDAMENTAL (prop_type)) {
+	case G_TYPE_CHAR:
+		g_value_set_char (&res, val[0]);
+		break;
+	case G_TYPE_UCHAR:
+		g_value_set_uchar (&res, (guchar)val[0]);
+		break;
+	case G_TYPE_BOOLEAN:
+		g_value_set_boolean (&res, 
+			val == NULL ||
+			g_ascii_tolower (val[0]) == 't' ||
+			g_ascii_tolower (val[0]) == 'y' ||
+			strtol (val, NULL, 0));
+		break;
+	case G_TYPE_INT:
+		g_value_set_int (&res, strtol (val, NULL, 0));
+		break;
+	case G_TYPE_UINT:
+		g_value_set_uint (&res, strtoul (val, NULL, 0));
+		break;
+	case G_TYPE_LONG:
+		g_value_set_long (&res, strtol (val, NULL, 0));
+		break;
+	case G_TYPE_ULONG:
+		g_value_set_ulong (&res, strtoul (val, NULL, 0));
+		break; 
+	case G_TYPE_ENUM:
+		g_value_set_enum (&res, glade_enum_from_string (prop_type, val));
+		break;
+	case G_TYPE_FLAGS:
+		g_value_set_flags (&res, glade_flags_from_string (prop_type, val));
+		break;
+	case G_TYPE_FLOAT:
+		g_value_set_float (&res, g_strtod (val, NULL));
+		break;
+	case G_TYPE_DOUBLE:
+		g_value_set_double (&res, g_strtod (val, NULL));
+		break;
+	case G_TYPE_STRING:
+		g_value_set_string (&res, val);
+		break;
+
+	case G_TYPE_OBJECT:
+		if (g_type_is_a (prop_type, G_TYPE_OBJECT)) {
+			xmlChar *type_name;
+			GType    type = 0;
+			GObject *val_obj;
+
+			success = FALSE;
+			type_name = xmlGetProp (xml_node, 
+						(xmlChar const *) "type");
+			if (type_name != NULL) {
+				type = g_type_from_name (type_name);
+			}
+			xmlFree (type_name);
+			if (type != 0) {
+				val_obj = g_object_new (type, NULL);
+				if (IS_GOG_PERSIST (val_obj) &&
+				    gog_persist_dom_load (GOG_PERSIST (val_obj), xml_node)) {
+					g_value_set_object (&res, val_obj);
+					success = TRUE;
+				}
+				g_object_unref (val_obj);
+			}
+		}
+		break;
+
+	default:
+		success = FALSE;
+	}
+
+	if (!success) {
+		g_warning ("could not convert string to type `%s' for property `%s'",
+			   g_type_name (prop_type), pspec->name);
+	} else
+		g_object_set_property (G_OBJECT (obj), name, &res);
+	g_value_unset (&res);
+}
+
+void
+gog_object_set_arg (char const *name, char const *val, GogObject *obj)
+{
+	gog_object_set_arg_full (name, val, obj, NULL);
+}
+
+static void
+gog_object_write_property_sax (GogObject const *obj, GParamSpec *pspec, GsfXMLOut *output)
+{
+	GObject *val_obj;
+	GType    prop_type = G_PARAM_SPEC_VALUE_TYPE (pspec);
+	GValue	 value = { 0 };
+
+	g_value_init (&value, prop_type);
+	g_object_get_property  (G_OBJECT (obj), pspec->name, &value);
+
+	/* No need to save default values */
+	if (!(pspec->flags & GOG_PARAM_FORCE_SAVE) &&
+	    g_param_value_defaults (pspec, &value)) {
+		g_value_unset (&value);
+		return;
+	}
+
+	switch (G_TYPE_FUNDAMENTAL (prop_type)) {
+	case G_TYPE_CHAR:
+	case G_TYPE_UCHAR:
+	case G_TYPE_BOOLEAN:
+	case G_TYPE_INT:
+	case G_TYPE_UINT:
+	case G_TYPE_LONG:
+	case G_TYPE_ULONG:
+	case G_TYPE_FLOAT:
+	case G_TYPE_DOUBLE: {
+		GValue str = { 0 };
+		g_value_init (&str, G_TYPE_STRING);
+		g_value_transform (&value, &str);
+		gsf_xml_out_start_element (output, "property");
+		gsf_xml_out_add_cstr_unchecked (output, "name", pspec->name);
+		gsf_xml_out_add_cstr (output, NULL, g_value_get_string (&str));
+		gsf_xml_out_end_element (output); /* </property> */
+		g_value_unset (&str);
+		break;
+	}
+
+	case G_TYPE_STRING: {
+		char const *str = g_value_get_string (&value);
+		if (str != NULL) {
+			gsf_xml_out_start_element (output, "property");
+			gsf_xml_out_add_cstr_unchecked (output, "name", pspec->name);
+			gsf_xml_out_add_cstr (output, NULL, str);
+			gsf_xml_out_end_element (output); /* </property> */
+		}
+		break;
+	}
+
+	case G_TYPE_OBJECT:
+		val_obj = g_value_get_object (&value);
+		if (val_obj != NULL) {
+			if (IS_GOG_PERSIST (val_obj)) {
+				gsf_xml_out_start_element (output, "property");
+				gsf_xml_out_add_cstr_unchecked (output, "name", pspec->name);
+				gog_persist_sax_save (GOG_PERSIST (val_obj), output);
+				gsf_xml_out_end_element (output); /* </property> */
+			} else
+				g_warning ("How are we supposed to persist this ??");
+		}
+		break;
+
+	default:
+		;
+	}
+	g_value_unset (&value);
+}
+
+static void
+gog_object_write_property (GogObject *obj, GParamSpec *pspec, xmlNode *parent)
+{
+	GObject *val_obj;
+	GType    prop_type = G_PARAM_SPEC_VALUE_TYPE (pspec);
+	gboolean success = TRUE;
+	GValue	 value = { 0 };
+	xmlNode *node;
+
+	g_value_init (&value, prop_type);
+	g_object_get_property  (G_OBJECT (obj), pspec->name, &value);
+
+	/* No need to save default values */
+	if (!(pspec->flags & GOG_PARAM_FORCE_SAVE) &&
+	    g_param_value_defaults (pspec, &value)) {
+		g_value_unset (&value);
+		return;
+	}
+
+	node = xmlNewDocNode (parent->doc, NULL,
+			      (xmlChar const *)"property", NULL);
+
+	switch (G_TYPE_FUNDAMENTAL (prop_type)) {
+	case G_TYPE_CHAR:
+	case G_TYPE_UCHAR:
+	case G_TYPE_BOOLEAN:
+	case G_TYPE_INT:
+	case G_TYPE_UINT:
+	case G_TYPE_LONG:
+	case G_TYPE_ULONG:
+	case G_TYPE_FLOAT:
+	case G_TYPE_DOUBLE: {
+		GValue str = { 0 };
+		g_value_init (&str, G_TYPE_STRING);
+		g_value_transform (&value, &str);
+		xmlNodeSetContent (node, g_value_get_string (&str));
+		g_value_unset (&str);
+		break;
+	}
+
+	case G_TYPE_STRING: {
+		char const *str = g_value_get_string (&value);
+		if (str != NULL)
+			xmlNodeSetContent (node, str);
+		else
+			success = FALSE;
+		break;
+	}
+
+	case G_TYPE_OBJECT:
+		val_obj = g_value_get_object (&value);
+		if (val_obj != NULL) {
+			if (IS_GOG_PERSIST (val_obj)) {
+				gog_persist_dom_save (GOG_PERSIST (val_obj), node);
+			} else
+				g_warning ("How are we supposed to persist this ??");
+		} else
+			success = FALSE;
+		break;
+
+	default:
+		success = FALSE;
+	}
+	g_value_unset (&value);
+
+	if (success) {
+		xmlSetProp (node, (xmlChar const *) "name", pspec->name);
+		xmlAddChild (parent, node);
+	} else
+		xmlFreeNode (node);
+}
+
+static void
+gog_dataset_load (GogDataset *set, xmlNode *node)
+{
+	xmlNode *ptr;
+	xmlChar *id, *val, *type;
+
+	for (ptr = node->xmlChildrenNode ; ptr != NULL ; ptr = ptr->next) {
+		if (xmlIsBlankNode (ptr) || ptr->name == NULL)
+			continue;
+		if (!strcmp (ptr->name, "data"))
+			break;
+	}
+	if (ptr == NULL)
+		return;
+	for (ptr = ptr->xmlChildrenNode ; ptr != NULL ; ptr = ptr->next) {
+		if (xmlIsBlankNode (ptr) || ptr->name == NULL)
+			continue;
+		if (!strcmp (ptr->name, "dimension")) {
+			id   = xmlGetProp (ptr, (xmlChar const *) "id");
+			type = xmlGetProp (ptr, (xmlChar const *) "type");
+			val  = xmlNodeGetContent (ptr);
+			if (id != NULL && type != NULL && val != NULL) {
+				unsigned dim_id = strtoul (id, NULL, 0);
+				GOData *dat = g_object_new (g_type_from_name (type), NULL);
+				if (dat != NULL && go_data_from_str (dat, val))
+					gog_dataset_set_dim (set, dim_id, dat, NULL);
+			}
+
+			if (id != NULL)	  xmlFree (id);
+			if (type != NULL) xmlFree (type);
+			if (val != NULL)  xmlFree (val);
+		}
+	}
+}
+
+static void
+gog_dataset_sax_save (GogDataset const *set, GsfXMLOut *output)
+{
+	GOData  *dat;
+	char    *tmp, buffer[10];
+	int      i, last;
+
+	gsf_xml_out_start_element (output, "data");
+	gog_dataset_dims (set, &i, &last);
+	for ( ; i <= last ; i++) {
+		dat = gog_dataset_get_dim (set, i);
+		if (dat == NULL)
+			continue;
+
+		gsf_xml_out_start_element (output, "dimension");
+		g_snprintf (buffer, sizeof buffer, "%d", i);
+		gsf_xml_out_add_cstr (output, "id", buffer);
+		gsf_xml_out_add_cstr (output, "type", 
+			G_OBJECT_TYPE_NAME (dat));
+		tmp = go_data_as_str (dat);
+		gsf_xml_out_add_cstr (output, NULL, tmp);
+		g_free (tmp);
+		gsf_xml_out_end_element (output); /* </dimension> */
+	}
+	gsf_xml_out_end_element (output); /* </data> */
+
+}
+static void
+gog_dataset_dom_save (GogDataset *set, xmlNode *parent)
+{
+	xmlNode *node, *child;
+	char    *tmp, buffer[10];
+	GOData  *dat;
+	int      i, last;
+
+	node = xmlNewDocNode (parent->doc, NULL, (xmlChar const *)"data", NULL);
+	gog_dataset_dims (set, &i, &last);
+	for ( ; i <= last ; i++) {
+		dat = gog_dataset_get_dim (set, i);
+		if (dat == NULL)
+			continue;
+
+		tmp = go_data_as_str (dat);
+		child = xmlNewChild (node, NULL,
+			(xmlChar const *) ("dimension"), tmp);
+		g_free (tmp);
+
+		g_snprintf (buffer, sizeof buffer, "%d", i);
+		xmlSetProp (child, (xmlChar const *) "id", buffer);
+		xmlSetProp (child, (xmlChar const *) "type",
+			G_OBJECT_TYPE_NAME (dat));
+	}
+
+	xmlAddChild (parent, node);
+}
+
+void
+gog_object_write_xml_sax (GogObject const *obj, GsfXMLOut *output)
+{
+	gint	     n;
+	GParamSpec **props;
+	GSList	    *ptr;
+
+	gsf_xml_out_start_element (output, "GogObject");
+
+	/* Primary details */
+	if (obj->role != NULL)
+		gsf_xml_out_add_cstr (output, "role", obj->role->id);
+	if (obj->explicitly_typed_role || obj->role == NULL)
+		gsf_xml_out_add_cstr (output, "type", G_OBJECT_TYPE_NAME (obj));
+
+	/* properties */
+	props = g_object_class_list_properties (G_OBJECT_GET_CLASS (obj), &n);
+	while (n-- > 0)
+		if (props[n]->flags & GOG_PARAM_PERSISTENT)
+			gog_object_write_property_sax (obj, props[n], output);
+
+	g_free (props);
+
+	if (IS_GOG_PERSIST (obj))	/* anything special for this class */
+		gog_persist_sax_save (GOG_PERSIST (obj), output);
+	if (IS_GOG_DATASET (obj))	/* convenience to save data */
+		gog_dataset_sax_save (GOG_DATASET (obj), output);
+
+	/* the children */
+	for (ptr = obj->children; ptr != NULL ; ptr = ptr->next)
+		gog_object_write_xml_sax (ptr->data, output);
+
+	gsf_xml_out_end_element (output); /* </GogObject> */
+}
+
+xmlNode  *
+gog_object_write_xml (GogObject *obj, xmlDoc *doc)
+{
+	gint	     n;
+	GParamSpec **props;
+	GSList	    *ptr;
+	xmlNode	    *node = xmlNewDocNode (doc, NULL,
+		(xmlChar const *)"GogObject", NULL);
+
+	/* Primary details */
+	if (obj->role != NULL)
+		xmlSetProp (node, (xmlChar const *) "role", obj->role->id);
+	if (obj->explicitly_typed_role || obj->role == NULL)
+		xmlSetProp (node, (xmlChar const *) "type", G_OBJECT_TYPE_NAME (obj));
+
+	/* properties */
+	props = g_object_class_list_properties (G_OBJECT_GET_CLASS (obj), &n);
+	while (n-- > 0)
+		if (props[n]->flags & GOG_PARAM_PERSISTENT)
+			gog_object_write_property (obj, props[n], node);
+
+	g_free (props);
+
+	if (IS_GOG_PERSIST (obj))	/* anything special for this class */
+		gog_persist_dom_save (GOG_PERSIST (obj), node);
+	if (IS_GOG_DATASET (obj))	/* convenience to save data */
+		gog_dataset_dom_save (GOG_DATASET (obj), node);
+
+	/* the children */
+	for (ptr = obj->children; ptr != NULL ; ptr = ptr->next)
+		xmlAddChild (node, gog_object_write_xml (ptr->data, doc));
+
+	return node;
+}
+
+GogObject *
+gog_object_new_from_xml (GogObject *parent, xmlNode *node)
+{
+	xmlChar   *role, *name, *val, *type_name;
+	xmlNode   *ptr;
+	GogObject *res = NULL;
+	gboolean explicitly_typed_role = FALSE;
+
+	type_name = xmlGetProp (node, (xmlChar const *) "type");
+	if (type_name != NULL) {
+		GType type = g_type_from_name (type_name);
+		if (type == 0) {
+			GogPlot *plot = gog_plot_new_by_name (type_name);
+			if (plot)
+				res = GOG_OBJECT (plot);
+			else {
+				GogRegCurve *curve = gog_reg_curve_new_by_name (type_name);
+				res = GOG_OBJECT (curve);
+			}
+		} else
+			res = g_object_new (type, NULL);
+		xmlFree (type_name);
+		explicitly_typed_role = TRUE;
+		g_return_val_if_fail (res != NULL, NULL);
+	}
+	role = xmlGetProp (node, (xmlChar const *) "role");
+	if (role == NULL) {
+		g_return_val_if_fail (parent == NULL, NULL);
+	} else {
+		res = gog_object_add_by_name (parent, role, res);
+		xmlFree (role);
+	}
+
+	g_return_val_if_fail (res != NULL, NULL);
+
+	res->explicitly_typed_role = explicitly_typed_role;
+
+	if (IS_GOG_PERSIST (res))
+		gog_persist_dom_load (GOG_PERSIST (res), node);
+	if (IS_GOG_DATASET (res))	/* convenience to save data */
+		gog_dataset_load (GOG_DATASET (res), node);
+
+	for (ptr = node->xmlChildrenNode ; ptr != NULL ; ptr = ptr->next) {
+		if (xmlIsBlankNode (ptr) || ptr->name == NULL)
+			continue;
+		if (!strcmp (ptr->name, "property")) {
+			name = xmlGetProp (ptr, "name");
+			if (name == NULL) {
+				g_warning ("missing name for property entry");
+				continue;
+			}
+			val = xmlNodeGetContent (ptr);
+			gog_object_set_arg_full (name, val, res, ptr);
+			xmlFree (val);
+			xmlFree (name);
+		} else if (!strcmp (ptr->name, "GogObject"))
+			gog_object_new_from_xml (res, ptr);
+	}
+	return res;
+}
+
+void
+go_xml_out_add_color (GsfXMLOut *output, char const *id, GOColor c)
+{
+	char *str = go_color_as_str (c);
+	gsf_xml_out_add_cstr_unchecked (output, id, str);
+	g_free (str);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object-xml.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,64 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-object-xml.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_OBJECT_XML_H
+#define GOG_OBJECT_XML_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/utils/goffice-utils.h>
+#include <glib-object.h>
+#include <libxml/tree.h>
+#include <gsf/gsf-libxml.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GogPersist GogPersist;
+
+typedef struct {
+	GTypeInterface base;
+
+	gboolean (*dom_load) (GogPersist *gp, xmlNode *node);
+	void     (*dom_save) (GogPersist const *gp, xmlNode *parent);
+	void     (*sax_save) (GogPersist const *gp, GsfXMLOut *output);
+} GogPersistClass;
+
+#define GOG_PERSIST_TYPE	 (gog_persist_get_type ())
+#define GOG_PERSIST(o)		 (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PERSIST_TYPE, GogPersist))
+#define IS_GOG_PERSIST(o)	 (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PERSIST_TYPE))
+#define GOG_PERSIST_CLASS(k)	 (G_TYPE_CHECK_CLASS_CAST ((k), GOG_PERSIST_TYPE, GogPersistClass))
+#define IS_GOG_PERSIST_CLASS(k)	 (G_TYPE_CHECK_CLASS_TYPE ((k), GOG_PERSIST_TYPE))
+#define GOG_PERSIST_GET_CLASS(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GOG_PERSIST_TYPE, GogPersistClass))
+
+GType gog_persist_get_type (void);
+
+gboolean gog_persist_dom_load (GogPersist *gp, xmlNode *node);
+void     gog_persist_dom_save (GogPersist const *gp, xmlNode *parent);
+void     gog_persist_sax_save (GogPersist const *gp, GsfXMLOut *output);
+
+void	   gog_object_set_arg	   (char const *name, char const *val, GogObject *obj);
+void	   gog_object_write_xml_sax(GogObject const *obj, GsfXMLOut *output);
+xmlNode   *gog_object_write_xml	   (GogObject *obj, xmlDoc *doc);
+GogObject *gog_object_new_from_xml (GogObject *parent, xmlNode *node);
+
+void	   go_xml_out_add_color (GsfXMLOut *out, char const *id, GOColor c);
+
+G_END_DECLS
+
+#endif /* GOG_OBJECT_XML_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1663 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-object.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-graph-impl.h> /* for gog_graph_request_update */
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/data/go-data.h>
+#include <goffice/gtk/goffice-gtk.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtknotebook.h>
+#include <gtk/gtksizegroup.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtkwidget.h>
+
+#ifndef HAVE_GLIB26
+#include "glib24_26-compat.h"
+#endif
+
+GogEditor *
+gog_editor_new (void)
+{
+	GogEditor *editor = g_new (GogEditor, 1);
+
+	editor->store_page = NULL;
+	editor->pages = NULL;
+
+	return editor;
+}
+
+void
+gog_editor_add_page (GogEditor *editor, gpointer widget, char const *label)
+{
+	GogEditorPage *page;
+
+	g_return_if_fail (editor != NULL);
+	page = g_new (GogEditorPage, 1);
+
+	page->widget = widget;
+	page->label = label;
+
+	editor->pages = g_slist_prepend (editor->pages, page);
+}
+
+void
+gog_editor_set_store_page (GogEditor *editor, unsigned *store_page)
+{
+	g_return_if_fail (editor != NULL);
+
+	editor->store_page = store_page;
+}
+
+static void
+cb_switch_page (G_GNUC_UNUSED GtkNotebook *n, G_GNUC_UNUSED GtkNotebookPage *p,
+		guint page_num, guint *store_page)
+{
+		*store_page = page_num;
+}
+
+gpointer
+gog_editor_get_notebook (GogEditor *editor)
+{
+	GtkWidget *notebook;
+	GogEditorPage *page;
+	GSList *ptr;
+	unsigned page_count = 0;
+
+	notebook = gtk_notebook_new ();
+	if (editor->pages != NULL) {
+		for (ptr = editor->pages; ptr != NULL; ptr = ptr->next) {
+			page = (GogEditorPage *) ptr->data;
+			gtk_notebook_prepend_page (GTK_NOTEBOOK (notebook),
+						   GTK_WIDGET (page->widget),
+						   gtk_label_new (page->label));
+			gtk_widget_show (page->widget);
+			page_count ++;
+		}
+	} else {
+		/* Display a blank page */
+		GtkWidget *label =  gtk_label_new (NULL);
+		gtk_notebook_prepend_page (GTK_NOTEBOOK (notebook),
+					   label, NULL);
+		gtk_widget_show (label);
+		page_count = 1;
+	}
+
+	if (page_count == 1)
+		gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
+
+	if (editor->store_page != NULL) {
+		gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), *editor->store_page);
+		g_signal_connect (G_OBJECT (notebook),
+				  "switch_page",
+				  G_CALLBACK (cb_switch_page), editor->store_page);
+	} else
+		gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0);
+
+	return notebook;
+}
+
+void
+gog_editor_free (GogEditor *editor)
+{
+	g_slist_foreach (editor->pages, (GFunc) g_free, NULL);
+	g_slist_free (editor->pages);
+
+	g_free (editor);
+}
+
+typedef struct {
+	char const *label;
+	char const *value;
+	unsigned const flags; 
+} GogPositionFlagDesc;
+
+static GogPositionFlagDesc const position_compass[] = {
+	{N_("Top"), 		"top",		GOG_POSITION_N},
+	{N_("Top right"), 	"top-righ",	GOG_POSITION_N|GOG_POSITION_E},
+	{N_("Right"), 		"right",	GOG_POSITION_E},
+	{N_("Bottom right"), 	"bottom-righ",	GOG_POSITION_E|GOG_POSITION_S},
+	{N_("Bottom"),		"bottom",	GOG_POSITION_S},
+	{N_("Bottom left"),	"bottom-left",	GOG_POSITION_S|GOG_POSITION_W},
+	{N_("Left"),		"left",		GOG_POSITION_W},
+	{N_("Top left"),	"top-left",	GOG_POSITION_W|GOG_POSITION_N}
+};
+
+static GogPositionFlagDesc const position_alignment[] = {
+	{N_("Fill"), 	"fill",		GOG_POSITION_ALIGN_FILL},
+	{N_("Start"), 	"start",	GOG_POSITION_ALIGN_START},
+	{N_("End"), 	"end",		GOG_POSITION_ALIGN_END},
+	{N_("Center"), 	"center",	GOG_POSITION_ALIGN_CENTER}
+};
+
+static GogPositionFlagDesc const position_anchor[] = {
+	{N_("Top left"), 	"top-left",	GOG_POSITION_ANCHOR_NW},
+	{N_("Top"), 		"top",		GOG_POSITION_ANCHOR_N},
+	{N_("Top right"), 	"top-right",	GOG_POSITION_ANCHOR_NE},
+	{N_("Left"), 		"left",		GOG_POSITION_ANCHOR_W},
+	{N_("Center"), 		"center",	GOG_POSITION_ANCHOR_CENTER},
+	{N_("Right"), 		"right",	GOG_POSITION_ANCHOR_E},
+	{N_("Bottom left"), 	"bottom-left",	GOG_POSITION_ANCHOR_SW},
+	{N_("Bottom"), 		"bottom",	GOG_POSITION_ANCHOR_S},
+	{N_("Bottom right"),	"bottom-right",	GOG_POSITION_ANCHOR_SE}
+};
+
+enum {
+	OBJECT_PROP_0,
+	OBJECT_PROP_ID,
+	OBJECT_PROP_POSITION,
+	OBJECT_PROP_POSITION_COMPASS,
+	OBJECT_PROP_POSITION_ALIGNMENT,
+	OBJECT_PROP_POSITION_IS_MANUAL,
+	OBJECT_PROP_POSITION_ANCHOR,
+};
+
+enum {
+	CHILD_ADDED,
+	CHILD_REMOVED,
+	CHILD_NAME_CHANGED,
+	CHILDREN_REORDERED,
+	NAME_CHANGED,
+	CHANGED,
+	LAST_SIGNAL
+};
+static gulong gog_object_signals [LAST_SIGNAL] = { 0, };
+
+static GObjectClass *parent_klass;
+
+static void gog_object_set_id (GogObject *obj, unsigned id);
+
+static void
+gog_object_finalize (GObject *gobj)
+{
+	GogObject *obj = GOG_OBJECT (gobj);
+
+	g_free (obj->user_name); obj->user_name = NULL;
+	g_free (obj->auto_name); obj->auto_name = NULL;
+
+	g_slist_foreach (obj->children, (GFunc) g_object_unref, NULL);
+	g_slist_free (obj->children);
+	obj->children = NULL;
+
+	(parent_klass->finalize) (gobj);
+}
+
+static void
+gog_object_parent_changed (GogObject *child, gboolean was_set)
+{
+	GSList *ptr = child->children;
+	for (; ptr != NULL ; ptr = ptr->next) {
+		GogObjectClass *klass = GOG_OBJECT_GET_CLASS (ptr->data);
+		(*klass->parent_changed) (ptr->data, was_set);
+	}
+
+	if (IS_GOG_DATASET (child))
+		gog_dataset_parent_changed (GOG_DATASET (child), was_set);
+}
+
+static void
+gog_object_set_property (GObject *obj, guint param_id,
+			 GValue const *value, GParamSpec *pspec)
+{
+	GogObject *gobj = GOG_OBJECT (obj);
+	char const *str;
+	char **str_doubles;
+	unsigned id;
+
+	switch (param_id) {
+	case OBJECT_PROP_ID:
+		id = g_value_get_uint (value);
+		gog_object_set_id (gobj, id);
+		break;
+	case OBJECT_PROP_POSITION:
+		str = g_value_get_string (value);
+		str_doubles = g_strsplit (str, " ", 4);
+		if (g_strv_length (str_doubles) != 4) {
+			g_strfreev (str_doubles);
+			break;
+		}
+		gobj->manual_position.x = g_ascii_strtod (str_doubles[0], NULL);
+		gobj->manual_position.y = g_ascii_strtod (str_doubles[1], NULL);
+		gobj->manual_position.w = g_ascii_strtod (str_doubles[2], NULL);
+		gobj->manual_position.h = g_ascii_strtod (str_doubles[3], NULL);
+		g_strfreev (str_doubles);
+		break;
+	case OBJECT_PROP_POSITION_COMPASS:
+		str = g_value_get_string (value);
+		if (str == NULL)
+			break;
+		for (id = 0; id < G_N_ELEMENTS (position_compass); id++)
+			if (strcmp (str, position_compass[id].value) == 0) 
+				break;
+		if (id < G_N_ELEMENTS (position_compass))
+			gog_object_set_position_flags (gobj, 
+						       position_compass[id].flags, 
+						       GOG_POSITION_COMPASS);
+		break;
+	case OBJECT_PROP_POSITION_ALIGNMENT:
+		str = g_value_get_string (value);
+		if (str == NULL)
+			break;
+		for (id = 0; id < G_N_ELEMENTS (position_alignment); id++)
+			if (strcmp (str, position_alignment[id].value) == 0) 
+				break;
+		if (id < G_N_ELEMENTS (position_alignment))
+			gog_object_set_position_flags (gobj, 
+						       position_alignment[id].flags, 
+						       GOG_POSITION_ALIGNMENT);
+		break;
+	case OBJECT_PROP_POSITION_IS_MANUAL:
+		gog_object_set_position_flags (gobj,
+			g_value_get_boolean (value) ? GOG_POSITION_MANUAL : 0,
+			GOG_POSITION_MANUAL);
+		break;
+	case OBJECT_PROP_POSITION_ANCHOR:
+		str = g_value_get_string (value);
+		if (str == NULL) 
+			break;
+		for (id = 0; id < G_N_ELEMENTS (position_anchor); id++)
+			if (strcmp (str, position_anchor[id].value) == 0) 
+				break;
+		if (id < G_N_ELEMENTS (position_anchor))
+			gog_object_set_position_flags (gobj, 
+						       position_anchor[id].flags, 
+						       GOG_POSITION_ANCHOR);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_object_get_property (GObject *obj, guint param_id,
+		       GValue *value, GParamSpec *pspec)
+{
+	GogObject *gobj = GOG_OBJECT (obj);
+	GogObjectPosition flags;
+	GString *string;
+	char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+	unsigned i;
+
+	switch (param_id) {
+	case OBJECT_PROP_ID:
+		g_value_set_uint (value, GOG_OBJECT (obj)->id);
+		break;
+	case OBJECT_PROP_POSITION:
+		string = g_string_new ("");
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), gobj->manual_position.x));
+		g_string_append_c (string, ' ');
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), gobj->manual_position.y));
+		g_string_append_c (string, ' ');
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), gobj->manual_position.w));
+		g_string_append_c (string, ' ');
+		g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), gobj->manual_position.h));
+		g_value_set_string (value, string->str);
+		g_string_free (string, TRUE);
+		break;
+	case OBJECT_PROP_POSITION_COMPASS:
+		flags = gog_object_get_position_flags (GOG_OBJECT (obj), GOG_POSITION_COMPASS);
+		for (i = 0; i < G_N_ELEMENTS (position_compass); i++)
+			if (position_compass[i].flags == flags) {
+				g_value_set_string (value, position_compass[i].value);
+				break;
+			}
+		break;	
+	case OBJECT_PROP_POSITION_ALIGNMENT:
+		flags = gog_object_get_position_flags (GOG_OBJECT (obj), GOG_POSITION_ALIGNMENT);
+		for (i = 0; i < G_N_ELEMENTS (position_alignment); i++)
+			if (position_alignment[i].flags == flags) {
+				g_value_set_string (value, position_alignment[i].value);
+				break;
+			}
+		break;	
+	case OBJECT_PROP_POSITION_IS_MANUAL:
+		g_value_set_boolean (value, (gobj->position & GOG_POSITION_MANUAL) != 0);
+		break;
+	case OBJECT_PROP_POSITION_ANCHOR:
+		flags = gog_object_get_position_flags (GOG_OBJECT (obj), GOG_POSITION_ANCHOR);
+		for (i = 0; i < G_N_ELEMENTS (position_anchor); i++)
+			if (position_anchor[i].flags == flags) {
+				g_value_set_string (value, position_anchor[i].value);
+				break;
+			}
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+typedef struct {
+	GtkWidget	*x_spin, *y_spin, *w_spin, *h_spin;
+	GtkWidget	*manual_toggle;
+	GogObject	*gobj;
+	GladeXML	*gui;
+} ObjectPrefState;
+
+static void
+object_pref_state_free (ObjectPrefState *state) 
+{
+	g_object_unref (state->gobj);
+	g_object_unref (state->gui);
+}
+
+
+static void
+cb_compass_changed (GtkComboBox *combo, ObjectPrefState *state)
+{
+	GogObjectPosition position = position_compass[gtk_combo_box_get_active (combo)].flags;
+
+	gog_object_set_position_flags (state->gobj, position, GOG_POSITION_COMPASS);
+}
+
+static void
+cb_alignment_changed (GtkComboBox *combo, ObjectPrefState *state)
+{
+	GogObjectPosition position = position_alignment[gtk_combo_box_get_active (combo)].flags;
+
+	gog_object_set_position_flags (state->gobj, position, GOG_POSITION_ALIGNMENT);
+}
+
+static void
+cb_position_changed (GtkWidget *spin, ObjectPrefState *state)
+{
+	GogViewAllocation pos;
+	double value = gtk_spin_button_get_value (GTK_SPIN_BUTTON (spin)) / 100.0;
+
+       	gog_object_get_manual_position (state->gobj, &pos);
+	if (spin == state->x_spin)
+		pos.x = value;
+	else if (spin == state->y_spin)
+		pos.y = value;
+	else if (spin == state->w_spin)
+		pos.w = value;
+	else if (spin == state->h_spin)
+		pos.h = value;
+	gog_object_set_manual_position (state->gobj, &pos);
+	if (state->manual_toggle != NULL)
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->manual_toggle), TRUE);
+}
+
+static void
+cb_manual_position_changed (GtkToggleButton *button, ObjectPrefState *state)
+{
+	gog_object_set_position_flags (state->gobj, 
+		gtk_toggle_button_get_active (button) ? GOG_POSITION_MANUAL : 0, 
+		GOG_POSITION_MANUAL);
+}
+
+static void
+cb_anchor_changed (GtkComboBox *combo, ObjectPrefState *state)
+{
+	GogObjectPosition position = position_anchor[gtk_combo_box_get_active (combo)].flags;
+
+	gog_object_set_position_flags (state->gobj, position, GOG_POSITION_ANCHOR);
+	if (state->manual_toggle != NULL)
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (state->manual_toggle), TRUE);
+}
+
+static void
+gog_object_populate_editor (GogObject *gobj, 
+			    GogEditor *editor, 
+			    G_GNUC_UNUSED GogDataAllocator *dalloc, 
+			    GOCmdContext *cc)
+{
+	GtkWidget *w;
+	GtkSizeGroup *widget_size_group, *label_size_group;
+	GladeXML *gui;
+	GogObjectClass *gog_klass;
+	GogObjectPosition allowable_positions, flags;
+	ObjectPrefState *state;
+	unsigned i;
+	
+	if (gobj->role == NULL) 
+		return;
+
+	gog_klass = GOG_OBJECT_GET_CLASS (gobj);
+	
+       	allowable_positions = gobj->role->allowable_positions;
+	if (!(allowable_positions & (GOG_POSITION_MANUAL | GOG_POSITION_COMPASS)))
+		return;	
+
+	gui = go_libglade_new ("gog-object-prefs.glade", "gog_object_prefs", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	state = g_new (ObjectPrefState, 1);
+	state->gobj = gobj;
+	state->gui = gui;
+	state->manual_toggle = NULL;
+	g_object_ref (G_OBJECT (gobj));
+
+	widget_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+	label_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+	if (allowable_positions & GOG_POSITION_COMPASS) {
+		w = glade_xml_get_widget (gui, "position_combo");
+		gtk_size_group_add_widget (widget_size_group, w);
+		flags = gog_object_get_position_flags (gobj, GOG_POSITION_COMPASS);
+		for (i = 0; i < G_N_ELEMENTS (position_compass); i++) { 
+			gtk_combo_box_append_text (GTK_COMBO_BOX (w), _(position_compass[i].label));
+			if (position_compass[i].flags == flags)
+				gtk_combo_box_set_active (GTK_COMBO_BOX (w), i);
+		}
+		g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (cb_compass_changed), state);
+		w = glade_xml_get_widget (gui, "position_label");
+		gtk_size_group_add_widget (label_size_group, w);
+	} else {
+		w = glade_xml_get_widget (gui, "compass_position");
+		gtk_widget_hide (w);
+	}
+
+
+	if (allowable_positions & GOG_POSITION_COMPASS) {
+		w = glade_xml_get_widget (gui, "alignment_combo");
+		gtk_size_group_add_widget (widget_size_group, w);
+		flags = gog_object_get_position_flags (gobj, GOG_POSITION_ALIGNMENT);
+		for (i = 0; i < G_N_ELEMENTS (position_alignment); i++) { 
+			gtk_combo_box_append_text (GTK_COMBO_BOX (w), _(position_alignment[i].label));
+			if (position_alignment[i].flags == flags)
+				gtk_combo_box_set_active (GTK_COMBO_BOX (w), i);
+		}
+		g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (cb_alignment_changed), state);
+		w = glade_xml_get_widget (gui, "alignment_label");
+		gtk_size_group_add_widget (label_size_group, w);
+	} else {
+		w = glade_xml_get_widget (gui, "compass_alignment");
+		gtk_widget_hide (w);
+	}
+
+	if (!(allowable_positions & GOG_POSITION_COMPASS)) {
+		w =glade_xml_get_widget (gui, "automatic_position_box");
+		gtk_widget_hide (w);
+	}
+	
+	g_object_unref (G_OBJECT (widget_size_group));
+	g_object_unref (G_OBJECT (label_size_group));
+
+	widget_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+	label_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+	
+	if (allowable_positions & GOG_POSITION_MANUAL) {
+		w = glade_xml_get_widget (gui, "x_label");
+		gtk_size_group_add_widget (label_size_group, w);
+		w = glade_xml_get_widget (gui, "x_spin");
+		gtk_size_group_add_widget (widget_size_group, w);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), gobj->manual_position.x * 100.0);
+		g_signal_connect (G_OBJECT (w), "value-changed", G_CALLBACK (cb_position_changed), state);
+		state->x_spin = w;
+		
+		w = glade_xml_get_widget (gui, "y_label");
+		gtk_size_group_add_widget (label_size_group, w);
+		w = glade_xml_get_widget (gui, "y_spin");
+		gtk_size_group_add_widget (widget_size_group, w);
+		gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), gobj->manual_position.y * 100.0);
+		g_signal_connect (G_OBJECT (w), "value-changed", G_CALLBACK (cb_position_changed), state);
+		state->y_spin = w;
+
+		w = glade_xml_get_widget (gui, "anchor_label");
+		gtk_size_group_add_widget (label_size_group, w);
+		w =  glade_xml_get_widget (gui, "anchor_combo");
+		flags = gog_object_get_position_flags (gobj, GOG_POSITION_ANCHOR);
+		for (i = 0; i < G_N_ELEMENTS (position_anchor); i++) {
+			gtk_combo_box_append_text (GTK_COMBO_BOX (w), _(position_anchor[i].label));
+			if (i == 0 || position_anchor[i].flags == flags)
+				gtk_combo_box_set_active (GTK_COMBO_BOX (w), i);
+		}
+		g_signal_connect (G_OBJECT (w), "changed", G_CALLBACK (cb_anchor_changed), state);
+		gtk_combo_box_set_wrap_width (GTK_COMBO_BOX (w), 3);
+		
+		if (gog_klass->can_manual_size) {
+			w = glade_xml_get_widget (gui, "width_label");
+			gtk_size_group_add_widget (label_size_group, w);
+			w = glade_xml_get_widget (gui, "width_spin");
+			gtk_size_group_add_widget (widget_size_group, w);
+			gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), gobj->manual_position.w * 100.0);
+			g_signal_connect (G_OBJECT (w), "value-changed", 
+					  G_CALLBACK (cb_position_changed), state);
+			state->w_spin = w;
+
+			w = glade_xml_get_widget (gui, "height_label");
+			gtk_size_group_add_widget (label_size_group, w);
+			w = glade_xml_get_widget (gui, "height_spin");
+			gtk_size_group_add_widget (widget_size_group, w);
+			gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), gobj->manual_position.h * 100.0);
+			g_signal_connect (G_OBJECT (w), "value-changed", 
+					  G_CALLBACK (cb_position_changed), state);
+			state->h_spin = w;
+		} else {
+			w = glade_xml_get_widget (gui, "manual_sizes");
+			gtk_widget_hide (w);
+		}
+	}
+
+	g_object_unref (G_OBJECT (widget_size_group));
+	g_object_unref (G_OBJECT (label_size_group));
+
+	w = glade_xml_get_widget (gui, "manual_position_button");
+	if ((allowable_positions & GOG_POSITION_MANUAL) &&
+	    ((allowable_positions & (GOG_POSITION_COMPASS | GOG_POSITION_ALIGNMENT)) ||
+	     (allowable_positions & GOG_POSITION_SPECIAL))) {
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), 
+				       gog_object_get_position_flags (gobj, GOG_POSITION_MANUAL) != 0);
+		g_signal_connect (G_OBJECT (w), "toggled", G_CALLBACK (cb_manual_position_changed), state);
+		state->manual_toggle = w;
+	} else {
+		gtk_widget_hide (w);
+	}
+
+	w = glade_xml_get_widget (gui, "gog_object_prefs");
+	g_object_set_data_full (G_OBJECT (w), "state", state, 
+				(GDestroyNotify) object_pref_state_free);  
+	gog_editor_add_page (editor, w, _("Position"));
+}
+
+static void
+gog_object_base_init (GogObjectClass *klass)
+{
+	klass->roles_allocated = FALSE;
+	/* klass->roles might be non-NULL; in that case, it points to
+	   the roles hash of the superclass. */
+}
+
+static void
+gog_object_base_finalize (GogObjectClass *klass)
+{
+	if (klass->roles_allocated)
+		g_hash_table_destroy (klass->roles);
+}
+
+static void
+gog_object_class_init (GObjectClass *klass)
+{
+	GogObjectClass *gog_klass = (GogObjectClass *)klass;
+	parent_klass = g_type_class_peek_parent (klass);
+
+	klass->finalize = gog_object_finalize;
+	klass->set_property	= gog_object_set_property;
+	klass->get_property	= gog_object_get_property;
+
+	gog_klass->parent_changed  = gog_object_parent_changed;
+	gog_klass->populate_editor = gog_object_populate_editor;
+
+	gog_klass->can_manual_size = FALSE;
+	gog_klass->use_parent_as_proxy = FALSE;
+
+	g_object_class_install_property (klass, OBJECT_PROP_ID,
+		g_param_spec_uint ("id", "id", "Object ID",
+				   0, G_MAXINT, 0,
+				   G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (klass, OBJECT_PROP_POSITION,
+		g_param_spec_string ("position", "Position", 
+				     "Position and size of object, in percentage of parent size",
+				     "0 0 1 1", G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (klass, OBJECT_PROP_POSITION_COMPASS,
+		g_param_spec_string ("compass", "Compass",
+				     "Compass auto position flags",
+				     "top", G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (klass, OBJECT_PROP_POSITION_ALIGNMENT,
+		g_param_spec_string ("alignment", "Alignment",
+				     "Alignment flag",
+				     "fill", G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (klass, OBJECT_PROP_POSITION_IS_MANUAL,
+		g_param_spec_boolean ("is-position-manual", "Is position manual", 
+				      "Is position manual",
+				      FALSE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (klass, OBJECT_PROP_POSITION_ANCHOR,
+		g_param_spec_string ("anchor", "Anchor",
+				     "Anchor for manual position",
+				     "top-left", G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+
+	gog_object_signals [CHILD_ADDED] = g_signal_new ("child-added",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogObjectClass, child_added),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__OBJECT,
+		G_TYPE_NONE,	1, G_TYPE_OBJECT);
+	gog_object_signals [CHILD_REMOVED] = g_signal_new ("child-removed",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogObjectClass, child_removed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__OBJECT,
+		G_TYPE_NONE,	1, G_TYPE_OBJECT);
+	gog_object_signals [CHILD_NAME_CHANGED] = g_signal_new ("child-name-changed",
+		G_TYPE_FROM_CLASS (gog_klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogObjectClass, child_name_changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__OBJECT,
+		G_TYPE_NONE,	1, G_TYPE_OBJECT);
+	gog_object_signals [CHILDREN_REORDERED] = g_signal_new ("children-reordered",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogObjectClass, children_reordered),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__VOID,
+		G_TYPE_NONE, 0);
+	gog_object_signals [NAME_CHANGED] = g_signal_new ("name-changed",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogObjectClass, name_changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__VOID,
+		G_TYPE_NONE, 0);
+	gog_object_signals [CHANGED] = g_signal_new ("changed",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogObjectClass, changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__BOOLEAN,
+		G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+}
+
+static void
+gog_object_init (GogObject *obj)
+{
+	obj->children = NULL;
+	obj->user_name = NULL;
+	obj->auto_name = NULL;
+	obj->id = 0;
+	obj->needs_update = FALSE;
+	obj->being_updated = FALSE;
+	obj->manual_position.x =
+	obj->manual_position.y = 0.0;
+	obj->manual_position.w =
+	obj->manual_position.h = 1.0;
+}
+
+GSF_CLASS_FULL (GogObject, gog_object,
+		gog_object_base_init, gog_object_base_finalize,
+		gog_object_class_init, NULL, gog_object_init,
+		G_TYPE_OBJECT, 0, {})
+
+static gboolean
+gog_object_is_same_type (GogObject *obj_a, GogObject *obj_b)
+{
+	g_return_val_if_fail (obj_a->role != NULL, FALSE);
+	g_return_val_if_fail (obj_b->role != NULL, FALSE);
+
+	if (obj_a->role->naming_conv != obj_b->role->naming_conv)
+		return FALSE;
+
+	if (obj_a->role->naming_conv == GOG_OBJECT_NAME_BY_ROLE)
+		return (obj_a->role == obj_b->role);
+
+	return (G_OBJECT_TYPE (obj_a) == G_OBJECT_TYPE (obj_b));
+}
+
+static void
+gog_object_generate_name (GogObject *obj)
+{
+	GogObjectClass *klass = GOG_OBJECT_GET_CLASS (obj);
+	char const *type_name;
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (obj->role != NULL);
+
+	switch (obj->role->naming_conv) {
+	default :
+	case GOG_OBJECT_NAME_MANUALLY :
+		g_warning ("Role %s should not be autogenerating names",
+			   obj->role->id);
+
+	case GOG_OBJECT_NAME_BY_ROLE :
+		g_return_if_fail (obj->role != NULL);
+		type_name = _(obj->role->id);
+		break;
+
+	case GOG_OBJECT_NAME_BY_TYPE :
+		g_return_if_fail (klass->type_name != NULL);
+		type_name = _((*klass->type_name) (obj));
+		break;
+	}
+
+	if (type_name == NULL)
+		type_name =  "BROKEN";
+
+	g_free (obj->auto_name);
+	obj->auto_name =  g_strdup_printf ("%s%d", type_name, obj->id);
+}
+
+unsigned
+gog_object_get_id (GogObject const *obj)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, 0);
+	g_return_val_if_fail (obj != 0, 0);
+
+	return obj->id;
+}
+
+static void
+gog_object_generate_id (GogObject *obj)
+{
+	GSList *ptr;
+	unsigned id_max = 0;
+	GogObject *child;
+
+	obj->id = 0;
+
+	if (obj->parent == NULL)
+		return;
+
+	for (ptr = obj->parent->children; ptr != NULL ; ptr = ptr->next) {
+		child = GOG_OBJECT (ptr->data);
+		if (gog_object_is_same_type (obj, child))
+		    id_max = MAX (child->id, id_max);
+	}
+	obj->id = id_max + 1;
+
+	gog_object_generate_name (obj);
+}
+
+static void
+gog_object_set_id (GogObject *obj, unsigned id)
+{
+	gboolean found = FALSE;
+	GSList *ptr;
+	GogObject *child;
+
+	g_return_if_fail (GOG_OBJECT (obj) != NULL);
+
+	if (id == 0)
+		return gog_object_generate_id (obj);
+
+	g_return_if_fail (GOG_OBJECT (obj)->parent != NULL);
+
+	for (ptr = obj->parent->children; ptr != NULL && !found; ptr = ptr->next) {
+		child = GOG_OBJECT (ptr->data);
+		found = child->id == id &&
+			gog_object_is_same_type (obj, child) &&
+			ptr->data != obj;
+		}
+
+	if (found) {
+		g_warning ("id %u already exists", id);
+		gog_object_generate_id (obj);
+		return;
+	}
+
+	if (id == obj->id)
+		return;
+
+	obj->id = id;
+	gog_object_generate_name (obj);
+}
+
+static void
+dataset_dup (GogDataset const *src, GogDataset *dst)
+{
+	gint	     n, last;
+	gog_dataset_dims (src, &n, &last);
+	for ( ; n <= last ; n++)
+		gog_dataset_set_dim (dst, n,
+			go_data_dup (gog_dataset_get_dim (src, n)),
+			NULL);
+}
+
+/**
+ * gog_object_dup :
+ * @src : #GogObject
+ * @new_parent : #GogObject the parent tree for the object (can be NULL)
+ * @datadup : a function to duplicate the data (a default one is used if NULL) 
+ *
+ * Create a deep copy of @obj using @new_parent as its parent.
+ **/
+
+GogObject *
+gog_object_dup (GogObject const *src, GogObject *new_parent, GogDataDuplicator datadup)
+{
+	gint	     n;
+	GParamSpec **props;
+	GogObject   *dst = NULL;
+	GSList      *ptr;
+	GValue	     val = { 0 };
+
+	if (src == NULL)
+		return NULL;
+
+	g_return_val_if_fail (GOG_OBJECT (src) != NULL, NULL);
+
+	if (src->role == NULL || src->explicitly_typed_role)
+		dst = g_object_new (G_OBJECT_TYPE (src), NULL);
+	if (new_parent)
+		dst = gog_object_add_by_role (new_parent, src->role, dst);
+
+	dst->position = src->position;
+	/* properties */
+	props = g_object_class_list_properties (G_OBJECT_GET_CLASS (src), &n);
+	while (n-- > 0)
+		if (props[n]->flags & GOG_PARAM_PERSISTENT) {
+			g_value_init (&val, props[n]->value_type);
+			g_object_get_property (G_OBJECT (src), props[n]->name, &val);
+			g_object_set_property (G_OBJECT (dst), props[n]->name, &val);
+			g_value_unset (&val);
+		}
+	g_free (props);
+
+	if (IS_GOG_DATASET (src)) {	/* convenience to save data */
+		if (datadup)
+			datadup (GOG_DATASET (src), GOG_DATASET (dst));
+		else
+			dataset_dup (GOG_DATASET (src), GOG_DATASET (dst));
+	}
+
+	for (ptr = src->children; ptr != NULL ; ptr = ptr->next)
+		/* children added directly to new parent, no need to use the
+		 * function result */
+		gog_object_dup (ptr->data, dst, datadup);
+
+	return dst;
+}
+
+/**
+ * gog_object_get_parent :
+ * @obj : a #GogObject
+ *
+ * Returns @obj's parent, potentially NULL if it has not been added to a
+ * heirarchy yet.  does not change ref-count in any way.
+ **/
+GogObject *
+gog_object_get_parent (GogObject const *obj)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, NULL);
+	return obj->parent;
+}
+
+/**
+ * gog_object_get_parent_typed :
+ * @obj : a #GogObject
+ * @type : a #GType
+ *
+ * Returns @obj's parent of type @type, potentially NULL if it has not been
+ * added to a heirarchy yet or none of the parents are of type @type.
+ **/
+GogObject *
+gog_object_get_parent_typed (GogObject const *obj, GType t)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, NULL);
+
+	for (; obj != NULL ; obj = obj->parent)
+		if (G_TYPE_CHECK_INSTANCE_TYPE (obj, t))
+			return GOG_OBJECT (obj); /* const cast */
+	return NULL;
+}
+
+/**
+ * gog_object_get_graph :
+ * @obj : const * #GogObject
+ *
+ * Returns the parent graph.
+ **/
+GogGraph *
+gog_object_get_graph (GogObject const *obj)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, NULL);
+
+	for (; obj != NULL ; obj = obj->parent)
+		if (IS_GOG_GRAPH (obj))
+			return GOG_GRAPH (obj);
+	return NULL;
+}
+
+GogTheme *
+gog_object_get_theme (GogObject const *obj)
+{
+	GogGraph *graph = gog_object_get_graph (obj);
+
+	return (graph != NULL) ? gog_graph_get_theme (graph) : NULL;
+}
+
+/**
+ * gog_object_get_name :
+ * @obj : a #GogObject
+ *
+ * No need to free the result
+ **/
+char const *
+gog_object_get_name (GogObject const *obj)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, NULL);
+	return (obj->user_name != NULL && *obj->user_name != '\0') ? obj->user_name : obj->auto_name;
+}
+
+/**
+ * gog_object_set_name :
+ * @obj : #GogObject
+ * @name :
+ * @err : #GError
+ *
+ * Assign the new name and signals that it has changed.
+ * NOTE : it _absorbs_ @name rather than copying it, and generates a new name
+ * if @name == NULL
+ **/
+void
+gog_object_set_name (GogObject *obj, char *name, GError **err)
+{
+	GogObject *tmp;
+
+	g_return_if_fail (GOG_OBJECT (obj) != NULL);
+
+	if (obj->user_name == name)
+		return;
+	g_free (obj->user_name);
+	obj->user_name = name;
+
+	g_signal_emit (G_OBJECT (obj),
+		gog_object_signals [NAME_CHANGED], 0);
+
+	for (tmp = obj; tmp != NULL ; tmp = tmp->parent)
+		g_signal_emit (G_OBJECT (tmp),
+			gog_object_signals [CHILD_NAME_CHANGED], 0, obj);
+}
+
+/**
+ * gog_object_get_children :
+ * @obj : a #GogObject
+ * @filter : an optional #GogObjectRole to use as a filter
+ *
+ * The list needs to be Freed
+ **/
+GSList *
+gog_object_get_children (GogObject const *obj, GogObjectRole const *filter)
+{
+	GSList *ptr, *res = NULL;
+
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, NULL);
+
+	if (filter == NULL)
+		return g_slist_copy (obj->children);
+
+	for (ptr = obj->children ; ptr != NULL ; ptr = ptr->next)
+		if (GOG_OBJECT (ptr->data)->role == filter)
+			res = g_slist_prepend (res, ptr->data);
+	return g_slist_reverse (res);
+}
+
+/**
+ * gog_object_get_child_by_role :
+ * @obj : a #GogObject
+ * @role : a #GogObjectRole to use as a filter
+ *
+ * A convenience routine to handle a unique child
+ * Returns NULL and spews an error if there is more than one.
+ **/
+GogObject *
+gog_object_get_child_by_role (GogObject const *obj, GogObjectRole const *role)
+{
+	GogObject *res = NULL;
+	GSList *children = gog_object_get_children (obj, role);
+
+	if (children != NULL && children->next == NULL)
+		res = children->data;
+	g_slist_free (children);
+	return res;
+}
+
+/**
+ * gog_object_is_deletable :
+ * @obj : a #GogObject
+ *
+ * Can the specified @obj be deleted ?
+ **/
+gboolean
+gog_object_is_deletable (GogObject const *obj)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, FALSE);
+
+	if (IS_GOG_GRAPH (obj))
+		return FALSE;
+
+	return obj->role == NULL || obj->role->can_remove == NULL ||
+		(obj->role->can_remove) (obj);
+}
+
+struct possible_add_closure {
+	GSList *res;
+	GogObject const *parent;
+};
+
+static void
+cb_collect_possible_additions (char const *name, GogObjectRole const *role,
+			       struct possible_add_closure *data)
+{
+	if (role->can_add == NULL || (role->can_add) (data->parent))
+		data->res = g_slist_prepend (data->res, (gpointer)role);
+}
+
+static int
+gog_object_position_cmp (GogObjectPosition pos)
+{
+	if (pos & GOG_POSITION_COMPASS)
+		return 0;
+	if (GOG_POSITION_IS_SPECIAL (pos) ||
+	    GOG_POSITION_IS_PADDING (pos))
+		return 2;
+	return 1; /* GOG_POSITION_MANUAL */
+}
+
+static int
+gog_role_cmp (GogObjectRole const *a, GogObjectRole const *b)
+{
+	int index_a = gog_object_position_cmp (a->allowable_positions);
+	int index_b = gog_object_position_cmp (b->allowable_positions);
+
+	if (b->priority != a->priority)
+		return b->priority - a->priority;
+
+	/* intentionally reverse to put SPECIAL at the top */
+	if (index_a < index_b)
+		return 1;
+	else if (index_a > index_b)
+		return -1;
+	return 0;
+}
+
+static int
+gog_role_cmp_full (GogObjectRole const *a, GogObjectRole const *b)
+{
+	int res = gog_role_cmp (a, b);
+	if (res != 0)
+		return res;
+	return g_utf8_collate (a->id, b->id);
+}
+
+/**
+ * gog_object_possible_additions :
+ * @parent : a #GogObject
+ *
+ * returns a list of GogObjectRoles that could be added
+ *
+ * The resulting list needs to be freed
+ **/
+GSList *
+gog_object_possible_additions (GogObject const *parent)
+{
+	GogObjectClass *klass = GOG_OBJECT_GET_CLASS (parent);
+	g_return_val_if_fail (klass != NULL, NULL);
+
+	if (klass->roles != NULL) {
+		struct possible_add_closure data;
+		data.res = NULL;
+		data.parent = parent;
+
+		g_hash_table_foreach (klass->roles,
+			(GHFunc) cb_collect_possible_additions, &data);
+
+		return g_slist_sort (data.res, (GCompareFunc) gog_role_cmp_full);
+	}
+
+	return NULL;
+}
+
+/**
+ * gog_object_can_reorder :
+ * @obj : #GogObject
+ * @inc_ok : possibly NULL pointer.
+ * @dec_ok : possibly NULL pointer.
+ *
+ * If @obj can move forward or backward in its parents child list
+ **/
+void
+gog_object_can_reorder (GogObject const *obj, gboolean *inc_ok, gboolean *dec_ok)
+{
+	GogObject const *parent;
+	GSList *ptr;
+
+	g_return_if_fail (GOG_OBJECT (obj) != NULL);
+
+	if (inc_ok != NULL)
+		*inc_ok = FALSE;
+	if (dec_ok != NULL)
+		*dec_ok = FALSE;
+
+	if (obj->parent == NULL || gog_object_get_graph (obj) == NULL)
+		return;
+	parent = obj->parent;
+	ptr = parent->children;
+
+	g_return_if_fail (ptr != NULL);
+
+	/* find a pointer to the previous sibling */
+	if (ptr->data != obj) {
+		while (ptr->next != NULL && ptr->next->data != obj)
+			ptr = ptr->next;
+
+		g_return_if_fail (ptr->next != NULL);
+
+		if (inc_ok != NULL &&
+		    !gog_role_cmp (((GogObject *)ptr->data)->role, obj->role))
+			*inc_ok = TRUE;
+
+		ptr = ptr->next;
+	}
+
+	/* ptr now points at @obj */
+	if (dec_ok != NULL && ptr->next != NULL &&
+	    !gog_role_cmp (obj->role, ((GogObject *)ptr->next->data)->role))
+		*dec_ok = TRUE;
+}
+
+/**
+ * gog_object_reorder :
+ * @obj : #GogObject
+ * @inc :
+ * @goto_max :
+ *
+ * Returns the object just before @obj in the new ordering.
+ **/
+GogObject *
+gog_object_reorder (GogObject const *obj, gboolean inc, gboolean goto_max)
+{
+	GogObject *parent, *obj_follows;
+	GSList **ptr, *tmp;
+
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, NULL);
+
+	if (obj->parent == NULL || gog_object_get_graph (obj) == NULL)
+		return NULL;
+	parent = obj->parent;
+
+	if (inc)
+		parent->children = g_slist_reverse (parent->children);
+
+	for (ptr = &parent->children; *ptr != NULL && (*ptr)->data != obj ;)
+		ptr = &(*ptr)->next;
+
+	g_return_val_if_fail (*ptr != NULL, NULL);
+	g_return_val_if_fail ((*ptr)->next != NULL, NULL);
+
+	tmp = *ptr;
+	*ptr = tmp->next;
+	ptr = &(*ptr)->next;
+
+	while (goto_max && *ptr != NULL &&
+	       !gog_role_cmp (obj->role, ((GogObject *)((*ptr)->data))->role))
+		ptr = &(*ptr)->next;
+
+	tmp->next = *ptr;
+	*ptr = tmp;
+
+	if (inc)
+		parent->children = g_slist_reverse (parent->children);
+
+	if (parent->children->data != obj) {
+		for (tmp = parent->children ; tmp->next->data != obj ; )
+			tmp = tmp->next;
+		obj_follows = tmp->data;
+	} else
+		obj_follows = NULL;
+
+	/* Pass the sibling that precedes obj, or NULL if is the head */
+	g_signal_emit (G_OBJECT (parent),
+		gog_object_signals [CHILDREN_REORDERED], 0);
+	gog_object_emit_changed (parent, TRUE);
+
+	return obj_follows;
+}
+
+/**
+ * gog_object_get_editor :
+ * @obj   : #GogObject
+ * @dalloc : #GogDataAllocator
+ * @cc     : #GOCmdContext
+ *
+ **/
+
+gpointer
+gog_object_get_editor (GogObject *obj, GogDataAllocator *dalloc,
+		       GOCmdContext *cc)
+{
+	GtkWidget *notebook;
+	GogEditor *editor;
+	GogObjectClass *klass = GOG_OBJECT_GET_CLASS (obj);
+
+	g_return_val_if_fail (klass != NULL, NULL);
+
+	editor = gog_editor_new ();
+	if (klass->populate_editor) {
+		/* If there are pending updates do them before creating the editor
+		 * to avoid expensive widget changes later */
+		gog_graph_force_update (gog_object_get_graph (obj));
+		(*klass->populate_editor) (obj, editor, dalloc, cc);
+	}
+
+	notebook = gog_editor_get_notebook (editor);
+
+	gog_editor_free (editor);
+
+	return notebook;
+}
+
+/**
+ * gog_object_new_view :
+ * @obj : a #GogObject
+ * @data :
+ **/
+GogView *
+gog_object_new_view (GogObject const *obj, GogView *parent)
+{
+	GogObjectClass *klass = GOG_OBJECT_GET_CLASS (obj);
+
+	g_return_val_if_fail (klass != NULL, NULL);
+
+	if (klass->view_type != 0)
+		/* set model before parent */
+		return g_object_new (klass->view_type,
+			"model", obj,
+			"parent", parent,
+			NULL);
+
+	return NULL;
+}
+
+void
+gog_object_update (GogObject *obj)
+{
+	GogObjectClass *klass = GOG_OBJECT_GET_CLASS (obj);
+	GSList *ptr;
+
+	g_return_if_fail (klass != NULL);
+
+	ptr = obj->children; /* depth first */
+	for (; ptr != NULL ; ptr = ptr->next)
+		gog_object_update (ptr->data);
+
+	if (obj->needs_update) {
+		obj->needs_update = FALSE;
+		obj->being_updated = TRUE;
+		gog_debug (0, g_warning ("updating %s (%p)", G_OBJECT_TYPE_NAME (obj), obj););
+		if (klass->update != NULL)
+			(*klass->update) (obj);
+		obj->being_updated = FALSE;
+	}
+}
+
+gboolean
+gog_object_request_update (GogObject *obj)
+{
+	GogGraph *graph;
+	g_return_val_if_fail (GOG_OBJECT (obj), FALSE);
+	g_return_val_if_fail (!obj->being_updated, FALSE);
+
+	if (obj->needs_update)
+		return FALSE;
+
+	graph = gog_object_get_graph (obj);
+	if (graph == NULL) /* we are not linked into a graph yet */
+		return FALSE;
+
+	gog_graph_request_update (graph);
+	obj->needs_update = TRUE;
+
+	return TRUE;
+}
+
+void
+gog_object_emit_changed (GogObject *obj, gboolean resize)
+{
+	GogObjectClass *gog_klass;
+
+	g_return_if_fail (GOG_OBJECT (obj));
+
+	gog_klass = GOG_OBJECT_GET_CLASS (obj);
+
+	if (gog_klass->use_parent_as_proxy) {
+		obj = obj->parent;
+		if (obj != NULL) {
+			g_return_if_fail (IS_GOG_OBJECT (obj));
+			gog_object_emit_changed (obj, resize);
+		}
+		return;
+	}
+	g_signal_emit (G_OBJECT (obj),
+		gog_object_signals [CHANGED], 0, resize);
+}
+
+/******************************************************************************/
+
+/**
+ * gog_object_clear_parent :
+ * @obj : #GogObject
+ *
+ * Does _not_ unref the child, which in effect adds a ref by freeing up the ref
+ * previously associated with the parent.
+ **/
+gboolean
+gog_object_clear_parent (GogObject *obj)
+{
+	GogObjectClass *klass;
+	GogObject *parent;
+
+	g_return_val_if_fail (GOG_OBJECT (obj), FALSE);
+	g_return_val_if_fail (obj->parent != NULL, FALSE);
+	g_return_val_if_fail (gog_object_is_deletable (obj), FALSE);
+
+	klass = GOG_OBJECT_GET_CLASS (obj);
+	parent = obj->parent;
+	g_signal_emit (G_OBJECT (parent),
+		gog_object_signals [CHILD_REMOVED], 0, obj);
+	(*klass->parent_changed) (obj, FALSE);
+
+	if (obj->role != NULL && obj->role->pre_remove != NULL)
+		(obj->role->pre_remove) (parent, obj);
+
+	parent->children = g_slist_remove (parent->children, obj);
+	obj->parent = NULL;
+
+	if (obj->role != NULL && obj->role->post_remove != NULL)
+		(obj->role->post_remove) (parent, obj);
+
+	obj->role = NULL;
+
+	return TRUE;
+}
+
+/**
+ * gog_object_set_parent :
+ * @child  : #GogObject.
+ * @parent : #GogObject.
+ * @id : optionally %NULL.
+ * @role : a static string that can be sent to @parent::add
+ *
+ * Absorbs a ref to @child
+ **/
+gboolean
+gog_object_set_parent (GogObject *child, GogObject *parent,
+		       GogObjectRole const *role, unsigned id)
+{
+	GogObjectClass *klass;
+	GSList **step;
+
+	g_return_val_if_fail (GOG_OBJECT (child), FALSE);
+	g_return_val_if_fail (child->parent == NULL, FALSE);
+	g_return_val_if_fail (role != NULL, FALSE);
+
+	klass = GOG_OBJECT_GET_CLASS (child);
+	child->parent	= parent;
+	child->role	= role;
+	child->position = role->default_position;
+
+	/* Insert sorted based on hokey little ordering */
+	step = &parent->children;
+	while (*step != NULL &&
+	       gog_role_cmp_full (GOG_OBJECT ((*step)->data)->role, role) >= 0)
+		step = &((*step)->next);
+	*step = g_slist_prepend (*step, child);
+
+	if (id != 0)
+		gog_object_set_id (child, id);
+	else
+		gog_object_generate_id (child);
+
+	if (role->post_add != NULL)
+		(role->post_add) (parent, child);
+	(*klass->parent_changed) (child, TRUE);
+
+	g_signal_emit (G_OBJECT (parent),
+		gog_object_signals [CHILD_ADDED], 0, child);
+
+	return TRUE;
+}
+
+GogObject *
+gog_object_add_by_role (GogObject *parent, GogObjectRole const *role, GogObject *child)
+{
+	GType is_a;
+	gboolean const explicitly_typed_role = (child != NULL);
+
+	g_return_val_if_fail (role != NULL, NULL);
+	g_return_val_if_fail (GOG_OBJECT (parent) != NULL, NULL);
+
+	is_a = g_type_from_name (role->is_a_typename);
+
+	g_return_val_if_fail (is_a != 0, NULL);
+
+	if (child == NULL)
+		child = (role->allocate)
+			? (role->allocate) (parent)
+			: g_object_new (is_a, NULL);
+
+	g_return_val_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (child, is_a), NULL);
+	child->explicitly_typed_role = explicitly_typed_role;
+	if (gog_object_set_parent (child, parent, role, 0))
+		return child;
+	g_object_unref (child);
+	return NULL;
+}
+
+/**
+ * gog_object_add_by_name :
+ * @parent : #GogObject
+ * @role :
+ * @child : optionally null #GogObject
+ *
+ * Returns a newly created child of @parent in @role.  If @child is provided,
+ * it is assumed to be an unaffiliated object that will be assigned in @role.
+ * On failure return NULL.
+ **/
+GogObject *
+gog_object_add_by_name (GogObject *parent,
+			char const *role, GogObject *child)
+{
+	return gog_object_add_by_role (parent,
+		gog_object_find_role_by_name (parent, role), child);
+}
+
+/**
+ * gog_object_get_position_flags :
+ * @obj : #GogObject
+ * @mask : #GogObjectPosition
+ *
+ * Retrieve position flags of GogObject @obj, masked by @mask.
+ */
+GogObjectPosition
+gog_object_get_position_flags (GogObject const *obj, GogObjectPosition mask)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, GOG_POSITION_SPECIAL & mask);
+	return obj->position & mask;
+}
+
+/**
+ * gog_object_set_position_flags :
+ * @obj : #GogObject
+ * @flags : #GogObjectPosition
+ * @mask : #GogObjectPosition
+ *
+ * Attempts to set the position flags of @obj to @flags.
+ * Returns TRUE the new flags are permitted.
+ **/
+gboolean
+gog_object_set_position_flags (GogObject *obj, GogObjectPosition flags, GogObjectPosition mask)
+{
+	g_return_val_if_fail (GOG_OBJECT (obj) != NULL, FALSE);
+
+	if (obj->role == NULL)
+		return FALSE;
+
+	if ((obj->position & mask) == flags)
+		return TRUE;
+
+	if ((flags & obj->role->allowable_positions) !=
+	    (flags & (GOG_POSITION_COMPASS | GOG_POSITION_ANY_MANUAL))) {
+		g_warning ("[GogObject::set_position_flags] Invalid flags (%s)",
+			   gog_object_get_name (obj));
+		return FALSE;
+	}
+	obj->position = (obj->position & ~mask) | (flags & mask);
+	gog_object_emit_changed (obj, TRUE);
+	return TRUE;
+}
+
+/**
+ * gog_object_get_manual_position:
+ * @obj : #GogObject
+ *
+ * returns manual position of this object, in points.
+ **/
+void
+gog_object_get_manual_position (GogObject *gobj, GogViewAllocation *pos)
+{
+	g_return_if_fail (GOG_OBJECT (gobj) != NULL);
+
+	if (pos != NULL)
+		*pos = gobj->manual_position;
+}
+
+/**
+ * gog_object_set_manual_position:
+ * @obj : #GogObject
+ * @pos : #GogViewAllocation
+ *
+ * set manual position of given object, in points. 
+ **/
+void
+gog_object_set_manual_position (GogObject *gobj, GogViewAllocation const *pos)
+{
+	g_return_if_fail (GOG_OBJECT (gobj) != NULL);
+
+	if (gobj->manual_position.x == pos->x &&
+	    gobj->manual_position.y == pos->y &&
+	    gobj->manual_position.w == pos->w &&
+	    gobj->manual_position.h == pos->h)
+		return;
+
+	gobj->manual_position = *pos;
+	gog_object_emit_changed (gobj, TRUE);
+}
+
+/**
+ * gog_object_get_manual_allocation:
+ * @gobj : #GogObject
+ * @parent_allocation : #GogViewAllocation
+ * @requisition : #GogViewRequisition
+ *
+ * Returns manual allocation of a GogObject given its parent allocation
+ * and its size request.
+ **/
+GogViewAllocation
+gog_object_get_manual_allocation (GogObject *gobj,
+				  GogViewAllocation const *parent_allocation,
+				  GogViewRequisition const *requisition)
+{
+	GogViewAllocation pos;
+	unsigned anchor;
+
+	pos.x = parent_allocation->x + gobj->manual_position.x * parent_allocation->w;
+	pos.y = parent_allocation->y + gobj->manual_position.y * parent_allocation->h;
+
+	if (GOG_OBJECT_GET_CLASS (gobj)->can_manual_size) {
+		pos.w = gobj->manual_position.w * parent_allocation->w;
+		pos.h = gobj->manual_position.h * parent_allocation->h;
+	} else {
+		pos.w = requisition->w;
+		pos.h = requisition->h;
+	}
+	
+	anchor = gog_object_get_position_flags (gobj, GOG_POSITION_ANCHOR);
+			   
+	switch (anchor) {
+		case GOG_POSITION_ANCHOR_N:
+		case GOG_POSITION_ANCHOR_CENTER:
+		case GOG_POSITION_ANCHOR_S:
+			pos.x -= pos.w / 2.0;
+			break;
+		case GOG_POSITION_ANCHOR_SE:
+		case GOG_POSITION_ANCHOR_E:
+		case GOG_POSITION_ANCHOR_NE:
+			pos.x -= pos.w;
+			break;
+		default:
+			break;
+	}
+	switch (anchor) {
+		case GOG_POSITION_ANCHOR_E:
+		case GOG_POSITION_ANCHOR_CENTER:
+		case GOG_POSITION_ANCHOR_W:
+			pos.y -= pos.h / 2.0;
+			break;
+		case GOG_POSITION_ANCHOR_SE:
+		case GOG_POSITION_ANCHOR_S:
+		case GOG_POSITION_ANCHOR_SW:
+			pos.y -= pos.h;
+			break;
+		default:
+			break;
+	}
+
+	return pos;
+}
+
+GogObjectRole const *
+gog_object_find_role_by_name (GogObject const *obj, char const *role)
+{
+	GogObjectClass *klass = GOG_OBJECT_GET_CLASS (obj);
+
+	g_return_val_if_fail (klass != NULL, NULL);
+
+	return g_hash_table_lookup (klass->roles, role);
+}
+
+static void
+cb_copy_hash_table (gpointer key, gpointer value, GHashTable *hash_table)
+{
+	g_hash_table_insert (hash_table, key, value);
+}
+
+static void
+gog_object_allocate_roles (GogObjectClass *klass)
+{
+	GHashTable *roles = g_hash_table_new (g_str_hash, g_str_equal);
+
+	if (klass->roles != NULL)
+		g_hash_table_foreach (klass->roles,
+			(GHFunc) cb_copy_hash_table, roles);
+	klass->roles = roles;
+	klass->roles_allocated = TRUE;
+}
+
+void
+gog_object_register_roles (GogObjectClass *klass,
+			   GogObjectRole const *roles, unsigned n_roles)
+{
+	unsigned i;
+
+	if (!klass->roles_allocated)
+		gog_object_allocate_roles (klass);
+
+	for (i = 0 ; i < n_roles ; i++) {
+		g_return_if_fail (g_hash_table_lookup (klass->roles,
+			(gpointer )roles[i].id) == NULL);
+		g_hash_table_replace (klass->roles,
+			(gpointer )roles[i].id, (gpointer) (roles + i));
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-object.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,187 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-object.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_OBJECT_H
+#define GOG_OBJECT_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/app/goffice-app.h>
+#include <glib-object.h>
+#include <libart_lgpl/art_rect.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	char const	*label;		/* label for notebook page */
+	gpointer 	 widget;	/* GtkWidget* */	
+} GogEditorPage;
+
+typedef struct {
+	unsigned	*store_page;	/* pointer to a place for storing last edited page */
+	GSList		*pages;		/* GogEditorPage */
+} GogEditor;
+
+GogEditor	*gog_editor_new 		 (void);
+void		 gog_editor_add_page 		 (GogEditor *editor, gpointer widget, char const *label);
+void 		 gog_editor_set_store_page  	 (GogEditor *editor, unsigned *store_page);
+gpointer 	 gog_editor_get_notebook 	 (GogEditor *editor);
+void 		 gog_editor_free 		 (GogEditor *editor);
+
+typedef enum {
+	GOG_OBJECT_NAME_BY_ROLE	 = 1,
+	GOG_OBJECT_NAME_BY_TYPE  = 2,
+	GOG_OBJECT_NAME_MANUALLY = 3
+} GogObjectNamingConv;
+
+struct _GogObjectRole {
+	char const *id;	/* for persistence */
+	char const *is_a_typename;
+	unsigned    priority;
+
+	guint32		  	allowable_positions;
+	GogObjectPosition 	default_position;
+	GogObjectNamingConv	naming_conv;
+
+	gboolean   (*can_add)	  (GogObject const *parent);
+	gboolean   (*can_remove)  (GogObject const *child);
+	GogObject *(*allocate)    (GogObject *parent);
+	void	   (*post_add)    (GogObject *parent, GogObject *child);
+	void       (*pre_remove)  (GogObject *parent, GogObject *child);
+	void       (*post_remove) (GogObject *parent, GogObject *child);
+
+	union { /* allow people to tack some useful tidbits on the end */
+		int		i;
+		float		f;
+		gpointer	p;
+	} user;
+};
+
+struct _GogObject {
+	GObject		 base;
+
+	unsigned	 id;
+	char		*user_name;	/* user assigned, NULL will fall back to system generated */
+	char		*auto_name;	/* system generated, in current locale */
+	
+	GogObjectRole const *role;
+
+	GogObject	*parent;
+	GSList		*children;
+
+	GogObjectPosition  position;
+	GogViewAllocation  manual_position;
+
+	unsigned needs_update : 1;
+	unsigned being_updated : 1;
+	unsigned explicitly_typed_role : 1; /* did we create it automaticly */
+};
+
+typedef struct {
+	GObjectClass	base;
+
+	GHashTable *roles;
+	GType	    view_type;
+
+	unsigned use_parent_as_proxy : 1; /* when we change, pretend it was our parent */
+	unsigned can_manual_size : 1; 
+	unsigned roles_allocated : 1;
+
+	/* Virtuals */
+	void	     (*update)		(GogObject *obj);
+	void	     (*parent_changed)	(GogObject *obj, gboolean was_set);
+	char const  *(*type_name)	(GogObject const *obj);
+	void	     (*populate_editor)	(GogObject *obj, 
+					 GogEditor *editor,
+					 GogDataAllocator *dalloc, 
+					 GOCmdContext *cc);
+
+	/* signals */
+	void (*changed)		(GogObject *obj, gboolean size);
+	void (*name_changed)	(GogObject *obj);
+	void (*possible_additions_changed) (GogObject const *obj);
+	void (*child_added)	   (GogObject *parent, GogObject *child);
+	void (*child_removed)	   (GogObject *parent, GogObject *child);
+	void (*child_name_changed) (GogObject const *obj, GogObject const *child);
+	void (*children_reordered) (GogObject *obj);
+} GogObjectClass;
+
+#define GOG_OBJECT_TYPE		(gog_object_get_type ())
+#define GOG_OBJECT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_OBJECT_TYPE, GogObject))
+#define IS_GOG_OBJECT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_OBJECT_TYPE))
+#define GOG_OBJECT_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOG_OBJECT_TYPE, GogObjectClass))
+#define IS_GOG_OBJECT_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_OBJECT_TYPE))
+#define GOG_OBJECT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_OBJECT_TYPE, GogObjectClass))
+
+#define GOG_PARAM_PERSISTENT	(1 << (G_PARAM_USER_SHIFT+0))
+#define GOG_PARAM_FORCE_SAVE	(1 << (G_PARAM_USER_SHIFT+1))	/* even if the value == default */
+
+GType gog_object_get_type (void);
+
+typedef void (*GogDataDuplicator) (GogDataset const *src, GogDataset *dst);
+
+GogObject   *gog_object_dup		 (GogObject const *obj, GogObject *new_parent, GogDataDuplicator dup);
+GogObject   *gog_object_get_parent	 (GogObject const *obj);
+GogObject   *gog_object_get_parent_typed (GogObject const *obj, GType t);
+GogGraph    *gog_object_get_graph	 (GogObject const *obj);
+GogTheme    *gog_object_get_theme	 (GogObject const *obj);
+unsigned     gog_object_get_id		 (GogObject const *obj);
+char const  *gog_object_get_name	 (GogObject const *obj);
+void	     gog_object_set_name	 (GogObject *obj, char *name, GError **err);
+GSList      *gog_object_get_children	 (GogObject const *obj, GogObjectRole const *filter);
+GogObject   *gog_object_get_child_by_role(GogObject const *obj, GogObjectRole const *role);
+gpointer     gog_object_get_editor	 (GogObject *obj,
+					  GogDataAllocator *dalloc, GOCmdContext *cc);
+GogView	  *gog_object_new_view	 	 (GogObject const *obj, GogView *view);
+gboolean   gog_object_is_deletable	 (GogObject const *obj);
+GSList    *gog_object_possible_additions (GogObject const *obj);
+GogObject *gog_object_add_by_role	 (GogObject *parent,
+					  GogObjectRole const *role, GogObject *child);
+GogObject   *gog_object_add_by_name	 (GogObject *parent,
+					  char const *role, GogObject *child);
+void		  gog_object_can_reorder (GogObject const *obj,
+					  gboolean *inc_ok, gboolean *dec_ok);
+GogObject	 *gog_object_reorder	 (GogObject const *obj,
+					  gboolean inc, gboolean goto_max);
+
+GogObjectPosition gog_object_get_position_flags	   (GogObject const *obj, GogObjectPosition mask);
+gboolean	  gog_object_set_position_flags	   (GogObject *obj, GogObjectPosition p, GogObjectPosition mask);
+void	          gog_object_get_manual_position   (GogObject *obj, GogViewAllocation *pos);
+void 		  gog_object_set_manual_position   (GogObject *obj, GogViewAllocation const *pos);
+
+GogViewAllocation gog_object_get_manual_allocation (GogObject *gobj, 
+						    GogViewAllocation const *parent_allocation, 
+						    GogViewRequisition const *requisition);
+
+GogObjectRole const *gog_object_find_role_by_name (GogObject const *obj,
+						   char const *role);
+
+/* protected */
+void	 gog_object_update		(GogObject *obj);
+gboolean gog_object_request_update	(GogObject *obj);
+void 	 gog_object_emit_changed	(GogObject *obj, gboolean size);
+gboolean gog_object_clear_parent	(GogObject *obj);
+gboolean gog_object_set_parent	 	(GogObject *child, GogObject *parent,
+					 GogObjectRole const *role, unsigned id);
+void 	 gog_object_register_roles	(GogObjectClass *klass,
+					 GogObjectRole const *roles, unsigned n_roles);
+
+G_END_DECLS
+
+#endif /* GOG_OBJECT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,171 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-outlined-object.c : some utility classes for objects with outlines.
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-outlined-object.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/utils/go-units.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+enum {
+	OUTLINED_OBJECT_PROP_0,
+	OUTLINED_OBJECT_PROP_PADDING_PTS
+};
+
+static void
+gog_outlined_object_set_property (GObject *obj, guint param_id,
+				GValue const *value, GParamSpec *pspec)
+{
+	GogOutlinedObject *goo = GOG_OUTLINED_OBJECT (obj);
+
+	switch (param_id) {
+	case OUTLINED_OBJECT_PROP_PADDING_PTS :
+		goo->padding_pts = g_value_get_double (value);
+		gog_object_emit_changed (GOG_OBJECT (obj), TRUE);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_outlined_object_get_property (GObject *obj, guint param_id,
+			     GValue *value, GParamSpec *pspec)
+{
+	GogOutlinedObject *goo = GOG_OUTLINED_OBJECT (obj);
+
+	switch (param_id) {
+	case OUTLINED_OBJECT_PROP_PADDING_PTS:
+		g_value_set_double (value, goo->padding_pts);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_outlined_object_class_init (GObjectClass *gobject_klass)
+{
+	gobject_klass->set_property = gog_outlined_object_set_property;
+	gobject_klass->get_property = gog_outlined_object_get_property;
+
+	g_object_class_install_property (gobject_klass, OUTLINED_OBJECT_PROP_PADDING_PTS,
+		g_param_spec_double ("padding_pts", "Padding Pts",
+			"# of pts separating charts in the grid.",
+			0, G_MAXDOUBLE, 0, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_outlined_object_init (GogOutlinedObject *goo)
+{
+	goo->padding_pts = GO_CM_TO_PT ((double).25);
+}
+
+GSF_CLASS (GogOutlinedObject, gog_outlined_object,
+	   gog_outlined_object_class_init, gog_outlined_object_init,
+	   GOG_STYLED_OBJECT_TYPE)
+
+double
+gog_outlined_object_get_pad (GogOutlinedObject const *goo)
+{
+	g_return_val_if_fail (GOG_OUTLINED_OBJECT (goo) != NULL, 0.);
+	return goo->padding_pts;
+}
+
+/*****************************************************************************/
+
+static GogViewClass *oview_parent_klass;
+
+static void
+gog_outlined_view_size_request (GogView *v, GogViewRequisition *req)
+{
+	GogOutlinedObject *goo = GOG_OUTLINED_OBJECT (v->model);
+	double outline = gog_renderer_line_size (v->renderer, 
+						 goo->base.style->outline.width);
+	double is_outline_visible = gog_style_is_outline_visible (goo->base.style);
+
+	if (goo->base.style->fill.type != GOG_FILL_STYLE_NONE || is_outline_visible) {
+		req->w += outline * 2 + 
+			gog_renderer_pt2r_y (v->renderer, goo->padding_pts);
+		req->h += outline * 2 + 
+			gog_renderer_pt2r_y (v->renderer, goo->padding_pts);
+	}
+}
+
+static void
+gog_outlined_view_size_allocate (GogView *v, GogViewAllocation const *a)
+{
+	GogOutlinedObject *goo = GOG_OUTLINED_OBJECT (v->model);
+	GogViewAllocation res = *a;
+	double outline = gog_renderer_line_size (v->renderer, 
+						 goo->base.style->outline.width);
+	double is_outline_visible = gog_style_is_outline_visible (goo->base.style);
+
+	/* We only need internal padding if there is an outline or a pattern */
+	if (goo->base.style->fill.type != GOG_FILL_STYLE_NONE || is_outline_visible) {
+		double pad_x = gog_renderer_pt2r_x (v->renderer, goo->padding_pts);
+		double pad_y = gog_renderer_pt2r_y (v->renderer, goo->padding_pts);
+		res.x += outline + pad_x/2;
+		res.y += outline + pad_y/2;
+		res.w -= outline * 2. + pad_x;
+		res.h -= outline * 2. + pad_y;
+	}
+	(oview_parent_klass->size_allocate) (v, &res);
+}
+
+static void
+gog_outlined_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogOutlinedViewClass *klass = GOG_OUTLINED_VIEW_GET_CLASS (view);
+
+	GogStyledObject *sobj = GOG_STYLED_OBJECT (view->model);
+	gog_renderer_push_style (view->renderer, sobj->style);
+	gog_renderer_draw_sharp_rectangle (view->renderer, &view->allocation);
+	gog_renderer_pop_style (view->renderer);
+
+	if (klass->call_parent_render)
+		(oview_parent_klass->render) (view, bbox);
+}
+
+static void
+gog_outlined_view_class_init (GogOutlinedViewClass *oview_klass)
+{
+	GogViewClass *view_klass = (GogViewClass *) oview_klass;
+
+	oview_parent_klass = g_type_class_peek_parent (view_klass);
+	view_klass->size_request  = gog_outlined_view_size_request;
+	view_klass->size_allocate = gog_outlined_view_size_allocate;
+	view_klass->render	  = gog_outlined_view_render;
+
+	oview_klass->call_parent_render = TRUE;
+}
+
+GSF_CLASS (GogOutlinedView, gog_outlined_view,
+	   gog_outlined_view_class_init, NULL,
+	   GOG_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-outlined-object.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,61 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-outlined-object.h : some utility classes for objects with outlines.
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_OUTLINED_OBJECT_H
+#define GOG_OUTLINED_OBJECT_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/graph/gog-view.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GogStyledObject	base;
+	double	 padding_pts;
+} GogOutlinedObject;
+
+typedef	GogStyledObjectClass GogOutlinedObjectClass; 
+
+#define GOG_OUTLINED_OBJECT_TYPE  (gog_outlined_object_get_type ())
+#define GOG_OUTLINED_OBJECT(o)	  (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_OUTLINED_OBJECT_TYPE, GogOutlinedObject))
+#define IS_GOG_OUTLINED_OBJECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_OUTLINED_OBJECT_TYPE))
+
+GType  gog_outlined_object_get_type (void);
+double gog_outlined_object_get_pad  (GogOutlinedObject const *goo);
+
+/****************************************************************************/
+
+typedef GogView		GogOutlinedView;
+typedef struct {
+	GogViewClass	base;
+	gboolean	call_parent_render;
+} GogOutlinedViewClass;
+
+#define GOG_OUTLINED_VIEW_TYPE  	(gog_outlined_view_get_type ())
+#define GOG_OUTLINED_VIEW(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_OUTLINED_VIEW_TYPE, GogOutlinedView))
+#define IS_GOG_OUTLINED_VIEW(o) 	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_OUTLINED_VIEW_TYPE))
+#define GOG_OUTLINED_VIEW_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_OUTLINED_VIEW_TYPE, GogOutlinedViewClass))
+
+GType   gog_outlined_view_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_OUTLINED_VIEW_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,694 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-plot-engine.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-plot-engine.h>
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-reg-curve.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/app/go-plugin-service.h>
+#include <goffice/app/go-plugin-service-impl.h>
+#include <goffice/app/error-info.h>
+#include <goffice/utils/go-libxml-extras.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static GSList *refd_plugins;
+
+/***************************************************************************/
+/* Support plot engines in plugins */
+
+#define GOG_PLOT_ENGINE_SERVICE_TYPE  (gog_plot_engine_service_get_type ())
+#define GOG_PLOT_ENGINE_SERVICE(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PLOT_ENGINE_SERVICE_TYPE, GogPlotEngineService))
+#define IS_GOG_PLOT_ENGINE_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PLOT_ENGINE_SERVICE_TYPE))
+
+static GType gog_plot_engine_service_get_type (void);
+
+typedef PluginServiceGObjectLoader	GogPlotEngineService;
+typedef PluginServiceGObjectLoaderClass GogPlotEngineServiceClass;
+
+static GHashTable *pending_engines = NULL;
+
+static char *
+gog_plot_engine_service_get_description (GOPluginService *service)
+{
+	return g_strdup (_("Plot Engine"));
+}
+
+static void
+gog_plot_engine_service_class_init (PluginServiceGObjectLoaderClass *gobj_loader_class)
+{
+	GOPluginServiceClass *ps_class = GPS_CLASS (gobj_loader_class);
+
+	ps_class->get_description = gog_plot_engine_service_get_description;
+
+	gobj_loader_class->pending =
+		pending_engines = g_hash_table_new (g_str_hash, g_str_equal);
+}
+
+GSF_CLASS (GogPlotEngineService, gog_plot_engine_service,
+           gog_plot_engine_service_class_init, NULL,
+           GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE)
+
+GogPlot *
+gog_plot_new_by_name (char const *id)
+{
+	GType type = g_type_from_name (id);
+
+	if (type == 0) {
+		ErrorInfo *err = NULL;
+		GOPluginService *service =
+			pending_engines
+			? g_hash_table_lookup (pending_engines, id)
+			: NULL;
+		GOPlugin *plugin;
+
+		if (!service || !service->is_active)
+			return NULL;
+
+		g_return_val_if_fail (!service->is_loaded, NULL);
+
+		plugin_service_load (service, &err);
+		type = g_type_from_name (id);
+
+		if (err != NULL) {
+			error_info_print (err);
+			error_info_free	(err);
+		}
+
+		g_return_val_if_fail (type != 0, NULL);
+
+		/*
+		 * The plugin defined a gtype so it must not be unloaded.
+		 */
+		plugin = plugin_service_get_plugin (service);
+		refd_plugins = g_slist_prepend (refd_plugins, plugin);
+		g_object_ref (plugin);
+		go_plugin_use_ref (plugin);
+	}
+
+	return g_object_new (type, NULL);
+}
+
+/***************************************************************************/
+/* Use a plugin service to define where to find plot types */
+
+#define GOG_PLOT_TYPE_SERVICE_TYPE  (gog_plot_type_service_get_type ())
+#define GOG_PLOT_TYPE_SERVICE(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PLOT_TYPE_SERVICE_TYPE, GogPlotTypeService))
+#define IS_GOG_PLOT_TYPE_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PLOT_TYPE_SERVICE_TYPE))
+
+GType gog_plot_type_service_get_type (void);
+
+typedef struct {
+	PluginServiceSimple	base;
+
+	GSList	*families, *types;
+} GogPlotTypeService;
+
+typedef struct{
+	PluginServiceSimpleClass	base;
+} GogPlotTypeServiceClass;
+
+static GHashTable *pending_plot_type_files = NULL;
+static GObjectClass *plot_type_parent_klass;
+
+static void
+cb_pending_plot_types_load (char const *path,
+			    GogPlotTypeService *service,
+			    G_GNUC_UNUSED gpointer ignored)
+{
+	xmlNode *ptr, *prop;
+	xmlDoc *doc = go_xml_parse_file (path);
+	GogPlotFamily *family = NULL;
+	GogPlotType *type;
+	int col, row, priority;
+	xmlChar *name, *image_file, *description, *engine;
+	xmlChar *axis_set_str;
+	GogAxisSet axis_set;
+
+	g_return_if_fail (doc != NULL && doc->xmlRootNode != NULL);
+
+	/* do the families before the types so that they are available */
+	for (ptr = doc->xmlRootNode->xmlChildrenNode; ptr ; ptr = ptr->next)
+		if (!xmlIsBlankNode (ptr) && ptr->name && !strcmp (ptr->name, "Family")) {
+			name	    = xmlGetProp (ptr, "_name");
+			image_file  = xmlGetProp (ptr, "sample_image_file");
+			if (!xml_node_get_int (ptr, "priority", &priority))
+				priority = 0;
+			axis_set_str = xmlGetProp (ptr, "axis_set");
+			axis_set = gog_axis_set_from_str (axis_set_str);
+			if (axis_set_str != NULL)
+				xmlFree (axis_set_str);
+			else
+				g_warning ("[GogPlotTypeService::plot_types_load] missing axis set type");
+			family = gog_plot_family_register (name, image_file, priority, axis_set);
+			if (family != NULL)
+				service->families = g_slist_prepend (service->families, family);
+			if (name != NULL) xmlFree (name);
+			if (image_file != NULL) xmlFree (image_file);
+		}
+
+	for (ptr = doc->xmlRootNode->xmlChildrenNode; ptr ; ptr = ptr->next)
+		if (!xmlIsBlankNode (ptr) && ptr->name && !strcmp (ptr->name, "Type")) {
+			name   = xmlGetProp (ptr, "family");
+			if (name != NULL) {
+				family = gog_plot_family_by_name  (name);
+				xmlFree (name);
+				if (family == NULL)
+					continue;
+			}
+
+			name	    = xmlGetProp (ptr, "_name");
+			image_file  = xmlGetProp (ptr, "sample_image_file");
+			description = xmlGetProp (ptr, "_description");
+			engine	    = xmlGetProp (ptr, "engine");
+			if (xml_node_get_int (ptr, "col", &col) &&
+			    xml_node_get_int (ptr, "row", &row)) {
+				type = gog_plot_type_register (family, col, row,
+					name, image_file, description, engine);
+				if (type != NULL) {
+					service->types = g_slist_prepend (service->types, type);
+					for (prop = ptr->xmlChildrenNode ; prop != NULL ; prop = prop->next)
+						if (!xmlIsBlankNode (prop) &&
+						    prop->name && !strcmp (prop->name, "property")) {
+							xmlChar *prop_name = xmlGetProp (prop, "name");
+
+							if (prop_name == NULL) {
+								g_warning ("missing name for property entry");
+								continue;
+							}
+
+							if (type->properties == NULL)
+								type->properties = 
+									g_hash_table_new_full (g_str_hash, g_str_equal,
+											       xmlFree, xmlFree);
+							g_hash_table_replace (type->properties,
+								prop_name, xmlNodeGetContent (prop));
+						}
+				}
+			}
+			if (name != NULL) xmlFree (name);
+			if (image_file != NULL) xmlFree (image_file);
+			if (description != NULL) xmlFree (description);
+			if (engine != NULL) xmlFree (engine);
+		}
+
+	xmlFreeDoc (doc);
+}
+
+static void
+pending_plot_types_load (void)
+{
+	if (pending_plot_type_files != NULL) {
+		GHashTable *tmp = pending_plot_type_files;
+		pending_plot_type_files = NULL;
+		g_hash_table_foreach (tmp,
+			(GHFunc) cb_pending_plot_types_load, NULL);
+		g_hash_table_destroy (tmp);
+	}
+}
+
+static void
+gog_plot_type_service_read_xml (GOPluginService *service, xmlNode *tree, ErrorInfo **ret_error)
+{
+	char    *path;
+	xmlNode *ptr;
+
+	for (ptr = tree->xmlChildrenNode; ptr != NULL; ptr = ptr->next)
+		if (0 == xmlStrcmp (ptr->name, "file") &&
+		    NULL != (path = xmlNodeGetContent (ptr))) {
+			if (!g_path_is_absolute (path)) {
+				char const *dir = go_plugin_get_dir_name (
+					plugin_service_get_plugin (service));
+				char *tmp = g_build_filename (dir, path, NULL);
+				g_free (path);
+				path = tmp;
+			}
+			if (pending_plot_type_files == NULL)
+				pending_plot_type_files = g_hash_table_new_full (
+					g_str_hash, g_str_equal, g_free, g_object_unref);
+			g_object_ref (service);
+			g_hash_table_replace (pending_plot_type_files, path, service);
+		}
+}
+
+static char *
+gog_plot_type_service_get_description (GOPluginService *service)
+{
+	return g_strdup (_("Plot Type"));
+}
+
+static void
+gog_plot_type_service_finalize (GObject *obj)
+{
+	GogPlotTypeService *service = GOG_PLOT_TYPE_SERVICE (obj);
+	GSList *ptr;
+
+	for (ptr = service->families ; ptr != NULL ; ptr = ptr->next) {
+	}
+	g_slist_free (service->families);
+	service->families = NULL;
+
+	for (ptr = service->types ; ptr != NULL ; ptr = ptr->next) {
+	}
+	g_slist_free (service->types);
+	service->types = NULL;
+
+	(plot_type_parent_klass->finalize) (obj);
+}
+
+static void
+gog_plot_type_service_init (GObject *obj)
+{
+	GogPlotTypeService *service = GOG_PLOT_TYPE_SERVICE (obj);
+
+	service->families = NULL;
+	service->types = NULL;
+}
+
+static void
+gog_plot_type_service_class_init (GObjectClass *gobject_klass)
+{
+	GOPluginServiceClass *ps_class = GPS_CLASS (gobject_klass);
+
+	plot_type_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize		= gog_plot_type_service_finalize;
+	ps_class->read_xml		= gog_plot_type_service_read_xml;
+	ps_class->get_description	= gog_plot_type_service_get_description;
+}
+
+GSF_CLASS (GogPlotTypeService, gog_plot_type_service,
+           gog_plot_type_service_class_init, gog_plot_type_service_init,
+           GO_PLUGIN_SERVICE_SIMPLE_TYPE)
+
+/***************************************************************************/
+/* Use a plugin service to define themes */
+
+#define GOG_THEME_SERVICE_TYPE  (gog_theme_service_get_type ())
+#define GOG_THEME_SERVICE(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_THEME_SERVICE_TYPE, GogThemeService))
+#define IS_GOG_THEME_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_THEME_SERVICE_TYPE))
+
+GType gog_theme_service_get_type (void);
+
+typedef PluginServiceSimple GogThemeService;
+typedef PluginServiceSimpleClass GogThemeServiceClass;
+
+static void
+gog_theme_service_read_xml (GOPluginService *service, xmlNode *tree, ErrorInfo **ret_error)
+{
+	char    *path;
+	xmlNode *ptr;
+
+	for (ptr = tree->xmlChildrenNode; ptr != NULL; ptr = ptr->next)
+		if (0 == xmlStrcmp (ptr->name, "file") &&
+		    NULL != (path = xmlNodeGetContent (ptr))) {
+			if (!g_path_is_absolute (path)) {
+				char const *dir = go_plugin_get_dir_name (
+					plugin_service_get_plugin (service));
+				char *tmp = g_build_filename (dir, path, NULL);
+				g_free (path);
+				path = tmp;
+			}
+			gog_theme_register_file (
+				plugin_service_get_description (service), path);
+		}
+}
+
+static char *
+gog_theme_service_get_description (GOPluginService *service)
+{
+	return g_strdup (_("Chart Theme"));
+}
+
+static void
+gog_theme_service_class_init (GOPluginServiceClass *ps_class)
+{
+	ps_class->read_xml	  = gog_theme_service_read_xml;
+	ps_class->get_description = gog_theme_service_get_description;
+}
+
+GSF_CLASS (GogThemeService, gog_theme_service,
+           gog_theme_service_class_init, NULL,
+           GO_PLUGIN_SERVICE_SIMPLE_TYPE)
+
+/***************************************************************************/
+/* Support regression curves engines in plugins */
+
+#define GOG_REG_CURVE_ENGINE_SERVICE_TYPE  (gog_reg_curve_engine_service_get_type ())
+#define GOG_REG_CURVE_ENGINE_SERVICE(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_REG_CURVE_ENGINE_SERVICE_TYPE, GogRegCurveEngineService))
+#define IS_GOG_REG_CURVE_ENGINE_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_REG_CURVE_ENGINE_SERVICE_TYPE))
+
+static GType gog_reg_curve_engine_service_get_type (void);
+
+typedef PluginServiceGObjectLoader	GogRegCurveEngineService;
+typedef PluginServiceGObjectLoaderClass GogRegCurveEngineServiceClass;
+
+static GHashTable *pending_reg_curves_engines = NULL;
+
+static char *
+gog_reg_curve_engine_service_get_description (GOPluginService *service)
+{
+	return g_strdup (_("Regression Curve Engine"));
+}
+
+static void
+gog_reg_curve_engine_service_class_init (PluginServiceGObjectLoaderClass *gobj_loader_class)
+{
+	GOPluginServiceClass *ps_class = GPS_CLASS (gobj_loader_class);
+
+	ps_class->get_description = gog_reg_curve_engine_service_get_description;
+
+	gobj_loader_class->pending =
+		pending_reg_curves_engines = g_hash_table_new (g_str_hash, g_str_equal);
+}
+
+GSF_CLASS (GogRegCurveEngineService, gog_reg_curve_engine_service,
+           gog_reg_curve_engine_service_class_init, NULL,
+           GO_PLUGIN_SERVICE_GOBJECT_LOADER_TYPE)
+
+GogRegCurve *
+gog_reg_curve_new_by_name (char const *id)
+{
+	GType type = g_type_from_name (id);
+
+	if (type == 0) {
+		ErrorInfo *err = NULL;
+		GOPluginService *service =
+			pending_reg_curves_engines
+			? g_hash_table_lookup (pending_reg_curves_engines, id)
+			: NULL;
+		GOPlugin *plugin;
+
+		if (!service || !service->is_active)
+			return NULL;
+
+		g_return_val_if_fail (!service->is_loaded, NULL);
+
+		plugin_service_load (service, &err);
+		type = g_type_from_name (id);
+
+		if (err != NULL) {
+			error_info_print (err);
+			error_info_free	(err);
+		}
+
+		g_return_val_if_fail (type != 0, NULL);
+
+		/*
+		 * The plugin defined a gtype so it must not be unloaded.
+		 */
+		plugin = plugin_service_get_plugin (service);
+		refd_plugins = g_slist_prepend (refd_plugins, plugin);
+		g_object_ref (plugin);
+		go_plugin_use_ref (plugin);
+	}
+
+	return g_object_new (type, NULL);
+}
+/***************************************************************************/
+/* Use a plugin service to define regression curves types */
+
+#define GOG_REG_CURVE_SERVICE_TYPE		(gog_reg_curve_service_get_type ())
+#define GOG_REG_CURVE_SERVICE(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_REG_CURVE_SERVICE_TYPE, GogRegCurveService))
+#define IS_GOG_REG_CURVE_SERVICE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_REG_CURVE_SERVICE_TYPE))
+
+GType gog_reg_curve_service_get_type (void);
+
+typedef struct {
+	PluginServiceSimple	base;
+
+	GSList	*types;
+} GogRegCurveService;
+typedef PluginServiceSimpleClass GogRegCurveServiceClass;
+
+static GHashTable *pending_reg_curve_type_files = NULL;
+static GHashTable *reg_curves_types = NULL;
+
+static void
+cb_pending_reg_curve_types_load (char const *path,
+			    GogRegCurveService *service,
+			    G_GNUC_UNUSED gpointer ignored)
+{
+	xmlNode *ptr, *prop;
+	xmlDoc *doc = go_xml_parse_file (path);
+	GogRegCurveType *type;
+
+	g_return_if_fail (doc != NULL && doc->xmlRootNode != NULL);
+
+	for (ptr = doc->xmlRootNode->xmlChildrenNode; ptr ; ptr = ptr->next)
+		if (!xmlIsBlankNode (ptr) && ptr->name && !strcmp (ptr->name, "Type")) {
+			type = g_new0 (GogRegCurveType, 1);
+			type->name = xmlGetProp (ptr, "_name");
+			type->description = xmlGetProp (ptr, "_description");
+			type->engine = xmlGetProp (ptr, "engine");
+			service->types = g_slist_prepend (service->types, type);
+			g_hash_table_insert (reg_curves_types, type->name, type);
+			for (prop = ptr->xmlChildrenNode ; prop != NULL ; prop = prop->next)
+				if (!xmlIsBlankNode (prop) &&
+					prop->name && !strcmp (prop->name, "property")) {
+					xmlChar *prop_name = xmlGetProp (prop, "name");
+
+					if (prop_name == NULL) {
+						g_warning ("missing name for property entry");
+						continue;
+					}
+
+					if (type->properties == NULL)
+						type->properties = g_hash_table_new_full (g_str_hash, g_str_equal,
+											  xmlFree, xmlFree);
+					g_hash_table_replace (type->properties,
+						prop_name, xmlNodeGetContent (prop));
+				}
+		}
+
+	xmlFreeDoc (doc);
+}
+
+static void
+pending_reg_curves_types_load (void)
+{
+	if (pending_reg_curve_type_files != NULL) {
+		GHashTable *tmp = pending_reg_curve_type_files;
+		pending_reg_curve_type_files = NULL;
+		g_hash_table_foreach (tmp,
+			(GHFunc) cb_pending_reg_curve_types_load, NULL);
+		g_hash_table_destroy (tmp);
+	}
+}
+
+static void
+gog_reg_curve_service_read_xml (GOPluginService *service, xmlNode *tree, ErrorInfo **ret_error)
+{
+	char    *path;
+	xmlNode *ptr;
+
+	for (ptr = tree->xmlChildrenNode; ptr != NULL; ptr = ptr->next)
+		if (0 == xmlStrcmp (ptr->name, "file") &&
+		    NULL != (path = xmlNodeGetContent (ptr))) {
+			if (!g_path_is_absolute (path)) {
+				char const *dir = go_plugin_get_dir_name (
+					plugin_service_get_plugin (service));
+				char *tmp = g_build_filename (dir, path, NULL);
+				g_free (path);
+				path = tmp;
+			}
+			if (pending_reg_curve_type_files == NULL)
+				pending_reg_curve_type_files = g_hash_table_new_full (
+					g_str_hash, g_str_equal, g_free, g_object_unref);
+			g_object_ref (service);
+			g_hash_table_replace (pending_reg_curve_type_files, path, service);
+		}
+}
+
+static char *
+gog_reg_curve_service_get_description (GOPluginService *service)
+{
+	return g_strdup (_("Regression Curve Type"));
+}
+
+static void
+gog_reg_curve_service_init (GObject *obj)
+{
+	GogRegCurveService *service = GOG_REG_CURVE_SERVICE (obj);
+
+	service->types = NULL;
+}
+
+static void
+gog_reg_curve_service_class_init (GOPluginServiceClass *ps_class)
+{
+	ps_class->read_xml	  = gog_reg_curve_service_read_xml;
+	ps_class->get_description = gog_reg_curve_service_get_description;
+}
+
+GSF_CLASS (GogRegCurveService, gog_reg_curve_service,
+           gog_reg_curve_service_class_init, gog_reg_curve_service_init,
+           GO_PLUGIN_SERVICE_SIMPLE_TYPE)
+
+/***************************************************************************/
+
+void
+gog_plugin_services_init (void)
+{
+	plugin_service_define ("plot_engine", &gog_plot_engine_service_get_type);
+	plugin_service_define ("plot_type",   &gog_plot_type_service_get_type);
+	plugin_service_define ("chart_theme",  &gog_theme_service_get_type);
+	plugin_service_define ("regcurve_engine", &gog_reg_curve_engine_service_get_type);
+	plugin_service_define ("regcurve_type", &gog_reg_curve_service_get_type);
+}
+
+void
+gog_plugin_services_shutdown (void)
+{
+	g_slist_foreach (refd_plugins, (GFunc)go_plugin_use_unref, NULL);
+	g_slist_foreach (refd_plugins, (GFunc)g_object_unref, NULL);
+	g_slist_free (refd_plugins);
+}
+
+/***************************************************************************/
+
+static GHashTable *plot_families = NULL;
+
+static void
+gog_plot_family_free (GogPlotFamily *family)
+{
+	g_free (family->name);			family->name = NULL;
+	g_free (family->sample_image_file);	family->sample_image_file = NULL;
+	if (family->types) {
+		g_hash_table_destroy (family->types);
+		family->types = NULL;
+	}
+	g_free (family);
+}
+
+static void
+gog_plot_type_free (GogPlotType *type)
+{
+	g_free (type->name);
+	g_free (type->sample_image_file);
+	g_free (type->description);
+	g_free (type->engine);
+	g_free (type);
+}
+
+static void
+create_plot_families (void)
+{
+	if (!plot_families)
+		plot_families = g_hash_table_new_full
+			(g_str_hash, g_str_equal,
+			 NULL, (GDestroyNotify) gog_plot_family_free);
+}
+
+GHashTable const *
+gog_plot_families (void)
+{
+	create_plot_families ();
+	pending_plot_types_load ();
+	return plot_families;
+}
+
+GogPlotFamily *
+gog_plot_family_by_name (char const *name)
+{
+	create_plot_families ();
+	pending_plot_types_load ();
+	return g_hash_table_lookup (plot_families, name);
+}
+
+GogPlotFamily *
+gog_plot_family_register (char const *name, char const *sample_image_file,
+			  int priority, GogAxisSet axis_set)
+{
+	GogPlotFamily *res;
+
+	g_return_val_if_fail (name != NULL, NULL);
+	g_return_val_if_fail (sample_image_file != NULL, NULL);
+
+	create_plot_families ();
+	g_return_val_if_fail (g_hash_table_lookup (plot_families, name) == NULL, NULL);
+
+	res = g_new0 (GogPlotFamily, 1);
+	res->name		= g_strdup (name);
+	res->sample_image_file	= g_strdup (sample_image_file);
+	res->priority		= priority;
+	res->axis_set = axis_set;
+	res->types = g_hash_table_new_full (g_str_hash, g_str_equal,
+		NULL, (GDestroyNotify) gog_plot_type_free);
+
+	g_hash_table_insert (plot_families, res->name, res);
+
+	return res;
+}
+
+GogPlotType *
+gog_plot_type_register (GogPlotFamily *family, int col, int row,
+		       char const *name, char const *sample_image_file,
+		       char const *description, char const *engine)
+{
+	GogPlotType *res;
+	
+	g_return_val_if_fail (family != NULL, NULL);
+	
+	res = g_new0 (GogPlotType, 1);
+	res->name = g_strdup (name);
+	res->sample_image_file = g_strdup (sample_image_file);
+	res->description = g_strdup (description);
+	res->engine = g_strdup (engine);
+
+	res->col = col;
+	res->row = row;
+	res->family = family;
+	g_hash_table_replace (family->types, res->name, res);
+
+	return res;
+}
+
+/***************************************************************************/
+
+static void
+gog_reg_curve_type_free (GogRegCurveType *type)
+{
+	g_free (type->name);
+	g_free (type->description);
+	g_free (type->engine);
+	g_free (type);
+}
+
+static void
+create_reg_curve_types (void)
+{
+	if (!reg_curves_types)
+		reg_curves_types = g_hash_table_new_full
+			(g_str_hash, g_str_equal,
+			 NULL, (GDestroyNotify) gog_reg_curve_type_free);
+}
+
+GHashTable const *
+gog_reg_curve_types (void)
+{
+	create_reg_curve_types ();
+	pending_reg_curves_types_load ();
+	return reg_curves_types;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-engine.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,74 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-plot-engine.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_PLOT_ENGINE_H
+#define GOG_PLOT_ENGINE_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _GogPlotType {
+	GogPlotFamily 	*family;
+	char 		*engine;
+
+	char 		*name, *sample_image_file;
+	char 		*description; /* untranslated */
+	int 		 col, row;
+
+	GHashTable 	*properties;
+}; 
+
+struct _GogPlotFamily {
+	char *name, *sample_image_file;
+	int priority;
+
+	GogAxisSet	 axis_set;
+
+	GHashTable *types;
+}; 
+
+/* GogPlotFamily hashed by name */
+GHashTable const *gog_plot_families (void);
+GogPlotFamily *gog_plot_family_by_name  (char const *name);
+GogPlotFamily *gog_plot_family_register (char const *name, char const *sample_image_file,
+					 int priority, GogAxisSet axis_set);
+GogPlotType   *gog_plot_type_register   (GogPlotFamily *famlily, int col, int row,
+					 char const *name, char const *sample_image_file,
+					 char const *description, char const *engine);
+
+struct _GogRegCurveType {
+	char *engine;
+
+	char *name;
+	char *description; /* untranslated */
+
+	GHashTable *properties;
+};
+
+GHashTable const *gog_reg_curve_types (void);
+
+void gog_plugin_services_init (void);
+void gog_plugin_services_shutdown (void);
+
+G_END_DECLS
+
+#endif /* GOG_PLOT_ENGINE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,99 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-plot-impl.h : implementation details for the abstract 'plot' interface
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_PLOT_IMPL_H
+#define GOG_PLOT_IMPL_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-plot.h>
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-view.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _GogPlotDesc {
+	unsigned  num_series_min, num_series_max;
+	unsigned  num_axis;
+	GogSeriesDesc series;
+};
+
+struct _GogPlot {
+	GogObject	 base;
+
+	GSList		*series;
+	unsigned	 full_cardinality, visible_cardinality;
+	gboolean	 cardinality_valid;
+	unsigned	 index_num;
+	gboolean	 vary_style_by_element;
+	gboolean	 render_before_axes;
+	gchar		*plot_group;
+	char		*guru_hints;
+
+	GogAxis		*axis[GOG_AXIS_TYPES];
+
+	/* Usually a copy from the class but it's here to allow a GogPlotType to
+	 * override things without requiring a completely new class */
+	GogPlotDesc	desc;
+};
+
+typedef struct {
+	GogObjectClass base;
+
+	GogPlotDesc	desc;
+	GType		series_type;
+
+	GogAxisSet	axis_set;
+
+	/* Virtuals */
+
+	GOData	  *(*axis_get_bounds) 	(GogPlot *plot, GogAxisType axis,
+					 GogPlotBoundInfo *bounds);
+
+	gboolean   (*supports_vary_style_by_element) (GogPlot const *plot);
+
+	void       (*foreach_elem)    	(GogPlot *plot, gboolean only_visible,
+					 GogEnumFunc handler, gpointer data);
+
+	void       (*update_3d)		(GogPlot *plot);
+	void	   (*guru_helper)	(GogPlot *plot, char const *hint);
+} GogPlotClass;
+
+#define GOG_PLOT_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOG_PLOT_TYPE, GogPlotClass))
+#define IS_GOG_PLOT_CLASS(k)		(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_PLOT_TYPE))
+#define GOG_PLOT_ITEM_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_PLOT_TYPE, GogPlotClass))
+
+/* protected */
+
+/*****************************************************************************/
+
+#define GOG_PLOT_VIEW_TYPE	(gog_plot_view_get_type ())
+#define GOG_PLOT_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PLOT_VIEW_TYPE, GogPlotView))
+#define IS_GOG_PLOT_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PLOT_VIEW_TYPE))
+
+typedef GogView		GogPlotView;
+typedef GogViewClass	GogPlotViewClass;
+GType gog_plot_view_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_PLOT_GROUP_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,839 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-plot.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-plot-engine.h>
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/graph/gog-object-xml.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-math.h>
+#include <glib/gi18n.h>
+
+#include <gtk/gtktable.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkcelllayout.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+#ifndef HAVE_GLIB26
+#include "glib24_26-compat.h"
+#endif
+
+#define GOG_PLOT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_PLOT_TYPE, GogPlotClass))
+
+enum {
+	PLOT_PROP_0,
+	PLOT_PROP_VARY_STYLE_BY_ELEMENT,
+	PLOT_PROP_AXIS_X,
+	PLOT_PROP_AXIS_Y,
+	PLOT_PROP_GROUP,
+	PLOT_PROP_GURU_HINTS
+};
+
+static GObjectClass *plot_parent_klass;
+
+static gboolean gog_plot_set_axis_by_id (GogPlot *plot, GogAxisType type, unsigned id);
+static unsigned gog_plot_get_axis_id (GogPlot const *plot, GogAxisType type);
+	
+static void
+gog_plot_finalize (GObject *obj)
+{
+	GogPlot *plot = GOG_PLOT (obj);
+
+	g_slist_free (plot->series); /* GogObject does the unref */
+
+	gog_plot_axis_clear (plot, GOG_AXIS_SET_ALL); /* just in case */
+	if (plot->plot_group)
+		g_free (plot->plot_group);
+	if (plot->guru_hints != NULL)
+		g_free (plot->guru_hints);
+
+	(*plot_parent_klass->finalize) (obj);
+}
+
+static gboolean
+role_series_can_add (GogObject const *parent)
+{
+	GogPlot *plot = GOG_PLOT (parent);
+	return g_slist_length (plot->series) < plot->desc.num_series_max;
+}
+static gboolean
+role_series_can_remove (GogObject const *child)
+{
+	GogPlot const *plot = GOG_PLOT (child->parent);
+	return g_slist_length (plot->series) > plot->desc.num_series_min;
+}
+
+static GogObject *
+role_series_allocate (GogObject *plot)
+{
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+	GType type = klass->series_type;
+
+	if (type == 0)
+		type = GOG_SERIES_TYPE;
+	return g_object_new (type, NULL);
+}
+
+static void
+role_series_post_add (GogObject *parent, GogObject *child)
+{
+	GogPlot *plot = GOG_PLOT (parent);
+	GogSeries *series = GOG_SERIES (child);
+	unsigned num_dim;
+	num_dim = plot->desc.series.num_dim;
+
+	/* Alias things so that dim -1 is valid */
+	series->values = g_new0 (GogDatasetElement, num_dim+1) + 1;
+	series->plot = plot;
+
+	/* if there are other series associated with the plot, and there are 
+	 * shared dimensions, clone them over.  */
+	if (series->plot->series != NULL) {
+		GogGraph *graph = gog_object_get_graph (GOG_OBJECT (plot));
+		GogSeriesDesc const *desc = &plot->desc.series;
+		GogSeries const *src = plot->series->data;
+		unsigned i;
+
+		for (i = num_dim; i-- > 0 ; ) /* name is never shared */
+			if (desc->dim[i].is_shared)
+				gog_dataset_set_dim_internal (GOG_DATASET (series),
+					i, src->values[i].data, graph);
+
+		gog_series_check_validity (series);
+	}
+
+	/* APPEND to keep order, there won't be that many */
+	plot->series = g_slist_append (plot->series, series);
+	gog_plot_request_cardinality_update (plot);
+}
+
+static void
+role_series_pre_remove (GogObject *parent, GogObject *series)
+{
+	GogPlot *plot = GOG_PLOT (parent);
+	plot->series = g_slist_remove (plot->series, series);
+	gog_plot_request_cardinality_update (plot);
+}
+
+typedef struct {
+	GogPlot		*plot;
+	GogAxisType	type;
+} PlotPrefState;
+
+static void
+cb_axis_changed (GtkComboBox *combo, PlotPrefState *state)
+{
+	GtkTreeIter iter;
+	GValue value;
+	GtkTreeModel *model = gtk_combo_box_get_model (combo);
+
+	memset (&value, 0, sizeof (GValue));
+	gtk_combo_box_get_active_iter (combo, &iter);
+	gtk_tree_model_get_value (model, &iter, 1, &value);
+	gog_plot_set_axis_by_id (state->plot, state->type, g_value_get_uint (&value));
+}
+
+static void
+gog_plot_populate_editor (GogObject *obj,
+			  GogEditor *editor,
+			  G_GNUC_UNUSED GogDataAllocator *dalloc,
+			  GOCmdContext *cc)
+{
+	static const char *axis_labels[7] = { 
+		N_("X axis:"), 
+		N_("Y axis:"), 
+		N_("Z axis:"), 
+		N_("Circular axis:"), 
+		N_("Radial axis:"), 
+		N_("Type axis:"), 
+		N_("Pseudo 3D axis:")
+	};
+	
+	GtkWidget *table, *combo;
+	GogAxisType type;
+	GogPlot *plot = GOG_PLOT (obj);
+	unsigned count = 0, axis_count;
+	GSList *axes, *ptr;
+	GogChart *chart = GOG_CHART (gog_object_get_parent (obj));
+	GogAxis *axis;
+	GtkListStore *store;
+	GtkTreeIter iter;
+	GtkCellRenderer *cell;
+	PlotPrefState *state;
+
+	g_return_if_fail (chart != NULL);
+
+	if (gog_chart_get_axis_set (chart) != GOG_AXIS_SET_XY) {
+		(GOG_OBJECT_CLASS(plot_parent_klass)->populate_editor) (obj, editor, dalloc, cc);
+		return;
+	}
+
+	table = gtk_table_new (0, 1, FALSE);
+	for (type = 0 ; type < GOG_AXIS_TYPES ; type++) {
+		if (plot->axis[type] != NULL) {
+			count++;
+			gtk_table_resize (GTK_TABLE (table), count, 1);
+			gtk_table_attach (GTK_TABLE (table), gtk_label_new (_(axis_labels[type])),
+					  0, 1, count - 1, count, 0, 0, 0, 0);
+
+			store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_UINT);
+			combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+
+			cell = gtk_cell_renderer_text_new ();
+			gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE);
+			gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), cell,
+							"text", 0,
+							NULL);
+			
+			axes = gog_chart_get_axes (chart, type);
+			axis_count = 0;
+			for (ptr = axes; ptr != NULL; ptr = ptr->next) {
+				axis = GOG_AXIS (ptr->data);
+				gtk_list_store_prepend (store, &iter);
+				gtk_list_store_set (store, &iter, 
+					0, gog_object_get_name (GOG_OBJECT (axis)), 
+					1, gog_object_get_id (GOG_OBJECT (axis)),
+					-1);
+				if (axis == plot->axis[type])
+					gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo), &iter); 
+				axis_count++;
+			}
+			if (axis_count < 2)
+				gtk_widget_set_sensitive (GTK_WIDGET (combo), FALSE);
+			g_slist_free (axes);
+			gtk_table_attach (GTK_TABLE (table), combo,
+					  1, 2, count - 1, count, 0, 0, 0, 0);
+			state = g_new (PlotPrefState, 1);
+			state->plot = plot;
+			state->type = type;
+			g_signal_connect (G_OBJECT (combo), "changed",
+					  G_CALLBACK (cb_axis_changed), state);
+			g_object_set_data_full (G_OBJECT (combo),
+						"state", state, (GDestroyNotify) g_free);
+		}
+	}
+
+	if (count > 0) {
+		gtk_table_set_col_spacings (GTK_TABLE (table), 12);
+		gtk_table_set_row_spacings (GTK_TABLE (table), 6);
+		gtk_container_set_border_width (GTK_CONTAINER (table), 12);
+		gtk_widget_show_all (table);
+		gog_editor_add_page (editor, table, _("Axes"));
+	}
+	else
+		g_object_unref (G_OBJECT (table));
+	
+	(GOG_OBJECT_CLASS(plot_parent_klass)->populate_editor) (obj, editor, dalloc, cc);
+}
+
+static void
+gog_plot_set_property (GObject *obj, guint param_id,
+		       GValue const *value, GParamSpec *pspec)
+{
+	GogPlot *plot = GOG_PLOT (obj);
+	gboolean b_tmp;
+
+	switch (param_id) {
+	case PLOT_PROP_VARY_STYLE_BY_ELEMENT:
+		b_tmp = g_value_get_boolean (value) &&
+			gog_plot_supports_vary_style_by_element (plot);
+		if (plot->vary_style_by_element ^ b_tmp) {
+			plot->vary_style_by_element = b_tmp;
+			gog_plot_request_cardinality_update (plot);
+		}
+		break;
+	case PLOT_PROP_AXIS_X:
+		gog_plot_set_axis_by_id (plot, GOG_AXIS_X, g_value_get_uint (value));
+		break;
+	case PLOT_PROP_AXIS_Y:
+		gog_plot_set_axis_by_id (plot, GOG_AXIS_Y, g_value_get_uint (value));
+		break;
+	case PLOT_PROP_GROUP: {
+		char const *group = g_value_get_string (value);
+		if (plot->plot_group)
+			g_free (plot->plot_group);
+		plot->plot_group = (group)? g_strdup (g_value_get_string (value)): NULL;
+		break;
+	}
+	case PLOT_PROP_GURU_HINTS:
+		if (plot->guru_hints != NULL)
+			g_free (plot->guru_hints);
+		plot->guru_hints = g_strdup (g_value_get_string (value));
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_plot_get_property (GObject *obj, guint param_id,
+		       GValue *value, GParamSpec *pspec)
+{
+	GogPlot *plot = GOG_PLOT (obj);
+	switch (param_id) {
+	case PLOT_PROP_VARY_STYLE_BY_ELEMENT:
+		g_value_set_boolean (value,
+			plot->vary_style_by_element &&
+			gog_plot_supports_vary_style_by_element (plot));
+		break;
+	case PLOT_PROP_AXIS_X:
+		g_value_set_uint (value, gog_plot_get_axis_id (plot, GOG_AXIS_X));
+		break;
+	case PLOT_PROP_AXIS_Y:
+		g_value_set_uint (value, gog_plot_get_axis_id (plot, GOG_AXIS_Y));
+		break;
+	case PLOT_PROP_GROUP:
+		g_value_set_string (value, plot->plot_group);
+		break;
+	case PLOT_PROP_GURU_HINTS:
+		g_value_set_string (value, plot->guru_hints);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_plot_children_reordered (GogObject *obj)
+{
+	GSList *ptr, *accum = NULL;
+	GogPlot *plot = GOG_PLOT (obj);
+
+	for (ptr = obj->children; ptr != NULL ; ptr = ptr->next)
+		if (IS_GOG_SERIES (ptr->data))
+			accum = g_slist_prepend (accum, ptr->data);
+	g_slist_free (plot->series);
+	plot->series = g_slist_reverse (accum);
+
+	gog_plot_request_cardinality_update (plot);
+}
+
+static void
+gog_plot_class_init (GogObjectClass *gog_klass)
+{
+	static GogObjectRole const roles[] = {
+		{ N_("Series"), "GogSeries",	0,
+		  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+		  role_series_can_add, role_series_can_remove,
+		  role_series_allocate,
+		  role_series_post_add, role_series_pre_remove, NULL },
+	};
+	GObjectClass *gobject_klass = (GObjectClass *) gog_klass;
+	GogPlotClass *plot_klass = (GogPlotClass *) gog_klass;
+
+	plot_parent_klass = g_type_class_peek_parent (gog_klass);
+	gobject_klass->finalize		= gog_plot_finalize;
+	gobject_klass->set_property	= gog_plot_set_property;
+	gobject_klass->get_property	= gog_plot_get_property;
+	gog_klass->populate_editor	= gog_plot_populate_editor;
+	plot_klass->axis_set 		= GOG_AXIS_SET_NONE;
+	plot_klass->guru_helper		= NULL;
+
+	g_object_class_install_property (gobject_klass, PLOT_PROP_VARY_STYLE_BY_ELEMENT,
+		g_param_spec_boolean ("vary-style-by-element", "vary-style-by-element",
+			"Use a different style for each segments",
+			FALSE,
+			G_PARAM_READWRITE|GOG_PARAM_PERSISTENT|GOG_PARAM_FORCE_SAVE));
+	g_object_class_install_property (gobject_klass, PLOT_PROP_AXIS_X,
+		g_param_spec_uint ("x_axis", "x_axis", "Reference to X axis",
+			0, G_MAXINT, 0,
+			G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, PLOT_PROP_AXIS_Y,
+		g_param_spec_uint ("y_axis", "y_axis", "Reference to Y axis",
+			0, G_MAXINT, 0,
+			G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, PLOT_PROP_GROUP,
+		g_param_spec_string ("plot-group", _("Plot group"), 
+			_("Name of plot group if any"),
+			NULL, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, PLOT_PROP_GURU_HINTS,
+		g_param_spec_string ("guru-hints", _("Guru hints"), 
+			_("Semicolon separated list of hints for automatic addition of objects in"
+			  "guru dialog"),
+			NULL, G_PARAM_READWRITE));
+
+	gog_klass->children_reordered = gog_plot_children_reordered;
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+	GOG_PLOT_CLASS (gog_klass)->update_3d = NULL;
+}
+
+static void
+gog_plot_init (GogPlot *plot, GogPlotClass const *derived_plot_klass)
+{
+	/* keep a local copy so that we can over-ride things if desired */
+	plot->desc = derived_plot_klass->desc;
+	/* start as true so that we can queue an update when it changes */
+	plot->cardinality_valid = TRUE;
+	plot->render_before_axes = FALSE;
+	plot->plot_group = NULL;
+	plot->guru_hints = NULL;
+}
+
+GSF_CLASS_ABSTRACT (GogPlot, gog_plot,
+		    gog_plot_class_init, gog_plot_init,
+		    GOG_OBJECT_TYPE)
+
+GogPlot *
+gog_plot_new_by_type (GogPlotType const *type)
+{
+	GogPlot *res;
+
+	g_return_val_if_fail (type != NULL, NULL);
+
+	res = gog_plot_new_by_name (type->engine);
+	if (res != NULL && type->properties != NULL)
+		g_hash_table_foreach (type->properties,
+			(GHFunc) gog_object_set_arg, res);
+	return res;
+}
+
+/**
+ * gog_plot_make_similar :
+ * @dst :
+ * @src :
+ *
+ * As much as possible have @dst use similar formatting and data allocation to
+ * @src.
+ *
+ * return TRUE on failue
+ **/
+gboolean
+gog_plot_make_similar (GogPlot *dst, GogPlot const *src)
+{
+	g_return_val_if_fail (GOG_PLOT (dst) != NULL, TRUE);
+	g_return_val_if_fail (GOG_PLOT (src) != NULL, TRUE);
+
+	return FALSE;
+}
+
+/* convenience routines */
+GogSeries *
+gog_plot_new_series (GogPlot *plot)
+{
+	GogObject *res;
+
+	g_return_val_if_fail (GOG_PLOT (plot) != NULL, NULL);
+
+	res = gog_object_add_by_name (GOG_OBJECT (plot), "Series", NULL);
+	return res ? GOG_SERIES (res) : NULL;
+}
+GogPlotDesc const *
+gog_plot_description (GogPlot const *plot)
+{
+	g_return_val_if_fail (GOG_PLOT (plot) != NULL, NULL);
+	return &plot->desc;
+}
+
+static GogChart *
+gog_plot_get_chart (GogPlot const *plot)
+{
+	return GOG_CHART (GOG_OBJECT (plot)->parent);
+}
+
+/* protected */
+void
+gog_plot_request_cardinality_update (GogPlot *plot)
+{
+	g_return_if_fail (GOG_PLOT (plot) != NULL);
+
+	if (plot->cardinality_valid) {
+		GogChart *chart = gog_plot_get_chart (plot);
+		plot->cardinality_valid = FALSE;
+		gog_object_request_update (GOG_OBJECT (plot));
+		if (chart != NULL)
+			gog_chart_request_cardinality_update (chart);
+	}
+}
+
+/**
+ * gog_plot_get_cardinality :
+ * @plot : #GogPlot
+ *
+ * Return the number of logical elements in the plot, updating the cache if
+ * necessary
+ **/
+void
+gog_plot_get_cardinality (GogPlot *plot, unsigned *full, unsigned *visible)
+{
+	g_return_if_fail (GOG_PLOT (plot) != NULL);
+
+	if (!plot->cardinality_valid) {
+		GogSeries *series;
+		GSList	  *ptr;
+		gboolean   is_valid;
+		unsigned   size = 0, no_legend = 0, i;
+
+		plot->cardinality_valid = TRUE;
+		gog_chart_get_cardinality (gog_plot_get_chart (plot), NULL, &i);
+		plot->index_num = i;
+
+		for (ptr = plot->series; ptr != NULL ; ptr = ptr->next) {
+			series = GOG_SERIES (ptr->data);
+			is_valid = gog_series_is_valid (GOG_SERIES (series));
+			if (plot->vary_style_by_element) {
+				if (is_valid && size < series->num_elements)
+					size = series->num_elements;
+				gog_series_set_index (series, plot->index_num, FALSE);
+			} else {
+				gog_series_set_index (series, i++, FALSE);
+				if (!gog_series_has_legend (series))
+					no_legend++;
+			}
+		}
+
+		plot->full_cardinality =
+			plot->vary_style_by_element ? size : (i - plot->index_num);
+		plot->visible_cardinality = plot->full_cardinality - no_legend;
+	}
+
+	if (full != NULL)
+		*full = plot->full_cardinality;
+	if (visible != NULL)
+		*visible = plot->visible_cardinality;
+}
+
+void
+gog_plot_foreach_elem (GogPlot *plot, gboolean only_visible,
+		       GogEnumFunc func, gpointer data)
+{
+	GSList *ptr;
+	GogSeries const *series;
+	GogStyle *style, *tmp_style;
+	GODataVector *labels;
+	unsigned i, n, num_labels = 0;
+	char *label = NULL;
+	GogTheme *theme = gog_object_get_theme (GOG_OBJECT (plot));
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+	GList *overrides;
+
+	g_return_if_fail (GOG_PLOT (plot) != NULL);
+	if (!plot->cardinality_valid)
+		gog_plot_get_cardinality (plot, NULL, NULL);
+
+	if (klass->foreach_elem) {
+		klass->foreach_elem (plot, only_visible, func, data);
+		return;
+	}
+
+	ptr = plot->series;
+	if (ptr == NULL)
+		return;
+
+	if (!plot->vary_style_by_element) {
+		unsigned i = plot->index_num;
+		for (; ptr != NULL ; ptr = ptr->next)
+			if (!only_visible || gog_series_has_legend (ptr->data)) {
+				func (i, gog_styled_object_get_style (ptr->data),
+				      gog_object_get_name (ptr->data), data);
+				i++;
+			}
+		return;
+	}
+
+	series = ptr->data; /* start with the first */
+	labels = NULL;
+	if (series->values[0].data != NULL) {
+		labels = GO_DATA_VECTOR (series->values[0].data);
+		num_labels = go_data_vector_get_len (labels);
+	}
+	style = gog_style_dup (series->base.style);
+	n = only_visible ? plot->visible_cardinality : plot->full_cardinality;
+	for (overrides = series->overrides, i = 0; i < n ; i++) {
+		if (overrides != NULL &&
+		    (GOG_SERIES_ELEMENT (overrides->data)->index == i)) {
+			tmp_style = GOG_STYLED_OBJECT (overrides->data)->style;
+			overrides = overrides->next;
+		} else
+			tmp_style = style;
+
+		gog_theme_fillin_style (theme, tmp_style, GOG_OBJECT (series),
+			plot->index_num + i, FALSE);
+		if (labels != NULL)
+ 			label = (i < num_labels)
+ 				? go_data_vector_get_str (labels, i) : g_strdup ("");
+		else
+			label = NULL;
+		if (label == NULL)
+			label = g_strdup_printf ("%d", i);
+		(func) (i, tmp_style, label, data);
+		g_free (label);
+	}
+	g_object_unref (style);
+}
+
+/**
+ * gog_plot_get_series :
+ * @plot : #GogPlot
+ *
+ * A list of the series in @plot.  Do not modify or free the list.
+ **/
+GSList const *
+gog_plot_get_series (GogPlot const *plot)
+{
+	g_return_val_if_fail (GOG_PLOT (plot) != NULL, NULL);
+	return plot->series;
+}
+
+/**
+ * gog_plot_get_axis_bounds :
+ * @plot : #GogPlot
+ * @axis : #GogAxisType
+ * @bounds : #GogPlotBoundInfo
+ *
+ * Queries @plot for its axis preferences for @axis and stores the results in
+ * @bounds.  All elements of @bounds are initialized to sane values before the
+ * query _ACCEPT_ ::fmt.  The caller is responsible for initializing it.  This
+ * is done so that once on plot has selected a format the others need not do
+ * the lookup too if so desired.
+ *
+ * Caller is responsible for unrefing ::fmt.
+ **/
+GOData *
+gog_plot_get_axis_bounds (GogPlot *plot, GogAxisType axis,
+			  GogPlotBoundInfo *bounds)
+{
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+
+	g_return_val_if_fail (klass != NULL, NULL);
+	g_return_val_if_fail (bounds != NULL, NULL);
+
+	bounds->val.minima =  DBL_MAX;
+	bounds->val.maxima = -DBL_MAX;
+	bounds->logical.maxima = go_nan;
+	bounds->logical.minima = go_nan;
+	bounds->is_discrete = FALSE;
+	bounds->center_on_ticks = TRUE;
+	if (klass->axis_get_bounds == NULL)
+		return NULL;
+	return (klass->axis_get_bounds) (plot, axis, bounds);
+}
+
+gboolean
+gog_plot_supports_vary_style_by_element (GogPlot const *plot)
+{
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+
+	g_return_val_if_fail (klass != NULL, FALSE);
+
+	if (klass->supports_vary_style_by_element)
+		return (klass->supports_vary_style_by_element) (plot);
+	return TRUE; /* default */
+}
+
+GogAxisSet
+gog_plot_axis_set_pref (GogPlot const *plot)
+{
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+
+	g_return_val_if_fail (klass != NULL, GOG_AXIS_SET_UNKNOWN);
+	return klass->axis_set;
+}
+
+gboolean
+gog_plot_axis_set_is_valid (GogPlot const *plot, GogAxisSet axis_set)
+{
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+
+	g_return_val_if_fail (klass != NULL, FALSE);
+	return (axis_set == klass->axis_set);
+}
+
+static gboolean
+gog_plot_set_axis_by_id (GogPlot *plot, GogAxisType type, unsigned id)
+{
+	GogChart const *chart;
+	GogAxis *axis;
+	GSList *axes, *ptr;
+	gboolean found = FALSE;
+
+	if (id == 0)
+		return FALSE;
+
+	g_return_val_if_fail (GOG_PLOT (plot) != NULL, FALSE);
+	g_return_val_if_fail (GOG_OBJECT (plot)->parent != NULL, FALSE);
+
+	chart = gog_plot_get_chart (plot);
+	g_return_val_if_fail (GOG_CHART (chart) != NULL, FALSE);
+
+	axes = gog_chart_get_axes (chart, type);
+	g_return_val_if_fail (axes != NULL, FALSE);
+
+	for (ptr = axes; ptr != NULL && !found; ptr = ptr->next) {
+		axis = GOG_AXIS (ptr->data);
+		if (gog_object_get_id (GOG_OBJECT (axis)) == id) {
+			if (plot->axis[type] != NULL)
+				gog_axis_del_contributor (plot->axis[type], GOG_OBJECT (plot));
+			plot->axis[type] = axis;
+			gog_axis_add_contributor (axis, GOG_OBJECT (plot));
+			found = TRUE;
+		}
+	}		
+	g_slist_free (axes);
+	return found;
+}
+
+gboolean
+gog_plot_axis_set_assign (GogPlot *plot, GogAxisSet axis_set)
+{
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+	GogChart const *chart;
+	GogAxisType type;
+
+	g_return_val_if_fail (klass != NULL, FALSE);
+
+	chart = gog_plot_get_chart (plot);
+	for (type = 0 ; type < GOG_AXIS_TYPES ; type++) {
+		if (plot->axis[type] != NULL) {
+			if (!(axis_set & (1 << type))) {
+				gog_axis_del_contributor (plot->axis[type], GOG_OBJECT (plot));
+				plot->axis[type] = NULL;
+			}
+		} else if (axis_set & (1 << type)) {
+			GSList *axes = gog_chart_get_axes (chart, type);
+			if (axes != NULL) {
+				gog_axis_add_contributor (axes->data, GOG_OBJECT (plot));
+				plot->axis[type] = axes->data;
+				g_slist_free (axes);
+			}
+		}
+	}
+
+	return (axis_set == klass->axis_set);
+}
+
+/**
+ * gog_plot_axis_clear : 
+ * @plot : #GogPlot
+ * @filter : #GogAxisSet
+ * 
+ * A utility method to clear all existing axis associations flagged by @filter
+ **/
+void
+gog_plot_axis_clear (GogPlot *plot, GogAxisSet filter)
+{
+	GogAxisType type;
+
+	g_return_if_fail (GOG_PLOT (plot) != NULL);
+
+	for (type = 0 ; type < GOG_AXIS_TYPES ; type++)
+		if (plot->axis[type] != NULL && ((1 << type) & filter)) {
+			gog_axis_del_contributor (plot->axis[type], GOG_OBJECT (plot));
+			plot->axis[type] = NULL;
+		}
+}
+
+static unsigned
+gog_plot_get_axis_id (GogPlot const *plot, GogAxisType type)
+{
+	GogAxis *axis = gog_plot_get_axis (plot, type);
+	
+	return axis != NULL ? gog_object_get_id (GOG_OBJECT (axis)) : 0;
+}
+
+GogAxis	*
+gog_plot_get_axis (GogPlot const *plot, GogAxisType type)
+{
+	g_return_val_if_fail (GOG_PLOT (plot) != NULL, NULL);
+	g_return_val_if_fail (type < GOG_AXIS_TYPES, NULL);
+	g_return_val_if_fail (GOG_AXIS_UNKNOWN < type, NULL);
+	return plot->axis[type];
+}
+
+void
+gog_plot_update_3d (GogPlot *plot)
+{
+	GogPlotClass *klass = GOG_PLOT_GET_CLASS (plot);
+	g_return_if_fail (GOG_PLOT (plot) != NULL);
+
+	if (klass->update_3d)
+		klass->update_3d (plot);
+}
+
+static void
+gog_plot_guru_helper_add_grid_line (GogPlot *plot, gboolean major) 
+{
+	GogAxisType type;
+
+	for (type = 0; type < GOG_AXIS_TYPES; type++) {
+		if (((type & (GOG_AXIS_X | 
+			    GOG_AXIS_Y | 
+			    GOG_AXIS_CIRCULAR | 
+			    GOG_AXIS_RADIAL)) != 0) &&
+		    plot->axis[type] != NULL &&
+		    gog_axis_get_grid_line (plot->axis[type], major) == NULL)
+		{
+			gog_object_add_by_name (GOG_OBJECT (plot->axis[type]), 
+						major ? "MajorGrid": "MinorGrid", NULL);
+		}
+	}
+}
+
+void
+gog_plot_guru_helper (GogPlot *plot)
+{
+	GogPlotClass *klass;
+	char **hints;
+	char *hint;
+	unsigned i;
+
+ 	g_return_if_fail (GOG_PLOT (plot) != NULL);	
+	klass = GOG_PLOT_GET_CLASS (plot);
+
+	if (plot->guru_hints == NULL)
+		return;
+
+	hints = g_strsplit (plot->guru_hints, ";", 0);
+	
+	for (i = 0; i < g_strv_length (hints); i++) {
+		hint = g_strstrip (hints[i]);
+		if (strcmp (hints[i], "backplane") == 0) {
+			GogChart *chart = GOG_CHART (gog_object_get_parent (GOG_OBJECT (plot)));
+			if (chart != NULL && gog_chart_get_grid (chart) == NULL)
+				gog_object_add_by_name (GOG_OBJECT (chart), "Grid", NULL);
+		} else if (strcmp (hints[i], "major-grid") == 0) {
+			gog_plot_guru_helper_add_grid_line (plot, TRUE);
+		} else if (strcmp (hints[i], "minor-grid") == 0) {
+			gog_plot_guru_helper_add_grid_line (plot, FALSE);
+		} else if (klass->guru_helper)
+			klass->guru_helper (plot, hint);
+	}
+
+	g_strfreev (hints);
+}
+
+/****************************************************************************/
+/* a placeholder.  It seems likely that we will want this eventually        */
+GSF_CLASS_ABSTRACT (GogPlotView, gog_plot_view,
+		    NULL, NULL,
+		    GOG_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-plot.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,75 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-plot.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_PLOT_H
+#define GOG_PLOT_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/utils/goffice-utils.h>
+#include <goffice/data/goffice-data.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	struct {
+		double minima, maxima;
+	} val, logical;
+	gboolean is_discrete;
+	gboolean center_on_ticks;
+	GOFormat *fmt;
+} GogPlotBoundInfo;
+
+#define GOG_PLOT_TYPE	(gog_plot_get_type ())
+#define GOG_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PLOT_TYPE, GogPlot))
+#define IS_GOG_PLOT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PLOT_TYPE))
+
+GType	  gog_plot_get_type (void);
+GogPlot  *gog_plot_new_by_type	(GogPlotType const *type);
+GogPlot  *gog_plot_new_by_name	(char const *id);
+gboolean  gog_plot_make_similar	(GogPlot *dst, GogPlot const *src);
+
+void	  gog_plot_request_cardinality_update (GogPlot *plot);
+void	  gog_plot_get_cardinality (GogPlot *plot,
+				    unsigned *full, unsigned *visible);
+void      gog_plot_foreach_elem    (GogPlot *plot, gboolean only_visible,
+				    GogEnumFunc handler, gpointer data);
+GSList const *gog_plot_get_series  (GogPlot const *plot);
+GOData	 *gog_plot_get_axis_bounds (GogPlot *plot, GogAxisType axis,
+				    GogPlotBoundInfo *bounds);
+
+gboolean  gog_plot_supports_vary_style_by_element (GogPlot const *plot);
+
+GogSeries	  *gog_plot_new_series	  (GogPlot *plot);
+GogPlotDesc const *gog_plot_description	  (GogPlot const *plot);
+
+GogAxisSet gog_plot_axis_set_pref	(GogPlot const *plot);
+gboolean   gog_plot_axis_set_is_valid	(GogPlot const *plot, GogAxisSet type);
+gboolean   gog_plot_axis_set_assign	(GogPlot *plot, GogAxisSet type);
+void	   gog_plot_axis_clear		(GogPlot *plot, GogAxisSet filter);
+GogAxis	  *gog_plot_get_axis		(GogPlot const *plot, GogAxisType type);
+
+void 	   gog_plot_update_3d 		(GogPlot *plot);
+
+void	   gog_plot_guru_helper		(GogPlot *plot);
+
+G_END_DECLS
+
+#endif /* GOG_PLOT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,112 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkTable" id="reg-curve-prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="n_rows">3</property>
+      <property name="n_columns">2</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label1">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">Low bound:</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">5</property>
+	  <property name="ypad">0</property>
+	  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	  <property name="width_chars">-1</property>
+	  <property name="single_line_mode">False</property>
+	  <property name="angle">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label2">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">High bound:</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">5</property>
+	  <property name="ypad">0</property>
+	  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	  <property name="width_chars">-1</property>
+	  <property name="single_line_mode">False</property>
+	  <property name="angle">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkCheckButton" id="skip-invalid">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">Skip invalid data</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,369 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-reg-curve.c :  
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-reg-curve.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/graph/gog-plot-engine.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-line.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtktogglebutton.h>
+
+#define GOG_REG_CURVE_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_REG_CURVE_TYPE, GogRegCurveClass))
+
+static GObjectClass *reg_curve_parent_klass;
+
+static GType gog_reg_curve_view_get_type (void);
+
+enum {
+	REG_CURVE_PROP_0,
+	REG_CURVE_PROP_SKIP_INVALID,
+};
+
+static void
+gog_reg_curve_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	style->interesting_fields = GOG_STYLE_LINE;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+skip_invalid_toggled_cb (GtkToggleButton* btn, GObject *obj)
+{
+	g_object_set (obj, "skip-invalid", gtk_toggle_button_get_active (btn), NULL);
+}
+
+static void
+gog_reg_curve_populate_editor (GogObject *gobj, 
+			  GogEditor *editor, 
+			  GogDataAllocator *dalloc, 
+			  GOCmdContext *cc)
+{
+	GtkWidget *w;
+	GtkTable *table;
+	GladeXML *gui;
+	GogDataset *set = GOG_DATASET (gobj);
+
+	gui = go_libglade_new ("gog-reg-curve-prefs.glade", "reg-curve-prefs", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	gog_editor_add_page (editor, 
+			     glade_xml_get_widget (gui, "reg-curve-prefs"),
+			     _("Details"));
+
+	table = GTK_TABLE (glade_xml_get_widget (gui, "reg-curve-prefs"));
+	w = GTK_WIDGET (gog_data_allocator_editor (dalloc, set, 0, GOG_DATA_SCALAR));
+	gtk_widget_show (w);
+	gtk_table_attach (table, w, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+	w = GTK_WIDGET (gog_data_allocator_editor (dalloc, set, 1, GOG_DATA_SCALAR));
+	gtk_widget_show (w);
+	gtk_table_attach (table, w, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+	w = glade_xml_get_widget (gui, "skip-invalid");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
+					(GOG_REG_CURVE (gobj))->skip_invalid);
+	g_signal_connect (G_OBJECT (w), "toggled",
+		G_CALLBACK (skip_invalid_toggled_cb), gobj);
+
+
+	(GOG_OBJECT_CLASS(reg_curve_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+}
+
+static void
+gog_reg_curve_get_property (GObject *obj, guint param_id,
+		       GValue *value, GParamSpec *pspec)
+{
+	GogRegCurve *rc = GOG_REG_CURVE (obj);
+	switch (param_id) {
+	case REG_CURVE_PROP_SKIP_INVALID:
+		g_value_set_boolean (value, rc->skip_invalid);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_reg_curve_set_property (GObject *obj, guint param_id,
+		       GValue const *value, GParamSpec *pspec)
+{
+	GogRegCurve *rc = GOG_REG_CURVE (obj);
+	switch (param_id) {
+	case REG_CURVE_PROP_SKIP_INVALID:
+		rc->skip_invalid = g_value_get_boolean (value);
+		gog_object_request_update (GOG_OBJECT (obj));
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_reg_curve_finalize (GObject *obj)
+{
+	GogRegCurve *rc = GOG_REG_CURVE (obj);
+	if (rc->bounds != NULL) {
+		gog_dataset_finalize (GOG_DATASET (obj));
+		g_free (rc->bounds);
+		rc->bounds = NULL;
+	}
+	(*reg_curve_parent_klass->finalize) (obj);
+}
+
+static char const *
+gog_reg_curve_type_name (GogObject const *gobj)
+{
+	return N_("Regression Curve");
+}
+
+static void
+gog_reg_curve_class_init (GogObjectClass *gog_klass)
+{
+	static GogObjectRole const roles[] = {
+		{ N_("Equation"), "GogRegEqn",	0,
+		  GOG_POSITION_ANY_MANUAL, GOG_POSITION_MANUAL, GOG_OBJECT_NAME_BY_ROLE,
+		  NULL, NULL, NULL, NULL, NULL, NULL },
+	};
+	GObjectClass *gobject_klass = (GObjectClass *) gog_klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) gog_klass;
+	GogRegCurveClass *reg_curve_klass = (GogRegCurveClass *) gog_klass;
+	reg_curve_parent_klass = g_type_class_peek_parent (gog_klass);
+
+	gobject_klass->get_property = gog_reg_curve_get_property;
+	gobject_klass->set_property = gog_reg_curve_set_property;
+	gobject_klass->finalize = gog_reg_curve_finalize;
+	gog_klass->populate_editor	= gog_reg_curve_populate_editor;
+	style_klass->init_style = gog_reg_curve_init_style;
+	gog_klass->type_name	= gog_reg_curve_type_name;
+	gog_klass->view_type	= gog_reg_curve_view_get_type ();
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+
+	reg_curve_klass->get_value_at = NULL;
+	reg_curve_klass->get_equation = NULL;
+	reg_curve_klass->get_R2 = NULL;
+
+	g_object_class_install_property (gobject_klass, REG_CURVE_PROP_SKIP_INVALID,
+		g_param_spec_boolean ("skip-invalid", "skip-invalid",
+			"Skip invalid data", FALSE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_reg_curve_init (GogRegCurve *reg_curve)
+{
+	reg_curve->ninterp = 100;
+	reg_curve->bounds = g_new0 (GogDatasetElement, 2);
+}
+
+static void
+gog_reg_curve_dataset_dims (GogDataset const *set, int *first, int *last)
+{
+	*first = 0;
+	*last = 1;
+}
+
+static GogDatasetElement *
+gog_reg_curve_dataset_get_elem (GogDataset const *set, int dim_i)
+{
+	GogRegCurve const *rc = GOG_REG_CURVE (set);
+	g_return_val_if_fail (2 > dim_i, NULL);
+	g_return_val_if_fail (dim_i >= 0, NULL);
+	return rc->bounds + dim_i;
+}
+
+static void
+gog_reg_curve_dataset_dim_changed (GogDataset *set, int dim_i)
+{
+	gog_object_request_update (GOG_OBJECT (set));
+}
+
+static void
+gog_reg_curve_dataset_init (GogDatasetClass *iface)
+{
+	iface->get_elem	   = gog_reg_curve_dataset_get_elem;
+	iface->dims	   = gog_reg_curve_dataset_dims;
+	iface->dim_changed	   = gog_reg_curve_dataset_dim_changed;
+}
+
+GSF_CLASS_FULL (GogRegCurve, gog_reg_curve,
+	   NULL, NULL, gog_reg_curve_class_init, NULL,
+	   gog_reg_curve_init, GOG_STYLED_OBJECT_TYPE, G_TYPE_FLAG_ABSTRACT,
+		GSF_INTERFACE (gog_reg_curve_dataset_init, GOG_DATASET_TYPE))
+
+GogRegCurve *
+gog_reg_curve_new_by_type (GogRegCurveType const *type)
+{
+	GogRegCurve *res;
+
+	g_return_val_if_fail (type != NULL, NULL);
+
+	res = gog_reg_curve_new_by_name (type->engine);
+	if (res != NULL && type->properties != NULL)
+		g_hash_table_foreach (type->properties,
+			(GHFunc) gog_object_set_arg, res);
+	return res;
+}
+
+static double
+gog_reg_curve_get_value_at (GogRegCurve *reg_curve, double x)
+{
+	return (GOG_REG_CURVE_GET_CLASS (reg_curve))->get_value_at (reg_curve, x);
+}
+
+gchar const*
+gog_reg_curve_get_equation (GogRegCurve *reg_curve)
+{
+	return (GOG_REG_CURVE_GET_CLASS (reg_curve))->get_equation (reg_curve);
+}
+
+double
+gog_reg_curve_get_R2 (GogRegCurve *reg_curve)
+{
+	return (GOG_REG_CURVE_GET_CLASS (reg_curve))->get_R2 (reg_curve);
+}
+
+void
+gog_reg_curve_get_bounds (GogRegCurve *reg_curve, double *xmin, double *xmax)
+{
+	if (reg_curve->bounds[0].data) {
+		*xmin = go_data_scalar_get_value (
+			GO_DATA_SCALAR (reg_curve->bounds[0].data));
+		if (*xmin == go_nan || !go_finite (*xmin))
+			*xmin = -DBL_MAX;
+	} else
+		*xmin = -DBL_MAX;
+	if (reg_curve->bounds[1].data) {
+		*xmax = go_data_scalar_get_value (
+			GO_DATA_SCALAR (reg_curve->bounds[1].data));
+		if (*xmax == go_nan || !go_finite (*xmax))
+			*xmax = DBL_MAX;
+	} else
+		*xmax = DBL_MAX;
+}
+
+/****************************************************************************/
+
+typedef GogView		GogRegCurveView;
+typedef GogViewClass	GogRegCurveViewClass;
+
+#define GOG_REG_CURVE_VIEW_TYPE	(gog_reg_curve_view_get_type ())
+#define GOG_REG_CURVE_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_REG_CURVE_VIEW_TYPE, GogRegCurveView))
+#define IS_GOG_REG_CURVE_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_REG_CURVE_VIEW_TYPE))
+
+static GogViewClass *reg_curve_view_parent_klass;
+
+static void
+gog_reg_curve_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogRegCurve *rc = GOG_REG_CURVE (view->model);
+	GogSeries *series = GOG_SERIES ((GOG_OBJECT (rc))->parent);
+	GogPlot *plot = series->plot;
+	GogAxisMap *x_map, *y_map;
+	double buf, *x, *y;
+	GogStyle *style;
+	ArtBpath *path;
+	int i;
+	GSList *ptr;
+
+	x_map = gog_axis_map_new (plot->axis[0], 
+				  view->residual.x , view->residual.w);
+	y_map = gog_axis_map_new (plot->axis[1], 
+				  view->residual.y + view->residual.h, 
+				  -view->residual.h);
+
+	if (!(gog_axis_map_is_valid (x_map) &&
+	      gog_axis_map_is_valid (y_map))) {
+		gog_axis_map_free (x_map);
+		gog_axis_map_free (y_map);
+		return;
+	}
+	
+	gog_renderer_push_clip (view->renderer, 
+		gog_renderer_get_rectangle_vpath (&view->residual)); 
+	
+	x = g_new (double, rc->ninterp + 3);
+	y = g_new (double, rc->ninterp + 3);
+	gog_axis_get_bounds (plot->axis[0], x, x + rc->ninterp + 1);
+	x[0] = gog_axis_map_to_view (x_map, x[0]);
+	x[rc->ninterp + 1] = gog_axis_map_to_view (x_map, x[rc->ninterp + 1]);
+	buf = (x[rc->ninterp + 1] - x[0]) / (rc->ninterp + 1);
+	for (i = 1; i <= rc->ninterp; i++)
+		x[i] = x[0] + i * buf;
+
+	for (i = 0; i <= rc->ninterp + 1; i++)
+		y[i] = gog_axis_map_to_view (y_map,
+					gog_reg_curve_get_value_at (rc, gog_axis_map_from_view (x_map, x[i])));
+
+	path = go_line_build_bpath (x, y, rc->ninterp + 2);
+	style = GOG_STYLED_OBJECT (rc)->style;
+	gog_renderer_push_style (view->renderer, style);
+	gog_renderer_draw_bezier_path (view->renderer, path);
+
+	gog_renderer_pop_style (view->renderer);
+	g_free (x);
+	g_free (y);
+	art_free (path);
+	gog_axis_map_free (x_map);
+	gog_axis_map_free (y_map);
+
+	gog_renderer_pop_clip (view->renderer);
+	
+	for (ptr = view->children ; ptr != NULL ; ptr = ptr->next)
+		gog_view_render	(ptr->data, bbox);
+}
+
+static void
+gog_reg_curve_view_size_allocate (GogView *view, GogViewAllocation const *allocation)
+{
+	GSList *ptr;
+
+	for (ptr = view->children; ptr != NULL; ptr = ptr->next)
+		gog_view_size_allocate (GOG_VIEW (ptr->data), allocation);
+	(reg_curve_view_parent_klass->size_allocate) (view, allocation);
+}
+
+static void
+gog_reg_curve_view_class_init (GogRegCurveViewClass *gview_klass)
+{
+	GogViewClass *view_klass    = (GogViewClass *) gview_klass;
+	reg_curve_view_parent_klass = g_type_class_peek_parent (gview_klass);
+
+	view_klass->render	  = gog_reg_curve_view_render;
+	view_klass->size_allocate = gog_reg_curve_view_size_allocate;
+}
+
+static GSF_CLASS (GogRegCurveView, gog_reg_curve_view,
+		  gog_reg_curve_view_class_init, NULL,
+		  GOG_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-curve.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,59 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-reg-curve.h :  
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_REG_CURVE_H
+#define GOG_REG_CURVE_H
+
+#include <goffice/graph/gog-series.h>
+#include <goffice/graph/gog-data-set.h>
+
+struct  _GogRegCurve {
+	GogStyledObject	base;
+	
+	GogSeries 	  *series;
+	gboolean  	   weighted;
+	GODataVector 	  *weights;
+	GogDatasetElement *bounds;
+	gboolean skip_invalid; /* do not take into account invalid data */
+	int ninterp; /* how many points to use for display the curve as a vpath */
+};
+
+typedef struct {
+	GogStyledObjectClass base;
+
+	double 		(*get_value_at) (GogRegCurve *reg_curve, double x);
+	gchar const* 	(*get_equation) (GogRegCurve *reg_curve);
+	double 		(*get_R2) 	(GogRegCurve *reg_curve);
+} GogRegCurveClass;
+
+#define GOG_REG_CURVE_TYPE	(gog_reg_curve_get_type ())
+#define GOG_REG_CURVE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_REG_CURVE_TYPE, GogRegCurve))
+#define IS_GOG_REG_CURVE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_REG_CURVE_TYPE))
+
+GType gog_reg_curve_get_type (void);
+
+GogRegCurve *gog_reg_curve_new_by_name  (char const *id);
+GogRegCurve *gog_reg_curve_new_by_type  (GogRegCurveType const *type);
+gchar const *gog_reg_curve_get_equation (GogRegCurve *reg_curve);
+double       gog_reg_curve_get_R2       (GogRegCurve *reg_curve);
+void         gog_reg_curve_get_bounds   (GogRegCurve *reg_curve, double *xmin, double *xmax);
+
+#endif /* GOG_REG_CURVE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-eqn-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-eqn-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-reg-eqn-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,69 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkVBox" id="reg-eqn-prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">6</property>
+
+      <child>
+	<widget class="GtkCheckButton" id="show_eq">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">Display _equation</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkCheckButton" id="show_r2">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">Display _regression coefficient R²</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-cairo.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-cairo.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-cairo.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,753 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-cairo.c :
+ *
+ * Copyright (C) 2005 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+/* TODO:
+ *
+ * 	- implement stretched image texture
+ * 	- fix alpha channel of source image for texture
+ * 	- fix font size
+ * 	- implement mutiline text
+ * 	- cache font properties
+ * 	- implement rendering of marker with cairo 
+ * 	  (that will fix grayish outline bug)
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-graph-impl.h>
+#include <goffice/graph/gog-renderer-cairo.h>
+#include <goffice/graph/gog-renderer-impl.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-font.h>
+#include <goffice/utils/go-marker.h>
+#include <goffice/utils/go-units.h>
+#include <goffice/utils/go-math.h>
+
+#include <libart_lgpl/art_render_gradient.h>
+#include <libart_lgpl/art_render_svp.h>
+#include <libart_lgpl/art_render_mask.h>
+#include <pango/pangoft2.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <cairo/cairo.h>
+
+#include <math.h>
+
+#define DOUBLE_RGBA_R(x) (double)UINT_RGBA_R(x)/255.0
+#define DOUBLE_RGBA_G(x) (double)UINT_RGBA_G(x)/255.0
+#define DOUBLE_RGBA_B(x) (double)UINT_RGBA_B(x)/255.0
+#define DOUBLE_RGBA_A(x) (double)UINT_RGBA_A(x)/255.0
+
+#define GO_COLOR_TO_CAIRO(x) DOUBLE_RGBA_R(x),DOUBLE_RGBA_G(x),DOUBLE_RGBA_B(x),DOUBLE_RGBA_A(x)
+
+struct _GogRendererCairo {
+	GogRenderer base;
+
+	int 		 w, h;
+
+	cairo_t		*cairo;
+	GdkPixbuf 	*pixbuf;
+
+	cairo_surface_t *marker_surface;
+	GdkPixbuf	*marker_pixbuf;
+};
+
+typedef GogRendererClass GogRendererCairoClass;
+
+static GObjectClass *parent_klass;
+
+static void
+gog_renderer_cairo_finalize (GObject *obj)
+{
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (obj);
+	cairo_surface_t *surface;
+
+	if (crend->cairo != NULL){
+		surface = cairo_get_target (crend->cairo);
+		cairo_surface_destroy (surface);
+		cairo_destroy (crend->cairo);
+		crend->cairo = NULL;
+	}
+	if (crend->pixbuf != NULL) {
+		g_object_unref (crend->pixbuf);
+		crend->pixbuf = NULL;
+	}
+	if (crend->marker_surface != NULL) {
+		cairo_surface_destroy (crend->marker_surface);
+		g_object_unref (crend->marker_pixbuf);
+		crend->marker_surface = NULL;
+		crend->marker_pixbuf = NULL;
+	}
+	
+	(*parent_klass->finalize) (obj);
+}
+
+static void
+gog_renderer_cairo_clip_push (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (rend);
+	double x, y;
+
+	/* Rounding clipping area trigger cairo fast clip */
+	x = floor (clip->area.x + 0.5);
+	y = floor (clip->area.y + 0.5);
+
+	cairo_save (crend->cairo);
+	cairo_rectangle (crend->cairo, x, y,
+			 floor (clip->area.x + clip->area.w + 0.5) - x,
+			 floor (clip->area.y + clip->area.h + 0.5) - y);
+	cairo_clip (crend->cairo);
+}
+
+static void
+gog_renderer_cairo_clip_pop (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (rend);
+
+	cairo_restore (crend->cairo);
+}
+
+static double
+grc_line_size (GogRenderer const *rend, double width)
+{
+	if (go_sub_epsilon (width) <= 0.) /* cheesy version of hairline */
+		return 1.;
+	
+	width *= rend->scale;
+	if (width <= 1.)
+		return width;
+
+	return floor (width);
+}
+
+static double
+gog_renderer_cairo_line_size (GogRenderer const *rend, double width)
+{
+	double size = grc_line_size (rend, width);
+
+	if (size < 1.0)
+		return ceil (size);
+
+	return size;
+}
+
+static void
+gog_renderer_cairo_sharp_path (GogRenderer *rend, ArtVpath *path, double line_width) 
+{
+	ArtVpath *iter = path;
+
+	if (((int) (rint (line_width)) % 2 == 0) && line_width > 1.0) 
+		while (iter->code != ART_END) {
+			iter->x = floor (iter->x + .5);
+			iter->y = floor (iter->y + .5);
+			iter++;
+		}
+	else
+		while (iter->code != ART_END) {
+			iter->x = floor (iter->x) + .5;
+			iter->y = floor (iter->y) + .5;
+			iter++;
+		}
+}
+
+static void
+grc_path (cairo_t *cr, ArtVpath *vpath, ArtBpath *bpath)
+{
+	if (vpath) 
+		while (vpath->code != ART_END) {
+			switch (vpath->code) {
+				case ART_MOVETO_OPEN:
+				case ART_MOVETO:
+					cairo_move_to (cr, vpath->x, vpath->y);
+					break;
+				case ART_LINETO:
+					cairo_line_to (cr, vpath->x, vpath->y);
+					break;
+				default:
+					break;
+			}
+			vpath++;
+		}
+	else
+		while (bpath->code != ART_END) {
+			switch (bpath->code) {
+				case ART_MOVETO_OPEN:
+				case ART_MOVETO:
+					cairo_move_to (cr, bpath->x3, bpath->y3);
+					break;
+				case ART_LINETO:
+					cairo_line_to (cr, bpath->x3, bpath->y3);
+					break;
+				case ART_CURVETO:
+					cairo_curve_to (cr, 
+						       bpath->x1, bpath->y1,
+						       bpath->x2, bpath->y2,
+						       bpath->x3, bpath->y3);
+					break;
+				default:
+					break;
+			}
+			bpath++;
+		}
+}
+
+/* Red and blue are inverted in a pixbuf compared to cairo */
+static void
+grc_invert_pixbuf_RB (unsigned char *pixels, int width, int height, int rowstride)
+{
+	int i,j;
+	unsigned char a;
+	
+	for (i = 0; i < height; i++) {
+		for (j = 0; j < width; j++) {
+			a = pixels[0];
+			pixels[0] = pixels[2];
+			pixels[2] = a;
+			pixels += 4;
+		}
+		pixels += rowstride - width * 4;
+	}
+}
+
+static void
+grc_draw_path (GogRenderer *rend, ArtVpath const *vpath, ArtBpath const*bpath)
+{
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (rend);
+	GogStyle const *style = rend->cur_style;
+	cairo_t *cr = crend->cairo;
+	double width = grc_line_size (rend, style->line.width);
+
+	g_return_if_fail (bpath != NULL || vpath != NULL);
+
+	cairo_set_line_width (cr, width);
+	if (rend->line_dash != NULL)
+		cairo_set_dash (cr, 
+				rend->line_dash->dash, 
+				rend->line_dash->n_dash, 
+				rend->line_dash->offset);
+	grc_path (cr, (ArtVpath *) vpath, (ArtBpath *) bpath);
+	cairo_set_source_rgba (cr, GO_COLOR_TO_CAIRO (style->line.color));
+	cairo_stroke (cr);
+}
+
+static void
+gog_renderer_cairo_draw_path (GogRenderer *rend, ArtVpath const *path)
+{
+	grc_draw_path (rend, path, NULL);
+}
+  
+static void
+gog_renderer_cairo_draw_bezier_path (GogRenderer *rend, ArtBpath const *path)
+{
+	grc_draw_path (rend, NULL, path);
+}
+
+static void
+grc_draw_polygon (GogRenderer *rend, ArtVpath const *vpath, 
+		  ArtBpath const *bpath, gboolean narrow)
+{
+	struct { unsigned x0i, y0i, x1i, y1i; } const grad_i[GO_GRADIENT_MAX] = {
+		{0, 0, 0, 1},
+		{0, 1, 0, 0},
+		{0, 0, 0, 2},
+		{0, 2, 0, 1},
+		{0, 0, 1, 0},
+		{1, 0, 0, 0},
+		{0, 0, 2, 0},
+		{2, 0, 1, 0},
+		{0, 0, 1, 1},
+		{1, 1, 0, 0},
+		{0, 0, 2, 2},
+		{2, 2, 1, 1},
+		{1, 0, 0, 1},
+		{0, 1, 1, 0},
+		{1, 0, 2, 2},
+		{2, 2, 0, 1}
+	};
+	
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (rend);
+	GogStyle const *style = rend->cur_style;
+	cairo_t *cr = crend->cairo;
+	cairo_pattern_t *cr_pattern = NULL;
+	cairo_surface_t *cr_surface = NULL;
+	GdkPixbuf *pixbuf = NULL;
+	GOColor color;
+	double width = grc_line_size (rend, style->line.width);
+	double x[3], y[3];
+	int i, j, w, h, rowstride;
+	guint8 const *pattern;
+	unsigned char *pixels, *iter;
+
+	g_return_if_fail (bpath != NULL || vpath != NULL);
+
+	narrow = narrow || (style->outline.dash_type == GO_LINE_NONE);
+
+	if (narrow && style->fill.type == GOG_FILL_STYLE_NONE)
+		return;
+
+	cairo_set_line_width (cr, width);
+	grc_path (cr, (ArtVpath *) vpath, (ArtBpath *) bpath);
+
+	switch (style->fill.type) {
+		case GOG_FILL_STYLE_PATTERN:
+			if (go_pattern_is_solid (&style->fill.pattern, &color))
+				cairo_set_source_rgba (cr, GO_COLOR_TO_CAIRO (color)); 
+			else {
+				GOColor fore = style->fill.pattern.fore;
+				GOColor back = style->fill.pattern.back;
+				int rowstride;
+
+				pattern = go_pattern_get_pattern (&style->fill.pattern);
+				pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 8, 8);
+				iter = gdk_pixbuf_get_pixels (pixbuf);
+				rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+				cr_surface = cairo_image_surface_create_for_data ( iter, 
+					CAIRO_FORMAT_ARGB32, 8, 8, rowstride);
+				for (i = 0; i < 8; i++) {
+					for (j = 0; j < 8; j++) {
+						color = pattern[i] & (1 << j) ? fore : back;
+						iter[0] = UINT_RGBA_B (color);
+						iter[1] = UINT_RGBA_G (color);
+						iter[2] = UINT_RGBA_R (color);
+						iter[3] = UINT_RGBA_A (color);
+						iter += 4;
+					}
+					iter += rowstride - 32;
+				}
+				cr_pattern = cairo_pattern_create_for_surface (cr_surface);
+				cairo_pattern_set_extend (cr_pattern, CAIRO_EXTEND_REPEAT);
+				cairo_set_source (cr, cr_pattern);
+			}
+			break;
+
+		case GOG_FILL_STYLE_GRADIENT:
+			cairo_fill_extents (cr, &x[0], &y[0], &x[1], &y[1]); 
+			x[2] = (x[1] - x[0]) / 2.0 + x[1];
+			y[2] = (y[1] - y[0]) / 2.0 + y[1];
+			cr_pattern = cairo_pattern_create_linear (
+				x[grad_i[style->fill.gradient.dir].x0i],
+				y[grad_i[style->fill.gradient.dir].y0i],
+				x[grad_i[style->fill.gradient.dir].x1i],
+				y[grad_i[style->fill.gradient.dir].y1i]);
+			cairo_pattern_set_extend (cr_pattern, CAIRO_EXTEND_REFLECT);
+			cairo_pattern_add_color_stop_rgba (cr_pattern, 0,
+				GO_COLOR_TO_CAIRO (style->fill.pattern.back)); 
+			cairo_pattern_add_color_stop_rgba (cr_pattern, 1,
+				GO_COLOR_TO_CAIRO (style->fill.pattern.fore));
+			cairo_set_source (cr, cr_pattern);
+			break;
+
+		case GOG_FILL_STYLE_IMAGE: 
+			if (style->fill.image.image == NULL) {
+				cairo_set_source_rgba (cr, 1, 1, 1, 1); 
+				break;
+			}
+			pixbuf = gdk_pixbuf_add_alpha (style->fill.image.image, FALSE, 0, 0, 0);
+			pixels = gdk_pixbuf_get_pixels (pixbuf);
+			h = gdk_pixbuf_get_height (pixbuf);
+			w = gdk_pixbuf_get_width (pixbuf);
+			rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+			cr_surface = cairo_image_surface_create_for_data (pixels,
+				CAIRO_FORMAT_ARGB32, w, h, rowstride);
+			grc_invert_pixbuf_RB (pixels, w, h, rowstride);
+			cr_pattern = cairo_pattern_create_for_surface (cr_surface);
+			cairo_pattern_set_extend (cr_pattern, CAIRO_EXTEND_REPEAT);
+			cairo_set_source (cr, cr_pattern);
+			break;
+
+		case GOG_FILL_STYLE_NONE:
+			break; /* impossible */
+	}
+
+	if (style->fill.type != GOG_FILL_STYLE_NONE) {
+		if (!narrow) 
+			cairo_fill_preserve (cr);
+		else 
+			cairo_fill (cr);
+	} 
+
+	if (!narrow) {
+		cairo_set_source_rgba (cr, GO_COLOR_TO_CAIRO (style->outline.color));
+		if (rend->outline_dash != NULL)
+			cairo_set_dash (cr, 
+					rend->outline_dash->dash, 
+					rend->outline_dash->n_dash, 
+					rend->outline_dash->offset);
+		cairo_stroke (cr);
+	}
+
+	if (cr_pattern != NULL)
+		cairo_pattern_destroy (cr_pattern);
+	if (cr_surface != NULL)
+		cairo_surface_destroy (cr_surface);
+	if (pixbuf)
+		g_object_unref (pixbuf);
+}
+
+static void
+gog_renderer_cairo_draw_polygon (GogRenderer *rend, ArtVpath const *path, 
+				 gboolean narrow)
+{
+	grc_draw_polygon (rend, path, NULL, narrow);
+}
+
+static void
+gog_renderer_cairo_draw_bezier_polygon (GogRenderer *rend, ArtBpath const *path,
+					 gboolean narrow)
+{
+	grc_draw_polygon (rend, NULL, path, narrow);
+}
+
+static void
+gog_renderer_cairo_draw_text (GogRenderer *rend, char const *text,
+			      GogViewAllocation const *pos, GtkAnchorType anchor,
+			      GogViewAllocation *result)
+{
+	GogRendererCairo *crend = (GogRendererCairo *) rend;
+	GogStyle const *style = rend->cur_style;
+	PangoFontDescription const *fd = style->font.font->desc;
+	PangoWeight weight;
+	cairo_t *cr = crend->cairo;
+	cairo_text_extents_t text_extents;
+	cairo_font_extents_t font_extents;
+	cairo_font_slant_t slant;
+	GOGeometryOBR obr;
+	GOGeometryAABR aabr;
+	char const *family;
+	double size;
+
+	family = pango_font_description_get_family (fd);
+	size = pango_font_description_get_size (fd) / PANGO_SCALE;
+	weight = pango_font_description_get_weight (fd);
+	switch (pango_font_description_get_style (fd)) {
+		case (PANGO_STYLE_NORMAL):  slant = CAIRO_FONT_SLANT_NORMAL; break;
+		case (PANGO_STYLE_OBLIQUE): slant = CAIRO_FONT_SLANT_OBLIQUE; break;
+		case (PANGO_STYLE_ITALIC):  slant = CAIRO_FONT_SLANT_ITALIC; break;
+	}
+/*	g_message ("family: %s, size: %g", family, size);*/
+	/* FIXME: calculate dpi */
+	size *= 96.0 * rend->scale * rend->zoom / 72.0;
+	cairo_select_font_face (cr, family, slant, 
+		weight > PANGO_WEIGHT_SEMIBOLD ?  CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL);
+	cairo_set_font_size (cr, size);
+	cairo_text_extents (cr, text, &text_extents);
+	cairo_font_extents (cr, &font_extents);
+	
+	obr.w = text_extents.width;
+	obr.h = font_extents.ascent + font_extents.descent;
+	obr.alpha = rend->cur_style->text_layout.angle * M_PI / 180.0;
+	obr.x = pos->x;
+	obr.y = pos->y;
+	go_geometry_OBR_to_AABR (&obr, &aabr);
+
+	switch (anchor) {
+		case GTK_ANCHOR_NW: case GTK_ANCHOR_W: case GTK_ANCHOR_SW:
+			obr.x += aabr.w / 2.0;
+			break;
+		case GTK_ANCHOR_NE : case GTK_ANCHOR_SE : case GTK_ANCHOR_E :
+			obr.x -= aabr.w / 2.0;
+			break;
+		default : break;
+	}
+	if (obr.x <= 0)
+		obr.x = 0;
+
+	switch (anchor) {
+		case GTK_ANCHOR_NW: case GTK_ANCHOR_N: case GTK_ANCHOR_NE:
+			obr.y += aabr.h / 2.0;
+			break;
+		case GTK_ANCHOR_SE : case GTK_ANCHOR_S : case GTK_ANCHOR_SW :
+			obr.y -= aabr.h / 2.0;
+			break;
+		default : break;
+	}
+	if (obr.y <= 0)
+		obr.y = 0;
+
+	cairo_save (cr);
+	cairo_set_source_rgba (cr, GO_COLOR_TO_CAIRO (style->font.color)); 
+	cairo_move_to (cr, obr.x, obr.y);
+	cairo_rotate (cr, -obr.alpha);
+	cairo_rel_move_to (cr, - obr.w / 2.0, + obr.h / 2.0 - font_extents.descent);
+	cairo_show_text (cr, text);
+	cairo_restore (cr);
+
+	if (result != NULL) {
+		result->x = aabr.x;
+		result->y = aabr.y;
+		result->w = aabr.w;
+		result->h = aabr.h;
+	}
+}
+
+static void
+gog_renderer_cairo_get_text_OBR (GogRenderer *rend,
+				 char const *text, GOGeometryOBR *obr)
+{
+	GogRendererCairo *crend = (GogRendererCairo *) rend;
+	GogStyle const *style = rend->cur_style;
+	PangoFontDescription const *fd = style->font.font->desc;
+	PangoWeight weight;
+	cairo_t *cr = crend->cairo;
+	cairo_text_extents_t text_extents;
+	cairo_font_extents_t font_extents;
+	cairo_font_slant_t slant;
+	char const *family;
+	double size;
+	
+	family = pango_font_description_get_family (fd);
+	/* FIXME: calculate dpi */
+	size = pango_font_description_get_size (fd) / PANGO_SCALE / 72.0 * 96.0 * rend->scale * rend->zoom;
+	weight = pango_font_description_get_weight (fd);
+	switch (pango_font_description_get_style (fd)) {
+		case (PANGO_STYLE_NORMAL):  slant = CAIRO_FONT_SLANT_NORMAL; break;
+		case (PANGO_STYLE_OBLIQUE): slant = CAIRO_FONT_SLANT_OBLIQUE; break;
+		case (PANGO_STYLE_ITALIC):  slant = CAIRO_FONT_SLANT_ITALIC; break;
+	}
+	cairo_select_font_face (cr, family, slant, 
+		weight > PANGO_WEIGHT_SEMIBOLD ?  CAIRO_FONT_WEIGHT_BOLD : CAIRO_FONT_WEIGHT_NORMAL);
+	cairo_set_font_size (cr, size);
+	cairo_text_extents (cr, text, &text_extents);
+	cairo_font_extents (cr, &font_extents);
+
+	obr->w = text_extents.width;
+	obr->h = font_extents.ascent + font_extents.descent;
+}
+
+static cairo_surface_t *
+grc_get_marker_surface (GogRenderer *rend)
+{
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (rend);
+	GogStyle const *style = rend->cur_style;
+	GdkPixbuf *pixbuf, *marker_pixbuf;
+	cairo_surface_t *surface;
+	unsigned char *pixels;
+	int height, width, rowstride;
+
+	if (crend->marker_surface != NULL)
+		return crend->marker_surface;
+       	
+	marker_pixbuf = go_marker_get_pixbuf (style->marker.mark, rend->scale);
+	if (marker_pixbuf == NULL)
+		return NULL;
+
+	pixbuf = gdk_pixbuf_copy (go_marker_get_pixbuf (style->marker.mark, rend->scale));
+       	pixels = gdk_pixbuf_get_pixels (pixbuf);
+	height = gdk_pixbuf_get_height (pixbuf);
+	width = gdk_pixbuf_get_width (pixbuf);
+	rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+	surface = cairo_image_surface_create_for_data (pixels,
+		CAIRO_FORMAT_ARGB32, width, height, rowstride);
+	grc_invert_pixbuf_RB (pixels, width, height, rowstride);
+
+	crend->marker_pixbuf = pixbuf;
+	crend->marker_surface = surface;
+
+	return surface;
+}
+
+static void
+gog_renderer_cairo_draw_marker (GogRenderer *rend, double x, double y)
+{
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (rend);
+	cairo_surface_t *surface;
+	double width, height;
+
+	surface = grc_get_marker_surface (rend);
+	if (surface == NULL)
+		return;
+	width = cairo_image_surface_get_width (surface);
+	height = cairo_image_surface_get_height (surface);
+	cairo_set_source_surface (crend->cairo, surface, 
+				  floor (floor (x + .5) - width / 2.0),
+				  floor (floor (y + .5) - height / 2.0));
+	cairo_paint (crend->cairo);
+}
+
+static void
+gog_renderer_cairo_push_style (GogRenderer *rend, GogStyle const *style)
+{
+}
+
+static void
+gog_renderer_cairo_pop_style (GogRenderer *rend)
+{
+	GogRendererCairo *crend = GOG_RENDERER_CAIRO (rend);
+	
+	if (crend->marker_surface != NULL) {
+		cairo_surface_destroy (crend->marker_surface);
+		g_object_unref (crend->marker_pixbuf);
+		crend->marker_surface = NULL;
+		crend->marker_pixbuf = NULL;
+	}
+}
+
+static void
+gog_renderer_cairo_class_init (GogRendererClass *rend_klass)
+{
+	GObjectClass *gobject_klass   = (GObjectClass *) rend_klass;
+
+	parent_klass = g_type_class_peek_parent (rend_klass);
+	gobject_klass->finalize		= gog_renderer_cairo_finalize;
+	rend_klass->push_style		= gog_renderer_cairo_push_style;
+	rend_klass->pop_style		= gog_renderer_cairo_pop_style;
+	rend_klass->clip_push  		= gog_renderer_cairo_clip_push;
+	rend_klass->clip_pop     	= gog_renderer_cairo_clip_pop;
+	rend_klass->sharp_path		= gog_renderer_cairo_sharp_path;
+	rend_klass->draw_path	  	= gog_renderer_cairo_draw_path;
+	rend_klass->draw_polygon  	= gog_renderer_cairo_draw_polygon;
+	rend_klass->draw_bezier_path 	= gog_renderer_cairo_draw_bezier_path;
+	rend_klass->draw_bezier_polygon = gog_renderer_cairo_draw_bezier_polygon;
+	rend_klass->draw_text	  	= gog_renderer_cairo_draw_text;
+	rend_klass->draw_marker	  	= gog_renderer_cairo_draw_marker;
+	rend_klass->get_text_OBR	= gog_renderer_cairo_get_text_OBR;
+	rend_klass->line_size		= gog_renderer_cairo_line_size;
+}
+
+static void
+gog_renderer_cairo_init (GogRendererCairo *crend)
+{
+	crend->cairo = NULL;
+	crend->pixbuf = NULL;
+	crend->marker_surface = NULL;
+	crend->marker_pixbuf = NULL;
+	crend->w = crend->h = 0;
+}
+
+GSF_CLASS (GogRendererCairo, gog_renderer_cairo,
+	   gog_renderer_cairo_class_init, gog_renderer_cairo_init,
+	   GOG_RENDERER_TYPE)
+
+GdkPixbuf *
+gog_renderer_cairo_get_pixbuf (GogRendererCairo *crend)
+{
+	g_return_val_if_fail (crend != NULL, NULL);
+
+	return crend->pixbuf;
+}
+
+static gboolean
+grc_cairo_setup (GogRendererCairo *crend, int w, int h)
+{
+	cairo_surface_t *surface;
+
+	if (w == crend->w && h == crend->h)
+		return (w != 0 && h!= 0);
+		
+	if (crend->cairo != NULL) {
+		surface = cairo_get_target (crend->cairo);
+		cairo_surface_destroy (surface);
+		cairo_destroy (crend->cairo);
+		crend->cairo = NULL;
+	}
+	if (crend->pixbuf != NULL) {
+		g_object_unref (crend->pixbuf);
+		crend->pixbuf = NULL;
+	}
+	crend->w = w;
+	crend->h = h;
+
+	if (w ==0 || h == 0) 
+		return FALSE;
+	
+	crend->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, crend->w, crend->h);
+	if (crend->pixbuf == NULL) {
+		g_warning ("GogRendererCairo::cairo_setup: chart is too large");
+		return FALSE;
+	}
+
+	surface = cairo_image_surface_create_for_data (gdk_pixbuf_get_pixels (crend->pixbuf),
+						       CAIRO_FORMAT_ARGB32, 
+						       crend->w, crend->h,
+						       gdk_pixbuf_get_rowstride (crend->pixbuf));
+	crend->cairo = cairo_create (surface);
+	cairo_set_line_join (crend->cairo, CAIRO_LINE_JOIN_ROUND);
+	cairo_set_line_cap (crend->cairo, CAIRO_LINE_CAP_ROUND);
+
+	return TRUE;
+}
+
+/**
+ * gog_renderer_update :
+ * @prend :
+ * @w :
+ * @h :
+ *
+ * Returns TRUE if the size actually changed.
+ **/
+gboolean
+gog_renderer_cairo_update (GogRendererCairo *crend, int w, int h, double zoom)
+{
+	GogGraph *graph;
+	GogView *view;
+	GogViewAllocation allocation;
+	gboolean redraw = TRUE;
+	gboolean size_changed;
+
+	g_return_val_if_fail (crend != NULL, FALSE);
+	g_return_val_if_fail (crend->base.view != NULL, FALSE);
+
+	size_changed = crend->w != w || crend->h != h;
+
+	view = crend->base.view;
+	graph = GOG_GRAPH (view->model);
+	gog_graph_force_update (graph);
+	allocation.x = allocation.y = 0.;
+	allocation.w = w;
+	allocation.h = h;
+	if (!grc_cairo_setup (crend, w, h))
+		return redraw;
+
+	if (size_changed) {
+		crend->base.scale_x = w / graph->width;
+		crend->base.scale_y = h / graph->height;
+		crend->base.scale = MIN (crend->base.scale_x, crend->base.scale_y);
+		crend->base.zoom  = zoom;
+
+		/* make sure we dont try to queue an update while updating */
+		crend->base.needs_update = TRUE;
+
+		/* scale just changed need to recalculate sizes */
+		gog_renderer_invalidate_size_requests (&crend->base);
+		gog_view_size_allocate (view, &allocation);
+	} else 
+		if (w != view->allocation.w || h != view->allocation.h)
+			gog_view_size_allocate (view, &allocation);
+		else
+			redraw = gog_view_update_sizes (view);
+
+	redraw |= crend->base.needs_update;
+	crend->base.needs_update = FALSE;
+
+	if (redraw) { 
+		cairo_rectangle (crend->cairo, 0, 0, w, h);
+		cairo_set_source_rgba (crend->cairo, 1, 1, 1, 0);
+		cairo_fill (crend->cairo);
+		
+		gog_view_render	(view, NULL);
+		
+		grc_invert_pixbuf_RB (gdk_pixbuf_get_pixels (crend->pixbuf), w, h, 
+				      gdk_pixbuf_get_rowstride (crend->pixbuf));
+	}
+
+	return redraw;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,637 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-gnome-print.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-graph-impl.h>
+#include <goffice/graph/gog-renderer-gnome-print.h>
+#include <goffice/graph/gog-renderer-impl.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-units.h>
+#include <goffice/utils/go-font.h>
+#include <goffice/utils/go-marker.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+#include <libart_lgpl/art_render_gradient.h>
+#include <libart_lgpl/art_render_svp.h>
+
+#include <math.h>
+#include <string.h>
+
+#include <libgnomeprint/gnome-print-pango.h>
+
+#define GOG_RENDERER_GNOME_PRINT_TYPE	(gog_renderer_gnome_print_get_type ())
+#define GOG_RENDERER_GNOME_PRINT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RENDERER_GNOME_PRINT_TYPE, GogRendererGnomePrint))
+#define IS_GOG_RENDERER_GNOME_PRINT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RENDERER_GNOME_PRINT_TYPE))
+
+typedef struct _GogRendererGnomePrint GogRendererGnomePrint;
+
+struct _GogRendererGnomePrint {
+	GogRenderer base;
+
+	GPtrArray *fonts;
+	GnomePrintContext *gp_context;
+	PangoLayout *layout;
+
+	GogViewAllocation bbox;
+};
+
+typedef GogRendererClass GogRendererGnomePrintClass;
+
+static GObjectClass *parent_klass;
+
+static GType gog_renderer_gnome_print_get_type (void);
+
+static void
+gog_renderer_gnome_print_finalize (GObject *obj)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (obj);
+
+	if (prend->gp_context != NULL) {
+		g_object_unref (prend->gp_context);
+		prend->gp_context = NULL;
+	}
+
+	if (prend->layout) {
+		g_object_unref (prend->layout);
+		prend->layout = NULL;
+	}
+
+	if (prend->fonts != NULL) {
+		int i;
+		for (i = prend->fonts->len; i-- > 0 ; ) {
+			PangoFontDescription *fd = g_ptr_array_index (prend->fonts, i);
+			if (fd != NULL)
+				pango_font_description_free (fd);
+		}
+
+		g_ptr_array_free (prend->fonts, TRUE);
+		prend->fonts = NULL;
+	}
+
+	(*parent_klass->finalize) (obj);
+}
+
+static PangoFontDescription *
+get_font (GogRendererGnomePrint *prend, GOFont const *gf)
+{
+	PangoFontDescription *res = NULL;
+
+	if (gf->font_index < (int)prend->fonts->len)
+		res = g_ptr_array_index (prend->fonts, gf->font_index);
+	else
+		g_ptr_array_set_size (prend->fonts, gf->font_index + 1);
+
+	if (res == NULL) {
+		res = pango_font_description_copy (gf->desc);
+		/* FIXME: Why do we do this?  */
+		pango_font_description_set_size (res,
+						 prend->base.zoom *
+						 pango_font_description_get_size (res));
+		g_ptr_array_index (prend->fonts, gf->font_index) = res;
+	}
+
+	return res;
+}
+
+static void
+set_color (GogRendererGnomePrint *prend, GOColor color)
+{
+	double r = ((double) UINT_RGBA_R (color)) / 255.;
+	double g = ((double) UINT_RGBA_G (color)) / 255.;
+	double b = ((double) UINT_RGBA_B (color)) / 255.;
+	double a = ((double) UINT_RGBA_A (color)) / 255.;
+	gnome_print_setrgbcolor (prend->gp_context, r, g, b);
+	gnome_print_setopacity (prend->gp_context, a);
+}
+
+static void
+draw_path (GogRendererGnomePrint *prend, ArtVpath const *path)
+{
+	gnome_print_newpath (prend->gp_context);
+	for ( ; path->code != ART_END ; path++)
+		switch (path->code) {
+		case ART_MOVETO_OPEN :
+		case ART_MOVETO :
+			gnome_print_moveto (prend->gp_context,
+					    path->x, -path->y);
+			break;
+		case ART_LINETO :
+			gnome_print_lineto (prend->gp_context,
+					    path->x, -path->y);
+			break;
+		default :
+			break;
+		}
+}
+
+static void
+gog_renderer_gnome_print_push_clip (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (rend);
+
+	gnome_print_gsave (prend->gp_context);
+	draw_path (prend, clip->path);
+	gnome_print_clip (prend->gp_context);
+}
+
+static void
+gog_renderer_gnome_print_pop_clip (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (rend);
+
+	gnome_print_grestore (prend->gp_context);
+}
+
+static void
+set_dash (GogRendererGnomePrint *prend, ArtVpathDash *dash)
+{
+	if (dash == NULL ||
+	    dash->n_dash == 0)
+		gnome_print_setdash (prend->gp_context, 0, NULL, 0.);
+	else
+		gnome_print_setdash (prend->gp_context, dash->n_dash, dash->dash, dash->offset);
+}
+
+static void
+gog_renderer_gnome_print_draw_path (GogRenderer *renderer, ArtVpath const *path)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (renderer);
+	GogStyle const *style = renderer->cur_style;
+
+	if (style->line.dash_type == GO_LINE_NONE)
+		return;
+
+	set_color (prend, style->line.color);
+	set_dash (prend, renderer->line_dash);
+	gnome_print_setlinewidth (prend->gp_context,
+		gog_renderer_line_size (renderer, style->line.width));
+
+	if (style->line.dash_type != GO_LINE_SOLID && renderer->cur_clip != NULL) {
+		ArtVpath *clipped = go_line_clip_vpath (path, &prend->bbox);
+		draw_path (prend, clipped);
+		g_free (clipped);
+	} else
+		draw_path (prend, path);
+
+	gnome_print_stroke (prend->gp_context);
+}
+
+static void
+print_image (GogRendererGnomePrint *prend, GdkPixbuf *image, int w, int h)
+{
+	if (gdk_pixbuf_get_has_alpha (image))
+		gnome_print_rgbaimage (prend->gp_context,
+			gdk_pixbuf_get_pixels (image), w, h,
+			gdk_pixbuf_get_rowstride (image));
+	else
+		gnome_print_rgbimage (prend->gp_context,
+			gdk_pixbuf_get_pixels (image), w, h,
+			gdk_pixbuf_get_rowstride (image));
+}
+
+#define PIXBUF_SIZE 1024
+static void
+gog_renderer_gnome_print_draw_polygon (GogRenderer *renderer, ArtVpath const *path,
+				       gboolean narrow)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (renderer);
+	GogStyle const *style = renderer->cur_style;
+	gboolean with_outline = (!narrow && style->outline.dash_type != GO_LINE_NONE);
+	GdkPixbuf *image;
+	ArtDRect bbox;
+	ArtRender *render;
+	gint i, j, imax, jmax, w, h, x, y;
+	GOColor color;
+	ArtGradientLinear gradient;
+	ArtGradientStop stops[2];
+
+	if (style->fill.type != GOG_FILL_STYLE_NONE || with_outline) {
+		if (style->outline.dash_type != GO_LINE_SOLID && renderer->cur_clip != NULL) {
+			ArtVpath *clipped = go_line_clip_vpath (path, &prend->bbox);
+			draw_path (prend, clipped);
+			g_free (clipped);
+			draw_path (prend, path);
+		} else
+			draw_path (prend, path);
+		gnome_print_closepath (prend->gp_context);
+	}
+
+	if (style->fill.type != GOG_FILL_STYLE_NONE) {
+
+		art_vpath_bbox_drect (path, &bbox);
+
+		switch (style->fill.type) {
+		case GOG_FILL_STYLE_PATTERN:
+			gnome_print_gsave (prend->gp_context);
+			if (go_pattern_is_solid (&style->fill.pattern, &color)) {
+				set_color (prend, color);
+				gnome_print_fill (prend->gp_context);
+			} else {
+				ArtSVP *fill = art_svp_from_vpath ((ArtVpath *)path);
+				image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, bbox.x1, bbox.y1);
+				gdk_pixbuf_fill (image, 0);
+				go_pattern_render_svp (&style->fill.pattern,
+					fill, 0, 0, bbox.x1, bbox.y1,
+					gdk_pixbuf_get_pixels (image),
+					gdk_pixbuf_get_rowstride (image));
+
+				gnome_print_translate (prend->gp_context, 0, - bbox.y1);
+				gnome_print_scale (prend->gp_context, bbox.x1, bbox.y1);
+				gnome_print_rgbaimage (prend->gp_context,
+					gdk_pixbuf_get_pixels (image),
+					gdk_pixbuf_get_width (image),
+					gdk_pixbuf_get_height (image),
+					gdk_pixbuf_get_rowstride (image));
+
+				art_free (fill);
+				g_object_unref (image);
+			}
+			gnome_print_grestore (prend->gp_context);
+			break;
+
+		case GOG_FILL_STYLE_GRADIENT:
+			image = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, PIXBUF_SIZE, PIXBUF_SIZE);
+			gnome_print_gsave (prend->gp_context);
+			gnome_print_clip (prend->gp_context);
+			render = art_render_new (0, 0, PIXBUF_SIZE, PIXBUF_SIZE,
+				gdk_pixbuf_get_pixels (image),
+				gdk_pixbuf_get_rowstride (image),
+				gdk_pixbuf_get_n_channels (image) - 1,
+				8, ART_ALPHA_SEPARATE, NULL);
+
+			go_gradient_setup (&gradient,
+					   style->fill.gradient.dir,
+					   style->fill.pattern.back, style->fill.pattern.fore,
+					   0, 0, PIXBUF_SIZE, PIXBUF_SIZE,
+					   stops);
+			art_render_gradient_linear (render,
+				&gradient, ART_FILTER_NEAREST);
+			art_render_invoke (render);
+			gnome_print_translate (prend->gp_context, bbox.x0, - bbox.y1);
+			gnome_print_scale (prend->gp_context, bbox.x1 - bbox.x0, bbox.y1 - bbox.y0);
+			gnome_print_rgbaimage (prend->gp_context,
+				gdk_pixbuf_get_pixels (image),
+				gdk_pixbuf_get_width (image),
+				gdk_pixbuf_get_height (image),
+				gdk_pixbuf_get_rowstride (image));
+			gnome_print_grestore (prend->gp_context);
+			g_object_unref (image);
+			break;
+
+		case GOG_FILL_STYLE_IMAGE:
+			image = style->fill.image.image;
+			if (image == NULL)
+				break;
+			gnome_print_gsave (prend->gp_context);
+			gnome_print_clip (prend->gp_context);
+			switch (style->fill.image.type) {
+			case GOG_IMAGE_CENTERED:
+				w = (bbox.x1 - bbox.x0) - gdk_pixbuf_get_width (image);
+				if (w > 0) w /= 2.; else w = 0.;
+				h = (bbox.y1 - bbox.y0) - gdk_pixbuf_get_height (image);
+				if (h > 0) h /= 2.; else h = 0.;
+
+				gnome_print_translate (prend->gp_context,
+					bbox.x0 + w, - bbox.y1 - h);
+				print_image (prend, image,
+					gdk_pixbuf_get_width (image),
+					gdk_pixbuf_get_height (image));
+				break;
+			case GOG_IMAGE_STRETCHED:
+				gnome_print_translate (prend->gp_context, bbox.x0, - bbox.y1);
+				gnome_print_scale (prend->gp_context, bbox.x1 - bbox.x0, bbox.y1 - bbox.y0);
+				print_image (prend, image,
+					gdk_pixbuf_get_width (image),
+					gdk_pixbuf_get_height (image));
+				break;
+
+			case GOG_IMAGE_WALLPAPER:
+				imax = (bbox.x1 - bbox.x0) / (w = gdk_pixbuf_get_width (image));
+				jmax = (bbox.y1 - bbox.y0) / (h = gdk_pixbuf_get_height (image));
+				x = 0;
+				for (i = 0; i < imax; i++) {
+					y = 0;
+					for (j = 0; j < jmax; j++) {
+						gnome_print_gsave (prend->gp_context);
+						gnome_print_translate (prend->gp_context,
+							bbox.x0 + x,
+							- y - h - bbox.y0);
+						gnome_print_scale (prend->gp_context, w, h);
+						print_image (prend, image, w, h);
+						gnome_print_grestore (prend->gp_context);
+						y += h;
+					}
+					gnome_print_gsave (prend->gp_context);
+					gnome_print_translate (prend->gp_context,
+						bbox.x0 + x,
+						- y - (int)(bbox.y1 - bbox.y0) % h - bbox.y0);
+					gnome_print_scale (prend->gp_context, w, (int)(bbox.y1 - bbox.y0) % h);
+					print_image (prend, image, w, (int)(bbox.y1 - bbox.y0) % h);
+					gnome_print_grestore (prend->gp_context);
+					x += w;
+				}
+				y = 0;
+				for (j = 0; j < jmax; j++) {
+					gnome_print_gsave (prend->gp_context);
+					gnome_print_translate (prend->gp_context, bbox.x0 + x, - y - h - bbox.y0);
+					gnome_print_scale (prend->gp_context, (int)(bbox.x1 - bbox.x0) % w, h);
+					print_image (prend, image, (int)(bbox.x1 - bbox.x0) % w, h);
+					gnome_print_grestore (prend->gp_context);
+					y += h;
+				}
+				gnome_print_gsave (prend->gp_context);
+				gnome_print_translate (prend->gp_context, bbox.x0 + x, - y - (int)(bbox.y1 - bbox.y0) % h - bbox.y0);
+				gnome_print_scale (prend->gp_context, (int)(bbox.x1 - bbox.x0) % w, (int)(bbox.y1 - bbox.y0) % h);
+				print_image (prend, image, (int)(bbox.x1 - bbox.x0) % w, (int)(bbox.y1 - bbox.y0) % h);
+				gnome_print_grestore (prend->gp_context);
+				break;
+			}
+			gnome_print_grestore (prend->gp_context);
+			break;
+
+		case GOG_FILL_STYLE_NONE:
+			break; /* impossible */
+		}
+	}
+
+	if (with_outline) {
+		set_color (prend, style->outline.color);
+		set_dash (prend, renderer->outline_dash);
+		gnome_print_setlinewidth (prend->gp_context,
+			gog_renderer_line_size (renderer, style->outline.width));
+		gnome_print_stroke (prend->gp_context);
+	}
+}
+
+static void
+draw_bezier_path (GogRendererGnomePrint *prend, ArtBpath const *path)
+{
+	gnome_print_newpath (prend->gp_context);
+	for ( ; path->code != ART_END ; path++)
+		switch (path->code) {
+		case ART_MOVETO_OPEN :
+		case ART_MOVETO :
+			gnome_print_moveto (prend->gp_context,
+					    path->x3, -path->y3);
+			break;
+		case ART_LINETO :
+			gnome_print_lineto (prend->gp_context,
+					    path->x3, -path->y3);
+			break;
+		case ART_CURVETO :
+			gnome_print_curveto (prend->gp_context,
+					    path->x1, -path->y1,
+					    path->x2, -path->y2,
+					    path->x3, -path->y3);
+			break;
+		default :
+			break;
+		}
+}
+
+static void
+gog_renderer_gnome_print_draw_bezier_path (GogRenderer *rend, ArtBpath const *path)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (rend);
+	GogStyle const *style = rend->cur_style;
+
+	if (style->line.dash_type == GO_LINE_NONE)
+		return;
+
+	set_color (prend, style->line.color);
+	set_dash (prend, rend->line_dash);
+	gnome_print_setlinewidth (prend->gp_context,
+		gog_renderer_line_size (rend, style->line.width));
+
+	draw_bezier_path (prend, path);
+
+	gnome_print_stroke (prend->gp_context);
+}
+
+static void
+gog_renderer_gnome_print_draw_bezier_polygon (GogRenderer *rend, ArtBpath const *path,
+					      gboolean narrow)
+{
+	ArtVpath *vpath = art_bez_path_to_vec (path, .1);
+	gog_renderer_gnome_print_draw_polygon (rend, vpath, narrow);
+	art_free (vpath);
+}
+
+static void
+gog_renderer_gnome_print_draw_text (GogRenderer *rend, char const *text,
+				    GogViewAllocation const *pos, GtkAnchorType anchor,
+				    GogViewAllocation *result)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (rend);
+	PangoFontDescription *pango_font = get_font (prend,  rend->cur_style->font.font);
+
+	if (text[0]) {
+		GOColor fore_color = rend->cur_style->font.color;
+		GOGeometryOBR obr;
+		GOGeometryAABR aabr;
+		int iw, ih;
+
+		pango_layout_set_font_description (prend->layout, pango_font);
+		pango_layout_set_text (prend->layout, text, -1);
+		pango_layout_get_size (prend->layout, &iw, &ih);
+		obr.w = iw / (double)PANGO_SCALE;
+		obr.h = ih / (double)PANGO_SCALE;
+		obr.alpha = rend->cur_style->text_layout.angle * M_PI / 180.0;
+		obr.x = pos->x;
+		obr.y = pos->y;
+		go_geometry_OBR_to_AABR (&obr, &aabr);
+
+		switch (anchor) {
+			case GTK_ANCHOR_NW: case GTK_ANCHOR_W: case GTK_ANCHOR_SW:
+				obr.x += aabr.w / 2.0;
+				break;
+			case GTK_ANCHOR_NE : case GTK_ANCHOR_SE : case GTK_ANCHOR_E :
+				obr.x -= aabr.w / 2.0;
+				break;
+			default : break;
+		}
+		if (obr.x <= 0)
+			obr.x = 0;
+
+		switch (anchor) {
+			case GTK_ANCHOR_NW: case GTK_ANCHOR_N: case GTK_ANCHOR_NE:
+				obr.y += aabr.h / 2.0;
+				break;
+			case GTK_ANCHOR_SE : case GTK_ANCHOR_S : case GTK_ANCHOR_SW :
+				obr.y -= aabr.h / 2.0;
+				break;
+			default : break;
+		}
+		if (obr.y <= 0)
+			obr.y = 0;
+
+		gnome_print_gsave (prend->gp_context);
+		gnome_print_setrgbcolor (prend->gp_context,
+			UINT_RGBA_R (fore_color) / 255.,
+			UINT_RGBA_G (fore_color) / 255.,
+			UINT_RGBA_B (fore_color) / 255.);
+		gnome_print_moveto (prend->gp_context, 
+				    obr.x - (obr.w / 2.0) * cos (obr.alpha) - (obr.h / 2.0) * sin (obr.alpha),
+				    -obr.y - (obr.w / 2.0) * sin (obr.alpha) + (obr.h / 2.0) * cos (obr.alpha));
+		gnome_print_rotate (prend->gp_context, rend->cur_style->text_layout.angle);
+		gnome_print_pango_layout (prend->gp_context, prend->layout);
+		gnome_print_grestore (prend->gp_context);
+		if (result != NULL) {
+			result->x = aabr.x;
+			result->y = aabr.y;
+			result->w = aabr.w;
+			result->h = aabr.h;
+		}
+	}
+}
+
+static void
+gog_renderer_gnome_print_get_text_OBR (GogRenderer *rend, char const *text, GOGeometryOBR *obr)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (rend);
+	PangoFontDescription *pango_font = get_font (prend,  rend->cur_style->font.font);
+	int iw, ih;
+
+	pango_layout_set_font_description (prend->layout, pango_font);
+	pango_layout_set_text (prend->layout, text, -1);
+	pango_layout_get_size (prend->layout, &iw, &ih);
+	obr->w = iw / (double)PANGO_SCALE;
+	obr->h = ih / (double)PANGO_SCALE;
+}
+
+static void
+gog_renderer_gnome_print_draw_marker (GogRenderer *renderer, double x, double y)
+{
+	GogRendererGnomePrint *prend = GOG_RENDERER_GNOME_PRINT (renderer);
+	GOMarker *marker = renderer->cur_style->marker.mark;
+	ArtVpath const *outline_path_raw, *fill_path_raw;
+	ArtVpath *outline_path, *fill_path;
+	double scaling[6], translation[6], affine[6];
+	double half_size;
+
+	g_return_if_fail (marker != NULL);
+
+	go_marker_get_paths (marker, &outline_path_raw, &fill_path_raw);
+
+	if ((outline_path_raw == NULL) ||
+	    (fill_path_raw == NULL))
+		return;
+
+	gnome_print_gsave (prend->gp_context);
+
+	half_size = gog_renderer_line_size (renderer, marker->size) / 2.0;
+	art_affine_scale (scaling, half_size, half_size);
+	art_affine_translate (translation, x, y);
+	art_affine_multiply (affine, scaling, translation);
+
+	outline_path = art_vpath_affine_transform (outline_path_raw, affine);
+	fill_path = art_vpath_affine_transform (fill_path_raw, affine);
+
+	gnome_print_setlinecap (prend->gp_context, ART_PATH_STROKE_CAP_ROUND);
+	set_color (prend, marker->fill_color);
+	draw_path (prend, fill_path);
+	gnome_print_closepath (prend->gp_context);
+	gnome_print_fill (prend->gp_context);
+
+	set_color (prend, marker->outline_color);
+	gnome_print_setlinewidth (prend->gp_context,
+		gog_renderer_line_size (renderer,
+					go_marker_get_outline_width (marker)));
+	draw_path (prend, outline_path);
+	gnome_print_stroke (prend->gp_context);
+	gnome_print_newpath (prend->gp_context);
+
+	gnome_print_grestore (prend->gp_context);
+
+	g_free (outline_path);
+	g_free (fill_path);
+}
+
+static void
+gog_renderer_gnome_print_class_init (GogRendererClass *rend_klass)
+{
+	GObjectClass *gobject_klass   = (GObjectClass *) rend_klass;
+
+	parent_klass = g_type_class_peek_parent (rend_klass);
+	gobject_klass->finalize	  	= gog_renderer_gnome_print_finalize;
+	rend_klass->push_clip  		= gog_renderer_gnome_print_push_clip;
+	rend_klass->pop_clip		= gog_renderer_gnome_print_pop_clip;
+	rend_klass->draw_path	  	= gog_renderer_gnome_print_draw_path;
+	rend_klass->draw_polygon  	= gog_renderer_gnome_print_draw_polygon;
+	rend_klass->draw_bezier_path 	= gog_renderer_gnome_print_draw_bezier_path;
+	rend_klass->draw_bezier_polygon = gog_renderer_gnome_print_draw_bezier_polygon;
+	rend_klass->draw_text	  	= gog_renderer_gnome_print_draw_text;
+	rend_klass->draw_marker	  	= gog_renderer_gnome_print_draw_marker;
+	rend_klass->get_text_OBR	= gog_renderer_gnome_print_get_text_OBR;
+}
+
+static void
+gog_renderer_gnome_print_init (GogRendererGnomePrint *prend)
+{
+	prend->gp_context = NULL;
+	prend->fonts = g_ptr_array_new ();
+	prend->bbox.x =
+	prend->bbox.y = 0.0;
+	prend->bbox.w =
+	prend->bbox.h = 1.0;
+}
+
+static GSF_CLASS (GogRendererGnomePrint, gog_renderer_gnome_print,
+		  gog_renderer_gnome_print_class_init, gog_renderer_gnome_print_init,
+		  GOG_RENDERER_TYPE)
+
+void
+gog_graph_print_to_gnome_print (GogGraph *graph,
+				GnomePrintContext *gp_context,
+				double width, double height)
+{
+	GogViewAllocation allocation;
+	GogRendererGnomePrint *prend =
+		g_object_new (GOG_RENDERER_GNOME_PRINT_TYPE,
+			      "model", graph,
+			      "zoom", 1.,
+			      NULL);
+
+	gog_graph_force_update (graph);
+
+	prend->gp_context = g_object_ref (gp_context);
+	prend->layout = gnome_print_pango_create_layout (prend->gp_context);
+	allocation.x = 0.;
+	allocation.y = 0.;
+	allocation.w = width;
+	allocation.h = height;
+	gog_view_size_allocate (prend->base.view, &allocation);
+	prend->bbox = allocation;
+	
+	/* FIXME FIXME FIXME this is a workaround for a bug in libgnomeprint
+	 * where line with width == 1.0 don't scale properly before an other
+	 * line width is set.
+	 * 
+	 * http://bugzilla.gnome.org/show_bug.cgi?id=149452
+	 */
+	gnome_print_setlinewidth (prend->gp_context, 0.1);
+	
+	gog_view_render	(prend->base.view, NULL);
+	g_object_unref (prend);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-gnome-print.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,35 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-gnome-print.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_RENDERER_GNOME_PRINT_H
+#define GOG_RENDERER_GNOME_PRINT_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <libgnomeprint/gnome-print.h>
+
+G_BEGIN_DECLS
+
+void gog_graph_print_to_gnome_print (GogGraph *graph,
+				     GnomePrintContext *gp_context,
+				     double width, double height);
+
+G_END_DECLS
+
+#endif /* GOG_RENDERER_GNOME_PRINT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,99 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-impl.h :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_RENDERER_IMPL_H
+#define GOG_RENDERER_IMPL_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/utils/goffice-utils.h>
+#include <goffice/utils/go-line.h>
+#include <goffice/graph/gog-renderer.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	ArtVpath *path;
+	gpointer data;
+} GogRendererClip;
+
+struct _GogRenderer {
+	GObject	 base;
+
+	GogGraph *model;
+	GogView	 *view;
+	float	  scale, scale_x, scale_y;
+	float	  zoom;
+	
+	GogRendererClip const *cur_clip;
+	GSList	  *clip_stack;
+
+	GClosure *font_watcher;
+	gboolean  needs_update;
+
+	GogStyle const *cur_style;
+	GSList   *style_stack;
+
+	ArtVpathDash *line_dash;
+	ArtVpathDash *outline_dash;
+};
+
+typedef struct {
+	GObjectClass base;
+
+	/* Virtuals */
+	void (*font_removed)	(GogRenderer *renderer, GOFont const *font);
+
+	void (*push_style)     	(GogRenderer *renderer, GogStyle const *style);
+	void (*pop_style)      	(GogRenderer *renderer);
+
+ 	void (*push_clip)	(GogRenderer *renderer, GogRendererClip *clip);
+ 	void (*pop_clip) 	(GogRenderer *renderer, GogRendererClip *clip);
+ 	
+	void (*sharp_path)	(GogRenderer *renderer, ArtVpath *path, double line_width);
+
+	void (*draw_path)      	(GogRenderer *renderer, ArtVpath const *path);
+	void (*draw_polygon)   	(GogRenderer *renderer, ArtVpath const *path, gboolean narrow);
+	
+	void (*draw_bezier_path)	(GogRenderer *renderer, ArtBpath const *path);
+	void (*draw_bezier_polygon)    	(GogRenderer *renderer, ArtBpath const *path, gboolean narrow);
+	
+	void (*draw_text)      	(GogRenderer *rend, char const *text,
+				 GogViewAllocation const *pos, GtkAnchorType anchor,
+				 GogViewAllocation *result);
+	void (*draw_marker)    	(GogRenderer *rend, double x, double y);
+	
+	void (*get_text_OBR)	(GogRenderer *rend, char const *text, GOGeometryOBR *obr);
+	
+	double (*line_size)		(GogRenderer const *rend, double width);
+
+	/* Signals */
+	void (*request_update) (GogRenderer *renderer);
+} GogRendererClass;
+
+#define GOG_RENDERER_CLASS(k)	 (G_TYPE_CHECK_CLASS_CAST ((k), GOG_RENDERER_TYPE, GogRendererClass))
+#define IS_GOG_RENDERER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GOG_RENDERER_TYPE))
+
+/* protected */
+void gog_renderer_invalidate_size_requests (GogRenderer *rend);
+
+G_END_DECLS
+
+#endif /* GOG_RENDERER_GROUP_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1096 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-pixbuf.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-graph-impl.h>
+#include <goffice/graph/gog-renderer-pixbuf.h>
+#include <goffice/graph/gog-renderer-impl.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-font.h>
+#include <goffice/utils/go-marker.h>
+#include <goffice/utils/go-units.h>
+#include <goffice/utils/go-math.h>
+
+#include <libart_lgpl/art_render_gradient.h>
+#include <libart_lgpl/art_render_svp.h>
+#include <libart_lgpl/art_render_mask.h>
+#include <pango/pangoft2.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <math.h>
+
+struct _GogRendererPixbuf {
+	GogRenderer base;
+
+	int 		 w, h;
+	int		 x_offset, y_offset;
+	double		 dpi_x, dpi_y;
+
+	GdkPixbuf 	*buffer;
+	guchar    	*pixels; /* from pixbuf */
+	int	   	 rowstride;
+
+	PangoContext 	*pango_context;
+	PangoLayout	*pango_layout;
+};
+
+typedef GogRendererClass GogRendererPixbufClass;
+
+static GObjectClass *parent_klass;
+
+static void
+gog_renderer_pixbuf_finalize (GObject *obj)
+{
+	GogRendererPixbuf *prend = GOG_RENDERER_PIXBUF (obj);
+
+	if (prend->buffer != NULL) {
+		g_object_unref (prend->buffer);
+		prend->buffer = NULL;
+	}
+
+	if (prend->pango_layout != NULL) {
+		g_object_unref (prend->pango_layout);
+		prend->pango_layout = NULL;
+	}
+
+	if (prend->pango_context != NULL) {
+		g_object_unref (prend->pango_context);
+		prend->pango_context = NULL;
+	}
+
+	(*parent_klass->finalize) (obj);
+}
+
+typedef struct
+{
+	GdkPixbuf *buffer;
+	double	   x_offset;
+	double	   y_offset;
+	ArtSVP	  *svp;	
+} ClipData;
+
+static void
+gog_renderer_pixbuf_push_clip (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererPixbuf *prend = GOG_RENDERER_PIXBUF (rend);
+	ClipData *clip_data;
+	ArtVpath *path = clip->path;
+	int i;
+	gboolean is_rectangle;
+
+	for (i = 0; i < 6; i++)
+		if (path[i].code == ART_END)
+			break;
+	
+	is_rectangle = i == 5 &&
+		path[5].code == ART_END &&
+		path[0].x == path[3].x &&
+		path[0].x == path[4].x &&
+		path[1].x == path[2].x &&
+		path[0].y == path[1].y &&
+	       	path[0].y == path[4].y &&
+		path[2].y == path[3].y;
+
+	clip->data = g_new (ClipData, 1);
+	clip_data = (ClipData *) clip->data;
+	clip_data->x_offset = prend->x_offset;
+	clip_data->y_offset = prend->y_offset;
+	clip_data->buffer = NULL;
+	clip_data->svp = NULL;
+
+	if (is_rectangle) {
+		GdkRectangle graph_rect, clip_rect, res_rect;
+
+		graph_rect.x = graph_rect.y = 0;
+		graph_rect.width = gdk_pixbuf_get_width (prend->buffer);
+		graph_rect.height = gdk_pixbuf_get_height (prend->buffer);
+
+		clip_rect.x = floor (path[0].x - prend->x_offset + 0.5);
+		clip_rect.y = floor (path[0].y - prend->y_offset + 0.5);
+		clip_rect.width = floor (path[1].x - prend->x_offset + 0.5) - clip_rect.x;
+		clip_rect.height = floor (path[2].y -prend->y_offset + 0.5) - clip_rect.y;
+
+		if (gdk_rectangle_intersect (&graph_rect, &clip_rect, &res_rect)) {
+			clip_data->buffer = prend->buffer;
+			prend->buffer = gdk_pixbuf_new_subpixbuf (clip_data->buffer,
+								  res_rect.x, res_rect.y,
+								  res_rect.width, res_rect.height);
+			prend->x_offset += res_rect.x;
+			prend->y_offset += res_rect.y;
+		}
+
+		if (prend->buffer == NULL)
+			g_warning ("Pixbuf renderer: invalid clipping region");
+
+		prend->pixels = gdk_pixbuf_get_pixels (prend->buffer);
+		prend->w = gdk_pixbuf_get_width (prend->buffer);
+		prend->h = gdk_pixbuf_get_height (prend->buffer);
+		prend->rowstride = gdk_pixbuf_get_rowstride (prend->buffer);
+	} else {
+		/* We cheat and assume new clip area is included
+		 * in previous one */
+		clip_data->svp = art_svp_from_vpath (path);
+	}
+}
+
+static void
+gog_renderer_pixbuf_pop_clip (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererPixbuf *prend = GOG_RENDERER_PIXBUF (rend);
+	ClipData *clip_data = clip->data;
+
+	if (clip_data->buffer != NULL) {
+		if (prend->buffer != NULL)
+			g_object_unref (prend->buffer);
+		prend->buffer = clip_data->buffer;
+		prend->pixels = gdk_pixbuf_get_pixels (prend->buffer);
+		prend->w = gdk_pixbuf_get_width (prend->buffer);
+		prend->h = gdk_pixbuf_get_height (prend->buffer);
+		prend->rowstride = gdk_pixbuf_get_rowstride (prend->buffer);
+		prend->x_offset = clip_data->x_offset;
+		prend->y_offset = clip_data->y_offset;
+	}
+	if (clip_data->svp != NULL)
+		art_free (clip_data->svp);
+
+	g_free (clip->data);
+	clip->data = NULL;
+}
+
+static void
+gog_renderer_pixbuf_do_clip (GogRenderer *rend, ArtSVP **svp)
+{
+	ClipData *clip_data;
+	ArtSVP *svp1;
+
+	g_return_if_fail (*svp != NULL);
+	
+       	if (rend->cur_clip == NULL)
+		return;
+
+	clip_data = rend->cur_clip->data;
+
+	if (clip_data->svp == NULL)
+		return;
+
+	svp1 = art_svp_intersect (*svp, clip_data->svp);
+	art_free (*svp);
+	*svp = svp1;
+}
+
+
+static double
+line_size (GogRenderer const *rend, double width)
+{
+	if (go_sub_epsilon (width) <= 0.) /* cheesy version of hairline */
+		return 1.;
+	
+	width *= rend->scale;
+	if (width <= 1.)
+		return width;
+
+	return floor (width);
+}
+
+static double
+gog_renderer_pixbuf_line_size (GogRenderer const *rend, double width)
+{
+	double size = line_size (rend, width);
+
+	if (size < 1.0)
+		return ceil (size);
+
+	return size;
+}
+
+static void
+gog_renderer_pixbuf_sharp_path (GogRenderer *rend, ArtVpath *path, double line_width) 
+{
+	ArtVpath *iter = path;
+
+	if (((int) (rint (line_width)) % 2 == 0) && line_width > 1.0) 
+		while (iter->code != ART_END) {
+			iter->x = floor (iter->x + .5);
+			iter->y = floor (iter->y + .5);
+			iter++;
+		}
+	else
+		while (iter->code != ART_END) {
+			iter->x = floor (iter->x) + .5;
+			iter->y = floor (iter->y) + .5;
+			iter++;
+		}
+}
+
+static void
+gog_renderer_pixbuf_draw_path (GogRenderer *rend, ArtVpath const *path)
+{
+	GogRendererPixbuf *prend = GOG_RENDERER_PIXBUF (rend);
+	GogViewAllocation area;
+	GogStyle const *style = rend->cur_style;
+	double width = line_size (rend, style->line.width);
+	ArtSVP *svp;
+	ArtVpath *dashed_path, short_path[3];
+	double offset, dash_length = 0., dx, dy, n;
+	int i;
+
+	if (path[0].code == ART_END) /* this should not happen! */
+		return;
+	short_path[0].code = ART_MOVETO;
+	short_path[1].code = ART_LINETO;
+	short_path[2].code = ART_END;
+
+	switch (style->line.dash_type) {
+		case GO_LINE_NONE:
+			return;
+		case GO_LINE_SOLID:
+			i = 1; /* assumiong that path[0].code is not ART_LINETO */
+			while (path[i].code != ART_END) {
+				if (path[i].code == ART_LINETO) {
+					short_path[0].x = path [i - 1].x;
+					short_path[0].y = path [i - 1].y;
+					short_path[1].x = path [i].x;
+					short_path[1].y = path [i].y;
+					svp = art_svp_vpath_stroke ((ArtVpath *) short_path,
+									ART_PATH_STROKE_JOIN_MITER, 
+									ART_PATH_STROKE_CAP_ROUND,
+									width, 4, 0.5);
+					gog_renderer_pixbuf_do_clip (rend, &svp);
+					go_color_render_svp (style->line.color, svp,
+								 prend->x_offset,
+								 prend->y_offset,
+								 prend->w + prend->x_offset,
+								 prend->h + prend->y_offset,
+								 prend->pixels, prend->rowstride);
+					art_svp_free (svp);
+				}
+				i++;
+			}
+			break;
+		default:
+			offset = rend->line_dash->offset;
+			for (i = 0; i < rend->line_dash->n_dash; i++)
+				dash_length += rend->line_dash->dash[i];
+			i = 1; /* assuming that path[0].code is not ART_LINETO */
+			while (path[i].code != ART_END) {
+				if (path[i].code == ART_LINETO) {
+					short_path[0].x = path [i - 1].x;
+					short_path[0].y = path [i - 1].y;
+					short_path[1].x = path [i].x;
+					short_path[1].y = path [i].y;
+					dx = short_path[1].x - short_path[0].x;
+					dy = short_path[1].y - short_path[0].y;
+					area.x = prend->x_offset;
+					area.y = prend->y_offset;
+					area.w = prend->w;
+					area.h = prend->h;
+					dashed_path = go_line_dash_vpath (short_path, rend->line_dash, &area);  
+					dx = sqrt (dx * dx + dy * dy);
+					n = floor (dx / dash_length);
+					rend->line_dash->offset += dx - n * dash_length;
+					if (dashed_path != NULL) {
+						svp = art_svp_vpath_stroke (dashed_path,
+										ART_PATH_STROKE_JOIN_MITER, 
+										ART_PATH_STROKE_CAP_ROUND,
+										width, 4, 0.5);
+						g_free (dashed_path);
+						
+						gog_renderer_pixbuf_do_clip (rend, &svp);
+						go_color_render_svp (style->line.color, svp,
+								     prend->x_offset,
+								     prend->y_offset,
+								     prend->w + prend->x_offset,
+								     prend->h + prend->y_offset,
+								     prend->pixels, prend->rowstride);
+						art_svp_free (svp);
+					}
+				}
+				i++;
+			}
+			rend->line_dash->offset = offset;
+	}
+}
+  
+static void
+gog_renderer_pixbuf_draw_bezier_path (GogRenderer *rend, ArtBpath const *path)
+{
+	ArtVpath *vpath = art_bez_path_to_vec (path, .1);
+	gog_renderer_pixbuf_draw_path (rend, vpath);
+	art_free (vpath);
+}
+
+static ArtRender *
+gog_art_renderer_new (GogRendererPixbuf *prend)
+{
+	return art_render_new (prend->x_offset,
+			       prend->y_offset,
+			       prend->w + prend->x_offset,
+			       prend->h + prend->y_offset,
+			       prend->pixels, prend->rowstride,
+		gdk_pixbuf_get_n_channels (prend->buffer) - 1,
+		8, ART_ALPHA_SEPARATE, NULL);
+}
+
+static void
+gog_renderer_pixbuf_draw_polygon (GogRenderer *rend, ArtVpath const *path, gboolean narrow)
+{
+	GogRendererPixbuf *prend = GOG_RENDERER_PIXBUF (rend);
+	GogStyle const *style = rend->cur_style;
+	GogViewAllocation area;
+	ArtVpath *dashed_path;
+	ArtRender *render;
+	ArtSVP *outline = NULL;
+	ArtDRect bbox;
+	ArtGradientLinear gradient;
+	ArtGradientStop stops[2];
+	GdkPixbuf *image;
+	gint i, j, imax, jmax, h, w;
+	double width = line_size (rend, style->outline.width);
+
+	if (!narrow) {
+		switch (style->outline.dash_type) {
+			case GO_LINE_NONE:
+				break;
+			case GO_LINE_SOLID:
+				outline = art_svp_vpath_stroke ((ArtVpath *) path,
+								ART_PATH_STROKE_JOIN_MITER, 
+								ART_PATH_STROKE_CAP_BUTT,
+								width, 4, 0.5);
+				break;
+			default:
+				area.x = prend->x_offset;
+				area.y = prend->y_offset;
+				area.w = prend->w;
+				area.h = prend->h;
+				dashed_path = go_line_dash_vpath (path, rend->outline_dash, &area);  
+				if (dashed_path != NULL) {
+					outline = art_svp_vpath_stroke (dashed_path,
+									ART_PATH_STROKE_JOIN_MITER, 
+									ART_PATH_STROKE_CAP_BUTT,
+									width, 4, 0.5);
+					g_free (dashed_path);
+				}
+		}
+	}
+
+	if (style->fill.type != GOG_FILL_STYLE_NONE) {
+		ArtSVP *svp1, *svp2, *fill;
+		ArtVpath *path1;
+		path1 = art_vpath_perturb ((ArtVpath *)path);
+		svp1 = art_svp_from_vpath (path1);
+		art_free (path1);
+		svp2 = art_svp_uncross (svp1);
+		fill = art_svp_rewind_uncrossed (svp2, ART_WIND_RULE_NONZERO);
+		art_svp_free (svp1);
+		art_svp_free (svp2);
+		gog_renderer_pixbuf_do_clip (rend, &fill);
+
+		switch (style->fill.type) {
+		case GOG_FILL_STYLE_PATTERN:
+			go_pattern_render_svp (&style->fill.pattern,
+				fill,
+				prend->x_offset,
+				prend->y_offset,
+				prend->w + prend->x_offset,
+				prend->h + prend->y_offset,
+				prend->pixels, prend->rowstride);
+			break;
+
+		case GOG_FILL_STYLE_GRADIENT: {
+
+			art_vpath_bbox_drect ((ArtVpath *)path, &bbox);
+			render = gog_art_renderer_new (prend);
+			art_render_svp (render, fill);
+
+			go_gradient_setup (&gradient,
+					   style->fill.gradient.dir,
+					   style->fill.pattern.back, style->fill.pattern.fore,
+					   bbox.x0, bbox.y0, bbox.x1, bbox.y1,
+					   stops);
+
+			art_render_gradient_linear (render,
+				&gradient, ART_FILTER_NEAREST);
+			art_render_invoke (render);
+			break;
+		}
+
+		case GOG_FILL_STYLE_IMAGE: {
+			GdkRectangle path_rect, clip_rect, dest_rect;
+
+			image = style->fill.image.image;
+			if (image == NULL)
+				break;
+
+			art_vpath_bbox_drect (path, &bbox);
+
+			path_rect.x = bbox.x0 - prend->x_offset;
+			path_rect.y = bbox.y0 - prend->y_offset;
+			path_rect.width = bbox.x1 - bbox.x0;
+			path_rect.height = bbox.y1 - bbox.y0;
+
+			clip_rect.x = clip_rect.y = 0;
+			clip_rect.width = prend->w;
+			clip_rect.height = prend->h;
+
+			if (gdk_rectangle_intersect (&path_rect, &clip_rect, &dest_rect)) {
+				switch (style->fill.image.type) {
+					case GOG_IMAGE_CENTERED:
+						w = ((bbox.x1 - bbox.x0) - gdk_pixbuf_get_width (image)) / 2.;
+						if (w < 0.) w = 0.;
+						h = ((bbox.y1 - bbox.y0) - gdk_pixbuf_get_height (image)) / 2.;
+						if (h < 0.) h = 0.;
+						gdk_pixbuf_composite (image, prend->buffer,
+								      dest_rect.x + w, dest_rect.y + h,
+								      gdk_pixbuf_get_width (image),
+								      gdk_pixbuf_get_height (image),
+								      path_rect.x + w, path_rect.y + h,
+								      1., 1.,
+								      GDK_INTERP_BILINEAR, 255);
+						break;
+					case GOG_IMAGE_STRETCHED:
+						gdk_pixbuf_composite (image, prend->buffer,
+								      dest_rect.x, dest_rect.y,
+								      dest_rect.width, dest_rect.height,
+								      path_rect.x, path_rect.y,
+								      path_rect.width /
+								      (double)gdk_pixbuf_get_width (image),
+								      path_rect.height /
+								      (double)gdk_pixbuf_get_height (image),
+								      GDK_INTERP_BILINEAR, 255);
+						break;
+
+					case GOG_IMAGE_WALLPAPER: {
+						GdkRectangle image_rect, copy_rect;
+
+						imax = path_rect.width /
+							(image_rect.width = gdk_pixbuf_get_width (image));
+						jmax = path_rect.height /
+							(image_rect.height = gdk_pixbuf_get_height (image));
+
+						image_rect.x = path_rect.x;
+						for (i = 0; i <= imax; i++)
+						{
+							image_rect.y = path_rect.y;
+							for (j = 0; j <= jmax; j++) {
+
+								if (gdk_rectangle_intersect (&image_rect,
+											     &dest_rect,
+											     &copy_rect))
+									gdk_pixbuf_copy_area (image,
+										copy_rect.x - image_rect.x,
+										copy_rect.y - image_rect.y,
+										copy_rect.width,
+										copy_rect.height,
+										prend->buffer,
+										copy_rect.x,
+										copy_rect.y);
+								image_rect.y += image_rect.height;
+							}
+							image_rect.x +=image_rect.width;
+
+						}
+						break;
+					}
+				}
+			}
+			break;
+		}
+
+		case GOG_FILL_STYLE_NONE:
+			break; /* impossible */
+		}
+		if (fill != NULL)
+			art_svp_free (fill);
+	}
+
+	if (outline != NULL) {
+		gog_renderer_pixbuf_do_clip (rend, &outline);
+		go_color_render_svp (style->outline.color, outline,
+				     prend->x_offset,
+				     prend->y_offset,
+				     prend->w + prend->x_offset,
+				     prend->h + prend->y_offset,
+				     prend->pixels, prend->rowstride);
+		art_svp_free (outline);
+	}
+}
+
+static void
+gog_renderer_pixbuf_draw_bezier_polygon (GogRenderer *rend, ArtBpath const *path,
+					 gboolean narrow)
+{
+	ArtVpath *vpath = art_bez_path_to_vec (path, .1);
+	gog_renderer_pixbuf_draw_polygon (rend, vpath, narrow);
+	art_free (vpath);
+}
+
+static void
+get_rotated_layout_bounds (PangoLayout  *layout,
+			   PangoRectangle *rect)
+{
+	PangoContext *context = pango_layout_get_context (layout);
+	const PangoMatrix *matrix = pango_context_get_matrix (context);
+	gdouble x_min = 0, x_max = 0, y_min = 0, y_max = 0; /* quiet gcc */
+	PangoRectangle logical_rect;
+	gint i, j;
+
+	pango_layout_get_extents (layout, NULL, &logical_rect);
+
+	for (i = 0; i < 2; i++)
+	{
+		gdouble x = (i == 0) ? logical_rect.x : logical_rect.x + logical_rect.width;
+		for (j = 0; j < 2; j++)
+		{
+			gdouble y = (j == 0) ? logical_rect.y : logical_rect.y + logical_rect.height;
+
+			gdouble xt = (x * matrix->xx + y * matrix->xy) / PANGO_SCALE + matrix->x0;
+			gdouble yt = (x * matrix->yx + y * matrix->yy) / PANGO_SCALE + matrix->y0;
+
+			if (i == 0 && j == 0)
+			{
+				x_min = x_max = xt;
+				y_min = y_max = yt;
+			}
+			else
+			{
+				if (xt < x_min)
+					x_min = xt;
+				if (yt < y_min)
+					y_min = yt;
+				if (xt > x_max)
+					x_max = xt;
+				if (yt > y_max)
+					y_max = yt;
+			}
+		}
+	}
+
+	rect->x = floor (x_min);
+	rect->width = ceil (x_max) - rect->x;
+	rect->y = floor (y_min);
+	rect->height = floor (y_max) - rect->y;
+}
+
+static PangoContext *
+gog_renderer_pixbuf_get_pango_context (GogRendererPixbuf *prend)
+{
+	PangoFT2FontMap *font_map;
+	
+	if (prend->pango_context != NULL)
+		return prend->pango_context;
+
+	font_map = PANGO_FT2_FONT_MAP (pango_ft2_font_map_new ());
+	pango_ft2_font_map_set_resolution (font_map, prend->dpi_x, prend->dpi_y);
+
+	prend->pango_context = pango_ft2_font_map_create_context (font_map);
+	/*  Workaround for bug #143542 (PangoFT2Fontmap leak),
+	 *  see also bug #148997 (Text layer rendering leaks font file descriptor):
+	 *
+	 *  Calling pango_ft2_font_map_substitute_changed() causes the
+	 *  font_map cache to be flushed, thereby removing the circular
+	 *  reference that causes the leak.
+	 */
+	g_object_weak_ref (G_OBJECT (prend->pango_context),
+			   (GWeakNotify) pango_ft2_font_map_substitute_changed,
+			   font_map);
+	g_object_unref (font_map);
+
+	return prend->pango_context;
+}
+
+static PangoLayout *
+gog_renderer_pixbuf_get_pango_layout (GogRendererPixbuf *prend)
+{
+	GogRenderer *rend = GOG_RENDERER (prend);
+	GogStyle const *style = prend->base.cur_style;
+	PangoContext *context;
+	PangoAttribute *attr;
+	PangoAttrList  *attrs = NULL;
+	PangoFontDescription const *fd = style->font.font->desc;
+	PangoMatrix matrix = PANGO_MATRIX_INIT;
+
+	if (prend->pango_layout != NULL)
+		return prend->pango_layout;
+	
+	context = gog_renderer_pixbuf_get_pango_context (prend);
+	switch (go_geometry_get_rotation_type (rend->cur_style->text_layout.angle * M_PI / 180.0)) {
+		case GO_ROTATE_FREE:
+			pango_matrix_rotate (&matrix, rend->cur_style->text_layout.angle);
+			pango_context_set_matrix (context, &matrix);
+			break;
+		default:
+			pango_context_set_matrix (context, NULL);
+	}	
+
+	prend->pango_layout = pango_layout_new (context);
+	
+	pango_layout_set_font_description (prend->pango_layout, fd);
+
+	/*
+	 * Manually scale the font size to compensate for
+	 * Before the fix to http://bugzilla.gnome.org/show_bug.cgi?id=121543
+	 * the scale would otherwise be ignored.
+	 */
+	attr = pango_attr_size_new (prend->base.zoom *
+		pango_font_description_get_size (fd));
+	attr->start_index = 0;
+	attr->end_index = -1;
+
+	attrs = pango_attr_list_new ();
+	pango_attr_list_insert (attrs, attr);
+	pango_layout_set_attributes (prend->pango_layout, attrs);
+	pango_attr_list_unref (attrs);
+
+	return prend->pango_layout;
+}
+
+static void
+gog_renderer_pixbuf_draw_text (GogRenderer *rend, char const *text,
+			       GogViewAllocation const *pos, GtkAnchorType anchor,
+			       GogViewAllocation *result)
+{
+	FT_Bitmap ft_bitmap;
+	GogRendererPixbuf *prend = GOG_RENDERER_PIXBUF (rend);
+	PangoRectangle rect;
+	PangoLayout   *layout;
+	guint8 r, g, b, a, alpha, *dst, *src;
+	int h, w, i, x, y, interrow, intercol, rotation_type;
+	int ft_x, ft_y, ft_w, ft_h, offset;
+	GogStyle const *style = rend->cur_style;
+	PangoMatrix matrix, old_matrix;
+
+	rotation_type  = go_geometry_get_rotation_type (rend->cur_style->text_layout.angle * M_PI / 180);
+
+	layout = gog_renderer_pixbuf_get_pango_layout ((GogRendererPixbuf *) rend);
+	pango_layout_set_text (layout, text, -1);
+
+	switch (rotation_type) {
+		case GO_ROTATE_FREE:
+			get_rotated_layout_bounds (layout, &rect);
+			matrix = *pango_context_get_matrix (pango_layout_get_context (layout));
+			old_matrix = matrix;
+			matrix.x0 = -rect.x;
+			matrix.y0 = -rect.y;
+			pango_context_set_matrix (pango_layout_get_context (layout), &matrix);
+			rect.width *= PANGO_SCALE;
+			rect.height *= PANGO_SCALE;
+			rect.x = rect.y = 0;
+			break;
+		default:
+			pango_layout_get_extents (layout, NULL, &rect);
+			rect.x = PANGO_PIXELS (rect.x);
+			rect.y = PANGO_PIXELS (rect.y);
+	}
+
+	ft_x = rect.x;
+	ft_y = rect.y;
+	switch (rotation_type) {
+		case GO_ROTATE_CLOCKWISE:
+		case GO_ROTATE_COUNTERCLOCKWISE:
+			x = rect.x;
+			rect.x = rect.y;
+			rect.y = x;
+			w = rect.width;
+			rect.width = rect.height;
+			rect.height = w;
+			break;
+		default:
+			break;
+	}		
+
+	x = (int)((pos->x - prend->x_offset) * PANGO_SCALE);
+	y = (int)((pos->y - prend->y_offset) * PANGO_SCALE);
+
+	switch (anchor) {
+		case GTK_ANCHOR_CENTER : case GTK_ANCHOR_N : case GTK_ANCHOR_S :
+			x -= rect.width / 2;
+			break;
+		case GTK_ANCHOR_NE : case GTK_ANCHOR_SE : case GTK_ANCHOR_E :
+			x -= rect.width;
+			break;
+		default : break;
+	}
+	x = (x > 0) ? (x + PANGO_SCALE / 2) / PANGO_SCALE : 0;
+	w = (rect.width + PANGO_SCALE / 2) / PANGO_SCALE;
+	offset = rotation_type == GO_ROTATE_NONE ? rect.x : 0.0;
+	if ((x + w + offset) > prend->w)
+		w = prend->w - x - offset;
+
+	switch (anchor) {
+	case GTK_ANCHOR_CENTER : case GTK_ANCHOR_E : case GTK_ANCHOR_W :
+		y -= rect.height / 2;
+		break;
+	case GTK_ANCHOR_SE : case GTK_ANCHOR_S : case GTK_ANCHOR_SW :
+		y -= rect.height;
+		break;
+	default : break;
+	}
+	y = (y > 0) ? (y + PANGO_SCALE / 2) / PANGO_SCALE : 0;
+	h = (rect.height + PANGO_SCALE / 2) / PANGO_SCALE;
+	offset = rotation_type == GO_ROTATE_CLOCKWISE ? rect.y : 0.0;
+	if ((y + h + offset) > prend->h)
+		h = prend->h - y - offset;
+
+	if (result != NULL) {
+		result->x = x;
+		result->y = y;
+		result->w = w;
+		result->h = h;
+	}
+
+	if (w <= 0 || h <= 0) { 
+		if (rotation_type == GO_ROTATE_FREE) 
+			pango_context_set_matrix (pango_layout_get_context (layout), &old_matrix);
+		return;
+	}
+
+	switch (rotation_type) {
+		case GO_ROTATE_CLOCKWISE:
+		case GO_ROTATE_COUNTERCLOCKWISE:
+			ft_h = w;
+			ft_w = h;
+			break;
+		default:
+			ft_h = h;
+			ft_w = w;
+	}
+
+	ft_bitmap.rows         = ft_h;
+	ft_bitmap.width        = ft_w;
+	ft_bitmap.pitch        = (ft_w + 3) & ~3;
+	ft_bitmap.buffer       = g_malloc0 (ft_bitmap.rows * ft_bitmap.pitch);
+	ft_bitmap.num_grays    = 256;
+	ft_bitmap.pixel_mode   = ft_pixel_mode_grays;
+	ft_bitmap.palette_mode = 0;
+	ft_bitmap.palette      = NULL;
+	pango_ft2_render_layout (&ft_bitmap, layout, -ft_x, -ft_y);
+
+	r = UINT_RGBA_R (style->font.color);
+	g = UINT_RGBA_G (style->font.color);
+	b = UINT_RGBA_B (style->font.color);
+	a = UINT_RGBA_A (style->font.color);
+
+	/* do the compositing manually, ArtRender as used in librsvg is dog
+	 * slow, and I do not feel like leaping through 20 different data
+	 * structures to composite 1 byte images, onto rgba */
+	dst = prend->pixels;
+	src = ft_bitmap.buffer;
+
+	switch (go_geometry_get_rotation_type (rend->cur_style->text_layout.angle * M_PI / 180.0)) {
+		case GO_ROTATE_FREE:
+		case GO_ROTATE_NONE:
+			intercol = 4;
+			interrow = prend->rowstride - w * 4;
+			dst += y * prend->rowstride;
+			dst += (x + ft_x) * 4;
+			break;
+		case GO_ROTATE_COUNTERCLOCKWISE:
+			intercol = - prend->rowstride;
+			interrow = 4 + h * prend->rowstride; 
+			dst += (y + h - 1) * prend->rowstride;
+			dst += x * 4;
+			break;
+		case GO_ROTATE_CLOCKWISE:
+			intercol = prend->rowstride;
+			interrow = - 4 - h * prend->rowstride; 
+			dst += (y + ft_x) * prend->rowstride;
+			dst += (x + w - 1)* 4;
+			break;
+		case GO_ROTATE_UPSIDEDOWN:
+			intercol = -4;
+			interrow = - prend->rowstride + w * 4; 
+			dst += (y + h - 1) * prend->rowstride;
+			dst += (x + w - 1)* 4;
+			break;
+		default:
+			intercol = interrow = 0;  /* never reached; silence gcc */
+	}
+
+	while (ft_h--) {
+		for (i = ft_w; i-- > 0 ; dst += intercol, src++) {
+			/* FIXME: Do the libart thing instead of divide by 255 */
+			alpha = (a * (*src)) / 255;
+			dst[0] = (dst[0] * (255 - alpha) + r * alpha) / 255;
+			dst[1] = (dst[1] * (255 - alpha) + g * alpha) / 255;
+			dst[2] = (dst[2] * (255 - alpha) + b * alpha) / 255;
+			dst[3] = (dst[3] * (255 - alpha) + a * alpha) / 255;
+		}
+		dst += interrow;
+		src += ft_bitmap.pitch - ft_w;
+	}
+	g_free (ft_bitmap.buffer);
+	
+	if (rotation_type == GO_ROTATE_FREE) 
+		pango_context_set_matrix (pango_layout_get_context (layout), &old_matrix);
+}
+
+static void
+gog_renderer_pixbuf_get_text_OBR (GogRenderer *rend,
+				  char const *text, GOGeometryOBR *obr)
+{
+	PangoRectangle	 logical;
+	PangoLayout	*layout;
+	
+	layout = gog_renderer_pixbuf_get_pango_layout ((GogRendererPixbuf *) rend);
+	pango_layout_set_text (layout, text, -1);
+	pango_layout_get_extents (layout, NULL, &logical);
+
+	obr->w = ((double) logical.width + (double) PANGO_SCALE / 2.0) / (double) PANGO_SCALE;
+	obr->h = ((double) logical.height + (double) PANGO_SCALE / 2.0) /(double) PANGO_SCALE;
+}
+
+static void
+gog_renderer_pixbuf_draw_marker (GogRenderer *rend, double x, double y)
+{
+	GdkRectangle r1, r2, dest;
+	GogStyle const *style = rend->cur_style;
+	GogRendererPixbuf *prend = GOG_RENDERER_PIXBUF (rend);
+	GdkPixbuf const *marker_pixbuf = go_marker_get_pixbuf (style->marker.mark, rend->scale);
+
+	if (marker_pixbuf == NULL)
+		return;
+
+	r2.x = r2.y = 0;
+	r2.width = prend->w;
+	r2.height = prend->h;
+
+	r1.width = gdk_pixbuf_get_width (marker_pixbuf);
+	r1.height = gdk_pixbuf_get_height (marker_pixbuf);
+	r1.x = floor (floor (x + .5) - r1.width / 2.0 - prend->x_offset);
+	r1.y = floor (floor (y + .5) - r1.height / 2.0 - prend->y_offset);
+
+	if (gdk_rectangle_intersect (&r1, &r2, &dest))
+		gdk_pixbuf_composite (marker_pixbuf, prend->buffer,
+				      dest.x, dest.y,
+				      dest.width, dest.height,
+				      r1.x, r1.y,
+				      1.0, 1.0,
+				      GDK_INTERP_NEAREST,
+				      255);
+}
+
+static void
+gog_renderer_pixbuf_pop_style (GogRenderer *rend)
+{
+	GogRendererPixbuf *prend = (GogRendererPixbuf *) rend;
+
+	if (prend->pango_layout != NULL)
+	{
+		g_object_unref (prend->pango_layout);
+		prend->pango_layout = NULL;
+	}
+}
+
+static void
+gog_renderer_pixbuf_push_style (GogRenderer *rend, GogStyle const *style)
+{
+	GogRendererPixbuf *prend = (GogRendererPixbuf *) rend;
+
+	if (prend->pango_layout != NULL)
+	{
+		g_object_unref (prend->pango_layout);
+		prend->pango_layout = NULL;
+	}
+}
+
+static void
+gog_renderer_pixbuf_class_init (GogRendererClass *rend_klass)
+{
+	GObjectClass *gobject_klass   = (GObjectClass *) rend_klass;
+
+	parent_klass = g_type_class_peek_parent (rend_klass);
+	gobject_klass->finalize		= gog_renderer_pixbuf_finalize;
+	rend_klass->push_style		= gog_renderer_pixbuf_push_style;
+	rend_klass->pop_style		= gog_renderer_pixbuf_pop_style;
+	rend_klass->push_clip  		= gog_renderer_pixbuf_push_clip;
+	rend_klass->pop_clip    	= gog_renderer_pixbuf_pop_clip;
+	rend_klass->sharp_path		= gog_renderer_pixbuf_sharp_path;
+	rend_klass->draw_path	  	= gog_renderer_pixbuf_draw_path;
+	rend_klass->draw_polygon  	= gog_renderer_pixbuf_draw_polygon;
+	rend_klass->draw_bezier_path 	= gog_renderer_pixbuf_draw_bezier_path;
+	rend_klass->draw_bezier_polygon = gog_renderer_pixbuf_draw_bezier_polygon;
+	rend_klass->draw_text	  	= gog_renderer_pixbuf_draw_text;
+	rend_klass->draw_marker	  	= gog_renderer_pixbuf_draw_marker;
+	rend_klass->get_text_OBR	= gog_renderer_pixbuf_get_text_OBR;
+	rend_klass->line_size		= gog_renderer_pixbuf_line_size;
+}
+
+static void
+gog_renderer_pixbuf_init (GogRendererPixbuf *prend)
+{
+	prend->buffer = NULL;
+	prend->w = prend->h = 1; /* just in case */
+	prend->dpi_x = prend->dpi_y = 96.; /* arbitrary just in case */
+	prend->x_offset = prend->y_offset = 0;
+	prend->pango_layout = NULL;
+	prend->pango_context = NULL;
+}
+
+GSF_CLASS (GogRendererPixbuf, gog_renderer_pixbuf,
+	   gog_renderer_pixbuf_class_init, gog_renderer_pixbuf_init,
+	   GOG_RENDERER_TYPE)
+
+GdkPixbuf *
+gog_renderer_pixbuf_get (GogRendererPixbuf *prend)
+{
+	g_return_val_if_fail (prend != NULL, NULL);
+
+	return prend->buffer;
+}
+
+#if 0 /* An initial non-working attempt to use different dpi to render
+	 different zooms */
+
+/* fontmaps are reasonably expensive use a cache to share them */
+static GHashTable *fontmap_cache = NULL; /* PangoFT2FontMap hashed by y_dpi */
+static gboolean
+cb_remove_entry (gpointer key, PangoFT2FontMap *value, PangoFT2FontMap *target)
+{
+	return value == target;
+}
+static void
+cb_map_is_gone (gpointer data, GObject *where_the_object_was)
+{
+	g_warning ("fontmap %p is gone",where_the_object_was);
+	g_hash_table_foreach_steal (fontmap_cache,
+		(GHRFunc) cb_remove_entry, where_the_object_was);
+}
+static void
+cb_weak_unref (GObject *fontmap)
+{
+	g_object_weak_unref (fontmap, cb_map_is_gone, NULL);
+}
+static PangoFT2FontMap *
+fontmap_from_cache (double x_dpi, double y_dpi)
+{
+	PangoFT2FontMap *fontmap = NULL;
+	int key_dpi = floor (y_dpi + .5);
+	gpointer key = GUINT_TO_POINTER (key_dpi);
+
+	if (fontmap_cache != NULL)
+		fontmap = g_hash_table_lookup (fontmap_cache, key);
+	else
+		fontmap_cache = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+			NULL, (GDestroyNotify) cb_weak_unref);
+
+	if (fontmap == NULL) {
+		fontmap = PANGO_FT2_FONT_MAP (pango_ft2_font_map_new ());
+		pango_ft2_font_map_set_resolution (fontmap, x_dpi, y_dpi);
+		g_object_weak_ref (G_OBJECT (fontmap), cb_map_is_gone, NULL);
+		g_hash_table_insert (fontmap_cache, key, fontmap);
+	} else
+		g_object_ref (fontmap);
+
+	g_warning ("fontmap %d = %p", key_dpi, fontmap);
+	return fontmap;
+}
+#endif
+
+/**
+ * gog_renderer_update :
+ * @prend :
+ * @w :
+ * @h :
+ *
+ * Returns TRUE if the size actually changed.
+ **/
+gboolean
+gog_renderer_pixbuf_update (GogRendererPixbuf *prend, int w, int h, double zoom)
+{
+	gboolean redraw = TRUE;
+	GogView *view;
+	GogViewAllocation allocation;
+	GogGraph *graph;
+
+	g_return_val_if_fail (prend != NULL, FALSE);
+	g_return_val_if_fail (prend->base.view != NULL, FALSE);
+
+	view = prend->base.view;
+	graph = GOG_GRAPH (view->model);
+	gog_graph_force_update (graph);
+	allocation.x = allocation.y = 0.;
+	allocation.w = w;
+	allocation.h = h;
+	if (prend->w != w || prend->h != h) {
+		prend->w = w;
+		prend->h = h;
+		prend->base.scale_x = w / graph->width;
+		prend->base.scale_y = h / graph->height;
+		prend->base.scale = MIN (prend->base.scale_x, prend->base.scale_y);
+		prend->base.zoom  = zoom;
+		prend->dpi_x = gog_renderer_pt2r_x (&prend->base, GO_IN_TO_PT ((double)1.))
+			/ zoom;
+		prend->dpi_y = gog_renderer_pt2r_y (&prend->base, GO_IN_TO_PT ((double)1.))
+			/ zoom;
+
+		if (prend->buffer != NULL) {
+			g_object_unref (prend->buffer);
+			prend->buffer = NULL;
+		}
+
+		if (prend->pango_layout != NULL) {
+			g_object_unref (prend->pango_layout);
+			prend->pango_layout = NULL;
+		}
+
+		if (prend->pango_context != NULL) {
+			g_object_unref (prend->pango_context);
+			prend->pango_context = NULL;
+		}
+
+		/* make sure we dont try to queue an update while updating */
+		prend->base.needs_update = TRUE;
+
+		/* scale just changed need to recalculate sizes */
+		gog_renderer_invalidate_size_requests (&prend->base);
+		gog_view_size_allocate (view, &allocation);
+	} else if (w != view->allocation.w || h != view->allocation.h)
+		gog_view_size_allocate (view, &allocation);
+	else
+		redraw = gog_view_update_sizes (view);
+
+	redraw |= prend->base.needs_update;
+	prend->base.needs_update = FALSE;
+
+	gog_debug (0, g_warning ("rend_pixbuf:update = %d", redraw););
+
+	if (redraw) {
+		if (prend->buffer == NULL) {
+			if (prend->w == 0 || prend->h == 0)
+				return FALSE;
+			prend->buffer = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+							prend->w, prend->h);
+			if (prend->buffer == NULL) {
+				g_warning ("Chart is too large");
+				return FALSE;
+			}
+			prend->pixels    = gdk_pixbuf_get_pixels (prend->buffer);
+			prend->rowstride = gdk_pixbuf_get_rowstride (prend->buffer);
+		}
+		gdk_pixbuf_fill (prend->buffer, 0);
+
+		gog_view_render	(view, NULL);
+	}
+
+	return redraw;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-pixbuf.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,42 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-pixbuf.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_RENDERER_PIXBUF_H
+#define GOG_RENDERER_PIXBUF_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+G_BEGIN_DECLS
+
+#define GOG_RENDERER_PIXBUF_TYPE	(gog_renderer_pixbuf_get_type ())
+#define GOG_RENDERER_PIXBUF(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RENDERER_PIXBUF_TYPE, GogRendererPixbuf))
+#define IS_GOG_RENDERER_PIXBUF(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RENDERER_PIXBUF_TYPE))
+
+typedef struct _GogRendererPixbuf GogRendererPixbuf;
+
+GType      gog_renderer_pixbuf_get_type (void);
+GdkPixbuf *gog_renderer_pixbuf_get    (GogRendererPixbuf *prend);
+gboolean   gog_renderer_pixbuf_update (GogRendererPixbuf *prend, int w, int h, double zoom);
+
+G_END_DECLS
+
+#endif /* GOG_RENDERER_PIXBUF_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,823 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-svg.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-graph-impl.h>
+#include <goffice/graph/gog-renderer-svg.h>
+#include <goffice/graph/gog-renderer-impl.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-font.h>
+#include <goffice/utils/go-marker.h>
+#include <goffice/utils/go-units.h>
+
+#include <gsf/gsf-libxml.h>
+#include <gsf/gsf-impl-utils.h>
+#include <pango/pangoft2.h>
+
+#include <libxml/tree.h>
+
+#include <locale.h>
+#include <math.h>
+
+#define CC2XML(s) ((const xmlChar *)(s))
+
+#define GOG_RENDERER_SVG_TYPE	(gog_renderer_svg_get_type ())
+#define GOG_RENDERER_SVG(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RENDERER_SVG_TYPE, GogRendererSvg))
+#define IS_GOG_RENDERER_SVG(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RENDERER_SVG_TYPE))
+
+typedef struct _GogRendererSvg GogRendererSvg;
+
+struct _GogRendererSvg {
+	GogRenderer base;
+
+	xmlDocPtr doc;
+	xmlNodePtr defs;
+	xmlNodePtr current_node;
+	GHashTable *table;
+	gint grad, pat, img;
+	unsigned clip_counter;
+
+	PangoContext *pango_context;
+};
+
+typedef GogRendererClass GogRendererSvgClass;
+
+static GObjectClass *parent_klass;
+
+static GType gog_renderer_svg_get_type (void);
+
+static void 
+set_double_prop (xmlNodePtr node, const char *name, double value)
+{
+	char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+
+	g_ascii_dtostr (buffer, sizeof (buffer), value);
+	xmlNewProp (node, CC2XML(name), CC2XML(buffer));
+}
+
+static void
+gog_renderer_svg_finalize (GObject *obj)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (obj);
+
+	if (prend->pango_context != NULL) {
+		g_object_unref (prend->pango_context);
+		prend->pango_context = NULL;
+	}
+
+	(*parent_klass->finalize) (obj);
+}
+
+static void
+draw_path (ArtVpath const *path, GString *string)
+{
+	char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+	
+	for ( ; path->code != ART_END ; path++)
+		switch (path->code) {
+		case ART_MOVETO_OPEN :
+		case ART_MOVETO :
+			g_string_append_c (string, 'M');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->x));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->y));
+			break;
+		case ART_LINETO :
+			g_string_append_c (string, 'L');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->x));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->y));
+			break;
+		default :
+			break;
+		}
+}
+
+static void
+gog_renderer_svg_push_clip (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (rend);
+	char *buf;
+	xmlNodePtr child;
+	xmlNodePtr node;
+	GString *string;
+
+	prend->clip_counter++;
+	
+	node = xmlNewDocNode (prend->doc, NULL, CC2XML("clipPath"), NULL);
+	xmlAddChild (prend->defs, node);
+
+	buf = g_strdup_printf ("clip%i", prend->clip_counter);
+	xmlNewProp (node, CC2XML("id"), CC2XML(buf));
+	g_free (buf);
+	
+	child = xmlNewChild (node, NULL, CC2XML ("path"), NULL);
+	string = g_string_new ("");
+	draw_path (clip->path, string);
+	xmlNewProp (child, CC2XML ("d"), CC2XML (string->str));
+	g_string_free (string, TRUE);
+	
+	node = xmlNewDocNode (prend->doc, NULL, CC2XML("g"), NULL);
+	xmlAddChild (prend->current_node, node);
+	
+	buf = g_strdup_printf ("url(#clip%i)", prend->clip_counter);
+	xmlNewProp (node, CC2XML ("clip-path"), CC2XML (buf));
+	g_free (buf);
+
+	prend->current_node = node;
+}
+
+static void
+gog_renderer_svg_pop_clip (GogRenderer *rend, GogRendererClip *clip)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (rend);
+	
+	prend->current_node = prend->current_node->parent;
+}
+
+static void
+stroke_dasharray (xmlNodePtr node, ArtVpathDash *dash)
+{
+	GString *string;
+	char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+	int i;
+
+	if (dash == NULL || dash->n_dash < 1)
+		return;
+
+	string = g_string_new ("");
+	for (i = 0; i < dash->n_dash; i++) {
+	       if (i != 0) g_string_append_c (string, ' ');
+	       g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), dash->dash[i]));
+	}
+	xmlNewProp (node, CC2XML ("stroke-dasharray"), CC2XML (string->str));
+	g_string_free (string, TRUE);
+}
+
+#define SVG_PATTERN_SCALE 2.0
+
+static void
+fill_properties (GogRenderer *renderer, xmlNodePtr node, gboolean narrow)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (renderer);
+	GogStyle const *style = renderer->cur_style;
+	gboolean with_outline = (!narrow && style->outline.dash_type != GO_LINE_NONE);
+	char *buf, *name, *id;
+	int opacity;
+
+	if (style->fill.type != GOG_FILL_STYLE_NONE) {
+
+		switch (style->fill.type) {
+		case GOG_FILL_STYLE_PATTERN: {
+			GOColor color;
+			if (go_pattern_is_solid (&style->fill.pattern, &color)) {
+				buf = g_strdup_printf ("#%06x", color >> 8);
+				xmlNewProp (node, CC2XML ("fill"), CC2XML (buf));
+				g_free (buf);
+				opacity = color & 0xff;
+				if (opacity != 255) 
+					set_double_prop (node, "fill-opacity", (double) opacity / 255.0);
+			} else {
+				xmlNodePtr child, pat_node;
+				id = g_strdup (go_pattern_as_str (style->fill.pattern.pattern));
+				name = (char *) g_hash_table_lookup (prend->table, id);
+
+				if (!name) {
+					double height, width;
+					char *svg_path = go_pattern_get_svg_path (&style->fill.pattern, 
+										  &width, &height);
+					char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+
+					if (svg_path == NULL) {
+						g_free (id);
+						break;
+					}
+
+					name = g_strdup (id);
+					g_hash_table_insert (prend->table, id, name);
+					pat_node = xmlNewChild (prend->defs, NULL, CC2XML ("pattern"), NULL);
+					xmlSetProp (pat_node, CC2XML ("x"), CC2XML ("0"));
+					xmlSetProp (pat_node, CC2XML ("y"), CC2XML ("0"));
+					set_double_prop (pat_node, "width", width * SVG_PATTERN_SCALE);
+					set_double_prop (pat_node, "height", height * SVG_PATTERN_SCALE);
+					xmlSetProp (pat_node, CC2XML ("id"), CC2XML (name));
+					xmlSetProp (pat_node, CC2XML ("patternUnits"), CC2XML ("userSpaceOnUse"));
+					
+					child = xmlNewChild (pat_node, NULL, CC2XML ("rect"), NULL);
+					xmlSetProp (child, CC2XML ("x"), CC2XML ("-0.1"));
+					xmlSetProp (child, CC2XML ("y"), CC2XML ("-0.1"));
+					set_double_prop (child, "width", width * SVG_PATTERN_SCALE + 0.2);
+					set_double_prop (child, "height", height * SVG_PATTERN_SCALE + 0.2);
+					g_ascii_dtostr (buffer, sizeof (buffer), 
+							(double) (style->fill.pattern.back & 0xff) / 255.0);
+					buf = g_strdup_printf ("stroke:none;fill:#%06x;fill-opacity:%s;",
+							       style->fill.pattern.back >> 8, buffer);
+					xmlSetProp (child, CC2XML ("style"), CC2XML (buf));
+					g_free (buf);
+
+					child = xmlNewChild (pat_node, NULL, CC2XML ("path"), NULL);
+					xmlSetProp (child, CC2XML ("d"), CC2XML (svg_path));
+					g_ascii_dtostr (buffer, sizeof (buffer), 
+							(double) (style->fill.pattern.fore & 0xff) / 255.0);
+					buf = g_strdup_printf ("stroke:none;fill:#%06x;fill-opacity:%s;", 
+							       style->fill.pattern.fore >> 8, buffer);
+					xmlSetProp (child, CC2XML ("style"), CC2XML (buf));
+					g_free (buf);
+					buf = g_strdup_printf ("scale(%g)", SVG_PATTERN_SCALE);
+					xmlSetProp (child, CC2XML ("transform"), CC2XML (buf)); 
+					g_free (buf);
+					g_free (svg_path);
+				} else {
+					g_free (id);
+				}
+				buf = g_strdup_printf ("url(#%s)", name);
+				xmlSetProp (node, CC2XML ("fill"), CC2XML (buf));
+				g_free (buf);
+			}
+			break;
+	        }
+
+		case GOG_FILL_STYLE_GRADIENT:
+			id = g_strdup_printf ("g_%x_%x_%x", style->fill.gradient.dir,
+				style->fill.pattern.back, style->fill.pattern.fore);
+			name = (char*) g_hash_table_lookup (prend->table, id);
+			if (!name) {
+				double x1, y1, x2, y2;
+				GOColor start, end;
+				xmlNodePtr child, stop;
+				name = g_strdup_printf ("grad%d", prend->grad++);
+				g_hash_table_insert (prend->table, id, name);
+				if (style->fill.gradient.dir < 4) {
+					x1 = y1 = x2 = 0;
+					y2 = 1;
+				} else if (style->fill.gradient.dir < 8) {
+					x1 = y1 = y2 = 0;
+					x2 = 1;
+				} else if (style->fill.gradient.dir < 12) {
+					x1 = y1 = 0;
+					x2 = y2 = 1;
+				} else {
+					x1 = y2 = 1;
+					x2 = y1 = 0;
+				}
+				child = xmlNewDocNode (prend->doc, NULL, CC2XML ("linearGradient"), NULL);
+				xmlAddChild (prend->defs, child);
+				xmlNewProp (child, CC2XML ("id"), CC2XML (name));
+				xmlNewProp (child, CC2XML ("gradientUnits"), CC2XML ("objectBoundingBox"));
+				switch (style->fill.gradient.dir % 4) {
+				case 0:
+					buf = (char*) "pad";
+					start = style->fill.pattern.fore;
+					end = style->fill.pattern.back;
+					break;
+				case 1:
+					buf = (char*) "pad";
+					start = style->fill.pattern.back;
+					end = style->fill.pattern.fore;
+					break;
+				case 2:
+					buf = (char*) "reflect";
+					start = style->fill.pattern.fore;
+					end = style->fill.pattern.back;
+					x2 = x1 + (x2 - x1) / 2;
+					y2 = y1 + (y2 - y1) / 2;
+					break;
+				default:
+					buf = (char*) "reflect";
+					start = style->fill.pattern.back;
+					end = style->fill.pattern.fore;
+					x2 = x1 + (x2 - x1) / 2;
+					y2 = y1 + (y2 - y1) / 2;
+					break;
+				}
+				xmlNewProp (child, CC2XML ("spreadMethod"), CC2XML (buf));
+				set_double_prop (child, "x1", x1);
+				set_double_prop (child, "y1", y1);
+				set_double_prop (child, "x2", x2);
+				set_double_prop (child, "y2", y2);
+				
+				stop = xmlNewDocNode (prend->doc, NULL, CC2XML ("stop"), NULL);
+				xmlAddChild (child, stop);
+				xmlNewProp (stop, CC2XML ("offset"), CC2XML ("0"));
+				buf = g_strdup_printf ("#%06x", start >> 8);
+				xmlNewProp (stop, CC2XML ("stop-color"), CC2XML (buf));
+				g_free (buf);
+				opacity = start & 0xff;
+				if (opacity != 255) 
+					set_double_prop (stop, "stop-opacity", (double) opacity / 255.0);
+				
+				stop = xmlNewDocNode (prend->doc, NULL, CC2XML ("stop"), NULL);
+				xmlAddChild (child, stop);
+				xmlNewProp (stop, CC2XML ("offset"), CC2XML ("1"));
+				buf = g_strdup_printf ("#%06x", end >> 8);
+				xmlNewProp (stop, CC2XML ("stop-color"), CC2XML (buf));
+				g_free (buf);
+				opacity = end & 0xff;
+				if (opacity != 255) 
+					set_double_prop (stop, "stop-opacity", (double) opacity / 255.0);
+				buf = g_strdup_printf ("url(#%s)", name);
+			} else {
+				buf = g_strdup_printf ("url(#%s)", name);
+				g_free (id);
+			}
+			xmlNewProp (node, CC2XML ("fill"), CC2XML (buf));
+			g_free (buf);
+			break;
+
+		case GOG_FILL_STYLE_IMAGE:
+			break;
+
+		case GOG_FILL_STYLE_NONE:
+			break; /* impossible */
+		}
+	}
+	else
+		xmlNewProp (node, CC2XML ("fill"), CC2XML ("none"));
+
+	if (with_outline) {
+		/* TODO: clip dashed lines to prevent possible rsvg crash */
+		stroke_dasharray (node, renderer->outline_dash);
+		set_double_prop (node, "stroke-width", gog_renderer_line_size (renderer, style->outline.width));
+		buf = g_strdup_printf ("#%06x", style->outline.color >> 8);
+		xmlNewProp (node, CC2XML ("stroke"), CC2XML (buf));
+		g_free (buf);
+		opacity = style->outline.color & 0xff;
+		if (opacity != 255) 
+			set_double_prop (node, "stroke-opacity", (double) opacity / 255.0);
+	} else
+		xmlNewProp (node, CC2XML ("stroke"), CC2XML ("none"));
+}
+
+static void
+gog_renderer_svg_draw_path (GogRenderer *renderer, ArtVpath const *path)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (renderer);
+	GogStyle const *style = renderer->cur_style;
+	xmlNodePtr node;
+	GString *string;
+	char *buf;
+	int opacity;
+
+	if (style->line.dash_type == GO_LINE_NONE)
+		return;
+	
+	node = xmlNewDocNode (prend->doc, NULL, "path", NULL);
+
+	xmlAddChild (prend->current_node, node);
+	
+	string = g_string_new ("");
+	draw_path (path, string);
+	xmlNewProp (node, CC2XML ("d"), CC2XML (string->str));
+	g_string_free (string, TRUE);
+	
+	xmlNewProp (node, CC2XML ("fill"), CC2XML ("none"));
+
+	set_double_prop (node, "stroke-width", gog_renderer_line_size (renderer, style->line.width));
+	stroke_dasharray (node, renderer->line_dash);
+	
+	buf = g_strdup_printf ("#%06x", style->line.color >> 8);
+	xmlNewProp (node, CC2XML ("stroke"), CC2XML (buf));
+	g_free (buf);
+	
+	opacity = style->line.color & 0xff;
+	if (opacity != 255) 
+		set_double_prop (node, "stroke-opacity", (double) opacity / 255.0);
+}
+
+static void
+gog_renderer_svg_draw_polygon (GogRenderer *renderer, ArtVpath const *path, 
+			       gboolean narrow)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (renderer);
+	GogStyle const *style = renderer->cur_style;
+	gboolean with_outline = (!narrow && style->outline.dash_type != GO_LINE_NONE);
+	xmlNodePtr node;
+
+	if (style->fill.type != GOG_FILL_STYLE_NONE || with_outline) {
+		GString *string = g_string_new ("");
+		node = xmlNewDocNode (prend->doc, NULL, "path", NULL);
+		xmlAddChild (prend->current_node, node);
+		draw_path (path, string);
+		g_string_append_c (string, 'z');
+		xmlNewProp (node, CC2XML ("d"), CC2XML (string->str));
+		g_string_free (string, TRUE);
+	} else
+		return;
+
+	fill_properties (renderer, node, narrow);
+}
+
+static void
+draw_bezier_path (ArtBpath const *path, GString *string)
+{
+	char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+	
+	for ( ; path->code != ART_END ; path++)
+		switch (path->code) {
+		case ART_MOVETO_OPEN :
+		case ART_MOVETO :
+			g_string_append_c (string, 'M');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->x3));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->y3));
+			break;
+		case ART_LINETO :
+			g_string_append_c (string, 'L');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->x3));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->y3));
+			break;
+		case ART_CURVETO :
+			g_string_append_c (string, 'C');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->x1));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->y1));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->x2));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->y2));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->x3));
+			g_string_append_c (string, ' ');
+			g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), path->y3));
+			break;
+		default :
+			break;
+		}
+}
+
+static void
+gog_renderer_svg_draw_bezier_path (GogRenderer *rend, ArtBpath const *path)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (rend);
+	GogStyle const *style = rend->cur_style;
+	xmlNodePtr node;
+	GString *string;
+	char *buf;
+	int opacity;
+
+	if (style->line.dash_type == GO_LINE_NONE)
+		return;
+	
+	node = xmlNewDocNode (prend->doc, NULL, "path", NULL);
+
+	xmlAddChild (prend->current_node, node);
+	string = g_string_new ("");
+	draw_bezier_path (path, string);
+
+	xmlNewProp (node, CC2XML ("d"), CC2XML (string->str));
+	g_string_free (string, TRUE);
+	xmlNewProp (node, CC2XML ("fill"), CC2XML ("none"));
+	set_double_prop (node, "stroke-width", gog_renderer_line_size (rend, style->line.width));
+	stroke_dasharray (node, rend->line_dash);
+	buf = g_strdup_printf ("#%06x", style->line.color >> 8);
+	xmlNewProp (node, CC2XML ("stroke"), CC2XML (buf));
+	g_free (buf);
+	opacity = style->line.color & 0xff;
+	if (opacity != 255) 
+		set_double_prop (node, "stroke-opacity", (double) opacity / 255.0);
+}
+
+static void
+gog_renderer_svg_draw_bezier_polygon (GogRenderer *renderer, ArtBpath const *path, 
+				      gboolean narrow)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (renderer);
+	GogStyle const *style = renderer->cur_style;
+	gboolean with_outline = (!narrow && style->outline.dash_type != GO_LINE_NONE);
+	xmlNodePtr node;
+
+	if (style->fill.type != GOG_FILL_STYLE_NONE || with_outline) {
+		GString *string = g_string_new ("");
+		node = xmlNewDocNode (prend->doc, NULL, "path", NULL);
+		xmlAddChild (prend->current_node, node);
+		draw_bezier_path (path, string);
+		g_string_append_c (string, 'z');
+		xmlNewProp (node, CC2XML ("d"), CC2XML (string->str));
+		g_string_free (string, TRUE);
+	} else
+		return;
+
+	fill_properties (renderer, node, narrow);
+}
+
+static void
+gog_renderer_svg_draw_marker (GogRenderer *rend, double x, double y)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (rend);
+	GOMarker *marker = rend->cur_style->marker.mark;
+	ArtVpath const *outline_path_raw, *fill_path_raw;
+	ArtVpath *outline_path, *fill_path;
+	double scaling[6], translation[6], affine[6];
+	double half_size;
+	xmlNodePtr node;
+	GString *string;
+	char *buf;
+	int opacity;
+
+	g_return_if_fail (marker != NULL);
+
+	go_marker_get_paths (marker, &outline_path_raw, &fill_path_raw);
+
+	if ((outline_path_raw == NULL) ||
+	    (fill_path_raw == NULL))
+		return;
+
+	half_size = gog_renderer_line_size (rend, marker->size) / 2.0;
+	art_affine_scale (scaling, half_size, half_size);
+	art_affine_translate (translation, x, y);
+	art_affine_multiply (affine, scaling, translation);
+
+	outline_path = art_vpath_affine_transform (outline_path_raw, affine);
+	fill_path = art_vpath_affine_transform (fill_path_raw, affine);
+
+	node = xmlNewDocNode (prend->doc, NULL, "path", NULL);
+	xmlAddChild (prend->current_node, node);
+	string = g_string_new ("");
+	draw_path (fill_path, string);
+	g_string_append_c (string, 'z');
+	xmlNewProp (node, CC2XML ("d"), CC2XML (string->str));
+	g_string_free (string, TRUE);
+	buf = g_strdup_printf ("#%06x", marker->fill_color >> 8);
+	xmlNewProp (node, CC2XML ("fill"), CC2XML (buf));
+	g_free (buf);
+	xmlNewProp (node, CC2XML ("stroke"), CC2XML ("none"));
+	opacity = marker->fill_color & 0xff;
+	if (opacity != 255) 
+		set_double_prop (node, "fill-opacity", (double) opacity / 255.0);
+
+	node = xmlNewDocNode (prend->doc, NULL, "path", NULL);
+	xmlAddChild (prend->current_node, node);
+	string = g_string_new ("");
+	draw_path (outline_path, string);
+	g_string_append_c (string, 'z');
+	xmlNewProp (node, CC2XML ("d"), CC2XML (string->str));
+	g_string_free (string, TRUE);
+	xmlNewProp (node, CC2XML ("fill"), CC2XML ("none"));
+	xmlNewProp (node, CC2XML ("stroke-linecap"), CC2XML ("round"));
+	set_double_prop (node, "stroke-width", 
+		gog_renderer_line_size (rend, go_marker_get_outline_width (marker)));
+	buf = g_strdup_printf ("#%06x", marker->outline_color >> 8);
+	xmlNewProp (node, CC2XML ("stroke"), CC2XML (buf));
+	g_free (buf);
+	opacity = marker->outline_color & 0xff;
+	if (opacity != 255) 
+		set_double_prop (node, "stroke-opacity", (double) opacity / 255.0);
+
+	g_free (outline_path);
+	g_free (fill_path);
+}
+
+static PangoLayout *
+make_layout (GogRenderer *rend, char const *text)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (rend);
+	PangoLayout *layout;
+	PangoFontDescription const *fd = rend->cur_style->font.font->desc;
+
+	if (prend->pango_context == NULL) {
+		PangoFT2FontMap *font_map = PANGO_FT2_FONT_MAP (pango_ft2_font_map_new ());
+		/*assume horizontal and vertical resolutions are the same
+		 * Why ? */
+		pango_ft2_font_map_set_resolution (font_map,
+				GO_IN_TO_PT((double)1. / gog_renderer_pt2r (rend, 1.0)),
+				GO_IN_TO_PT((double)1. / gog_renderer_pt2r (rend, 1.0)));
+		prend->pango_context = pango_ft2_font_map_create_context  (font_map);
+		g_object_unref (font_map);
+	}
+
+	gog_debug (0, {
+		char *msg = pango_font_description_to_string (fd);
+		g_warning (msg);
+		g_free (msg);
+	});
+
+	layout = pango_layout_new (prend->pango_context);
+	pango_layout_set_font_description (layout, fd);
+
+	pango_layout_set_text (layout, text, -1);
+
+	return layout;
+}
+
+static void
+gog_renderer_svg_get_text_OBR (GogRenderer *rend, char const *text, GOGeometryOBR *obr)
+{
+	PangoRectangle  rect;
+	PangoLayout    *layout = make_layout (rend, text);
+	
+	pango_layout_get_pixel_extents (layout, NULL, &rect);
+	g_object_unref (layout);
+	obr->w = gog_renderer_pt2r (rend, rect.width);
+	obr->h = gog_renderer_pt2r (rend, rect.height);
+}
+
+static void
+gog_renderer_svg_draw_text (GogRenderer *rend, char const *text,
+			    GogViewAllocation const *pos, GtkAnchorType anchor,
+			    GogViewAllocation *result)
+{
+	GogRendererSvg *prend = GOG_RENDERER_SVG (rend);
+	GogStyle const *style = rend->cur_style;
+	PangoRectangle  rect;
+	PangoLayout* layout = make_layout (rend, text);
+	PangoFontDescription const *fd = style->font.font->desc;
+	PangoLayoutIter* iter =pango_layout_get_iter(layout);
+	GOGeometryOBR obr;
+	GOGeometryAABR aabr;
+	GString *string;
+	xmlNodePtr node;
+	char buffer[G_ASCII_DTOSTR_BUF_SIZE];
+	char *buf;
+	double y_offset;
+	int baseline;
+
+	baseline = pango_layout_iter_get_baseline (iter);
+	pango_layout_iter_get_run_extents (iter, NULL, &rect);
+	pango_layout_iter_free(iter);
+	g_object_unref (layout);
+	obr.w = gog_renderer_pt2r (rend, rect.width / PANGO_SCALE);
+	obr.h = gog_renderer_pt2r (rend, rect.height / PANGO_SCALE);
+	obr.alpha = rend->cur_style->text_layout.angle * M_PI / 180.0;
+	obr.x = pos->x;
+	obr.y = pos->y;
+	go_geometry_OBR_to_AABR (&obr, &aabr);
+	y_offset = gog_renderer_pt2r(rend, (baseline - rect.y) / PANGO_SCALE) - obr.h / 2.0;
+
+	switch (anchor) {
+		case GTK_ANCHOR_NW: case GTK_ANCHOR_W: case GTK_ANCHOR_SW:
+			obr.x += aabr.w / 2.0;
+			break;
+		case GTK_ANCHOR_NE: case GTK_ANCHOR_E: case GTK_ANCHOR_SE:
+			obr.x -= aabr.w / 2.0;
+		default:
+			break;
+	}
+			
+	switch (anchor) {
+		case GTK_ANCHOR_NW: case GTK_ANCHOR_N: case GTK_ANCHOR_NE:
+			obr.y += aabr.h / 2.0;
+			break;
+		case GTK_ANCHOR_SW: case GTK_ANCHOR_S: case GTK_ANCHOR_SE:
+			obr.y -= aabr.h / 2.0;
+		default:
+			break;
+	}
+	
+	node = xmlNewDocNode (prend->doc, NULL, "text", NULL);
+	xmlNodeSetContent (node, CC2XML (text));
+	xmlAddChild (prend->current_node, node);
+	set_double_prop (node, "x", obr.x);
+	set_double_prop (node, "y", obr.y + y_offset);
+	xmlNewProp (node, CC2XML ("text-anchor"), CC2XML ("middle"));
+	string = g_string_new ("rotate(");
+	g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), -rend->cur_style->text_layout.angle));
+	g_string_append_c (string, ',');
+	g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), obr.x));
+	g_string_append_c (string, ',');
+	g_string_append (string, g_ascii_dtostr (buffer, sizeof (buffer), obr.y));
+	g_string_append_c (string, ')');
+	xmlNewProp (node, CC2XML ("transform"), CC2XML (string->str));
+       	g_string_free (string, TRUE);	
+	
+	buf = g_strdup_printf ("#%06x", style->font.color >> 8);
+	xmlNewProp (node, CC2XML ("fill"), CC2XML (buf));
+	g_free (buf);
+	xmlNewProp (node, CC2XML ("font-family"), CC2XML (pango_font_description_get_family (fd)));
+	buf = g_strdup_printf ("%d", (int)(rint (gog_renderer_pt2r(rend, pango_font_description_get_size (fd) / PANGO_SCALE))));
+	xmlNewProp (node, CC2XML ("font-size"), CC2XML (buf));
+	g_free (buf);
+	switch (pango_font_description_get_weight (fd)) {
+	case PANGO_WEIGHT_BOLD:
+		xmlNewProp (node, CC2XML ("font-weight"), CC2XML ("bold"));
+		break;
+	case PANGO_WEIGHT_NORMAL: break;
+	default:
+		buf = g_strdup_printf ("%d", pango_font_description_get_weight (fd));
+		xmlNewProp (node, CC2XML ("font-weight"), CC2XML (buf));
+		g_free (buf);
+		break;
+	}
+	switch (pango_font_description_get_style (fd)) {
+	case PANGO_STYLE_ITALIC:
+		xmlNewProp (node, CC2XML ("font-syle"), CC2XML ("italic"));
+		break;
+	case PANGO_STYLE_OBLIQUE:
+		xmlNewProp (node, CC2XML ("font-syle"), CC2XML ("oblique"));
+		break;
+	default: break;
+	}
+}
+
+static void
+gog_renderer_svg_class_init (GogRendererClass *rend_klass)
+{
+	GObjectClass *gobject_klass   = (GObjectClass *) rend_klass;
+
+	parent_klass = g_type_class_peek_parent (rend_klass);
+	gobject_klass->finalize	  	= gog_renderer_svg_finalize;
+	rend_klass->push_clip		= gog_renderer_svg_push_clip;
+	rend_klass->pop_clip	 	= gog_renderer_svg_pop_clip;
+	rend_klass->draw_path	  	= gog_renderer_svg_draw_path;
+	rend_klass->draw_polygon  	= gog_renderer_svg_draw_polygon;
+	rend_klass->draw_bezier_path 	= gog_renderer_svg_draw_bezier_path;
+	rend_klass->draw_bezier_polygon = gog_renderer_svg_draw_bezier_polygon;
+	rend_klass->draw_text	  	= gog_renderer_svg_draw_text;
+	rend_klass->draw_marker	  	= gog_renderer_svg_draw_marker;
+	rend_klass->get_text_OBR	= gog_renderer_svg_get_text_OBR;
+}
+
+static GSF_CLASS (GogRendererSvg, gog_renderer_svg,
+		  gog_renderer_svg_class_init, NULL,
+		  GOG_RENDERER_TYPE)
+
+/**
+ * gog_graph_export_to_svg :
+ * @graph  : #GogGraph
+ * @output : #GsfOutput
+ * @width  :
+ * @height :
+ *
+ * Renders @graph as SVG and stores it in @output.
+ *
+ * Returns TRUE on success.
+ **/
+gboolean
+gog_graph_export_to_svg (GogGraph *graph, GsfOutput *output,
+			 double width, double height, double scale)
+{
+	GogViewAllocation allocation;
+	GogRendererSvg *prend;
+	xmlNsPtr namespace;
+	gboolean success = TRUE;
+
+	gog_graph_force_update (graph);
+
+	prend = g_object_new (GOG_RENDERER_SVG_TYPE,
+			      "model", graph,
+			      NULL);
+	prend->base.scale = scale;
+	prend->doc = xmlNewDoc (CC2XML ("1.0"));
+
+	xmlNewDtd (prend->doc,
+		   CC2XML ("svg"), CC2XML ("-//W3C//DTD SVG 1.1//EN"),
+		   CC2XML ("http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"));
+	prend->doc->children = xmlNewDocNode (prend->doc, NULL, CC2XML ("svg"), NULL);
+	prend->current_node = prend->doc->children;
+	prend->defs = xmlNewDocNode (prend->doc, NULL, CC2XML ("defs"), NULL);
+	xmlAddChild (prend->doc->children, prend->defs);
+	prend->table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+	prend->grad = prend->pat = prend->img = 0;
+	
+	namespace = xmlNewNs (prend->doc->children, CC2XML ("http://www.w3.org/2000/svg"), NULL);
+	xmlSetNs (prend->doc->children, namespace);
+	xmlNewProp (prend->doc->children, CC2XML ("version"), CC2XML ("1.1"));
+
+	namespace = xmlNewNs (prend->doc->children, CC2XML ("http://www.w3.org/1999/xlink"), CC2XML ("xlink"));
+
+	set_double_prop (prend->doc->children, "width", width);
+	set_double_prop (prend->doc->children, "height", height);
+
+	prend->clip_counter = 0;
+	allocation.x = 0.;
+	allocation.y = 0.;
+	allocation.w = width;
+	allocation.h = height;
+	gog_view_size_allocate (prend->base.view, &allocation);
+	gog_view_render	(prend->base.view, NULL);
+
+	if ((!g_hash_table_size (prend->table)) &&
+	    (prend->clip_counter == 0)) {
+		xmlUnlinkNode (prend->defs);
+		xmlFreeNode (prend->defs);
+	}
+	xmlIndentTreeOutput = TRUE;
+	if (gsf_xmlDocFormatDump (output, prend->doc, "UTF-8", TRUE) < 0)
+		success = FALSE;
+
+	xmlFreeDoc (prend->doc);
+	g_hash_table_destroy (prend->table);
+	g_object_unref (prend);
+
+	return success;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer-svg.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,35 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer-svg.h :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_RENDERER_SVG_H
+#define GOG_RENDERER_SVG_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+gboolean gog_graph_export_to_svg (GogGraph *graph,
+				  GsfOutput *output,
+				  double width, double height, double scale);
+
+G_END_DECLS
+
+#endif /* GOG_RENDERER_SVG_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,788 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-renderer-impl.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-graph.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/utils/go-units.h>
+#include <goffice/utils/go-font.h>
+#include <goffice/utils/go-math.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+/* We need to define an hair line width for the svg and gnome_print renderer. 
+ * 0.24 pt is the dot size of a 300 dpi printer, if the plot is printed at scale 1:1 */
+#define GOG_RENDERER_HAIR_LINE_WIDTH	0.24
+
+enum {
+	RENDERER_PROP_0,
+	RENDERER_PROP_MODEL,
+	RENDERER_PROP_VIEW,
+	RENDERER_PROP_ZOOM
+};
+enum {
+	RENDERER_SIGNAL_REQUEST_UPDATE,
+	RENDERER_SIGNAL_LAST
+};
+static gulong renderer_signals [RENDERER_SIGNAL_LAST] = { 0, };
+
+static GObjectClass *parent_klass;
+
+static void
+gog_renderer_finalize (GObject *obj)
+{
+	GogRenderer *rend = GOG_RENDERER (obj);
+
+	go_line_vpath_dash_free (rend->line_dash);
+	rend->line_dash = NULL;
+	go_line_vpath_dash_free (rend->outline_dash);
+	rend->outline_dash = NULL;
+
+	if (rend->clip_stack != NULL) 
+		g_warning ("Missing calls to gog_renderer_pop_clip");
+
+	if (rend->cur_style != NULL) {
+		g_warning ("Missing calls to gog_renderer_style_pop left dangling style references");
+		g_slist_foreach (rend->style_stack,
+			(GFunc)g_object_unref, NULL);
+		g_slist_free (rend->style_stack);
+		rend->style_stack = NULL;
+		g_object_unref ((gpointer)rend->cur_style);
+		rend->cur_style = NULL;
+	}
+
+	if (rend->view != NULL) {
+		g_object_unref (rend->view);
+		rend->view = NULL;
+	}
+
+	if (rend->font_watcher != NULL) {
+		go_font_cache_unregister (rend->font_watcher);
+		g_closure_unref (rend->font_watcher);
+		rend->font_watcher = NULL;
+	}
+
+	(*parent_klass->finalize) (obj);
+}
+
+static void
+gog_renderer_set_property (GObject *obj, guint param_id,
+			   GValue const *value, GParamSpec *pspec)
+{
+	GogRenderer *rend = GOG_RENDERER (obj);
+
+	switch (param_id) {
+	case RENDERER_PROP_MODEL:
+		rend->model = GOG_GRAPH (g_value_get_object (value));
+		if (rend->view != NULL)
+			g_object_unref (rend->view);
+		rend->view = g_object_new (gog_graph_view_get_type (),
+					   "renderer",	rend,
+					   "model",	rend->model,
+					   NULL);
+		gog_renderer_request_update (rend);
+		break;
+
+	case RENDERER_PROP_ZOOM:
+		rend->zoom = g_value_get_double (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+}
+
+static void
+gog_renderer_get_property (GObject *obj, guint param_id,
+			   GValue *value, GParamSpec *pspec)
+{
+	GogRenderer const *rend = GOG_RENDERER (obj);
+
+	switch (param_id) {
+	case RENDERER_PROP_MODEL:
+		g_value_set_object (value, rend->model);
+		break;
+	case RENDERER_PROP_VIEW:
+		g_value_set_object (value, rend->view);
+		break;
+	case RENDERER_PROP_ZOOM:
+		g_value_set_double (value, rend->zoom);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+void
+gog_renderer_request_update (GogRenderer *renderer)
+{
+	g_return_if_fail (GOG_RENDERER (renderer) != NULL);
+
+	if (renderer->needs_update)
+		return;
+	renderer->needs_update = TRUE;
+	g_signal_emit (G_OBJECT (renderer),
+		renderer_signals [RENDERER_SIGNAL_REQUEST_UPDATE], 0);
+}
+
+void
+gog_renderer_invalidate_size_requests (GogRenderer *rend)
+{
+	g_return_if_fail (GOG_RENDERER (rend) != NULL);
+
+	if (rend->view)
+		gog_renderer_request_update (rend);
+}
+
+static void
+update_dash (GogRenderer *rend)
+{
+	double size;
+	
+	go_line_vpath_dash_free (rend->line_dash);
+	rend->line_dash = NULL;
+	go_line_vpath_dash_free (rend->outline_dash);
+	rend->outline_dash = NULL;
+	
+	if (rend->cur_style == NULL)
+		return;
+
+	size = gog_renderer_line_size (rend, rend->cur_style->line.width);
+	rend->line_dash = go_line_get_vpath_dash (rend->cur_style->line.dash_type, size);
+	size = gog_renderer_line_size (rend, rend->cur_style->outline.width);
+	rend->outline_dash = go_line_get_vpath_dash (rend->cur_style->outline.dash_type, size);
+}
+
+void
+gog_renderer_push_style (GogRenderer *rend, GogStyle const *style)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (GOG_STYLE (style) != NULL);
+
+	if (rend->cur_style != NULL)
+		rend->style_stack = g_slist_prepend (
+			rend->style_stack, (gpointer)rend->cur_style);
+	g_object_ref ((gpointer)style);
+	rend->cur_style = style;
+
+	if (klass->push_style)
+		klass->push_style (rend, style);
+
+	update_dash (rend);
+}
+
+void
+gog_renderer_pop_style (GogRenderer *rend)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	g_object_unref ((gpointer)rend->cur_style);
+	if (rend->style_stack != NULL) {
+		rend->cur_style = rend->style_stack->data;
+		rend->style_stack = g_slist_remove (rend->style_stack,
+			rend->cur_style);
+	} else
+		rend->cur_style = NULL;
+
+	if (klass->pop_style)
+		klass->pop_style (rend);
+
+	update_dash (rend);
+}
+
+/**
+ * gog_renderer_push_clip :
+ * @rend      : #GogRenderer
+ * @clip_path : #ArtVpath array
+ *
+ * Defines the current clipping region. 
+ **/
+void
+gog_renderer_push_clip (GogRenderer *rend, ArtVpath *clip_path)
+{
+	GogRendererClip *clip;
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (clip_path != NULL);
+
+	clip = g_new (GogRendererClip, 1);
+	clip->path = clip_path;
+
+	rend->clip_stack = g_slist_prepend (rend->clip_stack, clip);
+	rend->cur_clip = clip;
+	
+	(klass->push_clip) (rend, clip);
+}
+
+/**
+ * gog_renderer_pop_clip :
+ * @rend : #GogRenderer
+ *
+ * End the current clipping.
+ **/
+void
+gog_renderer_pop_clip (GogRenderer *rend)
+{
+	GogRendererClip *clip;
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->clip_stack != NULL);
+
+	clip = (GogRendererClip *) rend->clip_stack->data;
+
+	(klass->pop_clip) (rend, clip);
+
+	g_free (clip->path);
+	g_free (clip);
+	rend->clip_stack = g_slist_delete_link (rend->clip_stack, rend->clip_stack);
+
+	if (rend->clip_stack != NULL)
+		rend->cur_clip = (GogRendererClip *) rend->clip_stack->data;
+	else
+		rend->cur_clip = NULL;
+}
+
+/**
+ * gog_renderer_get_rectangle_vpath :
+ * @x      : upper left corner
+ * @y      : upper left corner
+ * @width  : rectangle width
+ * @height : rectangle height
+ *
+ * a utility routine to build a rectangle path.
+ **/
+ArtVpath * 
+gog_renderer_get_rectangle_vpath (GogViewAllocation const *rect)
+{
+	ArtVpath *path;
+
+	path = g_new (ArtVpath, 6);
+
+	path[0].x = path[3].x = path[4].x = rect->x;
+	path[1].x = path[2].x = rect->x + rect->w;
+	path[0].y = path[1].y = path[4].y = rect->y;
+	path[2].y = path[3].y = rect->y + rect->h;
+	path[0].code = ART_MOVETO;
+	path[1].code = path[2].code = path[3].code = path[4].code = ART_LINETO;
+	path[5].code = ART_END;
+
+	return path;
+}
+
+/**
+ * gog_renderer_get_ring_wedge_vpath :
+ * @x : center x coordinate
+ * @y : center y coordinate
+ * @width  : x radius
+ * @height : y radius
+ * @th0 : start arc angle
+ * @th1 : stop arc angle
+ *
+ * a utility routine to build a ring wedge path.
+ **/
+ArtBpath * 
+gog_renderer_get_ring_wedge_bpath (double cx, double cy, 
+				   double rx_out, double ry_out,
+				   double rx_in, double ry_in,
+				   double th0, double th1)
+{
+	ArtBpath *path;
+	double th_arc, th_out, th_in, th_delta, t;
+	int i, n_segs;
+	gboolean fill = rx_in >= 0.0 && ry_in >= 0.0;
+	gboolean draw_in, ellipse = FALSE;
+
+ 	if (rx_out <= 0.0 || ry_out <= 0.0 || rx_out < rx_in || ry_out < ry_in)
+		return NULL;
+
+	draw_in = fill && (rx_in > rx_out / 1E6) && (ry_in > ry_out / 1E6);
+
+	if (th1 < th0) { t = th1; th1 = th0; th0 = t; }
+	if (go_add_epsilon (th1 - th0) >= 2 * M_PI) {
+		ellipse = TRUE;
+		th1 = th0 + 2 * M_PI;
+	}
+
+	th_arc = th1 - th0;
+	n_segs = ceil (fabs (th_arc / (M_PI * 0.5 + 0.001)));
+
+	path = g_new (ArtBpath, (1 + n_segs) * (draw_in ? 2 : 1) + (fill ? (draw_in ? 2 : 3) : 1));
+
+	path[0].x3 = cx + rx_out * cos (th1);
+	path[0].y3 = cy + ry_out * sin (th1);
+	path[0].code = ART_MOVETO;
+
+	if (fill && !ellipse) {
+		path[n_segs + 1].x3 = cx + rx_in * cos (th0);
+		path[n_segs + 1].y3 = cy + ry_in * sin (th0);
+		path[n_segs + 1].code = ART_LINETO;
+		if (draw_in) {
+			/* Ring wedge */
+			path[2 * n_segs + 2].x3 = path[0].x3;
+			path[2 * n_segs + 2].y3 = path[0].y3;
+			path[2 * n_segs + 2].code = ART_LINETO;
+			path[2 * n_segs + 3].code = ART_END;
+		} else {
+			/* Pie wedge */
+			path[n_segs + 1].x3 = cx;
+			path[n_segs + 1].y3 = cy;
+			path[n_segs + 1].code = ART_LINETO;
+			path[n_segs + 2].x3 = path[0].x3;
+			path[n_segs + 2].y3 = path[0].y3;
+			path[n_segs + 2].code = ART_LINETO;
+			path[n_segs + 3].code = ART_END;
+		}
+	} else 
+		/* Arc */
+		path[n_segs + 1].code = ART_END;
+
+	th_delta = th_arc / n_segs;
+	t = - (8.0 / 3.0) * sin (th_delta * 0.25) * sin (th_delta * 0.25) / sin (th_delta * 0.5);
+	th_out = th1;
+	th_in = th0;
+	for (i = 1; i <= n_segs; i++) {	
+		path[i].x1 = cx + rx_out * (cos (th_out) - t * sin (th_out));
+		path[i].y1 = cy + ry_out * (sin (th_out) + t * cos (th_out));
+		path[i].x3 = cx + rx_out * cos (th_out - th_delta);
+		path[i].y3 = cy + ry_out * sin (th_out - th_delta);
+		path[i].x2 = path[i].x3 + rx_out * t * sin (th_out - th_delta);
+		path[i].y2 = path[i].y3 - ry_out * t * cos (th_out - th_delta);
+		path[i].code = ART_CURVETO;
+		th_out -= th_delta;
+		if (draw_in) {
+			path[i+n_segs+1].x1 = cx + rx_in * (cos (th_in) - t * sin (th_in));
+			path[i+n_segs+1].y1 = cy + ry_in * (sin (th_in) + t * cos (th_in));
+			path[i+n_segs+1].x3 = cx + rx_in * cos (th_in + th_delta);
+			path[i+n_segs+1].y3 = cy + ry_in * sin (th_in + th_delta);
+			path[i+n_segs+1].x2 = path[i+n_segs+1].x3 + rx_in * t * sin (th_in + th_delta);
+			path[i+n_segs+1].y2 = path[i+n_segs+1].y3 - ry_in * t * cos (th_in + th_delta);
+			path[i+n_segs+1].code = ART_CURVETO;
+			th_in += th_delta;
+		}
+	}
+	return path;
+}
+
+/**
+ * gog_renderer_draw_ring_wedge :
+ * @renderer : #GogRenderer
+ * @cx : center x coordinate
+ * @cy : center y coordinate
+ * @rx : x radius
+ * @ry : y radius
+ * @th0 : start arc angle
+ * @th1 : stop arc angle
+ *
+ * a utility routine to draw an arc.
+ **/
+
+void
+gog_renderer_draw_ring_wedge (GogRenderer *rend, double cx, double cy,
+			      double rx_out, double ry_out, 
+			      double rx_in, double ry_in,
+			      double th0, double th1,
+			      gboolean narrow)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+	ArtBpath *path;
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	path = gog_renderer_get_ring_wedge_bpath (cx, cy, rx_out, ry_out, rx_in, ry_in, th0, th1);
+	if (path == NULL)
+		return;
+
+	if (rx_in >= 0.0 && ry_in >= 0.0)
+		(klass->draw_bezier_polygon) (rend, path, narrow);
+	else
+		(klass->draw_bezier_path) (rend, path);
+
+	g_free (path);
+}
+
+/**
+ * gog_renderer_draw_sharp_path :
+ * @rend : #GogRenderer
+ * @path  : #ArtVpath
+ *
+ * Draws @path using the outline elements of the current style,
+ * trying to make line with sharp edge.
+ **/
+void
+gog_renderer_draw_sharp_path (GogRenderer *rend, ArtVpath *path)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	if (klass->sharp_path) {
+		(klass->sharp_path) (rend, path, 
+			gog_renderer_line_size (rend, rend->cur_style->line.width));
+	}
+
+	(klass->draw_path) (rend, path);
+}
+
+/**
+ * gog_renderer_draw_path :
+ * @rend : #GogRenderer
+ * @path  : #ArtVpath
+ *
+ * Draws @path using the outline elements of the current style.
+ **/
+void
+gog_renderer_draw_path (GogRenderer *rend, ArtVpath const *path)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	(klass->draw_path) (rend, path);
+}
+
+/**
+ * gog_renderer_draw_sharp_polygon :
+ * @rend : #GogRenderer
+ * @path  : #ArtVpath
+ * @narrow : if TRUE skip any outline the current style specifies.
+ *
+ * Draws @path and fills it with the fill elements of the current style,
+ * trying to draw line with sharp edge.
+ * If @narrow is false it alos outlines it using the outline elements.
+ **/
+void
+gog_renderer_draw_sharp_polygon (GogRenderer *rend, ArtVpath *path, gboolean narrow)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	if (klass->sharp_path) {
+		(klass->sharp_path) (rend, path,
+			gog_renderer_line_size (rend, rend->cur_style->outline.width));
+	}
+
+	(klass->draw_polygon) (rend, path, narrow);
+}
+
+/**
+ * gog_renderer_draw_polygon :
+ * @rend : #GogRenderer
+ * @path  : #ArtVpath
+ * @narrow : if TRUE skip any outline the current style specifies.
+ *
+ * Draws @path and fills it with the fill elements of the current style.
+ * If @narrow is false it alos outlines it using the outline elements.
+ **/
+void
+gog_renderer_draw_polygon (GogRenderer *rend, ArtVpath const *path, gboolean narrow)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	(klass->draw_polygon) (rend, path, narrow);
+}
+
+
+/**
+ * gog_renderer_draw_bezier_path :
+ * @rend : #GogRenderer
+ * @path  : #ArtBpath
+ *
+ * Draws @path using the outline elements of the current style.
+ **/
+void
+gog_renderer_draw_bezier_path (GogRenderer *rend, ArtBpath const *path)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	(klass->draw_bezier_path) (rend, path);
+}
+
+/**
+ * gog_renderer_draw_text :
+ * @rend   : #GogRenderer
+ * @text   : the string to draw
+ * @pos    : #GogViewAllocation
+ * @anchor : #GtkAnchorType how to draw relative to @pos
+ * @result : an optionally NULL #GogViewAllocation
+ *
+ * Have @rend draw @text in the at @pos.{x,y} anchored by the @anchor corner.
+ * If @pos.w or @pos.h are >= 0 then clip the results to less than that size.
+ * If @result is supplied it will recieve the actual position of the result.
+ **/
+void
+gog_renderer_draw_text (GogRenderer *rend, char const *text,
+			GogViewAllocation const *pos, GtkAnchorType anchor,
+			GogViewAllocation *result)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+	g_return_if_fail (text != NULL);
+
+	if (*text == '\0') {
+		if (result != NULL) {
+			result->x = pos->x;
+			result->y = pos->y;
+			result->w = 0.;
+			result->h = 0.;
+		}
+		return;
+	}
+
+	(klass->draw_text) (rend, text, pos, anchor, result);
+}
+
+/**
+ * gog_renderer_draw_marker :
+ * @rend : #GogRenderer
+ * @pos  : #ArtPoint
+ **/
+void
+gog_renderer_draw_marker (GogRenderer *rend, double x, double y)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+
+	(klass->draw_marker) (rend, x, y);
+}
+
+/**
+ * gog_renderer_get_text_OBR :
+ * @rend : #GogRenderer
+ * @text : the string to draw
+ * @obr : #GOGeometryOBR to store the Object Bounding Rectangle of @text.
+ **/
+void
+gog_renderer_get_text_OBR (GogRenderer *rend, char const *text, GOGeometryOBR *obr)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (rend->cur_style != NULL);
+	g_return_if_fail (text != NULL);
+	g_return_if_fail (obr != NULL);
+
+	obr->x = obr->y = 0;
+	if (*text == '\0') {
+		/* Make sure invisible things don't skew size */
+		obr->w = obr->h = 0;
+		return;
+	}
+
+	(klass->get_text_OBR) (rend, text, obr);
+
+	/* Make sure invisible things don't skew size */
+	if (obr->w == 0)
+		obr->h = 0;
+	else if (obr->h == 0)
+		obr->w = 0;
+	
+	obr->alpha = rend->cur_style->text_layout.angle * M_PI / 180.0;
+}
+
+/**
+ * gog_renderer_get_text_AABR :
+ * @rend : #GogRenderer
+ * @text : the string to draw
+ * @aabr : #GOGeometryAABR to store the Axis Aligned Bounding Rectangle of @text.
+ **/
+void
+gog_renderer_get_text_AABR (GogRenderer *rend, char const *text, GOGeometryAABR *aabr)
+{
+	GOGeometryOBR obr;
+
+	gog_renderer_get_text_OBR (rend, text, &obr);
+	go_geometry_OBR_to_AABR (&obr, aabr);
+}
+
+static void
+cb_font_removed (GogRenderer *rend, GOFont const *font)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	g_return_if_fail (klass != NULL);
+
+	gog_debug (0, g_warning ("notify a '%s' that %p is invalid", 
+				 G_OBJECT_TYPE_NAME (rend), font););
+
+	if (klass->font_removed)
+		(klass->font_removed) (rend, font);
+}
+
+static void
+gog_renderer_class_init (GogRendererClass *renderer_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *)renderer_klass;
+
+	parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize	    = gog_renderer_finalize;
+	gobject_klass->set_property = gog_renderer_set_property;
+	gobject_klass->get_property = gog_renderer_get_property;
+
+	renderer_klass->sharp_path = NULL;
+	renderer_klass->line_size = NULL;
+
+	g_object_class_install_property (gobject_klass, RENDERER_PROP_MODEL,
+		g_param_spec_object ("model", "model",
+			"the GogGraph this renderer displays",
+			GOG_GRAPH_TYPE, G_PARAM_READWRITE));
+	g_object_class_install_property (gobject_klass, RENDERER_PROP_VIEW,
+		g_param_spec_object ("view", "view",
+			"the GogView this renderer is displaying",
+			GOG_VIEW_TYPE, G_PARAM_READABLE));
+	g_object_class_install_property (gobject_klass, RENDERER_PROP_ZOOM,
+		g_param_spec_double ("zoom", "zoom Height Pts",
+			"global scale factor",
+			1., G_MAXDOUBLE, 1., G_PARAM_READWRITE));
+
+	renderer_signals [RENDERER_SIGNAL_REQUEST_UPDATE] = g_signal_new ("request-update",
+		G_TYPE_FROM_CLASS (renderer_klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogRendererClass, request_update),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__VOID,
+		G_TYPE_NONE, 0);
+}
+
+static void
+gog_renderer_init (GogRenderer *rend)
+{
+	rend->cur_clip = NULL;
+	rend->clip_stack = NULL;
+
+	rend->line_dash = NULL;
+	rend->outline_dash = NULL;
+
+	rend->needs_update = FALSE;
+	rend->cur_style    = NULL;
+	rend->style_stack  = NULL;
+	rend->zoom = rend->scale = rend->scale_x = rend->scale_y = 1.;
+	rend->font_watcher = g_cclosure_new_swap (G_CALLBACK (cb_font_removed),
+		rend, NULL);
+	go_font_cache_register (rend->font_watcher);
+}
+
+GSF_CLASS (GogRenderer, gog_renderer,
+	   gog_renderer_class_init, gog_renderer_init,
+	   G_TYPE_OBJECT)
+
+/**
+ * gog_renderer_draw_rectangle :
+ * @renderer : #GogRenderer
+ * @rect : #GogViewAllocation
+ *
+ * A utility routine to build a vpath in @rect.
+ **/
+static void
+draw_rectangle (GogRenderer *rend, GogViewAllocation const *rect, gboolean sharp)
+{
+	gboolean const narrow = (rect->w < 3.) || (rect->h < 3.);
+	double o, o_2;
+	ArtVpath path[6];
+
+	if (!narrow) {
+		o = gog_renderer_line_size (rend, rend->cur_style->outline.width);
+		o_2 = o / 2.;
+	} else
+		o = o_2 = 0.;
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[2].code = ART_LINETO;
+	path[3].code = ART_LINETO;
+	path[4].code = ART_LINETO;
+	path[5].code = ART_END;
+	path[0].x = path[1].x = path[4].x = rect->x + o_2;
+	path[2].x = path[3].x = path[0].x + rect->w - o;
+	path[0].y = path[3].y = path[4].y = rect->y + o_2; 
+	path[1].y = path[2].y = path[0].y + rect->h - o; 
+
+	if (sharp)
+		gog_renderer_draw_sharp_polygon (rend, path, narrow);
+	else
+		gog_renderer_draw_polygon (rend, path, narrow);
+}
+
+void
+gog_renderer_draw_sharp_rectangle (GogRenderer *rend, GogViewAllocation const *rect)
+{
+	draw_rectangle (rend, rect, TRUE);
+}
+
+void
+gog_renderer_draw_rectangle (GogRenderer *rend, GogViewAllocation const *rect)
+{
+	draw_rectangle (rend, rect, FALSE);
+}
+
+double
+gog_renderer_line_size (GogRenderer const *rend, double width)
+{
+	GogRendererClass *klass = GOG_RENDERER_GET_CLASS (rend);
+
+	if (klass->line_size)
+		return (klass->line_size) (rend, width);
+	
+	if (go_sub_epsilon (width) <= 0.)
+		width = GOG_RENDERER_HAIR_LINE_WIDTH;
+	return width * rend->scale;
+}
+
+double
+gog_renderer_pt2r_x (GogRenderer const *rend, double d)
+{
+	return d * rend->scale_x;
+}
+
+double
+gog_renderer_pt2r_y (GogRenderer const *rend, double d)
+{
+	return d * rend->scale_y;
+}
+
+double
+gog_renderer_pt2r (GogRenderer const *rend, double d)
+{
+	return d * rend->scale;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-renderer.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,87 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-renderer.h : An abstract interface for rendering engines
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_RENDERER_H
+#define GOG_RENDERER_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/utils/go-geometry.h>
+#include <gtk/gtkenums.h>
+#include <libart_lgpl/libart.h>
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
+
+#define GOG_RENDERER_TYPE	  (gog_renderer_get_type ())
+#define GOG_RENDERER(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GOG_RENDERER_TYPE, GogRenderer))
+#define IS_GOG_RENDERER(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GOG_RENDERER_TYPE))
+#define GOG_RENDERER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GOG_RENDERER_TYPE, GogRendererClass))
+
+GType gog_renderer_get_type            (void); 
+
+void  gog_renderer_request_update (GogRenderer *r);
+
+void  gog_renderer_push_style     (GogRenderer *r, GogStyle const *style);
+void  gog_renderer_pop_style      (GogRenderer *r);
+
+void  gog_renderer_push_clip 	  (GogRenderer *r, ArtVpath *path);
+void  gog_renderer_pop_clip       (GogRenderer *r);
+
+ArtVpath * gog_renderer_get_rectangle_vpath 	(GogViewAllocation const *rect);
+ArtBpath * gog_renderer_get_ring_wedge_bpath	(double cx, double cy, 
+						 double rx_out, double ry_out,
+						 double rx_in, double ry_in,
+						 double th0, double th1);
+
+void  gog_renderer_draw_sharp_path	(GogRenderer *r, ArtVpath *path);
+void  gog_renderer_draw_sharp_polygon   (GogRenderer *r, ArtVpath *path, gboolean narrow);
+void  gog_renderer_draw_sharp_rectangle (GogRenderer *r, GogViewAllocation const *rect);
+
+void  gog_renderer_draw_ring_wedge  	(GogRenderer *r, double cx, double cy, 
+					 double rx_out, double ry_out,
+					 double rx_in, double ry_in,
+					 double th0, double th1, gboolean narrow);
+void  gog_renderer_draw_path      	(GogRenderer *r, ArtVpath const *path);
+void  gog_renderer_draw_polygon   	(GogRenderer *r, ArtVpath const *path, gboolean narrow);
+void  gog_renderer_draw_rectangle 	(GogRenderer *r, GogViewAllocation const *rect);
+void  gog_renderer_draw_bezier_path     (GogRenderer *r, ArtBpath const *path);
+
+void  gog_renderer_draw_text	  (GogRenderer *rend, char const *text,
+				   GogViewAllocation const *pos, GtkAnchorType anchor,
+				   GogViewAllocation *result);
+void  gog_renderer_draw_marker	  (GogRenderer *rend, double x, double y);
+
+void  gog_renderer_get_text_OBR   (GogRenderer *rend, char const *text, GOGeometryOBR *obr);
+void  gog_renderer_get_text_AABR  (GogRenderer *rend, char const *text, GOGeometryAABR *aabr);
+
+#define gog_renderer_draw_arc(r,cx,cy,rx,ry,th0,th1) \
+	gog_renderer_draw_ring_wedge (r,cx,cy,rx,ry,-1.,-1.,th0,th1,FALSE)
+#define gog_renderer_draw_pie_wedge(r,cx,cy,rx,ry,th0,th1,narrow) \
+	gog_renderer_draw_ring_wedge (r,cx,cy,rx,ry,0.,0.,th0,th1,narrow)
+
+/* measurement */
+double gog_renderer_line_size	  	(GogRenderer const *r, double width);
+double gog_renderer_pt2r_x   	  	(GogRenderer const *r, double d);
+double gog_renderer_pt2r_y   	  	(GogRenderer const *r, double d);
+double gog_renderer_pt2r   	  	(GogRenderer const *r, double d);
+
+G_END_DECLS
+
+#endif /* GOG_RENDERER_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,110 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-series-impl.h :  
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GO_SERIES_IMPL_H
+#define GO_SERIES_IMPL_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/graph/gog-series.h>
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/graph/gog-style.h>
+#include <glib-object.h>
+#include <gtk/gtknotebook.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GogStyledObject base;
+
+	unsigned index;
+} GogSeriesElement;
+
+typedef struct {
+	GogStyledObjectClass base;
+	
+	/* Virtuals */
+	gpointer (*gse_populate_editor) (GogObject *gobj, 
+					 GogEditor *editor, 
+					 GOCmdContext *cc);
+} GogSeriesElementClass;
+
+#define GOG_SERIES_ELEMENT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_SERIES_ELEMENT_TYPE, GogSeriesElementClass))
+
+typedef enum {
+	GOG_SERIES_REQUIRED,  /* it must be there */
+	GOG_SERIES_SUGGESTED, /* allocator will fill it in, but use need not */
+	GOG_SERIES_OPTIONAL,
+	GOG_SERIES_ERRORS
+} GogSeriesPriority;
+
+#define GOG_SERIES_ACCEPT_REGRESSION_CURVE	1
+
+struct _GogSeriesDimDesc {
+	char const *name;
+	GogSeriesPriority	priority;
+	gboolean		is_shared;
+	GogDimType		val_type;
+	GogMSDimType		ms_type;
+};
+
+struct _GogSeriesDesc {
+	unsigned style_fields;
+	unsigned num_dim;
+	GogSeriesDimDesc const *dim;
+};
+
+struct _GogSeries {
+	GogStyledObject base;
+
+	int index;
+	unsigned manual_index : 1;
+	unsigned is_valid     : 1;
+	unsigned needs_recalc : 1;
+	unsigned acceptable_children : 1;
+
+	GogPlot	  	  *plot;
+	GogDatasetElement *values;
+	gboolean	   has_legend;
+	unsigned   	   num_elements;
+	GList		  *overrides;  /* GogSeriesElement (individual points) */
+};
+
+typedef struct {
+	GogStyledObjectClass base;
+
+	GType		series_element_type;
+
+	/* Virtuals */
+	void (*dim_changed) (GogSeries *series, int dim_i);
+} GogSeriesClass;
+
+#define GOG_SERIES_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOG_SERIES_TYPE, GogSeriesClass))
+#define IS_GOG_SERIES_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_SERIES_TYPE))
+#define GOG_SERIES_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_SERIES_TYPE, GogSeriesClass))
+
+/* protected */
+void gog_series_check_validity   (GogSeries *series);
+GogSeriesElement *gog_series_get_element (GogSeries const *series, int index);
+
+G_END_DECLS
+
+#endif /* GO_SERIES_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,99 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-series-lines.c :  
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ *  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 Library 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-plot.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/utils/go-marker.h>
+#include "gog-series-lines.h"
+
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static void
+gog_series_lines_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogStyle *parent_style = gog_styled_object_get_style (
+			GOG_STYLED_OBJECT (gog_object_get_parent (GOG_OBJECT (gso))));
+	GogPlot *plot  = GOG_PLOT (GOG_SERIES (
+						gog_object_get_parent (GOG_OBJECT (gso)))->plot);
+	char const *plot_name = G_OBJECT_TYPE_NAME (plot);
+	style->interesting_fields =
+		(parent_style->interesting_fields & GOG_STYLE_MARKER ||
+		(!strcmp (plot_name, "GogBarColPlot") && strcmp (plot_name, "GogDropBarPlot")))?
+			GOG_STYLE_LINE:
+			GOG_STYLE_LINE | GOG_STYLE_MARKER;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+gog_series_lines_update (GogObject *obj)
+{
+	gog_object_request_update (obj->parent);
+}
+
+static void
+gog_series_lines_changed (GogObject *obj, gboolean size)
+{
+	gog_object_emit_changed (obj->parent, size);
+}
+
+static void
+gog_series_lines_class_init (GogObjectClass *klass)
+{
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+
+	klass->update = gog_series_lines_update;
+	klass->changed = gog_series_lines_changed;
+	style_klass->init_style = gog_series_lines_init_style;
+}
+
+GSF_CLASS (GogSeriesLines, gog_series_lines,
+	gog_series_lines_class_init, NULL,
+	GOG_STYLED_OBJECT_TYPE)
+
+void
+gog_series_lines_render (GogSeriesLines *lines, GogRenderer *rend, GogViewAllocation const *bbox, ArtVpath *path, gboolean invert)
+{
+	int i = 0;
+	GogStyle *style = gog_styled_object_get_style (GOG_STYLED_OBJECT (lines));
+
+	if (invert) {
+		style = gog_style_dup (style);
+		style->line.color ^= 0xffffff00;
+		style->marker.mark->outline_color ^= 0xffffff00;
+		style->marker.mark->fill_color ^= 0xffffff00;
+	}
+	gog_renderer_push_style (rend, style);
+	gog_renderer_draw_sharp_path (rend, path);
+	if ((style->interesting_fields & GOG_STYLE_MARKER) != 0)
+		while (path[i].code != ART_END) {
+			gog_renderer_draw_marker (rend, path[i].x, path[i].y);
+			i++;
+		}
+	gog_renderer_pop_style (rend);
+	if (invert)
+		g_object_unref (style);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series-lines.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-series-lines.h :  
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ *  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 Library 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#ifndef GOG_SERIES_LINES_H
+#define GOG_SERIES_LINES_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <libart_lgpl/libart.h>
+
+typedef GogStyledObject GogSeriesLines;
+typedef GogStyledObjectClass GogSeriesLinesClass;
+
+#define GOG_SERIES_LINES_TYPE		(gog_series_lines_get_type ())
+#define GOG_SERIES_LINES(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_SERIES_LINES_TYPE, GogSeriesLines))
+#define IS_GOG_SERIES_LINES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_SERIES_LINES_TYPE))
+
+GType gog_series_lines_get_type (void);
+void  gog_series_lines_register_type (GTypeModule *module);
+void gog_series_lines_render (GogSeriesLines *lines, GogRenderer *rend, GogViewAllocation const *bbox, ArtVpath *path, gboolean invert);
+
+ #endif	/* GOG_SERIES_LINES_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,832 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-graph-data.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/graph/gog-data-allocator.h>
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-error-bar.h>
+#include <goffice/data/go-data.h>
+#include <goffice/gtk/goffice-gtk.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkhseparator.h>
+#include <gtk/gtknotebook.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtkcheckbutton.h>
+
+#include <string.h>
+
+int gog_series_get_valid_element_index (GogSeries const *series, int old_index, int desired_index);
+
+/*****************************************************************************/
+static GObjectClass *gse_parent_klass;
+
+enum {
+	ELEMENT_PROP_0,
+	ELEMENT_INDEX
+};
+
+static gint element_compare (GogSeriesElement *gse_a, GogSeriesElement *gse_b)
+{
+	return gse_a->index - gse_b->index;
+}
+
+static void
+gog_series_element_set_index (GogSeriesElement *gse, int ind)
+{
+	gse->index = ind;
+	gog_styled_object_apply_theme (&gse->base, gse->base.style);
+	gog_styled_object_style_changed (&gse->base);
+}
+
+static void
+gog_series_element_set_property (GObject *obj, guint param_id,
+				 GValue const *value, GParamSpec *pspec)
+{
+	GogSeriesElement *gse = GOG_SERIES_ELEMENT (obj);
+	GogObject *gobj = GOG_OBJECT (obj);
+
+	switch (param_id) {
+	case ELEMENT_INDEX :
+		gog_series_element_set_index (gse, g_value_get_int (value));
+		if (gobj->parent != NULL) {
+			GogSeries *series = GOG_SERIES (gobj->parent);
+			series->overrides = g_list_remove (series->overrides, gse);
+			series->overrides = g_list_insert_sorted (series->overrides, gse,
+				(GCompareFunc) element_compare);
+		}
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_series_element_get_property (GObject *obj, guint param_id,
+				 GValue *value, GParamSpec *pspec)
+{
+	GogSeriesElement *gse = GOG_SERIES_ELEMENT (obj);
+
+	switch (param_id) {
+	case ELEMENT_INDEX :
+		g_value_set_int (value, gse->index);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+cb_index_changed (GtkSpinButton *spin_button, GogSeriesElement *element)
+{
+	int index;
+	int value = gtk_spin_button_get_value (spin_button);
+
+	if ((int) element->index == value)
+		return;
+
+	index = gog_series_get_valid_element_index (
+		GOG_SERIES (gog_object_get_parent (GOG_OBJECT (element))),
+		element->index, value);
+
+	if (index != value)
+		gtk_spin_button_set_value (spin_button, index);
+
+	g_object_set (element, "index", (int) index, NULL);
+}
+
+static void
+gog_series_element_populate_editor (GogObject *gobj,
+				    GogEditor *editor,
+			   GogDataAllocator *dalloc,
+			   GOCmdContext *cc)
+{
+	static guint series_element_pref_page = 1;
+	GtkWidget *w, *gse_vbox = NULL, *spin_button = NULL, *vbox;
+	GogSeriesElementClass *klass = GOG_SERIES_ELEMENT_GET_CLASS (gobj);
+
+	if (klass->gse_populate_editor)
+		gse_vbox = (*klass->gse_populate_editor) (gobj, editor, cc);
+
+	(GOG_OBJECT_CLASS(gse_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+
+	w = gtk_hbox_new (FALSE, 12);
+	gtk_box_pack_start (GTK_BOX (w), gtk_label_new (_("Index:")),
+			    FALSE, FALSE, 0);
+	spin_button = gtk_spin_button_new_with_range (0, G_MAXINT, 1);
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin_button),
+				   GOG_SERIES_ELEMENT(gobj)->index);
+	g_signal_connect (G_OBJECT (spin_button),
+			  "value_changed",
+			  G_CALLBACK (cb_index_changed), gobj);
+	gtk_box_pack_start(GTK_BOX (w), spin_button, FALSE, FALSE, 0);
+	if (gse_vbox == NULL) {
+		vbox = gtk_vbox_new (FALSE, 6);
+		gtk_container_set_border_width (GTK_CONTAINER (vbox), 12);
+	} else 
+		vbox = gse_vbox;
+	gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
+	gtk_box_reorder_child (GTK_BOX (vbox), w, 0);
+	gtk_widget_show_all (vbox);
+
+	if (gse_vbox == NULL)
+		gog_editor_add_page (editor, vbox, _("Settings"));
+
+	gog_editor_set_store_page (editor, &series_element_pref_page);
+}
+
+static void
+gog_series_element_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogSeries const *series = GOG_SERIES (GOG_OBJECT (gso)->parent);
+	GogStyle *parent_style;
+
+	g_return_if_fail (series != NULL);
+
+	parent_style = gog_styled_object_get_style (GOG_STYLED_OBJECT (series));
+	style->interesting_fields = parent_style->interesting_fields;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), GOG_SERIES_ELEMENT (gso)->index, FALSE);
+}
+
+static void
+gog_series_element_class_init (GogSeriesElementClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+	gse_parent_klass = g_type_class_peek_parent (klass);
+
+	gobject_klass->set_property = gog_series_element_set_property;
+	gobject_klass->get_property = gog_series_element_get_property;
+
+	gog_klass->populate_editor 	= gog_series_element_populate_editor;
+	style_klass->init_style	    	= gog_series_element_init_style;
+
+	gog_klass->use_parent_as_proxy  = TRUE;
+
+	g_object_class_install_property (gobject_klass, ELEMENT_INDEX,
+		g_param_spec_int ("index", "index",
+			"Index of the corresponding data element",
+			0, G_MAXINT, 0,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT | GOG_PARAM_FORCE_SAVE));
+}
+
+GSF_CLASS (GogSeriesElement, gog_series_element,
+	   gog_series_element_class_init, NULL /*gog_series_element_init*/,
+	   GOG_STYLED_OBJECT_TYPE)
+
+/*****************************************************************************/
+
+static gboolean
+regression_curve_can_add (GogObject const *parent)
+{
+	GogSeries *series = GOG_SERIES (parent);
+	return (series->acceptable_children & GOG_SERIES_ACCEPT_REGRESSION_CURVE) != 0;
+}
+
+static void
+regression_curve_post_add (GogObject *parent, GogObject *child)
+{
+	gog_object_request_update (child);
+}
+
+static void
+regression_curve_pre_remove (GogObject *parent, GogObject *child)
+{
+}
+
+/*****************************************************************************/
+
+static GObjectClass *series_parent_klass;
+
+enum {
+	SERIES_PROP_0,
+	SERIES_HAS_LEGEND
+};
+
+static gboolean
+role_series_element_can_add (GogObject const *parent)
+{
+	GogSeriesClass *klass = GOG_SERIES_GET_CLASS (parent);
+
+	return ((gog_series_get_valid_element_index(GOG_SERIES (parent), -1, 0) >= 0) &&
+		(klass->series_element_type > 0));
+}
+
+static GogObject *
+role_series_element_allocate (GogObject *series)
+{
+	GogSeriesClass *klass = GOG_SERIES_GET_CLASS (series);
+	GType type = klass->series_element_type;
+	GogObject *gse;
+
+	if (type == 0)
+		type = GOG_SERIES_ELEMENT_TYPE;
+
+	gse = g_object_new (type, NULL);
+	if (gse != NULL)
+		gog_series_element_set_index (GOG_SERIES_ELEMENT (gse),
+			gog_series_get_valid_element_index (GOG_SERIES (series), -1, 0));
+	return gse;
+}
+
+static void
+role_series_element_post_add (GogObject *parent, GogObject *child)
+{
+	GogSeries *series = GOG_SERIES (parent);
+	gog_styled_object_set_style (GOG_STYLED_OBJECT (child),
+		gog_styled_object_get_style (GOG_STYLED_OBJECT (parent)));
+	series->overrides = g_list_insert_sorted (series->overrides, child,
+		(GCompareFunc) element_compare);
+}
+
+static void
+role_series_element_pre_remove (GogObject *parent, GogObject *child)
+{
+	GogSeries *series = GOG_SERIES (parent);
+	series->overrides = g_list_remove (series->overrides, child);
+}
+
+static void
+gog_series_finalize (GObject *obj)
+{
+	GogSeries *series = GOG_SERIES (obj);
+
+	if (series->values != NULL) {
+		gog_dataset_finalize (GOG_DATASET (obj));
+		g_free (series->values - 1); /* it was aliased */
+		series->values = NULL;
+	}
+
+	g_list_free (series->overrides);
+
+	(*series_parent_klass->finalize) (obj);
+}
+
+static void
+gog_series_set_property (GObject *obj, guint param_id,
+			 GValue const *value, GParamSpec *pspec)
+{
+	GogSeries *series = GOG_SERIES (obj);
+	gboolean b_tmp;
+
+	switch (param_id) {
+	case SERIES_HAS_LEGEND :
+		b_tmp = g_value_get_boolean (value);
+		if (series->has_legend ^ b_tmp) {
+			series->has_legend = b_tmp;
+			if (series->plot != NULL)
+				gog_plot_request_cardinality_update (series->plot);
+		}
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_series_get_property (GObject *obj, guint param_id,
+			 GValue *value, GParamSpec *pspec)
+{
+	GogSeries *series = GOG_SERIES (obj);
+
+	switch (param_id) {
+	case SERIES_HAS_LEGEND :
+		g_value_set_boolean (value, series->has_legend);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static unsigned
+make_dim_editor (GtkTable *table, unsigned row, GtkWidget *editor,
+		 char const *name, GogSeriesPriority priority, gboolean is_shared)
+{
+	char *txt = g_strdup_printf (
+		((priority != GOG_SERIES_REQUIRED) ? "(_%s):" : "_%s:"), _(name));
+	GtkWidget *label = gtk_label_new_with_mnemonic (txt);
+	g_free (txt);
+
+	gtk_table_attach (table, label,
+		0, 1, row, row+1, GTK_FILL, 0, 0, 0);
+	gtk_table_attach (table, editor,
+		1, 2, row, row+1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+	gtk_label_set_mnemonic_widget (GTK_LABEL (label), editor);
+	gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+
+	go_atk_setup_label (label, editor);
+
+	return row + 1;
+}
+
+static void
+cb_show_in_legend (GtkToggleButton *b, GObject *series)
+{
+	g_object_set (series,
+		"has-legend", gtk_toggle_button_get_active (b),
+		NULL);
+}
+
+static void
+gog_series_populate_editor (GogObject *gobj,
+			    GogEditor *editor,
+		   GogDataAllocator *dalloc,
+		   GOCmdContext *cc)
+{
+	static guint series_pref_page = 1;
+	GtkWidget *w;
+	GtkTable  *table;
+	unsigned i, row = 0;
+	gboolean has_shared = FALSE;
+	GogSeries *series = GOG_SERIES (gobj);
+	GogDataset *set = GOG_DATASET (gobj);
+	GogSeriesDesc const *desc;
+	GogDataType data_type;
+
+	g_return_if_fail (series->plot != NULL);
+
+	/* Are there any shared dimensions */
+	desc = &series->plot->desc.series;
+	for (i = 0; i < desc->num_dim; i++)
+		if (desc->dim[i].is_shared) {
+			has_shared = TRUE;
+			break;
+		}
+
+	w = gtk_table_new (desc->num_dim + (has_shared ? 2 : 1), 2, FALSE);
+	table = GTK_TABLE (w);
+	gtk_table_set_row_spacings (table, 6);
+	gtk_table_set_col_spacings (table, 12);
+	gtk_container_set_border_width (GTK_CONTAINER (table), 12);
+
+	row = make_dim_editor (table, row,
+		gog_data_allocator_editor (dalloc, set, -1, GOG_DATA_SCALAR),
+		N_("Name"), TRUE, FALSE);
+
+	/* first the unshared entries */
+	for (i = 0; i < desc->num_dim; i++) {
+		data_type = (desc->dim[i].val_type == GOG_DIM_MATRIX)?
+				GOG_DATA_MATRIX: GOG_DATA_VECTOR;
+		if (!desc->dim[i].is_shared && (desc->dim[i].priority != GOG_SERIES_ERRORS))
+			row = make_dim_editor (table, row,
+				gog_data_allocator_editor (dalloc, set, i, data_type),
+				desc->dim[i].name, desc->dim[i].priority, FALSE);
+	}
+
+	if (has_shared) {
+		gtk_table_attach (table, gtk_hseparator_new (),
+			0, 2, row, row+1, GTK_FILL, 0, 0, 0);
+		row++;
+	}
+
+	/* then the shared entries */
+	for (i = 0; i < desc->num_dim; i++) {
+		data_type = (desc->dim[i].val_type == GOG_DIM_MATRIX)?
+				GOG_DATA_MATRIX: GOG_DATA_VECTOR;
+		if (desc->dim[i].is_shared)
+			row = make_dim_editor (table, row,
+				gog_data_allocator_editor (dalloc, set, i, data_type),
+				desc->dim[i].name, desc->dim[i].priority, TRUE);
+	}
+
+	gtk_table_attach (table, gtk_hseparator_new (),
+		0, 2, row, row+1, GTK_FILL, 0, 0, 0);
+	row++;
+	w = gtk_check_button_new_with_mnemonic ("_Show in Legend");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),
+		gog_series_has_legend (series));
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_show_in_legend), series);
+	gtk_table_attach (table, w,
+		0, 2, row, row+1, GTK_FILL, 0, 0, 0);
+	gtk_widget_show_all (GTK_WIDGET (table));
+
+	gog_editor_add_page (editor, GTK_WIDGET (table), _("Data"));
+
+	(GOG_OBJECT_CLASS(series_parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+
+	gog_editor_set_store_page (editor, &series_pref_page);
+}
+
+static void
+gog_series_update (GogObject *obj)
+{
+	GogSeries *series = GOG_SERIES (obj);
+	series->needs_recalc = FALSE;
+}
+
+static void
+gog_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogSeries const *series = (GogSeries const *)gso;
+	style->interesting_fields = series->plot->desc.series.style_fields;
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), series->index, FALSE);
+}
+
+static void
+gog_series_class_init (GogSeriesClass *klass)
+{
+	static GogObjectRole const roles[] = {
+		{ N_("Point"), "GogSeriesElement",	0,
+		  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+		  role_series_element_can_add, NULL,
+		  role_series_element_allocate,
+		  role_series_element_post_add,
+		  role_series_element_pre_remove, NULL },
+		{ N_("Regression curve"), "GogRegCurve",	1,
+		  GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_TYPE,
+		  regression_curve_can_add,
+		  NULL,
+		  NULL,
+		  regression_curve_post_add,
+		  regression_curve_pre_remove,
+		  NULL },
+	};
+
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+
+	series_parent_klass = g_type_class_peek_parent (klass);
+	gobject_klass->finalize		= gog_series_finalize;
+	gobject_klass->set_property	= gog_series_set_property;
+	gobject_klass->get_property	= gog_series_get_property;
+
+	gog_klass->populate_editor	= gog_series_populate_editor;
+	gog_klass->update		= gog_series_update;
+	style_klass->init_style 	= gog_series_init_style;
+	/* series do not have views, so just forward signals from the plot */
+	gog_klass->use_parent_as_proxy  = TRUE;
+
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+
+	g_object_class_install_property (gobject_klass, SERIES_HAS_LEGEND,
+		g_param_spec_boolean ("has-legend", "has-legend",
+			"Should the series show up in legends",
+			TRUE,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_series_init (GogSeries *series)
+{
+	series->is_valid = FALSE;
+	series->has_legend = TRUE;
+	series->plot = NULL;
+	series->values = NULL;
+	series->index = -1;
+	series->acceptable_children = 0;
+}
+
+static void
+gog_series_dataset_dims (GogDataset const *set, int *first, int *last)
+{
+	GogSeries const *series = GOG_SERIES (set);
+	*first = -1;
+	if (series->plot == NULL || series->values == NULL)
+		*last = -2;
+	else
+		*last = (series->plot->desc.series.num_dim - 1);
+}
+
+static GogDatasetElement *
+gog_series_dataset_get_elem (GogDataset const *set, int dim_i)
+{
+	GogSeries const *series = GOG_SERIES (set);
+	g_return_val_if_fail ((int)series->plot->desc.series.num_dim > dim_i, NULL);
+	g_return_val_if_fail (dim_i >= -1, NULL);
+	return series->values + dim_i;
+}
+
+static void
+gog_series_dataset_set_dim (GogDataset *set, int dim_i,
+			    GOData *val, GError **err)
+{
+	GogSeriesDesc const *desc;
+	GogSeries *series = GOG_SERIES (set);
+	GogGraph *graph = gog_object_get_graph (GOG_OBJECT (series));
+
+	g_return_if_fail (GOG_PLOT (series->plot) != NULL);
+
+	if (dim_i < 0) {
+		char *name = NULL;
+		if (NULL != series->values[-1].data)
+			name = g_strdup (go_data_scalar_get_str (
+				GO_DATA_SCALAR (series->values[-1].data)));
+		gog_object_set_name (GOG_OBJECT (series), name, err);
+		return;
+	}
+
+	gog_series_check_validity (series);
+
+	/* clone shared dimensions into other series in the plot, and
+	 * invalidate if necessary */
+	desc = &series->plot->desc.series;
+	if (desc->dim[dim_i].is_shared) {
+		GSList *ptr = series->plot->series;
+
+		val = series->values[dim_i].data;
+		for (; ptr != NULL ; ptr = ptr->next) {
+			gog_dataset_set_dim_internal (GOG_DATASET (ptr->data),
+				dim_i, val, graph);
+			gog_series_check_validity (GOG_SERIES (ptr->data));
+		}
+	}
+}
+
+static void
+gog_series_dataset_dim_changed (GogDataset *set, int dim_i)
+{
+	GogSeries *series = GOG_SERIES (set);
+
+	if (dim_i >= 0) {
+		GogSeriesClass	*klass = GOG_SERIES_GET_CLASS (set);
+		GogPlot *plot = GOG_PLOT (GOG_OBJECT (set)->parent);
+		/* FIXME: we probaly need a signal which will be connected
+		 * to axis and legend objects and let them check if resize
+		 * is really needed (similar to child-name-changed
+		 * connected to legend). For now, let resize for every label
+		 * change */
+		gboolean resize = plot != NULL ?
+			plot->desc.series.dim[dim_i].val_type == GOG_DIM_LABEL :
+			FALSE;
+
+		if (!series->needs_recalc) {
+			series->needs_recalc = TRUE;
+			gog_object_emit_changed (GOG_OBJECT (set), resize);
+		}
+		if (klass->dim_changed != NULL)
+			(klass->dim_changed) (GOG_SERIES (set), dim_i);
+
+		gog_object_request_update (GOG_OBJECT (set));
+	} else {
+		GOData *name_src = series->values[-1].data;
+		char const *name = (name_src != NULL)
+			? go_data_scalar_get_str (GO_DATA_SCALAR (name_src)) : NULL;
+		gog_object_set_name (GOG_OBJECT (set), g_strdup (name), NULL);
+	}
+}
+
+static void
+gog_series_dataset_init (GogDatasetClass *iface)
+{
+	iface->get_elem	   = gog_series_dataset_get_elem;
+	iface->set_dim	   = gog_series_dataset_set_dim;
+	iface->dims	   = gog_series_dataset_dims;
+	iface->dim_changed = gog_series_dataset_dim_changed;
+}
+
+GSF_CLASS_FULL (GogSeries, gog_series,
+		NULL, NULL, gog_series_class_init, NULL,
+		gog_series_init, GOG_STYLED_OBJECT_TYPE, 0,
+		GSF_INTERFACE (gog_series_dataset_init, GOG_DATASET_TYPE))
+
+/**
+ * gog_series_get_plot :
+ * @series : #GogSeries
+ *
+ * Returns the possibly NULL plot that contains this series.
+ **/
+GogPlot *
+gog_series_get_plot (GogSeries const *series)
+{
+	g_return_val_if_fail (GOG_SERIES (series) != NULL, NULL);
+	return series->plot;
+}
+
+/**
+ * gog_series_is_valid :
+ * @series : #GogSeries
+ *
+ * Returns the current cached validity.  Does not recheck
+ **/
+gboolean
+gog_series_is_valid (GogSeries const *series)
+{
+	g_return_val_if_fail (GOG_SERIES (series) != NULL, FALSE);
+	return series->is_valid;
+}
+
+/**
+ * gog_series_check_validity :
+ * @series : #GogSeries
+ *
+ * Updates the is_valid flag for a series.
+ * This is an internal utility that should not really be necessary for general
+ * usage.
+ **/
+void
+gog_series_check_validity (GogSeries *series)
+{
+	unsigned i;
+	GogSeriesDesc const *desc;
+
+	g_return_if_fail (GOG_SERIES (series) != NULL);
+	g_return_if_fail (GOG_PLOT (series->plot) != NULL);
+
+	desc = &series->plot->desc.series;
+	for (i = series->plot->desc.series.num_dim; i-- > 0; )
+		if (series->values[i].data == NULL &&
+		    desc->dim[i].priority == GOG_SERIES_REQUIRED) {
+			series->is_valid = FALSE;
+			return;
+		}
+	series->is_valid = TRUE;
+}
+
+/**
+ * gog_series_has_legend :
+ * @series : #GogSeries
+ *
+ * Returns TRUE if the series has a visible legend entry
+ **/
+gboolean
+gog_series_has_legend (GogSeries const *series)
+{
+	g_return_val_if_fail (GOG_SERIES (series) != NULL, FALSE);
+	return series->has_legend;
+}
+
+/**
+ * gog_series_set_index :
+ * @series : #GogSeries
+ * @index :
+ * @is_manual :
+ *
+ * if @index >= 0 attempt to assign the new index.  Auto
+ * indicies (@is_manual == FALSE) will not override the current
+ * index if it is manual.  An @index < 0, will reset the index to
+ * automatic and potentially queue a revaluation of the parent
+ * chart's cardinality.
+ **/
+void
+gog_series_set_index (GogSeries *series, int ind, gboolean is_manual)
+{
+	g_return_if_fail (GOG_SERIES (series) != NULL);
+
+	if (ind < 0) {
+		if (series->manual_index && series->plot != NULL)
+			gog_plot_request_cardinality_update (series->plot);
+		series->manual_index = FALSE;
+		return;
+	}
+
+	if (is_manual)
+		series->manual_index = TRUE;
+	else if (series->manual_index)
+		return;
+
+	series->index = ind;
+	gog_styled_object_apply_theme (&series->base, series->base.style);
+	gog_styled_object_style_changed (GOG_STYLED_OBJECT (series));
+}
+
+/**
+ * gog_series_get_name :
+ * @series : #GogSeries
+ *
+ * Returns the _src_ of the name associated with the series
+ * NOTE : this is _NOT_ the actual name
+ * no references are added on the result.
+ **/
+GODataScalar *
+gog_series_get_name (GogSeries const *series)
+{
+	g_return_val_if_fail (GOG_SERIES (series) != NULL, NULL);
+	return GO_DATA_SCALAR (series->values[-1].data);
+}
+
+/**
+ * gog_series_set_name :
+ * @series : #GogSeries
+ * @name_src : #GOData
+ * @err : #Gerror
+ *
+ * Absorbs a ref to @name_src
+ **/
+void
+gog_series_set_name (GogSeries *series, GODataScalar *name_src, GError **err)
+{
+	gog_dataset_set_dim (GOG_DATASET (series),
+		-1, GO_DATA (name_src), NULL);
+}
+
+/**
+ * gog_series_set_dim :
+ * @series : #GogSeries
+ * @dim_i :
+ * @val   : #GOData
+ * @err : optional #Gerror pointer
+ *
+ * Absorbs a ref to @val
+ **/
+void
+gog_series_set_dim (GogSeries *series, int dim_i, GOData *val, GError **err)
+{
+	gog_dataset_set_dim (GOG_DATASET (series), dim_i, val, err);
+}
+
+/**
+ * gog_series_num_elements :
+ * @series : #GogSeries
+ *
+ * Returns the number of elements in the series
+ **/
+unsigned
+gog_series_num_elements (GogSeries const *series)
+{
+	return series->num_elements;
+}
+
+GList const *
+gog_series_get_overrides (GogSeries const *series)
+{
+	return series->overrides;
+}
+
+int
+gog_series_get_valid_element_index (GogSeries const *series, int old_index, int desired_index)
+{
+	int index;
+	GList *ptr;
+
+	g_return_val_if_fail (GOG_SERIES (series) != NULL, -1);
+
+	if ((desired_index >= (int) series->num_elements) ||
+	    (desired_index < 0))
+		return old_index;
+
+	if (desired_index > old_index)
+		for (ptr = series->overrides; ptr != NULL; ptr = ptr->next) {
+			index = GOG_SERIES_ELEMENT (ptr->data)->index;
+			if (index > desired_index)
+				break;
+			if (index == desired_index)
+				desired_index++;
+		}
+	else
+		for (ptr = g_list_last (series->overrides); ptr != NULL; ptr = ptr->prev) {
+			index = GOG_SERIES_ELEMENT (ptr->data)->index;
+			if (index < desired_index)
+				break;
+			if (index == desired_index)
+				desired_index--;
+		}
+
+	if ((desired_index >= 0) &&
+	    (desired_index < (int) series->num_elements))
+		return desired_index;
+
+	return old_index;
+}
+
+GogSeriesElement *
+gog_series_get_element (GogSeries const *series, int index)
+{
+	GList *ptr;
+	GogSeriesElement *element;
+
+	g_return_val_if_fail (GOG_SERIES (series) != NULL, NULL);
+
+	for (ptr = series->overrides; ptr != NULL; ptr = ptr->next) {
+		element = GOG_SERIES_ELEMENT (ptr->data);
+		if ((int) element->index == index)
+			return element;
+	}
+	
+	return NULL;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-series.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,57 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-series.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_SERIES_H
+#define GOG_SERIES_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/data/goffice-data.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-styled-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_SERIES_ELEMENT_TYPE	(gog_series_element_get_type ())
+#define GOG_SERIES_ELEMENT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_SERIES_ELEMENT_TYPE, GogSeriesElement))
+#define IS_GOG_SERIES_ELEMENT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_SERIES_ELEMENT_TYPE))
+GType gog_series_element_get_type (void);
+
+#define GOG_SERIES_TYPE		(gog_series_get_type ())
+#define GOG_SERIES(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_SERIES_TYPE, GogSeries))
+#define IS_GOG_SERIES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_SERIES_TYPE))
+
+GType gog_series_get_type (void);
+gboolean      gog_series_is_valid   (GogSeries const *series);
+gboolean      gog_series_has_legend (GogSeries const *series);
+GODataScalar *gog_series_get_name   (GogSeries const *series);
+GogPlot	     *gog_series_get_plot   (GogSeries const *series);
+void	      gog_series_set_name   (GogSeries *series,
+				     GODataScalar *val, GError **err);
+void	      gog_series_set_dim    (GogSeries *series, int dim_i,
+				     GOData *val, GError **err);
+void	      gog_series_set_index  (GogSeries *series,
+				     int ind, gboolean is_manual);
+
+unsigned      	  gog_series_num_elements  (GogSeries const *series);
+GList const  	 *gog_series_get_overrides (GogSeries const *series);
+
+G_END_DECLS
+
+#endif /* GOG_SERIES_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1701 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="gog_style_prefs_window">
+  <property name="title" translatable="yes"></property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkHBox" id="gog_style_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">24</property>
+
+      <child>
+	<widget class="GtkVBox" id="outline_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="outline_label">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Outline&lt;/b&gt;</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkAlignment" id="alignment5">
+	      <property name="visible">True</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xscale">1</property>
+	      <property name="yscale">1</property>
+	      <property name="top_padding">6</property>
+	      <property name="bottom_padding">0</property>
+	      <property name="left_padding">18</property>
+	      <property name="right_padding">0</property>
+
+	      <child>
+		<widget class="GtkTable" id="outline_table">
+		  <property name="visible">True</property>
+		  <property name="n_rows">3</property>
+		  <property name="n_columns">3</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">6</property>
+		  <property name="column_spacing">12</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="outline_size_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Size:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">outline_size_spin</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSpinButton" id="outline_size_spin">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="climb_rate">1</property>
+		      <property name="digits">1</property>
+		      <property name="numeric">True</property>
+		      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+		      <property name="snap_to_ticks">False</property>
+		      <property name="wrap">False</property>
+		      <property name="adjustment">0 0 30 0.1 1 1</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label35">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">pts</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">2</property>
+		      <property name="right_attach">3</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="outline_color_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Co_lor:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label37">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">St_yle:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkVBox" id="line_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="line_label">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Line&lt;/b&gt;</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkAlignment" id="alignment6">
+	      <property name="visible">True</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xscale">1</property>
+	      <property name="yscale">1</property>
+	      <property name="top_padding">6</property>
+	      <property name="bottom_padding">0</property>
+	      <property name="left_padding">18</property>
+	      <property name="right_padding">0</property>
+
+	      <child>
+		<widget class="GtkTable" id="line_table">
+		  <property name="visible">True</property>
+		  <property name="n_rows">3</property>
+		  <property name="n_columns">3</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">6</property>
+		  <property name="column_spacing">12</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="line_color_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Co_lor:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="line_size_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Size:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">line_size_spin</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSpinButton" id="line_size_spin">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="climb_rate">1</property>
+		      <property name="digits">1</property>
+		      <property name="numeric">True</property>
+		      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+		      <property name="snap_to_ticks">False</property>
+		      <property name="wrap">False</property>
+		      <property name="adjustment">0 0 30 0.1 1 1</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label34">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">pts</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">2</property>
+		      <property name="right_attach">3</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label36">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">St_yle:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkVBox" id="fill_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="fill_label">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Fill&lt;/b&gt;</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkAlignment" id="alignment4">
+	      <property name="visible">True</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xscale">1</property>
+	      <property name="yscale">1</property>
+	      <property name="top_padding">6</property>
+	      <property name="bottom_padding">0</property>
+	      <property name="left_padding">18</property>
+	      <property name="right_padding">0</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox1">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">12</property>
+
+		  <child>
+		    <widget class="GtkHBox" id="hbox2">
+		      <property name="visible">True</property>
+		      <property name="homogeneous">False</property>
+		      <property name="spacing">12</property>
+
+		      <child>
+			<widget class="GtkLabel" id="fill_type_label">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes">_Type:</property>
+			  <property name="use_underline">True</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="mnemonic_widget">fill_type_menu</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkComboBox" id="fill_type_menu">
+			  <property name="visible">True</property>
+			  <property name="items" translatable="yes">None
+Pattern
+Gradient
+Image</property>
+			  <property name="add_tearoffs">False</property>
+			  <property name="focus_on_click">True</property>
+			</widget>
+			<packing>
+			  <property name="padding">0</property>
+			  <property name="expand">False</property>
+			  <property name="fill">True</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkHSeparator" id="hseparator1">
+		      <property name="visible">True</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkNotebook" id="fill_notebook">
+		      <property name="visible">True</property>
+		      <property name="show_tabs">False</property>
+		      <property name="show_border">False</property>
+		      <property name="tab_pos">GTK_POS_TOP</property>
+		      <property name="scrollable">False</property>
+		      <property name="enable_popup">False</property>
+
+		      <child>
+			<widget class="GtkLabel" id="label31">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="tab_expand">False</property>
+			  <property name="tab_fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label16">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">tab</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkTable" id="fill_pattern_table">
+			  <property name="visible">True</property>
+			  <property name="n_rows">3</property>
+			  <property name="n_columns">2</property>
+			  <property name="homogeneous">False</property>
+			  <property name="row_spacing">6</property>
+			  <property name="column_spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_pattern_type_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Pattern:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_pattern_foreground_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Foreground:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_pattern_background_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Background:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">2</property>
+			      <property name="bottom_attach">3</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="tab_expand">False</property>
+			  <property name="tab_fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label17">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">tab</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkTable" id="fill_gradient_table">
+			  <property name="visible">True</property>
+			  <property name="n_rows">4</property>
+			  <property name="n_columns">4</property>
+			  <property name="homogeneous">False</property>
+			  <property name="row_spacing">6</property>
+			  <property name="column_spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_gradient_direction_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Direction:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_gradient_start_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Start:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">2</property>
+			      <property name="bottom_attach">3</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_gradient_type_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">T_ype:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="mnemonic_widget">fill_gradient_type</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_gradient_end_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_End:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">2</property>
+			      <property name="right_attach">3</property>
+			      <property name="top_attach">2</property>
+			      <property name="bottom_attach">3</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkAlignment" id="alignment3">
+			      <property name="visible">True</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xscale">0</property>
+			      <property name="yscale">1</property>
+			      <property name="top_padding">0</property>
+			      <property name="bottom_padding">0</property>
+			      <property name="left_padding">0</property>
+			      <property name="right_padding">0</property>
+
+			      <child>
+				<widget class="GtkComboBox" id="fill_gradient_type">
+				  <property name="visible">True</property>
+				  <property name="items" translatable="yes">2 Colors
+Brightness</property>
+				  <property name="add_tearoffs">False</property>
+				  <property name="focus_on_click">True</property>
+				</widget>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">4</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkHBox" id="fill_gradient_brightness_box">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">6</property>
+
+			      <child>
+				<widget class="GtkLabel" id="label29">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">_brighter</property>
+				  <property name="use_underline">True</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">1</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="mnemonic_widget">fill_gradient_brightness</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkAlignment" id="alignment1">
+				  <property name="visible">True</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xscale">1</property>
+				  <property name="yscale">0</property>
+				  <property name="top_padding">0</property>
+				  <property name="bottom_padding">0</property>
+				  <property name="left_padding">0</property>
+				  <property name="right_padding">0</property>
+
+				  <child>
+				    <widget class="GtkHScale" id="fill_gradient_brightness">
+				      <property name="visible">True</property>
+				      <property name="can_focus">True</property>
+				      <property name="draw_value">False</property>
+				      <property name="value_pos">GTK_POS_TOP</property>
+				      <property name="digits">0</property>
+				      <property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
+				      <property name="inverted">False</property>
+				      <property name="adjustment">0 0 100 10 10 10</property>
+				    </widget>
+				  </child>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="label30">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes">_darker</property>
+				  <property name="use_underline">True</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="mnemonic_widget">fill_gradient_brightness</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">4</property>
+			      <property name="top_attach">3</property>
+			      <property name="bottom_attach">4</property>
+			      <property name="x_options">shrink|fill</property>
+			      <property name="y_options"></property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="tab_expand">False</property>
+			  <property name="tab_fill">True</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label18">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">tab</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkTable" id="fill_image_table">
+			  <property name="visible">True</property>
+			  <property name="n_rows">3</property>
+			  <property name="n_columns">3</property>
+			  <property name="homogeneous">False</property>
+			  <property name="row_spacing">6</property>
+			  <property name="column_spacing">12</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="fill_image_fit_label">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">_Fit:</property>
+			      <property name="use_underline">True</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="mnemonic_widget">fill_image_fit</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">shrink|fill</property>
+			      <property name="y_options">shrink</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkComboBox" id="fill_image_fit">
+			      <property name="visible">True</property>
+			      <property name="items" translatable="yes">stretched
+wallpaper</property>
+			      <property name="add_tearoffs">False</property>
+			      <property name="focus_on_click">True</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">1</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">1</property>
+			      <property name="x_options">shrink|fill</property>
+			      <property name="y_options">shrink</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkButton" id="fill_image_select_picture">
+			      <property name="visible">True</property>
+			      <property name="can_focus">True</property>
+			      <property name="relief">GTK_RELIEF_NORMAL</property>
+			      <property name="focus_on_click">True</property>
+
+			      <child>
+				<widget class="GtkAlignment" id="alignment2">
+				  <property name="visible">True</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xscale">0</property>
+				  <property name="yscale">0</property>
+				  <property name="top_padding">0</property>
+				  <property name="bottom_padding">0</property>
+				  <property name="left_padding">0</property>
+				  <property name="right_padding">0</property>
+
+				  <child>
+				    <widget class="GtkHBox" id="hbox4">
+				      <property name="visible">True</property>
+				      <property name="homogeneous">False</property>
+				      <property name="spacing">2</property>
+
+				      <child>
+					<widget class="GtkImage" id="image1">
+					  <property name="visible">True</property>
+					  <property name="stock">gtk-open</property>
+					  <property name="icon_size">4</property>
+					  <property name="xalign">0.5</property>
+					  <property name="yalign">0.5</property>
+					  <property name="xpad">0</property>
+					  <property name="ypad">0</property>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">False</property>
+					</packing>
+				      </child>
+
+				      <child>
+					<widget class="GtkLabel" id="label32">
+					  <property name="visible">True</property>
+					  <property name="label" translatable="yes">_Select...</property>
+					  <property name="use_underline">True</property>
+					  <property name="use_markup">False</property>
+					  <property name="justify">GTK_JUSTIFY_LEFT</property>
+					  <property name="wrap">False</property>
+					  <property name="selectable">False</property>
+					  <property name="xalign">0.5</property>
+					  <property name="yalign">0.5</property>
+					  <property name="xpad">0</property>
+					  <property name="ypad">0</property>
+					  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+					  <property name="width_chars">-1</property>
+					  <property name="single_line_mode">False</property>
+					  <property name="angle">0</property>
+					</widget>
+					<packing>
+					  <property name="padding">0</property>
+					  <property name="expand">False</property>
+					  <property name="fill">False</property>
+					</packing>
+				      </child>
+				    </widget>
+				  </child>
+				</widget>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">2</property>
+			      <property name="top_attach">1</property>
+			      <property name="bottom_attach">2</property>
+			      <property name="x_options">shrink|fill</property>
+			      <property name="y_options">shrink</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="label33">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes"></property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			      <property name="width_chars">-1</property>
+			      <property name="single_line_mode">False</property>
+			      <property name="angle">0</property>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">0</property>
+			      <property name="right_attach">1</property>
+			      <property name="top_attach">2</property>
+			      <property name="bottom_attach">3</property>
+			      <property name="x_options">fill</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkVBox" id="vbox2">
+			      <property name="visible">True</property>
+			      <property name="homogeneous">False</property>
+			      <property name="spacing">0</property>
+
+			      <child>
+				<widget class="GtkImage" id="fill_image_sample">
+				  <property name="width_request">100</property>
+				  <property name="height_request">60</property>
+				  <property name="visible">True</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">True</property>
+				</packing>
+			      </child>
+
+			      <child>
+				<widget class="GtkLabel" id="image-size-label">
+				  <property name="visible">True</property>
+				  <property name="label" translatable="yes"></property>
+				  <property name="use_underline">False</property>
+				  <property name="use_markup">False</property>
+				  <property name="justify">GTK_JUSTIFY_LEFT</property>
+				  <property name="wrap">False</property>
+				  <property name="selectable">False</property>
+				  <property name="xalign">0.5</property>
+				  <property name="yalign">0.5</property>
+				  <property name="xpad">0</property>
+				  <property name="ypad">0</property>
+				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+				  <property name="width_chars">-1</property>
+				  <property name="single_line_mode">False</property>
+				  <property name="angle">0</property>
+				</widget>
+				<packing>
+				  <property name="padding">0</property>
+				  <property name="expand">False</property>
+				  <property name="fill">False</property>
+				</packing>
+			      </child>
+			    </widget>
+			    <packing>
+			      <property name="left_attach">2</property>
+			      <property name="right_attach">3</property>
+			      <property name="top_attach">0</property>
+			      <property name="bottom_attach">3</property>
+			      <property name="x_options">fill</property>
+			      <property name="y_options">fill</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="tab_expand">False</property>
+			  <property name="tab_fill">False</property>
+			</packing>
+		      </child>
+
+		      <child>
+			<widget class="GtkLabel" id="label19">
+			  <property name="visible">True</property>
+			  <property name="label" translatable="yes"></property>
+			  <property name="use_underline">False</property>
+			  <property name="use_markup">False</property>
+			  <property name="justify">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap">False</property>
+			  <property name="selectable">False</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+			  <property name="width_chars">-1</property>
+			  <property name="single_line_mode">False</property>
+			  <property name="angle">0</property>
+			</widget>
+			<packing>
+			  <property name="type">tab</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkVBox" id="marker_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="marker_label">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">&lt;b&gt;Marker&lt;/b&gt;</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">True</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkAlignment" id="alignment7">
+	      <property name="visible">True</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xscale">1</property>
+	      <property name="yscale">1</property>
+	      <property name="top_padding">6</property>
+	      <property name="bottom_padding">0</property>
+	      <property name="left_padding">18</property>
+	      <property name="right_padding">0</property>
+
+	      <child>
+		<widget class="GtkTable" id="marker_table">
+		  <property name="visible">True</property>
+		  <property name="n_rows">4</property>
+		  <property name="n_columns">3</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">6</property>
+		  <property name="column_spacing">12</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="marker_shape_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Sha_pe:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="marker_size_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Si_ze:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">marker_size_spin</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">3</property>
+		      <property name="bottom_attach">4</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSpinButton" id="marker_size_spin">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="climb_rate">1</property>
+		      <property name="digits">0</property>
+		      <property name="numeric">True</property>
+		      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+		      <property name="snap_to_ticks">False</property>
+		      <property name="wrap">False</property>
+		      <property name="adjustment">5 1 200 1 10 10</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">1</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">3</property>
+		      <property name="bottom_attach">4</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label7">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">pts</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">2</property>
+		      <property name="right_attach">3</property>
+		      <property name="top_attach">3</property>
+		      <property name="bottom_attach">4</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="marker_outline_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">O_utline color:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">2</property>
+		      <property name="bottom_attach">3</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="marker_fill_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Fill color:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+<widget class="GtkWindow" id="gog_style_font_prefs_window">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes"></property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkVBox" id="gog_style_font_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkHBox" id="hbox5">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkHBox" id="color_box">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">12</property>
+
+	      <child>
+		<widget class="GtkLabel" id="font_color_label">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Co_lor:</property>
+		  <property name="use_underline">True</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0.5</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<placeholder/>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+<widget class="GtkWindow" id="gog_style_text_layout_prefs_window">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkVBox" id="gog_style_text_layout_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkHBox" id="hbox6">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">6</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label38">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">_Angle:</property>
+	      <property name="use_underline">True</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="mnemonic_widget">angle_spin</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkSpinButton" id="angle_spin">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="climb_rate">1</property>
+	      <property name="digits">0</property>
+	      <property name="numeric">True</property>
+	      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	      <property name="snap_to_ticks">False</property>
+	      <property name="wrap">False</property>
+	      <property name="adjustment">0 -180 180 15 45 0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="label39">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">degrees</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1956 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-style.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-font.h>
+#include <goffice/utils/go-file.h>
+#include <goffice/utils/go-line.h>
+#include <goffice/utils/go-marker.h>
+
+#include <goffice/gtk/go-color-palette.h>
+#include <goffice/gtk/go-combo-color.h>
+#include <goffice/gtk/go-combo-pixmaps.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/gtk/go-font-sel.h>
+
+#include <glade/glade-xml.h>
+#include <gtk/gtkcheckbutton.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkrange.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtknotebook.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <math.h>
+
+#define HSCALE 100
+#define VSCALE 120
+
+typedef GObjectClass GogStyleClass;
+
+static GObjectClass *parent_klass;
+
+/**
+ * I would have liked to do this differently and have a tighter binding between theme element and style
+ * 	eg gog_style_new (theme_element)
+ * However that will not work easily in the context of xls import where we do
+ * not know what the type is destined for until later.  This structure melds
+ * smoothly with both approaches at the expense of a bit of power.
+ **/
+/*************************************************************************/
+
+typedef struct {
+	GladeXML  	*gui;
+	GladeXML  	*font_gui;
+	GladeXML	*text_layout_gui;
+	GogStyle  	*style;
+	GogStyle  	*default_style;
+	GObject		*object_with_style;
+	gboolean   	 enable_edit;
+	gulong     	 style_changed_handler;
+	struct {
+		struct {
+			GtkWidget *fore, *back, *combo;
+		} pattern;
+		struct {
+			GtkWidget *start, *end, *end_label, *combo;
+			GtkWidget *brightness, *brightness_box;
+			guint	   timer;
+		} gradient;
+		struct {
+			GdkPixbuf *image;
+		} image;
+	} fill;
+	struct {
+		GtkWidget *combo;
+	} marker;
+} StylePrefState;
+
+static void
+cb_style_changed (GogStyledObject *obj, GogStyle *style, StylePrefState *state)
+{
+}
+
+static void
+set_style (StylePrefState const *state)
+{
+	if (state->object_with_style != NULL) {
+		if (state->style_changed_handler)
+			g_signal_handler_block (state->object_with_style, state->style_changed_handler);
+		g_object_set (G_OBJECT (state->object_with_style), "style", state->style, NULL);
+		if (state->style_changed_handler)
+			g_signal_handler_unblock (state->object_with_style, state->style_changed_handler);
+	}
+}
+
+static GtkWidget *
+create_go_combo_color (StylePrefState *state,
+		       GOColor initial_val, GOColor default_val,
+		       GladeXML *gui,
+		       char const *group, char const *label_name,
+		       GCallback func)
+{
+	GtkWidget *w;
+
+	w = go_combo_color_new (NULL, _("Automatic"), default_val,
+		go_color_group_fetch (group, NULL));
+	go_combo_color_set_instant_apply (GO_COMBO_COLOR (w), FALSE);
+	go_combo_color_set_allow_alpha (GO_COMBO_COLOR (w), TRUE);
+	gtk_label_set_mnemonic_widget (
+		GTK_LABEL (glade_xml_get_widget (gui, label_name)), w);
+	go_combo_color_set_color (GO_COMBO_COLOR (w), initial_val);
+	g_signal_connect (G_OBJECT (w),
+		"color_changed",
+		G_CALLBACK (func), state);
+	return w;
+}
+
+static void
+gog_style_set_image_preview (GdkPixbuf *pix, StylePrefState *state)
+{
+	GdkPixbuf *scaled;
+	int width, height;
+	char *size;
+	GtkWidget *w;
+
+	if (state->fill.image.image != pix) {
+		if (state->fill.image.image != NULL)
+			g_object_unref (state->fill.image.image);
+		state->fill.image.image = pix;
+		if (state->fill.image.image != NULL)
+			g_object_ref (state->fill.image.image);
+	}
+
+	if (pix == NULL)
+		return;
+
+	w = glade_xml_get_widget (state->gui, "fill_image_sample");
+
+	scaled = go_pixbuf_intelligent_scale (pix, HSCALE, VSCALE);
+	gtk_image_set_from_pixbuf (GTK_IMAGE (w), scaled);
+	g_object_unref (scaled);
+
+	w = glade_xml_get_widget (state->gui, "image-size-label");
+	width = gdk_pixbuf_get_width (pix);
+	height = gdk_pixbuf_get_height (pix);
+
+	size = g_strdup_printf (_("%d x %d"), width, height);
+	gtk_label_set_text (GTK_LABEL (w), size);
+	g_free (size);
+}
+
+/************************************************************************/
+static void
+cb_outline_dash_type_changed (GtkWidget *cc, int dash_type, StylePrefState const *state)
+{
+	GogStyle *style = state->style;
+	gboolean is_auto = dash_type < 0;
+
+	if (is_auto) 
+		dash_type = -dash_type;
+	style->outline.auto_dash = is_auto;
+	style->outline.dash_type = dash_type;
+	set_style (state);
+}
+
+static void
+cb_outline_size_changed (GtkAdjustment *adj, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	g_return_if_fail (style != NULL);
+
+	style->outline.width = rint (adj->value * 100.) / 100.;
+	set_style (state);
+}
+
+static void
+cb_outline_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+			  G_GNUC_UNUSED gboolean  is_custom,
+			  G_GNUC_UNUSED gboolean  by_user,
+			  gboolean  is_default, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	g_return_if_fail (style != NULL);
+
+	style->outline.color = color;
+	style->outline.auto_color = is_default;
+	set_style (state);
+}
+
+static void
+outline_init (StylePrefState *state, gboolean enable)
+{
+	GogStyle *style = state->style;
+	GogStyle *default_style = state->default_style;
+	GtkWidget *w, *table;
+
+	if (!enable) {
+		gtk_widget_hide (glade_xml_get_widget (state->gui, "outline_box"));
+		return;
+	}
+
+	table = glade_xml_get_widget (state->gui, "outline_table");
+
+	/* DashType */
+	w = go_line_dash_selector (default_style->outline.dash_type);
+	gtk_table_attach (GTK_TABLE (table), w, 1, 3, 0, 1, 0, 0, 0, 0);
+	go_combo_pixmaps_select_id (GO_COMBO_PIXMAPS (w), style->outline.dash_type);
+	g_signal_connect (G_OBJECT (w),
+			  "changed",
+			  G_CALLBACK (cb_outline_dash_type_changed), state);
+	/* Size */
+	w = glade_xml_get_widget (state->gui, "outline_size_spin");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), style->outline.width);
+	g_signal_connect (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w)),
+		"value_changed",
+		G_CALLBACK (cb_outline_size_changed), state);
+	/* Color */
+	w = create_go_combo_color (state,
+		style->outline.color, default_style->outline.color,
+		state->gui,
+		"outline_color", "outline_color_label",
+		G_CALLBACK (cb_outline_color_changed));
+	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2, 0, 0, 0, 0);
+	gtk_widget_show_all (table);
+}
+
+
+/************************************************************************/
+
+static void
+cb_line_dash_type_changed (GtkWidget *cc, int dash_type, StylePrefState const *state)
+{
+	GogStyle *style = state->style;
+	gboolean is_auto = dash_type < 0;
+
+	if (is_auto) 
+		dash_type = -dash_type;
+	style->line.auto_dash = is_auto;
+	style->line.dash_type = dash_type;
+	set_style (state);
+}
+
+static void
+cb_line_size_changed (GtkAdjustment *adj, StylePrefState const *state)
+{
+	GogStyle *style = state->style;
+
+	g_return_if_fail (style != NULL);
+
+	style->line.width = rint (adj->value * 100.) / 100.;
+	set_style (state);
+}
+
+static void
+cb_line_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+		       G_GNUC_UNUSED gboolean  is_custom,
+		       G_GNUC_UNUSED gboolean  by_user,
+		       gboolean  is_default, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	g_return_if_fail (style != NULL);
+
+	style->line.color = color;
+	style->line.auto_color = is_default;
+	set_style (state);
+}
+
+static void
+line_init (StylePrefState *state, gboolean enable)
+{
+	GogStyle *style = state->style;
+	GogStyle *default_style = state->default_style;
+	GtkWidget *w, *table;
+
+	if (!enable) {
+		gtk_widget_hide (glade_xml_get_widget (state->gui, "line_box"));
+		return;
+	}
+
+	table = glade_xml_get_widget (state->gui, "line_table");
+
+	/* DashType */
+	w = go_line_dash_selector (default_style->line.dash_type);
+	gtk_table_attach (GTK_TABLE (table), w, 1, 3, 0, 1, 0, 0, 0, 0);
+	go_combo_pixmaps_select_id (GO_COMBO_PIXMAPS (w), style->line.dash_type);
+	g_signal_connect (G_OBJECT (w),
+			  "changed",
+			  G_CALLBACK (cb_line_dash_type_changed), state);
+
+	/* Size */
+	w = glade_xml_get_widget (state->gui, "line_size_spin");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), style->line.width);
+	g_signal_connect (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w)),
+		"value_changed",
+		G_CALLBACK (cb_line_size_changed), state);
+
+	/* Colour */
+	w = create_go_combo_color (state,
+		style->line.color, default_style->line.color,
+		state->gui,
+		"line_color", "line_color_label",
+		G_CALLBACK (cb_line_color_changed));
+	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2, 0, 0, 0, 0);
+	gtk_widget_show_all (table);
+}
+
+/************************************************************************/
+
+static void
+cb_pattern_type_changed (GtkWidget *cc, int pattern, StylePrefState const *state)
+{
+	GogStyle *style = state->style;
+	gboolean is_auto = pattern < 0;
+
+	if (is_auto)
+		pattern = -pattern;
+	style->fill.pattern.pattern = pattern;
+	set_style (state);
+}
+
+static void
+populate_pattern_combo (StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	GogStyle *default_style = state->default_style;
+	GtkWidget *table, *combo;
+	GOPatternType type = GO_PATTERN_SOLID;
+
+	if (state->fill.pattern.combo != NULL)
+		gtk_widget_destroy (state->fill.pattern.combo);
+
+	state->fill.pattern.combo = combo = go_pattern_selector (
+		style->fill.pattern.fore,
+		style->fill.pattern.back,
+		default_style->fill.pattern.pattern);
+
+	table = glade_xml_get_widget (state->gui, "fill_pattern_table");
+	gtk_table_attach (GTK_TABLE (table), combo, 1, 2, 0, 1, 0, 0, 0, 0);
+	gtk_label_set_mnemonic_widget (
+		GTK_LABEL (glade_xml_get_widget (state->gui, "fill_pattern_type_label")), combo);
+
+	if (style->fill.type == GOG_FILL_STYLE_PATTERN)
+		type = style->fill.pattern.pattern;
+	go_combo_pixmaps_select_id (GO_COMBO_PIXMAPS(combo), type);
+	g_signal_connect (G_OBJECT (combo),
+		"changed",
+		G_CALLBACK (cb_pattern_type_changed), state);
+	gtk_widget_show (combo);
+}
+
+static void
+cb_fg_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+		     G_GNUC_UNUSED gboolean is_custom,
+		     G_GNUC_UNUSED gboolean by_user,
+		     gboolean is_default, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	g_return_if_fail (style != NULL);
+	g_return_if_fail (GOG_FILL_STYLE_PATTERN == style->fill.type);
+
+	style->fill.pattern.fore = color;
+	style->fill.auto_fore = is_default;
+	set_style (state);
+	populate_pattern_combo (state);
+}
+
+static void
+cb_bg_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+		     G_GNUC_UNUSED gboolean is_custom,
+		     G_GNUC_UNUSED gboolean by_user,
+		     gboolean is_default, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	g_return_if_fail (style != NULL);
+	g_return_if_fail (GOG_FILL_STYLE_PATTERN == style->fill.type);
+
+	style->fill.pattern.back = color;
+	style->fill.auto_back = is_default;
+	set_style (state);
+	populate_pattern_combo (state);
+}
+
+static void
+fill_pattern_init (StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	GogStyle *default_style = state->default_style;
+
+	GtkWidget *w, *table =
+		glade_xml_get_widget (state->gui, "fill_pattern_table");
+
+	state->fill.pattern.fore = w = create_go_combo_color (state,
+		style->fill.pattern.fore,
+		default_style->fill.pattern.fore,
+		state->gui,
+		"pattern_foreground", "fill_pattern_foreground_label",
+		G_CALLBACK (cb_fg_color_changed));
+	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2, 0, 0, 0, 0);
+
+	state->fill.pattern.back = w = create_go_combo_color (state,
+		style->fill.pattern.back,
+		default_style->fill.pattern.back,
+		state->gui,
+		"pattern_background", "fill_pattern_background_label",
+		G_CALLBACK (cb_bg_color_changed));
+	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 2, 3, 0, 0, 0, 0);
+
+	populate_pattern_combo (state);
+	gtk_widget_show_all (table);
+}
+
+/************************************************************************/
+
+static GOGradientDirection default_to_last_selected_type = GO_GRADIENT_N_TO_S;
+static void
+cb_gradient_type_changed (GtkWidget *cc, int id, StylePrefState const *state)
+{
+	GogStyle *style = state->style;
+	style->fill.gradient.dir = default_to_last_selected_type = id;
+	set_style (state);
+}
+
+static void
+populate_gradient_combo (StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	GtkWidget *combo, *table;
+
+	if (state->fill.gradient.combo != NULL)
+		gtk_widget_destroy (state->fill.gradient.combo);
+
+	state->fill.gradient.combo = combo = go_gradient_selector (
+		style->fill.pattern.back,
+		style->fill.pattern.fore);
+	gtk_label_set_mnemonic_widget (
+		GTK_LABEL (glade_xml_get_widget (state->gui, "fill_gradient_direction_label")), combo);
+
+	table = glade_xml_get_widget (state->gui, "fill_gradient_table");
+	gtk_table_attach (GTK_TABLE (table), combo, 1, 2, 0, 1, 0, 0, 0, 0);
+	go_combo_pixmaps_select_id (GO_COMBO_PIXMAPS (combo),
+		(style->fill.type == GOG_FILL_STYLE_GRADIENT)
+			? style->fill.gradient.dir : default_to_last_selected_type);
+
+	g_signal_connect (G_OBJECT (combo),
+		"changed",
+		G_CALLBACK (cb_gradient_type_changed), state);
+	gtk_widget_show (combo);
+}
+
+static void
+cb_fill_gradient_start_color (G_GNUC_UNUSED GOComboColor *cc, GOColor  color,
+			      G_GNUC_UNUSED gboolean is_custom,
+			      G_GNUC_UNUSED gboolean by_user,
+			      gboolean is_default, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	style->fill.pattern.back = color;
+	style->fill.auto_back = is_default;
+	set_style (state);
+	populate_gradient_combo (state);
+}
+
+static gboolean
+cb_delayed_gradient_combo_update (StylePrefState *state)
+{
+	state->fill.gradient.timer = 0;
+	populate_gradient_combo (state);
+	return FALSE;
+}
+
+static void
+cb_fill_gradient_end_color (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+			    G_GNUC_UNUSED gboolean is_custom,
+			    gboolean by_user,
+			    gboolean is_default, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	style->fill.pattern.fore = color;
+	style->fill.auto_fore = is_default;
+	set_style (state);
+
+	if (by_user)
+		populate_gradient_combo (state);
+	else {
+		if (state->fill.gradient.timer != 0)
+			g_source_remove (state->fill.gradient.timer);
+		state->fill.gradient.timer = g_timeout_add (100,
+			(GSourceFunc) cb_delayed_gradient_combo_update, state);
+	}
+}
+
+static void
+cb_gradient_brightness_value_changed (GtkWidget *w, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	gog_style_set_fill_brightness (style,
+		gtk_range_get_value (GTK_RANGE (w)));
+	go_combo_color_set_color (GO_COMBO_COLOR (state->fill.gradient.end),
+		style->fill.pattern.fore);
+	set_style (state);
+}
+
+static void
+cb_gradient_style_changed (GtkWidget *w, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	GtkWidget *val = glade_xml_get_widget (state->gui,
+		"fill_gradient_brightness");
+	GtkWidget *box = glade_xml_get_widget (state->gui,
+		"fill_gradient_brightness_box");
+
+	gboolean two_color = gtk_combo_box_get_active (GTK_COMBO_BOX (w)) == 0;
+
+	if (two_color) {
+		style->fill.gradient.brightness = -1;
+		gtk_widget_hide (box);
+	} else {
+		gtk_widget_show (box);
+		gog_style_set_fill_brightness (style,
+			gtk_range_get_value (GTK_RANGE (val)));
+		go_combo_color_set_color (GO_COMBO_COLOR (state->fill.gradient.end),
+			style->fill.pattern.fore);
+	}
+	g_object_set (G_OBJECT (state->fill.gradient.end), "visible", two_color, NULL);
+	g_object_set (G_OBJECT (state->fill.gradient.end_label), "visible", two_color, NULL);
+	set_style (state);
+}
+
+static void
+fill_gradient_init (StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	GogStyle *default_style = state->default_style;
+	GtkWidget *w, *table = glade_xml_get_widget (state->gui, "fill_gradient_table");
+	GtkWidget *type = glade_xml_get_widget (state->gui, "fill_gradient_type");
+
+	state->fill.gradient.start = w = create_go_combo_color (state,
+		style->fill.pattern.back,
+		default_style->fill.pattern.back,
+		state->gui,
+		"gradient_start", "fill_gradient_start_label",
+		G_CALLBACK (cb_fill_gradient_start_color));
+	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 2, 3, 0, 0, 0, 0);
+	gtk_widget_show (w);
+
+	state->fill.gradient.end = w = create_go_combo_color (state,
+		style->fill.pattern.fore,
+		default_style->fill.pattern.fore,
+		state->gui,
+		"gradient_end", "fill_gradient_end_label",
+		G_CALLBACK (cb_fill_gradient_end_color));
+	gtk_table_attach (GTK_TABLE (table), w, 3, 4, 2, 3, 0, 0, 0, 0);
+	gtk_widget_show (w);
+
+	state->fill.gradient.end_label = glade_xml_get_widget (state->gui,
+		"fill_gradient_end_label");
+	state->fill.gradient.brightness = glade_xml_get_widget (state->gui,
+		"fill_gradient_brightness");
+	state->fill.gradient.brightness_box = glade_xml_get_widget (state->gui,
+		"fill_gradient_brightness_box");
+
+	if ((style->fill.type != GOG_FILL_STYLE_GRADIENT) ||
+	    (style->fill.gradient.brightness < 0)) {
+		gtk_combo_box_set_active (GTK_COMBO_BOX (type), 0);
+		gtk_widget_hide (state->fill.gradient.brightness_box);
+	} else {
+		gtk_combo_box_set_active (GTK_COMBO_BOX (type), 1);
+		gtk_widget_show (state->fill.gradient.brightness_box);
+		gtk_range_set_value (GTK_RANGE (state->fill.gradient.brightness),
+			style->fill.gradient.brightness);
+		gtk_widget_hide (state->fill.gradient.end);
+		gtk_widget_hide (state->fill.gradient.end_label);
+	}
+
+	g_signal_connect (G_OBJECT (type),
+		"changed",
+		G_CALLBACK (cb_gradient_style_changed), state);
+	g_signal_connect (G_OBJECT (state->fill.gradient.brightness),
+		"value_changed",
+		G_CALLBACK (cb_gradient_brightness_value_changed), state);
+
+	populate_gradient_combo (state);
+	gtk_widget_show (table);
+}
+
+/************************************************************************/
+
+static void
+cb_image_file_select (GtkWidget *cc, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	char *filename, *uri, *old_uri;
+	GtkWidget *w;
+
+	g_return_if_fail (style != NULL);
+	g_return_if_fail (GOG_FILL_STYLE_IMAGE == style->fill.type);
+
+	filename = style->fill.image.filename;
+	old_uri = filename ? go_filename_to_uri (filename) : NULL;
+	uri = go_gtk_select_image (GTK_WINDOW (gtk_widget_get_toplevel (cc)),
+				   old_uri);
+	g_free (old_uri);
+	if (uri == NULL)
+		return;
+	filename = go_filename_from_uri (uri);
+	g_free (uri);
+	if (filename == NULL) {
+		g_warning ("Sorry -- cannot handle URIs here right now.");
+		return;
+	}
+#warning "Handle URIs here."
+
+	gog_style_set_fill_image_filename (style, filename);
+
+	w = glade_xml_get_widget (state->gui, "fill_image_sample");
+	g_object_set_data (G_OBJECT (w), "filename",
+			   style->fill.image.filename);
+
+	gog_style_set_image_preview (style->fill.image.image, state);
+	set_style (state);
+}
+
+static void
+cb_image_style_changed (GtkWidget *w, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	g_return_if_fail (style != NULL);
+	g_return_if_fail (GOG_FILL_STYLE_IMAGE == style->fill.type);
+	style->fill.image.type = gtk_combo_box_get_active (GTK_COMBO_BOX (w));
+	set_style (state);
+}
+
+static void
+fill_image_init (StylePrefState *state)
+{
+	GtkWidget *w, *sample, *type;
+	GogStyle *style = state->style;
+
+	w = glade_xml_get_widget (state->gui, "fill_image_select_picture");
+	g_signal_connect (G_OBJECT (w),
+		"clicked",
+		G_CALLBACK (cb_image_file_select), state);
+
+	sample = glade_xml_get_widget (state->gui, "fill_image_sample");
+	gtk_widget_set_size_request (sample, HSCALE + 10, VSCALE + 10);
+	type   = glade_xml_get_widget (state->gui, "fill_image_fit");
+
+	state->fill.image.image = NULL;
+
+	if (GOG_FILL_STYLE_IMAGE == style->fill.type) {
+		gtk_combo_box_set_active (GTK_COMBO_BOX (type),
+			style->fill.image.type);
+		gog_style_set_image_preview (style->fill.image.image, state);
+		state->fill.image.image = style->fill.image.image;
+		if (state->fill.image.image)
+			g_object_ref (state->fill.image.image);
+		g_object_set_data (G_OBJECT (sample), "filename",
+				   style->fill.image.filename);
+	} else
+		gtk_combo_box_set_active (GTK_COMBO_BOX (type), 0);
+	g_signal_connect (G_OBJECT (type),
+		"changed",
+		G_CALLBACK (cb_image_style_changed), state);
+}
+
+/************************************************************************/
+
+static void
+cb_fill_type_changed (GtkWidget *menu, StylePrefState *state)
+{
+	GtkWidget *w;
+
+	state->style->fill.type = gtk_combo_box_get_active (GTK_COMBO_BOX (menu));
+	set_style (state);
+
+	w = glade_xml_get_widget (state->gui, "fill_notebook");
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (w), state->style->fill.type);
+}
+
+static void
+fill_init (StylePrefState *state, gboolean enable)
+{
+	GtkWidget *w;
+
+	if (!enable) {
+		gtk_widget_hide (glade_xml_get_widget (state->gui, "fill_box"));
+		return;
+	}
+
+	fill_pattern_init (state);
+	fill_gradient_init (state);
+	fill_image_init (state);
+
+	w = glade_xml_get_widget (state->gui, "fill_notebook");
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (w), state->style->fill.type);
+	w = glade_xml_get_widget (state->gui, "fill_type_menu");
+	gtk_combo_box_set_active (GTK_COMBO_BOX (w), state->style->fill.type);
+	g_signal_connect (G_OBJECT (w),
+		"changed",
+		G_CALLBACK (cb_fill_type_changed), state);
+
+	w = glade_xml_get_widget (state->gui, "fill_box");
+	gtk_widget_show (GTK_WIDGET (w));
+}
+
+/************************************************************************/
+
+
+static void
+cb_marker_shape_changed (GtkWidget *cc, int shape, StylePrefState const *state)
+{
+	GogStyle *style = state->style;
+	gboolean is_auto = shape < 0;
+
+	if (is_auto)
+		shape = -shape;
+	go_marker_set_shape (style->marker.mark, shape);
+	style->marker.auto_shape = is_auto;
+	set_style (state);
+}
+
+static void
+populate_marker_combo (StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	GtkWidget *combo, *table;
+
+	if (state->marker.combo != NULL)
+		gtk_widget_destroy (state->marker.combo);
+
+	state->marker.combo = combo = go_marker_selector (
+	        go_marker_get_outline_color (style->marker.mark),
+		go_marker_get_fill_color (style->marker.mark),
+		go_marker_get_shape (state->default_style->marker.mark));
+	gtk_label_set_mnemonic_widget (
+		GTK_LABEL (glade_xml_get_widget (state->gui, "marker_shape_label")), combo);
+
+	table = glade_xml_get_widget (state->gui, "marker_table");
+	gtk_table_attach (GTK_TABLE (table), combo, 1, 2, 0, 1, 0, 0, 0, 0);
+	go_combo_pixmaps_select_id (GO_COMBO_PIXMAPS (combo),
+		go_marker_get_shape (style->marker.mark));
+	g_signal_connect (G_OBJECT (combo),
+		"changed",
+		G_CALLBACK (cb_marker_shape_changed), state);
+	gtk_widget_show (combo);
+}
+
+static void
+cb_marker_outline_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+				 G_GNUC_UNUSED gboolean is_custom,
+				 G_GNUC_UNUSED gboolean by_user,
+				 gboolean is_auto, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	if (is_auto)
+		color = go_marker_get_outline_color (state->default_style->marker.mark);
+	go_marker_set_outline_color (style->marker.mark, color);
+	style->marker.auto_outline_color = is_auto;
+	set_style (state);
+	populate_marker_combo (state);
+}
+
+static void
+cb_marker_fill_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+			      G_GNUC_UNUSED gboolean is_custom,
+			      G_GNUC_UNUSED gboolean by_user,
+			      gboolean is_auto, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+	if (is_auto)
+		color = go_marker_get_fill_color (state->default_style->marker.mark);
+	go_marker_set_fill_color (style->marker.mark, color);
+	style->marker.auto_fill_color = is_auto;
+	set_style (state);
+	populate_marker_combo (state);
+}
+
+static void
+cb_marker_size_changed (GtkAdjustment *adj, StylePrefState *state)
+{
+	go_marker_set_size (state->style->marker.mark, adj->value);
+	set_style (state);
+}
+
+static void
+marker_init (StylePrefState *state, gboolean enable)
+{
+	GogStyle *style = state->style;
+	GogStyle *default_style = state->default_style;
+	GtkWidget *table, *w;
+
+	if (!enable) {
+		gtk_widget_hide (glade_xml_get_widget (state->gui, "marker_box"));
+		return;
+	}
+
+	populate_marker_combo (state);
+	table = glade_xml_get_widget (state->gui, "marker_table");
+
+	w = create_go_combo_color (state,
+		go_marker_get_fill_color (style->marker.mark),
+		go_marker_get_fill_color (default_style->marker.mark),
+		state->gui,
+		"pattern_foreground", "marker_fill_label",
+		G_CALLBACK (cb_marker_fill_color_changed));
+	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 1, 2, 0, 0, 0, 0);
+
+	w = create_go_combo_color (state,
+		go_marker_get_outline_color (style->marker.mark),
+		go_marker_get_outline_color (default_style->marker.mark),
+		state->gui,
+		"pattern_foreground", "marker_outline_label",
+		G_CALLBACK (cb_marker_outline_color_changed));
+	gtk_table_attach (GTK_TABLE (table), w, 1, 2, 2, 3, 0, 0, 0, 0);
+
+	w = glade_xml_get_widget (state->gui, "marker_size_spin");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w),
+		go_marker_get_size (style->marker.mark));
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_marker_size_changed), state);
+
+	gtk_widget_show_all (table);
+}
+
+/************************************************************************/
+
+static void
+cb_font_changed (GOFontSel *fs, PangoAttrList *list,
+		 StylePrefState *state)
+{
+	PangoAttrIterator *iter = pango_attr_list_get_iterator (list);
+	PangoFontDescription *desc = pango_font_description_new ();
+	GSList *extra_attrs;
+	const GOFont *font = go_font_new_by_desc (desc);
+	pango_attr_iterator_get_font (iter, desc, NULL, &extra_attrs);
+#warning "we should do something for extra attributes"
+	g_slist_foreach (extra_attrs, (GFunc)pango_attribute_destroy, NULL);
+	g_slist_free (extra_attrs);
+	pango_attr_iterator_destroy (iter);
+	gog_style_set_font (state->style, font);
+	set_style (state);
+}
+
+static void
+cb_font_color_changed (G_GNUC_UNUSED GOComboColor *cc, GOColor color,
+		       G_GNUC_UNUSED gboolean is_custom,
+		       G_GNUC_UNUSED gboolean by_user,
+		       gboolean is_auto, StylePrefState *state)
+{
+	GogStyle *style = state->style;
+
+	style->font.color = color;
+	set_style (state);
+}
+
+static void
+font_init (StylePrefState *state, guint32 enable, GogEditor *editor, GOCmdContext *cc)
+{
+	GogStyle *style = state->style;
+	GtkWidget *w, *box;
+	GladeXML *gui;
+
+	if (!enable)
+		return;
+
+	g_return_if_fail (style->font.font != NULL);
+
+	gui = go_libglade_new ("gog-style-prefs.glade", "gog_style_font_prefs", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	state->font_gui = gui;
+
+	w = create_go_combo_color (state,
+		style->font.color,
+		style->font.color,
+		gui,
+		"pattern_foreground", "font_color_label",
+		G_CALLBACK (cb_font_color_changed));
+	box = glade_xml_get_widget (gui, "color_box");
+	gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0);
+	gtk_widget_show (w);
+				    
+	w = go_font_sel_new ();
+	go_font_sel_set_font (GO_FONT_SEL (w), style->font.font);
+	g_signal_connect (G_OBJECT (w),
+		"font_changed",
+		G_CALLBACK (cb_font_changed), state);
+	gtk_widget_show (w);
+
+ 	box = glade_xml_get_widget (gui, "gog_style_font_prefs");
+	gtk_box_pack_end (GTK_BOX (box), w, TRUE, TRUE, 0);
+	
+	gog_editor_add_page (editor, box, _("Font"));
+}
+
+/************************************************************************/
+
+static void
+cb_angle_changed (GtkSpinButton *spin, StylePrefState *state)
+{
+	gog_style_set_text_angle (state->style, gtk_spin_button_get_value (spin));
+	set_style (state);
+}
+
+static void
+text_layout_init (StylePrefState *state, guint32 enable, GogEditor *editor, GOCmdContext *cc)
+{
+	GogStyle *style = state->style;
+	GtkWidget *w;
+	GladeXML *gui;
+
+	if (!enable)
+		return;
+
+	gui = go_libglade_new ("gog-style-prefs.glade", "gog_style_text_layout_prefs", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	state->text_layout_gui = gui;
+
+	w = glade_xml_get_widget (gui, "angle_spin");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), style->text_layout.angle);
+	g_signal_connect (G_OBJECT (w), "value-changed", G_CALLBACK (cb_angle_changed), state);
+
+	w = glade_xml_get_widget (gui, "gog_style_text_layout_prefs");
+	gog_editor_add_page (editor, w, _("Text"));
+}
+
+/************************************************************************/
+
+static void
+cb_parent_is_gone (StylePrefState *state, GObject *where_the_object_was)
+{
+	state->style_changed_handler = 0;
+	state->object_with_style = NULL;
+}
+
+static void
+gog_style_pref_state_free (StylePrefState *state)
+{
+	if (state->style_changed_handler) {
+		g_signal_handler_disconnect (state->object_with_style,
+			state->style_changed_handler);
+		g_object_weak_unref (G_OBJECT (state->object_with_style),
+			(GWeakNotify) cb_parent_is_gone, state);
+	}
+	g_object_unref (state->style);
+	g_object_unref (state->default_style);
+	g_object_unref (state->gui);
+	if (state->font_gui != NULL)
+		g_object_unref (state->font_gui);
+	if (state->fill.gradient.timer != 0) {
+		g_source_remove (state->fill.gradient.timer);
+		state->fill.gradient.timer = 0;
+	}
+	if (state->fill.image.image != NULL)
+		g_object_unref (state->fill.image.image);
+	g_free (state);
+}
+
+void
+gog_style_populate_editor (GogStyle *style,
+			   GogEditor *editor,
+			   GogStyle *default_style,
+			   GOCmdContext *cc,
+			   GObject	*object_with_style,
+			   gboolean   watch_for_external_change)
+{
+	GogStyleFlag enable;
+	GtkWidget *w;
+	GladeXML *gui;
+	StylePrefState *state;
+
+	g_return_if_fail (style != NULL);
+	g_return_if_fail (default_style != NULL);
+
+	enable = style->interesting_fields;
+
+	gui = go_libglade_new ("gog-style-prefs.glade", "gog_style_prefs", NULL, cc);
+	if (gui == NULL)
+		return;
+
+	g_object_ref (style);
+	g_object_ref (default_style);
+
+	state = g_new0 (StylePrefState, 1);
+	state->gui = gui;
+	state->font_gui = NULL;
+	state->style = style;
+	state->default_style = default_style;
+	state->object_with_style = object_with_style;
+	state->enable_edit = FALSE;
+
+ 	w = glade_xml_get_widget (gui, "gog_style_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", state, (GDestroyNotify) gog_style_pref_state_free);
+	gog_editor_add_page (editor, w, _("Style"));
+	
+	outline_init 	 (state, enable & GOG_STYLE_OUTLINE);
+	line_init    	 (state, enable & GOG_STYLE_LINE);
+	fill_init    	 (state, enable & GOG_STYLE_FILL);
+	marker_init  	 (state, enable & GOG_STYLE_MARKER);
+	font_init    	 (state, enable & GOG_STYLE_FONT, editor, cc);
+	text_layout_init (state, enable & GOG_STYLE_TEXT_LAYOUT, editor, cc);
+
+	state->enable_edit = TRUE;
+
+	if (object_with_style != NULL && watch_for_external_change) {
+		state->style_changed_handler = g_signal_connect (G_OBJECT (object_with_style),
+			"style-changed",
+			G_CALLBACK (cb_style_changed), state);
+		g_object_weak_ref (G_OBJECT (object_with_style),
+			(GWeakNotify) cb_parent_is_gone, state);
+	}
+}
+
+gpointer
+gog_style_get_editor (GogStyle *style,
+		  GogStyle *default_style,
+		  GOCmdContext *cc,
+		  GObject *object_with_style)
+{
+	GtkWidget *notebook;
+	GogEditor *editor = gog_editor_new ();
+
+	gog_style_populate_editor (style, editor, default_style, cc, 
+				   object_with_style, FALSE);
+
+	notebook = gog_editor_get_notebook (editor);
+	gog_editor_free (editor);
+	gtk_widget_show (notebook);
+	return notebook;
+}
+
+/*****************************************************************************/
+
+GogStyle *
+gog_style_new (void)
+{
+	return g_object_new (GOG_STYLE_TYPE, NULL);
+}
+
+/**
+ * gog_style_dup :
+ * @src : #GogStyle
+ *
+ **/
+GogStyle *
+gog_style_dup (GogStyle const *src)
+{
+	GogStyle *dst;
+
+	g_return_val_if_fail (GOG_STYLE (src) != NULL, NULL);
+
+	dst = gog_style_new ();
+	gog_style_assign (dst, src);
+	return dst;
+}
+
+void
+gog_style_assign (GogStyle *dst, GogStyle const *src)
+{
+	if (src == dst)
+		return;
+
+	g_return_if_fail (GOG_STYLE (src) != NULL);
+	g_return_if_fail (GOG_STYLE (dst) != NULL);
+
+	if (GOG_FILL_STYLE_IMAGE == src->fill.type &&
+	    src->fill.image.image != NULL)
+		g_object_ref (src->fill.image.image);
+	if (GOG_FILL_STYLE_IMAGE == dst->fill.type) {
+		if (dst->fill.image.image != NULL)
+			g_object_unref (dst->fill.image.image);
+		g_free (dst->fill.image.filename);
+	}
+
+	if (src->font.font != NULL)
+		go_font_ref (src->font.font);
+	if (dst->font.font != NULL)
+		go_font_unref (dst->font.font);
+
+	dst->outline = src->outline;
+	dst->fill    = src->fill;
+	dst->line    = src->line;
+	if (dst->marker.mark)
+		g_object_unref (dst->marker.mark);
+	dst->marker = src->marker;
+	dst->marker.mark = go_marker_dup (src->marker.mark);
+	dst->font    = src->font;
+	dst->line    = src->line;
+
+	if (GOG_FILL_STYLE_IMAGE == dst->fill.type)
+		dst->fill.image.filename = g_strdup (dst->fill.image.filename);
+
+	dst->text_layout = src->text_layout;
+
+	dst->interesting_fields = src->interesting_fields;
+	dst->disable_theming = src->disable_theming;
+}
+
+/**
+ * gog_style_apply_theme :
+ * @dst : #GogStyle
+ * @src :  #GogStyle
+ *
+ * Merge the attributes from @src onto the elements of @dst that were not user
+ * assigned (is_auto)
+ **/
+void
+gog_style_apply_theme (GogStyle *dst, GogStyle const *src)
+{
+	if (src == dst)
+		return;
+
+	g_return_if_fail (GOG_STYLE (src) != NULL);
+	g_return_if_fail (GOG_STYLE (dst) != NULL);
+
+	if (dst->outline.auto_dash)
+		dst->outline.dash_type = src->outline.dash_type;
+	if (dst->outline.auto_color)
+		dst->outline.color = src->outline.color;
+	if (dst->fill.auto_fore)
+		dst->fill.pattern.fore = src->fill.pattern.fore;
+	if (dst->fill.auto_back)
+		dst->fill.pattern.back = src->fill.pattern.back;
+	if (dst->line.auto_dash)
+		dst->line.dash_type = src->line.dash_type;
+	if (dst->line.auto_color)
+		dst->line.color = src->line.color;
+	if (dst->marker.auto_shape)
+		go_marker_set_shape (dst->marker.mark,
+			go_marker_get_shape (src->marker.mark));
+	if (dst->marker.auto_outline_color)
+		go_marker_set_outline_color (dst->marker.mark,
+			go_marker_get_outline_color (src->marker.mark));
+	if (dst->marker.auto_fill_color)
+		go_marker_set_fill_color (dst->marker.mark,
+			go_marker_get_fill_color (src->marker.mark));
+	if (dst->text_layout.auto_angle)
+		dst->text_layout.angle = src->text_layout.angle;
+
+#if 0
+	/* Fonts are not themed until we have some sort of auto mechanism
+	 * stronger than 'auto_size' */
+	if (src->font.font != NULL)
+		go_font_ref (src->font.font);
+	if (dst->font.font != NULL)
+		go_font_unref (dst->font.font);
+	dst->font = src->font;
+#endif
+}
+
+static void
+gog_style_finalize (GObject *obj)
+{
+	GogStyle *style = GOG_STYLE (obj);
+
+	if (GOG_FILL_STYLE_IMAGE == style->fill.type &&
+	    style->fill.image.image != NULL)
+		g_object_unref (style->fill.image.image);
+
+	if (style->font.font != NULL) {
+		go_font_unref (style->font.font);
+		style->font.font = NULL;
+	}
+
+	if (style->marker.mark != NULL) {
+		g_object_unref (style->marker.mark);
+		style->marker.mark = NULL;
+	}
+
+	(parent_klass->finalize) (obj);
+}
+
+static void
+gog_style_class_init (GogStyleClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *)klass;
+	parent_klass = g_type_class_peek_parent (klass);
+	gobject_klass->finalize	= gog_style_finalize;
+}
+
+static void
+gog_style_init (GogStyle *style)
+{
+	style->interesting_fields = GOG_STYLE_ALL;
+	style->disable_theming = 0;
+	gog_style_force_auto (style);
+	style->line.dash_type = GO_LINE_SOLID;
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	style->fill.gradient.brightness = -1.;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_BLACK);
+	style->font.font = go_font_new_by_index (0);
+	style->font.color = RGBA_BLACK;
+	style->text_layout.angle = 0.0;
+}
+
+static struct {
+	GogFillStyle fstyle;
+	char const *name;
+} fill_names[] = {
+	{ GOG_FILL_STYLE_NONE,     "none" },
+	{ GOG_FILL_STYLE_PATTERN,  "pattern" },
+	{ GOG_FILL_STYLE_GRADIENT, "gradient" },
+	{ GOG_FILL_STYLE_IMAGE,    "image" }
+};
+
+static gboolean
+bool_prop (xmlNode *node, char const *name, gboolean *res)
+{
+	char *str = xmlGetProp (node, name);
+	if (str != NULL) {
+		*res = g_ascii_tolower (*str) == 't' ||
+			g_ascii_tolower (*str) == 'y' ||
+			strtol (str, NULL, 0);
+		xmlFree (str);
+		return TRUE;
+	}
+	return FALSE;
+}
+
+static GogFillStyle
+str_as_fill_style (char const *name)
+{
+	unsigned i;
+	for (i = 0; i < G_N_ELEMENTS (fill_names); i++)
+		if (strcmp (fill_names[i].name, name) == 0)
+			return fill_names[i].fstyle;
+	return GOG_FILL_STYLE_PATTERN;
+}
+
+static char const *
+fill_style_as_str (GogFillStyle fstyle)
+{
+	unsigned i;
+	for (i = 0; i < G_N_ELEMENTS (fill_names); i++)
+		if (fill_names[i].fstyle == fstyle)
+			return fill_names[i].name;
+	return "pattern";
+}
+
+static void
+gog_style_line_load (xmlNode *node, GogStyleLine *line)
+{
+	char *str;
+	gboolean tmp;
+
+	str = xmlGetProp (node, "dash");
+	if (str != NULL) {
+		line->dash_type = go_line_dash_from_str (str);
+		xmlFree (str);
+	}
+	if (bool_prop (node, "auto-dash", &tmp))
+		line->auto_dash = tmp;
+	str = xmlGetProp (node, "width");
+	if (str != NULL) {
+		line->width = g_strtod (str, NULL);
+		/* For compatibility with older graphs, when dash_type
+		 * didn't exist */
+		if (line->width < 0.) {
+			line->width = 0.;
+			line->dash_type = GO_LINE_NONE;
+		}
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, "color");
+	if (str != NULL) {
+		line->color = go_color_from_str (str);
+		xmlFree (str);
+	}
+	if (bool_prop (node, "auto-color", &tmp))
+		line->auto_color = tmp;
+}
+
+static void
+gog_style_line_dom_save (xmlNode *parent, xmlChar const *name,
+			 GogStyleLine const *line)
+{
+	gchar *str;
+	xmlNode *node = xmlNewDocNode (parent->doc, NULL, name, NULL);
+
+	xmlSetProp (node, (xmlChar const *) "dash", 
+		    go_line_dash_as_str (line->dash_type));
+	xmlSetProp (node, (xmlChar const *) "auto-dash",
+		    line->auto_dash ? "true" : "false");
+	str = g_strdup_printf ("%f",  line->width);
+	xmlSetProp (node, (xmlChar const *) "width", str);
+	g_free (str);
+	str = go_color_as_str (line->color);
+	xmlSetProp (node, (xmlChar const *) "color", str);
+	g_free (str);
+	xmlSetProp (node, (xmlChar const *) "auto-color",
+		    line->auto_color ? "true" : "false");
+	xmlAddChild (parent, node);
+}
+static void
+gog_style_line_sax_save (GsfXMLOut *output, char const *name,
+			 GogStyleLine const *line)
+{
+	gsf_xml_out_start_element (output, name);
+	gsf_xml_out_add_cstr_unchecked (output, "dash",
+		go_line_dash_as_str (line->dash_type));
+	gsf_xml_out_add_bool (output, "auto-dash", line->auto_dash);
+	gsf_xml_out_add_float (output, "width", line->width, 1);
+	go_xml_out_add_color (output, "color", line->color);
+	gsf_xml_out_add_bool (output, "auto-color", line->auto_color);
+	gsf_xml_out_end_element (output);
+}
+
+static void
+gog_style_gradient_sax_save (GsfXMLOut *output, GogStyle const *style)
+{
+	gsf_xml_out_start_element (output, "gradient");
+	gsf_xml_out_add_cstr_unchecked (output, "direction",
+		go_gradient_dir_as_str (style->fill.gradient.dir));
+	go_xml_out_add_color (output, "start-color",
+		style->fill.pattern.back);
+	if (style->fill.gradient.brightness >= 0.)
+		gsf_xml_out_add_float (output, "brightness",
+			style->fill.gradient.brightness, 2);
+	else 
+		go_xml_out_add_color (output, "end-color",
+			style->fill.pattern.fore);
+	gsf_xml_out_end_element (output);
+}
+
+static void
+gog_style_fill_sax_save (GsfXMLOut *output, GogStyle const *style)
+{
+	gsf_xml_out_start_element (output, "fill");
+	gsf_xml_out_add_cstr_unchecked (output, "type",
+		    fill_style_as_str (style->fill.type));
+	gsf_xml_out_add_bool (output, "is-auto",
+		style->fill.auto_back);
+	gsf_xml_out_add_bool (output, "auto-fore",
+		style->fill.auto_fore);
+
+	switch (style->fill.type) {
+	case GOG_FILL_STYLE_NONE: break;
+	case GOG_FILL_STYLE_PATTERN:
+		gsf_xml_out_start_element (output, "pattern");
+		gsf_xml_out_add_cstr_unchecked (output, "type",
+			go_pattern_as_str (style->fill.pattern.pattern));
+		go_xml_out_add_color (output, "fore",
+			style->fill.pattern.fore);
+		go_xml_out_add_color (output, "back",
+			style->fill.pattern.back);
+		gsf_xml_out_end_element (output);
+		break;
+
+	case GOG_FILL_STYLE_GRADIENT:
+		gog_style_gradient_sax_save (output, style);
+		break;
+	case GOG_FILL_STYLE_IMAGE:
+		/* FIXME: TODO */
+		break;
+	default:
+		break;
+	}
+	gsf_xml_out_end_element (output);
+}
+
+static void
+gog_style_gradient_load (xmlNode *node, GogStyle *style)
+{
+	char    *str = xmlGetProp (node, "direction");
+	if (str != NULL) {
+		style->fill.gradient.dir
+			= go_gradient_dir_from_str (str);
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, "start-color");
+	if (str != NULL) {
+		style->fill.pattern.back
+			= go_color_from_str (str);
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, "brightness");
+	if (str != NULL) {
+		gog_style_set_fill_brightness (style, g_strtod (str, NULL));
+		xmlFree (str);
+	} else {
+		str = xmlGetProp (node, "end-color");
+		if (str != NULL) {
+			style->fill.pattern.fore
+				= go_color_from_str (str);
+			xmlFree (str);
+		}
+	}
+}
+
+static void
+gog_style_gradient_dom_save (xmlNode *parent, GogStyle const *style)
+{
+	gchar *str;
+	xmlNode *node =  xmlNewDocNode (parent->doc, NULL, "gradient", NULL);
+
+	xmlSetProp (node, (xmlChar const *) "direction",
+		    go_gradient_dir_as_str (style->fill.gradient.dir));
+	str = go_color_as_str (style->fill.pattern.back);
+	xmlSetProp (node, (xmlChar const *) "start-color", str);
+	g_free (str);
+	if (style->fill.gradient.brightness >= 0.) {
+		str = g_strdup_printf ("%f",
+				       style->fill.gradient.brightness);
+		xmlSetProp (node, (xmlChar const *) "brightness", str);
+		g_free (str);
+	} else {
+		str = go_color_as_str (style->fill.pattern.fore);
+		xmlSetProp (node, (xmlChar const *) "end-color", str);
+		g_free (str);
+	}
+	xmlAddChild (parent, node);
+}
+
+static void
+gog_style_fill_load (xmlNode *node, GogStyle *style)
+{
+	xmlNode *ptr;
+	gboolean tmp;
+	char    *str = xmlGetProp (node, "type");
+
+	if (str == NULL)
+		return;
+	style->fill.type = str_as_fill_style (str);
+	xmlFree (str);
+
+	if (bool_prop (node, "is-auto", &tmp))
+		style->fill.auto_back = tmp;
+	if (bool_prop (node, "auto-fore", &tmp))
+		style->fill.auto_fore = tmp;
+
+	switch (style->fill.type) {
+	case GOG_FILL_STYLE_PATTERN:
+		for (ptr = node->xmlChildrenNode ;
+		     ptr != NULL ; ptr = ptr->next) {
+			if (xmlIsBlankNode (ptr) || ptr->name == NULL)
+				continue;
+			if (strcmp (ptr->name, "pattern") == 0) {
+				str = xmlGetProp (ptr, "type");
+				if (str != NULL) {
+					style->fill.pattern.pattern
+						= go_pattern_from_str (str);
+					xmlFree (str);
+				}
+				str = xmlGetProp (ptr, "fore");
+				if (str != NULL) {
+					style->fill.pattern.fore
+						 = go_color_from_str (str);
+					xmlFree (str);
+				}
+				str = xmlGetProp (ptr, "back");
+				if (str != NULL) {
+					style->fill.pattern.back
+						 = go_color_from_str (str);
+					xmlFree (str);
+				}
+			}
+		}
+		break;
+	case GOG_FILL_STYLE_GRADIENT:
+		for (ptr = node->xmlChildrenNode ;
+		     ptr != NULL ; ptr = ptr->next) {
+			if (xmlIsBlankNode (ptr) || ptr->name == NULL)
+				continue;
+			if (strcmp (ptr->name, "gradient") == 0)
+				gog_style_gradient_load (ptr, style);
+		}
+		break;
+	case GOG_FILL_STYLE_IMAGE:
+		/* FIXME: TODO */
+		break;
+	default:
+		break;
+	}
+}
+
+static void
+gog_style_fill_dom_save (xmlNode *parent, GogStyle const *style)
+{
+	gchar *str;
+	xmlNode *node = xmlNewDocNode (parent->doc, NULL, "fill", NULL);
+	xmlNode *child;
+	xmlSetProp (node, (xmlChar const *) "type",
+		    fill_style_as_str (style->fill.type));
+	xmlSetProp (node, (xmlChar const *) "is-auto",
+		    style->fill.auto_back ? "true" : "false");
+	xmlSetProp (node, (xmlChar const *) "auto-fore",
+		    style->fill.auto_fore ? "true" : "false");
+	switch (style->fill.type) {
+	case GOG_FILL_STYLE_NONE:
+		break;
+	case GOG_FILL_STYLE_PATTERN:
+		child =  xmlNewDocNode (parent->doc, NULL, "pattern", NULL);
+		xmlSetProp (child, (xmlChar const *) "type",
+			    go_pattern_as_str (style->fill.pattern.pattern));
+		str = go_color_as_str (style->fill.pattern.fore);
+		xmlSetProp (child, (xmlChar const *) "fore", str);
+		g_free (str);
+		str = go_color_as_str (style->fill.pattern.back);
+		xmlSetProp (child, (xmlChar const *) "back", str);
+		g_free (str);
+		xmlAddChild (node, child);
+		break;
+	case GOG_FILL_STYLE_GRADIENT:
+		gog_style_gradient_dom_save (node, style);
+		break;
+	case GOG_FILL_STYLE_IMAGE:
+		/* FIXME: TODO */
+		break;
+	default:
+		break;
+	}
+	xmlAddChild (parent, node);
+}
+
+static void
+gog_style_marker_load (xmlNode *node, GogStyle *style)
+{
+	char *str;
+	GOMarker *marker = go_marker_dup (style->marker.mark);
+
+	str = xmlGetProp (node, "shape");
+	if (str != NULL) {
+		style->marker.auto_shape = TRUE;
+		bool_prop (node, "auto-shape", &style->marker.auto_shape);
+		go_marker_set_shape (marker, go_marker_shape_from_str (str));
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, "outline-color");
+	if (str != NULL) {
+		style->marker.auto_outline_color = TRUE;
+		bool_prop (node, "auto-outline", &style->marker.auto_outline_color);
+		go_marker_set_outline_color (marker, go_color_from_str (str));
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, "fill-color");
+	if (str != NULL) {
+		style->marker.auto_fill_color = TRUE;
+		bool_prop (node, "auto-fill", &style->marker.auto_fill_color);
+		go_marker_set_fill_color (marker, go_color_from_str (str));
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, "size");
+	if (str != NULL) {
+		go_marker_set_size (marker, g_strtod (str, NULL));
+		xmlFree (str);
+	}
+	gog_style_set_marker (style, marker);
+}
+
+static void
+gog_style_marker_dom_save (xmlNode *parent, GogStyle const *style)
+{
+	gchar *str;
+	xmlNode *node = xmlNewDocNode (parent->doc, NULL, "marker", NULL);
+
+	xmlSetProp (node, (xmlChar const *) "auto-shape",
+		style->marker.auto_shape ? "true" : "false");
+	xmlSetProp (node, (xmlChar const *) "shape",
+		go_marker_shape_as_str (go_marker_get_shape (style->marker.mark)));
+
+	xmlSetProp (node, (xmlChar const *) "auto-outline",
+		style->marker.auto_outline_color ? "true" : "false");
+	str = go_color_as_str (go_marker_get_outline_color (style->marker.mark));
+	xmlSetProp (node, (xmlChar const *) "outline-color", str);
+	g_free (str);
+
+	xmlSetProp (node, (xmlChar const *) "auto-fill",
+		style->marker.auto_fill_color ? "true" : "false");
+	str = go_color_as_str (go_marker_get_fill_color (style->marker.mark));
+	xmlSetProp (node, (xmlChar const *) "fill-color", str);
+	g_free (str);
+
+	str = g_strdup_printf ("%d", go_marker_get_size (style->marker.mark));
+	xmlSetProp (node, (xmlChar const *) "size", str);
+	g_free (str);
+
+	xmlAddChild (parent, node);
+}
+
+static void
+gog_style_marker_sax_save (GsfXMLOut *output, GogStyle const *style)
+{
+	gsf_xml_out_start_element (output, "marker");
+	gsf_xml_out_add_bool (output, "auto-shape", style->marker.auto_shape);
+	gsf_xml_out_add_cstr (output, "shape",
+		go_marker_shape_as_str (go_marker_get_shape (style->marker.mark)));
+	gsf_xml_out_add_bool (output, "auto-outline", 
+		style->marker.auto_outline_color);
+	go_xml_out_add_color (output, "outline-color",
+		go_marker_get_outline_color (style->marker.mark));
+	gsf_xml_out_add_bool (output, "auto-fill", style->marker.auto_fill_color);
+	go_xml_out_add_color (output, "fill-color",
+		go_marker_get_fill_color (style->marker.mark));
+	gsf_xml_out_add_int (output, "size",
+		go_marker_get_size (style->marker.mark));
+	gsf_xml_out_end_element (output);
+}
+
+static void
+gog_style_font_load (xmlNode *node, GogStyle *style)
+{
+	char *str;
+	gboolean tmp;
+
+	str = xmlGetProp (node, "color");
+	if (str != NULL) {
+		style->font.color = go_color_from_str (str);
+		xmlFree (str);
+	}
+	str = xmlGetProp (node, "font");
+	if (str != NULL) {
+		PangoFontDescription *desc;
+
+		desc = pango_font_description_from_string (str);
+		if (desc != NULL)
+			gog_style_set_font_desc (style, desc);
+		xmlFree (str);
+	}
+	if (bool_prop (node, "auto-scale", &tmp))
+		style->font.auto_scale = tmp;
+}
+
+static void
+gog_style_font_dom_save (xmlNode *parent, GogStyle const *style)
+{
+	gchar *str;
+	xmlNode *node = xmlNewDocNode (parent->doc, NULL, "font", NULL);
+
+	str = go_color_as_str (style->font.color);
+	xmlSetProp (node, (xmlChar const *) "color", str);
+	g_free (str);
+	str = go_font_as_str (style->font.font);
+	xmlSetProp (node, (xmlChar const *) "font", str);
+	g_free (str);
+	xmlSetProp (node, (xmlChar const *) "auto-scale",
+		    style->font.auto_scale ? "true" : "false");
+
+	xmlAddChild (parent, node);
+}
+static void
+gog_style_font_sax_save (GsfXMLOut *output, GogStyle const *style)
+{
+	char *str;
+	gsf_xml_out_start_element (output, "font");
+	go_xml_out_add_color (output, "color", style->font.color);
+	str = go_font_as_str (style->font.font);
+	gsf_xml_out_add_cstr_unchecked (output, "font", str);
+	g_free (str);
+	gsf_xml_out_add_bool (output, "auto-scale", style->font.auto_scale);
+	gsf_xml_out_end_element (output);
+}
+
+static void
+gog_style_text_layout_load (xmlNode *node, GogStyle *style)
+{
+	char *str;
+
+	str = xmlGetProp (node, "angle");
+	if (str != NULL) {
+		gog_style_set_text_angle (style, g_strtod (str, NULL));
+		xmlFree (str);
+	}
+}
+
+static void
+gog_style_text_layout_dom_save (xmlNode *parent, GogStyle const *style)
+{
+	gchar *str;
+	xmlNode *node = xmlNewDocNode (parent->doc, NULL, "text_layout", NULL);
+
+	str = g_strdup_printf ("%g", style->text_layout.angle);
+	xmlSetProp (node, (xmlChar const *) "angle", str);
+	g_free (str);
+
+	xmlAddChild (parent, node);
+}
+
+static void
+gog_style_text_layout_sax_save (GsfXMLOut *output, GogStyle const *style)
+{
+	gsf_xml_out_start_element (output, "text_layout");
+	gsf_xml_out_add_float (output, "angle", style->text_layout.angle, 1);
+	gsf_xml_out_end_element (output);
+}
+
+static gboolean
+gog_style_persist_dom_load (GogPersist *gp, xmlNode *node)
+{
+	GogStyle *style = GOG_STYLE (gp);
+	xmlNode *ptr;
+
+	/* while reloading no need to reapply settings */
+	for (ptr = node->xmlChildrenNode ; ptr != NULL ; ptr = ptr->next) {
+		if (xmlIsBlankNode (ptr) || ptr->name == NULL)
+			continue;
+		if (strcmp (ptr->name, "outline") == 0)
+			gog_style_line_load (ptr, &style->outline);
+		else if (strcmp (ptr->name, "line") == 0)
+			gog_style_line_load (ptr, &style->line);
+		else if (strcmp (ptr->name, "fill") == 0)
+			gog_style_fill_load (ptr, style);
+		else if (strcmp (ptr->name, "marker") == 0)
+			gog_style_marker_load (ptr, style);
+		else if (strcmp (ptr->name, "font") == 0)
+			gog_style_font_load (ptr, style);
+		else if (strcmp (ptr->name, "text_layout") == 0)
+			gog_style_text_layout_load (ptr, style);
+	}
+	return TRUE;
+}
+
+static void
+gog_style_persist_dom_save (GogPersist const *gp, xmlNode *parent)
+{
+	GogStyle const *style = GOG_STYLE (gp);
+
+	xmlSetProp (parent, (xmlChar const *) "type",
+		G_OBJECT_TYPE_NAME (style));
+
+	if (style->interesting_fields & GOG_STYLE_OUTLINE)
+		gog_style_line_dom_save (parent, "outline", &style->outline);
+	if (style->interesting_fields & GOG_STYLE_LINE)
+		gog_style_line_dom_save (parent, "line", &style->line);
+	if (style->interesting_fields & GOG_STYLE_FILL)
+		gog_style_fill_dom_save (parent, style);
+	if (style->interesting_fields & GOG_STYLE_MARKER)
+		gog_style_marker_dom_save (parent, style);
+	if (style->interesting_fields & GOG_STYLE_FONT)
+		gog_style_font_dom_save (parent, style);
+	if (style->interesting_fields & GOG_STYLE_TEXT_LAYOUT)
+		gog_style_text_layout_dom_save (parent, style);
+}
+
+static void
+gog_style_persist_sax_save (GogPersist const *gp, GsfXMLOut *output)
+{
+	GogStyle const *style = GOG_STYLE (gp);
+
+	gsf_xml_out_add_cstr_unchecked (output, "type",
+		G_OBJECT_TYPE_NAME (style));
+
+	if (style->interesting_fields & GOG_STYLE_OUTLINE)
+		gog_style_line_sax_save (output, "outline", &style->outline);
+	if (style->interesting_fields & GOG_STYLE_LINE)
+		gog_style_line_sax_save (output, "line", &style->line);
+	if (style->interesting_fields & GOG_STYLE_FILL)
+		gog_style_fill_sax_save (output, style);
+	if (style->interesting_fields & GOG_STYLE_MARKER)
+		gog_style_marker_sax_save (output, style);
+	if (style->interesting_fields & GOG_STYLE_FONT)
+		gog_style_font_sax_save (output, style);
+	if (style->interesting_fields & GOG_STYLE_TEXT_LAYOUT)
+		gog_style_text_layout_sax_save (output, style);
+}
+
+static void
+gog_style_persist_init (GogPersistClass *iface)
+{
+	iface->dom_load = gog_style_persist_dom_load;
+	iface->dom_save = gog_style_persist_dom_save;
+	iface->sax_save = gog_style_persist_sax_save;
+}
+
+GSF_CLASS_FULL (GogStyle, gog_style,
+		NULL, NULL, gog_style_class_init, NULL,
+		gog_style_init, G_TYPE_OBJECT, 0,
+		GSF_INTERFACE (gog_style_persist_init, GOG_PERSIST_TYPE))
+
+gboolean
+gog_style_is_different_size (GogStyle const *a, GogStyle const *b)
+{
+	if (a == NULL || b == NULL)
+		return TRUE;
+	return	a->outline.dash_type != b->outline.dash_type ||
+		a->outline.width != b->outline.width ||
+		a->line.width != b->line.width ||
+		a->fill.type != b->fill.type ||
+		a->text_layout.angle != b->text_layout.angle ||
+		!go_font_eq (a->font.font, b->font.font);
+}
+
+gboolean
+gog_style_is_marker_visible (GogStyle const *style)
+{
+#warning TODO : make this smarter
+	return (style->interesting_fields & GOG_STYLE_MARKER) &&
+		go_marker_get_shape (style->marker.mark) != GO_MARKER_NONE;
+}
+
+gboolean
+gog_style_is_outline_visible (GogStyle const *style)
+{
+#warning TODO : make this smarter
+	return UINT_RGBA_A (style->outline.color) > 0 && 
+		style->outline.dash_type != GO_LINE_NONE;
+}
+
+gboolean
+gog_style_is_line_visible (GogStyle const *style)
+{
+#warning TODO : make this smarter
+	return UINT_RGBA_A (style->line.color) > 0 && 
+		style->line.dash_type != GO_LINE_NONE;
+}
+
+void
+gog_style_force_auto (GogStyle *style)
+{
+
+	if (style->marker.mark != NULL)
+		g_object_unref (G_OBJECT (style->marker.mark));
+	style->marker.mark = go_marker_new ();
+	style->marker.auto_shape =
+	style->marker.auto_outline_color =
+	style->marker.auto_fill_color =
+	style->outline.auto_dash =
+	style->outline.auto_color =
+	style->line.auto_dash =
+	style->line.auto_color =
+	style->fill.auto_fore =
+	style->fill.auto_back =
+	style->font.auto_scale =
+	style->text_layout.auto_angle = TRUE;
+}
+
+/**
+ * gog_style_set_marker :
+ * @style : #GogStyle
+ * @marker : #GOMarker
+ *
+ * Absorb a reference to @marker and assign it to @style.
+ **/
+void
+gog_style_set_marker (GogStyle *style, GOMarker *marker)
+{
+	g_return_if_fail (GOG_STYLE (style) != NULL);
+	g_return_if_fail (GO_MARKER (marker) != NULL);
+
+	if (style->marker.mark != marker) {
+		if (style->marker.mark != NULL)
+			g_object_unref (style->marker.mark);
+		style->marker.mark = marker;
+	}
+}
+
+void
+gog_style_set_font_desc (GogStyle *style, PangoFontDescription *desc)
+{
+	GOFont const *font;
+
+	g_return_if_fail (GOG_STYLE (style) != NULL);
+
+	font = go_font_new_by_desc (desc);
+	if (font != NULL) {
+		go_font_unref (style->font.font);
+		style->font.font = font;
+	}
+}
+
+void
+gog_style_set_font (GogStyle *style, GOFont const *font)
+{
+	g_return_if_fail (GOG_STYLE (style) != NULL);
+
+	if (font != NULL) {
+		go_font_unref (style->font.font);
+		style->font.font = font;
+	}
+}
+
+void
+gog_style_set_fill_brightness (GogStyle *style, float brightness)
+{
+	g_return_if_fail (GOG_STYLE (style) != NULL);
+	g_return_if_fail (style->fill.type == GOG_FILL_STYLE_GRADIENT);
+
+	style->fill.gradient.brightness = brightness;
+	style->fill.pattern.fore = (brightness < 50.)
+		? UINT_INTERPOLATE(style->fill.pattern.back, RGBA_WHITE, 1. - brightness / 50.)
+		: UINT_INTERPOLATE(style->fill.pattern.back, RGBA_BLACK, brightness / 50. - 1.);
+}
+
+/**
+ * gog_style_set_fill_image_filename :
+ * @style : #GogStyle
+ * @filename :
+ *
+ * absorb the string and eventually free it.
+ **/
+void
+gog_style_set_fill_image_filename (GogStyle *style, char *filename)
+{
+	g_return_if_fail (GOG_STYLE (style) != NULL);
+
+	if (style->fill.type == GOG_FILL_STYLE_IMAGE) {
+		if (style->fill.image.image != NULL)
+			g_object_unref (style->fill.image.image);
+		g_free (style->fill.image.filename);
+	} else {
+		style->fill.type = GOG_FILL_STYLE_IMAGE;
+		style->fill.image.type = GOG_IMAGE_CENTERED;
+	}
+
+	style->fill.image.filename = filename;
+	style->fill.image.image = gdk_pixbuf_new_from_file (filename, NULL);
+}
+
+/**
+ * gog_style_set_text_angle:
+ * @style : #GogStyle
+ * @angle : text rotation in degrees
+ *
+ * Set text rotation angle in degrees. Valid values are in the range
+ * [-180.0° , 180.0°].
+ **/
+void
+gog_style_set_text_angle (GogStyle *style, double angle)
+{
+	g_return_if_fail (GOG_STYLE (style) != NULL);
+
+	style->text_layout.angle = CLAMP (angle, -180.0, 180.0);
+	style->text_layout.auto_angle = FALSE;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-style.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,152 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-style.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_GRAPH_STYLE_H
+#define GO_GRAPH_STYLE_H
+
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-object-xml.h>
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/utils/goffice-utils.h>
+#include <goffice/app/goffice-app.h>
+#include <goffice/utils/go-gradient.h>
+#include <goffice/utils/go-line.h>
+#include <goffice/utils/go-pattern.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_STYLE_TYPE	(gog_style_get_type ())
+#define GOG_STYLE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_STYLE_TYPE, GogStyle))
+#define IS_GOG_STYLE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_STYLE_TYPE))
+
+GType gog_style_get_type (void);
+
+typedef enum {
+	GOG_STYLE_OUTLINE	= 1 << 0,
+	GOG_STYLE_FILL		= 1 << 1,
+	GOG_STYLE_LINE		= 1 << 2,
+	GOG_STYLE_MARKER	= 1 << 3,
+	GOG_STYLE_FONT		= 1 << 4,
+	GOG_STYLE_TEXT_LAYOUT	= 1 << 5,
+	GOG_STYLE_ALL		= 0x1F
+} GogStyleFlag;
+
+typedef enum {
+	GOG_FILL_STYLE_NONE	= 0,
+	GOG_FILL_STYLE_PATTERN	= 1,
+	GOG_FILL_STYLE_GRADIENT	= 2,
+	GOG_FILL_STYLE_IMAGE	= 3
+} GogFillStyle;
+
+typedef enum {
+	GOG_IMAGE_STRETCHED,
+	GOG_IMAGE_WALLPAPER,
+	GOG_IMAGE_CENTERED
+} GogImageType;
+
+typedef struct {
+	/* <0 == no outline,
+	 * =0 == hairline : unscaled, minimum useful (can be bigger than visible) size.
+	 * >0 in pts */
+	float	 	 width;
+	GOLineDashType 	 dash_type;
+	gboolean	 auto_dash;
+	GOColor	 	 color;
+	gboolean 	 auto_color;
+	unsigned 	 pattern; /* TODO border type from gnumeric */
+} GogStyleLine;
+
+typedef struct {
+	GOMarker *mark;
+	gboolean auto_shape;
+	gboolean auto_outline_color;
+	gboolean auto_fill_color;
+} GogStyleMark;
+
+struct _GogStyle {
+	GObject	base;
+
+	GogStyleFlag	interesting_fields;
+	GogStyleFlag	disable_theming;
+
+	GogStyleLine	outline, line;
+	struct {
+		GogFillStyle	type;
+		gboolean	auto_fore, auto_back;	/* share between pattern and gradient */
+		gboolean	invert_if_negative;	/* placeholder for XL */
+
+		/* This could all be a union but why bother ? */
+		GOPattern pattern;
+		struct {
+			GOGradientDirection dir;
+			float   brightness; /* < 0 => 2 color */
+		} gradient;
+		struct {
+			GogImageType type;
+			GdkPixbuf *image;
+			char      *filename;
+		} image;
+	} fill;
+	GogStyleMark marker;
+	struct {
+		GOColor		 color;
+		GOFont const 	*font;
+		gboolean 	 auto_scale;
+	} font;
+	struct {
+		double		 angle;
+		gboolean	 auto_angle; 
+	} text_layout;	
+};
+
+GogStyle  *gog_style_new		(void);
+GogStyle  *gog_style_dup		(GogStyle const *style);
+void	   gog_style_assign		(GogStyle *dst, GogStyle const *src);
+void	   gog_style_apply_theme	(GogStyle *dst, GogStyle const *src);
+
+void	   gog_style_set_marker			(GogStyle *style, GOMarker *marker);
+void	   gog_style_set_font_desc		(GogStyle *style,
+						 PangoFontDescription *desc);
+void	   gog_style_set_font			(GogStyle *style, GOFont const *font);
+void	   gog_style_set_fill_brightness	(GogStyle *style, float brightness);
+void	   gog_style_set_fill_image_filename	(GogStyle *style, char *filename);
+void	   gog_style_set_text_angle     	(GogStyle *style, double angle);
+
+gboolean   gog_style_is_different_size	(GogStyle const *a, GogStyle const *b);
+gboolean   gog_style_is_marker_visible	(GogStyle const *style);
+gboolean   gog_style_is_line_visible	(GogStyle const *style);
+gboolean   gog_style_is_outline_visible	(GogStyle const *style);
+void	   gog_style_force_auto		(GogStyle *style);
+
+void 	   gog_style_populate_editor 	(GogStyle *style,
+					 GogEditor *editor,
+					 GogStyle *default_style,
+					 GOCmdContext *cc,
+					 GObject *object_with_style,
+					 gboolean watch_for_external_change);
+gpointer   gog_style_get_editor	     	(GogStyle *style,
+					 GogStyle *default_style,
+					 GOCmdContext *cc,
+					 GObject *object_with_style);
+
+G_END_DECLS
+
+#endif /* GO_GRAPH_STYLE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,239 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-styled-object.c : A base class for objects that have associated styles
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-styled-object.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-graph.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+enum {
+	STYLED_OBJECT_PROP_0,
+	STYLED_OBJECT_PROP_STYLE
+};
+
+enum {
+	STYLE_CHANGED,
+	LAST_SIGNAL
+};
+static gulong gog_styled_object_signals [LAST_SIGNAL] = { 0, };
+static GObjectClass *parent_klass;
+
+void
+gog_styled_object_style_changed (GogStyledObject *obj)
+{
+	g_signal_emit (G_OBJECT (obj),
+		gog_styled_object_signals [STYLE_CHANGED], 0, obj->style);
+}
+
+static void
+gog_styled_object_set_property (GObject *obj, guint param_id,
+				GValue const *value, GParamSpec *pspec)
+{
+	GogStyledObject *gso = GOG_STYLED_OBJECT (obj);
+	gboolean resize = FALSE;
+
+	switch (param_id) {
+
+	case STYLED_OBJECT_PROP_STYLE :
+		resize = gog_styled_object_set_style (gso, 
+	      		g_value_get_object (value));
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), resize);
+}
+
+static void
+gog_styled_object_get_property (GObject *obj, guint param_id,
+				GValue *value, GParamSpec *pspec)
+{
+	GogStyledObject *gso = GOG_STYLED_OBJECT (obj);
+
+	switch (param_id) {
+	case STYLED_OBJECT_PROP_STYLE :
+		g_value_set_object (value, gso->style);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_styled_object_finalize (GObject *obj)
+{
+	GogStyledObject *gso = GOG_STYLED_OBJECT (obj);
+
+	if (gso->style != NULL) {
+		g_object_unref (gso->style);
+		gso->style = NULL;
+	}
+
+	(*parent_klass->finalize) (obj);
+}
+
+static void
+styled_object_populate_editor (GogObject *gobj, 
+			       GogEditor *editor,
+			       GogDataAllocator *dalloc,
+		      GOCmdContext *cc)
+{
+	GogStyledObject *gso = GOG_STYLED_OBJECT (gobj);
+	GogStyle *style = gog_style_dup (gog_styled_object_get_style (gso));
+
+	if (style->interesting_fields != 0) {
+		GogStyle *default_style = gog_styled_object_get_auto_style (gso);
+		gog_style_populate_editor (style, editor, default_style, cc, G_OBJECT (gso), TRUE);
+		g_object_unref (default_style);
+	}
+	g_object_unref (style);
+	
+	(GOG_OBJECT_CLASS(parent_klass)->populate_editor) (gobj, editor, dalloc, cc);
+}
+
+static void
+gog_styled_object_parent_changed (GogObject *obj, gboolean was_set)
+{
+	GogObjectClass *gog_object_klass = GOG_OBJECT_CLASS (parent_klass);
+	if (was_set) {
+		GogStyledObject *gso = GOG_STYLED_OBJECT (obj);
+		gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+			gso->style, GOG_OBJECT (gso), 0, TRUE);
+		gog_styled_object_apply_theme (gso, gso->style);
+	}
+	gog_object_klass->parent_changed (obj, was_set);
+}
+
+static void
+gog_styled_object_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	style->interesting_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL; /* default */
+	gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+		style, GOG_OBJECT (gso), 0, FALSE);
+}
+
+static void
+gog_styled_object_class_init (GogObjectClass *gog_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) gog_klass;
+	GogStyledObjectClass *style_klass = (GogStyledObjectClass *) gog_klass;
+
+	gog_styled_object_signals [STYLE_CHANGED] = g_signal_new ("style-changed",
+		G_TYPE_FROM_CLASS (gog_klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GogStyledObjectClass, style_changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__OBJECT,
+		G_TYPE_NONE,
+		1, G_TYPE_OBJECT);
+
+	parent_klass = g_type_class_peek_parent (gog_klass);
+
+	gobject_klass->set_property = gog_styled_object_set_property;
+	gobject_klass->get_property = gog_styled_object_get_property;
+	gobject_klass->finalize	    = gog_styled_object_finalize;
+	gog_klass->populate_editor  = styled_object_populate_editor;
+	gog_klass->parent_changed   = gog_styled_object_parent_changed;
+	style_klass->init_style	    = gog_styled_object_init_style;
+
+	g_object_class_install_property (gobject_klass, STYLED_OBJECT_PROP_STYLE,
+		g_param_spec_object ("style", "style",
+			"GogStyle *",
+			GOG_STYLE_TYPE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_styled_object_init (GogStyledObject *gso)
+{
+	gso->style = gog_style_new (); /* use the defaults */
+}
+
+GSF_CLASS (GogStyledObject, gog_styled_object,
+	   gog_styled_object_class_init, gog_styled_object_init,
+	   GOG_OBJECT_TYPE)
+
+gboolean
+gog_styled_object_set_style (GogStyledObject *gso,
+			     GogStyle *style)
+{
+	gboolean resize;
+
+	g_return_val_if_fail (GOG_STYLED_OBJECT (gso) != NULL, FALSE);
+
+	if (gso->style == style)
+		return FALSE;
+	style = gog_style_dup (style);
+
+	/* which fields are we interested in for this object */
+	gog_styled_object_apply_theme (gso, style);
+	gog_styled_object_style_changed (gso);
+	resize = gog_style_is_different_size (gso->style, style);
+	if (gso->style != NULL)
+		g_object_unref (gso->style);
+	gso->style = style;
+
+	return resize;
+}
+
+/**
+ * gog_styled_object_get_style :
+ * @gso : #GogStyledObject
+ *
+ * Returns a pointer to @gso's style but does not reference it.
+ **/
+GogStyle *
+gog_styled_object_get_style (GogStyledObject *gso)
+{
+	g_return_val_if_fail (GOG_STYLED_OBJECT (gso) != NULL, NULL);
+	return gso->style;
+}
+
+/**
+ * gog_styled_object_get_auto_style :
+ * @gso : #GogStyledObject
+ *
+ * Returns a new style that is initialized with the auto values for @gso.
+ * Caller is responsible for the result.
+ **/
+GogStyle *
+gog_styled_object_get_auto_style (GogStyledObject *gso)
+{
+	GogStyle *res = gog_style_dup (gso->style);
+	gog_style_force_auto (res);
+	gog_styled_object_apply_theme (gso, res);
+	return res;
+}
+
+void
+gog_styled_object_apply_theme (GogStyledObject *gso, GogStyle *style)
+{
+	GogGraph const *graph = gog_object_get_graph (GOG_OBJECT (gso));
+	if (graph != NULL) {
+		GogStyledObjectClass *klass = GOG_STYLED_OBJECT_GET_CLASS (gso);
+		(klass->init_style) (gso, style);
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-styled-object.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,59 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-styled-object.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_STYLED_OBJECT_H
+#define GOG_STYLED_OBJECT_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <goffice/graph/gog-object.h>
+
+G_BEGIN_DECLS
+
+struct _GogStyledObject {
+	GogObject	base;
+
+	GogStyle	*style;
+};
+
+typedef struct {
+	GogObjectClass base;
+
+	/* virtual */
+	void	  (*init_style)     	(GogStyledObject *obj, GogStyle *style);
+
+	/* signal */
+	void (*style_changed) (GogStyledObject *obj, GogStyle const *new_style);
+} GogStyledObjectClass;
+
+#define GOG_STYLED_OBJECT_TYPE	(gog_styled_object_get_type ())
+#define GOG_STYLED_OBJECT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_STYLED_OBJECT_TYPE, GogStyledObject))
+#define IS_GOG_STYLED_OBJECT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_STYLED_OBJECT_TYPE))
+#define GOG_STYLED_OBJECT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_STYLED_OBJECT_TYPE, GogStyledObjectClass))
+
+GType     gog_styled_object_get_type (void);
+gboolean  gog_styled_object_set_style 	   (GogStyledObject *gso, GogStyle *style);
+GogStyle *gog_styled_object_get_style	   (GogStyledObject *gso);
+GogStyle *gog_styled_object_get_auto_style (GogStyledObject *gso);
+void	  gog_styled_object_style_changed  (GogStyledObject *gso);
+void	  gog_styled_object_apply_theme	   (GogStyledObject *gso, GogStyle *style);
+
+G_END_DECLS
+
+#endif /* GOG_STYLED_OBJECT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,689 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-theme.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-gradient.h>
+#include <goffice/utils/go-units.h>
+#include <goffice/utils/go-marker.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <string.h>
+
+typedef void (*GogThemeStyleMap) (GogStyle *style, unsigned ind);
+typedef struct {
+	/* if role is non-null, it specifies the container class,
+	 * if role is null, it specifies object type */
+	char const *klass_name;
+	char const *role_id;
+	GogStyle	 *style;
+	GogThemeStyleMap  map;
+} GogThemeElement;
+struct _GogTheme {
+	GObject	base;
+
+	char 		*name;
+	char 		*load_from_file; /* optionally NULL */
+	GHashTable	*elem_hash_by_role;
+	GHashTable	*elem_hash_by_role_id;
+	GHashTable	*elem_hash_by_class;
+	GHashTable	*elem_hash_by_class_name;
+	GHashTable	*class_aliases;
+	GogStyle	*default_style;
+};
+typedef GObjectClass GogThemeClass;
+
+static GObjectClass *parent_klass;
+static GSList	    *themes;
+static GogTheme	    *default_theme = NULL;
+static GHashTable   *global_class_aliases = NULL;
+
+static void
+gog_theme_element_free (GogThemeElement *elem)
+{
+	g_object_unref (elem->style);
+	g_free (elem);
+}
+static guint
+gog_theme_element_hash (GogThemeElement const *elem)
+{
+	return g_str_hash (elem->role_id);
+}
+static gboolean
+gog_theme_element_eq (GogThemeElement const *a, GogThemeElement const *b)
+{
+	if (!g_str_equal (a->role_id, b->role_id))
+		return FALSE;
+	if (a->klass_name == NULL)
+		return b->klass_name == NULL;
+	if (b->klass_name == NULL)
+		return FALSE;
+	return g_str_equal (a->klass_name, b->klass_name);
+}
+
+static void
+gog_theme_finalize (GObject *obj)
+{
+	GogTheme *theme = GOG_THEME (obj);
+
+	g_free (theme->name); theme->name = NULL;
+	g_free (theme->load_from_file); theme->load_from_file = NULL;
+	if (theme->elem_hash_by_role)
+		g_hash_table_destroy (theme->elem_hash_by_role);
+	if (theme->elem_hash_by_role_id)
+		g_hash_table_destroy (theme->elem_hash_by_role_id);
+	if (theme->elem_hash_by_class)
+		g_hash_table_destroy (theme->elem_hash_by_class);
+	if (theme->elem_hash_by_class_name)
+		g_hash_table_destroy (theme->elem_hash_by_class_name);
+	if (theme->class_aliases)
+		g_hash_table_destroy (theme->class_aliases);
+
+	(parent_klass->finalize) (obj);
+}
+
+static void
+gog_theme_class_init (GogThemeClass *klass)
+{
+	GObjectClass *gobject_klass   = (GObjectClass *) klass;
+
+	parent_klass = g_type_class_peek_parent (klass);
+	gobject_klass->finalize	    = gog_theme_finalize;
+}
+
+static void
+gog_theme_init (GogTheme *theme)
+{
+	theme->elem_hash_by_role = g_hash_table_new (
+		g_direct_hash, g_direct_equal);
+	theme->elem_hash_by_class = g_hash_table_new (
+		g_direct_hash, g_direct_equal);
+	theme->elem_hash_by_role_id = g_hash_table_new_full (
+		(GHashFunc) gog_theme_element_hash,
+		(GCompareFunc) gog_theme_element_eq,
+		NULL, (GDestroyNotify) gog_theme_element_free);
+	theme->elem_hash_by_class_name = g_hash_table_new_full (
+		g_str_hash, g_str_equal,
+		NULL, (GDestroyNotify) gog_theme_element_free);
+	theme->class_aliases = g_hash_table_new (
+		g_str_hash, g_str_equal);
+}
+
+GSF_CLASS (GogTheme, gog_theme,
+	   gog_theme_class_init, gog_theme_init,
+	   G_TYPE_OBJECT)
+
+static GogThemeElement *
+gog_theme_find_element (GogTheme *theme, GogObject *obj)
+{
+	GogThemeElement *elem = NULL;
+	GObjectClass *klass;
+	char const *name;
+
+	if (theme == NULL)
+		theme = default_theme;
+
+	g_return_val_if_fail (theme != NULL, NULL);
+
+	if (theme->load_from_file != NULL) {
+#warning TODO parse some xml
+	}
+
+	/* 1) have we seen this specific role before */
+	if (obj->role != NULL)
+		elem = g_hash_table_lookup (theme->elem_hash_by_role, obj->role);
+
+	/* 2) have we seen this specific type before */
+	if (elem == NULL) {
+		klass = G_OBJECT_GET_CLASS (obj);
+		elem = g_hash_table_lookup (theme->elem_hash_by_class, klass);
+	}
+
+	/* 3) Search by role */
+	if (elem == NULL && obj->role != NULL && obj->parent != NULL) {
+		GogThemeElement key;
+
+		/* 3.1) Search by specific role */
+		key.role_id = obj->role->id;
+		key.klass_name = G_OBJECT_TYPE_NAME (obj->parent);
+		elem = g_hash_table_lookup (theme->elem_hash_by_role_id, &key);
+
+		/* 3.2) Search by generic role */
+		if (elem == NULL) {
+			key.klass_name = NULL;
+			elem = g_hash_table_lookup (theme->elem_hash_by_role_id, &key);
+		}
+
+		if (elem != NULL)	/* if found lets cache the result */
+			g_hash_table_insert (theme->elem_hash_by_role,
+				(gpointer) obj->role, elem);
+	}
+
+	/* 4) Still not found ? search by object type */
+	if (elem == NULL) {
+		do {
+			name = G_OBJECT_CLASS_NAME (klass);
+			elem = g_hash_table_lookup (	/* 4.1) is the type known */
+				theme->elem_hash_by_class_name, name);
+			if (elem == NULL) {		/* 4.2) is this a local alias */
+				name = g_hash_table_lookup (
+					theme->class_aliases, name);
+				if (name != NULL)
+					elem = g_hash_table_lookup (
+						theme->elem_hash_by_class_name, name);
+			}
+			if (elem == NULL &&
+			    global_class_aliases != NULL) { /* 4.3) is this a global alias */
+				name = g_hash_table_lookup (
+					global_class_aliases, G_OBJECT_CLASS_NAME (klass));
+				if (name != NULL)
+					elem = g_hash_table_lookup (
+						theme->elem_hash_by_class_name, name);
+			}
+		} while (elem == NULL &&
+			 (klass = g_type_class_peek_parent (klass)) != NULL);
+		if (elem != NULL)	/* if found lets cache the result */
+			g_hash_table_insert (theme->elem_hash_by_class, klass, elem);
+	}
+
+	return elem;
+}
+
+/**
+ * gog_theme_fillin_style :
+ * @theme : #GogTheme
+ * @style : #GogStyle to initialize
+ * @obj : #GogObject The object associated with @style
+ * @ind : an optional index
+ * @complete_overwrite : boolean
+ *
+ * Fill in the auto aspects of @style based on @theme 's element for objects of
+ * type/role similar to @obj with index @ind.  If @complete_overwrite is used,
+ * fillin the entire style, not just the auto portions.
+ **/
+void
+gog_theme_fillin_style (GogTheme *theme, GogStyle *style,
+			GogObject *obj, int ind, gboolean complete_overwrite)
+{
+	GogThemeElement *elem = gog_theme_find_element (theme, obj);
+
+	g_return_if_fail (elem != NULL);
+
+	if (complete_overwrite)
+		gog_style_assign (style, elem->style);
+	else
+		gog_style_apply_theme (style, elem->style);
+
+#warning we should handle the applicability here not in the map
+	if (ind >= 0 && elem->map)
+		(elem->map) (style, ind);
+}
+
+void
+gog_theme_register (GogTheme *theme, gboolean is_default)
+{
+	g_return_if_fail (GOG_THEME (theme) != NULL);
+
+	if (is_default) {
+		g_object_ref (theme);
+		if (default_theme != NULL)
+			g_object_unref (default_theme);
+		default_theme = theme;
+	}
+
+	themes = g_slist_prepend (themes, theme);
+}
+
+static GogTheme *
+gog_theme_new (char const *name)
+{
+	GogTheme *theme = g_object_new (GOG_THEME_TYPE, NULL);
+	theme->name = g_strdup (name);
+	return theme;
+}
+
+void
+gog_theme_register_file (char const *name, char const *file)
+{
+	GogTheme *theme = gog_theme_new (name);
+	theme->load_from_file = g_strdup (file);
+}
+
+#if 0
+static void
+gog_theme_add_alias (GogTheme *theme, char const *from, char const *to)
+{
+	g_hash_table_insert (theme->class_aliases, (gpointer)from, (gpointer)to);
+}
+#endif
+
+static void
+gog_theme_add_element (GogTheme *theme, GogStyle *style,
+		       GogThemeStyleMap	map,
+		       char const *klass_name, char const *role_id)
+{
+	GogThemeElement *elem;
+
+	g_return_if_fail (theme != NULL);
+
+	elem = g_new0 (GogThemeElement, 1);
+	elem->klass_name = klass_name;
+	elem->role_id  = role_id;
+	elem->style = style;
+	elem->map   = map;
+
+	/* Never put an element into both by_role_id & by_class_name */
+	if (role_id != NULL)
+		g_hash_table_insert (theme->elem_hash_by_role_id,
+			(gpointer)elem, elem);
+	else if (klass_name != NULL)
+		g_hash_table_insert (theme->elem_hash_by_class_name,
+			(gpointer)klass_name, elem);
+	else {
+		if (theme->default_style)
+			g_object_unref (theme->default_style);
+		theme->default_style = style;
+		g_free (elem);
+	}
+}
+
+GogTheme *
+gog_theme_lookup (char const *name)
+{
+	GSList *ptr;
+	GogTheme *theme;
+
+	if (name != NULL) {
+		for (ptr = themes ; ptr != NULL ; ptr = ptr->next) {
+			theme = ptr->data;
+			if (!strcmp (theme->name, name))
+				return theme;
+		}
+		g_warning ("No theme named '%s' found, using default", name);
+	}
+	return default_theme;
+}
+
+char const *
+gog_theme_get_name (GogTheme const *theme)
+{
+	g_return_val_if_fail (GOG_THEME (theme) != NULL, "");
+	return theme->name;
+}
+
+/**************************************************************************/
+
+static void
+map_marker (GogStyleMark *mark, unsigned shape, unsigned palette_index,
+	    GOColor const *palette)
+{
+	static GOMarkerShape const shape_palette [] = {
+		GO_MARKER_DIAMOND,	GO_MARKER_SQUARE,
+		GO_MARKER_TRIANGLE_UP,	GO_MARKER_X,
+		GO_MARKER_ASTERISK,	GO_MARKER_CIRCLE,
+		GO_MARKER_CROSS,	GO_MARKER_HALF_BAR,
+		GO_MARKER_BAR
+	};
+	static gboolean const shape_is_fill_transparent [] = {
+		TRUE,	TRUE,
+		TRUE,	FALSE,
+		FALSE,	TRUE,
+		FALSE,	TRUE,
+		TRUE
+	};
+
+	if (shape >= G_N_ELEMENTS (shape_palette))
+		shape %= G_N_ELEMENTS (shape_palette);
+
+	if (mark->auto_shape)
+		go_marker_set_shape (mark->mark, shape_palette [shape]);
+	if (mark->auto_outline_color)
+		go_marker_set_outline_color (mark->mark,
+			palette [palette_index]);
+	if (mark->auto_fill_color)
+		go_marker_set_fill_color (mark->mark,
+			shape_is_fill_transparent [shape]
+			? palette [palette_index] : 0);
+}
+
+static void
+map_area_series_solid_default (GogStyle *style, unsigned ind)
+{
+	static GOColor const palette [] = {
+		0x9c9cffff, 0x9c3163ff, 0xffffceff, 0xceffffff, 0x630063ff,
+		0xff8080ff, 0x0063ceff, 0xceceffff, 0x000080ff, 0xff00ffff,
+		0xffff00ff, 0x00ffffff, 0x800080ff, 0x800000ff, 0x008080ff,
+		0x0000ffff, 0x00ceffff, 0xceffffff, 0xceffceff, 0xffff9cff,
+		0x9cceffff, 0xff9cceff, 0xce9cffff, 0xffce9cff, 0x3163ffff,
+		0x31ceceff, 0x9cce00ff, 0xffce00ff, 0xff9c00ff, 0xff6300ff,
+		0x63639cff, 0x949494ff, 0x003163ff, 0x319c63ff, 0x003100ff,
+		0x313100ff, 0x9c3100ff, 0x9c3163ff, 0x31319cff, 0x313131ff,
+		0xffffffff, 0xff0000ff, 0x00ff00ff, 0x0000ffff, 0xffff00ff,
+		0xff00ffff, 0x00ffffff, 0x800000ff, 0x008000ff, 0x000080ff,
+		0x808000ff, 0x800080ff, 0x008080ff, 0xc6c6c6ff, 0x808080ff
+	};
+
+	unsigned palette_index = ind;
+	if (palette_index >= G_N_ELEMENTS (palette))
+		palette_index %= G_N_ELEMENTS (palette);
+	if (style->fill.auto_back) {
+		style->fill.pattern.back = palette [palette_index];
+
+		/* force the brightness to reinterpolate */
+		if (style->fill.type == GOG_FILL_STYLE_GRADIENT &&
+		    style->fill.gradient.brightness >= 0)
+			gog_style_set_fill_brightness (style,
+				style->fill.gradient.brightness);
+	}
+
+	palette_index += 8;
+	if (palette_index >= G_N_ELEMENTS (palette))
+		palette_index -= G_N_ELEMENTS (palette);
+	if (style->line.auto_color && !(style->disable_theming & GOG_STYLE_LINE))
+		style->line.color = palette [palette_index];
+	if (!(style->disable_theming & GOG_STYLE_MARKER))
+		map_marker (&style->marker, ind, palette_index, palette);
+}
+
+static void
+map_area_series_solid_guppi (GogStyle *style, unsigned ind)
+{
+	static GOColor const palette[] = {
+		0xff3000ff, 0x80ff00ff, 0x00ffcfff, 0x2000ffff,
+		0xff008fff, 0xffbf00ff, 0x00ff10ff, 0x009fffff,
+		0xaf00ffff, 0xff0000ff, 0xafff00ff, 0x00ff9fff,
+		0x0010ffff, 0xff00bfff, 0xff8f00ff, 0x20ff00ff,
+		0x00cfffff, 0x8000ffff, 0xff0030ff, 0xdfff00ff,
+		0x00ff70ff, 0x0040ffff, 0xff00efff, 0xff6000ff,
+		0x50ff00ff, 0x00ffffff, 0x5000ffff, 0xff0060ff,
+		0xffef00ff, 0x00ff40ff, 0x0070ffff, 0xdf00ffff
+	};
+
+	unsigned palette_index = ind;
+	if (palette_index >= G_N_ELEMENTS (palette))
+		palette_index %= G_N_ELEMENTS (palette);
+	if (style->fill.auto_back) {
+		style->fill.pattern.back = palette [palette_index];
+		if (style->fill.type == GOG_FILL_STYLE_GRADIENT &&
+		    style->fill.gradient.brightness >= 0)
+			/* force the brightness to reinterpolate */
+			gog_style_set_fill_brightness (style,
+				style->fill.gradient.brightness);
+	}
+	if (style->line.auto_color && !(style->disable_theming & GOG_STYLE_LINE))
+		style->line.color = palette [palette_index];
+	if (!(style->disable_theming & GOG_STYLE_MARKER))
+		map_marker (&style->marker, ind, palette_index, palette);
+}
+
+/**************************************************************************/
+
+void
+gog_themes_init	(void)
+{
+	GogTheme *theme;
+	GogStyle *style;
+
+	if (NULL == global_class_aliases) {
+		global_class_aliases = g_hash_table_new (
+			g_str_hash, g_str_equal);
+		g_hash_table_insert (global_class_aliases,
+			(gpointer)"GogSeriesElement", (gpointer)"GogSeries");
+	}
+
+/* TODO : have a look at apple's themes */
+/* An MS Excel-ish theme */
+	theme = gog_theme_new (N_("Default"));
+	gog_theme_register (theme, TRUE);
+
+	/* graph */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_NONE;
+	style->outline.width = 0;
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_NONE;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_WHITE);
+	gog_theme_add_element (theme, style, NULL, "GogGraph", NULL);
+
+	/* chart */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_WHITE);
+	gog_theme_add_element (theme, style, NULL, "GogChart", NULL);
+
+	/* legend */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_WHITE);
+	gog_theme_add_element (theme, style, NULL, "GogLegend", NULL);
+
+	/* Axis */
+	style = gog_style_new ();
+	style->line.width = 0; /* hairline */
+	style->line.color = RGBA_BLACK;
+	gog_theme_add_element (theme, style, NULL, "GogAxis", NULL);
+
+	/* AxisLine */
+	style = gog_style_new ();
+	style->line.width = 0; /* hairline */
+	style->line.color = RGBA_BLACK;
+	gog_theme_add_element (theme, style, NULL, "GogAxisLine", NULL);
+
+	/* Grid */
+	style = gog_style_new ();
+	style->fill.type  = GOG_FILL_STYLE_PATTERN;
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 1.;
+	style->outline.color = 0X848284ff;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_GREY (0xd0));
+	gog_theme_add_element (theme, style, NULL, "GogGrid", NULL);
+
+	/* GridLine */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->line.width = 0.4; 
+	style->line.color = RGBA_BLACK;
+	gog_theme_add_element (theme, style, NULL, NULL, "MajorGrid");
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->line.width = 0.2; 
+	style->line.color = RGBA_BLACK; 
+	gog_theme_add_element (theme, style, NULL, NULL, "MinorGrid");
+	
+	/* series */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	/* FIXME : not really true, will want to split area from line */
+	gog_theme_add_element (theme, style,
+		map_area_series_solid_default, "GogSeries", NULL);
+
+	/* labels */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_NONE;
+	style->outline.width = 0.;
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_NONE;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_WHITE);
+	gog_theme_add_element (theme, style, NULL, "GogLabel", NULL);
+
+	/* regression curves */
+	style = gog_style_new ();
+	style->line.dash_type = GO_LINE_SOLID;
+	style->line.width = 1;
+	style->line.color = RGBA_BLACK;
+	gog_theme_add_element (theme, style,
+		NULL, "GogRegCurve", NULL);
+
+	/* regression curves */
+	style = gog_style_new ();
+	style->line.dash_type = GO_LINE_SOLID;
+	style->line.width = 1;
+	style->line.color = RGBA_BLACK;
+	gog_theme_add_element (theme, style,
+		NULL, "GogRegCurve", NULL);
+
+	/* regression equations */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	go_pattern_set_solid (&style->fill.pattern, 0);
+	gog_theme_add_element (theme, style,
+		NULL, "GogRegEqn", NULL);
+
+	/* series lines */
+	style = gog_style_new ();
+	gog_theme_add_element (theme, style,
+		map_area_series_solid_default, "GogSeriesLines", NULL);
+
+/* Guppi */
+	theme = gog_theme_new (N_("Guppi"));
+	gog_theme_register (theme, FALSE);
+
+	/* graph */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_NONE;
+	style->outline.width = 0; 
+	style->outline.color = RGBA_BLACK; 
+	style->fill.type = GOG_FILL_STYLE_GRADIENT;
+	style->fill.gradient.dir   = GO_GRADIENT_N_TO_S;
+	style->fill.pattern.fore = RGBA_BLUE;
+	style->fill.pattern.back = RGBA_BLACK;
+	gog_theme_add_element (theme, style, NULL, "GogGraph", NULL);
+
+	/* chart */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_NONE;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_WHITE);
+	gog_theme_add_element (theme, style, NULL, "GogChart", NULL);
+
+	/* legend */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_GREY (0x20));
+	gog_theme_add_element (theme, style, NULL, "GogLegend", NULL);
+
+	/* Axis */
+	style = gog_style_new ();
+	style->line.dash_type = GO_LINE_SOLID;
+	style->line.width = 0.; /* hairline */
+	style->line.color = RGBA_GREY (0x20);
+	gog_theme_add_element (theme, style, NULL, "GogAxis", NULL);
+	
+	/* AxisLine */
+	style = gog_style_new ();
+	style->line.dash_type = GO_LINE_SOLID;
+	style->line.width = 0.; /* hairline */
+	style->line.color = RGBA_GREY (0x20);
+	gog_theme_add_element (theme, style, NULL, "GogAxisLine", NULL);
+
+	/* Grid */
+	style = gog_style_new ();
+	style->fill.type  = GOG_FILL_STYLE_PATTERN;
+	style->outline.dash_type = GO_LINE_NONE;
+	style->outline.color = RGBA_BLACK;
+	style->outline.width = 0;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_GREY (0xd0));
+	gog_theme_add_element (theme, style, NULL, "GogGrid", NULL);
+
+	/* GridLine */
+	style = gog_style_new ();
+	style->line.dash_type = GO_LINE_SOLID;
+	style->line.width = 0.; /* hairline */
+	style->line.color = RGBA_GREY (0x96);
+	gog_theme_add_element (theme, style, NULL, NULL, "MajorGrid");
+	style = gog_style_new ();
+	style->line.dash_type = GO_LINE_SOLID;
+	style->line.width = 0.; /* hairline */
+	style->line.color = RGBA_GREY (0xC0);
+	gog_theme_add_element (theme, style, NULL, NULL, "MinorGrid");
+	
+	/* series */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0.; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_GREY (0x20));
+	/* FIXME : not really true, will want to split area from line */
+	gog_theme_add_element (theme, style,
+		map_area_series_solid_guppi, "GogSeries", NULL);
+
+	/* labels */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_NONE;
+	style->outline.width = 0; /* none */
+	style->outline.color = RGBA_BLACK;
+	style->fill.type = GOG_FILL_STYLE_NONE;
+	go_pattern_set_solid (&style->fill.pattern, RGBA_WHITE);
+	gog_theme_add_element (theme, style, NULL, "GogLabel", NULL);
+
+	/* regression curves */
+	style = gog_style_new ();
+	style->line.dash_type = GO_LINE_SOLID;
+	style->line.width = 1;
+	style->line.color = RGBA_BLACK;
+	gog_theme_add_element (theme, style,
+		NULL, "GogRegCurve", NULL);
+
+	/* regression equations */
+	style = gog_style_new ();
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.width = 0; /* hairline */
+	style->outline.color = RGBA_BLACK;
+	gog_theme_add_element (theme, style,
+		NULL, "GogRegEqn", NULL);
+
+	/* series lines */
+	style = gog_style_new ();
+	gog_theme_add_element (theme, style,
+		NULL, "GogSeriesLines", NULL);
+}
+
+void
+gog_themes_shutdown (void)
+{
+	GSList *ptr;
+
+	if (default_theme != NULL)
+		g_object_unref (default_theme);
+	for (ptr = themes; ptr != NULL ; ptr = ptr->next)
+		g_object_unref (ptr->data);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-theme.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,49 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-theme.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_THEME_H
+#define GOG_THEME_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GOG_THEME_TYPE	(gog_theme_get_type ())
+#define GOG_THEME(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_THEME_TYPE, GogTheme))
+#define IS_GOG_THEME(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_THEME_TYPE))
+
+GType gog_theme_get_type (void);
+
+void gog_theme_fillin_style    (GogTheme *theme, GogStyle *style,
+				GogObject *obj, int i, gboolean complete_overwrite);
+void gog_theme_register        (GogTheme *theme, gboolean is_default);
+void gog_theme_register_file   (char const *name, char const *file);
+GogTheme   *gog_theme_lookup   (char const *name);
+char const *gog_theme_get_name (GogTheme const *theme);
+
+
+/* private */
+void gog_themes_init	 (void);
+void gog_themes_shutdown (void);
+
+G_END_DECLS
+
+#endif /* GOG_THEME_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,679 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-view.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-renderer.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+/* this should be per model */
+#define PAD_HACK	4	/* pts */
+
+enum {
+	GOG_VIEW_PROP_0,
+	GOG_VIEW_PROP_PARENT,
+	GOG_VIEW_PROP_MODEL
+};
+
+static GObjectClass *parent_klass;
+
+static void
+cb_child_added (GogObject *parent, GogObject *child,
+		GogView *view)
+{
+	g_return_if_fail (view->model == parent);
+
+	gog_object_new_view (child, view);
+	gog_view_queue_resize (view);
+}
+
+static void
+cb_remove_child (GogObject *parent, GogObject *child,
+		 GogView *view)
+{
+	GSList *ptr = view->children;
+	GogObjectClass const *klass;
+	GogView *tmp;
+
+	g_return_if_fail (view->model == parent);
+
+	gog_view_queue_resize (view);
+	for (; ptr != NULL ; ptr = ptr->next) {
+		tmp = GOG_VIEW (ptr->data);
+
+		g_return_if_fail (tmp != NULL);
+
+		if (tmp->model == child) {
+			g_object_unref (tmp);
+			return;
+		}
+	}
+
+	/* The object may not create a view */
+	klass = GOG_OBJECT_GET_CLASS (child);
+	if (klass->view_type != 0)
+		g_warning ("%s (%p) saw %s(%p) being removed from %s(%p) for which I didn't have a child",
+			   G_OBJECT_TYPE_NAME (view), view,
+			   G_OBJECT_TYPE_NAME (child), child,
+			   G_OBJECT_TYPE_NAME (parent), parent);
+}
+
+static void
+cb_model_changed (GogObject *model, gboolean resized, GogView *view)
+{
+	gog_debug (0, g_warning ("model %s(%p) for view %s(%p) changed %d",
+		   G_OBJECT_TYPE_NAME (model), model,
+		   G_OBJECT_TYPE_NAME (view), view, resized););
+	if (resized)
+		gog_view_queue_resize (view);
+	else
+		gog_view_queue_redraw (view);
+}
+
+/* make the list of view children match the models order */
+static void
+cb_model_reordered (GogView *view)
+{
+	GSList *tmp, *new_order = NULL;
+	GSList *ptr = view->model->children;
+
+	for (; ptr != NULL ; ptr = ptr->next) {
+		tmp = view->children;
+		/* not all the views may be created yet check for NULL */
+		while (tmp != NULL && GOG_VIEW (tmp->data)->model != ptr->data)
+			tmp = tmp->next;
+		if (tmp != NULL)
+			new_order = g_slist_prepend (new_order, tmp->data);
+	}
+	g_slist_free (view->children);
+	view->children = g_slist_reverse (new_order);
+}
+
+static void
+gog_view_set_property (GObject *gobject, guint param_id,
+		       GValue const *value, GParamSpec *pspec)
+{
+	GogView *view = GOG_VIEW (gobject);
+	gboolean init_state = (view->renderer == NULL || view->model == NULL);
+
+	switch (param_id) {
+	case GOG_VIEW_PROP_PARENT:
+		g_return_if_fail (view->parent == NULL);
+
+		view->parent = GOG_VIEW (g_value_get_object (value));
+		if (view->parent != NULL) {
+			view->renderer = view->parent->renderer;
+			view->parent->children = g_slist_prepend (view->parent->children, view);
+			cb_model_reordered (view->parent);
+		}
+		break;
+
+	case GOG_VIEW_PROP_MODEL:
+		g_return_if_fail (view->model == NULL);
+
+		view->model = GOG_OBJECT (g_value_get_object (value));
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, param_id, pspec);
+		return; /* NOTE : RETURN */
+	}
+
+	/* renderer set via parent or manually */
+	if (init_state && view->renderer != NULL && view->model != NULL) {
+		GogViewClass *klass = GOG_VIEW_GET_CLASS (view);
+		GSList *ptr = view->model->children;
+
+		for ( ;ptr != NULL ; ptr = ptr->next)
+			gog_object_new_view (ptr->data, view);
+
+		g_signal_connect_object (G_OBJECT (view->model),
+			"child_added",
+			G_CALLBACK (cb_child_added), view, 0);
+		g_signal_connect_object (G_OBJECT (view->model),
+			"child_removed",
+			G_CALLBACK (cb_remove_child), view, 0);
+		g_signal_connect_object (G_OBJECT (view->model),
+			"changed",
+			G_CALLBACK (cb_model_changed), view, 0);
+		g_signal_connect_object (G_OBJECT (view->model),
+			"children-reordered",
+			G_CALLBACK (cb_model_reordered), view, G_CONNECT_SWAPPED);
+
+		if (klass->state_init != NULL)
+			(klass->state_init) (view);
+	}
+}
+
+static void
+gog_view_finalize (GObject *obj)
+{
+	GogView *tmp, *view = GOG_VIEW (obj);
+	GSList *ptr;
+
+	if (view->parent != NULL)
+		view->parent->children = g_slist_remove (view->parent->children, view);
+
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		tmp = GOG_VIEW (ptr->data);
+		/* not really necessary, but helpful during initial deployment
+		 * when not everything has a view yet */
+		if (tmp != NULL) {
+			tmp->parent = NULL; /* short circuit */
+			g_object_unref (tmp);
+		}
+	}
+	g_slist_free (view->children);
+	view->children = NULL;
+
+	(*parent_klass->finalize) (obj);
+}
+
+static void
+gog_view_padding_request_real (GogView *view, GogViewAllocation const *bbox, GogViewPadding *padding)
+{
+	GSList *ptr;
+	GogView *child;
+	GogViewPadding child_padding;
+
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+		if (GOG_POSITION_IS_PADDING (child->model->position)) {
+			gog_view_padding_request (child, bbox, &child_padding);
+			padding->wr = MAX (padding->wr, child_padding.wr);
+			padding->wl = MAX (padding->wl, child_padding.wl);
+			padding->hb = MAX (padding->hb, child_padding.hb);
+			padding->ht = MAX (padding->ht, child_padding.ht);
+		}
+	}
+}
+
+static void
+gog_view_size_request_real (GogView *view, GogViewRequisition *req)
+{
+	req->w = req->h = 1.;
+}
+
+static void
+gog_view_size_allocate_real (GogView *view, GogViewAllocation const *allocation)
+{
+	GSList *ptr;
+	GogView *child;
+	GogObjectPosition pos;
+	GogViewRequisition req;
+	GogViewAllocation tmp, available = *allocation, res = *allocation;
+	double const pad_h = gog_renderer_pt2r_y (view->renderer, PAD_HACK);
+	double const pad_w = gog_renderer_pt2r_x (view->renderer, PAD_HACK);
+
+	for (ptr = view->children; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+
+		pos = child->model->position;
+		if (pos & GOG_POSITION_MANUAL) {
+			gog_view_size_request (child, &req);
+			tmp = gog_object_get_manual_allocation (gog_view_get_model (child),
+								&available, &req);
+			gog_view_size_allocate (child, &tmp);
+		} else if (pos & GOG_POSITION_COMPASS) {
+			gboolean vertical = TRUE;
+
+			/* Dead simple */
+			gog_view_size_request (child, &req);
+			if (req.h > res.h)
+				req.h = res.h;
+			if (req.w > res.w)
+				req.w = res.w;
+			tmp = res;
+
+			if (pos & GOG_POSITION_N) {
+				if (req.h > 0) {
+					res.y += req.h + pad_h;
+					res.h -= req.h + pad_h;
+				} else
+					req.h = 0;
+				tmp.h  = req.h;
+				vertical = FALSE;
+			} else if (pos & GOG_POSITION_S) {
+				if (req.h > 0) {
+					res.h -= req.h + pad_h;
+					tmp.y  = res.y + res.h + pad_h;
+				} else
+					req.h = 0;
+				tmp.h  = req.h;
+				vertical = FALSE;
+			} 
+
+				if (pos & GOG_POSITION_E) {
+					if (req.w > 0) {
+						res.w -= req.w + pad_w;
+						tmp.x  = res.x + res.w + pad_w;
+					} else
+						req.w = 0;
+					tmp.w  = req.w;
+					/* For NE & NW only alignment fill makes sense */
+					if (pos & (GOG_POSITION_N|GOG_POSITION_S))
+						pos = GOG_POSITION_ALIGN_FILL;
+				} else if (pos & GOG_POSITION_W) {
+					if (req.w > 0) {
+						res.x += req.w + pad_w;
+						res.w -= req.w + pad_w;
+					} else
+						req.w = 0;
+					tmp.w  = req.w;
+					/* For NE & NW only alignment fill makes sense */
+					if (pos & (GOG_POSITION_N|GOG_POSITION_S))
+						pos = GOG_POSITION_ALIGN_FILL;
+ 				}
+
+				pos &= GOG_POSITION_ALIGNMENT;
+				if (GOG_POSITION_ALIGN_FILL != pos) {
+					if (vertical) {
+						if (GOG_POSITION_ALIGN_END == pos) {
+							if (tmp.h >= req.h)
+								tmp.y += tmp.h - req.h;
+						} else if (GOG_POSITION_ALIGN_CENTER == pos) {
+							if (tmp.h >= req.h)
+								tmp.y += (tmp.h - req.h) / 2.;
+						}
+						tmp.h = req.h;
+					} else {
+						if (GOG_POSITION_ALIGN_END == pos) {
+							if (tmp.w >= req.w)
+								tmp.x += tmp.w - req.w;
+						} else if (GOG_POSITION_ALIGN_CENTER == pos) {
+							if (tmp.w >= req.w)
+								tmp.x += (tmp.w - req.w) / 2.;
+						}
+						tmp.w = req.w;
+					}
+				}
+
+			gog_view_size_allocate (child, &tmp);
+		} else if (!(GOG_POSITION_IS_SPECIAL (pos)) && 
+			   !(GOG_POSITION_IS_PADDING (pos)))
+			g_warning ("[GogView::size_allocate_real] unexpected position %x for child %p of %p",
+				   pos, child, view);
+	}
+
+	view->residual = res;
+}
+
+/* A simple default implementation */
+static void
+gog_view_render_real (GogView *view, GogViewAllocation const *bbox)
+{
+	GSList *ptr;
+	for (ptr = view->children ; ptr != NULL ; ptr = ptr->next)
+		gog_view_render	(ptr->data, bbox);
+}
+
+static void
+gog_view_class_init (GogViewClass *view_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) view_klass;
+
+	parent_klass = g_type_class_peek_parent (view_klass);
+	gobject_klass->set_property = gog_view_set_property;
+	gobject_klass->finalize	    = gog_view_finalize;
+	view_klass->padding_request	  = gog_view_padding_request_real;
+	view_klass->size_request    = gog_view_size_request_real;
+	view_klass->size_allocate   = gog_view_size_allocate_real;
+	view_klass->render	    = gog_view_render_real;
+	view_klass->clip	    = FALSE;
+
+	g_object_class_install_property (gobject_klass, GOG_VIEW_PROP_PARENT,
+		g_param_spec_object ("parent", "parent",
+			"the GogView parent",
+			GOG_VIEW_TYPE,
+			GSF_PARAM_STATIC | G_PARAM_WRITABLE));
+	g_object_class_install_property (gobject_klass, GOG_VIEW_PROP_MODEL,
+		g_param_spec_object ("model", "model",
+			"the GogObject this view displays",
+			GOG_OBJECT_TYPE,
+			GSF_PARAM_STATIC | G_PARAM_WRITABLE));
+}
+
+static void
+gog_view_init (GogView *view)
+{
+	view->allocation_valid  = FALSE;
+	view->child_allocations_valid = FALSE;
+	view->being_updated = FALSE;
+	view->model	   = NULL;
+	view->parent	   = NULL;
+	view->children	   = NULL;
+}
+
+GSF_CLASS_ABSTRACT (GogView, gog_view,
+		    gog_view_class_init, gog_view_init,
+		    G_TYPE_OBJECT)
+
+GogObject *
+gog_view_get_model (GogView const *view)
+{
+	return view->model;
+}
+
+/**
+ * gog_view_queue_redraw :
+ * @view : a #GogView
+ *
+ * Requests a redraw for the entire graph.
+ **/
+void
+gog_view_queue_redraw (GogView *view)
+{
+	g_return_if_fail (GOG_VIEW (view) != NULL);
+	g_return_if_fail (view->renderer != NULL);
+
+	gog_renderer_request_update (view->renderer);
+}
+
+/**
+ * gog_view_queue_resize :
+ * @view : a #GogView
+ *
+ * Flags a view to have its size renegotiated; should
+ * be called when a model for some reason has a new size request.
+ * For example, when you change the size of a legend.
+ **/
+void
+gog_view_queue_resize (GogView *view)
+{
+	g_return_if_fail (GOG_VIEW (view) != NULL);
+	g_return_if_fail (view->renderer != NULL);
+
+	gog_renderer_request_update (view->renderer);
+
+#if 0 /* optimization that breaks when child contributes to size of parent */
+	view->allocation_valid = FALSE; /* in case there is no parent */
+	if (NULL == (view = view->parent))
+		return;
+	view->allocation_valid = FALSE;
+	while (NULL != (view = view->parent) && view->child_allocations_valid)
+		view->child_allocations_valid = FALSE;
+#else
+	do
+		view->allocation_valid = FALSE; /* in case there is no parent */
+	while (NULL != (view = view->parent) && view->allocation_valid);
+#endif
+}
+
+void
+gog_view_padding_request (GogView *view, GogViewAllocation const *bbox, GogViewPadding *padding)
+{
+	GogViewClass *klass = GOG_VIEW_GET_CLASS (view);
+	
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (padding != NULL);
+	g_return_if_fail (bbox != NULL);
+
+	padding->wl = padding->wr = padding->ht = padding->hb = 0.;
+
+	if (klass->padding_request != NULL)
+		(klass->padding_request) (view, bbox, padding);
+}
+
+
+/**
+ * gog_view_size_request :
+ * @view : a #GogView
+ * @requisition : a #GogViewRequisition.
+ *
+ * When called @requisition holds the available space and is populated with the
+ * desired size based on that input and other elements of the view or its model's
+ * state (eg the position).
+ *
+ * Remember that the size request is not necessarily the size a view will
+ * actually be allocated.
+ **/
+void
+gog_view_size_request (GogView *view, GogViewRequisition *requisition)
+{
+	GogViewClass *klass = GOG_VIEW_GET_CLASS (view);
+
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (requisition != NULL);
+	if (klass->size_request)
+		(klass->size_request) (view, requisition);
+	else
+		requisition->w = requisition->h = 1.;
+}
+
+/**
+ * gog_view_size_allocate :
+ * @view : a #GogView
+ * @allocation: position and size to be allocated to @view
+ *
+ * Assign a size and position to a GogView.  Primarilly used by containers.
+ **/
+void
+gog_view_size_allocate (GogView *view, GogViewAllocation const *allocation)
+{
+	GogViewClass *klass = GOG_VIEW_GET_CLASS (view);
+
+	g_return_if_fail (allocation != NULL);
+	g_return_if_fail (klass != NULL);
+	g_return_if_fail (klass->size_allocate != NULL);
+	g_return_if_fail (!view->being_updated);
+
+	gog_debug (0, g_warning ("size_allocate %s %p : x = %g, y = %g w = %g, h = %g",
+		   G_OBJECT_TYPE_NAME (view), view,
+		   allocation->x, allocation->y, allocation->w, allocation->h););
+
+	view->being_updated = TRUE;
+	(klass->size_allocate) (view, allocation);
+	view->being_updated = FALSE;
+
+	if (&view->allocation != allocation)
+		view->allocation = *allocation;
+	view->allocation_valid = view->child_allocations_valid = TRUE;
+}
+
+gboolean
+gog_view_update_sizes (GogView *view)
+{
+	g_return_val_if_fail (GOG_VIEW (view) != NULL, TRUE);
+	g_return_val_if_fail (!view->being_updated, TRUE);
+
+	if (!view->allocation_valid)
+		gog_view_size_allocate (view, &view->allocation);
+	else if (!view->child_allocations_valid) {
+		GSList *ptr;
+
+		view->being_updated = TRUE;
+		for (ptr = view->children ; ptr != NULL ; ptr = ptr->next)
+			gog_view_update_sizes (ptr->data);
+		view->being_updated = FALSE;
+
+		view->child_allocations_valid = TRUE;
+	} else
+		return FALSE;
+	return TRUE;
+}
+
+void
+gog_view_render	(GogView *view, GogViewAllocation const *bbox)
+{
+	GogViewClass *klass = GOG_VIEW_GET_CLASS (view);
+
+	g_return_if_fail (view->renderer != NULL);
+
+	if (view->residual.w < 0 || view->residual.h < 0)
+		return;
+	
+	if (klass->clip) {
+		gog_renderer_push_clip (view->renderer, 
+					gog_renderer_get_rectangle_vpath (&view->allocation));
+		klass->render (view, bbox);
+		gog_renderer_pop_clip (view->renderer);
+	}
+	else
+		klass->render (view, bbox);
+}
+
+/**
+ * gog_view_info_at_point :
+ * @view : a #GogView
+ * @x : 
+ * @y :
+ * @cur_selection : If @cur_selection is the object @x, at y, and it could create
+ *	 a child there, create it
+ * @obj : If non-NULL store the object @x, at y
+ * @name : store the name of the most derived object even if it does not yet exist
+ *	caller is responsible for freeing the string (ignored in NULL)
+ *
+ * Returns TRUE if an object is found
+ **/
+gboolean
+gog_view_info_at_point (GogView *view, double x, double y,
+			GogObject const *cur_selection,
+			GogObject **obj, char **name)
+{
+	GSList *ptr, *list;
+	GogViewClass *klass = GOG_VIEW_GET_CLASS (view);
+
+	g_return_val_if_fail (klass != NULL, FALSE);
+	g_return_val_if_fail (view->allocation_valid, FALSE);
+	g_return_val_if_fail (view->child_allocations_valid, FALSE);
+
+	if (x < view->allocation.x ||
+	    x >= (view->allocation.x + view->allocation.w) ||
+	    y < view->allocation.y ||
+	    y >= (view->allocation.y + view->allocation.h))
+		return FALSE;
+
+	/* walk the list in reverse */
+	list = g_slist_reverse (g_slist_copy (view->children));
+	for (ptr = list; ptr != NULL ; ptr = ptr->next)
+		if (gog_view_info_at_point (ptr->data, x, y, cur_selection, obj, name))
+			return TRUE;
+	g_slist_free (list);
+
+	if (klass->info_at_point != NULL)
+		return (klass->info_at_point) (view, x, y, cur_selection, obj, name);
+	
+	if (obj != NULL)
+		*obj = view->model;
+	if (name != NULL)
+		*name = g_strdup (gog_object_get_name (view->model));
+
+	return TRUE;
+}
+
+/**
+ * gog_view_size_child_request :
+ * @view : #GogView
+ * @avail : the amount of space available in total
+ * @req : holds the amount of space for the parent, and is expanded with the
+ * 	needs of the children.
+ *
+ * Takes the space requested in @req and expands it to hold all @view->model's
+ * children.
+ * Returns the necessary size in @req.
+ **/
+void
+gog_view_size_child_request (GogView *view,
+			     GogViewRequisition const *avail,
+			     GogViewRequisition *res)
+{
+	GSList *ptr, *list;
+	GogView *child;
+	GogObjectPosition pos;
+	GogViewRequisition req;
+	double const pad_h = gog_renderer_pt2r_y (view->renderer, PAD_HACK);
+	double const pad_w = gog_renderer_pt2r_x (view->renderer, PAD_HACK);
+
+	/* walk the list in reverse */
+	list = g_slist_reverse (g_slist_copy (view->children));
+	for (ptr = list; ptr != NULL ; ptr = ptr->next) {
+		child = ptr->data;
+
+		pos = child->model->position;
+		if (pos & GOG_POSITION_MANUAL) {
+			g_warning ("manual is not supported yet");
+		} else if (pos & GOG_POSITION_COMPASS) {
+			/* Dead simple */
+			gog_view_size_request (child, &req);
+
+			if (pos & (GOG_POSITION_N|GOG_POSITION_S)) {
+				if (req.h > 0)
+					res->h += req.h + pad_h;
+			} else if (res->h < req.h)
+				res->h = req.h;
+
+			if (pos & (GOG_POSITION_E|GOG_POSITION_W)) {
+				if (req.w > 0)
+					res->w += req.w + pad_w;
+			} else if (res->w < req.w)
+				res->w = req.w;
+
+		} else if (!(GOG_POSITION_IS_SPECIAL (pos)))
+			g_warning ("[GogView::size_child_request] unexpected position %x for child %p of %p",
+				   pos, child, view);
+	}
+	g_slist_free (list);
+}
+
+/**
+ * gog_view_find_child_view :
+ * @container : #GogView
+ * @target_model : #GogObject
+ *
+ * Find the GogView contained in @container that corresponds to @model.
+ * Returns NULL on error
+ **/
+GogView *
+gog_view_find_child_view  (GogView const *container, GogObject const *target_model)
+{
+	GogObject const *obj, *old_target;
+	GSList *ptr;
+
+	g_return_val_if_fail (IS_GOG_VIEW (container), NULL);
+	g_return_val_if_fail (IS_GOG_OBJECT (target_model), NULL);
+
+	/* @container is a view for @target_models parent */
+	obj = target_model;
+	while (obj != NULL && container->model != obj)
+		obj = obj->parent;
+
+	g_return_val_if_fail (obj != NULL, NULL);
+
+	for ( ; obj != target_model ; container = ptr->data) {
+		/* find the parent of @target_object that should be a child of this view */
+		old_target = obj;
+		obj = target_model;
+		while (obj != NULL && obj->parent != old_target)
+			obj = obj->parent;
+
+		g_return_val_if_fail (obj != NULL, NULL);
+
+		for (ptr = container->children ; ptr != NULL ; ptr = ptr->next)
+			if (GOG_VIEW (ptr->data)->model == obj)
+				break;
+
+		g_return_val_if_fail (ptr != NULL, NULL);
+	}
+
+	return (GogView *)container;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/graph/gog-view.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,91 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-view.h : A sized render engine for an item.
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GOG_VIEW_H
+#define GOG_VIEW_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _GogView {
+	GObject	 base;
+
+	GogObject *model;
+
+	GogRenderer *renderer;  /* not NULL */
+	GogView	    *parent;	/* potentially NULL */
+	GSList	    *children;
+
+	GogViewAllocation  allocation;	/* in renderer units */
+	GogViewAllocation  residual;	/* left over after compass children are placed */
+	unsigned allocation_valid : 1;  /* adjust our layout when child changes size */
+	unsigned child_allocations_valid : 1;  /* some children need to adjust their layout */
+	unsigned being_updated : 1;
+};
+
+typedef struct {
+	GObjectClass	base;
+
+	unsigned clip : 1; /* Automaticaly clip to object bounding box */
+
+	/* Virtuals */
+	void	 (*state_init)    (GogView *);
+	void	 (*padding_request) 		(GogView *, GogViewAllocation const *bbox, GogViewPadding *padding);
+	void	 (*size_request)    		(GogView *, GogViewRequisition *req);
+	void	 (*size_allocate)   		(GogView *, GogViewAllocation const *bbox);
+	void	 (*render)        (GogView *, GogViewAllocation const *bbox);
+	gboolean (*info_at_point) (GogView *, double x, double y,
+				   GogObject const *cur_selection,
+				   GogObject **obj, char **name);
+} GogViewClass;
+
+#define GOG_VIEW_TYPE		(gog_view_get_type ())
+#define GOG_VIEW(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_VIEW_TYPE, GogView))
+#define IS_GOG_VIEW(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_VIEW_TYPE))
+#define GOG_VIEW_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST ((k), GOG_VIEW_TYPE, GogViewClass))
+#define IS_GOG_VIEW_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOG_VIEW_TYPE))
+#define GOG_VIEW_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_VIEW_TYPE, GogViewClass))
+
+GType gog_view_get_type (void);
+
+GogObject *gog_view_get_model	     (GogView const *view);
+void	   gog_view_render	     (GogView *v, GogViewAllocation const *bbox);
+void       gog_view_queue_redraw     (GogView *v);
+void       gog_view_queue_resize     (GogView *v);
+void	   gog_view_padding_request  (GogView *v, GogViewAllocation const *bbox, GogViewPadding *padding);
+void       gog_view_size_request     (GogView *v, GogViewRequisition *req);
+void       gog_view_size_allocate    (GogView *v, GogViewAllocation const *a);
+gboolean   gog_view_update_sizes     (GogView *v);
+gboolean   gog_view_info_at_point    (GogView *container, double x, double y,
+				      GogObject const *cur_selection,
+				      GogObject **obj, char **name);
+GogView   *gog_view_find_child_view  (GogView const *container,
+				      GogObject const *target_model);
+
+/* protected */
+void gog_view_size_child_request (GogView *v,
+				  GogViewRequisition const *avail,
+				  GogViewRequisition *req);
+
+G_END_DECLS
+
+#endif /* GOG_VIEW_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,74 @@
+noinst_LTLIBRARIES = libgoffice-gtk.la
+
+libgoffice_gtk_la_SOURCES =		\
+	goffice-gtk.c			\
+	\
+	go-font-sel.c			\
+	go-format-sel.c			\
+	go-rotation-sel.c	 	\
+	go-charmap-sel.c		\
+	go-locale-sel.c			\
+	\
+	go-optionmenu.c			\
+	go-combo-box.c			\
+	go-color-group.c		\
+	go-color-palette.c		\
+	go-combo-color.c		\
+	go-combo-pixmaps.c		\
+	go-combo-text.c			\
+	\
+	go-action-combo-color.c 	\
+	go-action-combo-pixmaps.c 	\
+	go-action-combo-stack.c 	\
+	go-action-combo-text.c	\
+	\
+	go-graph-widget.c
+
+
+libgoffice_gtk_ladir = $(goffice_include_dir)/gtk
+libgoffice_gtk_la_HEADERS = 		\
+	goffice-gtk.h			\
+	\
+	go-font-sel.h			\
+	go-format-sel.h			\
+	go-rotation-sel.h	 	\
+	go-charmap-sel.h		\
+	go-locale-sel.h			\
+	\
+	go-optionmenu.h			\
+	go-combo-box.h			\
+	go-color-group.h		\
+	go-color-palette.h		\
+	go-combo-color.h		\
+	go-combo-pixmaps.h		\
+	go-combo-text.h			\
+	\
+	go-action-combo-color.h 	\
+	go-action-combo-pixmaps.h 	\
+	go-action-combo-stack.h 	\
+	go-action-combo-text.h	\
+	\
+	go-graph-widget.h
+
+gladedir = $(goffice_datadir)/glade
+dist_glade_DATA = \
+	go-rotation-sel.glade 	\
+	go-font-sel.glade 	\
+	go-format-sel.glade 
+
+# This list should be empty when we reach a stable phase.
+UNUSED = \
+	go-dock.c \
+	go-dock.h \
+	go-dock-band.c \
+	go-dock-band.h \
+	go-dock-item.c \
+	go-dock-item.h \
+	go-dock-item-grip.c \
+	go-dock-item-grip.h \
+	go-dock-layout.c \
+	go-dock-layout.h
+
+EXTRA_DIST = $(UNUSED)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,662 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LTLIBRARIES = libgoffice-gtk.la
+
+libgoffice_gtk_la_SOURCES = \
+	goffice-gtk.c			\
+	\
+	go-font-sel.c			\
+	go-format-sel.c			\
+	go-rotation-sel.c	 	\
+	go-charmap-sel.c		\
+	go-locale-sel.c			\
+	\
+	go-optionmenu.c			\
+	go-combo-box.c			\
+	go-color-group.c		\
+	go-color-palette.c		\
+	go-combo-color.c		\
+	go-combo-pixmaps.c		\
+	go-combo-text.c			\
+	\
+	go-action-combo-color.c 	\
+	go-action-combo-pixmaps.c 	\
+	go-action-combo-stack.c 	\
+	go-action-combo-text.c	\
+	\
+	go-graph-widget.c
+
+
+libgoffice_gtk_ladir = $(goffice_include_dir)/gtk
+libgoffice_gtk_la_HEADERS = \
+	goffice-gtk.h			\
+	\
+	go-font-sel.h			\
+	go-format-sel.h			\
+	go-rotation-sel.h	 	\
+	go-charmap-sel.h		\
+	go-locale-sel.h			\
+	\
+	go-optionmenu.h			\
+	go-combo-box.h			\
+	go-color-group.h		\
+	go-color-palette.h		\
+	go-combo-color.h		\
+	go-combo-pixmaps.h		\
+	go-combo-text.h			\
+	\
+	go-action-combo-color.h 	\
+	go-action-combo-pixmaps.h 	\
+	go-action-combo-stack.h 	\
+	go-action-combo-text.h	\
+	\
+	go-graph-widget.h
+
+
+gladedir = $(goffice_datadir)/glade
+dist_glade_DATA = \
+	go-rotation-sel.glade 	\
+	go-font-sel.glade 	\
+	go-format-sel.glade 
+
+
+# This list should be empty when we reach a stable phase.
+UNUSED = \
+	go-dock.c \
+	go-dock.h \
+	go-dock-band.c \
+	go-dock-band.h \
+	go-dock-item.c \
+	go-dock-item.h \
+	go-dock-item-grip.c \
+	go-dock-item-grip.h \
+	go-dock-layout.c \
+	go-dock-layout.h
+
+
+EXTRA_DIST = $(UNUSED)
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice/gtk
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libgoffice_gtk_la_LDFLAGS =
+libgoffice_gtk_la_LIBADD =
+am_libgoffice_gtk_la_OBJECTS = goffice-gtk.lo go-font-sel.lo \
+	go-format-sel.lo go-rotation-sel.lo go-charmap-sel.lo \
+	go-locale-sel.lo go-optionmenu.lo go-combo-box.lo \
+	go-color-group.lo go-color-palette.lo go-combo-color.lo \
+	go-combo-pixmaps.lo go-combo-text.lo go-action-combo-color.lo \
+	go-action-combo-pixmaps.lo go-action-combo-stack.lo \
+	go-action-combo-text.lo go-graph-widget.lo
+libgoffice_gtk_la_OBJECTS = $(am_libgoffice_gtk_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/go-action-combo-color.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-action-combo-pixmaps.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-action-combo-stack.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-action-combo-text.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-charmap-sel.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-color-group.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-color-palette.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-combo-box.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-combo-color.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-combo-pixmaps.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-combo-text.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-font-sel.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-format-sel.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-graph-widget.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-locale-sel.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-optionmenu.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-rotation-sel.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/goffice-gtk.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgoffice_gtk_la_SOURCES)
+DATA = $(dist_glade_DATA)
+
+HEADERS = $(libgoffice_gtk_la_HEADERS)
+
+DIST_COMMON = $(dist_glade_DATA) $(libgoffice_gtk_la_HEADERS) \
+	$(srcdir)/Makefile.in $(top_srcdir)/goffice.mk Makefile.am
+SOURCES = $(libgoffice_gtk_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/gtk/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-gtk.la: $(libgoffice_gtk_la_OBJECTS) $(libgoffice_gtk_la_DEPENDENCIES) 
+	$(LINK)  $(libgoffice_gtk_la_LDFLAGS) $(libgoffice_gtk_la_OBJECTS) $(libgoffice_gtk_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-action-combo-color.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-action-combo-pixmaps.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-action-combo-stack.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-action-combo-text.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-charmap-sel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-color-group.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-color-palette.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-combo-box.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-combo-color.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-combo-pixmaps.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-combo-text.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-font-sel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-format-sel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-graph-widget.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-locale-sel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-optionmenu.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-rotation-sel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/goffice-gtk.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_gladeDATA_INSTALL = $(INSTALL_DATA)
+install-dist_gladeDATA: $(dist_glade_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(gladedir)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+	  $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+	done
+
+uninstall-dist_gladeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+	  rm -f $(DESTDIR)$(gladedir)/$$f; \
+	done
+libgoffice_gtk_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_gtk_laHEADERS: $(libgoffice_gtk_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_gtk_ladir)
+	@list='$(libgoffice_gtk_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_gtk_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_gtk_ladir)/$$f"; \
+	  $(libgoffice_gtk_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_gtk_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_gtk_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_gtk_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_gtk_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_gtk_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(gladedir) $(DESTDIR)$(libgoffice_gtk_ladir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_gladeDATA install-libgoffice_gtk_laHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_gladeDATA uninstall-info-am \
+	uninstall-libgoffice_gtk_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-dist_gladeDATA \
+	install-exec install-exec-am install-info install-info-am \
+	install-libgoffice_gtk_laHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_gladeDATA \
+	uninstall-info-am uninstall-libgoffice_gtk_laHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,295 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-action-combo-color.c: A custom GtkAction to handle color selection
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <goffice/goffice-config.h>
+#include "go-action-combo-color.h"
+#include "go-combo-color.h"
+#include "go-combo-box.h"
+#include "go-color-palette.h"
+#include "goffice-gtk.h"
+
+#include <gtk/gtkaction.h>
+#include <gtk/gtktoolitem.h>
+#include <gtk/gtkicontheme.h>
+#include <gtk/gtkiconfactory.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtktoolbar.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <glib/gi18n.h>
+
+typedef struct {
+	GtkToolItem	 base;
+	GOComboColor	*combo;	/* container has a ref, not us */
+} GOToolComboColor;
+typedef GtkToolItemClass GOToolComboColorClass;
+
+#define GO_TOOL_COMBO_COLOR_TYPE	(go_tool_combo_color_get_type ())
+#define GO_TOOL_COMBO_COLOR(o)		(G_TYPE_CHECK_INSTANCE_CAST (o, GO_TOOL_COMBO_COLOR_TYPE, GOToolComboColor))
+#define IS_GO_TOOL_COMBO_COLOR(o)	(G_TYPE_CHECK_INSTANCE_TYPE (o, GO_TOOL_COMBO_COLOR_TYPE))
+
+static GType go_tool_combo_color_get_type (void);
+static gboolean
+go_tool_combo_color_set_tooltip (GtkToolItem *tool_item, GtkTooltips *tooltips,
+				 char const *tip_text,
+				 char const *tip_private)
+{
+	GOToolComboColor *self = (GOToolComboColor *)tool_item;
+	go_combo_box_set_tooltip (GO_COMBO_BOX (self->combo), tooltips,
+				  tip_text, tip_private);
+	return TRUE;
+}
+static void
+go_tool_combo_color_class_init (GtkToolItemClass *tool_item_class)
+{
+	tool_item_class->set_tooltip = go_tool_combo_color_set_tooltip;
+}
+
+static GdkPixbuf *
+make_icon (GtkAction *a, GtkWidget *tool)
+{
+	GtkIconSize size;
+	gint pixels = 8;
+	char *stock_id;
+	GdkPixbuf *icon;
+	GtkSettings *settings = gtk_widget_get_settings (tool);
+	GdkScreen *screen = gtk_widget_get_screen (tool);
+
+	if (tool->parent)
+		size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (tool->parent));
+	else
+		g_object_get (settings,
+			      "gtk-toolbar-icon-size", &size,
+			      NULL);
+	gtk_icon_size_lookup_for_settings (settings, size,
+					   &pixels, NULL);
+	g_object_get (a, "stock-id", &stock_id, NULL);
+	icon = gtk_icon_theme_load_icon
+		(gtk_icon_theme_get_for_screen (screen),
+		 stock_id, pixels, 0, NULL);
+	g_free (stock_id);
+
+	return icon;
+}
+
+
+static GSF_CLASS (GOToolComboColor, go_tool_combo_color,
+	   go_tool_combo_color_class_init, NULL,
+	   GTK_TYPE_TOOL_ITEM)
+
+/*****************************************************************************/
+
+struct _GOActionComboColor {
+	GtkAction	 base;
+	GOColorGroup 	*color_group;
+	char const 	*default_val_label;
+	GOColor		 default_val, current_color;
+};
+typedef struct {
+	GtkActionClass base;
+	void (*display_custom_dialog) (GOActionComboColor *caction, GtkWidget *dialog);
+} GOActionComboColorClass;
+
+enum {
+	DISPLAY_CUSTOM_DIALOG,
+	LAST_SIGNAL
+};
+
+static guint go_action_combo_color_signals [LAST_SIGNAL] = { 0, };
+static GObjectClass *combo_color_parent;
+
+static void
+go_action_combo_color_connect_proxy (GtkAction *a, GtkWidget *proxy)
+{
+	GTK_ACTION_CLASS (combo_color_parent)->connect_proxy (a, proxy);
+
+	if (GTK_IS_IMAGE_MENU_ITEM (proxy)) { /* set the icon */
+		GdkPixbuf *icon = make_icon (a, proxy);
+		GtkWidget *image = gtk_image_new_from_pixbuf (icon);
+		g_object_unref (icon);
+
+		gtk_widget_show (image);
+		gtk_image_menu_item_set_image (
+			GTK_IMAGE_MENU_ITEM (proxy), image);
+	}
+}
+
+static void
+cb_color_changed (GtkWidget *cc, GOColor color,
+		  gboolean is_custom, gboolean by_user, gboolean is_default,
+		  GOActionComboColor *caction)
+{
+	if (!by_user)
+		return;
+	caction->current_color = is_default ? caction->default_val : color;
+	gtk_action_activate (GTK_ACTION (caction));
+}
+
+static char *
+get_title (GtkAction *a)
+{
+	char *res;
+	g_object_get (G_OBJECT (a), "label", &res, NULL);
+	return res;
+}
+
+static void
+cb_proxy_custom_dialog (G_GNUC_UNUSED GObject *ignored,
+			GtkWidget *dialog, GOActionComboColor *caction)
+{
+	g_signal_emit (caction,
+		       go_action_combo_color_signals [DISPLAY_CUSTOM_DIALOG], 0,
+		       dialog);
+}
+
+static GtkWidget *
+go_action_combo_color_create_tool_item (GtkAction *a)
+{
+	GOActionComboColor *caction = (GOActionComboColor *)a;
+	GOToolComboColor *tool = g_object_new (GO_TOOL_COMBO_COLOR_TYPE, NULL);
+	char *title;
+
+	/* FIXME: We probably should re-do this when tool changes screen or
+	   parent.  */
+	GdkPixbuf *icon = make_icon (a, GTK_WIDGET (tool));
+
+	tool->combo = (GOComboColor *)go_combo_color_new (icon,
+		caction->default_val_label, caction->default_val,
+		caction->color_group);
+
+	go_combo_color_set_instant_apply (GO_COMBO_COLOR (tool->combo), TRUE);
+	go_combo_box_set_relief (GO_COMBO_BOX (tool->combo), GTK_RELIEF_NONE);
+	title = get_title (a);
+	go_combo_box_set_title (GO_COMBO_BOX (tool->combo), title);
+	g_free (title);
+
+	go_gtk_widget_disable_focus (GTK_WIDGET (tool->combo));
+	gtk_container_add (GTK_CONTAINER (tool), GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool));
+
+	g_object_connect (G_OBJECT (tool->combo),
+		"signal::color_changed", G_CALLBACK (cb_color_changed), a,
+		"signal::display-custom-dialog", G_CALLBACK (cb_proxy_custom_dialog), a,
+		NULL);
+	return GTK_WIDGET (tool);
+}
+
+static GtkWidget *
+go_action_combo_color_create_menu_item (GtkAction *a)
+{
+	GOActionComboColor *caction = (GOActionComboColor *)a;
+	char * title = get_title (a);
+	GtkWidget *submenu = go_color_palette_make_menu (
+		caction->default_val_label,
+		caction->default_val,
+		caction->color_group, title, caction->current_color);
+	GtkWidget *item = gtk_image_menu_item_new ();
+
+	g_free (title);
+	gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), submenu);
+	gtk_widget_show (submenu);
+
+	g_object_connect (G_OBJECT (submenu),
+		"signal::color_changed", G_CALLBACK (cb_color_changed), a,
+		"signal::display-custom-dialog", G_CALLBACK (cb_proxy_custom_dialog), a,
+		NULL);
+	return item;
+}
+
+static void
+go_action_combo_color_finalize (GObject *obj)
+{
+	GOActionComboColor *color = (GOActionComboColor *)obj;
+	if (color->color_group != NULL)
+		g_object_unref (color->color_group);
+
+	combo_color_parent->finalize (obj);
+}
+
+static void
+go_action_combo_color_class_init (GtkActionClass *gtk_act_class)
+{
+	GObjectClass *gobject_class = (GObjectClass *)gtk_act_class;
+
+	combo_color_parent = g_type_class_peek_parent (gobject_class);
+	gobject_class->finalize		= go_action_combo_color_finalize;
+
+	gtk_act_class->create_tool_item = go_action_combo_color_create_tool_item;
+	gtk_act_class->create_menu_item = go_action_combo_color_create_menu_item;
+	gtk_act_class->connect_proxy	= go_action_combo_color_connect_proxy;
+
+	go_action_combo_color_signals [DISPLAY_CUSTOM_DIALOG] =
+		g_signal_new ("display-custom-dialog",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOActionComboColorClass, display_custom_dialog),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE, 1, G_TYPE_OBJECT);
+}
+
+GSF_CLASS (GOActionComboColor, go_action_combo_color,
+	   go_action_combo_color_class_init, NULL,
+	   GTK_TYPE_ACTION)
+
+GOActionComboColor *
+go_action_combo_color_new (char const  *action_name,
+			   char const  *stock_id,
+			   char const  *default_color_label,
+			   GOColor	default_color,
+			   gpointer	group_key)
+{
+	GOActionComboColor *res = g_object_new (go_action_combo_color_get_type (),
+					   "name", action_name,
+					   "stock-id", stock_id,
+					   NULL);
+	res->color_group = go_color_group_fetch (action_name, group_key);
+	res->default_val_label = g_strdup (default_color_label);
+	res->current_color = res->default_val = default_color;
+
+	return res;
+}
+
+void
+go_action_combo_color_set_group (GOActionComboColor *action, gpointer group_key)
+{
+#warning TODO
+}
+
+GOColor
+go_action_combo_color_get_color (GOActionComboColor *a, gboolean *is_default)
+{
+	if (is_default != NULL)
+		*is_default = (a->current_color == a->default_val);
+	return a->current_color;
+}
+
+void
+go_action_combo_color_set_color (GOActionComboColor *a, GOColor color)
+{
+	GSList *ptr = gtk_action_get_proxies (GTK_ACTION (a));
+
+	a->current_color = color;
+	for ( ; ptr != NULL ; ptr = ptr->next)
+		if (IS_GO_TOOL_COMBO_COLOR (ptr->data))
+			go_combo_color_set_color (GO_TOOL_COMBO_COLOR (ptr->data)->combo, color);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-color.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,49 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-action-combo-color.h: A custom GtkAction to handle color selection
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **/
+
+#ifndef _GO_ACTION_COMBO_COLOR_H_
+#define _GO_ACTION_COMBO_COLOR_H_
+
+#include <glib-object.h>
+#include <goffice/utils/go-color.h>
+
+G_BEGIN_DECLS
+
+#define GO_ACTION_COMBO_COLOR_TYPE  (go_action_combo_color ())
+#define GO_ACTION_COMBO_COLOR(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_ACTION_COMBO_COLOR_TYPE, GOActionComboColor))
+#define IS_GO_ACTION_COMBO_COLOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_ACTION_COMBO_COLOR_TYPE))
+
+typedef struct _GOActionComboColor	 GOActionComboColor;
+
+GType	 go_action_combo_color_get_type	  (void);
+GOActionComboColor *
+	 go_action_combo_color_new	  (char const  *action_name,
+					   char const  *stock_id,
+					   char const  *default_color_label,
+					   GOColor	default_color,
+					   gpointer	group_key);
+void 	go_action_combo_color_set_group (GOActionComboColor *a, gpointer group_key);
+GOColor go_action_combo_color_get_color (GOActionComboColor *a, gboolean *is_default);
+void    go_action_combo_color_set_color (GOActionComboColor *a, GOColor color);
+
+G_END_DECLS
+
+#endif  /* _GO_ACTION_COMBO_COLOR_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,253 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-action-combo-pixmaps.c: A custom GtkAction to chose among a set of images
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <goffice/goffice-config.h>
+#include "go-action-combo-pixmaps.h"
+#include "go-combo-pixmaps.h"
+#include "go-combo-box.h"
+#include "goffice-gtk.h"
+
+#include <gtk/gtkaction.h>
+#include <gtk/gtktoolitem.h>
+#include <gtk/gtktoolbar.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkwidget.h>
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+typedef struct {
+	GtkToolItem	 base;
+	GOComboPixmaps	*combo;	/* container has a ref, not us */
+} GOToolComboPixmaps;
+typedef GtkToolItemClass GOToolComboPixmapsClass;
+
+#define GO_TOOL_COMBO_PIXMAPS_TYPE	(go_tool_combo_pixmaps_get_type ())
+#define GO_TOOL_COMBO_PIXMAPS(o)	(G_TYPE_CHECK_INSTANCE_CAST (o, GO_TOOL_COMBO_PIXMAPS_TYPE, GOToolComboPixmaps))
+#define IS_GO_TOOL_COMBO_PIXMAPS(o)	(G_TYPE_CHECK_INSTANCE_TYPE (o, GO_TOOL_COMBO_PIXMAPS_TYPE))
+
+static GType go_tool_combo_pixmaps_get_type (void);
+static gboolean
+go_tool_combo_pixmaps_set_tooltip (GtkToolItem *tool_item, GtkTooltips *tooltips,
+				   char const *tip_text,
+				   char const *tip_private)
+{
+	GOToolComboPixmaps *self = (GOToolComboPixmaps *)tool_item;
+	go_combo_box_set_tooltip (GO_COMBO_BOX (self->combo), tooltips,
+				  tip_text, tip_private);
+	return TRUE;
+}
+static void
+go_tool_combo_pixmaps_class_init (GtkToolItemClass *tool_item_klass)
+{
+	tool_item_klass->set_tooltip = go_tool_combo_pixmaps_set_tooltip;
+}
+
+static GSF_CLASS (GOToolComboPixmaps, go_tool_combo_pixmaps,
+	   go_tool_combo_pixmaps_class_init, NULL,
+	   GTK_TYPE_TOOL_ITEM)
+
+/*****************************************************************************/
+
+struct _GOActionComboPixmaps {
+	GtkAction	base;
+	GOActionComboPixmapsElement const *elements;
+	int ncols, nrows;
+
+	gboolean updating_proxies;
+	int selected_id;
+};
+typedef GtkActionClass GOActionComboPixmapsClass;
+
+static GdkPixbuf *
+make_icon (GtkAction *a, const char *stock_id, GtkWidget *tool)
+{
+	GtkIconSize size;
+
+	if (tool->parent)
+		size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (tool->parent));
+	else {
+		GtkSettings *settings = gtk_widget_get_settings (tool);
+		g_object_get (settings, "gtk-toolbar-icon-size", &size, NULL);
+	}
+
+	return gtk_widget_render_icon (tool, stock_id, size,
+				       "GOActionComboPixmaps");
+}
+
+
+static GObjectClass *combo_pixmaps_parent;
+static void
+go_action_combo_pixmaps_connect_proxy (GtkAction *a, GtkWidget *proxy)
+{
+	GTK_ACTION_CLASS (combo_pixmaps_parent)->connect_proxy (a, proxy);
+
+	if (GTK_IS_IMAGE_MENU_ITEM (proxy)) { /* set the icon */
+		GOActionComboPixmaps *paction = (GOActionComboPixmaps *)a;
+		const char *stock_id = paction->elements[0].stock_id;
+		GdkPixbuf *icon = make_icon (a, stock_id, proxy);
+		GtkWidget *image = gtk_image_new_from_pixbuf (icon);
+		g_object_unref (icon);
+		gtk_widget_show (image);
+		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (proxy),
+					       image);
+	}
+}
+
+static void
+cb_selection_changed (GOComboPixmaps *combo, int id, GOActionComboPixmaps *paction)
+{
+	GSList *ptr;
+	if (paction->updating_proxies)
+		return;
+	paction->selected_id = id;
+
+	paction->updating_proxies = TRUE;
+	ptr = gtk_action_get_proxies (GTK_ACTION (paction));
+	for ( ; ptr != NULL ; ptr = ptr->next)
+		if (IS_GO_COMBO_PIXMAPS (ptr->data) &&
+		    go_combo_pixmaps_get_selected (ptr->data, NULL) != id)
+			go_combo_pixmaps_select_id (ptr->data, id);
+	paction->updating_proxies = FALSE;
+
+	gtk_action_activate (GTK_ACTION (paction));
+}
+
+static GtkWidget *
+go_action_combo_pixmaps_create_tool_item (GtkAction *a)
+{
+	GOActionComboPixmaps *paction = (GOActionComboPixmaps *)a;
+	GOToolComboPixmaps *tool = g_object_new (GO_TOOL_COMBO_PIXMAPS_TYPE, NULL);
+	GOActionComboPixmapsElement const *el = paction->elements;
+
+	tool->combo = go_combo_pixmaps_new (paction->ncols);
+	for ( ; el->stock_id != NULL ; el++) {
+		GdkPixbuf *icon = make_icon (a, el->stock_id, GTK_WIDGET (tool));
+		go_combo_pixmaps_add_element (tool->combo,
+					      icon,
+					      el->id,
+					      _(el->untranslated_tooltip));
+	}
+	go_combo_pixmaps_select_id (tool->combo, paction->selected_id);
+
+	go_combo_box_set_relief (GO_COMBO_BOX (tool->combo), GTK_RELIEF_NONE);
+	go_gtk_widget_disable_focus (GTK_WIDGET (tool->combo));
+	gtk_container_add (GTK_CONTAINER (tool), GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool));
+
+	g_signal_connect (G_OBJECT (tool->combo),
+		"changed",
+		G_CALLBACK (cb_selection_changed), a);
+
+	return GTK_WIDGET (tool);
+}
+
+static GtkWidget *
+go_action_combo_pixmaps_create_menu_item (GtkAction *a)
+{
+	GOActionComboPixmaps *paction = (GOActionComboPixmaps *)a;
+	GOMenuPixmaps *submenu = go_menu_pixmaps_new (paction->ncols);
+	GOActionComboPixmapsElement const *el= paction->elements;
+	GtkWidget *item = gtk_image_menu_item_new ();
+
+	for ( ; el->stock_id != NULL ; el++)
+		go_menu_pixmaps_add_element (submenu,
+			gtk_widget_render_icon (GTK_WIDGET (item),
+				el->stock_id,
+				GTK_ICON_SIZE_MENU,
+				"GOActionComboPixmaps"),
+			el->id);
+
+	gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), GTK_WIDGET (submenu));
+	gtk_widget_show (GTK_WIDGET (submenu));
+	g_signal_connect (G_OBJECT (submenu),
+		"changed",
+		G_CALLBACK (cb_selection_changed), a);
+	return item;
+}
+
+static void
+go_action_combo_pixmaps_finalize (GObject *obj)
+{
+	combo_pixmaps_parent->finalize (obj);
+}
+
+static void
+go_action_combo_pixmaps_class_init (GtkActionClass *gtk_act_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *)gtk_act_klass;
+
+	combo_pixmaps_parent = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize		= go_action_combo_pixmaps_finalize;
+
+	gtk_act_klass->create_tool_item = go_action_combo_pixmaps_create_tool_item;
+	gtk_act_klass->create_menu_item = go_action_combo_pixmaps_create_menu_item;
+	gtk_act_klass->connect_proxy	= go_action_combo_pixmaps_connect_proxy;
+}
+
+GSF_CLASS (GOActionComboPixmaps, go_action_combo_pixmaps,
+	   go_action_combo_pixmaps_class_init, NULL,
+	   GTK_TYPE_ACTION)
+
+GOActionComboPixmaps *
+go_action_combo_pixmaps_new (char const *name,
+			     GOActionComboPixmapsElement const *elements,
+			     int ncols, int nrows)
+{
+	GOActionComboPixmaps *paction;
+
+	g_return_val_if_fail (ncols > 0, NULL);
+	g_return_val_if_fail (nrows > 0, NULL);
+	g_return_val_if_fail (elements != NULL, NULL);
+
+	paction = g_object_new (go_action_combo_pixmaps_get_type (),
+				"name", name,
+				NULL);
+	paction->elements = elements;
+	paction->ncols = ncols;
+	paction->nrows = nrows;
+	paction->selected_id = elements[0].id;
+
+	return paction;
+}
+
+int
+go_action_combo_pixmaps_get_selected (GOActionComboPixmaps *paction, int *indx)
+{
+	g_return_val_if_fail (IS_GO_ACTION_COMBO_PIXMAPS (paction), 0);
+
+	return paction->selected_id;
+}
+
+gboolean
+go_action_combo_pixmaps_select_id (GOActionComboPixmaps *paction, int id)
+{
+	gboolean res = TRUE;
+	GSList *ptr = gtk_action_get_proxies (GTK_ACTION (paction));
+
+	paction->selected_id = id;
+	for ( ; ptr != NULL ; ptr = ptr->next)
+		if (IS_GO_TOOL_COMBO_PIXMAPS (ptr->data))
+			res |= go_combo_pixmaps_select_id (
+				GO_TOOL_COMBO_PIXMAPS (ptr->data)->combo, id);
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-pixmaps.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,51 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-action-combo-pixmaps.h: A custom GtkAction to chose among a set of images
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **/
+
+#ifndef _GO_ACTION_COMBO_PIXMAPS_H_
+#define _GO_ACTION_COMBO_PIXMAPS_H_
+
+#include <glib-object.h>
+#include <goffice/gtk/go-combo-pixmaps.h>
+
+G_BEGIN_DECLS
+
+#define GO_ACTION_COMBO_PIXMAPS_TYPE  (go_action_combo_pixmaps_get_type ())
+#define GO_ACTION_COMBO_PIXMAPS(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_ACTION_COMBO_PIXMAPS_TYPE, GOActionComboPixmaps))
+#define IS_GO_ACTION_COMBO_PIXMAPS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_ACTION_COMBO_PIXMAPS_TYPE))
+
+typedef struct _GOActionComboPixmaps	 GOActionComboPixmaps;
+typedef struct {
+	char const *untranslated_tooltip;
+	char const *stock_id;
+	int id;
+} GOActionComboPixmapsElement;
+
+GType	go_action_combo_pixmaps_get_type (void);
+GOActionComboPixmaps *
+	go_action_combo_pixmaps_new (char const *name,
+				     GOActionComboPixmapsElement const *elements,
+				     int ncols, int nrows);
+int	 go_action_combo_pixmaps_get_selected (GOActionComboPixmaps *action, int *indx);
+gboolean go_action_combo_pixmaps_select_id    (GOActionComboPixmaps *action, int id);
+
+G_END_DECLS
+
+#endif  /* _GO_ACTION_COMBO_PIXMAPS_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,494 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-action-combo-stack.c: A custom GtkAction to handle undo/redo menus/toolbars
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <goffice/goffice-config.h>
+#include "go-action-combo-stack.h"
+#include "go-combo-box.h"
+#include "goffice-gtk.h"
+
+#include <gtk/gtkaction.h>
+#include <gtk/gtktoolitem.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkwindow.h>
+#include <gtk/gtkcontainer.h>
+#include <gtk/gtktreeview.h>
+#include <gtk/gtktreeselection.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkwidget.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtkscrolledwindow.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <stdio.h>
+
+/**************************************************************************/
+
+typedef struct {
+	GOComboBox base;
+
+	GtkWidget   *button;
+	GtkTreeView *list;
+	GtkWidget   *scrolled;
+
+	gpointer last_key;
+} GOComboStack;
+
+typedef struct {
+	GOComboBoxClass	base;
+	void (*pop) (GOComboStack *cbox, gpointer key);
+} GOComboStackClass;
+
+enum {
+	POP,
+	LAST_SIGNAL
+};
+enum {
+	LABEL_COL,
+	INDEX_COL,
+	KEY_COL
+};
+
+#define GO_COMBO_STACK_TYPE	(go_combo_stack_get_type ())
+#define GO_COMBO_STACK(o)	G_TYPE_CHECK_INSTANCE_CAST (o, GO_COMBO_STACK_TYPE, GOComboStack)
+#define IS_GO_COMBO_STACK(o)	G_TYPE_CHECK_INSTANCE_TYPE (o, GO_COMBO_STACK_TYPE)
+
+static GtkType go_combo_stack_get_type   (void);
+static guint go_combo_stack_signals [LAST_SIGNAL] = { 0, };
+
+static void
+cb_screen_changed (GOComboStack *cs, GdkScreen *previous_screen)
+{
+	GtkWidget *w = GTK_WIDGET (cs);
+	GdkScreen *screen = gtk_widget_has_screen (w)
+		? gtk_widget_get_screen (w)
+		: NULL;
+
+	if (screen) {
+		GtkWidget *toplevel = gtk_widget_get_toplevel (cs->scrolled
+		    ? cs->scrolled : GTK_WIDGET (cs->list));
+		gtk_window_set_screen (GTK_WINDOW (toplevel), screen);
+	}
+}
+
+static gpointer
+get_key_at_path (GtkTreeView *view, GtkTreePath	*pos)
+{
+	gpointer	  res = NULL;
+	GtkTreeIter	  iter;
+	GtkTreeModel	 *model = gtk_tree_view_get_model (view);
+	if (gtk_tree_model_get_iter (model, &iter, pos))
+		gtk_tree_model_get (model, &iter, KEY_COL, &res, -1);
+	return res;
+}
+
+static void
+cb_button_clicked (GOComboStack *stack)
+{
+	if (!_go_combo_is_updating (GO_COMBO_BOX (stack))) {
+		GtkTreePath *pos = gtk_tree_path_new_first ();
+		gpointer top = get_key_at_path (stack->list, pos);
+		gtk_tree_path_free (pos);
+		g_signal_emit (stack, go_combo_stack_signals [POP], 0, top);
+		go_combo_box_popup_hide (GO_COMBO_BOX (stack));
+	}
+}
+
+static gboolean
+cb_button_release_event (GtkWidget *list, GdkEventButton *e, gpointer data)
+{
+	GOComboStack *stack = GO_COMBO_STACK (data);
+
+	go_combo_box_popup_hide (GO_COMBO_BOX (stack));
+
+	if (stack->last_key != NULL) {
+		gint dummy, w, h;
+		gdk_window_get_geometry (e->window, &dummy, &dummy, &w, &h, &dummy);
+		if (0 <= e->x && e->x < w && 0 <= e->y && e->y < h)
+			g_signal_emit (stack, go_combo_stack_signals [POP], 0,
+				       stack->last_key);
+	}
+
+	return TRUE;
+}
+
+static gboolean
+cb_motion_notify_event (GtkWidget *widget, GdkEventMotion *event,
+			GOComboStack *stack)
+{
+	GtkTreePath	 *start, *pos;
+	GtkTreeSelection *sel;
+	GtkTreeModel	 *model = gtk_tree_view_get_model (stack->list);
+
+	stack->last_key = NULL;
+	sel = gtk_tree_view_get_selection (stack->list);
+	gtk_tree_selection_unselect_all (sel);
+
+	if (!gtk_tree_view_get_path_at_pos
+	    (stack->list, event->x, event->y, &pos, NULL, NULL, NULL)) {
+		int n = gtk_tree_model_iter_n_children (model, NULL);
+		if (n == 0)
+			return TRUE;
+		pos = gtk_tree_path_new_from_indices (n - 1, -1);
+	}
+
+	stack->last_key = get_key_at_path (stack->list, pos);
+	start = gtk_tree_path_new_first ();
+	gtk_tree_selection_select_range (sel, start, pos);
+	gtk_tree_path_free (start);
+	gtk_tree_path_free (pos);
+
+	return TRUE;
+}
+
+static gboolean
+cb_leave_notify_event (GOComboStack *stack)
+{
+	stack->last_key = NULL;
+	gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (stack->list));
+	return FALSE;
+}
+
+static void
+go_combo_stack_init (GOComboStack *stack)
+{
+	GtkScrolledWindow *scrolled;
+	GtkTreeSelection *selection;
+
+	stack->button = gtk_toggle_button_new ();
+	gtk_button_set_relief (GTK_BUTTON (stack->button), GTK_RELIEF_NONE);
+	GTK_WIDGET_UNSET_FLAGS (stack->button, GTK_CAN_FOCUS);
+
+	stack->list = (GtkTreeView *)gtk_tree_view_new ();
+	selection = gtk_tree_view_get_selection (stack->list);
+	gtk_tree_selection_set_mode (selection, GTK_SELECTION_MULTIPLE);
+
+	stack->scrolled = gtk_scrolled_window_new (
+		gtk_tree_view_get_hadjustment (stack->list),
+		gtk_tree_view_get_vadjustment (stack->list));
+	scrolled = GTK_SCROLLED_WINDOW (stack->scrolled);
+	gtk_scrolled_window_set_policy (scrolled,
+		GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+	gtk_scrolled_window_add_with_viewport (scrolled, GTK_WIDGET (stack->list));
+	gtk_widget_set_size_request (stack->scrolled, -1, 200); /* MAGIC NUMBER */
+
+	/* Set up the dropdown list */
+	g_signal_connect (G_OBJECT (stack), "screen-changed", G_CALLBACK (cb_screen_changed), NULL);
+	g_signal_connect (G_OBJECT (stack->list),
+		"button_release_event",
+		G_CALLBACK (cb_button_release_event), stack);
+	g_signal_connect (G_OBJECT (stack->list),
+		"motion_notify_event",
+		G_CALLBACK (cb_motion_notify_event), stack);
+	g_signal_connect_swapped (G_OBJECT (stack->list),
+		"leave_notify_event",
+		G_CALLBACK (cb_leave_notify_event), stack);
+	g_signal_connect_swapped (stack->button, "clicked",
+		G_CALLBACK (cb_button_clicked),
+		(gpointer) stack);
+
+	gtk_widget_show (GTK_WIDGET (stack->list));
+	gtk_widget_show (stack->scrolled);
+	gtk_widget_show (stack->button);
+	go_combo_box_construct (GO_COMBO_BOX (stack),
+		stack->button, stack->scrolled, GTK_WIDGET (stack->list));
+}
+
+static void
+go_combo_stack_class_init (GObjectClass *klass)
+{
+	go_combo_stack_signals [POP] = g_signal_new ("pop",
+		G_TYPE_FROM_CLASS (klass),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GOComboStackClass, pop),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__POINTER,
+		G_TYPE_NONE,
+		1, G_TYPE_POINTER);
+}
+
+GSF_CLASS (GOComboStack, go_combo_stack,
+	   go_combo_stack_class_init, go_combo_stack_init,
+	   GO_COMBO_BOX_TYPE)
+
+/**************************************************************************/
+
+typedef struct {
+	GtkToolItem	 base;
+	GOComboStack	*combo; /* container has a ref, not us */
+} GOToolComboStack;
+typedef GtkToolItemClass GOToolComboStackClass;
+
+#define GO_TOOL_COMBO_STACK_TYPE	(go_tool_combo_stack_get_type ())
+#define GO_TOOL_COMBO_STACK(o)		(G_TYPE_CHECK_INSTANCE_CAST (o, GO_TOOL_COMBO_STACK_TYPE, GOToolComboStack))
+#define IS_GO_TOOL_COMBO_STACK(o)	(G_TYPE_CHECK_INSTANCE_TYPE (o, GO_TOOL_COMBO_STACK_TYPE))
+
+static GType go_tool_combo_stack_get_type (void);
+static gboolean
+go_tool_combo_stack_set_tooltip (GtkToolItem *tool_item, GtkTooltips *tooltips,
+				 char const *tip_text,
+				 char const *tip_private)
+{
+	GOToolComboStack *self = (GOToolComboStack *)tool_item;
+	go_combo_box_set_tooltip (GO_COMBO_BOX (self->combo), tooltips,
+		tip_text, tip_private);
+	return TRUE;
+}
+
+static void
+go_tool_combo_stack_class_init (GtkToolItemClass *tool_item_klass)
+{
+	tool_item_klass->set_tooltip = go_tool_combo_stack_set_tooltip;
+}
+
+static GSF_CLASS (GOToolComboStack, go_tool_combo_stack,
+	   go_tool_combo_stack_class_init, NULL,
+	   GTK_TYPE_TOOL_ITEM)
+
+/*****************************************************************************/
+
+struct _GOActionComboStack {
+	GtkAction	 base;
+	GtkTreeModel	*model;
+
+	gpointer	 last_selection;
+};
+typedef GtkActionClass GOActionComboStackClass;
+
+static GObjectClass *combo_stack_parent;
+
+static void
+cb_tool_popped (GOToolComboStack *tool, gpointer key, GOActionComboStack *a)
+{
+	/* YUCK
+	 * YUCK
+	 * YUCK
+	 * We really need to return the key in "activate" but can not for now.
+	 * as a result people had better call
+	 * 	go_action_combo_stack_selection
+	 * from with the handler or they will lose the selection from toolitems.
+	 * We can not tell whether the activation was a menu or accelerator
+	 * which just use the top.  */
+	a->last_selection = key;
+	gtk_action_activate (GTK_ACTION (a));
+	a->last_selection = NULL;
+}
+
+static GtkWidget *
+go_action_combo_stack_create_tool_item (GtkAction *a)
+{
+	GOActionComboStack *saction = (GOActionComboStack *)a;
+	GtkWidget *image;
+	GtkTreeView *tree_view;
+	GOToolComboStack *tool = g_object_new (GO_TOOL_COMBO_STACK_TYPE, NULL);
+	char *stock_id;
+	gboolean is_sensitive = gtk_tree_model_iter_n_children (saction->model, NULL) > 0;
+	GtkIconSize size;
+	GtkSettings *settings;
+
+	tool->combo = g_object_new (GO_COMBO_STACK_TYPE, NULL);
+	tree_view = GTK_TREE_VIEW (tool->combo->list);
+	gtk_tree_view_set_model (tree_view, saction->model);
+	gtk_tree_view_set_headers_visible (tree_view, FALSE);
+	gtk_tree_view_append_column (tree_view,
+		gtk_tree_view_column_new_with_attributes (NULL,
+			gtk_cell_renderer_text_new (),
+			"text", 0,
+			NULL));
+
+	/* FIXME: This probably isn't 100% right as tool isn't mapped yet.  */
+	settings = gtk_widget_get_settings (GTK_WIDGET (tool));
+	g_object_get (settings,
+		      "gtk-toolbar-icon-size", &size,
+		      NULL);
+	g_object_get (G_OBJECT (a), "stock-id", &stock_id, NULL);
+	image = gtk_image_new_from_stock (stock_id, size);
+	g_free (stock_id);
+	gtk_widget_show (image);
+	gtk_container_add (GTK_CONTAINER (tool->combo->button), image);
+
+	gtk_widget_set_sensitive (GTK_WIDGET (tool), is_sensitive);
+
+	go_combo_box_set_relief (GO_COMBO_BOX (tool->combo), GTK_RELIEF_NONE);
+	go_gtk_widget_disable_focus (GTK_WIDGET (tool->combo));
+	gtk_container_add (GTK_CONTAINER (tool), GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool));
+
+	g_signal_connect (G_OBJECT (tool->combo),
+		"pop",
+		G_CALLBACK (cb_tool_popped), saction);
+
+	return GTK_WIDGET (tool);
+}
+
+static GtkWidget *
+go_action_combo_stack_create_menu_item (GtkAction *a)
+{
+	GOActionComboStack *saction = (GOActionComboStack *)a;
+	GtkWidget *item = gtk_image_menu_item_new ();
+	gboolean is_sensitive = gtk_tree_model_iter_n_children (saction->model, NULL) > 0;
+	gtk_widget_set_sensitive (GTK_WIDGET (item), is_sensitive);
+	return item;
+}
+
+static void
+go_action_combo_stack_finalize (GObject *obj)
+{
+	GOActionComboStack *saction = (GOActionComboStack *)obj;
+	g_object_unref (saction->model);
+	saction->model = NULL;
+	combo_stack_parent->finalize (obj);
+}
+
+static void
+go_action_combo_stack_class_init (GtkActionClass *gtk_act_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *)gtk_act_klass;
+
+	combo_stack_parent = g_type_class_peek_parent (gobject_klass);
+
+	gobject_klass->finalize = go_action_combo_stack_finalize;
+	gtk_act_klass->create_tool_item = go_action_combo_stack_create_tool_item;
+	gtk_act_klass->create_menu_item = go_action_combo_stack_create_menu_item;
+}
+
+static void
+go_action_combo_stack_init (GOActionComboStack *saction)
+{
+	saction->model = (GtkTreeModel *)
+		gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER);
+	saction->last_selection = NULL;
+}
+
+GSF_CLASS (GOActionComboStack, go_action_combo_stack,
+	   go_action_combo_stack_class_init, go_action_combo_stack_init,
+	   GTK_TYPE_ACTION)
+
+static void
+check_sensitivity (GOActionComboStack *saction, unsigned old_count)
+{
+	unsigned new_count = gtk_tree_model_iter_n_children (saction->model, NULL);
+
+	if ((old_count > 0) ^ (new_count > 0)) {
+		GSList *ptr = gtk_action_get_proxies (GTK_ACTION (saction));
+		gboolean is_sensitive = (new_count > 0);
+		for ( ; ptr != NULL ; ptr = ptr->next)
+			gtk_widget_set_sensitive (ptr->data, is_sensitive);
+	}
+}
+
+/**
+ * go_action_combo_stack_push :
+ * @act : #GOActionComboStack
+ * @str : The label to push
+ * @key : a key value to id the pushe item
+ **/
+void
+go_action_combo_stack_push (GOActionComboStack *a,
+			    char const *label, gpointer key)
+{
+	GOActionComboStack *saction = GO_ACTION_COMBO_STACK (a);
+	GtkTreeIter iter;
+	unsigned old_count = gtk_tree_model_iter_n_children (saction->model, NULL);
+
+	g_return_if_fail (saction != NULL);
+
+	gtk_list_store_insert (GTK_LIST_STORE (saction->model), &iter, 0);
+	gtk_list_store_set (GTK_LIST_STORE (saction->model), &iter,
+		LABEL_COL,	label,
+		KEY_COL,	key,
+		-1);
+	check_sensitivity (saction, old_count);
+}
+
+/**
+ * go_action_combo_stack_pop :
+ * @act : #GOActionComboStack
+ * @n :
+ *
+ * Shorten list @act by removing @n off the top (or fewer if the list is
+ * shorter)
+ **/
+void
+go_action_combo_stack_pop (GOActionComboStack *a, unsigned n)
+{
+	GOActionComboStack *saction = GO_ACTION_COMBO_STACK (a);
+	GtkTreeIter iter;
+	unsigned old_count = gtk_tree_model_iter_n_children (saction->model, NULL);
+
+	g_return_if_fail (saction != NULL);
+
+	if (gtk_tree_model_iter_nth_child (saction->model, &iter, NULL, 0))
+		while (n-- > 0 &&
+		       gtk_list_store_remove (GTK_LIST_STORE (saction->model), &iter))
+			;
+	check_sensitivity (saction, old_count);
+}
+
+/**
+ * go_action_combo_stack_truncate :
+ * @act : #GOActionComboStack
+ * @n : 
+ *
+ * Ensure that list @act is no longer than @n, dropping any extra off the
+ * bottom.
+ **/
+void
+go_action_combo_stack_truncate (GOActionComboStack *a, unsigned n)
+{
+	GOActionComboStack *saction = GO_ACTION_COMBO_STACK (a);
+	GtkTreeIter iter;
+	unsigned old_count = gtk_tree_model_iter_n_children (saction->model, NULL);
+
+	g_return_if_fail (saction != NULL);
+
+	if (gtk_tree_model_iter_nth_child (saction->model, &iter, NULL, n))
+		while (gtk_list_store_remove (GTK_LIST_STORE (saction->model), &iter))
+			;
+	check_sensitivity (saction, old_count);
+}
+
+/**
+ * go_action_combo_stack_selection :
+ * @a : #GOActionComboStack
+ *
+ * Returns the key of the item last selected in one of the proxies.
+ * Yes this interface is terrible, but we can't return the key in the activate
+ * signal.
+ *
+ * NOTE : see writeup in cb_tool_popped.
+ **/
+gpointer
+go_action_combo_stack_selection (GOActionComboStack const *a)
+{
+	gpointer res = NULL;
+	GtkTreeIter iter;
+
+	if (a->last_selection != NULL)
+		return a->last_selection;
+	if (gtk_tree_model_get_iter_first (a->model, &iter))
+		gtk_tree_model_get (a->model, &iter,
+			KEY_COL, &res,
+			-1);
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-stack.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-action-combo-stack.h: A custom GtkAction to handle undo/redo style combos
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **/
+
+#ifndef _GO_ACTION_COMBO_STACK_H_
+#define _GO_ACTION_COMBO_STACK_H_
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_ACTION_COMBO_STACK_TYPE  (go_action_combo_stack_get_type ())
+#define GO_ACTION_COMBO_STACK(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_ACTION_COMBO_STACK_TYPE, GOActionComboStack))
+#define IS_GO_ACTION_COMBO_STACK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_ACTION_COMBO_STACK_TYPE))
+
+typedef struct _GOActionComboStack	GOActionComboStack;
+
+GType	 go_action_combo_stack_get_type  (void);
+void	 go_action_combo_stack_push      (GOActionComboStack *a,
+					  char const *str, gpointer key);
+void	 go_action_combo_stack_pop	 (GOActionComboStack *a, unsigned n);
+void	 go_action_combo_stack_truncate  (GOActionComboStack *a, unsigned n);
+gpointer go_action_combo_stack_selection (GOActionComboStack const *a);
+
+G_END_DECLS
+
+#endif  /* _GO_ACTION_COMBO_STACK_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,281 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-action-combo-text .c: A custom GtkAction to handle lists in menus/toolbars
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <goffice/goffice-config.h>
+#include "go-action-combo-text.h"
+#include "go-combo-box.h"
+#include "go-combo-text.h"
+#include "goffice-gtk.h"
+#include <goffice/utils/go-glib-extras.h>
+
+#include <gtk/gtkaction.h>
+#include <gtk/gtktoolitem.h>
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+typedef struct {
+	GtkToolItem	 base;
+	GoComboText	*combo; /* container has a ref, not us */
+} GOToolComboText;
+typedef GtkToolItemClass GOToolComboTextClass;
+
+#define GO_TOOL_COMBO_TEXT_TYPE		(go_tool_combo_text_get_type ())
+#define GO_TOOL_COMBO_TEXT(o)		(G_TYPE_CHECK_INSTANCE_CAST (o, GO_TOOL_COMBO_TEXT_TYPE, GOToolComboText))
+#define IS_GO_TOOL_COMBO_TEXT(o)	(G_TYPE_CHECK_INSTANCE_TYPE (o, GO_TOOL_COMBO_TEXT_TYPE))
+
+static GType go_tool_combo_text_get_type (void);
+#if 0
+static void
+go_tool_combo_text_finalize (GObject *obj)
+{
+	/* Call parent->finalize (obj).  */
+}
+static gboolean
+go_tool_combo_text_create_menu_proxy (GtkToolItem *tool_item)
+{
+}
+static gboolean
+go_tool_combo_text_set_tooltip (GtkToolItem *tool_item, GtkTooltips *tooltips,
+				char const *tip_text,
+				char const *tip_private)
+{
+}
+#endif
+static void
+go_tool_combo_text_class_init (GtkToolItemClass *tool_item_klass)
+{
+#if 0
+	gobject_klass->finalize		   = go_tool_combo_stack_finalize;
+	tool_item_klass->create_menu_proxy = go_tool_combo_stack_create_menu_proxy;
+	tool_item_klass->set_tooltip	   = go_tool_combo_stack_set_tooltip;
+#endif
+}
+
+static GSF_CLASS (GOToolComboText, go_tool_combo_text,
+	   go_tool_combo_text_class_init, NULL,
+	   GTK_TYPE_TOOL_ITEM)
+
+/*****************************************************************************/
+
+struct _GOActionComboText {
+	GtkAction	 base;
+	GSList		*elements;
+	char const 	*largest_elem;
+	char		*entry_val;
+	gboolean	 case_sensitive;
+};
+typedef struct {
+	GtkActionClass	base;
+} GOActionComboTextClass;
+
+enum {
+	PROP_0,
+	PROP_CASE_SENSITIVE
+};
+
+static GObjectClass *combo_text_parent;
+
+static void
+set_entry_val (GOActionComboText *taction, char const *text)
+{
+	if (taction->entry_val != text) {
+		g_free (taction->entry_val);
+		taction->entry_val = g_strdup (text);
+	}
+}
+
+#if 0
+static void
+go_action_combo_text_connect_proxy (GtkAction *action, GtkWidget *proxy)
+{
+}
+
+static void
+go_action_combo_disconnect_proxy (GtkAction *action,
+				  GtkWidget *proxy)
+{
+}
+#endif
+
+static gint
+g_strcase_equal (gconstpointer s1, gconstpointer s2)
+{
+	return !go_utf8_collate_casefold ((const gchar*) s1, (const gchar*) s2);
+}
+
+static gboolean
+cb_entry_changed (GoComboText *ct, char const *text, GOActionComboText *taction)
+{
+	set_entry_val (taction, text);
+	gtk_action_activate (GTK_ACTION (taction));
+	return TRUE;
+}
+
+static GtkWidget *
+go_action_combo_create_tool_item (GtkAction *act)
+{
+	GOActionComboText *taction = GO_ACTION_COMBO_TEXT (act);
+	GOToolComboText *tool = g_object_new (GO_TOOL_COMBO_TEXT_TYPE, NULL);
+	GSList *ptr;
+	int tmp, w = -1;
+
+	tool->combo = (GoComboText *)go_combo_text_new (taction->case_sensitive ? NULL : g_strcase_equal);
+	if (taction->largest_elem != NULL)
+		w = go_pango_measure_string (
+			gtk_widget_get_pango_context (GTK_WIDGET (tool->combo)),
+			go_combo_text_get_entry (tool->combo)->style->font_desc, 
+			taction->largest_elem);
+	for (ptr = taction->elements; ptr != NULL ; ptr = ptr->next) {
+		go_combo_text_add_item	(tool->combo, ptr->data);
+		if (taction->largest_elem == NULL) {
+			tmp = go_pango_measure_string (
+				gtk_widget_get_pango_context (GTK_WIDGET (tool->combo)),
+				go_combo_text_get_entry (tool->combo)->style->font_desc, 
+				ptr->data);
+			if (w < tmp)
+				w = tmp;
+		}
+	}
+				
+	go_combo_box_set_title (GO_COMBO_BOX (tool->combo),
+		_(gtk_action_get_name (act)));
+	gtk_widget_set_size_request (
+		go_combo_text_get_entry (tool->combo), w, -1);
+	g_object_set (G_OBJECT (tool), "visible-vertical", FALSE, NULL);
+
+	go_combo_box_set_relief (GO_COMBO_BOX (tool->combo), GTK_RELIEF_NONE);
+	gtk_container_add (GTK_CONTAINER (tool), GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool->combo));
+	gtk_widget_show (GTK_WIDGET (tool));
+	g_signal_connect (tool->combo,
+		"entry_changed",
+		G_CALLBACK (cb_entry_changed), taction);
+	return GTK_WIDGET (tool);
+}
+
+static void
+go_action_combo_text_finalize (GObject *obj)
+{
+	combo_text_parent->finalize (obj);
+}
+
+static void
+go_action_combo_text_set_property (GObject      *object,
+				   guint         prop_id,
+				   GValue const *value,
+				   GParamSpec   *pspec)
+{
+	GOActionComboText *taction = GO_ACTION_COMBO_TEXT (object);
+
+	switch (prop_id) {
+	case PROP_CASE_SENSITIVE:
+		taction->case_sensitive = g_value_get_boolean (value);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+static void
+go_action_combo_text_get_property (GObject      *object,
+		  guint         prop_id,
+		  GValue       *value,
+		  GParamSpec   *pspec)
+{
+	GOActionComboText *taction = GO_ACTION_COMBO_TEXT (object);
+
+	switch (prop_id) {
+	case PROP_CASE_SENSITIVE:
+		g_value_set_boolean (value, taction->case_sensitive);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+static void
+go_action_combo_text_class_init (GtkActionClass *gtk_act_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *)gtk_act_klass;
+
+	combo_text_parent = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize		= go_action_combo_text_finalize;
+
+	gtk_act_klass->create_tool_item = go_action_combo_create_tool_item;
+#if 0
+	gtk_act_klass->create_menu_item = Use the default
+	gtk_act_klass->connect_proxy	= go_action_combo_stack_connect_proxy;
+	gtk_act_klass->disconnect_proxy = go_action_combo_stack_disconnect_proxy;
+#endif
+
+	gobject_klass->set_property	= go_action_combo_text_set_property;
+	gobject_klass->get_property	= go_action_combo_text_get_property;
+
+	g_object_class_install_property (gobject_klass,
+		PROP_CASE_SENSITIVE,
+		g_param_spec_boolean ("case-sensitive", _("Case Sensitive"),
+			_("Should the text comparasion be case sensitive"),
+			TRUE,
+			G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
+			GSF_PARAM_STATIC));
+}
+
+GSF_CLASS (GOActionComboText, go_action_combo_text,
+	   go_action_combo_text_class_init, NULL,
+	   GTK_TYPE_ACTION)
+
+void
+go_action_combo_text_add_item (GOActionComboText *taction, char const *item)
+{
+	taction->elements = g_slist_append (taction->elements, g_strdup (item));
+}
+
+void
+go_action_combo_text_set_width (GOActionComboText *taction, char const *largest_elem)
+{
+	taction->largest_elem = largest_elem;
+}
+
+char const *
+go_action_combo_text_get_entry (GOActionComboText const *a)
+{
+	return a->entry_val;
+}
+
+/**
+ * go_action_combo_text_set_entry :
+ * @taction :
+ * @text :
+ * @dir :
+ *
+ * Set the entry of any toolbar proxies of @taction to @text.  Does not
+ * generate an 'activate' signal.
+ **/
+void
+go_action_combo_text_set_entry (GOActionComboText *taction, char const *text,
+				GOActionComboTextSearchDir dir)
+{
+	GSList *ptr = gtk_action_get_proxies (GTK_ACTION (taction));
+
+	set_entry_val (taction, text);
+	for ( ; ptr != NULL ; ptr = ptr->next)
+		if (IS_GO_TOOL_COMBO_TEXT (ptr->data))
+			go_combo_text_set_text (GO_TOOL_COMBO_TEXT (ptr->data)->combo, text, dir);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-action-combo-text.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,52 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * go-action-combo-text.h: A custom GOActionCombo to handle lists of text
+ *
+ * Copyright (C) 2003-2005 Jody Goldberg (jody at gnome.org)
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **/
+
+#ifndef _GO_ACTION_COMBO_TEXT_H_
+#define _GO_ACTION_COMBO_TEXT_H_
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_ACTION_COMBO_TEXT_TYPE  (go_action_combo_text_get_type ())
+#define GO_ACTION_COMBO_TEXT(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_ACTION_COMBO_TEXT_TYPE, GOActionComboText))
+#define IS_GO_ACTION_COMBO_TEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_ACTION_COMBO_TEXT_TYPE))
+
+typedef struct _GOActionComboText	 GOActionComboText;
+typedef enum {		/* begin the search from : */
+	GO_ACTION_COMBO_SEARCH_FROM_TOP,	/* the top of the list */
+	GO_ACTION_COMBO_SEARCH_CURRENT,		/* the current selection */
+	GO_ACTION_COMBO_SEARCH_NEXT		/* the next element after current */
+} GOActionComboTextSearchDir;
+
+GType	    go_action_combo_text_get_type (void);
+void	    go_action_combo_text_add_item  (GOActionComboText       *a,
+					    char const *item);
+void        go_action_combo_text_set_width (GOActionComboText       *a,
+					    char const *largest_elem);
+char const *go_action_combo_text_get_entry (GOActionComboText const *a);
+void	    go_action_combo_text_set_entry (GOActionComboText       *a,
+					    char const *text,
+					    GOActionComboTextSearchDir dir);
+
+G_END_DECLS
+
+#endif  /* _GO_ACTION_COMBO_TEXT_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,659 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * A charmap selector widget.
+ *
+ *  Copyright (C) 2003-2005 Andreas J. Guelzow
+ *
+ *  based on code by:
+ *  Copyright (C) 2000 Marco Pesenti Gritti
+ *  from the galeon code base
+ *
+ *  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, 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-charmap-sel.h"
+#include "go-optionmenu.h"
+#include <goffice/utils/go-glib-extras.h>
+#include <gtk/gtkcheckmenuitem.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkseparatormenuitem.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define CS(x) GO_CHARMAP_SEL (x)
+
+#define CHARMAP_NAME_KEY "Name of Character Encoding"
+
+/* ------------------------------------------------------------------------- */
+
+typedef enum {
+	LG_ARABIC,
+	LG_BALTIC,
+	LG_CENTRAL_EUROPEAN,
+	LG_CHINESE,
+	LG_CYRILLIC,
+	LG_GREEK,
+	LG_HEBREW,
+	LG_INDIAN,
+	LG_JAPANESE,
+	LG_KOREAN,
+	LG_TURKISH,
+	LG_UNICODE,
+	LG_VIETNAMESE,
+	LG_WESTERN,
+	LG_OTHER,
+	LG_LAST
+} LanguageGroup;
+
+typedef struct
+{
+        char const *group_name;
+	LanguageGroup const lgroup;
+}
+LGroupInfo;
+
+static LGroupInfo lgroups[] = {
+	{N_("Arabic"), LG_ARABIC},
+	{N_("Baltic"), LG_BALTIC},
+	{N_("Central European"), LG_CENTRAL_EUROPEAN},
+	{N_("Chinese"), LG_CHINESE},
+	{N_("Cyrillic"), LG_CYRILLIC},
+	{N_("Greek"), LG_GREEK},
+	{N_("Hebrew"), LG_HEBREW},
+	{N_("Indian"), LG_INDIAN},
+	{N_("Japanese"), LG_JAPANESE},
+	{N_("Korean"), LG_KOREAN},
+	{N_("Turkish"), LG_TURKISH},
+	{N_("Unicode"), LG_UNICODE},
+	{N_("Vietnamese"), LG_VIETNAMESE},
+	{N_("Western"), LG_WESTERN},
+	{N_("Other"), LG_OTHER},
+	{NULL, LG_LAST}
+};
+
+static int
+lgroups_order (const void *_a, const void *_b)
+{
+	const LGroupInfo *a = (const LGroupInfo *)_a;
+	const LGroupInfo *b = (const LGroupInfo *)_b;
+
+	return g_utf8_collate (_(a->group_name), _(b->group_name));
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef enum {
+     CI_MINOR,
+     CI_MAJOR
+} CharsetImportance;
+
+typedef struct {
+	gchar const *charset_title;
+	gchar const *aliases;
+	LanguageGroup const lgroup;
+	CharsetImportance const imp;
+	/* Generated stuff follows.  */
+	char *to_utf8_iconv_name, *from_utf8_iconv_name;
+} CharsetInfo;
+
+static CharsetInfo charset_trans_array[] = {
+	{N_("Arabic (IBM-864)"),                  "IBM864",                LG_ARABIC, CI_MINOR},
+	{N_("Arabic (IBM-864-I)"),                "IBM864i",               LG_ARABIC, CI_MINOR},
+	{N_("Arabic (ISO-8859-6)"),               "ISO-8859-6",            LG_ARABIC, CI_MINOR},
+	{N_("Arabic (ISO-8859-6-E)"),             "ISO-8859-6-E",          LG_ARABIC, CI_MINOR},
+
+	{N_("Arabic (ISO-8859-6-I)"),             "ISO-8859-6-I",          LG_ARABIC, CI_MINOR},
+	{N_("Arabic (MacArabic)"),                "x-mac-arabic",          LG_ARABIC, CI_MINOR},
+	{N_("Arabic (Windows-1256)"),             "windows-1256",          LG_ARABIC, CI_MINOR},
+	{N_("Armenian (ARMSCII-8)"),              "armscii-8", 	           LG_OTHER, CI_MINOR},
+	{N_("Baltic (ISO-8859-13)"),              "ISO-8859-13",           LG_BALTIC, CI_MINOR},
+	{N_("Baltic (ISO-8859-4)"),               "ISO-8859-4",            LG_BALTIC, CI_MINOR},
+	{N_("Baltic (Windows-1257)"),             "windows-1257",          LG_BALTIC, CI_MINOR},
+	{N_("Celtic (ISO-8859-14)"),              "ISO-8859-14",           LG_OTHER, CI_MINOR},
+	{N_("Central European (IBM-852)"),        "IBM852",                LG_CENTRAL_EUROPEAN, CI_MINOR},
+	{N_("Central European (ISO-8859-2)"),     "ISO-8859-2",	           LG_CENTRAL_EUROPEAN, CI_MINOR},
+	{N_("Central European (MacCE)"),          "x-mac-ce",              LG_CENTRAL_EUROPEAN, CI_MINOR},
+	{N_("Central European (Windows-1250)"),   "windows-1250",          LG_CENTRAL_EUROPEAN, CI_MINOR},
+	{N_("Chinese Simplified (GB18030)"),      "gb18030",               LG_CHINESE, CI_MINOR},
+	{N_("Chinese Simplified (GB2312)"),       "GB2312",                LG_CHINESE, CI_MINOR},
+	{N_("Chinese Simplified (GBK)"),          "x-gbk",                 LG_CHINESE, CI_MINOR},
+	{N_("Chinese Simplified (HZ)"),           "HZ-GB-2312",	           LG_CHINESE, CI_MINOR},
+	{N_("Chinese Simplified (Windows-936)"),  "windows-936",           LG_CHINESE, CI_MINOR},
+	{N_("Chinese Traditional (Big5)"),        "Big5",                  LG_CHINESE, CI_MINOR},
+	{N_("Chinese Traditional (Big5-HKSCS)"),  "Big5-HKSCS",	           LG_CHINESE, CI_MINOR},
+	{N_("Chinese Traditional (EUC-TW)"),      "x-euc-tw",              LG_CHINESE, CI_MINOR},
+	{N_("Croatian (MacCroatian)"),            "x-mac-croatian",        LG_CENTRAL_EUROPEAN, CI_MINOR},
+	{N_("Cyrillic (IBM-855)"),                "IBM855",                LG_CYRILLIC, CI_MINOR},
+	{N_("Cyrillic (ISO-8859-5)"),             "ISO-8859-5",	           LG_CYRILLIC, CI_MINOR},
+	{N_("Cyrillic (ISO-IR-111)"),             "ISO-IR-111",	           LG_CYRILLIC, CI_MINOR},
+	{N_("Cyrillic (KOI8-R)"),                 "KOI8-R",                LG_CYRILLIC, CI_MINOR},
+	{N_("Cyrillic (MacCyrillic)"),            "x-mac-cyrillic",        LG_CYRILLIC, CI_MINOR},
+	{N_("Cyrillic (Windows-1251)"),           "windows-1251",          LG_CYRILLIC, CI_MINOR},
+	{N_("Russian (CP-866)"),                  "IBM866",                LG_CYRILLIC, CI_MINOR},
+	{N_("Ukrainian (KOI8-U)"),                "KOI8-U",                LG_CYRILLIC, CI_MINOR},
+	{N_("Ukrainian (MacUkrainian)"),          "x-mac-ukrainian",       LG_CYRILLIC, CI_MINOR},
+	{N_("English (ASCII)"),                   "ANSI_X3.4-1968#ASCII",  LG_WESTERN, CI_MAJOR},
+	{N_("Farsi (MacFarsi)"),                  "x-mac-farsi",           LG_OTHER, CI_MINOR},
+	{N_("Georgian (GEOSTD8)"),                "geostd8",               LG_OTHER, CI_MINOR},
+	{N_("Greek (ISO-8859-7)"),                "ISO-8859-7",            LG_GREEK, CI_MINOR},
+	{N_("Greek (MacGreek)"),                  "x-mac-greek",           LG_GREEK, CI_MINOR},
+	{N_("Greek (Windows-1253)"),              "windows-1253",          LG_GREEK, CI_MINOR},
+	{N_("Gujarati (MacGujarati)"),            "x-mac-gujarati",        LG_INDIAN, CI_MINOR},
+	{N_("Gurmukhi (MacGurmukhi)"),            "x-mac-gurmukhi",        LG_INDIAN, CI_MINOR},
+	{N_("Hebrew (IBM-862)"),                  "IBM862",                LG_HEBREW, CI_MINOR},
+	{N_("Hebrew (ISO-8859-8-E)"),             "ISO-8859-8-E",          LG_HEBREW, CI_MINOR},
+	{N_("Hebrew (ISO-8859-8-I)"),             "ISO-8859-8-I",          LG_HEBREW, CI_MINOR},
+	{N_("Hebrew (MacHebrew)"),                "x-mac-hebrew",          LG_HEBREW, CI_MINOR},
+	{N_("Hebrew (Windows-1255)"),             "windows-1255",          LG_HEBREW, CI_MINOR},
+	{N_("Hindi (MacDevanagari)"),             "x-mac-devanagari",      LG_INDIAN, CI_MINOR},
+	{N_("Icelandic (MacIcelandic)"),          "x-mac-icelandic",       LG_OTHER, CI_MINOR},
+	{N_("Japanese (EUC-JP)"),                 "EUC-JP",                LG_JAPANESE, CI_MINOR},
+	{N_("Japanese (ISO-2022-JP)"),            "ISO-2022-JP",           LG_JAPANESE, CI_MINOR},
+	{N_("Japanese (Shift_JIS)"),              "Shift_JIS",             LG_JAPANESE, CI_MINOR},
+	{N_("Korean (EUC-KR)"),                   "EUC-KR",                LG_KOREAN, CI_MINOR},
+	{N_("Korean (ISO-2022-KR)"),              "ISO-2022-KR",           LG_KOREAN, CI_MINOR},
+	{N_("Korean (JOHAB)"),                    "x-johab",               LG_KOREAN, CI_MINOR},
+	{N_("Korean (UHC)"),                      "x-windows-949",         LG_KOREAN, CI_MINOR},
+	{N_("Nordic (ISO-8859-10)"),              "ISO-8859-10",           LG_OTHER, CI_MINOR},
+	{N_("Romanian (MacRomanian)"),            "x-mac-romanian",        LG_OTHER, CI_MINOR},
+	{N_("Romanian (ISO-8859-16)"),            "ISO-8859-16",           LG_OTHER, CI_MINOR},
+	{N_("South European (ISO-8859-3)"),       "ISO-8859-3",            LG_OTHER, CI_MINOR},
+	{N_("Thai (TIS-620)"),                    "TIS-620",               LG_OTHER, CI_MINOR},
+	{N_("Turkish (IBM-857)"),                 "IBM857",                LG_TURKISH, CI_MINOR},
+	{N_("Turkish (ISO-8859-9)"),              "ISO-8859-9",            LG_TURKISH, CI_MINOR},
+	{N_("Turkish (MacTurkish)"),              "x-mac-turkish",         LG_TURKISH, CI_MINOR},
+	{N_("Turkish (Windows-1254)"),            "windows-1254",          LG_TURKISH, CI_MINOR},
+	{N_("Unicode (UTF-7)"),                   "UTF-7",                 LG_UNICODE, CI_MINOR},
+	{N_("Unicode (UTF-8)"),                   "UTF-8",                 LG_UNICODE, CI_MAJOR},
+	{N_("Unicode (UTF-16BE)"),                "UTF-16BE",              LG_UNICODE, CI_MINOR},
+	{N_("Unicode (UTF-16LE)"),                "UTF-16LE",              LG_UNICODE, CI_MINOR},
+	{N_("Unicode (UTF-32BE)"),                "UTF-32BE",              LG_UNICODE, CI_MINOR},
+	{N_("Unicode (UTF-32LE)"),                "UTF-32LE",              LG_UNICODE, CI_MINOR},
+	{N_("User Defined"),                      "x-user-defined",        LG_OTHER, CI_MINOR},
+	{N_("Vietnamese (TCVN)"),                 "x-viet-tcvn5712",       LG_VIETNAMESE, CI_MINOR},
+	{N_("Vietnamese (VISCII)"),               "VISCII",                LG_VIETNAMESE, CI_MINOR},
+	{N_("Vietnamese (VPS)"),                  "x-viet-vps",            LG_VIETNAMESE, CI_MINOR},
+	{N_("Vietnamese (Windows-1258)"),         "windows-1258",          LG_VIETNAMESE, CI_MINOR},
+	{N_("Visual Hebrew (ISO-8859-8)"),        "ISO-8859-8",            LG_HEBREW, CI_MINOR},
+	{N_("Western (IBM-850)"),                 "IBM850",                LG_WESTERN, CI_MINOR},
+	{N_("Western (ISO-8859-1)"),              "ISO-8859-1",            LG_WESTERN, CI_MAJOR},
+	{N_("Western (ISO-8859-15)"),             "ISO-8859-15",           LG_WESTERN, CI_MINOR},
+	{N_("Western (MacRoman)"),                "x-mac-roman",           LG_WESTERN, CI_MINOR},
+	{N_("Western (Windows-1252)"),            "windows-1252",          LG_WESTERN, CI_MINOR},
+	/* charsets without possibly translatable names */
+	{"T61.8bit",                              "T61.8bit",              LG_OTHER, CI_MINOR},
+	{"x-imap4-modified-utf7",                 "x-imap4-modified-utf7", LG_UNICODE, CI_MINOR},
+	{"x-u-escaped",                           "x-u-escaped",           LG_OTHER, CI_MINOR},
+	{NULL,                                    NULL,                    LG_LAST, 0}
+};
+
+static int
+charset_order (const void *_a, const void *_b)
+{
+	const CharsetInfo *a = (const CharsetInfo *)_a;
+	const CharsetInfo *b = (const CharsetInfo *)_b;
+
+	if (a->lgroup != b->lgroup)
+		return b->lgroup - a->lgroup;
+
+	if (a->imp != b->imp)
+		return b->imp - a->imp;
+
+	return g_utf8_collate (_(a->charset_title), _(b->charset_title));
+}
+
+/* ------------------------------------------------------------------------- */
+
+/* name -> CharsetInfo* mapping */
+static GHashTable *encoding_hash;
+
+struct _GOCharmapSel {
+	GtkHBox box;
+	GOOptionMenu *encodings;
+	GtkMenu *encodings_menu;
+	GOCharmapSelTestDirection test;
+};
+
+typedef struct {
+	GtkHBoxClass parent_class;
+
+	gboolean (* charmap_changed) (GOCharmapSel *cs, char const *new_charmap);
+} GOCharmapSelClass;
+
+
+typedef GOCharmapSel Cs;
+typedef GOCharmapSelClass CsClass;
+
+/* Signals we emit */
+enum {
+	CHARMAP_CHANGED,
+	LAST_SIGNAL
+};
+
+enum {
+	PROP_0,
+	PROP_TEST_DIRECTION
+};
+
+
+
+
+static guint cs_signals[LAST_SIGNAL] = { 0 };
+
+static void cs_set_property      (GObject          *object,
+				  guint             prop_id,
+				  const GValue     *value,
+				  GParamSpec       *pspec);
+
+static void cs_get_property      (GObject          *object,
+				  guint             prop_id,
+				  GValue           *value,
+				  GParamSpec       *pspec);
+
+static gboolean
+iconv_supported (const char *to, const char *from)
+{
+	GIConv ic = g_iconv_open (to, from);
+	if (ic == NULL || ic == (GIConv)-1)
+		return FALSE;
+
+	g_iconv_close (ic);
+	return TRUE;
+}
+
+const char *
+go_charmap_sel_get_encoding_name (G_GNUC_UNUSED GOCharmapSel *cs,
+				    const char *encoding)
+{
+	CharsetInfo const *ci;
+
+	g_return_val_if_fail (encoding != NULL, NULL);
+
+	ci = g_hash_table_lookup (encoding_hash, encoding);
+	return ci ? _(ci->charset_title) : NULL;
+}
+
+static char const *
+get_locale_encoding_name (GOCharmapSel *cs)
+{
+	char const *locale_encoding;
+	char const *name;
+
+	g_get_charset (&locale_encoding);
+	name = go_charmap_sel_get_encoding_name (cs, locale_encoding);
+	return name ? name : locale_encoding;
+}
+
+static void
+encodings_changed_cb (GOOptionMenu *optionmenu, GOCharmapSel *cs)
+{
+	g_return_if_fail (IS_GO_CHARMAP_SEL (cs));
+	g_return_if_fail (optionmenu == cs->encodings);
+
+	g_signal_emit (G_OBJECT (cs),
+		       cs_signals[CHARMAP_CHANGED],
+		       0,
+		       go_charmap_sel_get_encoding (cs));
+}
+
+static void
+set_menu_to_default (GOCharmapSel *cs, gint item)
+{
+	GSList sel = { GINT_TO_POINTER (item - 1), NULL};
+
+	g_return_if_fail (cs != NULL && IS_GO_CHARMAP_SEL (cs));
+
+	go_option_menu_set_history (cs->encodings, &sel);
+}
+
+static gboolean
+cs_mnemonic_activate (GtkWidget *w, gboolean group_cycling)
+{
+	GOCharmapSel *cs = GO_CHARMAP_SEL (w);
+	gtk_widget_grab_focus (GTK_WIDGET (cs->encodings));
+	return TRUE;
+}
+
+static void
+cs_emphasize_label (GtkLabel *label)
+{
+	char *text = g_strconcat ("<b>", gtk_label_get_label (label), "</b>", NULL);
+
+	gtk_label_set_use_underline (label, FALSE);
+	gtk_label_set_use_markup (label, TRUE);
+	gtk_label_set_label (label, text);
+	g_free (text);
+}
+
+static void
+cs_init (GOCharmapSel *cs)
+{
+	cs->test = GO_CHARMAP_SEL_TO_UTF8;
+
+	cs->encodings = GO_OPTION_MENU (go_option_menu_new ());
+
+	g_signal_connect (G_OBJECT (cs->encodings), "changed",
+                          G_CALLBACK (encodings_changed_cb), cs);
+        gtk_box_pack_start (GTK_BOX (cs), GTK_WIDGET (cs->encodings),
+                            TRUE, TRUE, 0);
+}
+
+
+static void
+cs_build_menu (GOCharmapSel *cs)
+{
+        GtkWidget *item;
+	GtkMenu *menu;
+	LGroupInfo const *lgroup = lgroups;
+	gint lg_cnt = 0;
+
+        menu = GTK_MENU (gtk_menu_new ());
+
+	while (lgroup->group_name) {
+		CharsetInfo const *charset_trans;
+		GtkMenu *submenu;
+		gint cnt = 0;
+
+		item = gtk_menu_item_new_with_label (_(lgroup->group_name));
+
+		submenu = GTK_MENU (gtk_menu_new ());
+		charset_trans = charset_trans_array;
+
+		while (charset_trans->lgroup != LG_LAST) {
+			GtkWidget *subitem;
+			if (charset_trans->lgroup == lgroup->lgroup) {
+				const char *name = (cs->test == GO_CHARMAP_SEL_TO_UTF8)
+					? charset_trans->to_utf8_iconv_name
+					: charset_trans->from_utf8_iconv_name;
+				if (name) {
+					subitem = gtk_check_menu_item_new_with_label
+						(_(charset_trans->charset_title));
+					gtk_widget_show (subitem);
+					gtk_menu_shell_append (GTK_MENU_SHELL (submenu),  subitem);
+					if (charset_trans->imp == CI_MAJOR)
+						cs_emphasize_label (GTK_LABEL (gtk_bin_get_child (GTK_BIN (subitem))));
+					g_object_set_data (G_OBJECT (subitem), CHARMAP_NAME_KEY,
+							   (gpointer)name);
+					cnt++;
+				} else if (0) {
+					g_print ("Unsupported: %s\n", charset_trans->aliases);
+				}
+			}
+			charset_trans++;
+		}
+		if (cnt > 0) {
+			gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), GTK_WIDGET (submenu));
+			gtk_widget_show (item);
+			gtk_menu_shell_append (GTK_MENU_SHELL (menu),  item);
+			lg_cnt++;
+		} else {
+			g_object_unref (item);
+		}
+                lgroup++;
+        }
+	item = gtk_separator_menu_item_new ();
+	gtk_widget_show (item);
+	gtk_menu_shell_append (GTK_MENU_SHELL (menu),  item);
+	lg_cnt++;
+
+	{
+		char *locale_encoding_menu_title = g_strconcat (_("Locale: "),
+							      get_locale_encoding_name (cs),
+							      NULL);
+		item = gtk_check_menu_item_new_with_label (locale_encoding_menu_title);
+		g_free (locale_encoding_menu_title);
+		gtk_widget_show (item);
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu),  item);
+		lg_cnt++;
+		cs_emphasize_label (GTK_LABEL (gtk_bin_get_child (GTK_BIN (item))));
+	}
+
+	go_option_menu_set_menu (cs->encodings, GTK_WIDGET (menu));
+	cs->encodings_menu = menu;
+	set_menu_to_default (cs, lg_cnt);
+}
+
+static void
+cs_class_init (GtkWidgetClass *widget_klass)
+{
+	CharsetInfo *ci;
+
+	GObjectClass *gobject_class = G_OBJECT_CLASS (widget_klass);
+	widget_klass->mnemonic_activate = cs_mnemonic_activate;
+
+	gobject_class->set_property = cs_set_property;
+	gobject_class->get_property = cs_get_property;
+
+	cs_signals[CHARMAP_CHANGED] =
+		g_signal_new ("charmap_changed",
+			      GO_CHARMAP_SEL_TYPE,
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOCharmapSelClass, charmap_changed),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__POINTER,
+			      G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+	g_object_class_install_property (gobject_class,
+					 PROP_TEST_DIRECTION,
+					 g_param_spec_uint ("TestDirection",
+							    _("Conversion Direction"),
+							    _("This value determines which iconv test to perform."),
+							    (guint)GO_CHARMAP_SEL_TO_UTF8,
+							    (guint)GO_CHARMAP_SEL_FROM_UTF8,
+							    (guint)GO_CHARMAP_SEL_TO_UTF8,
+							    G_PARAM_READWRITE));
+
+	qsort (lgroups, G_N_ELEMENTS (lgroups) - 2, sizeof (lgroups[0]),
+	       lgroups_order);
+	qsort (charset_trans_array, G_N_ELEMENTS (charset_trans_array) - 1,
+	       sizeof (charset_trans_array[0]), charset_order);
+
+	encoding_hash =
+		g_hash_table_new_full (go_ascii_strcase_hash,
+				       go_ascii_strcase_equal,
+				       (GDestroyNotify)g_free,
+				       NULL);
+
+	for (ci = charset_trans_array; ci->charset_title; ci++) {
+		const char *aliases = ci->aliases;
+		char *autoaliases = NULL;
+
+		if (strchr (aliases, '#') == 0) {
+			/* Sigh.  This sucks quite a lot.  */
+			if (strncmp (aliases, "ISO-", 4) == 0) {
+				autoaliases =
+					g_strconcat (aliases,
+						     "#ISO", aliases + 4,
+						     "#ISO_", aliases + 4,
+						     NULL);
+			}
+
+			if (autoaliases)
+				aliases = autoaliases;
+		}
+
+		ci->to_utf8_iconv_name = ci->from_utf8_iconv_name = NULL;
+		while (aliases) {
+			const char *sep = strchr (aliases, '#');
+			char *alias;
+
+			if (sep) {
+				alias = g_strndup (aliases, sep - aliases);
+				aliases = sep + 1;
+			} else {
+				alias = g_strdup (aliases);
+				aliases = NULL;
+			}
+
+			if (ci->to_utf8_iconv_name == NULL &&
+			    iconv_supported ("UTF-8", alias)) {
+				ci->to_utf8_iconv_name = g_strdup (alias);
+			}
+
+			if (ci->from_utf8_iconv_name == NULL &&
+			    iconv_supported (alias, "UTF-8")) {
+				ci->from_utf8_iconv_name = g_strdup (alias);
+			}
+
+			g_hash_table_insert (encoding_hash, alias, ci);
+		}
+
+		g_free (autoaliases);
+	}
+}
+
+GSF_CLASS (GOCharmapSel, go_charmap_sel,
+	   cs_class_init, cs_init, GTK_TYPE_HBOX)
+
+GtkWidget *
+go_charmap_sel_new (GOCharmapSelTestDirection test)
+{
+	return g_object_new (GO_CHARMAP_SEL_TYPE, "TestDirection", test, NULL);
+}
+
+gchar const *
+go_charmap_sel_get_encoding (GOCharmapSel *cs)
+{
+	GtkMenuItem *selection;
+	char const *locale_encoding;
+	char const *encoding;
+
+	g_get_charset (&locale_encoding);
+
+ 	g_return_val_if_fail (IS_GO_CHARMAP_SEL (cs), locale_encoding);
+
+ 	selection = GTK_MENU_ITEM (go_option_menu_get_history (cs->encodings));
+	encoding = (char const *) g_object_get_data (G_OBJECT (selection),
+						     CHARMAP_NAME_KEY);
+	return encoding ? encoding : locale_encoding;
+}
+
+struct cb_find_entry {
+	const char *enc;
+	gboolean found;
+	int i;
+	GSList *path;
+};
+
+static void
+cb_find_entry (GtkMenuItem *w, struct cb_find_entry *cl)
+{
+	GtkWidget *sub;
+
+	if (cl->found)
+		return;
+
+	sub = gtk_menu_item_get_submenu (w);
+	if (sub) {
+		GSList *tmp = cl->path = g_slist_prepend (cl->path, GINT_TO_POINTER (cl->i));
+		cl->i = 0;
+
+		gtk_container_foreach (GTK_CONTAINER (sub), (GtkCallback)cb_find_entry, cl);
+		if (cl->found)
+			return;
+		
+		cl->i = GPOINTER_TO_INT (cl->path->data);
+		cl->path = cl->path->next;
+		g_slist_free_1 (tmp);
+	} else {
+		const char *this_enc =
+			g_object_get_data (G_OBJECT (w), CHARMAP_NAME_KEY);
+		if (this_enc && strcmp (this_enc, cl->enc) == 0) {
+			cl->found = TRUE;
+			cl->path = g_slist_prepend (cl->path, GINT_TO_POINTER (cl->i));
+			cl->path = g_slist_reverse (cl->path);
+			return;
+		}
+	}
+	cl->i++;
+}
+
+gboolean
+go_charmap_sel_set_encoding (GOCharmapSel *cs, const char *enc)
+{
+	struct cb_find_entry cl;
+	CharsetInfo const *ci;
+
+	g_return_val_if_fail (IS_GO_CHARMAP_SEL (cs), FALSE);
+	g_return_val_if_fail (enc != NULL, FALSE);
+
+	ci = g_hash_table_lookup (encoding_hash, enc);
+	if (!ci)
+		return FALSE;
+
+	enc = ci->to_utf8_iconv_name;
+	if (!enc)
+		return FALSE;
+
+	cl.enc = enc;
+	cl.found = FALSE;
+	cl.i = 0;
+	cl.path = NULL;
+
+	gtk_container_foreach (GTK_CONTAINER (cs->encodings_menu),
+			       (GtkCallback)cb_find_entry,
+			       &cl);
+	if (!cl.found)
+		return FALSE;
+
+	go_option_menu_set_history (cs->encodings, cl.path);
+	g_slist_free (cl.path);
+
+	return TRUE;
+}
+
+static void
+cs_set_property (GObject      *object,
+		 guint         prop_id,
+		 const GValue *value,
+		 GParamSpec   *pspec)
+{
+	GOCharmapSel *cs = GO_CHARMAP_SEL (object);
+
+	switch (prop_id) {
+	case PROP_TEST_DIRECTION:
+		cs->test = g_value_get_uint (value);
+		cs_build_menu (cs);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+
+static void
+cs_get_property (GObject     *object,
+		 guint        prop_id,
+		 GValue      *value,
+		 GParamSpec  *pspec)
+{
+	GOCharmapSel *cs = GO_CHARMAP_SEL (object);
+
+	switch (prop_id) {
+	case PROP_TEST_DIRECTION:
+		g_value_set_uint (value, (guint)cs->test);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-charmap-sel.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,53 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ *  Copyright (C) 2003 Andreas J. Guelzow
+ *
+ *  based on code by:
+ *  Copyright (C) 2000 Marco Pesenti Gritti
+ *  from the galeon code base
+ *
+ *  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, 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#ifndef _GO_CHARMAP_SEL_H_
+#define _GO_CHARMAP_SEL_H_
+
+#include <glib-object.h>
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+#define GO_CHARMAP_SEL_TYPE        (go_charmap_sel_get_type ())
+#define GO_CHARMAP_SEL(obj)        (G_TYPE_CHECK_INSTANCE_CAST((obj), GO_CHARMAP_SEL_TYPE, GOCharmapSel))
+#define IS_GO_CHARMAP_SEL(obj)     (G_TYPE_CHECK_INSTANCE_TYPE((obj), GO_CHARMAP_SEL_TYPE))
+
+typedef struct _GOCharmapSel GOCharmapSel;
+
+typedef enum {
+	GO_CHARMAP_SEL_TO_UTF8 = 0,
+	GO_CHARMAP_SEL_FROM_UTF8
+} GOCharmapSelTestDirection;
+
+GType        go_charmap_sel_get_type (void);
+GtkWidget *  go_charmap_sel_new (GOCharmapSelTestDirection test);
+
+gchar const *go_charmap_sel_get_encoding (GOCharmapSel *cs);
+gboolean     go_charmap_sel_set_encoding (GOCharmapSel *cs, const char *enc);
+
+const char  *go_charmap_sel_get_encoding_name (GOCharmapSel *cs, const char *enc);
+
+G_END_DECLS
+
+#endif /* _GO_CHARMAP_SEL_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,213 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * color-group.c - Utility to keep a shared memory of custom colors
+ *                 between arbitrary widgets.
+ * Copyright 2000, Michael Levy
+ * Copyright 2001, Almer S. Tigelaar
+ * Copyright 2004, Jody Goldberg
+ *
+ * Authors:
+ * 	Michael Levy (mlevy at genoscope.cns.fr)
+ * Revised and polished by:
+ *   Almer S. Tigelaar <almer at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-color-group.h"
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+typedef struct {
+	GObjectClass base;
+
+	void (*history_changed) (GOColorGroup *group);
+} GOColorGroupClass;
+
+enum {
+        HISTORY_CHANGED,
+        LAST_SIGNAL
+};
+
+static GObjectClass *go_color_group_parent_class;
+static guint	     go_color_group_signals [LAST_SIGNAL] = { 0 };
+static GHashTable   *go_color_groups = NULL;
+
+static void
+go_color_group_finalize (GObject *obj)
+{
+	GOColorGroup *cg = GO_COLOR_GROUP (obj);
+
+	/* make this name available */
+	if (cg->name) {
+		g_hash_table_remove (go_color_groups, cg);
+		g_free (cg->name);
+		cg->name = NULL;
+	}
+
+	(go_color_group_parent_class->finalize) (obj);
+}
+
+static void
+go_color_group_class_init (GOColorGroupClass *klass)
+{
+	GObjectClass *object_class;
+
+	object_class = (GObjectClass*) klass;
+
+	object_class->finalize = &go_color_group_finalize;
+	go_color_group_parent_class = g_type_class_peek (G_TYPE_OBJECT);
+	go_color_group_signals [HISTORY_CHANGED] =
+		g_signal_new ("history-changed",
+			GO_COLOR_GROUP_TYPE,
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GOColorGroupClass, history_changed),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
+}
+
+static void
+go_color_group_init (GOColorGroup *cg)
+{
+	int i;
+
+	cg->name = NULL;
+	cg->context = NULL;
+	for (i = 0 ; i < GO_COLOR_GROUP_HISTORY_SIZE ; i++)
+		cg->history[i] = RGBA_BLACK;
+}
+
+GSF_CLASS (GOColorGroup, go_color_group,
+	   go_color_group_class_init, go_color_group_init,
+	   G_TYPE_OBJECT)
+
+/**
+ * go_color_group_find :
+ * @name :
+ * @context :
+ *
+ * Look up the name/context specific color-group.  Return NULL if it is not found.
+ * No reference is added if it is found.
+ */
+GOColorGroup *
+go_color_group_find (char const *name, gpointer context)
+{
+	GOColorGroup tmp_key;
+
+	if (go_color_groups == NULL)
+		return NULL;
+
+	g_return_val_if_fail(name != NULL, NULL);
+
+	tmp_key.name = (char *)name;
+	tmp_key.context = context;
+	return (GOColorGroup *) g_hash_table_lookup (go_color_groups, &tmp_key);
+	}
+
+static guint
+cg_hash (GOColorGroup const *key)
+{
+	return g_str_hash (key->name);
+}
+
+static gint
+cg_equal (GOColorGroup const *a, GOColorGroup const *b)
+{
+	if (a == b)
+		return TRUE;
+	if (a->context != b->context)
+		return FALSE;
+	return g_str_equal (a->name, b->name);
+}
+
+/**
+ * go_color_group_fetch :
+ * @name :
+ * @context :
+ *
+ * if name is NULL or a name not currently in use by another group
+ * then a new group is created and returned. If name was NULL
+ * then the new group is given a unique name prefixed by "__cg_autogen_name__"
+ * (thereby insuring namespace separation).
+ * If name was already used by a group then the reference count is
+ * incremented and a pointer to the group is returned.
+ */
+GOColorGroup *
+go_color_group_fetch (const gchar *name, gpointer context)
+{
+	GOColorGroup *cg;
+	gchar *new_name;
+
+	if (go_color_groups == NULL)
+		go_color_groups = g_hash_table_new (
+			(GHashFunc) cg_hash, (GEqualFunc) cg_equal);
+
+	if (name == NULL) {
+		static gint count = 0;
+
+		while (1) {
+			new_name = g_strdup_printf("color_group_number_%i", count++);
+			if (go_color_group_find (new_name, context) == NULL)
+				break;
+			g_free (new_name);
+		}
+	} else {
+		new_name = g_strdup (name);
+		cg = go_color_group_find (new_name, context);
+	if (cg != NULL) {
+		g_free (new_name);
+		g_object_ref (G_OBJECT (cg));
+		return cg;
+	}
+	}
+
+	cg = g_object_new (go_color_group_get_type (), NULL);
+
+	g_return_val_if_fail(cg != NULL, NULL);
+
+	cg->name = new_name;
+	cg->context = context;
+
+	/* lastly register this name */
+	g_hash_table_insert (go_color_groups, cg, cg);
+
+	return cg;
+}
+
+/**
+ * go_color_group_add_color :
+ * @cg : #GOColorGroup
+ * @c : the color
+ *
+ * Potentially slide the history to add the new colour.  If it was already in
+ * the history reorder.
+ **/
+void
+go_color_group_add_color (GOColorGroup *cg, GOColor c)
+{
+	unsigned i;
+	g_return_if_fail (IS_GO_COLOR_GROUP (cg));
+
+	for (i = GO_COLOR_GROUP_HISTORY_SIZE ; i-- > 0 ;)
+		if (cg->history[i] == c)
+			break;
+	for ( ; i < GO_COLOR_GROUP_HISTORY_SIZE-1 ; i++)
+		cg->history [i] = cg->history [i+1];
+	cg->history [GO_COLOR_GROUP_HISTORY_SIZE-1] = c;
+	g_signal_emit (G_OBJECT (cg),
+		go_color_group_signals [HISTORY_CHANGED], 0);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-group.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,60 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-color-group.h - Utility to keep a shered memory of custom colors
+ * between arbitrary widgets.
+ * Copyright 2000, Michael Levy
+ * Copyright 2001, Almer S. Tigelaar
+ *
+ * Authors:
+ *   Michael Levy (mlevy at genoscope.cns.fr)
+ * Revised and polished by:
+ *   Almer S. Tigelaar <almer at gnome.org>
+ * Rewritten yet again by
+ *   Jody Goldberg <jody at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#ifndef _GO_COLOR_GROUP_H_
+#define _GO_COLOR_GROUP_H_
+
+#include <glib-object.h>
+#include <goffice/utils/go-color.h>
+
+G_BEGIN_DECLS
+
+#define GO_COLOR_GROUP_HISTORY_SIZE	8
+
+typedef struct {
+	GObject  parent;
+
+        char	  *name;
+	gpointer   context;
+
+        GOColor	history[GO_COLOR_GROUP_HISTORY_SIZE];
+} GOColorGroup;
+
+#define GO_COLOR_GROUP_TYPE     (go_color_group_get_type ())
+#define GO_COLOR_GROUP(obj)     (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_COLOR_GROUP_TYPE, GOColorGroup))
+#define IS_GO_COLOR_GROUP(obj)  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_COLOR_GROUP_TYPE))
+
+GType         go_color_group_get_type  (void);
+GOColorGroup *go_color_group_find      (char const *name, gpointer context);
+GOColorGroup *go_color_group_fetch     (char const *name, gpointer context);
+void          go_color_group_add_color (GOColorGroup *cg, GOColor c);
+
+G_END_DECLS
+
+#endif /* _GO_COLOR_GROUP_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,727 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * color-palette.c - A color selector palette
+ * Copyright 2000, 2001, Ximian, Inc.
+ *
+ * Authors:
+ * This code was extracted from widget-color-combo.c
+ *   written by Miguel de Icaza (miguel at kernel.org) and
+ *   Dom Lachowicz (dominicl at seas.upenn.edu). The extracted
+ *   code was re-packaged into a separate object by
+ *   Michael Levy (mlevy at genoscope.cns.fr)
+ *   And later revised and polished by
+ *   Almer S. Tigelaar (almer at gnome.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-color-palette.h"
+#include "goffice-gtk.h"
+#include <goffice/utils/go-marshalers.h>
+
+#include <goffice/utils/go-color.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtkdrawingarea.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkstock.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtktooltips.h>
+#include <gtk/gtkcolorseldialog.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdkcolor.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <string.h>
+
+typedef struct _ColorNamePair ColorNamePair;
+struct _GOColorPalette {
+	GtkVBox	base;
+
+	GOColorGroup *group;
+	GOColor	      selection, default_color;
+	gboolean      current_is_custom;
+	gboolean      current_is_default;
+	gboolean      allow_alpha;
+
+	/* only for custom colours */
+	GtkWidget   *swatches [GO_COLOR_GROUP_HISTORY_SIZE];
+	GtkTooltips *tip;
+
+	/* The table with our default color names */
+	ColorNamePair const *default_set;
+};
+
+typedef struct {
+	GtkVBoxClass base;
+
+	/* Signals emited by this widget */
+	void (*color_changed) (GOColorPalette *pal, GOColor color,
+			       gboolean is_custom, gboolean by_user, gboolean is_default);
+	void (*display_custom_dialog) (GOColorPalette *pal, GtkWidget *dialog);
+} GOColorPaletteClass;
+
+#define COLOR_PREVIEW_WIDTH 12
+#define COLOR_PREVIEW_HEIGHT 12
+
+enum {
+	COLOR_CHANGED,
+	DISPLAY_CUSTOM_DIALOG,
+	LAST_SIGNAL
+};
+
+struct _ColorNamePair {
+	GOColor	color;
+	char const *name;	/* english name - eg. "white" */
+};
+
+static ColorNamePair const default_color_set [] = {
+	{ RGBA_TO_UINT (0x00, 0x00, 0x00, 0xff), N_("black")},
+	{ RGBA_TO_UINT (0x99, 0x33, 0x00, 0xff), N_("light brown")},
+	{ RGBA_TO_UINT (0x33, 0x33, 0x00, 0xff), N_("brown gold")},
+	{ RGBA_TO_UINT (0x00, 0x33, 0x00, 0xff), N_("dark green #2")},
+	{ RGBA_TO_UINT (0x00, 0x33, 0x66, 0xff), N_("navy")},
+	{ RGBA_TO_UINT (0x00, 0x00, 0x80, 0xff), N_("dark blue")},
+	{ RGBA_TO_UINT (0x33, 0x33, 0x99, 0xff), N_("purple #2")},
+	{ RGBA_TO_UINT (0x33, 0x33, 0x33, 0xff), N_("very dark gray")},
+
+	{ RGBA_TO_UINT (0x80, 0x00, 0x00, 0xff), N_("dark red")},
+	{ RGBA_TO_UINT (0xFF, 0x66, 0x00, 0xff), N_("red-orange")},
+	{ RGBA_TO_UINT (0x80, 0x80, 0x00, 0xff), N_("gold")},
+	{ RGBA_TO_UINT (0x00, 0x80, 0x00, 0xff), N_("dark green")},
+	{ RGBA_TO_UINT (0x00, 0x80, 0x80, 0xff), N_("dull blue")},
+	{ RGBA_TO_UINT (0x00, 0x00, 0xFF, 0xff), N_("blue")},
+	{ RGBA_TO_UINT (0x66, 0x66, 0x99, 0xff), N_("dull purple")},
+	{ RGBA_TO_UINT (0x80, 0x80, 0x80, 0xff), N_("dark gray")},
+
+	{ RGBA_TO_UINT (0xFF, 0x00, 0x00, 0xff), N_("red")},
+	{ RGBA_TO_UINT (0xFF, 0x99, 0x00, 0xff), N_("orange")},
+	{ RGBA_TO_UINT (0x99, 0xCC, 0x00, 0xff), N_("lime")},
+	{ RGBA_TO_UINT (0x33, 0x99, 0x66, 0xff), N_("dull green")},
+	{ RGBA_TO_UINT (0x33, 0xCC, 0xCC, 0xff), N_("dull blue #2")},
+	{ RGBA_TO_UINT (0x33, 0x66, 0xFF, 0xff), N_("sky blue #2")},
+	{ RGBA_TO_UINT (0x80, 0x00, 0x80, 0xff), N_("purple")},
+	{ RGBA_TO_UINT (0x96, 0x96, 0x96, 0xff), N_("gray")},
+
+	{ RGBA_TO_UINT (0xFF, 0x00, 0xFF, 0xff), N_("magenta")},
+	{ RGBA_TO_UINT (0xFF, 0xCC, 0x00, 0xff), N_("bright orange")},
+	{ RGBA_TO_UINT (0xFF, 0xFF, 0x00, 0xff), N_("yellow")},
+	{ RGBA_TO_UINT (0x00, 0xFF, 0x00, 0xff), N_("green")},
+	{ RGBA_TO_UINT (0x00, 0xFF, 0xFF, 0xff), N_("cyan")},
+	{ RGBA_TO_UINT (0x00, 0xCC, 0xFF, 0xff), N_("bright blue")},
+	{ RGBA_TO_UINT (0x99, 0x33, 0x66, 0xff), N_("red purple")},
+	{ RGBA_TO_UINT (0xC0, 0xC0, 0xC0, 0xff), N_("light gray")},
+
+	{ RGBA_TO_UINT (0xFF, 0x99, 0xCC, 0xff), N_("pink")},
+	{ RGBA_TO_UINT (0xFF, 0xCC, 0x99, 0xff), N_("light orange")},
+	{ RGBA_TO_UINT (0xFF, 0xFF, 0x99, 0xff), N_("light yellow")},
+	{ RGBA_TO_UINT (0xCC, 0xFF, 0xCC, 0xff), N_("light green")},
+	{ RGBA_TO_UINT (0xCC, 0xFF, 0xFF, 0xff), N_("light cyan")},
+	{ RGBA_TO_UINT (0x99, 0xCC, 0xFF, 0xff), N_("light blue")},
+	{ RGBA_TO_UINT (0xCC, 0x99, 0xFF, 0xff), N_("light purple")},
+	{ RGBA_TO_UINT (0xFF, 0xFF, 0xFF, 0xff), N_("white")},
+
+	{ 0, NULL},
+
+	/* Disable these for now, they are mostly repeats */
+	{ RGBA_TO_UINT (0x99, 0x99, 0xFF, 0xff), N_("purplish blue")},
+	{ RGBA_TO_UINT (0x99, 0x33, 0x66, 0xff), N_("red purple")},
+	{ RGBA_TO_UINT (0xFF, 0xFF, 0xCC, 0xff), N_("light yellow")},
+	{ RGBA_TO_UINT (0xCC, 0xFF, 0xFF, 0xff), N_("light blue")},
+	{ RGBA_TO_UINT (0x66, 0x00, 0x66, 0xff), N_("dark purple")},
+	{ RGBA_TO_UINT (0xFF, 0x80, 0x80, 0xff), N_("pink")},
+	{ RGBA_TO_UINT (0x00, 0x66, 0xCC, 0xff), N_("sky blue")},
+	{ RGBA_TO_UINT (0xCC, 0xCC, 0xFF, 0xff), N_("light purple")},
+
+	{ RGBA_TO_UINT (0x00, 0x00, 0x80, 0xff), N_("dark blue")},
+	{ RGBA_TO_UINT (0xFF, 0x00, 0xFF, 0xff), N_("magenta")},
+	{ RGBA_TO_UINT (0xFF, 0xFF, 0x00, 0xff), N_("yellow")},
+	{ RGBA_TO_UINT (0x00, 0xFF, 0xFF, 0xff), N_("cyan")},
+	{ RGBA_TO_UINT (0x80, 0x00, 0x80, 0xff), N_("purple")},
+	{ RGBA_TO_UINT (0x80, 0x00, 0x00, 0xff), N_("dark red")},
+	{ RGBA_TO_UINT (0x00, 0x80, 0x80, 0xff), N_("dull blue")},
+	{ RGBA_TO_UINT (0x00, 0x00, 0xFF, 0xff), N_("blue")},
+
+	{ 0, NULL},
+};
+
+static guint go_color_palette_signals [LAST_SIGNAL] = { 0, };
+
+static GObjectClass *go_color_palette_parent_class;
+
+static GtkWidget *
+create_color_sel (GObject *action_proxy, GOColor c, GCallback handler, gboolean allow_alpha)
+{
+	char *title = g_object_get_data (G_OBJECT (action_proxy), "title");
+	GtkWidget *w = gtk_color_selection_dialog_new (title);
+	GtkColorSelectionDialog *dialog = GTK_COLOR_SELECTION_DIALOG (w);
+	GtkColorSelection *colorsel = GTK_COLOR_SELECTION (dialog->colorsel);
+	GdkColor gdk;
+
+	gtk_widget_hide (dialog->help_button);
+	gtk_color_selection_set_current_color (colorsel,
+		go_color_to_gdk (c, &gdk));
+	gtk_color_selection_set_has_opacity_control (colorsel, allow_alpha);
+	if (allow_alpha)
+		gtk_color_selection_set_current_alpha (colorsel, UINT_RGBA_A(c) * 257);
+
+	g_signal_connect_object (dialog,
+		"response", handler, action_proxy, 0);
+
+	/* require an explicit show _after_ the custom-dialog signal fires */
+	return w;
+}
+
+static gboolean
+handle_color_sel (GtkColorSelectionDialog *dialog,
+		  gint response_id, GOColor *res)
+{
+	if (response_id == GTK_RESPONSE_OK) {
+		GdkColor gdk;
+		GtkColorSelection *colorsel = GTK_COLOR_SELECTION (dialog->colorsel);
+		guint16 alpha = gtk_color_selection_get_current_alpha (colorsel);
+
+		gtk_color_selection_get_current_color (colorsel, &gdk);
+		*res = GDK_TO_UINT (gdk);
+		alpha >>= 8;
+		*res = UINT_RGBA_CHANGE_A (*res, alpha);
+	}
+	/* destroy _before_ we emit */
+	gtk_object_destroy (GTK_OBJECT (dialog));
+	return response_id == GTK_RESPONSE_OK;
+}
+
+static void
+go_color_palette_finalize (GObject *object)
+{
+	GOColorPalette *pal = GO_COLOR_PALETTE (object);
+
+	if (pal->tip) {
+		g_object_unref (pal->tip);
+		pal->tip = NULL;
+	}
+
+	go_color_palette_set_group (pal, NULL);
+
+	(*go_color_palette_parent_class->finalize) (object);
+}
+
+static void
+go_color_palette_class_init (GObjectClass *gobject_class)
+{
+	gobject_class->finalize = go_color_palette_finalize;
+
+	go_color_palette_parent_class = g_type_class_peek_parent (gobject_class);
+
+	go_color_palette_signals [COLOR_CHANGED] =
+		g_signal_new ("color_changed",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOColorPaletteClass, color_changed),
+			      NULL, NULL,
+			      go__VOID__INT_BOOLEAN_BOOLEAN_BOOLEAN,
+			      G_TYPE_NONE, 4, G_TYPE_INT,
+			      G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
+	go_color_palette_signals [DISPLAY_CUSTOM_DIALOG] =
+		g_signal_new ("display-custom-dialog",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOColorPaletteClass, display_custom_dialog),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE, 1, G_TYPE_OBJECT);
+}
+
+GSF_CLASS (GOColorPalette, go_color_palette,
+	   go_color_palette_class_init, NULL,
+	   GTK_TYPE_VBOX)
+
+/*
+ * Find out if a color is in the default palette (not in the custom colors!)
+ *
+ * Utility function
+ */
+static gboolean
+color_in_palette (ColorNamePair const *set, GOColor color)
+{
+	int i;
+
+	for (i = 0; set[i].name != NULL; i++)
+		if (color == set[i].color)
+			return TRUE;
+	return FALSE;
+}
+
+static void
+set_color (GOColorPalette *pal, GOColor color, gboolean is_custom,
+	   gboolean by_user, gboolean is_default)
+{
+	if (is_default)
+		color = pal->default_color;
+	if (!color_in_palette (pal->default_set, color))
+		go_color_group_add_color (pal->group, color);
+	pal->selection = color;
+	pal->current_is_custom = is_custom;
+	pal->current_is_default = is_default;
+	g_signal_emit (pal, go_color_palette_signals [COLOR_CHANGED], 0,
+		       color, is_custom, by_user, is_default);
+}
+
+static void
+cb_history_changed (GOColorPalette *pal)
+{
+	int i;
+	GdkColor gdk;
+	GOColorGroup *group = pal->group;
+
+	for (i = 0 ; i < GO_COLOR_GROUP_HISTORY_SIZE ; i++)
+		gtk_widget_modify_bg (pal->swatches [i], GTK_STATE_NORMAL,
+			go_color_to_gdk (group->history[i], &gdk));
+#if 0
+	if (next_swatch != NULL) {
+		next_swatch->style->bg[GTK_STATE_NORMAL] = *new_color;
+		gnome_color_picker_set_i16 (GNOME_COLOR_PICKER (pal->picker),
+			new_color->red, new_color->green, new_color->blue, 0);
+	}
+#endif
+}
+
+static gboolean
+cb_default_release_event (GtkWidget *button, GdkEventButton *event, GOColorPalette *pal)
+{
+	set_color (pal, pal->default_color, FALSE, TRUE, TRUE);
+	return TRUE;
+}
+
+static void
+swatch_activated (GOColorPalette *pal, GtkBin *button)
+{
+	GList *tmp = gtk_container_get_children (GTK_CONTAINER (gtk_bin_get_child (button)));
+	GtkWidget *swatch = (tmp != NULL) ? tmp->data : NULL;
+
+	g_list_free (tmp);
+
+	g_return_if_fail (swatch != NULL);
+
+	set_color (pal, GDK_TO_UINT (swatch->style->bg[GTK_STATE_NORMAL]),
+		   FALSE, TRUE, FALSE);
+}
+
+static gboolean
+cb_swatch_release_event (GtkBin *button, GdkEventButton *event, GOColorPalette *pal)
+{
+#warning TODO do I want to check for which button ?
+	swatch_activated (pal, button);
+	return TRUE;
+}
+
+static gboolean
+cb_swatch_key_press (GtkBin *button, GdkEventKey *event, GOColorPalette *pal)
+{
+	if (event->keyval == GDK_Return ||
+	    event->keyval == GDK_KP_Enter ||
+	    event->keyval == GDK_space) {
+		swatch_activated (pal, button);
+		return TRUE;
+	} else
+		return FALSE;
+}
+
+/*
+ * Create the individual color buttons
+ *
+ * Utility function
+ */
+static GtkWidget *
+go_color_palette_button_new (GOColorPalette *pal, GtkTable* table, GtkTooltips *tip,
+			  ColorNamePair const * color_name, gint col, gint row)
+{
+        GtkWidget *button, *swatch, *box;
+	GdkColor   gdk;
+
+	swatch = gtk_drawing_area_new ();
+	gtk_widget_modify_bg (swatch, GTK_STATE_NORMAL,
+		go_color_to_gdk (color_name->color, &gdk));
+	gtk_widget_set_size_request (swatch, COLOR_PREVIEW_WIDTH, COLOR_PREVIEW_HEIGHT);
+
+	/* Wrap inside a vbox with a border so that we can see the focus indicator */
+	box = gtk_vbox_new (FALSE, 0);
+	gtk_container_set_border_width (GTK_CONTAINER (box), 2);
+	gtk_box_pack_start (GTK_BOX (box), GTK_WIDGET (swatch), TRUE, TRUE, 0);
+
+	button = gtk_button_new ();
+	gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+	gtk_container_add (GTK_CONTAINER (button), box);
+	gtk_tooltips_set_tip (tip, button, _(color_name->name), "");
+
+	gtk_table_attach (table, button, col, col+1, row, row+1,
+		GTK_FILL, GTK_FILL, 0, 0);
+
+	g_object_connect (button,
+		"signal::button_release_event", G_CALLBACK (cb_swatch_release_event), pal,
+		"signal::key_press_event", G_CALLBACK (cb_swatch_key_press), pal,
+		NULL);
+	return swatch;
+}
+
+static void
+cb_combo_custom_response (GtkColorSelectionDialog *dialog,
+			  gint response_id, GOColorPalette *pal)
+{
+	GOColor c;
+	if (handle_color_sel (dialog, response_id, &c))
+		set_color (pal, c, TRUE, TRUE, FALSE);
+}
+
+static void
+cb_combo_custom_clicked (GtkWidget *button, GOColorPalette *pal)
+{
+	GtkWidget *dialog = create_color_sel (G_OBJECT (pal), pal->selection,
+		G_CALLBACK (cb_combo_custom_response), pal->allow_alpha);
+	g_signal_emit (pal, go_color_palette_signals [DISPLAY_CUSTOM_DIALOG], 0,
+		dialog);
+	gtk_widget_show (dialog);
+}
+
+void
+go_color_palette_set_title (GOColorPalette *pal, char const *title)
+{
+	g_object_set_data_full (G_OBJECT (pal), "title", 
+		g_strdup (title), g_free);
+}
+
+/**
+ * go_color_palette_set_group :
+ * @cg : #GOColorGroup
+ *
+ * Absorb the reference to the group
+ */
+void
+go_color_palette_set_group (GOColorPalette *pal, GOColorGroup *cg)
+{
+	if (pal->group == cg)
+		return;
+
+	if (pal->group) {
+		g_signal_handlers_disconnect_by_func (
+			G_OBJECT (pal->group),
+			G_CALLBACK (cb_history_changed), pal);
+		g_object_unref (G_OBJECT (pal->group));
+		pal->group = NULL;
+	}
+	if (cg != NULL) {
+		pal->group = cg;
+		g_signal_connect_swapped (G_OBJECT (cg),
+			"history-changed",
+			G_CALLBACK (cb_history_changed), pal);
+	}
+}
+static GtkWidget *
+go_color_palette_setup (GOColorPalette *pal,
+		     char const *no_color_label,
+		     int cols, int rows,
+		     ColorNamePair const *color_names)
+{
+	GtkWidget	*w, *table;
+	GtkTooltips	*tip;
+	int pos, row, col = 0;
+
+	table = gtk_table_new (cols, rows, FALSE);
+
+	if (no_color_label != NULL) {
+		w = gtk_button_new_with_label (no_color_label);
+		gtk_table_attach (GTK_TABLE (table), w,
+				  0, cols, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+		g_signal_connect (w,
+			"button_release_event",
+			G_CALLBACK (cb_default_release_event), pal);
+	}
+
+	pal->tip = tip = gtk_tooltips_new ();
+	g_object_ref (pal->tip);
+	gtk_object_sink (GTK_OBJECT (pal->tip));
+
+	for (row = 0; row < rows; row++)
+		for (col = 0; col < cols; col++) {
+			pos = row * cols + col;
+			if (color_names [pos].name == NULL)
+				goto custom_colors;
+			go_color_palette_button_new ( pal,
+				GTK_TABLE (table), GTK_TOOLTIPS (tip),
+				&(color_names [pos]), col, row + 1);
+		}
+
+custom_colors :
+	if (col > 0)
+		row++;
+	for (col = 0; col < cols && col < GO_COLOR_GROUP_HISTORY_SIZE; col++) {
+		ColorNamePair color_name = { 0, N_("custom") };
+		color_name.color = pal->group->history [col];
+		pal->swatches [col] = go_color_palette_button_new (pal,
+			GTK_TABLE (table), GTK_TOOLTIPS (tip),
+			&color_name, col, row + 1);
+	}
+
+	w = go_gtk_button_new_with_stock (_("Custom Color..."),
+		GTK_STOCK_SELECT_COLOR);
+	gtk_button_set_alignment (GTK_BUTTON (w), 0., .5);
+	gtk_table_attach (GTK_TABLE (table), w, 0, cols,
+		row + 2, row + 3, GTK_FILL | GTK_EXPAND, 0, 0, 0);
+	g_signal_connect (G_OBJECT (w),
+		"clicked",
+		G_CALLBACK (cb_combo_custom_clicked), pal);
+
+	return table;
+}
+
+void
+go_color_palette_set_color_to_default (GOColorPalette *pal)
+{
+	set_color (pal, pal->default_color, FALSE, TRUE, TRUE);
+}
+
+void
+go_color_palette_set_current_color (GOColorPalette *pal, GOColor color)
+{
+	set_color (pal, color,
+		   color_in_palette (pal->default_set, color),
+		   FALSE, FALSE);
+}
+
+GOColor
+go_color_palette_get_current_color (GOColorPalette *pal,
+				    gboolean *is_default, gboolean *is_custom)
+{
+	if (is_default != NULL)
+		*is_default = pal->current_is_default;
+	if (is_custom != NULL)
+		*is_custom = pal->current_is_custom;
+	return pal->selection;
+}
+
+void
+go_color_palette_set_allow_alpha (GOColorPalette *pal, gboolean allow_alpha)
+{
+	pal->allow_alpha = allow_alpha;
+}
+
+GtkWidget *
+go_color_palette_new (char const *no_color_label,
+		   GOColor default_color,
+		   GOColorGroup *cg)
+{
+	GOColorPalette *pal;
+	int const cols = 8;
+	int const rows = 6;
+	ColorNamePair const *color_names = default_color_set;
+
+	pal = g_object_new (GO_COLOR_PALETTE_TYPE, NULL);
+
+	pal->default_set   = color_names;
+	pal->default_color = default_color;
+	pal->selection	   = default_color;
+	pal->current_is_custom  = FALSE;
+	pal->current_is_default = TRUE;
+	go_color_palette_set_group (pal, cg);
+
+	gtk_container_add (GTK_CONTAINER (pal),
+		go_color_palette_setup (pal, no_color_label, cols, rows,
+				     pal->default_set));
+	return GTK_WIDGET (pal);
+}
+
+
+/***********************************************************************/
+
+typedef struct {
+	GtkMenu base;
+	gboolean allow_alpha;
+	GOColor  selection, default_color;
+} GOMenuColor;
+
+typedef struct {
+	GtkMenuClass	base;
+	void (* color_changed) (GOMenuColor *menu, GOColor color,
+				gboolean custom, gboolean by_user, gboolean is_default);
+	void (*display_custom_dialog) (GOColorPalette *pal, GtkWidget *dialog);
+} GOMenuColorClass;
+
+static guint go_menu_color_signals [LAST_SIGNAL] = { 0, };
+
+static void
+go_menu_color_class_init (GObjectClass *gobject_class)
+{
+	go_menu_color_signals [COLOR_CHANGED] =
+		g_signal_new ("color_changed",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOMenuColorClass, color_changed),
+			      NULL, NULL,
+			      go__VOID__INT_BOOLEAN_BOOLEAN_BOOLEAN,
+			      G_TYPE_NONE, 4, G_TYPE_INT,
+			      G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
+	go_menu_color_signals [DISPLAY_CUSTOM_DIALOG] =
+		g_signal_new ("display-custom-dialog",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOColorPaletteClass, display_custom_dialog),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE, 1, G_TYPE_OBJECT);
+}
+
+static GSF_CLASS (GOMenuColor, go_menu_color,
+		  go_menu_color_class_init, NULL,
+		  GTK_TYPE_MENU)
+
+static GtkWidget *
+make_colored_menu_item (char const *label, GOColor c)
+{
+	GtkWidget *button;
+	GdkPixbuf *pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+		COLOR_PREVIEW_WIDTH, COLOR_PREVIEW_HEIGHT);
+	gdk_pixbuf_fill (pixbuf, c);
+
+	button = gtk_image_menu_item_new_with_label (label);
+	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (button),
+		gtk_image_new_from_pixbuf (pixbuf));
+	g_object_unref (pixbuf);
+	gtk_widget_show_all (button);
+
+	g_object_set_data (G_OBJECT (button), "go_color", GINT_TO_POINTER (c));
+	return button;
+}
+
+static void
+cb_menu_default_activate (GtkWidget *button, GOMenuColor *menu)
+{
+	menu->selection = menu->default_color;
+	g_signal_emit (menu, go_menu_color_signals [COLOR_CHANGED], 0,
+		       menu->selection, FALSE, TRUE, TRUE);
+}
+
+static void
+cb_menu_color_activate (GtkWidget *button, GOMenuColor *menu)
+{
+	GOColor color = GPOINTER_TO_INT (
+		g_object_get_data (G_OBJECT (button), "go_color"));
+	menu->selection = color;
+	g_signal_emit (menu, go_menu_color_signals [COLOR_CHANGED], 0,
+		       color, FALSE, TRUE, FALSE);
+}
+static void
+cb_menu_custom_response (GtkColorSelectionDialog *dialog,
+			 gint response_id, GOMenuColor *menu)
+{
+	GOColor c;
+	if (handle_color_sel (dialog, response_id, &c)) {
+		menu->selection = c;
+		g_signal_emit (menu, go_menu_color_signals [COLOR_CHANGED], 0,
+			c, TRUE, TRUE, FALSE);
+	}
+}
+
+static void
+cb_menu_custom_activate (GtkWidget *button, GOMenuColor *menu)
+{
+	GtkWidget *dialog = create_color_sel (G_OBJECT (menu), menu->selection,
+		G_CALLBACK (cb_menu_custom_response), menu->allow_alpha);
+	g_signal_emit (menu, go_menu_color_signals [DISPLAY_CUSTOM_DIALOG], 0,
+		dialog);
+	gtk_widget_show (dialog);
+}
+
+/**
+ * go_color_palette_make_menu:
+ * @no_color_labe :
+ * default_color: #GOColor
+ * @cg : #GOColorGroup
+ * @custom_dialog_title :
+ * @current_color : #GOColor
+ *
+ * Create a submenu with a palette of colours.  Caller is responsible for
+ * creating an item to point to the submenu.
+ **/
+GtkWidget *
+go_color_palette_make_menu (char const *no_color_label,
+			    GOColor default_color,
+			    GOColorGroup *cg,
+			    char const *custom_dialog_title,
+			    GOColor current_color)
+{
+	int cols = 8;
+	int rows = 6;
+	int col, row, pos, table_row = 0;
+	ColorNamePair const *color_names = default_color_set;
+        GtkWidget *w, *submenu;
+
+	submenu = g_object_new (go_menu_color_get_type (), NULL);
+
+	if (no_color_label != NULL) {
+		w = make_colored_menu_item (no_color_label, default_color);
+		gtk_menu_attach (GTK_MENU (submenu), w, 0, cols, 0, 1);
+		g_signal_connect (G_OBJECT (w),
+			"activate",
+			G_CALLBACK (cb_menu_default_activate), submenu);
+		table_row++;
+	}
+	for (row = 0; row < rows; row++, table_row++) {
+		for (col = 0; col < cols; col++) {
+			pos = row * cols + col;
+			if (color_names [pos].name == NULL)
+				goto custom_colors;
+			w = make_colored_menu_item (" ",
+				color_names [pos].color);
+			gtk_menu_attach (GTK_MENU (submenu), w,
+				col, col+1, table_row, table_row+1);
+			g_signal_connect (G_OBJECT (w),
+				"activate",
+				G_CALLBACK (cb_menu_color_activate), submenu);
+		}
+	}
+
+custom_colors :
+	if (col > 0)
+		row++;
+	for (col = 0; col < cols && col < GO_COLOR_GROUP_HISTORY_SIZE; col++) {
+		w = make_colored_menu_item (" ", cg->history[col]);
+		gtk_menu_attach (GTK_MENU (submenu), w,
+			col, col+1, table_row, table_row+1);
+		g_signal_connect (G_OBJECT (w),
+			"activate",
+			G_CALLBACK (cb_menu_color_activate), submenu);
+	}
+	w = gtk_image_menu_item_new_with_label (_("Custom Color..."));
+	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (w),
+		gtk_image_new_from_stock (GTK_STOCK_SELECT_COLOR, GTK_ICON_SIZE_MENU));
+	gtk_widget_show_all (w);
+	gtk_menu_attach (GTK_MENU (submenu), w, 0, cols, row + 2, row + 3);
+	g_signal_connect (G_OBJECT (w),
+		"activate",
+		G_CALLBACK (cb_menu_custom_activate), submenu);
+
+	((GOMenuColor *)submenu)->selection = current_color;
+	((GOMenuColor *)submenu)->default_color = default_color;
+	g_object_set_data_full (G_OBJECT (submenu), "title", 
+		g_strdup (custom_dialog_title), g_free);
+
+	gtk_widget_show (submenu);
+
+	return submenu;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-color-palette.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,66 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-color-palette.h - A color selector palette
+ * Copyright 2000-2004, Ximian, Inc.
+ *
+ * Authors:
+ * This code was extracted from widget-color-combo.c
+ *   written by Miguel de Icaza (miguel at kernel.org) and
+ *   Dom Lachowicz (dominicl at seas.upenn.edu). The extracted
+ *   code was re-packaged into a separate object by
+ *   Michael Levy (mlevy at genoscope.cns.fr)
+ *   And later revised and polished by
+ *   Almer S. Tigelaar (almer at gnome.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#ifndef _GO_COLOR_PALETTE_H_
+#define _GO_COLOR_PALETTE_H_
+
+#include <goffice/gtk/go-color-group.h>
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GOColorPalette  GOColorPalette;
+
+#define GO_COLOR_PALETTE_TYPE     (go_color_palette_get_type ())
+#define GO_COLOR_PALETTE(obj)     (G_TYPE_CHECK_INSTANCE_CAST((obj), GO_COLOR_PALETTE_TYPE, GOColorPalette))
+#define GO_COLOR_PALETTE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST(k), GO_COLOR_PALETTE_TYPE)
+#define IS_GO_COLOR_PALETTE(obj)  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GO_COLOR_PALETTE_TYPE))
+
+GType      go_color_palette_get_type (void);
+
+GtkWidget *go_color_palette_new	      (char const *no_color_label,
+				       GOColor default_color,
+				       GOColorGroup *color_group);
+GtkWidget *go_color_palette_make_menu (char const *no_color_label,
+				       GOColor default_color,
+				       GOColorGroup *color_group,
+				       char const *custom_dialog_title,
+				       GOColor current_color);
+
+void	go_color_palette_set_title		(GOColorPalette *p, char const *title);
+void	go_color_palette_set_group		(GOColorPalette *p, GOColorGroup *cg);
+void    go_color_palette_set_current_color	(GOColorPalette *p, GOColor color);
+void    go_color_palette_set_color_to_default	(GOColorPalette *p);
+GOColor go_color_palette_get_current_color	(GOColorPalette *p,
+						 gboolean *is_default, gboolean *is_custom);
+void	go_color_palette_set_allow_alpha	(GOColorPalette *p, gboolean allow_alpha);
+
+G_END_DECLS
+
+#endif /* __GO_COLOR_PALETTE_H__ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,792 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gnm-combo-box.c - a customizable combobox
+ * Copyright 2000, 2001, Ximian, Inc.
+ *
+ * Authors:
+ *   Miguel de Icaza (miguel at gnu.org)
+ *   Adrian E Feiguin (feiguin at ifir.edu.ar)
+ *   Paolo Molnaro (lupus at debian.org).
+ *   Jon K Hellan (hellan at acm.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-combo-box.h"
+#include <goffice/utils/go-marshalers.h>
+
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtktearoffmenuitem.h>
+#include <gtk/gtkwindow.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkarrow.h>
+#include <gtk/gtkeventbox.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkframe.h>
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+enum {
+	POP_DOWN_DONE,
+	LAST_SIGNAL
+};
+
+struct _GOComboBoxPrivate {
+	GtkWidget *popdown_container;
+	GtkWidget *popdown_focus;	/* Popup's toplevel when not torn off */
+	GtkWidget *display_widget;
+
+	/* Internal widgets used to implement the ComboBox */
+	GtkWidget *frame;
+	GtkWidget *arrow_button;
+
+	GtkWidget *toplevel;		/* Popup's toplevel when not torn off */
+	GtkWidget *tearoff_window;	/* Popup's toplevel when torn off */
+	gboolean torn_off;
+
+	GtkWidget *tearable;	/* The tearoff "button" */
+	GtkWidget *popup;	/* Popup */
+
+	gboolean   updating_buttons;
+};
+static GObjectClass *go_combo_box_parent_class;
+static guint go_combo_box_signals [LAST_SIGNAL] = { 0, };
+
+static void go_combo_set_tearoff_state (GOComboBox *combo, gboolean torn_off);
+
+/**
+ * go_combo_popup_reparent
+ * @popup:       Popup
+ * @new_parent:  New parent
+ * @unrealize:   Unrealize popup if TRUE.
+ *
+ * Reparent the popup, taking care of the refcounting
+ *
+ * Compare with gtk_menu_reparent in gtk/gtkmenu.c
+ */
+static void
+go_combo_popup_reparent (GtkWidget *popup,
+			  GtkWidget *new_parent,
+			  gboolean unrealize)
+{
+	GtkObject *object = GTK_OBJECT (popup);
+	gboolean was_floating = GTK_OBJECT_FLOATING (object);
+
+	g_object_ref (object);
+	gtk_object_sink (object);
+
+	if (unrealize) {
+		g_object_ref (object);
+		gtk_container_remove (GTK_CONTAINER (popup->parent), popup);
+		gtk_container_add (GTK_CONTAINER (new_parent), popup);
+		g_object_unref (object);
+	}
+	else
+		gtk_widget_reparent (GTK_WIDGET (popup), new_parent);
+	gtk_widget_set_size_request (new_parent, -1, -1);
+
+	if (was_floating)
+		GTK_OBJECT_SET_FLAGS (object, GTK_FLOATING);
+	else
+		g_object_unref (object);
+}
+
+static void
+go_combo_box_finalize (GObject *object)
+{
+	GOComboBox *combo_box = GO_COMBO_BOX (object);
+
+	g_free (combo_box->priv);
+
+	go_combo_box_parent_class->finalize (object);
+}
+
+static void
+go_combo_box_destroy (GtkObject *object)
+{
+	GtkObjectClass *klass = (GtkObjectClass *)go_combo_box_parent_class;
+	GOComboBox *combo_box = GO_COMBO_BOX (object);
+
+	if (combo_box->priv->toplevel) {
+		gtk_widget_destroy (combo_box->priv->toplevel);
+		g_object_unref (combo_box->priv->toplevel);
+		combo_box->priv->toplevel = NULL;
+	}
+
+	if (combo_box->priv->tearoff_window) {
+		gtk_widget_destroy (combo_box->priv->tearoff_window);
+		g_object_unref (combo_box->priv->tearoff_window);
+		combo_box->priv->tearoff_window = NULL;
+	}
+
+	if (klass->destroy)
+                klass->destroy (object);
+}
+
+/* Cut and paste from gtkwindow.c */
+static void
+do_focus_change (GtkWidget *widget, gboolean in)
+{
+	GdkEventFocus fevent;
+
+	g_object_ref (widget);
+
+	if (in)
+		GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
+	else
+		GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
+
+	fevent.type = GDK_FOCUS_CHANGE;
+	fevent.window = widget->window;
+	fevent.in = in;
+
+	gtk_widget_event (widget, (GdkEvent *)&fevent);
+
+	g_object_notify (G_OBJECT (widget), "has-focus");
+
+	g_object_unref (widget);
+}
+
+static void
+set_arrow_state (GOComboBox *combo_box, gboolean state)
+{
+	GOComboBoxPrivate *priv = combo_box->priv;
+	g_return_if_fail (!combo_box->priv->updating_buttons);
+
+	combo_box->priv->updating_buttons = TRUE;
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->arrow_button), state);
+	if (GTK_IS_TOGGLE_BUTTON (priv->display_widget))
+		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->display_widget), state);
+	combo_box->priv->updating_buttons = FALSE;
+}
+
+static void
+go_combo_box_popup_hide_unconditional (GOComboBox *combo_box)
+{
+	gboolean popup_info_destroyed = FALSE;
+
+	g_return_if_fail (combo_box != NULL);
+	g_return_if_fail (IS_GO_COMBO_BOX (combo_box));
+
+	gtk_widget_hide (combo_box->priv->toplevel);
+	gtk_widget_hide (combo_box->priv->popup);
+	if (combo_box->priv->torn_off) {
+		GTK_TEAROFF_MENU_ITEM (combo_box->priv->tearable)->torn_off
+			= FALSE;
+		go_combo_set_tearoff_state (combo_box, FALSE);
+	}
+
+	do_focus_change (combo_box->priv->toplevel, FALSE);
+	gtk_grab_remove (combo_box->priv->toplevel);
+	gdk_display_pointer_ungrab (gtk_widget_get_display (combo_box->priv->toplevel),
+				    GDK_CURRENT_TIME);
+
+	g_object_ref (combo_box->priv->popdown_container);
+	g_signal_emit (combo_box,
+		       go_combo_box_signals [POP_DOWN_DONE], 0,
+		       combo_box->priv->popdown_container, &popup_info_destroyed);
+
+	if (popup_info_destroyed){
+		gtk_container_remove (
+			GTK_CONTAINER (combo_box->priv->frame),
+			combo_box->priv->popdown_container);
+		combo_box->priv->popdown_container = NULL;
+	}
+	g_object_unref (combo_box->priv->popdown_container);
+	set_arrow_state (combo_box, FALSE);
+}
+
+static gboolean
+cb_arrow_pressed (GOComboBox *combo_box)
+{
+	if (!combo_box->priv->updating_buttons) {
+		if (combo_box->priv->toplevel == NULL ||
+		    !GTK_WIDGET_VISIBLE (combo_box->priv->toplevel))
+			go_combo_box_popup_display (combo_box);
+		else
+			go_combo_box_popup_hide_unconditional (combo_box);
+	}
+
+	return TRUE;
+}
+
+static gboolean
+go_combo_box_mnemonic_activate (GtkWidget *w, gboolean group_cycling)
+{
+	GOComboBox *combo_box = GO_COMBO_BOX (w);
+	cb_arrow_pressed (combo_box);
+	return TRUE;
+}
+
+static void
+go_combo_box_style_set (GtkWidget *widget,
+			G_GNUC_UNUSED GtkStyle *prev_style)
+{
+	gboolean add_tearoffs;
+	gtk_widget_style_get (widget,
+			      "add-tearoffs", &add_tearoffs,
+			      NULL);
+	go_combo_box_set_tearable (GO_COMBO_BOX (widget), add_tearoffs);
+}
+
+static void
+go_combo_box_class_init (GObjectClass *object_class)
+{
+	GtkWidgetClass *widget_class = (GtkWidgetClass *)object_class;
+	go_combo_box_parent_class = g_type_class_peek_parent (object_class);
+
+	object_class->finalize = go_combo_box_finalize;
+	widget_class->mnemonic_activate = go_combo_box_mnemonic_activate;
+	((GtkObjectClass *)object_class)->destroy = go_combo_box_destroy;
+
+	gtk_widget_class_install_style_property
+		(widget_class,
+		 g_param_spec_boolean ("add-tearoffs",
+				       _("Add tearoffs to menus"),
+				       _("Whether dropdowns should have a tearoff menu item"),
+				       FALSE,
+				       GSF_PARAM_STATIC | 
+				       G_PARAM_READABLE));
+	widget_class->style_set = go_combo_box_style_set;
+
+	go_combo_box_signals [POP_DOWN_DONE] = g_signal_new (
+		"pop_down_done",
+		G_OBJECT_CLASS_TYPE (object_class),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GOComboBoxClass, pop_down_done),
+		NULL, NULL,
+		go__BOOLEAN__OBJECT,
+		G_TYPE_BOOLEAN, 1, G_TYPE_OBJECT);
+}
+
+gboolean
+_go_combo_is_updating (GOComboBox const *combo_box)
+{
+	return combo_box->priv->updating_buttons;
+}
+
+static  gint
+cb_combo_keypress (GtkWidget *widget, GdkEventKey *event,
+		   GOComboBox *combo_box)
+{
+	if (event->keyval == GDK_Escape) {
+		go_combo_box_popup_hide_unconditional (combo_box);
+		return TRUE;
+	} else
+		return FALSE;
+}
+
+/**
+ * go_combo_popup_tear_off
+ * @combo:         Combo box
+ * @set_position:  Set to position of popup shell if true
+ *
+ * Tear off the popup
+ *
+ * FIXME:
+ * Gtk popup menus are toplevel windows, not dialogs. I think this is wrong,
+ * and make the popups dialogs. But may be there should be a way to make
+ * them toplevel. We can do this after creating:
+ * GTK_WINDOW (tearoff)->type = GTK_WINDOW_TOPLEVEL;
+ */
+static void
+go_combo_popup_tear_off (GOComboBox *combo, gboolean set_position)
+{
+	int x, y;
+
+	if (!combo->priv->tearoff_window) {
+		GtkWidget *tearoff;
+		const gchar *title;
+
+		/* FIXME: made this a toplevel, not a dialog ! */
+		tearoff = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+		gtk_widget_ref (tearoff);
+		gtk_object_sink (GTK_OBJECT (tearoff));
+		combo->priv->tearoff_window = tearoff;
+		gtk_widget_set_app_paintable (tearoff, TRUE);
+		g_signal_connect (tearoff, "key_press_event",
+				  G_CALLBACK (cb_combo_keypress),
+				  combo);
+		gtk_widget_realize (tearoff);
+		title = go_combo_box_get_title (combo);
+		if (title)
+			gdk_window_set_title (tearoff->window, title);
+		g_object_set (G_OBJECT (tearoff),
+			"allow-shrink",	FALSE,
+			"allow-grow",	TRUE,
+			NULL);
+		gtk_window_set_transient_for
+			(GTK_WINDOW (tearoff),
+			 GTK_WINDOW (gtk_widget_get_toplevel
+				     GTK_WIDGET (combo)));
+	}
+
+	if (GTK_WIDGET_VISIBLE (combo->priv->popup)) {
+		gtk_widget_hide (combo->priv->toplevel);
+
+		gtk_grab_remove (combo->priv->toplevel);
+		gdk_display_pointer_ungrab (gtk_widget_get_display (combo->priv->toplevel),
+					    GDK_CURRENT_TIME);
+	}
+
+	go_combo_popup_reparent (combo->priv->popup,
+				  combo->priv->tearoff_window, FALSE);
+
+	/* It may have got confused about size */
+	gtk_widget_queue_resize (GTK_WIDGET (combo->priv->popup));
+
+	if (set_position) {
+		go_combo_box_get_pos (combo, &x, &y);
+		gtk_window_move (GTK_WINDOW (combo->priv->tearoff_window), x, y);
+	}
+	gtk_widget_show (GTK_WIDGET (combo->priv->popup));
+	gtk_widget_show (combo->priv->tearoff_window);
+
+}
+
+/**
+ * go_combo_box_popup_hide:
+ * @combo_box:  Combo box
+ *
+ * Hide popup, but not when it is torn off.
+ * This is the external interface - for subclasses and apps which expect a
+ * regular combo which doesn't do tearoffs.
+ */
+/* protected */ void
+go_combo_box_popup_hide (GOComboBox *combo_box)
+{
+	if (!combo_box->priv->torn_off)
+		go_combo_box_popup_hide_unconditional (combo_box);
+	else if (GTK_WIDGET_VISIBLE (combo_box->priv->toplevel)) {
+		/* Both popup and tearoff window present. Get rid of just
+                   the popup shell. */
+		go_combo_popup_tear_off (combo_box, FALSE);
+		set_arrow_state (combo_box, FALSE);
+	}
+}
+
+/*
+ * Find best location for displaying
+ */
+/* protected */ void
+go_combo_box_get_pos (GOComboBox *combo_box, int *x, int *y)
+{
+	GtkWidget *wcombo = GTK_WIDGET (combo_box);
+	GdkScreen *screen = gtk_widget_get_screen (wcombo);
+	int ph, pw;
+
+	gdk_window_get_origin (wcombo->window, x, y);
+	*y += wcombo->allocation.height + wcombo->allocation.y;
+	*x += wcombo->allocation.x;
+
+	ph = combo_box->priv->popup->allocation.height;
+	pw = combo_box->priv->popup->allocation.width;
+
+	if ((*y + ph) > gdk_screen_get_height (screen))
+		*y = gdk_screen_get_height (screen) - ph;
+
+	if ((*x + pw) > gdk_screen_get_width (screen))
+		*x = gdk_screen_get_width (screen) - pw;
+}
+
+/**
+ * go_combo_tearoff_bg_copy
+ * @combo_box:  Combo box
+ *
+ * Copy popup window image to the tearoff window.
+ */
+static void
+go_combo_tearoff_bg_copy (GOComboBox *combo)
+{
+	GdkPixmap *pixmap;
+	GdkGC *gc;
+	GdkGCValues gc_values;
+
+	GtkWidget *widget = combo->priv->popup;
+
+	if (combo->priv->torn_off) {
+		gc_values.subwindow_mode = GDK_INCLUDE_INFERIORS;
+		gc = gdk_gc_new_with_values (widget->window,
+					     &gc_values, GDK_GC_SUBWINDOW);
+
+		pixmap = gdk_pixmap_new (widget->window,
+					 widget->allocation.width,
+					 widget->allocation.height,
+					 -1);
+
+		gdk_draw_drawable (pixmap, gc,
+				 widget->window,
+				 0, 0, 0, 0, -1, -1);
+		g_object_unref (gc);
+
+		gtk_widget_set_size_request (combo->priv->tearoff_window,
+				      widget->allocation.width,
+				      widget->allocation.height);
+
+		gdk_window_set_back_pixmap
+			(combo->priv->tearoff_window->window, pixmap, FALSE);
+		g_object_unref (pixmap);
+	}
+}
+
+/* protected */ void
+go_combo_box_popup_display (GOComboBox *combo_box)
+{
+	int x, y;
+
+	g_return_if_fail (GO_COMBO_BOX (combo_box) != NULL);
+	g_return_if_fail (combo_box->priv->popdown_container != NULL);
+
+	if (combo_box->priv->torn_off) {
+		/* To give the illusion that tearoff still displays the
+		 * popup, we copy the image in the popup window to the
+		 * background. Thus, it won't be blank after reparenting */
+		go_combo_tearoff_bg_copy (combo_box);
+
+		/* We force an unrealize here so that we don't trigger
+		 * redrawing/ clearing code - we just want to reveal our
+		 * backing pixmap.
+		 */
+		go_combo_popup_reparent (combo_box->priv->popup,
+					  combo_box->priv->toplevel, TRUE);
+	}
+
+	go_combo_box_get_pos (combo_box, &x, &y);
+
+	gtk_window_move (GTK_WINDOW (combo_box->priv->toplevel), x, y);
+	gtk_widget_realize (combo_box->priv->popup);
+	gtk_widget_show (combo_box->priv->popup);
+	gtk_widget_realize (combo_box->priv->toplevel);
+	gtk_widget_show (combo_box->priv->toplevel);
+
+	gtk_widget_grab_focus (combo_box->priv->toplevel);
+	do_focus_change (combo_box->priv->toplevel, TRUE);
+
+	gtk_grab_add (combo_box->priv->toplevel);
+	gdk_pointer_grab (combo_box->priv->toplevel->window, TRUE,
+			  GDK_BUTTON_PRESS_MASK |
+			  GDK_BUTTON_RELEASE_MASK |
+			  GDK_POINTER_MOTION_MASK,
+			  NULL, NULL, GDK_CURRENT_TIME);
+	set_arrow_state (combo_box, TRUE);
+}
+
+static  gint
+go_combo_box_button_press (GtkWidget *widget, GdkEventButton *event, GOComboBox *combo_box)
+{
+	GtkWidget *child = gtk_get_event_widget ((GdkEvent *) event);
+	if (child != widget){
+		while (child){
+			if (child == widget)
+				return FALSE;
+			child = child->parent;
+		}
+	}
+
+	go_combo_box_popup_hide (combo_box);
+	return TRUE;
+}
+
+static void
+cb_state_change (GtkWidget *widget, GtkStateType old_state, GOComboBox *combo_box)
+{
+	GtkStateType const new_state = GTK_WIDGET_STATE(widget);
+	gtk_widget_set_state (combo_box->priv->display_widget, new_state);
+}
+
+static void
+go_combo_box_init (GOComboBox *combo_box)
+{
+	GtkWidget *arrow;
+	GdkCursor *cursor;
+
+	combo_box->priv = g_new0 (GOComboBoxPrivate, 1);
+	combo_box->priv->updating_buttons = FALSE;
+
+	combo_box->priv->arrow_button = gtk_toggle_button_new ();
+	gtk_button_set_relief (GTK_BUTTON (combo_box->priv->arrow_button), GTK_RELIEF_NONE);
+	GTK_WIDGET_UNSET_FLAGS (combo_box->priv->arrow_button, GTK_CAN_FOCUS);
+
+	arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_IN);
+	gtk_container_add (GTK_CONTAINER (combo_box->priv->arrow_button), arrow);
+	gtk_box_pack_end (GTK_BOX (combo_box), combo_box->priv->arrow_button, FALSE, FALSE, 0);
+	g_signal_connect_swapped (combo_box->priv->arrow_button,
+		"button-press-event",
+		G_CALLBACK (cb_arrow_pressed), combo_box);
+	gtk_widget_show_all (combo_box->priv->arrow_button);
+
+	/*
+	 * prelight the display widget when mousing over the arrow.
+	 */
+	g_signal_connect (combo_box->priv->arrow_button, "state-changed",
+			  G_CALLBACK (cb_state_change), combo_box);
+
+	/*
+	 * The pop-down container
+	 */
+
+	combo_box->priv->toplevel = gtk_window_new (GTK_WINDOW_POPUP);
+	gtk_widget_ref (combo_box->priv->toplevel);
+	gtk_object_sink (GTK_OBJECT (combo_box->priv->toplevel));
+	g_object_set (G_OBJECT (combo_box->priv->toplevel),
+		"allow-shrink",	FALSE,
+		"allow-grow",	TRUE,
+		NULL);
+
+	combo_box->priv->popup = gtk_event_box_new ();
+	gtk_container_add (GTK_CONTAINER (combo_box->priv->toplevel),
+			   combo_box->priv->popup);
+	gtk_widget_show (combo_box->priv->popup);
+
+	gtk_widget_realize (combo_box->priv->popup);
+	cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (combo_box)), GDK_TOP_LEFT_ARROW);
+	gdk_window_set_cursor (combo_box->priv->popup->window, cursor);
+	gdk_cursor_unref (cursor);
+
+	combo_box->priv->torn_off = FALSE;
+	combo_box->priv->tearoff_window = NULL;
+
+	combo_box->priv->frame = gtk_frame_new (NULL);
+	gtk_container_add (GTK_CONTAINER (combo_box->priv->popup),
+			   combo_box->priv->frame);
+	gtk_frame_set_shadow_type (GTK_FRAME (combo_box->priv->frame), GTK_SHADOW_OUT);
+
+	g_signal_connect (combo_box->priv->toplevel, "button_press_event",
+			  G_CALLBACK (go_combo_box_button_press), combo_box);
+	g_signal_connect (combo_box->priv->toplevel, "key_press_event",
+			  G_CALLBACK (cb_combo_keypress), combo_box);
+}
+
+GSF_CLASS (GOComboBox, go_combo_box,
+	   go_combo_box_class_init, go_combo_box_init,
+	   GTK_TYPE_HBOX)
+
+/**
+ * go_combo_box_set_display:
+ * @combo_box: the Combo Box to modify
+ * @display_widget: The widget to be displayed
+
+ * Sets the displayed widget for the @combo_box to be @display_widget
+ */
+/* protected */ void
+go_combo_box_set_display (GOComboBox *combo_box, GtkWidget *display_widget)
+{
+	g_return_if_fail (IS_GO_COMBO_BOX (combo_box));
+	g_return_if_fail (GTK_IS_WIDGET (display_widget));
+
+	if (combo_box->priv->display_widget != NULL &&
+	    combo_box->priv->display_widget != display_widget)
+		gtk_container_remove (GTK_CONTAINER (combo_box),
+				      combo_box->priv->display_widget);
+
+	combo_box->priv->display_widget = display_widget;
+
+	gtk_box_pack_start (GTK_BOX (combo_box), display_widget, TRUE, TRUE, 0);
+}
+
+static gboolean
+cb_tearable_enter_leave (GtkWidget *w, GdkEventCrossing *event, gpointer data)
+{
+	gboolean const flag = GPOINTER_TO_INT(data);
+	gtk_widget_set_state (w, flag ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL);
+	return FALSE;
+}
+
+/**
+ * go_combo_set_tearoff_state
+ * @combo_box:  Combo box
+ * @torn_off:   TRUE: Tear off. FALSE: Pop down and reattach
+ *
+ * Set the tearoff state of the popup
+ *
+ * Compare with gtk_menu_set_tearoff_state in gtk/gtkmenu.c
+ */
+static void
+go_combo_set_tearoff_state (GOComboBox *combo,
+			     gboolean  torn_off)
+{
+	g_return_if_fail (combo != NULL);
+	g_return_if_fail (IS_GO_COMBO_BOX (combo));
+
+	if (combo->priv->torn_off != torn_off) {
+		combo->priv->torn_off = torn_off;
+
+		if (combo->priv->torn_off) {
+			go_combo_popup_tear_off (combo, TRUE);
+			set_arrow_state (combo, FALSE);
+		} else {
+			gtk_widget_hide (combo->priv->tearoff_window);
+			go_combo_popup_reparent (combo->priv->popup,
+						  combo->priv->toplevel,
+						  FALSE);
+		}
+	}
+}
+
+static gboolean
+cb_popup_delete (GOComboBox *combo)
+{
+	go_combo_box_popup_hide_unconditional (combo);
+	return TRUE;
+}
+
+static gboolean
+cb_tearable_button_release (GtkWidget *w, GdkEventButton *event,
+			    GOComboBox *combo)
+{
+	GtkTearoffMenuItem *tearable;
+
+	g_return_val_if_fail (w != NULL, FALSE);
+	g_return_val_if_fail (GTK_IS_TEAROFF_MENU_ITEM (w), FALSE);
+
+	tearable = GTK_TEAROFF_MENU_ITEM (w);
+	tearable->torn_off = !tearable->torn_off;
+
+	if (!combo->priv->torn_off) {
+		gboolean need_connect;
+
+		need_connect = (!combo->priv->tearoff_window);
+		go_combo_set_tearoff_state (combo, TRUE);
+		if (need_connect)
+			g_signal_connect_swapped (combo->priv->tearoff_window,
+				"delete_event",
+				G_CALLBACK (cb_popup_delete), combo);
+	} else
+		go_combo_box_popup_hide_unconditional (combo);
+
+	return TRUE;
+}
+
+void
+go_combo_box_construct (GOComboBox *combo,
+			GtkWidget *display_widget,
+			GtkWidget *popdown_container,
+			GtkWidget *popdown_focus)
+{
+	GtkWidget *tearable;
+	GtkWidget *vbox;
+
+	g_return_if_fail (IS_GO_COMBO_BOX (combo));
+	g_return_if_fail (GTK_IS_WIDGET (display_widget));
+
+	GTK_BOX (combo)->spacing = 0;
+	GTK_BOX (combo)->homogeneous = FALSE;
+
+	combo->priv->popdown_container = popdown_container;
+	combo->priv->display_widget = NULL;
+
+	vbox = gtk_vbox_new (FALSE, 5);
+	tearable = gtk_tearoff_menu_item_new ();
+	g_signal_connect (tearable, "enter-notify-event",
+			  G_CALLBACK (cb_tearable_enter_leave),
+			  GINT_TO_POINTER (TRUE));
+	g_signal_connect (tearable, "leave-notify-event",
+			  G_CALLBACK (cb_tearable_enter_leave),
+			  GINT_TO_POINTER (FALSE));
+	g_signal_connect (tearable, "button-release-event",
+			  G_CALLBACK (cb_tearable_button_release),
+			  (gpointer) combo);
+	gtk_box_pack_start (GTK_BOX (vbox), tearable, FALSE, FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (vbox), popdown_container, TRUE, TRUE, 0);
+	combo->priv->tearable = tearable;
+	g_object_set (tearable, "no-show-all", TRUE, NULL);
+
+	go_combo_box_set_tearable (combo, FALSE);
+
+	go_combo_box_set_relief (combo, GTK_RELIEF_NORMAL);
+
+	go_combo_box_set_display (combo, display_widget);
+	gtk_container_add (GTK_CONTAINER (combo->priv->frame), vbox);
+	gtk_widget_show_all (combo->priv->frame);
+}
+
+/**
+ * go_combo_box_set_title
+ * @combo: Combo box
+ * @title: Title
+ *
+ * Set a title to display over the tearoff window.
+ *
+ * FIXME:
+ *
+ * This should really change the title even when the popup is already torn off.
+ * I guess the tearoff window could attach a listener to title change or
+ * something. But I don't think we need the functionality, so I didn't bother
+ * to investigate.
+ *
+ * MW: Just make it a property.
+ */
+void
+go_combo_box_set_title (GOComboBox *combo, char const *title)
+{
+	GOComboBoxClass *klass = G_TYPE_INSTANCE_GET_CLASS (combo,
+		GO_COMBO_BOX_TYPE, GOComboBoxClass);
+
+	g_return_if_fail (klass != NULL);
+
+	g_object_set_data_full (G_OBJECT (combo), "go-combo-title",
+		g_strdup (title), (GDestroyNotify) g_free);
+
+	if (klass->set_title)
+		(klass->set_title) (combo, title);
+}
+
+char const *
+go_combo_box_get_title (GOComboBox *combo)
+{
+	return g_object_get_data (G_OBJECT (combo), "go-combo-title");
+}
+
+/**
+ * go_combo_box_set_tearable:
+ * @combo: Combo box
+ * @tearable: whether to allow the @combo to be tearable
+ *
+ * controls whether the combo box's pop up widget can be torn off.
+ */
+void
+go_combo_box_set_tearable (GOComboBox *combo, gboolean tearable)
+{
+	g_return_if_fail (IS_GO_COMBO_BOX (combo));
+
+	if (tearable){
+		gtk_widget_show (combo->priv->tearable);
+	} else {
+		go_combo_set_tearoff_state (combo, FALSE);
+		gtk_widget_hide (combo->priv->tearable);
+	}
+}
+
+void
+go_combo_box_set_relief (GOComboBox *combo, GtkReliefStyle relief)
+{
+	g_return_if_fail (IS_GO_COMBO_BOX (combo));
+
+	gtk_button_set_relief (GTK_BUTTON (combo->priv->arrow_button), relief);
+	if (GTK_IS_BUTTON (combo->priv->display_widget))
+		gtk_button_set_relief (GTK_BUTTON (combo->priv->display_widget), relief);
+}
+
+void
+go_combo_box_set_tooltip (GOComboBox *c, GtkTooltips *tips,
+			   char const *text, char const *priv_text)
+{
+#warning this is ugly the tip moves as we jump from preview to arrow
+	gtk_tooltips_set_tip (tips, c->priv->display_widget, text, priv_text);
+	gtk_tooltips_set_tip (tips, c->priv->arrow_button, text, priv_text);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-box.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,80 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gtk-combo-box.h - a customizable combobox
+ * Copyright 2000, 2001, Ximian, Inc.
+ *
+ * Authors:
+ *   Miguel de Icaza <miguel at ximian.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#ifndef _GO_COMBO_BOX_H_
+#define _GO_COMBO_BOX_H_
+
+#include <gtk/gtkhbox.h>
+#include <gtk/gtktooltips.h>
+
+G_BEGIN_DECLS
+
+#define GO_COMBO_BOX_TYPE	(go_combo_box_get_type())
+#define GO_COMBO_BOX(o)		G_TYPE_CHECK_INSTANCE_CAST ((o), GO_COMBO_BOX_TYPE, GOComboBox)
+#define IS_GO_COMBO_BOX(o)	G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_COMBO_BOX_TYPE)
+#define GO_COMBO_BOX_CLASS(k)	G_TYPE_CHECK_CLASS_CAST ((k), GO_COMBO_BOX_TYPE, GOComboBoxClass)
+
+typedef struct _GOComboBox	  GOComboBox;
+typedef struct _GOComboBoxPrivate GOComboBoxPrivate;
+typedef struct _GOComboBoxClass   GOComboBoxClass;
+
+struct _GOComboBox {
+	GtkHBox hbox;
+	GOComboBoxPrivate *priv;
+};
+
+struct _GOComboBoxClass {
+	GtkHBoxClass	base;
+
+	/* virtual */
+	void  (*set_title) (GOComboBox *cbox, char const *title);
+
+	/* invoked when the popup has been hidden, if the signal
+	 * returns TRUE, it means it should be killed */
+	gboolean   (*pop_down_done)   (GOComboBox *cbox, GtkWidget *);
+};
+
+/* public */
+GType	    go_combo_box_get_type     (void);
+void	    go_combo_box_set_tooltip  (GOComboBox *combo, GtkTooltips *tips,
+				       char const *text, char const *priv_text);
+void	    go_combo_box_set_relief   (GOComboBox *combo, GtkReliefStyle relief);
+void	    go_combo_box_set_title    (GOComboBox *combo, char const *title);
+char const *go_combo_box_get_title    (GOComboBox *combo);
+void	    go_combo_box_set_tearable (GOComboBox *combo, gboolean tearable);
+
+/* protected */
+void go_combo_box_construct	(GOComboBox *combo,
+				 GtkWidget  *display_widget,
+				 GtkWidget  *popdown_container,
+				 GtkWidget  *popdown_focus);
+void go_combo_box_get_pos	(GOComboBox *combo, int *x, int *y);
+void go_combo_box_popup_hide	(GOComboBox *combo);
+void go_combo_box_popup_display	(GOComboBox *combo);
+void go_combo_box_set_display	(GOComboBox *combo,
+				 GtkWidget *display_widget);
+gboolean _go_combo_is_updating (GOComboBox const *combo);
+
+G_END_DECLS
+
+#endif /* _GO_COMBO_BOX_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,371 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * widget-color-combo.c - A color selector combo box
+ * Copyright 2000-2004, Ximian, Inc.
+ *
+ * Authors:
+ *   Miguel de Icaza (miguel at kernel.org)
+ *   Dom Lachowicz (dominicl at seas.upenn.edu)
+ *
+ * Reworked and split up into a separate GOColorPalette object:
+ *   Michael Levy (mlevy at genoscope.cns.fr)
+ *
+ * And later revised and polished by:
+ *   Almer S. Tigelaar (almer at gnome.org)
+ *   Jody Goldberg (jody at gnome.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <goffice/goffice-config.h>
+
+#include "go-combo-color.h"
+#include <goffice/utils/go-marshalers.h>
+#include "go-combo-box.h"
+#include "go-color-palette.h"
+
+#include <gsf/gsf-impl-utils.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkwindow.h>
+#include <gdk/gdkcolor.h>
+
+struct _GOComboColor {
+	GOComboBox     combo_box;
+
+	GOColorPalette	*palette;
+	GtkWidget	*preview_button;
+	GtkWidget	*preview_image;
+	gboolean	 preview_is_icon;
+	gboolean	 instant_apply;
+
+        GOColor  default_color;
+};
+
+typedef struct {
+	GOComboBoxClass base;
+	void (*color_changed) (GOComboColor *cc, GOColor color,
+			       gboolean custom, gboolean by_user, gboolean is_default);
+	void (*display_custom_dialog) (GOComboColor *cc, GtkWidget *dialog);
+} GOComboColorClass;
+
+enum {
+	COLOR_CHANGED,
+	DISPLAY_CUSTOM_DIALOG,
+	LAST_SIGNAL
+};
+
+static guint go_combo_color_signals [LAST_SIGNAL] = { 0, };
+
+static GObjectClass *go_combo_color_parent_class;
+
+#define PREVIEW_SIZE 20
+
+static void
+go_combo_color_set_color_internal (GOComboColor *cc, GOColor color, gboolean is_default)
+{
+	guint color_y, color_height;
+	guint height, width;
+	GdkPixbuf *pixbuf;
+	GdkPixbuf *color_pixbuf;
+	gboolean   add_an_outline;
+
+	pixbuf = gtk_image_get_pixbuf (GTK_IMAGE (cc->preview_image));
+	if (!pixbuf)
+		return;
+	width = gdk_pixbuf_get_width (pixbuf);
+	height = gdk_pixbuf_get_height (pixbuf);
+	if (cc->preview_is_icon) {
+		color_y = height - 4;
+		color_height = 4;
+	} else {
+		color_y = 0;
+		color_height = height;
+	}
+
+	color_pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+				       width, color_height);
+
+	/* mostly transparent things should have an outline */
+	add_an_outline = (UINT_RGBA_A (color) < 0x80);
+	gdk_pixbuf_fill (color_pixbuf, add_an_outline ? RGBA_GREY (0x33) : color);
+	gdk_pixbuf_copy_area (color_pixbuf, 0, 0, width, color_height,
+		pixbuf, 0, color_y);
+	if (add_an_outline) {
+		gdk_pixbuf_fill (color_pixbuf, color);
+		gdk_pixbuf_copy_area (color_pixbuf, 0, 0, width - 2, color_height -2,
+			pixbuf, 1, color_y + 1);
+	}
+
+	g_object_unref (color_pixbuf);
+	gtk_widget_queue_draw (cc->preview_image);
+}
+
+static void
+cb_screen_changed (GOComboColor *cc, GdkScreen *previous_screen)
+{
+	GtkWidget *w = GTK_WIDGET (cc);
+	GdkScreen *screen = gtk_widget_has_screen (w)
+		? gtk_widget_get_screen (w)
+		: NULL;
+
+	if (screen) {
+		GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (cc->palette));
+		gtk_window_set_screen (GTK_WINDOW (toplevel), screen);
+	}
+}
+
+static void
+emit_color_changed (GOComboColor *cc, GOColor color,
+		    gboolean is_custom, gboolean by_user, gboolean is_default)
+{
+  	g_signal_emit (cc,
+		       go_combo_color_signals [COLOR_CHANGED], 0,
+		       color, is_custom, by_user, is_default);
+	go_combo_box_popup_hide (GO_COMBO_BOX (cc));
+}
+
+static void
+cb_preview_clicked (GtkWidget *button, GOComboColor *cc)
+{
+	if (_go_combo_is_updating (GO_COMBO_BOX (cc)))
+		return;
+	if (cc->instant_apply) {
+		gboolean is_default, is_custom;
+		GOColor color = go_color_palette_get_current_color (cc->palette,
+			&is_default, &is_custom);
+		emit_color_changed (cc, color, is_custom, TRUE, is_default);
+	} else
+		go_combo_box_popup_display (GO_COMBO_BOX (cc));
+}
+
+static void
+go_combo_color_init (GOComboColor *cc)
+{
+	cc->instant_apply = FALSE;
+	cc->preview_is_icon = FALSE;
+	cc->preview_button = gtk_toggle_button_new ();
+
+	g_signal_connect (G_OBJECT (cc),
+		"screen-changed",
+		G_CALLBACK (cb_screen_changed), NULL);
+	g_signal_connect (cc->preview_button,
+		"clicked",
+		G_CALLBACK (cb_preview_clicked), cc);
+}
+
+static void
+go_combo_color_set_title (GOComboBox *combo, char const *title)
+{
+	go_color_palette_set_title	(GO_COMBO_COLOR (combo)->palette, title);
+}
+
+static void
+go_combo_color_class_init (GObjectClass *gobject_class)
+{
+	go_combo_color_parent_class = g_type_class_ref (GO_COMBO_BOX_TYPE);
+
+	GO_COMBO_BOX_CLASS (gobject_class)->set_title = go_combo_color_set_title;
+
+	go_combo_color_signals [COLOR_CHANGED] =
+		g_signal_new ("color_changed",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOComboColorClass, color_changed),
+			      NULL, NULL,
+			      go__VOID__INT_BOOLEAN_BOOLEAN_BOOLEAN,
+			      G_TYPE_NONE, 4, G_TYPE_POINTER,
+			      G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
+	go_combo_color_signals [DISPLAY_CUSTOM_DIALOG] =
+		g_signal_new ("display-custom-dialog",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOComboColorClass, display_custom_dialog),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__OBJECT,
+			      G_TYPE_NONE, 1, G_TYPE_OBJECT);
+}
+
+GSF_CLASS (GOComboColor, go_combo_color,
+	   go_combo_color_class_init, go_combo_color_init,
+	   GO_COMBO_BOX_TYPE)
+
+static void
+cb_palette_color_changed (GOColorPalette *P, GOColor color,
+			  gboolean custom, gboolean by_user, gboolean is_default,
+			  GOComboColor *cc)
+{
+	go_combo_color_set_color_internal (cc, color, is_default);
+	emit_color_changed (cc, color, custom, by_user, is_default);
+}
+
+static void
+cb_proxy_custom_dialog (GOColorPalette *pal, GtkWidget *dialog, GOComboColor *cc)
+{
+	go_combo_box_popup_hide (GO_COMBO_BOX (cc));
+	g_signal_emit (cc, go_combo_color_signals [DISPLAY_CUSTOM_DIALOG], 0,
+		       dialog);
+}
+
+static void
+color_table_setup (GOComboColor *cc,
+		   char const *no_color_label, GOColorGroup *color_group)
+{
+	g_return_if_fail (cc != NULL);
+
+	/* Tell the palette that we will be changing it's custom colors */
+	cc->palette = (GOColorPalette *)go_color_palette_new (no_color_label,
+		cc->default_color, color_group);
+	g_signal_connect (cc->palette,
+		"color_changed",
+		G_CALLBACK (cb_palette_color_changed), cc);
+	g_signal_connect (cc->palette,
+		"display-custom-dialog",
+		G_CALLBACK (cb_proxy_custom_dialog), cc);
+	gtk_widget_show_all (GTK_WIDGET (cc->palette));
+}
+
+/* go_combo_color_get_color:
+ *
+ * Return current color
+ */
+GOColor
+go_combo_color_get_color (GOComboColor *cc, gboolean *is_default)
+{
+	g_return_val_if_fail (IS_GO_COMBO_COLOR (cc), RGBA_BLACK);
+	return go_color_palette_get_current_color (cc->palette, is_default, NULL);
+}
+
+/**
+ * go_combo_color_set_color_gdk
+ * @cc     The combo
+ * @color  The color
+ *
+ * Set the color of the combo to the given color. Causes the color_changed
+ * signal to be emitted.
+ */
+void
+go_combo_color_set_color_gdk (GOComboColor *cc, GdkColor *color)
+{
+#warning convert to GOColor
+	g_return_if_fail (IS_GO_COMBO_COLOR (cc));
+
+	if (color != NULL)
+		go_color_palette_set_current_color (cc->palette, GDK_TO_UINT (*color));
+	else
+		go_color_palette_set_color_to_default (cc->palette);
+}
+
+/**
+ * go_combo_color_set_color :
+ * @cc : #GOComboColor
+ * @c  : #GOColor
+ */
+void
+go_combo_color_set_color (GOComboColor *cc, GOColor c)
+{
+	go_color_palette_set_current_color (cc->palette, c);
+}
+
+/**
+ * go_combo_color_set_instant_apply
+ * @cc     The combo
+ * @active Whether instant apply should be active or not
+ *
+ * Turn instant apply behaviour on or off. Instant apply means that pressing
+ * the button applies the current color. When off, pressing the button opens
+ * the combo.
+ */
+void
+go_combo_color_set_instant_apply (GOComboColor *cc, gboolean active)
+{
+	g_return_if_fail (IS_GO_COMBO_COLOR (cc));
+
+	cc->instant_apply = active;
+}
+
+/**
+ * go_combo_color_set_allow_alpha :
+ * @cc : #GOComboColor
+ * @allow_alpha : 
+ *
+ * Should the custom colour selector allow the use of opacity.
+ **/
+void
+go_combo_color_set_allow_alpha (GOComboColor *cc, gboolean allow_alpha)
+{
+	go_color_palette_set_allow_alpha (cc->palette, allow_alpha);
+}
+
+/**
+ * go_combo_color_set_color_to_default
+ * @cc  The combo
+ *
+ * Set the color of the combo to the default color. Causes the color_changed
+ * signal to be emitted.
+ */
+void
+go_combo_color_set_color_to_default (GOComboColor *cc)
+{
+	g_return_if_fail (IS_GO_COMBO_COLOR (cc));
+
+	go_color_palette_set_color_to_default (cc->palette);
+}
+
+/**
+ * go_combo_color_new :
+ * icon : optionally NULL.
+ * no_color_label :
+ *
+ * Default constructor. Pass an optional icon and an optional label for the
+ * no/auto color button.
+ */
+GtkWidget *
+go_combo_color_new (GdkPixbuf *icon, char const *no_color_label,
+		    GOColor default_color,
+		    GOColorGroup *color_group)
+{
+	GOColor     color;
+	gboolean    is_default;
+	GdkPixbuf  *pixbuf = NULL;
+	GOComboColor *cc = g_object_new (GO_COMBO_COLOR_TYPE, NULL);
+
+        cc->default_color = default_color;
+	if (icon != NULL &&
+	    gdk_pixbuf_get_width (icon) > 4 && 
+	    gdk_pixbuf_get_height (icon) > 4) {
+		cc->preview_is_icon = TRUE;
+		pixbuf = gdk_pixbuf_copy (icon);
+	} else
+		pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 
+					 PREVIEW_SIZE, PREVIEW_SIZE);
+
+	cc->preview_image = gtk_image_new_from_pixbuf (pixbuf);
+	g_object_unref (pixbuf);
+	gtk_widget_show (cc->preview_image);
+	gtk_container_add (GTK_CONTAINER (cc->preview_button), cc->preview_image);
+
+	color_table_setup (cc, no_color_label, color_group);
+	gtk_widget_show_all (cc->preview_button);
+
+	go_combo_box_construct (GO_COMBO_BOX (cc),
+		cc->preview_button, GTK_WIDGET (cc->palette), GTK_WIDGET (cc->palette));
+
+	color = go_color_palette_get_current_color (cc->palette, &is_default, NULL);
+	go_combo_color_set_color_internal (cc, color, is_default);
+
+	return GTK_WIDGET (cc);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-color.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,64 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-combo-color.h - A color selector combo box
+ * Copyright 2000, 2001, Ximian, Inc.
+ *
+ * Authors:
+ *   Miguel de Icaza (miguel at kernel.org)
+ *   Dom Lachowicz (dominicl at seas.upenn.edu)
+ *
+ * Reworked and split up into a separate ColorPalette object:
+ *   Michael Levy (mlevy at genoscope.cns.fr)
+ *
+ * And later revised and polished by:
+ *   Almer S. Tigelaar (almer at gnome.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+#ifndef _GO_COMBO_COLOR_H_
+#define _GO_COMBO_COLOR_H_
+
+#include <glib-object.h>
+#include <goffice/gtk/go-color-group.h>
+#include <goffice/utils/go-color.h>
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+#define GO_COMBO_COLOR_TYPE	(go_combo_color_get_type ())
+#define GO_COMBO_COLOR(o)	(G_TYPE_CHECK_INSTANCE_CAST((o), GO_COMBO_COLOR_TYPE, GOComboColor))
+#define IS_GO_COMBO_COLOR(o)	(G_TYPE_CHECK_INSTANCE_TYPE((o), GO_COMBO_COLOR_TYPE))
+#define GO_COMBO_COLOR_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST(k), GO_COMBO_COLOR_TYPE)
+
+typedef struct _GOComboColor GOComboColor;
+
+GType      go_combo_color_get_type   (void);
+GtkWidget *go_combo_color_new        (GdkPixbuf   *icon,
+				      char const *no_color_label,
+				      GOColor default_color,
+				      GOColorGroup  *color_group);
+GOColor go_combo_color_get_color (GOComboColor  *cc, gboolean *is_default);
+void    go_combo_color_set_color (GOComboColor  *cc, GOColor   color);
+void    go_combo_color_set_color_to_default (GOComboColor *cc);
+void    go_combo_color_set_color_gdk (GOComboColor *cc, GdkColor *color);
+GOColor go_combo_color_get_default   (GOComboColor *cc);
+void	go_combo_color_set_default   (GOComboColor *cc, GOColor color);
+
+void go_combo_color_set_allow_alpha    (GOComboColor *cc, gboolean allow_alpha);
+void go_combo_color_set_instant_apply  (GOComboColor *cc, gboolean active);
+
+G_END_DECLS
+
+#endif /* _GO_COMBO_COLOR_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,380 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-combo-pixmaps.c - A pixmap selector combo box
+ * Copyright 2000-2004, Ximian, Inc.
+ *
+ * Authors:
+ *   Jody Goldberg <jody at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-combo-pixmaps.h"
+#include "go-combo-box.h"
+
+#include <gtk/gtkwindow.h>
+#include <gtk/gtktable.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtkimage.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkimagemenuitem.h>
+#include <gtk/gtkvbox.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <glib/gi18n.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+#define PIXMAP_PREVIEW_WIDTH 15
+#define PIXMAP_PREVIEW_HEIGHT 15
+
+struct _GOComboPixmaps {
+	GOComboBox     base;
+
+	int selected_index;
+	int cols;
+	GArray *elements;
+
+	GtkWidget    *table, *preview_button;
+	GtkWidget    *preview_image;
+	GtkTooltips  *tool_tip;
+};
+
+typedef struct {
+	GOComboBoxClass base;
+	void (* changed) (GOComboPixmaps *pixmaps, int id);
+} GOComboPixmapsClass;
+
+enum {
+	CHANGED,
+	LAST_SIGNAL
+};
+
+typedef struct {
+	GdkPixbuf *pixbuf;
+	int	   id;
+} Element;
+
+static guint go_combo_pixmaps_signals [LAST_SIGNAL] = { 0, };
+static GObjectClass *go_combo_pixmaps_parent_class;
+
+static void
+go_combo_pixmaps_finalize (GObject *object)
+{
+	GOComboPixmaps *combo = GO_COMBO_PIXMAPS (object);
+
+	if (combo->tool_tip) {
+		g_object_unref (combo->tool_tip);
+		combo->tool_tip = NULL;
+	}
+
+	if (combo->elements) {
+		g_array_free (combo->elements, TRUE);
+		combo->elements = NULL;
+	}
+
+	(*go_combo_pixmaps_parent_class->finalize) (object);
+}
+
+static void
+cb_screen_changed (GOComboPixmaps *combo, GdkScreen *previous_screen)
+{
+	GtkWidget *w = GTK_WIDGET (combo);
+	GdkScreen *screen = gtk_widget_has_screen (w)
+		? gtk_widget_get_screen (w)
+		: NULL;
+
+	if (screen) {
+		GtkWidget *toplevel = gtk_widget_get_toplevel (combo->table);
+		gtk_window_set_screen (GTK_WINDOW (toplevel), screen);
+	}
+}
+
+static void
+emit_change (GOComboPixmaps *combo)
+{
+	if (_go_combo_is_updating (GO_COMBO_BOX (combo)))
+		return;
+	g_signal_emit (combo, go_combo_pixmaps_signals [CHANGED], 0,
+		g_array_index (combo->elements, Element, combo->selected_index).id);
+	go_combo_box_popup_hide (GO_COMBO_BOX (combo));
+}
+
+static void
+go_combo_pixmaps_init (GOComboPixmaps *combo)
+{
+	combo->elements = g_array_new (FALSE, FALSE, sizeof (Element));
+	combo->table = gtk_table_new (1, 1, 0);
+
+	combo->tool_tip = gtk_tooltips_new ();
+	g_object_ref (combo->tool_tip);
+	gtk_object_sink (GTK_OBJECT (combo->tool_tip));
+
+	combo->preview_button = gtk_toggle_button_new ();
+	combo->preview_image = gtk_image_new ();
+	gtk_container_add (GTK_CONTAINER (combo->preview_button),
+		GTK_WIDGET (combo->preview_image));
+
+	g_signal_connect (G_OBJECT (combo),
+		"screen-changed",
+		G_CALLBACK (cb_screen_changed), NULL);
+	g_signal_connect_swapped (combo->preview_button,
+		"clicked",
+		G_CALLBACK (emit_change), combo);
+
+	gtk_widget_show_all (combo->preview_button);
+	gtk_widget_show_all (combo->table);
+	go_combo_box_construct (GO_COMBO_BOX (combo),
+		combo->preview_button, combo->table, combo->table);
+}
+
+static void
+go_combo_pixmaps_class_init (GObjectClass *gobject_class)
+{
+	go_combo_pixmaps_parent_class = g_type_class_ref (GO_COMBO_BOX_TYPE);
+	gobject_class->finalize = go_combo_pixmaps_finalize;
+
+	go_combo_pixmaps_signals [CHANGED] =
+		g_signal_new ("changed",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOComboPixmapsClass, changed),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__INT,
+			      G_TYPE_NONE, 1, G_TYPE_INT);
+}
+
+GSF_CLASS (GOComboPixmaps, go_combo_pixmaps,
+	   go_combo_pixmaps_class_init, go_combo_pixmaps_init,
+	   GO_COMBO_BOX_TYPE)
+
+GOComboPixmaps *
+go_combo_pixmaps_new (int ncols)
+{
+	GOComboPixmaps *combo;
+
+	g_return_val_if_fail (ncols > 0, NULL);
+
+	combo = g_object_new (GO_COMBO_PIXMAPS_TYPE, NULL);
+	combo->cols = ncols;
+	return combo;
+}
+
+static gboolean
+swatch_activated (GOComboPixmaps *combo, GtkWidget *button)
+{
+	go_combo_pixmaps_select_index (combo,
+		GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "ItemIndex")));
+	emit_change (combo);
+	return TRUE;
+}
+
+static gboolean
+cb_swatch_release_event (GtkWidget *button, GdkEventButton *event, GOComboPixmaps *combo)
+{
+#warning TODO do I want to check for which button ?
+	return swatch_activated (combo, button);
+}
+static gboolean
+cb_swatch_key_press (GtkWidget *button, GdkEventKey *event, GOComboPixmaps *combo)
+{
+	if (event->keyval == GDK_Return ||
+	    event->keyval == GDK_KP_Enter ||
+	    event->keyval == GDK_space)
+		return swatch_activated (combo, button);
+	else
+		return FALSE;
+}
+
+/**
+ * go_combo_pixmaps_add_element :
+ * @combo : #GOComboPixmaps
+ * @pixbuf : #GdkPixbuf
+ * @id : an identifier for the callbacks
+ * @tootip : optional
+ *
+ * Absorbs a ref to the pixbuf.
+ **/
+void
+go_combo_pixmaps_add_element (GOComboPixmaps *combo,
+			      GdkPixbuf *pixbuf, int id, char const *tooltip)
+{
+	GtkWidget *button, *box;
+	Element tmp;
+	int col, row;
+
+	g_return_if_fail (IS_GO_COMBO_PIXMAPS (combo));
+
+	/* Wrap inside a vbox with a border so that we can see the focus indicator */
+	box = gtk_vbox_new (FALSE, 0);
+	gtk_box_pack_start (GTK_BOX (box),
+			    gtk_image_new_from_pixbuf (pixbuf),
+			    TRUE, TRUE, 0);
+	g_object_unref (pixbuf);
+
+	button = gtk_button_new ();
+	gtk_container_set_border_width (GTK_CONTAINER (box), 2);
+	gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+	gtk_container_add (GTK_CONTAINER (button), box);
+
+	if (tooltip != NULL)
+		gtk_tooltips_set_tip (combo->tool_tip, button,
+			tooltip, NULL);
+
+	col = combo->elements->len;
+	row = col / combo->cols;
+	col = col % combo->cols;
+
+	tmp.pixbuf = pixbuf;
+	tmp.id = id;
+	g_array_append_val (combo->elements, tmp);
+	g_object_set_data (G_OBJECT (button), "ItemIndex",
+		GINT_TO_POINTER (combo->elements->len-1));
+	gtk_table_attach (GTK_TABLE (combo->table), button,
+		col, col + 1, row + 1, row + 2,
+		GTK_FILL, GTK_FILL, 1, 1);
+	gtk_widget_show_all (button);
+
+	g_object_connect (button,
+		"signal::button_release_event", G_CALLBACK (cb_swatch_release_event), combo,
+		"signal::key_press_event", G_CALLBACK (cb_swatch_key_press), combo,
+		NULL);
+}
+
+gboolean
+go_combo_pixmaps_select_index (GOComboPixmaps *combo, int i)
+{
+	g_return_val_if_fail (IS_GO_COMBO_PIXMAPS (combo), FALSE);
+	g_return_val_if_fail (0 <= i, FALSE);
+	g_return_val_if_fail (i < (int)combo->elements->len, FALSE);
+
+	combo->selected_index = i;
+	gtk_image_set_from_pixbuf (GTK_IMAGE (combo->preview_image),
+		g_array_index (combo->elements, Element, i).pixbuf);
+
+	return TRUE;
+}
+
+gboolean
+go_combo_pixmaps_select_id (GOComboPixmaps *combo, int id)
+{
+	unsigned i;
+
+	g_return_val_if_fail (IS_GO_COMBO_PIXMAPS (combo), FALSE);
+
+	for (i = 0 ; i < combo->elements->len ; i++)
+		if (g_array_index (combo->elements, Element, i).id == id)
+			break;
+
+	g_return_val_if_fail (i <combo->elements->len, FALSE);
+
+	combo->selected_index = i;
+	gtk_image_set_from_pixbuf (GTK_IMAGE (combo->preview_image),
+		g_array_index (combo->elements, Element, i).pixbuf);
+
+	return TRUE;
+}
+
+int
+go_combo_pixmaps_get_selected (GOComboPixmaps const *combo, int *index)
+{
+	Element *el;
+
+	g_return_val_if_fail (IS_GO_COMBO_PIXMAPS (combo), 0);
+	el = &g_array_index (combo->elements, Element, combo->selected_index);
+
+	if (index != NULL)
+		*index = combo->selected_index;
+	return el->id;
+}
+
+GtkWidget *
+go_combo_pixmaps_get_preview (GOComboPixmaps const *combo)
+{
+	g_return_val_if_fail (IS_GO_COMBO_PIXMAPS (combo), NULL);
+	return combo->preview_button;
+}
+
+/************************************************************************/
+
+struct _GOMenuPixmaps {
+	GtkMenu base;
+	unsigned cols, n;
+};
+typedef struct {
+	GtkMenuClass	base;
+	void (* changed) (GOMenuPixmaps *pixmaps, int id);
+} GOMenuPixmapsClass;
+
+static guint go_menu_pixmaps_signals [LAST_SIGNAL] = { 0, };
+static void
+go_menu_pixmaps_class_init (GObjectClass *gobject_class)
+{
+	go_menu_pixmaps_signals [CHANGED] =
+		g_signal_new ("changed",
+			      G_OBJECT_CLASS_TYPE (gobject_class),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOMenuPixmapsClass, changed),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__INT,
+			      G_TYPE_NONE, 1, G_TYPE_INT);
+}
+
+static GSF_CLASS (GOMenuPixmaps, go_menu_pixmaps,
+		  go_menu_pixmaps_class_init, NULL,
+		  GTK_TYPE_MENU)
+
+GOMenuPixmaps *
+go_menu_pixmaps_new (int ncols)
+{
+        GOMenuPixmaps *submenu = g_object_new (go_menu_pixmaps_get_type (), NULL);
+	submenu->cols = ncols;
+	submenu->n = 0;
+	gtk_widget_show (GTK_WIDGET (submenu));
+	return submenu;
+}
+
+static void
+cb_menu_item_activate (GtkWidget *button, GtkWidget *menu)
+{
+	int id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (button), "ItemID"));
+	g_signal_emit (menu, go_menu_pixmaps_signals [CHANGED], 0, id);
+}
+
+void
+go_menu_pixmaps_add_element (GOMenuPixmaps *menu,
+			     GdkPixbuf *pixbuf, int id)
+{
+        GtkWidget *button;
+	int col, row;
+
+	col = menu->n++;
+	row = col / menu->cols;
+	col = col % menu->cols;
+
+	button = gtk_image_menu_item_new_with_label (" ");
+	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (button),
+		gtk_image_new_from_pixbuf ((GdkPixbuf *)pixbuf));
+	g_object_unref ((GdkPixbuf *)pixbuf);
+	g_object_set_data (G_OBJECT (button),
+		"ItemID", GINT_TO_POINTER (id));
+	gtk_widget_show_all (button);
+	gtk_menu_attach (GTK_MENU (menu), button,
+		col, col + 1, row + 1, row + 2);
+	g_signal_connect (G_OBJECT (button),
+		"activate",
+		G_CALLBACK (cb_menu_item_activate), menu);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-pixmaps.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,54 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * widget-pixmap-combo.h - A pixmap selector combo box
+ * Copyright 2000-2003, Ximian, Inc.
+ *
+ * Authors:
+ *   Jody Goldberg <jody at gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#ifndef _GO_COMBO_PIXMAPS_H_
+#define _GO_COMBO_PIXMAPS_H_
+
+#include <gtk/gtktooltips.h>
+
+G_BEGIN_DECLS
+
+#define GO_COMBO_PIXMAPS_TYPE	(go_combo_pixmaps_get_type ())
+#define GO_COMBO_PIXMAPS(o)	(G_TYPE_CHECK_INSTANCE_CAST((o), GO_COMBO_PIXMAPS_TYPE, GOComboPixmaps))
+#define IS_GO_COMBO_PIXMAPS(o)	(G_TYPE_CHECK_INSTANCE_TYPE((o), GO_COMBO_PIXMAPS_TYPE))
+
+typedef struct _GOComboPixmaps	GOComboPixmaps;
+typedef struct _GOMenuPixmaps	GOMenuPixmaps;
+
+GType      go_combo_pixmaps_get_type	 (void);
+GOComboPixmaps *go_combo_pixmaps_new	 (int ncols);
+void       go_combo_pixmaps_add_element  (GOComboPixmaps *combo,
+					  GdkPixbuf *pixbuf, int id,
+					  char const *tooltip);
+gboolean   go_combo_pixmaps_select_index (GOComboPixmaps *combo, int index);
+gboolean   go_combo_pixmaps_select_id    (GOComboPixmaps *combo, int id);
+int        go_combo_pixmaps_get_selected (GOComboPixmaps const *combo, int *index);
+GtkWidget *go_combo_pixmaps_get_preview	 (GOComboPixmaps const *combo);
+
+GOMenuPixmaps *go_menu_pixmaps_new	 (int ncols);
+void       go_menu_pixmaps_add_element   (GOMenuPixmaps *menu,
+					  GdkPixbuf *pixbuf, int id);
+
+G_END_DECLS
+
+#endif /* _GO_COMBO_PIXMAPS_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,396 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-combo-text: A combo box for selecting from a list.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-combo-text.h"
+#include "go-combo-box.h"
+#include <goffice/utils/go-marshalers.h>
+
+#include <gtk/gtksignal.h>
+#include <gtk/gtkentry.h>
+#include <gtk/gtktreeview.h>
+#include <gtk/gtktreeselection.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkscrolledwindow.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+struct _GoComboText {
+	GOComboBox parent;
+
+	GCompareFunc cmp_func;
+
+	GtkWidget *entry;
+	GtkWidget *list;
+	GtkWidget *scroll;
+	int rows;
+};
+
+typedef struct {
+	GOComboBoxClass	base;
+
+	gboolean (* selection_changed)	(GoComboText *ct, GtkTreeSelection *selection);
+	gboolean (* entry_changed)	(GoComboText *ct, char const *new_str);
+} GoComboTextClass;
+
+#define GO_COMBO_TEXT_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, go_combo_text_get_type (), GoComboTextClass)
+
+enum {
+	SELECTION_CHANGED,
+	ENTRY_CHANGED,
+	LAST_SIGNAL
+};
+static guint combo_text_signals [LAST_SIGNAL] = { 0 };
+
+/**
+ * A utility wrapper around g_signal_emitv because it does not initialize the
+ * result to FALSE if there is no handler.
+ */
+static gboolean
+go_signal_emit (GoComboText *ct, int signal,
+		gconstpointer arg, int default_ret)
+{
+	gboolean result;
+	GValue ret = { 0, };
+	GValue instance_and_parm [2] = { { 0, }, { 0, } };
+
+	g_value_init (instance_and_parm + 0, GO_TYPE_COMBO_TEXT);
+	g_value_set_instance (instance_and_parm + 0, G_OBJECT (ct));
+
+	g_value_init (instance_and_parm + 1, G_TYPE_POINTER);
+	g_value_set_pointer (instance_and_parm + 1, (gpointer)arg);
+
+	g_value_init (&ret, G_TYPE_BOOLEAN);
+	g_value_set_boolean  (&ret, default_ret);
+
+	g_signal_emitv (instance_and_parm, combo_text_signals [signal], 0, &ret);
+	result = g_value_get_boolean (&ret);
+
+	g_value_unset (instance_and_parm + 0);
+	g_value_unset (instance_and_parm + 1);
+
+	return result;
+}
+
+static void
+cb_entry_activate (GtkWidget *entry, gpointer ct)
+{
+	char const *text = gtk_entry_get_text (GTK_ENTRY (entry));
+
+	if (go_signal_emit (GO_COMBO_TEXT (ct), ENTRY_CHANGED, text, TRUE))
+		go_combo_text_set_text (GO_COMBO_TEXT (ct), text,
+			GO_COMBO_TEXT_CURRENT);
+}
+
+static void
+cb_list_changed (GtkTreeView *list, gpointer data)
+{
+	GtkTreeSelection *selection = gtk_tree_view_get_selection (list);
+	GoComboText *ct = GO_COMBO_TEXT (data);
+	GtkEntry *entry = GTK_ENTRY (ct->entry);
+	gboolean accept_change;
+	GtkTreeModel *store;
+	GtkTreeIter iter;
+	char *text;
+
+	if (gtk_tree_selection_get_selected (selection, &store, &iter))
+		gtk_tree_model_get (store, &iter, 0, &text, -1);
+	else
+		text = g_strdup ("");
+
+	accept_change = TRUE;
+	if (go_signal_emit (ct, SELECTION_CHANGED, selection, TRUE))
+		accept_change = go_signal_emit (ct, ENTRY_CHANGED, text, TRUE);
+	if (accept_change)
+		gtk_entry_set_text (entry, text);
+
+	g_free (text);
+
+	go_combo_box_popup_hide (GO_COMBO_BOX (ct));
+}
+
+static void
+cb_scroll_size_request (GtkWidget *widget, GtkRequisition *requisition,
+			GoComboText *ct)
+{
+	GtkRequisition list_req;
+	int mon_width, mon_height;
+	GdkRectangle rect;
+	GdkScreen    *screen;
+
+	/* In a Xinerama setup, use geometry of the actual display unit.  */
+	screen = gtk_widget_get_screen (widget);
+	if (screen == NULL)
+		/* Looks like this will happen when
+		 * embedded as a bonobo component */
+		screen = gdk_screen_get_default ();
+
+	gdk_screen_get_monitor_geometry (screen, 0, &rect);
+	mon_width  = rect.width;
+	mon_height = rect.height;
+
+	gtk_widget_size_request	(ct->list, &list_req);
+	if (requisition->height < list_req.height) {
+		int height       = list_req.height;
+		GtkWidget const *w = ct->list;
+
+		if (w != NULL) {
+			/* Make room for a whole number of items which don't
+			 * overflow the screen, but no more than 20. */
+			int avail_height, nitems;
+			
+			avail_height = mon_height - 20
+				- GTK_CONTAINER (widget)->border_width * 2 + 4;
+			nitems = MIN (20, avail_height * ct->rows / w->requisition.height);
+			height = nitems *  w->requisition.height / ct->rows;
+			if (height > list_req.height)
+				height = list_req.height;
+		}
+
+		/* FIXME : Why do we need 4 ??
+		 * without it things end up scrolling.
+		 */
+		requisition->height = height +
+			GTK_CONTAINER (widget)->border_width * 2 + 4;
+	}
+
+	requisition->width  = MAX (requisition->width, 
+				   ct->entry->allocation.width + 
+				   GTK_CONTAINER (widget)->border_width * 2);
+	requisition->width  = MIN (requisition->width, mon_width - 20);
+	requisition->height = MIN (requisition->height, mon_height - 20);
+}
+
+static void
+cb_screen_changed (GoComboText *ct, GdkScreen *previous_screen)
+{
+	GtkWidget *w = GTK_WIDGET (ct);
+	GdkScreen *screen = gtk_widget_has_screen (w)
+		? gtk_widget_get_screen (w)
+		: NULL;
+
+	if (screen) {
+		GtkWidget *toplevel = gtk_widget_get_toplevel (ct->scroll);
+		gtk_window_set_screen (GTK_WINDOW (toplevel), screen);
+	}	
+}
+
+static void
+go_combo_text_init (GoComboText *ct)
+{
+	GtkCellRenderer *renderer;
+	GtkListStore *store;
+	GtkTreeViewColumn *column;
+
+	ct->rows = 0;
+	ct->entry = gtk_entry_new ();
+	ct->list = gtk_tree_view_new ();
+	g_object_set (G_OBJECT (ct->list), NULL);
+	gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (ct->list), FALSE);
+	store = gtk_list_store_new (1, G_TYPE_STRING);
+	gtk_tree_view_set_model (GTK_TREE_VIEW (ct->list), GTK_TREE_MODEL (store));
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes (
+								NULL,
+								renderer, "text", 0, NULL);
+	gtk_tree_view_column_set_expand (column, TRUE);
+	gtk_tree_view_append_column (GTK_TREE_VIEW (ct->list), column);
+	g_signal_connect (G_OBJECT (ct->list), "cursor_changed",
+			  G_CALLBACK (cb_list_changed), ct);
+
+	ct->scroll = gtk_scrolled_window_new (NULL, NULL);
+
+	gtk_scrolled_window_set_policy (
+		GTK_SCROLLED_WINDOW (ct->scroll),
+		GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+	gtk_scrolled_window_add_with_viewport (
+		GTK_SCROLLED_WINDOW (ct->scroll), ct->list);
+	gtk_container_set_focus_hadjustment (
+		GTK_CONTAINER (ct->list),
+		gtk_scrolled_window_get_hadjustment (
+			GTK_SCROLLED_WINDOW (ct->scroll)));
+	gtk_container_set_focus_vadjustment (
+		GTK_CONTAINER (ct->list),
+		gtk_scrolled_window_get_vadjustment (
+			GTK_SCROLLED_WINDOW (ct->scroll)));
+
+	g_signal_connect (G_OBJECT (ct->entry),
+		"activate",
+		GTK_SIGNAL_FUNC (cb_entry_activate), (gpointer) ct);
+	g_signal_connect (G_OBJECT (ct->scroll),
+		"size_request",
+		G_CALLBACK (cb_scroll_size_request), (gpointer) ct);
+
+	gtk_widget_show (ct->entry);
+	go_combo_box_construct (GO_COMBO_BOX (ct),
+		ct->entry, ct->scroll, ct->list);
+
+	g_signal_connect (G_OBJECT (ct),
+		"screen-changed", G_CALLBACK (cb_screen_changed),
+		NULL);
+}
+
+static void
+go_combo_text_destroy (GtkObject *object)
+{
+	GtkObjectClass *parent;
+	GoComboText *ct = GO_COMBO_TEXT (object);
+
+	if (ct->list != NULL) {
+		g_signal_handlers_disconnect_by_func (G_OBJECT (ct),
+			G_CALLBACK (cb_screen_changed), NULL);
+		ct->list = NULL;
+	}
+
+	parent = g_type_class_peek (GO_COMBO_BOX_TYPE);
+	if (parent && parent->destroy)
+		(*parent->destroy) (object);
+}
+
+static void
+go_combo_text_class_init (GtkObjectClass *klass)
+{
+	klass->destroy = &go_combo_text_destroy;
+
+	combo_text_signals [SELECTION_CHANGED] = g_signal_new ("selection_changed",
+		GO_TYPE_COMBO_TEXT,
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GoComboTextClass, selection_changed),
+		NULL, NULL,
+		go__BOOLEAN__POINTER,
+		G_TYPE_BOOLEAN, 1, G_TYPE_POINTER);
+	combo_text_signals [ENTRY_CHANGED] = g_signal_new ("entry_changed",
+		GO_TYPE_COMBO_TEXT,
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GoComboTextClass, entry_changed),
+		NULL, NULL,
+		go__BOOLEAN__POINTER,
+		G_TYPE_BOOLEAN, 1, G_TYPE_POINTER);
+}
+
+/**
+ * go_combo_text_new :
+ * @cmp_func : an optional comparison routine.
+ */
+GtkWidget*
+go_combo_text_new (GCompareFunc cmp_func)
+{
+	GoComboText *ct;
+
+	if (cmp_func == NULL)
+		cmp_func = &g_str_equal;
+
+	ct = g_object_new (GO_TYPE_COMBO_TEXT, NULL);
+	ct->cmp_func = cmp_func;
+	return GTK_WIDGET (ct);
+}
+
+GtkWidget *
+go_combo_text_glade_new (void)
+{
+	return go_combo_text_new (NULL);
+}
+
+GSF_CLASS (GoComboText, go_combo_text,
+	   go_combo_text_class_init, go_combo_text_init,
+	   GO_COMBO_BOX_TYPE)
+
+GtkWidget *
+go_combo_text_get_entry (GoComboText *ct)
+{
+	return ct->entry;
+}
+
+/**
+ * go_combo_text_set_text :
+ * @ct :
+ * @text : the label for the new item
+ * @start : where to begin the search in the list.
+ *
+ * return TRUE if the item is found in the list.
+ */
+gboolean
+go_combo_text_set_text (GoComboText *ct, const gchar *text,
+			GoComboTextSearch start)
+{
+	gboolean found = FALSE, result;
+	GtkTreeView   *list = GTK_TREE_VIEW (ct->list);
+	GtkTreeIter iter;
+	GtkTreeModel *store;
+	GtkTreeSelection *selection = gtk_tree_view_get_selection (list);
+	char *label;
+
+	/* Be careful */
+	result = start != GO_COMBO_TEXT_FROM_TOP &&
+				gtk_tree_selection_get_selected (selection, &store, &iter);
+
+	if (result) {
+		if (start == GO_COMBO_TEXT_NEXT)
+			result = gtk_tree_model_iter_next (store, &iter);
+		for (; result ; result = gtk_tree_model_iter_next (store, &iter)) {
+			gtk_tree_model_get (store, &iter, 0, &label, -1);
+			if (ct->cmp_func (label, text))
+				break;
+			g_free (label);
+		}
+	} else
+		store = gtk_tree_view_get_model (list);
+
+	if (!result)
+		for (result = gtk_tree_model_get_iter_first (store, &iter);
+				result;
+				result = gtk_tree_model_iter_next (store, &iter)) {
+			gtk_tree_model_get (store, &iter, 0, &label, -1);
+			if (ct->cmp_func (label, text))
+				break;
+			g_free (label);
+		}
+
+	g_signal_handlers_block_by_func (G_OBJECT (list),
+					  G_CALLBACK (cb_list_changed),
+					  (gpointer) ct);
+	gtk_tree_selection_unselect_all (selection);
+
+	/* Use visible label rather than supplied text just in case */
+	if (result) {
+		GtkTreePath *path = gtk_tree_model_get_path (store, &iter);
+		gtk_tree_selection_select_iter (selection, &iter);
+		gtk_tree_view_set_cursor (GTK_TREE_VIEW (ct->list), path, NULL, FALSE);
+		gtk_tree_path_free (path);
+		gtk_entry_set_text (GTK_ENTRY (ct->entry), label);
+		g_free (label);
+		found = TRUE;
+	} else
+		gtk_entry_set_text (GTK_ENTRY (ct->entry), text);
+
+	g_signal_handlers_unblock_by_func (G_OBJECT (list),
+					  G_CALLBACK (cb_list_changed),
+					  (gpointer) ct);
+	return found;
+}
+
+/**
+ * go_combo_text_add_item :
+ * @ct : The text combo that will get the new element.
+ * @label : the user visible label for the new item
+ * @key   : The unique key to identify this item.
+ *
+ * It is ok to have multiple items with the same label, but the key must be
+ * unique.
+ */
+void
+go_combo_text_add_item (GoComboText *ct, char const *label)
+{
+	GtkListStore *store;
+	GtkTreeIter iter;
+	g_return_if_fail (label != NULL);
+
+	store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (ct->list)));
+	gtk_list_store_append (store, &iter);
+	gtk_list_store_set (store, &iter, 0, label, -1);
+	ct->rows++;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-combo-text.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,32 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+#ifndef _GO_COMBO_TEXT_H_
+#define _GO_COMBO_TEXT_H_
+
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+#define GO_TYPE_COMBO_TEXT	(go_combo_text_get_type ())
+#define GO_COMBO_TEXT(obj)	(G_TYPE_CHECK_INSTANCE_CAST (obj, GO_TYPE_COMBO_TEXT, GoComboText))
+#define IS_GO_COMBO_TEXT(obj)	(G_TYPE_CHECK_INSTANCE_TYPE (obj, GO_TYPE_COMBO_TEXT))
+
+typedef struct _GoComboText	   GoComboText;
+
+typedef enum {		/* begin the search from : */
+	GO_COMBO_TEXT_FROM_TOP,	/* the top of the list */
+	GO_COMBO_TEXT_CURRENT,		/* the current selection */
+	GO_COMBO_TEXT_NEXT		/* the next element after current */
+} GoComboTextSearch;
+
+GType      go_combo_text_get_type	 (void);
+GtkWidget *go_combo_text_new		 (GCompareFunc cmp_func);
+GtkWidget *go_combo_text_glade_new	 (void);
+GtkWidget *go_combo_text_get_entry	 (GoComboText *ct);
+
+gboolean   go_combo_text_set_text	 (GoComboText *ct, const gchar *label,
+					  GoComboTextSearch start);
+void	   go_combo_text_add_item	 (GoComboText *ct, const gchar *label);
+
+G_END_DECLS
+
+#endif /* _GO_COMBO_TEXT_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1985 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* go-dock-band.c
+
+   Copyright (C) 1998 Free Software Foundation
+
+   The Gnome Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The Gnome Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 51 Franklin St, Fifth
+   Floor, Boston, MA  02110-1301 USA.
+   Author: Ettore Perazzoli <ettore at comm2000.it>
+*/
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+#include <libgnome/gnome-macros.h>
+#include "go-dock.h"
+#include "go-dock-band.h"
+#include "go-dock-item.h"
+
+GNOME_CLASS_BOILERPLATE (GoDockBand, go_dock_band,
+			 GtkContainer, GTK_TYPE_CONTAINER);
+
+#define noBONOBO_DOCK_BAND_DEBUG
+
+/* FIXME: To be removed.  */
+#if defined GO_DOCK_BAND_DEBUG && defined __GNUC__
+#define DEBUG(x)                                        \
+  do                                                    \
+    {                                                   \
+      printf ("%s.%d: ", __FUNCTION__, __LINE__);       \
+      printf x;                                         \
+      putchar ('\n');                                   \
+    }                                                   \
+  while (0)
+#else
+#define DEBUG(x)
+#endif
+
+static void     go_dock_band_size_request  (GtkWidget *widget,
+                                               GtkRequisition *requisition);
+
+static void     go_dock_band_size_allocate (GtkWidget *widget,
+                                               GtkAllocation *allocation);
+
+static void     go_dock_band_map           (GtkWidget *widget);
+static void     go_dock_band_unmap         (GtkWidget *widget);
+
+static void     go_dock_band_add           (GtkContainer *container,
+                                               GtkWidget *child);
+
+static void     go_dock_band_remove        (GtkContainer *container,
+                                               GtkWidget *widget);
+
+static void     go_dock_band_forall        (GtkContainer *container,
+                                               gboolean include_internals,
+                                               GtkCallback callback,
+                                               gpointer callback_data);
+
+static void     go_dock_band_finalize      (GObject *object);
+
+static void     size_allocate_child           (GoDockBand *band,
+                                               GoDockBandChild *child,
+                                               guint space,
+                                               GtkAllocation *child_allocation);
+
+static void     size_allocate_small           (GoDockBand *band,
+                                               GtkAllocation *allocation,
+                                               guint space,
+                                               guint requested_space);
+
+static gboolean docking_allowed               (GoDockBand *band,
+                                               GoDockItem *item);
+
+static GList   *find_child                    (GoDockBand *band,
+                                               GtkWidget *child);
+
+static GList   *prev_if_floating              (GoDockBand *band,
+                                               GList *c);
+
+static GList   *next_if_floating              (GoDockBand *band,
+                                               GList *c);
+
+static GList   *prev_not_floating             (GoDockBand *band,
+                                               GList *c);
+
+static GList   *next_not_floating             (GoDockBand *band,
+                                               GList *c);
+
+static void     calc_prev_and_foll_space      (GoDockBand *band);
+
+static guint    attempt_move_backward         (GoDockBand *band,
+                                               GList *child,
+                                               guint amount);
+
+static guint    attempt_move_forward          (GoDockBand *band,
+                                               GList *child,
+                                               guint amount);
+
+static gboolean dock_nonempty                 (GoDockBand *band,
+                                               GoDockItem *item,
+                                               GList *where,
+                                               gint x, gint y);
+
+static gboolean dock_empty                    (GoDockBand *band,
+                                               GoDockItem *item,
+                                               GList *where,
+                                               gint x, gint y);
+
+static gboolean dock_empty_right              (GoDockBand *band,
+                                               GoDockItem *item,
+                                               GList *where,
+                                               gint x, gint y);
+
+static gboolean check_guint_arg               (GObject *object,
+					       const gchar *name,
+					       guint *value_return);
+
+static void
+go_dock_band_class_init (GoDockBandClass *klass)
+{
+  GObjectClass *gobject_class;
+  GtkWidgetClass *widget_class;
+  GtkContainerClass *container_class;
+
+  gobject_class = (GObjectClass *) klass;
+  widget_class = (GtkWidgetClass *) klass;
+  container_class = (GtkContainerClass *) klass;
+
+  gobject_class->finalize = go_dock_band_finalize;
+
+  widget_class->map = go_dock_band_map;
+  widget_class->unmap = go_dock_band_unmap;
+  widget_class->size_request = go_dock_band_size_request;
+  widget_class->size_allocate = go_dock_band_size_allocate;
+
+  container_class->add = go_dock_band_add;
+  container_class->remove = go_dock_band_remove;
+  container_class->forall = go_dock_band_forall;
+}
+
+static void
+go_dock_band_instance_init (GoDockBand *band)
+{
+  GtkWidget *widget = GTK_WIDGET (band);
+
+  GTK_WIDGET_SET_FLAGS (band, GTK_NO_WINDOW);
+
+  band->_priv = NULL;
+  band->orientation = GTK_ORIENTATION_HORIZONTAL;
+
+  band->children = NULL;
+  band->num_children = 0;
+
+  band->floating_child = NULL;
+
+  band->doing_drag = FALSE;
+
+  band->max_space_requisition = 0;
+  band->tot_offsets = 0;
+
+  band->drag_allocation.x = band->drag_allocation.y = -1;
+  band->drag_allocation.width = band->drag_allocation.height = 0;
+
+  band->new_for_drag = FALSE;
+
+  if (GTK_WIDGET_VISIBLE (widget))
+    gtk_widget_queue_resize (widget);
+}
+
+
+
+static void
+go_dock_band_size_request (GtkWidget *widget,
+                              GtkRequisition *requisition)
+{
+  GoDockBand *band;
+  GList *lp;
+
+  DEBUG (("entering function"));
+
+  band = GO_DOCK_BAND (widget);
+
+  band->max_space_requisition = 0;
+  band->tot_offsets = 0;
+
+  requisition->width = 0;
+  requisition->height = 0;
+
+  for (lp = band->children; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *c = lp->data;
+
+      if (GTK_WIDGET_VISIBLE (c->widget))
+        {
+          GtkRequisition req;
+
+	  req.width = req.height = 0;
+
+          if (GO_IS_DOCK_ITEM (c->widget))
+            go_dock_item_handle_size_request(GO_DOCK_ITEM (c->widget),
+                                                &req);
+	  else
+	    gtk_widget_size_request (c->widget, &req);
+
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+	    {
+	      gboolean has_preferred_width;
+	      guint preferred_width;
+
+	      has_preferred_width = check_guint_arg (G_OBJECT (c->widget),
+						     "preferred_width",
+						     &preferred_width);
+
+	      if (has_preferred_width)
+		c->max_space_requisition = MAX ((int)preferred_width, req.width);
+	      else
+		c->max_space_requisition = req.width;
+	    }
+          else
+	    {
+	      gboolean has_preferred_height;
+	      guint preferred_height;
+
+	      has_preferred_height = check_guint_arg (G_OBJECT (c->widget),
+						      "preferred_height",
+						      &preferred_height);
+
+	      if (has_preferred_height)
+		c->max_space_requisition = MAX ((int)preferred_height, req.height);
+	      else
+		c->max_space_requisition = req.height;
+	    }
+
+          band->max_space_requisition += c->max_space_requisition;
+
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            {
+              requisition->height = MAX (requisition->height, req.height);
+              requisition->width += req.width;
+            }
+          else
+            {
+              requisition->width = MAX (requisition->width, req.width);
+              requisition->height += req.height;
+            }
+
+          c->widget->requisition = req;
+          band->tot_offsets += c->offset;
+        }
+    }
+
+  widget->requisition = *requisition;
+}
+
+
+
+static void
+size_allocate_child (GoDockBand *band,
+                     GoDockBandChild *child,
+                     guint space,
+                     GtkAllocation *child_allocation)
+{
+  GtkWidget *band_widget;
+
+  band_widget = GTK_WIDGET (band);
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
+      child_allocation->x += child->real_offset;
+      child_allocation->width = space;
+      child_allocation->height = band_widget->allocation.height;
+      DEBUG (("horizontal %d %d %d %d real_offset %d",
+              child_allocation->x, child_allocation->y,
+              child_allocation->width, child_allocation->height,
+              child->real_offset));
+      gtk_widget_size_allocate (child->widget, child_allocation);
+      child_allocation->x += child_allocation->width;
+    }
+  else
+    {
+      child_allocation->y += child->real_offset;
+      child_allocation->width = band_widget->allocation.width;
+      child_allocation->height = space;
+      DEBUG (("vertical %d %d %d %d real_offset %d",
+              child_allocation->x, child_allocation->y,
+              child_allocation->width, child_allocation->height,
+              child->real_offset));
+      gtk_widget_size_allocate (child->widget, child_allocation);
+      child_allocation->y += child_allocation->height;
+    }
+}
+
+/* The allocated space is smaller than the space needed to show all
+   the items completely.  */
+static void
+size_allocate_small (GoDockBand *band,
+                     GtkAllocation *allocation,
+                     guint space,
+                     guint requested_space)
+{
+  GtkAllocation child_allocation;
+  GList *lp;
+  guint max_space_requisition;
+
+  DEBUG (("entering function"));
+
+  child_allocation.x = allocation->x;
+  child_allocation.y = allocation->y;
+
+  max_space_requisition = band->max_space_requisition;
+
+  for (lp = band->children; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *child;
+
+      child = lp->data;
+
+      if (GTK_WIDGET_VISIBLE (child->widget))
+        {
+	  guint child_requested_space;
+
+	  child->real_offset = 0;
+
+	  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+	    child_requested_space = child->widget->requisition.width;
+	  else
+	    child_requested_space = child->widget->requisition.height;
+
+	  if (space < child->max_space_requisition
+	      || (space - child->max_space_requisition
+		  < requested_space - child_requested_space))
+	    break;
+
+	  space -= child->max_space_requisition;
+	  requested_space -= child_requested_space;
+	  max_space_requisition -= child->max_space_requisition;
+
+	  size_allocate_child (band, child,
+			       child->max_space_requisition,
+			       &child_allocation);
+	}
+    }
+
+  if (lp != NULL)
+    {
+      GoDockBandChild *child;
+      guint child_space, child_requested_space;
+
+      child = lp->data;
+
+      if (GTK_WIDGET_VISIBLE (child->widget))
+        {
+	  child->real_offset = 0;
+
+	  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+	    child_requested_space = child->widget->requisition.width;
+	  else
+	    child_requested_space = child->widget->requisition.height;
+
+	  requested_space -= child_requested_space;
+	  child_space = space - requested_space;
+	  space -= child_space;
+
+	  size_allocate_child (band, child,
+			       child_space,
+			       &child_allocation);
+	}
+
+      lp = lp->next;
+    }
+
+  for (; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *child;
+
+      child = lp->data;
+
+      if (GTK_WIDGET_VISIBLE (child->widget))
+        {
+	  child->real_offset = 0;
+	  child->real_offset = 0;
+
+	  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+	    size_allocate_child (band, child,
+				 child->widget->requisition.width,
+				 &child_allocation);
+	  else
+	    size_allocate_child (band, child,
+				 child->widget->requisition.height,
+				 &child_allocation);
+	}
+    }
+}
+
+/* The allocation is enough to show all the items completely, but not
+   to satisfy all the requested offsets.  */
+static void
+size_allocate_medium (GoDockBand *band,
+                      GtkAllocation *allocation,
+                      guint space,
+                      guint requested_space)
+{
+  GtkAllocation child_allocation;
+  GList *lp;
+  gfloat factor;
+
+  DEBUG (("entering function"));
+
+  child_allocation.x = allocation->x;
+  child_allocation.y = allocation->y;
+
+  factor = (1.0 - ((float) (band->max_space_requisition + band->tot_offsets
+                            - space)
+                   / (float) band->tot_offsets));
+
+  /* Shrink the offsets proportionally.  */
+  for (lp = band->children; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *child;
+
+      child = lp->data;
+
+      if (GTK_WIDGET_VISIBLE (child->widget))
+        {
+	  child->real_offset = (guint) ((float) child->offset * factor + .5);
+
+	  size_allocate_child (band, child,
+			       child->max_space_requisition,
+			       &child_allocation);
+	}
+    }
+}
+
+/* The allocation is enough to show all the items completely, with the
+   requested offsets.  */
+static void
+size_allocate_large (GoDockBand *band,
+                     GtkAllocation *allocation,
+                     guint space,
+                     guint requested_space)
+{
+  GtkAllocation child_allocation;
+  GList *lp;
+
+  DEBUG (("entering function"));
+
+  child_allocation.x = allocation->x;
+  child_allocation.y = allocation->y;
+
+  for (lp = band->children; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *child;
+
+      child = lp->data;
+
+      if (GTK_WIDGET_VISIBLE (child->widget))
+        {
+	  child->real_offset = child->offset;
+
+	  size_allocate_child (band, child,
+			       child->max_space_requisition,
+			       &child_allocation);
+	}
+    }
+}
+
+static void
+go_dock_band_size_allocate (GtkWidget *widget,
+                               GtkAllocation *allocation)
+{
+  GoDockBand *band;
+  guint space, requested_space;
+
+  band = GO_DOCK_BAND (widget);
+
+  widget->allocation = *allocation;
+
+  /* Check if we have a single exclusive item.  If so, allocate the
+     whole space to it.  */
+  if (band->num_children == 1)
+    {
+      GoDockBandChild *c;
+
+      c = (GoDockBandChild *) band->children->data;
+      if (GO_IS_DOCK_ITEM (c->widget) && GTK_WIDGET_VISIBLE (c->widget))
+        {
+          GoDockItemBehavior behavior;
+          GoDockItem *item;
+
+          item = GO_DOCK_ITEM (c->widget);
+          behavior = go_dock_item_get_behavior (item);
+          if (behavior & GO_DOCK_ITEM_BEH_EXCLUSIVE)
+            {
+              gtk_widget_size_allocate (c->widget, allocation);
+              return;
+            }
+        }
+    }
+
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
+      space = allocation->width;
+      requested_space = widget->requisition.width;
+    }
+  else
+    {
+      space = allocation->height;
+      requested_space = widget->requisition.height;
+    }
+
+  if (space <= band->max_space_requisition)
+    size_allocate_small (band, allocation, space, requested_space);
+  else if (space < band->max_space_requisition + band->tot_offsets)
+    size_allocate_medium (band, allocation, space, requested_space);
+  else
+    size_allocate_large (band, allocation, space, requested_space);
+
+  calc_prev_and_foll_space (band);
+}
+
+
+
+static void
+go_dock_band_map (GtkWidget *widget)
+{
+  GoDockBand *band = GO_DOCK_BAND (widget);
+  GList *lp;
+
+  g_return_if_fail(widget != NULL);
+  g_return_if_fail(GO_IS_DOCK_BAND(widget));
+
+  GNOME_CALL_PARENT (GTK_WIDGET_CLASS, map, (widget));
+
+  for (lp = band->children; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *c;
+
+      c = lp->data;
+      if (GTK_WIDGET_VISIBLE (c->widget) && ! GTK_WIDGET_MAPPED (c->widget))
+        gtk_widget_map (c->widget);
+    }
+}
+
+static void
+go_dock_band_unmap (GtkWidget *widget)
+{
+  GoDockBand *band = GO_DOCK_BAND (widget);
+  GList *lp;
+
+  g_return_if_fail(widget != NULL);
+  g_return_if_fail(GO_IS_DOCK_BAND(widget));
+
+  GNOME_CALL_PARENT (GTK_WIDGET_CLASS, unmap, (widget));
+
+  for (lp = band->children; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *c;
+
+      c = lp->data;
+      if (GTK_WIDGET_VISIBLE (c->widget) && GTK_WIDGET_MAPPED (c->widget))
+        gtk_widget_unmap (c->widget);
+    }
+}
+
+
+/* GtkContainer methods.  */
+
+static void
+go_dock_band_add (GtkContainer *container, GtkWidget *child)
+{
+  GoDockBand *band = GO_DOCK_BAND (container);
+
+  g_return_if_fail (go_dock_band_prepend (band, child, 0));
+}
+
+static void
+go_dock_band_remove (GtkContainer *container, GtkWidget *widget)
+{
+  GoDockBand *band;
+  GList *child;
+
+  band = GO_DOCK_BAND (container);
+  if (band->num_children == 0)
+    return;
+
+  child = find_child (band, widget);
+  if (child != NULL)
+    {
+      gboolean was_visible;
+
+      if (child == band->floating_child)
+        band->floating_child = NULL;
+
+      was_visible = GTK_WIDGET_VISIBLE (widget);
+      gtk_widget_unparent (widget);
+
+      band->children = g_list_remove_link (band->children, child);
+      g_free (child->data);
+      g_list_free (child);
+
+      if (band->doing_drag)
+        {
+          GList *p;
+
+          for (p = band->children; p != NULL; p = p->next)
+            {
+              GoDockBandChild *c;
+
+              c = (GoDockBandChild *) p->data;
+              c->offset = c->real_offset = c->drag_offset;
+            }
+        }
+
+      gtk_widget_queue_resize (GTK_WIDGET (band));
+
+      band->num_children--;
+      DEBUG (("now num_children = %d", band->num_children));
+    }
+}
+
+static void
+go_dock_band_forall (GtkContainer *container,
+                        gboolean include_internals,
+                        GtkCallback callback,
+                        gpointer callback_data)
+{
+  GoDockBand *band;
+  GoDockBandChild *child;
+  GList *children;
+
+  band = GO_DOCK_BAND (container);
+
+  children = band->children;
+  while (children)
+    {
+      child = children->data;
+      children = children->next;
+      (* callback) (child->widget, callback_data);
+    }
+}
+
+static void
+go_dock_band_finalize (GObject *object)
+{
+  GoDockBand *self = GO_DOCK_BAND (object);
+
+  g_free (self->_priv);
+  self->_priv = NULL;
+
+  GNOME_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
+}
+
+
+/* Utility functions.  */
+
+static gboolean
+docking_allowed (GoDockBand *band, GoDockItem *item)
+{
+  GoDockItemBehavior behavior;
+  GoDockBandChild *c;
+
+  if (band->num_children == 0)
+    return TRUE;
+
+  behavior = go_dock_item_get_behavior (item);
+
+  if (behavior & GO_DOCK_ITEM_BEH_EXCLUSIVE)
+    return FALSE;
+
+  c = (GoDockBandChild *) band->children->data;
+  if (GO_IS_DOCK_ITEM (c->widget))
+    {
+      behavior = go_dock_item_get_behavior (GO_DOCK_ITEM (c->widget));
+      if (behavior & GO_DOCK_ITEM_BEH_EXCLUSIVE)
+          return c->widget == GTK_WIDGET (item);
+    }
+
+  return TRUE;
+}
+
+static GList *
+find_child (GoDockBand *band, GtkWidget *child)
+{
+  GList *children;
+
+  children = band->children;
+
+  while (children != NULL)
+    {
+      GoDockBandChild *c;
+
+      c = (GoDockBandChild *) children->data;
+      if (c->widget == child)
+        return children;
+
+      children = children->next;
+    }
+
+  return NULL;
+}
+
+static GList *
+next_if_floating (GoDockBand *band, GList *c)
+{
+  if (c != NULL && c == band->floating_child)
+    return c->next;
+  else
+    return c;
+}
+
+static GList *
+prev_if_floating (GoDockBand *band, GList *c)
+{
+  if (c != NULL && c == band->floating_child)
+    return c->prev;
+  else
+    return c;
+}
+
+static GList *
+next_not_floating (GoDockBand *band, GList *c)
+{
+  if (c == NULL)
+    return NULL;
+  else
+    return next_if_floating (band, c->next);
+}
+
+static GList *
+prev_not_floating (GoDockBand *band, GList *c)
+{
+  if (c == NULL)
+    return NULL;
+  else
+    return prev_if_floating (band, c->prev);
+}
+
+
+
+static GList *
+find_where (GoDockBand *band, gint offset, gboolean *is_empty)
+{
+  guint count;                  /* FIXME: used for debugging only */
+  gint offs;
+  GList *lp;
+
+  if (offset < 0)
+    offset = 0;
+
+  offs = 0;
+  count = 0;                    /* FIXME */
+  for (lp = band->children; lp != NULL; lp = lp->next)
+    {
+      GoDockBandChild *child;
+
+      child = lp->data;
+
+      if (lp == band->floating_child)
+        {
+          if (lp->next == NULL)
+            {
+              DEBUG (("empty last %d", count));
+              *is_empty = TRUE;
+
+              return lp == band->floating_child ? lp->prev : lp;
+            }
+          DEBUG (("%d: is floating or dragged.", count++));
+          continue;
+        }
+
+      DEBUG (("%d: Checking for x %d, width %d, offs %d (%d)",
+              count, child->drag_allocation.x,
+              child->drag_allocation.width, offs, offset));
+
+      if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+        {
+          if (offset >= offs && offset <= child->drag_allocation.x)
+            {
+              *is_empty = TRUE;
+              DEBUG (("empty %d (allocation.x %d)",
+                      count, child->drag_allocation.x));
+
+              return prev_if_floating (band, lp->prev);
+            }
+
+          offs = child->drag_allocation.x + child->drag_allocation.width;
+          if (offset > child->drag_allocation.x && offset < offs)
+            {
+              *is_empty = FALSE;
+              DEBUG (("%d", count));
+              return lp->prev;
+            }
+        }
+      else
+        {
+          if (offset >= offs && offset <= child->drag_allocation.y)
+            {
+              *is_empty = TRUE;
+              DEBUG (("empty %d (allocation.y %d)",
+                      count, child->drag_allocation.y));
+
+              return prev_if_floating (band, lp->prev);
+            }
+
+          offs = child->drag_allocation.y + child->drag_allocation.height;
+          if (offset > child->drag_allocation.y && offset < offs)
+            {
+              *is_empty = FALSE;
+              DEBUG (("%d", count));
+              return lp->prev;
+            }
+        }
+
+      if (lp->next == NULL)
+        {
+          DEBUG (("empty last %d", count));
+          *is_empty = TRUE;
+          return lp;
+        }
+
+      count++;                  /* FIXME */
+    }
+
+  DEBUG (("nothing done."));
+
+  /* Make compiler happy.  */
+  *is_empty = TRUE;
+  return lp;
+}
+
+
+
+static void
+calc_prev_and_foll_space (GoDockBand *band)
+{
+  GtkWidget *widget;
+  GList *lp;
+
+  if (band->children == NULL)
+    return;
+
+  widget = GTK_WIDGET (band);
+
+  lp = next_if_floating (band, band->children);
+  if (lp != NULL)
+    {
+      GoDockBandChild *c;
+      guint prev_space, foll_space;
+
+      prev_space = 0;
+
+      while (1)
+        {
+          GList *next;
+
+          c = lp->data;
+          prev_space += c->real_offset;
+          c->prev_space = prev_space;
+
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            prev_space += (c->widget->allocation.width
+                           - c->widget->requisition.width);
+          else
+            prev_space += (c->widget->allocation.height
+                           - c->widget->requisition.height);
+
+          next = next_not_floating (band, lp);
+          if (next == NULL)
+            break;
+
+          lp = next;
+        }
+
+      if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+        foll_space = (widget->allocation.x + widget->allocation.width
+                      - (c->widget->allocation.x
+                         + c->widget->requisition.width));
+      else
+        foll_space = (widget->allocation.y + widget->allocation.height
+                      - (c->widget->allocation.y
+                         + c->widget->requisition.height));
+
+      DEBUG(("foll_space %d", foll_space));
+
+      for (; lp != NULL; lp = prev_not_floating (band, lp))
+        {
+          c = lp->data;
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            foll_space += (c->widget->allocation.width
+                           - c->widget->requisition.width);
+          else
+            foll_space += (c->widget->allocation.height
+                           - c->widget->requisition.height);
+          c->foll_space = foll_space;
+
+          foll_space += c->real_offset;
+
+        }
+    }
+}
+
+
+
+static guint
+attempt_move_backward (GoDockBand *band, GList *child, guint amount)
+{
+  GList *lp;
+  guint effective_amount;
+
+  effective_amount = 0;
+
+  for (lp = prev_if_floating (band, child);
+       lp != NULL && amount > 0;
+       lp = prev_not_floating (band, lp))
+    {
+      GoDockBandChild *c;
+
+      c = lp->data;
+
+      if (c->drag_offset > amount)
+        {
+          c->real_offset = c->drag_offset - amount;
+          effective_amount += amount;
+          amount = 0;
+        }
+      else
+        {
+          c->real_offset = 0;
+          effective_amount += c->drag_offset;
+          amount -= c->drag_offset;
+        }
+      c->offset = c->real_offset;
+    }
+
+  return effective_amount;
+}
+
+static guint
+attempt_move_forward (GoDockBand *band, GList *child, guint requirement)
+{
+  GList *lp;
+  guint effective_amount;
+
+  effective_amount = 0;
+  for (lp = next_if_floating (band, child);
+       lp != NULL && requirement > 0;
+       lp = next_not_floating (band, lp))
+    {
+      GoDockBandChild *c;
+
+      c = lp->data;
+
+      DEBUG (("requirement = %d", requirement));
+      if (c->drag_offset > requirement)
+        {
+          c->real_offset = c->drag_offset - requirement;
+          effective_amount += requirement;
+          requirement = 0;
+        }
+      else
+        {
+          c->real_offset = 0;
+          effective_amount += c->drag_offset;
+          requirement -= c->drag_offset;
+        }
+      c->offset = c->real_offset;
+    }
+
+  return effective_amount;
+}
+
+
+
+static void
+reparent_if_needed (GoDockBand *band,
+                    GoDockItem *item,
+                    gint x, gint y)
+{
+  if (GTK_WIDGET (item)->parent != GTK_WIDGET (band))
+    {
+      go_dock_item_attach (item, GTK_WIDGET (band), x, y);
+
+      /* Reparenting causes the new floating child to be the first
+         item on the child list (see the `remove' method).  */
+      band->floating_child = band->children;
+
+      /* Reparenting will remove the grab, so we need to redo it.  */
+      go_dock_item_grab_pointer (item);
+    }
+}
+
+static gboolean
+dock_nonempty (GoDockBand *band,
+               GoDockItem *item,
+               GList *where,
+               gint x, gint y)
+{
+  GoDockBandChild *c, *floating_child;
+  GtkOrientation orig_item_orientation;
+  GtkRequisition item_requisition;
+  GList *lp, *next;
+  gint amount, requirement;
+
+  DEBUG (("entering function"));
+
+  if (! docking_allowed (band, item))
+    return FALSE;
+
+  if (where == NULL)
+    lp = band->children;
+  else
+    lp = next_not_floating (band, where);
+
+  c = lp->data;
+
+  orig_item_orientation = go_dock_item_get_orientation (item);
+  if (orig_item_orientation != band->orientation
+      && ! go_dock_item_set_orientation (item, band->orientation))
+    return FALSE;
+
+  go_dock_item_handle_size_request (item, &item_requisition);
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    requirement = item_requisition.width;
+  else
+    requirement = item_requisition.height;
+
+  if ((c->drag_prev_space + c->drag_foll_space) < requirement)
+    {
+      DEBUG (("not enough space %d %d",
+              c->drag_prev_space + c->drag_foll_space,
+              requirement));
+
+      /* Restore original orientation.  */
+      if (orig_item_orientation != band->orientation)
+        go_dock_item_set_orientation (item, orig_item_orientation);
+
+      return FALSE;
+    }
+
+  gtk_widget_size_request (GTK_WIDGET (item), &item_requisition);
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    requirement = item_requisition.width;
+  else
+    requirement = item_requisition.height;
+
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    amount = c->drag_allocation.x + c->drag_allocation.width - x;
+  else
+    amount = c->drag_allocation.y + c->drag_allocation.height - y;
+
+  DEBUG (("amount %d requirement %d", amount, requirement));
+  amount = attempt_move_backward (band, lp, amount);
+
+  if (requirement < amount)
+    requirement = 0;
+  else
+    {
+      requirement -= amount;
+      next = next_not_floating (band, lp);
+      if (next != NULL)
+        attempt_move_forward (band, next, requirement);
+    }
+
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    reparent_if_needed (band, item, x, GTK_WIDGET (band)->allocation.y);
+  else
+    reparent_if_needed (band, item, GTK_WIDGET (band)->allocation.x, y);
+
+  floating_child = band->floating_child->data;
+  floating_child->offset = floating_child->real_offset = 0;
+
+  if (band->floating_child->prev != lp)
+    {
+      DEBUG (("moving"));
+      band->children = g_list_remove_link (band->children,
+                                           band->floating_child);
+      band->floating_child->next = lp->next;
+      if (band->floating_child->next != NULL)
+        band->floating_child->next->prev = band->floating_child;
+      band->floating_child->prev = lp;
+      lp->next = band->floating_child;
+    }
+
+  gtk_widget_queue_resize (floating_child->widget);
+
+  return TRUE;
+}
+
+static gboolean
+dock_empty (GoDockBand *band,
+            GoDockItem *item,
+            GList *where,
+            gint x, gint y)
+{
+  GoDockBandChild *floating_child;
+  GoDockBandChild *c1, *c2;
+  GtkOrientation orig_item_orientation;
+  GtkRequisition item_requisition;
+  GList *lp;
+  guint new_offset;
+  GtkWidget *item_widget;
+
+  DEBUG (("entering function"));
+
+  if (! docking_allowed (band, item))
+    return FALSE;
+
+  if (where != NULL)
+    {
+      lp = next_not_floating (band, where);
+
+      if (lp == NULL)
+        /* Extreme right is a special case.  */
+        return dock_empty_right (band, item, where, x, y);
+
+      c1 = where->data;
+    }
+  else
+    {
+      c1 = NULL;
+      lp = next_if_floating (band, band->children);
+
+      if (lp == NULL)
+        {
+          /* Only one floating element.  Easy.  */
+          GoDockBandChild *c;
+
+          if (! go_dock_item_set_orientation (item, band->orientation))
+            return FALSE;
+
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            reparent_if_needed (band, item,
+                                x, GTK_WIDGET (band)->allocation.y);
+          else
+            reparent_if_needed (band, item,
+                                GTK_WIDGET (band)->allocation.x, y);
+
+          c = band->floating_child->data;
+
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            c->real_offset = x - GTK_WIDGET (band)->allocation.x;
+          else
+            c->real_offset = y - GTK_WIDGET (band)->allocation.y;
+          c->offset = c->real_offset;
+
+          DEBUG (("simple case offset %d", c->offset));
+
+          gtk_widget_queue_resize (c->widget);
+
+          return TRUE;
+        }
+    }
+
+  c2 = lp->data;
+
+  item_widget = GTK_WIDGET (item);
+
+  orig_item_orientation = go_dock_item_get_orientation (item);
+  if (! go_dock_item_set_orientation (item, band->orientation))
+    return FALSE;
+
+  /* Check whether there is enough space for the widget.  */
+  {
+    gint space;
+
+    if (c1 != NULL)
+      space = c1->drag_foll_space;
+    else
+      {
+        space = c2->real_offset + c2->drag_foll_space;
+        if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+          space += c2->widget->allocation.width - c2->widget->requisition.width;
+        else
+          space += c2->widget->allocation.height - c2->widget->requisition.height;
+      }
+
+    go_dock_item_handle_size_request (item, &item_requisition);
+    if (space < (band->orientation == GTK_ORIENTATION_HORIZONTAL
+                 ? item_requisition.width
+                 : item_requisition.height))
+      {
+        DEBUG (("not enough space %d", space));
+
+        /* Restore original orientation.  */
+        if (orig_item_orientation != band->orientation)
+          go_dock_item_set_orientation (item, orig_item_orientation);
+
+        return FALSE;
+      }
+
+  }
+
+  gtk_widget_size_request (item_widget, &item_requisition);
+
+  if (c1 == NULL)
+    {
+      if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+        new_offset = x - GTK_WIDGET (band)->allocation.x;
+      else
+        new_offset = y - GTK_WIDGET (band)->allocation.y;
+    }
+  else
+    {
+      if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+        new_offset = x - (c1->drag_allocation.x + c1->drag_allocation.width);
+      else
+        new_offset = y - (c1->drag_allocation.y + c1->drag_allocation.height);
+    }
+
+  DEBUG (("new_offset %d", new_offset));
+
+  if (c2->drag_offset >= (new_offset
+                          + (band->orientation == GTK_ORIENTATION_HORIZONTAL
+                             ? item_requisition.width
+                             : item_requisition.height)))
+    {
+      c2->real_offset = (c2->drag_offset
+                         - (new_offset
+                            + (band->orientation == GTK_ORIENTATION_HORIZONTAL
+                               ? item_requisition.width
+                               : item_requisition.height)));
+      c2->offset = c2->real_offset;
+    }
+  else
+    {
+      guint requisition;
+      GList *lp1;
+
+      requisition = new_offset + (band->orientation == GTK_ORIENTATION_HORIZONTAL
+                                  ? item_requisition.width
+                                  : item_requisition.height);
+
+      DEBUG (("Moving forward %d!", requisition));
+
+      for (lp1 = lp; lp1 != NULL && requisition > 0; )
+        {
+          GoDockBandChild *tmp = lp1->data;
+          GList *lp1next;
+
+          if (tmp->drag_offset > requisition)
+            {
+              tmp->real_offset = tmp->drag_offset - requisition;
+              requisition = 0;
+            }
+          else
+            {
+              requisition -= tmp->drag_offset;
+              tmp->real_offset = 0;
+            }
+          tmp->offset = tmp->real_offset;
+
+          DEBUG (("Offset %d (drag %d)", tmp->real_offset, tmp->drag_offset));
+          lp1next = next_not_floating (band, lp1);
+          if (lp1next == NULL)
+            {
+              if (tmp->drag_foll_space > requisition)
+                requisition = 0;
+              else
+                requisition -= tmp->drag_foll_space;
+            }
+
+          lp1 = lp1next;
+        }
+
+      if (requisition > 0)
+        new_offset -= requisition;
+    }
+
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    reparent_if_needed (band, item, x, GTK_WIDGET (band)->allocation.y);
+  else
+    reparent_if_needed (band, item, GTK_WIDGET (band)->allocation.x, y);
+
+  floating_child = (GoDockBandChild *) band->floating_child->data;
+  floating_child->real_offset = floating_child->offset = new_offset;
+
+  band->children = g_list_remove_link (band->children, band->floating_child);
+
+  if (where == NULL)
+    {
+      band->floating_child->next = band->children;
+      band->children->prev = band->floating_child;
+      band->children = band->floating_child;
+    }
+  else
+    {
+      band->floating_child->next = where->next;
+      band->floating_child->prev = where;
+      if (where->next != NULL)
+        where->next->prev = band->floating_child;
+      where->next = band->floating_child;
+    }
+
+  gtk_widget_queue_resize (((GoDockBandChild *) band->floating_child->data)->widget);
+
+  return TRUE;
+}
+
+static gboolean
+dock_empty_right (GoDockBand *band,
+                  GoDockItem *item,
+                  GList *where,
+                  gint x, gint y)
+{
+  GoDockBandChild *c, *floating_child;
+  GtkOrientation orig_item_orientation;
+  GtkRequisition item_requisition;
+  GtkWidget *item_widget;
+  gint new_offset;
+
+  g_return_val_if_fail (next_not_floating (band, where) == NULL, FALSE);
+  g_return_val_if_fail (band->floating_child != where, FALSE);
+
+  DEBUG (("entering function"));
+
+  if (! docking_allowed (band, item))
+    return FALSE;
+
+  item_widget = GTK_WIDGET (item);
+
+  c = where->data;
+
+  orig_item_orientation = go_dock_item_get_orientation (item);
+  if (orig_item_orientation != band->orientation
+      && ! go_dock_item_set_orientation (item, band->orientation))
+    return FALSE;
+
+  go_dock_item_handle_size_request (item, &item_requisition);
+  if ((c->drag_prev_space + c->drag_foll_space)
+      < (band->orientation == GTK_ORIENTATION_HORIZONTAL
+                 ? item_requisition.width
+                 : item_requisition.height))
+    {
+      DEBUG (("not enough space %d ", c->drag_prev_space+ c->drag_foll_space));
+
+      /* Restore original orientation.  */
+      if (orig_item_orientation != band->orientation)
+        go_dock_item_set_orientation (item, orig_item_orientation);
+
+      return FALSE;
+    }
+
+  gtk_widget_size_request (item_widget, &item_requisition);
+
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    new_offset = x - (c->widget->allocation.x + c->widget->allocation.width);
+  else
+    new_offset = y - (c->widget->allocation.y + c->widget->allocation.height);
+
+  DEBUG (("x %d y %d new_offset %d width %d foll_space %d",
+          x, y, new_offset, item_widget->allocation.width,
+          c->drag_foll_space));
+
+  if ((guint) (new_offset
+               + (band->orientation == GTK_ORIENTATION_HORIZONTAL
+                  ? item_requisition.width
+                  : item_requisition.height)) > c->drag_foll_space)
+    {
+      gint excess = (new_offset
+                     + (band->orientation == GTK_ORIENTATION_HORIZONTAL
+                        ? item_requisition.width
+                        : item_requisition.height)
+                     - c->drag_foll_space);
+
+      DEBUG (("excess %d new_offset %d", excess, new_offset));
+      if (excess < new_offset)
+        new_offset -= excess;
+      else
+        {
+          attempt_move_backward (band, where, excess - new_offset);
+          new_offset = 0;
+        }
+    }
+
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    reparent_if_needed (band, item,
+                        x, GTK_WIDGET (band)->allocation.y);
+  else
+    reparent_if_needed (band, item,
+                        GTK_WIDGET (band)->allocation.x, y);
+
+  floating_child = band->floating_child->data;
+  floating_child->offset = floating_child->real_offset = new_offset;
+
+  band->children = g_list_remove_link (band->children, band->floating_child);
+  where->next = band->floating_child;
+  band->floating_child->prev = where;
+
+  gtk_widget_queue_resize (floating_child->widget);
+
+  return TRUE;
+}
+
+/* Helper function.  */
+
+static gboolean
+check_guint_arg (GObject *object,
+		 const gchar *name,
+		 guint *value_return)
+{
+  GParamSpec *pspec;
+
+  g_return_val_if_fail (object != NULL, FALSE);
+
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (object), name);
+  if (pspec != NULL) {
+    GValue value = { 0, };
+
+    g_value_init (&value, G_TYPE_UINT);
+    g_object_get_property (G_OBJECT (object), name, &value);
+    *value_return = g_value_get_uint (&value);
+    g_value_unset (&value);
+
+    return TRUE;
+  } else
+    return FALSE;
+}
+
+
+
+/* Exported interface.  */
+
+/**
+ * go_dock_band_new:
+ *
+ * Description: Create a new GoDockBand widget.
+ *
+ * Returns: The new GoDockBand widget.
+ **/
+GtkWidget *
+go_dock_band_new (void)
+{
+  GoDockBand *band;
+
+  band = g_object_new (go_dock_band_get_type (), NULL);
+  return GTK_WIDGET (band);
+}
+
+/**
+ * go_dock_band_set_orientation:
+ * @band: A GoDockBand widget
+ * @orientation: New orientation for @band
+ *
+ * Description: Set the orientation for @band.
+ **/
+void
+go_dock_band_set_orientation (GoDockBand *band,
+                                 GtkOrientation orientation)
+{
+  g_return_if_fail (orientation == GTK_ORIENTATION_HORIZONTAL
+                    || orientation == GTK_ORIENTATION_VERTICAL);
+
+  band->orientation = orientation;
+}
+
+/**
+ * go_dock_band_get_orientation:
+ * @band: A GoDockBand widget
+ *
+ * Description: Retrieve the orientation of the specified @band.
+ *
+ * Returns: The orientation of @band.
+ **/
+GtkOrientation
+go_dock_band_get_orientation (GoDockBand *band)
+{
+  return band->orientation;
+}
+
+/**
+ * go_dock_band_insert:
+ * @band: A GoDockBand widget
+ * @child: The widget to be added to @band
+ * @offset: Offset from the previous item
+ * @position: Position within the @band
+ *
+ * Description: Add @child to @band at the specified @position, with
+ * the specified @offset from the previous item (or from the beginning
+ * of the band, if this is the first item).
+ *
+ * Returns: %TRUE if successful, %FALSE if the operation fails.
+ **/
+gboolean
+go_dock_band_insert (GoDockBand *band,
+                        GtkWidget *child,
+                        guint offset,
+                        gint position)
+{
+  GoDockBandChild *band_child;
+
+  DEBUG (("%08x", (unsigned int) band));
+
+  if (GO_IS_DOCK_ITEM (child)
+      && !docking_allowed (band, GO_DOCK_ITEM (child)))
+    return FALSE;
+
+  if (GO_IS_DOCK_ITEM (child) &&
+      !go_dock_item_set_orientation (GO_DOCK_ITEM (child),
+					 band->orientation))
+      return FALSE;
+
+  if (position < 0 || position > (gint) band->num_children)
+    position = band->num_children;
+
+  band_child = g_new (GoDockBandChild, 1);
+  band_child->widget = child;
+  band_child->offset = offset;
+  band_child->real_offset = 0;
+
+  if (position == 0)
+    band->children = g_list_prepend (band->children, band_child);
+  else if ((guint) position == band->num_children)
+    band->children = g_list_append (band->children, band_child);
+  else
+    {
+      GList *p;
+
+      p = g_list_nth (band->children, position);
+      g_list_prepend (p, band_child);
+    }
+
+  gtk_widget_set_parent (child, GTK_WIDGET (band));
+
+  if (GTK_WIDGET_REALIZED (child->parent))
+    gtk_widget_realize (child);
+
+  if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child))
+    {
+      if (GTK_WIDGET_MAPPED (child->parent))
+	gtk_widget_map (child);
+
+      gtk_widget_queue_resize (child);
+    }
+
+  band->num_children++;
+  DEBUG (("now num_children = %d", band->num_children));
+
+  return TRUE;
+}
+
+void
+go_dock_band_move_child (GoDockBand *band,
+                            GList *old_child,
+                            guint new_num)
+{
+  GList *children;
+  GList *lp;
+
+  children = band->children;
+
+  lp = old_child;
+
+  children = g_list_remove_link (children, lp);
+
+  children = g_list_insert (children, lp->data, new_num);
+
+  g_list_free (lp);
+
+  band->children = children;
+
+  /* FIXME */
+  gtk_widget_queue_resize (GTK_WIDGET (band));
+}
+
+/**
+ * go_dock_band_prepend:
+ * @band: A GoDockBand widget
+ * @child: A widget to be added to @band
+ * @offset: Offset (in pixels) from the beginning of the band
+ *
+ * Description: Add @child to @band with the specified @offset as the
+ * first element.
+ *
+ * Returns: %TRUE if successful, %FALSE if the operation fails.
+ **/
+gboolean
+go_dock_band_prepend (GoDockBand *band,
+                         GtkWidget *child,
+                         guint offset)
+{
+  return go_dock_band_insert (band, child, offset, 0);
+}
+
+/**
+ * go_dock_band_append:
+ * @band: A GoDockBand widget
+ * @child: A widget to be added to @band
+ * @offset: Offset (in pixels) from the last item of the band
+ *
+ * Description: Add @child to @band with the specified @offset as the
+ * last element.
+ *
+ * Returns: %TRUE if successful, %FALSE if the operation fails.
+ **/
+gboolean
+go_dock_band_append (GoDockBand *band,
+                        GtkWidget *child,
+                        guint offset)
+{
+  return go_dock_band_insert (band, child, offset, -1);
+}
+
+/**
+ * go_dock_band_set_child_offset:
+ * @band: A GoDockBand widget
+ * @child: Child of @band whose offset must be changed
+ * @offset: New offset value for @child
+ *
+ * Description: Set the offset for the specified @child of @band.
+ **/
+void
+go_dock_band_set_child_offset (GoDockBand *band,
+                                  GtkWidget *child,
+                                  guint offset)
+{
+  GList *p;
+
+  p = find_child (band, child);
+  if (p != NULL)
+    {
+      GoDockBandChild *c;
+
+      c = (GoDockBandChild *) p->data;
+      c->offset = offset;
+      gtk_widget_queue_resize (c->widget);
+    }
+}
+
+/**
+ * go_dock_band_get_child_offset:
+ * @band: A GoDockBand widget
+ * @child: Child of @band whose offset must be retrieved
+ *
+ * Description: Retrieve the offset of @child in @band.
+ *
+ * Returns: The offset of @child.
+ **/
+guint
+go_dock_band_get_child_offset (GoDockBand *band,
+                                  GtkWidget *child)
+{
+  GList *p;
+
+  p = find_child (band, child);
+  if (p != NULL)
+    {
+      GoDockBandChild *c;
+
+      c = (GoDockBandChild *) p->data;
+      return c->offset;
+    }
+
+  return 0;
+}
+
+/**
+ * go_dock_band_get_num_children:
+ * @band: A GoDockBand widget
+ *
+ * Description: Retrieve the number of children in @band.
+ *
+ * Returns: The number of children in @band.
+ **/
+guint
+go_dock_band_get_num_children (GoDockBand *band)
+{
+  return band->num_children;
+}
+
+
+
+/* Private interface.  */
+
+void
+go_dock_band_drag_begin (GoDockBand *band, GoDockItem *item)
+{
+  GList *lp;
+  GtkWidget *floating_widget;
+  GtkWidget *item_widget;
+  guint extra_offset = 0;
+
+  DEBUG (("entering function"));
+
+  item_widget = GTK_WIDGET (item);
+  floating_widget = NULL;
+
+  for (lp = band->children; lp != NULL;)
+    {
+      GoDockBandChild *c;
+
+      c = lp->data;
+
+      c->drag_allocation = c->widget->allocation;
+      c->drag_offset = c->real_offset + extra_offset;
+      c->drag_prev_space = c->prev_space;
+      c->drag_foll_space = c->foll_space;
+
+      c->offset = c->real_offset;
+
+      if (c->widget == item_widget)
+        {
+          band->floating_child = lp;
+          floating_widget = item_widget;
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            extra_offset = c->widget->allocation.width + c->real_offset;
+          else
+            extra_offset = c->widget->allocation.height + c->real_offset;
+        }
+      else
+        extra_offset = 0;
+
+      if (lp->next == NULL)
+        break;
+
+      lp = lp->next;
+    }
+
+  if (floating_widget != NULL)
+    {
+      for (lp = band->floating_child->prev; lp != NULL; lp = lp->prev)
+        {
+          GoDockBandChild *c;
+
+          c = lp->data;
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            c->drag_foll_space += item_widget->requisition.width;
+          else
+            c->drag_foll_space += item_widget->requisition.height;
+        }
+      for (lp = band->floating_child->next; lp != NULL; lp = lp->next)
+        {
+          GoDockBandChild *c;
+
+          c = lp->data;
+          if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+            c->drag_prev_space += item_widget->requisition.width;
+          else
+            c->drag_prev_space += item_widget->requisition.height;
+        }
+    }
+
+  band->doing_drag = TRUE;
+  band->drag_allocation = GTK_WIDGET (band)->allocation;
+}
+
+gboolean
+go_dock_band_drag_to (GoDockBand *band,
+                         GoDockItem *item,
+                         gint x, gint y)
+{
+  GtkAllocation *allocation;
+  GList *where;
+  gboolean is_empty;
+
+  g_return_val_if_fail (band->doing_drag, FALSE);
+
+  DEBUG (("%d %d", x, y));
+
+  allocation = & GTK_WIDGET (band)->allocation;
+
+  if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
+      if (x < allocation->x)
+        x = allocation->x;
+      if (x >= allocation->x + allocation->width)
+        x = allocation->x + allocation->width - 1;
+      where = find_where (band, x, &is_empty);
+    }
+  else
+    {
+      if (y < allocation->y)
+        y = allocation->y;
+      if (y >= allocation->y + allocation->height)
+        y = allocation->y + allocation->height - 1;
+      where = find_where (band, y, &is_empty);
+    }
+
+  {
+    GList *p;
+
+    for (p = next_if_floating (band, band->children);
+         p != NULL;
+         p = next_not_floating (band, p))
+      {
+        GoDockBandChild *c = p->data;
+
+        c->real_offset = c->offset = c->drag_offset;
+      }
+  }
+
+  if (is_empty)
+    return dock_empty (band, item, where, x, y);
+  else
+    return dock_nonempty (band, item, where, x, y);
+}
+
+void
+go_dock_band_drag_end (GoDockBand *band, GoDockItem *item)
+{
+  g_return_if_fail (band->doing_drag);
+
+  DEBUG (("entering function"));
+
+  if (band->floating_child != NULL)
+    {
+      GoDockBandChild *f;
+
+      /* Minimal sanity check.  */
+      f = (GoDockBandChild *) band->floating_child->data;
+      g_return_if_fail (f->widget == GTK_WIDGET (item));
+
+      gtk_widget_queue_resize (f->widget);
+      band->floating_child = NULL;
+    }
+
+  band->doing_drag = FALSE;
+  band->new_for_drag = FALSE;
+}
+
+
+
+/**
+ * go_dock_band_get_item_by_name:
+ * @band: A GoDockBand widget
+ * @name: Name of the child to be retrieved
+ * @position_return: Pointer to a variable holding the position of
+ * the named child
+ * @offset_return:  Pointer to a variable holding the offset of the
+ * named child
+ *
+ * Description: Retrieve a named item from @band, and return its
+ * position and offset in *@position_return and @offset_return.
+ *
+ * Return value: The child whose name is @name, or %NULL if no child
+ * of @band has such name.
+ **/
+GoDockItem *
+go_dock_band_get_item_by_name (GoDockBand *band,
+                                  const char *name,
+                                  guint *position_return,
+                                  guint *offset_return)
+{
+  guint pos;
+  GList *lp;
+
+  for (lp = band->children, pos = 0; lp != NULL; lp = lp->next, pos++)
+    {
+      GoDockBandChild *c;
+
+      c = lp->data;
+      if (GO_IS_DOCK_ITEM (c->widget))
+        {
+          GoDockItem *item;
+
+          item = GO_DOCK_ITEM (c->widget);
+          if (strcmp (item->name, name) == 0)
+            {
+              if (position_return != NULL)
+                *position_return = pos;
+              if (offset_return != NULL)
+                *offset_return = c->offset;
+              return item;
+            }
+        }
+    }
+
+  return NULL;
+}
+
+
+
+void
+go_dock_band_layout_add (GoDockBand *band,
+                            GoDockLayout *layout,
+                            GoDockPlacement placement,
+                            guint band_num)
+{
+  guint child_num;
+  GList *lp;
+
+  for (lp = band->children, child_num = 0;
+       lp != NULL;
+       lp = lp->next, child_num++)
+    {
+      GoDockBandChild *child;
+      GtkWidget *item;
+
+      child = lp->data;
+      item = child->widget;
+
+      if (GO_IS_DOCK_ITEM (item))
+        go_dock_layout_add_item (layout,
+                                    GO_DOCK_ITEM (item),
+                                    placement, band_num,
+                                    child_num, child->offset);
+    }
+}
+
+static GoDock *
+get_dock (GtkWidget *widget)
+{
+	while (widget && !GO_IS_DOCK (widget))
+		widget = widget->parent;
+
+	return (GoDock *) widget;
+}
+
+gint
+_bonobo_dock_band_handle_key_nav (GoDockBand *band,
+				  GoDockItem *item,
+				  GdkEventKey    *event)
+{
+  gboolean handled = FALSE;
+
+  g_return_val_if_fail (GO_IS_DOCK_BAND (band), FALSE);
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (item), FALSE);
+
+  if (event->state & GDK_CONTROL_MASK)
+    {
+      GList *l;
+      int cur_idx = 0;
+      int dest_idx;
+      int num_children = g_list_length (band->children);
+
+      for (l = band->children; l; l = l->next)
+        {
+          GoDockBandChild *child = l->data;
+          if (child->widget == (GtkWidget *)item)
+            break;
+          cur_idx++;
+	}
+
+      g_return_val_if_fail (l != NULL, FALSE);
+
+      dest_idx = cur_idx;
+      if (band->orientation == GTK_ORIENTATION_HORIZONTAL)
+        {
+	  if (event->keyval == GDK_Left)
+
+	      dest_idx--;
+	  if (event->keyval == GDK_Right)
+	      dest_idx++;
+	}
+      else
+        {
+	  if (event->keyval == GDK_Up)
+	      dest_idx--;
+	  if (event->keyval == GDK_Down)
+	      dest_idx++;
+	}
+
+      if (dest_idx >= num_children)
+	  dest_idx = num_children - 1;
+      if (dest_idx < 0)
+	  dest_idx = 0;
+      if (dest_idx != cur_idx)
+        {
+          handled = TRUE;
+	  go_dock_band_move_child (band, l, dest_idx);
+	}
+  }
+
+  if (!handled)
+    {
+      GoDock *dock = get_dock (GTK_WIDGET (band));
+
+      if (dock)
+        handled = _bonobo_dock_handle_key_nav (dock, band, item, event);
+    }
+
+  return handled;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-band.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,161 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* go-dock-band.h
+
+   Copyright (C) 1998 Free Software Foundation
+   All rights reserved.
+
+   The Gnome Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The Gnome Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 51 Franklin St, Fifth
+   Floor, Boston, MA  02110-1301 USA.
+
+   Author: Ettore Perazzoli <ettore at comm2000.it>
+*/
+/*
+  @NOTATION@
+*/
+
+#ifndef _GO_DOCK_BAND_H
+#define _GO_DOCK_BAND_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_TYPE_DOCK_BAND            (go_dock_band_get_type ())
+#define GO_DOCK_BAND(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_DOCK_BAND, GoDockBand))
+#define GO_DOCK_BAND_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GO_TYPE_DOCK_BAND, GoDockBandClass))
+#define GO_IS_DOCK_BAND(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_DOCK_BAND))
+#define GO_IS_DOCK_BAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GO_TYPE_DOCK_BAND))
+#define GO_DOCK_BAND_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GO_TYPE_DOCK_BAND, GoDockBandClass))
+
+typedef struct _GoDockBand GoDockBand;
+typedef struct _GoDockBandPrivate GoDockBandPrivate;
+typedef struct _GoDockBandClass GoDockBandClass;
+typedef struct _GoDockBandChild GoDockBandChild;
+
+#include <goffice/gui-utils/go-dock.h>
+#include <goffice/gui-utils/go-dock-item.h>
+#include <goffice/gui-utils/go-dock-layout.h>
+
+struct _GoDockBand
+{
+  GtkContainer container;
+
+  GList *children;              /* GoDockBandChild */
+
+  GList *floating_child;        /* GoDockBandChild */
+
+  /* This used to remember the allocation before the drag begin: it is
+     necessary to do so because we actually decide what docking action
+     happens depending on it, instead of using the current allocation
+     (which might be constantly changing while the user drags things
+     around).  */
+  GtkAllocation drag_allocation;
+
+  guint tot_offsets;
+
+  guint max_space_requisition : 16;
+  guint num_children : 8;
+  guint new_for_drag : 1;
+  guint doing_drag : 1;
+  guint orientation : 1;
+
+  /*< private >*/
+  GoDockBandPrivate *_priv;
+};
+
+struct _GoDockBandClass
+{
+  GtkContainerClass parent_class;
+
+  gpointer dummy[2];
+};
+
+struct _GoDockBandChild
+{
+  GtkWidget *widget;
+
+  GtkAllocation drag_allocation;
+
+  /* Maximum (requested) offset from the previous child.  */
+  guint16 offset;
+
+  /* Actual offset.  */
+  guint16 real_offset;
+
+  guint16 drag_offset;
+
+  guint16 prev_space, foll_space;
+  guint16 drag_prev_space, drag_foll_space;
+
+  guint16 max_space_requisition;
+};
+
+GtkWidget     *go_dock_band_new              (void);
+GtkType        go_dock_band_get_type         (void) G_GNUC_CONST;
+
+void           go_dock_band_set_orientation  (GoDockBand *band,
+                                                 GtkOrientation orientation);
+GtkOrientation go_dock_band_get_orientation  (GoDockBand *band);
+
+gboolean       go_dock_band_insert           (GoDockBand *band,
+                                                 GtkWidget *child,
+                                                 guint offset,
+                                                 gint position);
+gboolean       go_dock_band_prepend          (GoDockBand *band,
+                                                 GtkWidget *child,
+                                                 guint offset);
+gboolean       go_dock_band_append           (GoDockBand *band,
+                                                 GtkWidget *child,
+                                                 guint offset);
+
+void           go_dock_band_set_child_offset (GoDockBand *band,
+                                                 GtkWidget *child,
+                                                 guint offset);
+guint          go_dock_band_get_child_offset (GoDockBand *band,
+                                                 GtkWidget *child);
+void           go_dock_band_move_child       (GoDockBand *band,
+                                                 GList *old_child,
+                                                 guint new_num);
+
+guint          go_dock_band_get_num_children (GoDockBand *band);
+
+void           go_dock_band_drag_begin       (GoDockBand *band,
+                                                 GoDockItem *item);
+gboolean       go_dock_band_drag_to          (GoDockBand *band,
+                                                 GoDockItem *item,
+                                                 gint x, gint y);
+void           go_dock_band_drag_end         (GoDockBand *band,
+                                                 GoDockItem *item);
+
+GoDockItem *go_dock_band_get_item_by_name (GoDockBand *band,
+                                                 const char *name,
+                                                 guint *position_return,
+                                                 guint *offset_return);
+
+void           go_dock_band_layout_add       (GoDockBand *band,
+                                                 GoDockLayout *layout,
+                                                 GoDockPlacement placement,
+                                                 guint band_num);
+
+#if 1 /* defined(GO_UI_INTERNAL) */
+gint _bonobo_dock_band_handle_key_nav (GoDockBand *band,
+				      GoDockItem *item,
+				      GdkEventKey    *event);
+#endif /* GO_UI_INTERNAL */
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,364 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/**
+ * go-dock-item-grip.c
+ *
+ * Author:
+ *    Michael Meeks
+ *
+ * Copyright (C) 2002 Sun Microsystems, Inc.
+ */
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include "go-a11y.h"
+#include "go-dock-band.h"
+#include "go-dock-item-grip.h"
+#include <glib-object.h>
+#include <atk/atkstateset.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtkaccessible.h>
+#include <gtk/gtkbindings.h>
+#include <libgnome/gnome-macros.h>
+#include <glib/gi18n.h>
+#include <string.h>
+
+#define DRAG_HANDLE_SIZE 10
+
+enum {
+	ACTIVATE,
+	LAST_SIGNAL
+};
+static guint signals [LAST_SIGNAL];
+
+static AtkObjectClass *a11y_parent_class = NULL;
+
+GNOME_CLASS_BOILERPLATE (GoDockItemGrip, go_dock_item_grip,
+			 GtkWidget, GTK_TYPE_WIDGET)
+
+static gint
+go_dock_item_grip_expose (GtkWidget      *widget,
+			      GdkEventExpose *event)
+{
+	GdkRectangle *clip = &event->area;
+	GdkRectangle *rect = &widget->allocation;
+	GoDockItemGrip *grip = (GoDockItemGrip *) widget;
+	GtkShadowType shadow = GTK_SHADOW_OUT;
+
+	gtk_paint_handle (widget->style,
+			  widget->window,
+			  GTK_WIDGET_STATE (widget),
+			  shadow,
+			  clip, widget, "dockitem",
+			  rect->x, rect->y, rect->width, rect->height,
+			  (grip->item->orientation == GTK_ORIENTATION_HORIZONTAL)
+			    ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL);
+
+	if (GTK_WIDGET_HAS_FOCUS (widget)) {
+		gint focus_width;
+		gint focus_pad;
+		GdkRectangle focus;
+
+		gtk_widget_style_get (GTK_WIDGET (widget),
+				      "focus-line-width", &focus_width,
+				      "focus-padding", &focus_pad,
+				      NULL);
+
+		focus = *rect;
+		focus.x += widget->style->xthickness + focus_pad;
+		focus.y += widget->style->ythickness + focus_pad;
+		focus.width -= 2 * (widget->style->xthickness + focus_pad);
+		focus.height -= 2 * (widget->style->xthickness + focus_pad);
+
+		gtk_paint_focus (widget->style, widget->window,
+				 GTK_WIDGET_STATE (widget),
+				 clip, widget, "dockitem",
+				 focus.x, focus.y,
+				 focus.width, focus.height);
+	}
+
+	return FALSE;
+}
+
+static void
+grip_item_a11y_initialize (AtkObject *accessible, gpointer widget)
+{
+	accessible->role = ATK_ROLE_SEPARATOR;
+	atk_object_set_name (accessible, "grip");
+
+	a11y_parent_class->initialize (accessible, widget);
+}
+
+static AtkStateSet*
+grip_item_a11y_ref_state_set (AtkObject *accessible)
+{
+	AtkStateSet *state_set;
+	GoDockItemGrip *grip;
+	GtkWidget *widget;
+
+	state_set = a11y_parent_class->ref_state_set (accessible);
+	widget = GTK_ACCESSIBLE (accessible)->widget;
+	if (widget == NULL)
+		return state_set;
+
+	grip = GO_DOCK_ITEM_GRIP (widget);
+
+	if (grip == NULL)
+		return state_set;
+
+	if (grip->item->orientation == GTK_ORIENTATION_VERTICAL) {
+		atk_state_set_add_state (state_set, ATK_STATE_VERTICAL);
+		atk_state_set_remove_state (state_set, ATK_STATE_HORIZONTAL);
+	} else {
+		atk_state_set_add_state (state_set, ATK_STATE_HORIZONTAL);
+		atk_state_set_remove_state (state_set, ATK_STATE_VERTICAL);
+	}
+
+	return state_set;
+}
+
+static GoDock *
+get_dock (GtkWidget *widget)
+{
+	while (widget && !GO_IS_DOCK (widget))
+		widget = widget->parent;
+
+	return (GoDock *) widget;
+}
+
+static void
+go_dock_item_grip_dock (GoDockItemGrip *grip)
+{
+	GoDock *dock;
+	int placement;
+
+	g_return_if_fail (GO_IS_DOCK_ITEM_GRIP (grip));
+
+	if (!grip->item->is_floating)
+		return;
+
+	dock = get_dock (GTK_WIDGET (grip->item));
+	g_return_if_fail (dock != NULL);
+
+	go_dock_item_unfloat (grip->item);
+
+	g_object_ref (G_OBJECT (grip->item));
+	gtk_container_remove (
+		GTK_CONTAINER (
+			GTK_WIDGET (grip->item)->parent),
+		GTK_WIDGET (grip->item));
+
+	if (grip->item->orientation == GTK_ORIENTATION_HORIZONTAL)
+		placement = GO_DOCK_TOP;
+	else
+		placement = GO_DOCK_LEFT;
+
+	go_dock_add_item (
+		dock, grip->item,
+		placement, 2, 0, 0, TRUE);
+	g_object_unref (G_OBJECT (grip->item));
+}
+
+static void
+go_dock_item_grip_undock (GoDockItemGrip *grip)
+{
+	guint x, y;
+
+	g_return_if_fail (GO_IS_DOCK_ITEM_GRIP (grip));
+
+	if (grip->item->is_floating)
+		return;
+
+	gdk_window_get_position (
+		GTK_WIDGET (grip)->window, &x, &y);
+
+	go_dock_item_detach (grip->item, x, y);
+}
+
+enum {
+	ACTION_DOCK,
+	ACTION_UNDOCK,
+	ACTION_LAST
+};
+
+static gboolean
+go_dock_item_grip_do_action (AtkAction *action,
+				 gint       i)
+{
+	GoDockItemGrip *grip;
+	GtkWidget *widget;
+
+	widget = GTK_ACCESSIBLE (action)->widget;
+	if (widget == NULL)
+		return FALSE;
+
+	grip = GO_DOCK_ITEM_GRIP (widget);
+
+	if (grip->item->behavior & GO_DOCK_ITEM_BEH_LOCKED)
+		return FALSE;
+
+	switch (i) {
+	case ACTION_DOCK:
+		go_dock_item_grip_dock (grip);
+		break;
+	case ACTION_UNDOCK:
+		go_dock_item_grip_undock (grip);
+		break;
+	default:
+		break;
+	}
+	return FALSE;
+}
+
+static gint
+go_dock_item_grip_get_n_actions (AtkAction *action)
+{
+	GoDockItemGrip *grip;
+	GtkWidget *widget;
+
+	widget = GTK_ACCESSIBLE (action)->widget;
+	if (widget == NULL)
+		return 0;
+
+	grip = GO_DOCK_ITEM_GRIP (widget);
+
+	if (grip->item->behavior & GO_DOCK_ITEM_BEH_LOCKED)
+		return 0;
+	else
+		return ACTION_LAST;
+}
+
+static void
+grip_item_a11y_class_init (AtkObjectClass *klass)
+{
+	a11y_parent_class = g_type_class_peek_parent (klass);
+
+	klass->initialize = grip_item_a11y_initialize;
+	klass->ref_state_set = grip_item_a11y_ref_state_set;
+}
+
+static AtkObject *
+go_dock_item_grip_get_accessible (GtkWidget *widget)
+{
+#if 0
+	AtkObject *accessible;
+	static GType a11y_type = 0;
+
+	if (!a11y_type) {
+		AtkActionIface action_if;
+
+		a11y_type = go_a11y_get_derived_type_for (
+			GO_TYPE_DOCK_ITEM_GRIP,
+			NULL, grip_item_a11y_class_init);
+
+		memset (&action_if, 0, sizeof (AtkActionIface));
+		action_if.do_action = go_dock_item_grip_do_action;
+		action_if.get_n_actions = go_dock_item_grip_get_n_actions;
+
+		go_a11y_add_actions_interface (
+			a11y_type, &action_if,
+			ACTION_DOCK,   "dock",   _("Dock the toolbar"),    "<Enter>",
+			ACTION_UNDOCK, "undock", _("Undock the toolbar"), "<Enter>",
+			-1);
+	}
+
+	if ((accessible = go_a11y_get_atk_object (widget)))
+		return accessible;
+
+	return go_a11y_set_atk_object_ret (
+		widget, g_object_new (a11y_type, NULL));
+#else
+	return NULL;
+#endif
+}
+
+static void
+go_dock_item_grip_activate (GoDockItemGrip *grip)
+{
+	if (grip->item->is_floating)
+		go_dock_item_grip_dock (grip);
+	else
+		go_dock_item_grip_undock (grip);
+}
+
+static void
+go_dock_item_grip_instance_init (GoDockItemGrip *grip)
+{
+	GTK_WIDGET_SET_FLAGS (grip, GTK_CAN_FOCUS);
+	GTK_WIDGET_SET_FLAGS (grip, GTK_NO_WINDOW);
+}
+
+static GoDockBand *
+get_dock_band (GtkWidget *widget)
+{
+	while (widget && !GO_IS_DOCK_BAND (widget))
+		widget = widget->parent;
+
+	return (GoDockBand *) widget;
+}
+
+static gint
+go_dock_item_grip_key_press_event (GtkWidget   *widget,
+				       GdkEventKey *event)
+{
+  gboolean had_focus = GTK_WIDGET_HAS_FOCUS (widget);
+  GoDockBand *band = get_dock_band (widget);
+  GoDockItemGrip *grip = (GoDockItemGrip *) widget;
+
+  if (!grip->item->is_floating && band &&
+      _bonobo_dock_band_handle_key_nav (band, grip->item, event))
+    {
+      if (had_focus && !GTK_WIDGET_HAS_FOCUS (widget))
+        gtk_widget_grab_focus (widget);
+      return TRUE;
+    }
+
+  return GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event);
+}
+
+static void
+go_dock_item_grip_class_init (GoDockItemGripClass *klass)
+{
+	GtkBindingSet  *binding_set;
+	GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
+
+	parent_class = g_type_class_peek_parent (klass);
+
+	widget_class->expose_event = go_dock_item_grip_expose;
+#if 0
+	widget_class->get_accessible = go_dock_item_grip_get_accessible;
+#endif
+	widget_class->key_press_event = go_dock_item_grip_key_press_event;
+
+	klass->activate = go_dock_item_grip_activate;
+
+	binding_set = gtk_binding_set_by_class (klass);
+
+	signals[ACTIVATE] =
+		g_signal_new ("activate",
+			      G_TYPE_FROM_CLASS (klass),
+			      G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+			      G_STRUCT_OFFSET (
+				      GoDockItemGripClass, activate),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__VOID,
+			      G_TYPE_NONE, 0);
+	widget_class->activate_signal = signals[ACTIVATE];
+
+	gtk_binding_entry_add_signal (binding_set, GDK_Return, 0,
+				      "activate", 0);
+	gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0,
+				      "activate", 0);
+}
+
+GtkWidget *
+go_dock_item_grip_new (GoDockItem *item)
+{
+	GoDockItemGrip *grip = g_object_new (
+		GO_TYPE_DOCK_ITEM_GRIP, NULL);
+
+	grip->item = item;
+
+	return GTK_WIDGET (grip);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item-grip.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/**
+ * go-dock-item-grip.h
+ *
+ * Author:
+ *    Michael Meeks
+ *
+ * Copyright (C) 2002 Sun Microsystems, Inc.
+ */
+
+#ifndef _GO_DOCK_ITEM_GRIP_H_
+#define _GO_DOCK_ITEM_GRIP_H_
+
+#include <gtk/gtkwidget.h>
+#include <goffice/gui-utils/go-dock-item.h>
+
+G_BEGIN_DECLS
+
+#define GO_TYPE_DOCK_ITEM_GRIP            (go_dock_item_grip_get_type())
+#define GO_DOCK_ITEM_GRIP(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_DOCK_ITEM_GRIP, GoDockItemGrip))
+#define GO_DOCK_ITEM_GRIP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GO_TYPE_DOCK_ITEM_GRIP, GoDockItemGripClass))
+#define GO_IS_DOCK_ITEM_GRIP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_DOCK_ITEM_GRIP))
+#define GO_IS_DOCK_ITEM_GRIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GO_TYPE_DOCK_ITEM_GRIP))
+#define GO_DOCK_ITEM_GRIP_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GO_TYPE_DOCK_ITEM_GRIP, GoDockItemGripClass))
+
+typedef struct {
+	GtkWidget parent;
+
+	GoDockItem *item;
+} GoDockItemGrip;
+
+typedef struct {
+	GtkWidgetClass parent_class;
+
+	void (*activate) (GoDockItemGrip *grip);
+} GoDockItemGripClass;
+
+GType      go_dock_item_grip_get_type (void);
+GtkWidget *go_dock_item_grip_new      (GoDockItem *item);
+
+G_END_DECLS
+
+#endif /* _GO_DOCK_ITEM_GRIP_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1812 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* go-dock-item.c
+ *
+ * Copyright (C) 1998 Ettore Perazzoli
+ * Copyright (C) 1998 Elliot Lee
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ * All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+/*
+  @NOTATION@
+*/
+
+/*
+ * NB. this may look like a GtkBin, but it contains
+ * a GoDockItemGrip in addition to it's child,
+ * stranger things have been done in the name of
+ * bin-compat.
+ */
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include "go-dock-item.h"
+#include "go-dock-band.h"
+#include "go-dock-item-grip.h"
+#include "go-ui-marshal.h"
+
+#include <gdk/gdkx.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtksignal.h>
+#include <gtk/gtktoolbar.h>
+#include <gtk/gtkwindow.h>
+
+#include <glib/gi18n.h>
+#include <libgnome/gnome-macros.h>
+
+struct _GoDockItemPrivate
+{
+  GtkWidget *child;
+  GtkWidget *grip;
+
+  GtkWidget *float_window;
+  GtkWidget *float_window_box;
+  gboolean  float_window_hidden;
+};
+
+GNOME_CLASS_BOILERPLATE (GoDockItem, go_dock_item,
+			 GtkBin, GTK_TYPE_BIN);
+
+enum {
+  PROP_0,
+  PROP_SHADOW,
+  PROP_ORIENTATION,
+  PROP_PREFERRED_WIDTH,
+  PROP_PREFERRED_HEIGHT
+};
+
+#define DRAG_HANDLE_SIZE 10
+
+enum {
+  DOCK_DRAG_BEGIN,
+  DOCK_DRAG_END,
+  DOCK_DRAG_MOTION,
+  DOCK_DETACH,
+  ORIENTATION_CHANGED,
+  LAST_SIGNAL
+};
+
+/* this function is not public, but should be exported */
+void        go_dock_item_set_behavior   (GoDockItem         *dock_item,
+                                             GoDockItemBehavior  behavior);
+
+
+static guint     get_preferred_width   (GoDockItem *item);
+static guint     get_preferred_height  (GoDockItem *item);
+
+static void go_dock_item_set_property   (GObject            *object,
+					     guint               param_id,
+					     const GValue       *value,
+					     GParamSpec         *pspec);
+static void go_dock_item_get_property   (GObject            *object,
+					     guint               param_id,
+					     GValue             *value,
+					     GParamSpec         *pspec);
+static void go_dock_item_finalize       (GObject           *object);
+static void go_dock_item_map            (GtkWidget         *widget);
+static void go_dock_item_unmap          (GtkWidget         *widget);
+static void go_dock_item_realize        (GtkWidget         *widget);
+static void go_dock_item_unrealize      (GtkWidget         *widget);
+static void go_dock_item_style_set      (GtkWidget         *widget,
+					     GtkStyle          *previous_style);
+static void go_dock_item_size_request   (GtkWidget         *widget,
+					     GtkRequisition    *requisition);
+static void go_dock_item_size_allocate  (GtkWidget         *widget,
+					     GtkAllocation     *real_allocation);
+static void go_dock_item_add            (GtkContainer      *container,
+					     GtkWidget         *widget);
+static void go_dock_item_remove         (GtkContainer      *container,
+					     GtkWidget         *widget);
+static void go_dock_item_forall         (GtkContainer     *container,
+					     gboolean          include_internals,
+					     GtkCallback       callback,
+					     gpointer          callback_data);
+static void go_dock_item_paint          (GtkWidget         *widget,
+					     GdkEventExpose    *event);
+static gboolean go_dock_item_expose     (GtkWidget         *widget,
+					     GdkEventExpose    *event);
+static gboolean go_dock_item_button_changed (GtkWidget         *widget,
+						 GdkEventButton    *event);
+static gboolean go_dock_item_motion     (GtkWidget         *widget,
+					     GdkEventMotion    *event);
+
+static void go_dock_item_float_window_size_request (GtkWidget *widget, GtkRequisition *requisition, gpointer data);
+static void go_dock_item_float_window_size_allocate (GtkWidget *widget, GtkAllocation *allocation, gpointer data);
+
+static gboolean go_dock_item_float_window_expose (GtkWidget *widget, GdkEventExpose *event, gpointer data);
+static gboolean go_dock_item_float_window_button_changed (GtkWidget *widget, GdkEventButton *event, gpointer data);
+static gboolean go_dock_item_float_window_motion (GtkWidget *widget, GdkEventMotion *event, gpointer data);
+
+static guint        dock_item_signals[LAST_SIGNAL] = { 0 };
+
+
+/* Helper functions.  */
+
+static gboolean
+check_guint_arg (GObject *object,
+		 const gchar *name,
+		 guint *value_return)
+{
+  GParamSpec *pspec;
+
+  g_return_val_if_fail (object != NULL, FALSE);
+
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (object), name);
+  if (pspec != NULL) {
+    GValue value = { 0, };
+
+    g_value_init (&value, G_TYPE_UINT);
+    g_object_get_property (G_OBJECT (object), name, &value);
+    *value_return = g_value_get_uint (&value);
+    g_value_unset (&value);
+
+    return TRUE;
+  } else
+    return FALSE;
+}
+
+static guint
+get_preferred_width (GoDockItem *dock_item)
+{
+  GtkWidget *child;
+  guint preferred_width;
+
+  child = dock_item->_priv->child;
+
+  if (!child)
+    return 0;
+
+  if (! check_guint_arg (G_OBJECT (child), "preferred_width", &preferred_width))
+    {
+      GtkRequisition child_requisition;
+
+      gtk_widget_get_child_requisition (child, &child_requisition);
+      preferred_width = child_requisition.width;
+    }
+
+  if (dock_item->orientation == GTK_ORIENTATION_HORIZONTAL)
+    preferred_width += GO_DOCK_ITEM_NOT_LOCKED (dock_item) ? DRAG_HANDLE_SIZE : 0;
+
+  preferred_width += GTK_CONTAINER (dock_item)->border_width * 2;
+
+  return preferred_width;
+}
+
+static guint
+get_preferred_height (GoDockItem *dock_item)
+{
+  GtkWidget *child;
+  guint preferred_height;
+
+  child = dock_item->_priv->child;
+
+  if (!child)
+    return 0;
+
+  if (! check_guint_arg (G_OBJECT (child), "preferred_height", &preferred_height))
+    {
+      GtkRequisition child_requisition;
+
+      gtk_widget_get_child_requisition (child, &child_requisition);
+      preferred_height = child_requisition.height;
+    }
+
+  if (dock_item->orientation == GTK_ORIENTATION_VERTICAL)
+    preferred_height += GO_DOCK_ITEM_NOT_LOCKED (dock_item) ? DRAG_HANDLE_SIZE : 0;
+
+  preferred_height += GTK_CONTAINER (dock_item)->border_width * 2;
+
+  return preferred_height;
+}
+
+static void
+go_dock_item_class_init (GoDockItemClass *klass)
+{
+  GObjectClass *gobject_class;
+  GtkWidgetClass *widget_class;
+  GtkContainerClass *container_class;
+
+  gobject_class = (GObjectClass *) klass;
+  widget_class = (GtkWidgetClass *) klass;
+  container_class = (GtkContainerClass *) klass;
+
+  gobject_class->set_property = go_dock_item_set_property;
+  gobject_class->get_property = go_dock_item_get_property;
+
+  g_object_class_install_property (
+	  gobject_class,
+	  PROP_SHADOW,
+	  g_param_spec_enum ("shadow",
+			     _("Shadow type"),
+			     _("Shadow type"),
+			     GTK_TYPE_SHADOW_TYPE,
+			     GTK_SHADOW_OUT,
+			     (G_PARAM_READABLE |
+			      G_PARAM_WRITABLE)));
+
+  g_object_class_install_property (
+	  gobject_class,
+	  PROP_ORIENTATION,
+	  g_param_spec_enum ("orientation",
+			     _("Orientation"),
+			     _("Orientation"),
+			     GTK_TYPE_ORIENTATION,
+			     GTK_ORIENTATION_HORIZONTAL,
+			     (G_PARAM_READABLE |
+			      G_PARAM_WRITABLE)));
+
+  g_object_class_install_property (
+	  gobject_class,
+	  PROP_PREFERRED_WIDTH,
+	  g_param_spec_uint ("preferred_width",
+			     _("Preferred width"),
+			     _("Preferred width"),
+			     0, G_MAXINT, 0,
+			     G_PARAM_READABLE));
+
+  g_object_class_install_property (
+	  gobject_class,
+	  PROP_PREFERRED_HEIGHT,
+	  g_param_spec_uint ("preferred_height",
+			     _("Preferred height"),
+			     _("Preferred height"),
+			     0, G_MAXINT, 0,
+			     G_PARAM_READABLE));
+
+  dock_item_signals[DOCK_DRAG_BEGIN] =
+	  g_signal_new ("dock_drag_begin",
+			G_TYPE_FROM_CLASS (gobject_class),
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GoDockItemClass,
+					 dock_drag_begin),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
+
+  dock_item_signals[DOCK_DRAG_MOTION] =
+	  g_signal_new ("dock_drag_motion",
+			G_TYPE_FROM_CLASS (gobject_class),
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GoDockItemClass, dock_drag_motion),
+			NULL, NULL,
+			go__VOID__INT_INT,
+			G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
+
+  dock_item_signals[DOCK_DRAG_END] =
+	  g_signal_new ("dock_drag_end",
+			G_TYPE_FROM_CLASS (gobject_class),
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GoDockItemClass, dock_drag_end),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
+
+  dock_item_signals[DOCK_DETACH] =
+	  g_signal_new ("dock_detach",
+			G_TYPE_FROM_CLASS (gobject_class),
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GoDockItemClass, dock_detach),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
+
+  dock_item_signals[ORIENTATION_CHANGED] =
+	  g_signal_new ("orientation_changed",
+			G_TYPE_FROM_CLASS (gobject_class),
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GoDockItemClass, orientation_changed),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__ENUM,
+			G_TYPE_NONE, 1, GTK_TYPE_ORIENTATION);
+
+  gobject_class->finalize = go_dock_item_finalize;
+
+  widget_class->map = go_dock_item_map;
+  widget_class->unmap = go_dock_item_unmap;
+  widget_class->realize = go_dock_item_realize;
+  widget_class->unrealize = go_dock_item_unrealize;
+  widget_class->style_set = go_dock_item_style_set;
+  widget_class->size_request = go_dock_item_size_request;
+  widget_class->size_allocate = go_dock_item_size_allocate;
+  widget_class->expose_event = go_dock_item_expose;
+  widget_class->button_press_event = go_dock_item_button_changed;
+  widget_class->button_release_event = go_dock_item_button_changed;
+  widget_class->motion_notify_event = go_dock_item_motion;
+
+  container_class->add = go_dock_item_add;
+  container_class->remove = go_dock_item_remove;
+  container_class->forall = go_dock_item_forall;
+}
+
+static void
+go_dock_item_instance_init (GoDockItem *dock_item)
+{
+  GTK_WIDGET_UNSET_FLAGS (dock_item, GTK_NO_WINDOW);
+
+  dock_item->_priv = g_new0 (GoDockItemPrivate, 1);
+
+  dock_item->_priv->grip = go_dock_item_grip_new (dock_item);
+  dock_item->_priv->float_window = NULL;
+  dock_item->_priv->float_window_hidden = FALSE;
+
+  gtk_widget_set_parent (dock_item->_priv->grip, GTK_WIDGET (dock_item));
+  gtk_widget_show (dock_item->_priv->grip);
+
+  dock_item->bin_window = NULL;
+  dock_item->float_window = NULL;
+  dock_item->shadow_type = GTK_SHADOW_OUT;
+
+  dock_item->orientation = GTK_ORIENTATION_HORIZONTAL;
+  dock_item->behavior = GO_DOCK_ITEM_BEH_NORMAL;
+
+  dock_item->float_window_mapped = FALSE;
+  dock_item->is_floating = FALSE;
+  dock_item->in_drag = FALSE;
+
+  dock_item->dragoff_x = 0;
+  dock_item->dragoff_y = 0;
+
+  dock_item->float_x = 0;
+  dock_item->float_y = 0;
+}
+
+static void
+go_dock_item_set_property (GObject            *object,
+			      guint               param_id,
+			      const GValue       *value,
+			      GParamSpec         *pspec)
+{
+  GoDockItem *dock_item;
+
+  g_return_if_fail (object != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (object));
+
+  dock_item = GO_DOCK_ITEM (object);
+
+  switch (param_id)
+    {
+    case PROP_SHADOW:
+      go_dock_item_set_shadow_type (dock_item, g_value_get_enum (value));
+      break;
+    case PROP_ORIENTATION:
+      go_dock_item_set_orientation (dock_item, g_value_get_enum (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+      break;
+    }
+}
+
+static void
+go_dock_item_get_property (GObject            *object,
+			      guint               param_id,
+			      GValue             *value,
+			      GParamSpec         *pspec)
+{
+  GoDockItem *dock_item;
+
+  g_return_if_fail (object != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (object));
+
+  dock_item = GO_DOCK_ITEM (object);
+
+  switch (param_id)
+    {
+    case PROP_SHADOW:
+      g_value_set_enum (value, go_dock_item_get_shadow_type (dock_item));
+      break;
+    case PROP_ORIENTATION:
+      g_value_set_enum (value, go_dock_item_get_orientation (dock_item));
+      break;
+    case PROP_PREFERRED_HEIGHT:
+      g_value_set_uint (value, get_preferred_height (dock_item));
+      break;
+    case PROP_PREFERRED_WIDTH:
+      g_value_set_uint (value, get_preferred_width (dock_item));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+      break;
+    }
+}
+
+static void
+go_dock_item_finalize (GObject *object)
+{
+  GoDockItem *di;
+
+  g_return_if_fail (object != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (object));
+
+  di = GO_DOCK_ITEM (object);
+
+  g_free (di->name);
+  di->name = NULL;
+
+  g_free (di->_priv);
+  di->_priv = NULL;
+
+  GNOME_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
+}
+
+static void
+go_dock_item_map (GtkWidget *widget)
+{
+  GtkBin *bin;
+  GoDockItem *di;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (widget));
+
+  GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);
+
+  bin = GTK_BIN (widget);
+  di = GO_DOCK_ITEM (widget);
+
+  gdk_window_show (di->bin_window);
+  if (! di->is_floating)
+    gdk_window_show (widget->window);
+
+  if (di->is_floating && !di->float_window_mapped)
+    go_dock_item_detach (di, di->float_x, di->float_y);
+
+  if (bin->child
+      && GTK_WIDGET_VISIBLE (bin->child)
+      && !GTK_WIDGET_MAPPED (bin->child))
+    gtk_widget_map (bin->child);
+
+  if (di->_priv->grip
+      && GTK_WIDGET_VISIBLE (di->_priv->grip)
+      && !GTK_WIDGET_MAPPED (di->_priv->grip))
+    gtk_widget_map (di->_priv->grip);
+}
+
+static void
+go_dock_item_unmap (GtkWidget *widget)
+{
+  GoDockItem *di;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (widget));
+
+  GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
+
+  di = GO_DOCK_ITEM (widget);
+
+  gdk_window_hide (widget->window);
+  if (di->float_window_mapped)
+    {
+      gtk_widget_hide (GTK_WIDGET (di->_priv->float_window));
+      di->float_window_mapped = FALSE;
+      di->_priv->float_window_hidden = TRUE;
+    }
+
+  if (di->_priv->grip)
+    gtk_widget_unmap (di->_priv->grip);
+}
+
+static void
+go_dock_item_realize (GtkWidget *widget)
+{
+  GdkWindowAttr attributes;
+  gint attributes_mask;
+  GoDockItem *di;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (widget));
+
+  di = GO_DOCK_ITEM (widget);
+
+  GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+
+  attributes.x = widget->allocation.x;
+  attributes.y = widget->allocation.y;
+  attributes.width = widget->allocation.width;
+  attributes.height = widget->allocation.height;
+  attributes.window_type = GDK_WINDOW_CHILD;
+  attributes.wclass = GDK_INPUT_OUTPUT;
+  attributes.visual = gtk_widget_get_visual (widget);
+  attributes.colormap = gtk_widget_get_colormap (widget);
+  attributes.event_mask = (gtk_widget_get_events (widget)
+			   | GDK_EXPOSURE_MASK);
+  attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+  widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
+  gdk_window_set_user_data (widget->window, widget);
+
+  attributes.x = 0;
+  attributes.y = 0;
+  attributes.width = widget->allocation.width;
+  attributes.height = widget->allocation.height;
+  attributes.window_type = GDK_WINDOW_CHILD;
+  attributes.event_mask |= (gtk_widget_get_events (widget) |
+			    GDK_EXPOSURE_MASK |
+			    GDK_BUTTON1_MOTION_MASK |
+			    GDK_POINTER_MOTION_HINT_MASK |
+			    GDK_BUTTON_PRESS_MASK |
+			    GDK_BUTTON_RELEASE_MASK |
+	                    GDK_KEY_PRESS_MASK);
+  attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+  di->bin_window = gdk_window_new (widget->window, &attributes, attributes_mask);
+  gdk_window_set_user_data (di->bin_window, widget);
+
+  if (GTK_BIN (di)->child)
+    gtk_widget_set_parent_window (GTK_BIN (di)->child, di->bin_window);
+
+  gtk_widget_set_parent_window (di->_priv->grip, di->bin_window);
+
+  di->_priv->float_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_screen (GTK_WINDOW (di->_priv->float_window), gtk_widget_get_screen (widget));
+  gtk_window_set_decorated (GTK_WINDOW (di->_priv->float_window), FALSE);
+
+  g_signal_connect (di->_priv->float_window, "size_allocate",
+		    G_CALLBACK (go_dock_item_float_window_size_allocate),
+		    di);
+
+  g_signal_connect (di->_priv->float_window, "size_request",
+		    G_CALLBACK (go_dock_item_float_window_size_request),
+		    di);
+  g_signal_connect (di->_priv->float_window, "expose_event",
+		    G_CALLBACK (go_dock_item_float_window_expose),
+		    di);
+
+  g_signal_connect (di->_priv->float_window, "button_press_event",
+		    G_CALLBACK (go_dock_item_float_window_button_changed),
+		    di);
+
+  g_signal_connect (di->_priv->float_window, "button_release_event",
+		    G_CALLBACK (go_dock_item_float_window_button_changed),
+		    di);
+
+  g_signal_connect (di->_priv->float_window, "motion_notify_event",
+		    G_CALLBACK (go_dock_item_float_window_motion),
+		    di);
+
+  widget->style = gtk_style_attach (widget->style, widget->window);
+  gtk_style_set_background (widget->style, widget->window, GTK_WIDGET_STATE (di));
+  gtk_style_set_background (widget->style, di->bin_window, GTK_WIDGET_STATE (di));
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+
+  if (di->is_floating)
+    go_dock_item_detach (di, di->float_x, di->float_y);
+}
+
+static void
+go_dock_item_unrealize (GtkWidget *widget)
+{
+  GoDockItem *di;
+  GoDockItemPrivate *priv;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (widget));
+
+  di = GO_DOCK_ITEM (widget);
+  priv = di->_priv;
+
+  gdk_window_set_user_data (di->bin_window, NULL);
+  gdk_window_destroy (di->bin_window);
+  di->bin_window = NULL;
+
+  if (di->_priv->float_window_hidden)
+     di->float_window_mapped = TRUE;
+
+  if (di->float_window_mapped)
+    go_dock_item_unfloat (di);
+
+  gtk_widget_destroy (GTK_WIDGET (di->_priv->float_window));
+  di->_priv->float_window = NULL;
+
+  GNOME_CALL_PARENT (GTK_WIDGET_CLASS, unrealize, (widget));
+}
+
+static void
+go_dock_item_style_set (GtkWidget *widget,
+                           GtkStyle  *previous_style)
+{
+  GoDockItem *di;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (widget));
+
+  di = GO_DOCK_ITEM (widget);
+
+  if (GTK_WIDGET_REALIZED (widget) &&
+      !GTK_WIDGET_NO_WINDOW (widget))
+    {
+      gtk_style_set_background (widget->style, widget->window,
+                                widget->state);
+      gtk_style_set_background (widget->style, di->bin_window, widget->state);
+      if (GTK_WIDGET_DRAWABLE (widget))
+	gdk_window_clear (widget->window);
+    }
+}
+
+static void
+size_request (GtkWidget      *widget,
+	      GtkRequisition *requisition,
+	      GoDockItem *dock_item)
+{
+
+  GtkBin  *bin;
+  GtkRequisition child_requisition;
+
+  bin = GTK_BIN (widget);
+
+  /* If our child is not visible, we still request its size, since
+     we won't have any useful hint for our size otherwise.  */
+  if (bin->child != NULL)
+    gtk_widget_size_request (bin->child, &child_requisition);
+  else
+    {
+      child_requisition.width = 0;
+      child_requisition.height = 0;
+    }
+
+  if (dock_item->orientation == GTK_ORIENTATION_HORIZONTAL)
+    {
+      requisition->width =
+        GO_DOCK_ITEM_NOT_LOCKED (dock_item) ? DRAG_HANDLE_SIZE : 0;
+      if (bin->child != NULL)
+        {
+          requisition->width += child_requisition.width;
+          requisition->height = child_requisition.height;
+        }
+      else
+        requisition->height = 0;
+    }
+  else
+    {
+      requisition->height =
+        GO_DOCK_ITEM_NOT_LOCKED (dock_item) ? DRAG_HANDLE_SIZE : 0;
+      if (bin->child != NULL)
+        {
+          requisition->width = child_requisition.width;
+          requisition->height += child_requisition.height;
+        }
+      else
+        requisition->width = 0;
+    }
+
+  requisition->width += GTK_CONTAINER (widget)->border_width * 2;
+  requisition->height += GTK_CONTAINER (widget)->border_width * 2;
+}
+
+static void
+go_dock_item_size_request (GtkWidget *widget,
+			       GtkRequisition *requisition)
+{
+
+  GoDockItem *dock_item;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (widget));
+  g_return_if_fail (requisition != NULL);
+
+  dock_item = GO_DOCK_ITEM (widget);
+
+  size_request (widget, requisition, dock_item);
+
+}
+
+static void
+go_dock_item_float_window_size_request (GtkWidget *widget,
+					    GtkRequisition *requisition,
+					    gpointer data)
+{
+  GoDockItem *dock_item;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (requisition != NULL);
+
+  dock_item = GO_DOCK_ITEM (data);
+
+  size_request (widget, requisition, dock_item);
+
+}
+
+static void
+grip_size_allocate (GtkWidget *widget,
+                    GtkAllocation *allocation,
+		    GtkAllocation *child_allocation,
+		    GtkWidget *grip,
+		    GoDockItem *di)
+{
+  GtkWidget *child  = GTK_BIN (widget)->child;
+
+  GtkAllocation grip_alloc = *allocation;
+
+  grip_alloc.x = grip_alloc.y = 0;
+
+  if (di->orientation != GTK_ORIENTATION_HORIZONTAL) {
+
+     grip_alloc.height = DRAG_HANDLE_SIZE;
+     child_allocation->y += DRAG_HANDLE_SIZE;
+
+   } else {
+
+     grip_alloc.width = DRAG_HANDLE_SIZE;
+
+     if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+        child_allocation->x += DRAG_HANDLE_SIZE;
+     else {
+        GtkRequisition child_requisition;
+
+         gtk_widget_get_child_requisition (child, &child_requisition);
+         grip_alloc.x = child_requisition.width;
+      }
+    }
+
+    gtk_widget_size_allocate (grip, &grip_alloc);
+}
+
+static void
+go_dock_item_float_window_size_allocate (GtkWidget *widget,
+					     GtkAllocation *allocation,
+					     gpointer data)
+{
+  GtkBin *bin;
+  GoDockItem *di;
+  GtkRequisition child_requisition;
+  GtkAllocation child_allocation;
+  GtkWidget *child, *grip;
+  int border_width;
+  GList *list;
+
+  di = GO_DOCK_ITEM (data);
+
+  bin = GTK_BIN(widget);
+  child = bin->child;
+  border_width = GTK_CONTAINER (widget)->border_width;
+
+  /* Grip and InternalToolbar are the children */
+  list = gtk_container_get_children (GTK_CONTAINER (child));
+
+  grip = list->data;
+
+  child_allocation.x = border_width;
+  child_allocation.y = border_width;
+
+  if (GO_DOCK_ITEM_NOT_LOCKED(di))
+    grip_size_allocate (widget, allocation, &child_allocation, grip, di);
+
+  list = list->next;
+  child = list->data;
+
+  gtk_widget_get_child_requisition (child, &child_requisition);
+
+  child_allocation.width = child_requisition.width + 2 * border_width;
+  child_allocation.height = child_requisition.height + 2 * border_width;
+
+  gtk_widget_size_allocate (child, &child_allocation);
+
+}
+
+static void
+go_dock_item_size_allocate (GtkWidget     *widget,
+				GtkAllocation *allocation)
+{
+  GtkBin *bin;
+  GoDockItem *di;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (widget));
+  g_return_if_fail (allocation != NULL);
+
+  bin = GTK_BIN (widget);
+  di = GO_DOCK_ITEM (widget);
+
+  widget->allocation = *allocation;
+
+  if (GTK_WIDGET_REALIZED (widget))
+    gdk_window_move_resize (widget->window,
+                            widget->allocation.x,
+                            widget->allocation.y,
+                            widget->allocation.width,
+                            widget->allocation.height);
+
+  if (bin->child && GTK_WIDGET_VISIBLE (bin->child))
+    {
+      GtkWidget *child;
+      GtkAllocation child_allocation;
+      int border_width;
+
+      child = bin->child;
+      border_width = GTK_CONTAINER (widget)->border_width;
+
+      child_allocation.x = border_width;
+      child_allocation.y = border_width;
+
+      if (GO_DOCK_ITEM_NOT_LOCKED(di))
+        grip_size_allocate (widget, allocation, &child_allocation,di->_priv->grip, di);
+
+      if (!di->is_floating)
+        {
+           child_allocation.width = MAX (1, (int) widget->allocation.width - 2 * border_width);
+           child_allocation.height = MAX (1, (int) widget->allocation.height - 2 * border_width);
+
+           if (GO_DOCK_ITEM_NOT_LOCKED (di))
+             {
+               if (di->orientation == GTK_ORIENTATION_HORIZONTAL)
+		 child_allocation.width = MAX ((int) child_allocation.width - DRAG_HANDLE_SIZE, 1);
+               else
+		 child_allocation.height = MAX ((int) child_allocation.height - DRAG_HANDLE_SIZE, 1);
+             }
+
+	    if (GTK_WIDGET_REALIZED (di))
+	      gdk_window_move_resize (di->bin_window,
+				    0,
+				    0,
+				    widget->allocation.width,
+				    widget->allocation.height);
+          }
+
+        gtk_widget_size_allocate (bin->child, &child_allocation);
+
+       }
+}
+
+static void
+window_paint (GtkWidget *widget,
+	      GdkEventExpose *event,
+	      GoDockItem *di)
+{
+
+   GdkWindow *window;
+   GtkWidget *grip;
+   GtkContainer  *container;
+
+   if (!di->is_floating) {
+
+      window = di->bin_window;
+      container = GTK_CONTAINER (di);
+      grip = di->_priv->grip;
+
+   } else {
+
+      GtkBin *bin;
+      GtkWidget *child;
+      GList *list;
+
+      bin = GTK_BIN (widget);
+      child = bin->child;
+      list = gtk_container_get_children (GTK_CONTAINER (child));
+
+      window = child->window;
+      grip = list->data;
+      container = GTK_CONTAINER (child);
+   }
+
+   if (!event)
+    gtk_paint_box(widget->style,
+                  window,
+                  GTK_WIDGET_STATE (widget),
+                  di->shadow_type,
+                  NULL, widget,
+                  "dockitem_bin",
+                  0, 0, -1, -1);
+  else
+    gtk_paint_box(widget->style,
+                  window,
+                  GTK_WIDGET_STATE (widget),
+                  di->shadow_type,
+                  &event->area, widget,
+                  "dockitem_bin",
+                  0, 0, -1, -1);
+
+  if (GO_DOCK_ITEM_NOT_LOCKED (di))
+      gtk_container_propagate_expose (
+              container, grip , event);
+}
+
+static void
+go_dock_item_float_window_paint (GtkWidget *widget,
+				     GdkEventExpose *event,
+				     gpointer data)
+{
+  GoDockItem *di;
+
+  di = GO_DOCK_ITEM (data);
+
+  if (di->is_floating)
+    window_paint (widget, event, di);
+}
+
+static void
+go_dock_item_paint (GtkWidget      *widget,
+			GdkEventExpose *event)
+{
+  GoDockItem *di;
+
+  di = GO_DOCK_ITEM (widget);
+
+  if (!di->is_floating)
+    window_paint (widget, event, di);
+
+}
+
+static gboolean
+go_dock_item_float_window_expose (GtkWidget *widget,
+				      GdkEventExpose *event,
+				      gpointer data)
+{
+  g_return_val_if_fail (widget != NULL, FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  if (GTK_WIDGET_DRAWABLE (widget))
+    {
+      go_dock_item_float_window_paint (widget, event, data);
+
+      if (GTK_WIDGET_CLASS (parent_class)->expose_event)
+              return GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+    }
+
+  return FALSE;
+}
+
+static gboolean
+go_dock_item_expose (GtkWidget      *widget,
+			 GdkEventExpose *event)
+{
+  g_return_val_if_fail (widget != NULL, FALSE);
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  if (GTK_WIDGET_DRAWABLE (widget) && event->window != widget->window)
+    {
+      go_dock_item_paint (widget, event);
+
+      if (GTK_WIDGET_CLASS (parent_class)->expose_event)
+	      return GTK_WIDGET_CLASS (parent_class)->expose_event (widget, event);
+    }
+
+  return FALSE;
+}
+
+static void
+go_dock_item_drag_end (GoDockItem *di)
+{
+  gdk_display_pointer_ungrab
+	  (gtk_widget_get_display (GTK_WIDGET (di)),
+	   GDK_CURRENT_TIME);
+
+  di->in_drag = FALSE;
+
+  g_signal_emit (di, dock_item_signals [DOCK_DRAG_END], 0);
+}
+
+static gboolean
+button_changed (GtkWidget *widget,
+		GdkEventButton *event,
+		GoDockItem *di)
+{
+
+  gboolean event_handled = FALSE;
+
+  if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
+    {
+      GtkWidget *child;
+      gboolean in_handle;
+
+      if (!di->is_floating)
+        child = di->_priv->child;
+      else
+        child = GTK_WIDGET (go_dock_item_get_child (di));
+
+      switch (di->orientation)
+	{
+	case GTK_ORIENTATION_HORIZONTAL:
+	  if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+	    in_handle = event->x < DRAG_HANDLE_SIZE;
+	  else
+	    in_handle = event->x > widget->allocation.width - DRAG_HANDLE_SIZE;
+	  break;
+	case GTK_ORIENTATION_VERTICAL:
+	  in_handle = event->y < DRAG_HANDLE_SIZE;
+	  break;
+	default:
+	  in_handle = FALSE;
+	  break;
+	}
+
+      if (!child)
+	{
+	  in_handle = FALSE;
+	  event_handled = TRUE;
+	}
+
+      if (in_handle)
+	{
+	  di->dragoff_x = event->x;
+	  di->dragoff_y = event->y;
+
+          go_dock_item_grab_pointer (di);
+
+          g_signal_emit (di , dock_item_signals[DOCK_DRAG_BEGIN], 0);
+
+	  event_handled = TRUE;
+	}
+    }
+  else if (event->type == GDK_BUTTON_RELEASE && di->in_drag)
+    {
+      go_dock_item_drag_end (di);
+      event_handled = TRUE;
+    }
+
+  return event_handled;
+}
+
+static gboolean
+go_dock_item_float_window_button_changed (GtkWidget *widget,
+					      GdkEventButton *event,
+					      gpointer data)
+{
+
+  GoDockItem *di;
+
+  g_return_val_if_fail (widget != NULL, FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  di = GO_DOCK_ITEM (data);
+
+  if (!GO_DOCK_ITEM_NOT_LOCKED(di))
+    return FALSE;
+
+  return button_changed (widget, event, di);
+
+}
+
+static gboolean
+go_dock_item_button_changed (GtkWidget      *widget,
+                                GdkEventButton *event)
+{
+  GoDockItem *di;
+
+  g_return_val_if_fail (widget != NULL, FALSE);
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  di = GO_DOCK_ITEM (widget);
+
+  if (event->window != di->bin_window)
+    return FALSE;
+
+  if (!GO_DOCK_ITEM_NOT_LOCKED(widget))
+    return FALSE;
+
+  return button_changed (widget, event, di);
+
+}
+
+static gboolean
+widget_motion (GtkWidget *widget,
+	       GdkEventMotion *event,
+	       GoDockItem *di)
+{
+  GdkWindow *root_window;
+  gint new_x, new_y;
+
+  root_window = gdk_screen_get_root_window
+	  (gdk_drawable_get_screen (GDK_DRAWABLE (event->window)));
+
+  gdk_window_get_pointer (root_window, &new_x, &new_y, NULL);
+
+  new_x -= di->dragoff_x;
+  new_y -= di->dragoff_y;
+
+  g_signal_emit (GTK_WIDGET (di), dock_item_signals[DOCK_DRAG_MOTION], 0,
+		 new_x, new_y);
+
+  return TRUE;
+}
+
+static gboolean
+go_dock_item_float_window_motion (GtkWidget *widget,
+				      GdkEventMotion *event,
+				      gpointer data)
+{
+  GoDockItem *di;
+
+  g_return_val_if_fail (widget != NULL, FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  di = GO_DOCK_ITEM (data);
+
+  if (!di->in_drag)
+    return FALSE;
+
+  return widget_motion (widget, event, di);
+}
+
+static gboolean
+go_dock_item_motion (GtkWidget      *widget,
+			 GdkEventMotion *event)
+{
+  GoDockItem *di;
+
+  g_return_val_if_fail (widget != NULL, FALSE);
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  di = GO_DOCK_ITEM (widget);
+
+  if (!di->in_drag)
+    return FALSE;
+
+  if (event->window != di->bin_window)
+    return FALSE;
+
+  return widget_motion (widget, event, di);
+}
+
+static void
+go_dock_item_add (GtkContainer *container,
+		      GtkWidget    *widget)
+{
+  GoDockItem *dock_item;
+  GoDockItemPrivate *priv;
+  GParamSpec *pspec;
+
+  dock_item = GO_DOCK_ITEM (container);
+  priv = dock_item->_priv;
+
+  g_return_if_fail (GO_IS_DOCK_ITEM (container));
+
+  /*  Is this needed ? We hit this assertion when
+      calling from go_dock_item_unfloat()
+  */
+
+  g_return_if_fail (GTK_BIN (container)->child == NULL);
+  g_assert (priv->child == NULL);
+
+  g_return_if_fail (widget->parent == NULL);
+
+  /* Claim the base reference to the widget, so that it doesn't get owned by the
+   * floating window.
+   */
+  g_object_ref (widget);
+  gtk_object_sink (GTK_OBJECT (widget));
+
+  gtk_widget_set_parent_window (widget, dock_item->bin_window);
+  dock_item->_priv->child = widget;
+  GNOME_CALL_PARENT (GTK_CONTAINER_CLASS, add, (container, widget));
+
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (widget),
+					"orientation");
+  if (pspec != NULL) {
+    GValue value = { 0, };
+
+    g_value_init (&value, GTK_TYPE_ORIENTATION);
+    g_value_set_enum (&value, dock_item->orientation);
+    g_object_set_property (G_OBJECT (widget), "orientation", &value);
+    g_value_unset (&value);
+  }
+}
+
+static void
+go_dock_item_set_floating (GoDockItem *item, gboolean val)
+{
+  item->is_floating = val;
+
+  /* If there is a child and it supports the 'is_floating' flag
+   * set that too.
+   */
+  if (item->bin.child != NULL &&
+      g_object_class_find_property (G_OBJECT_GET_CLASS (item->bin.child),
+				    "is_floating") != NULL)
+    {
+      GValue value = { 0, };
+      g_value_init (&value, G_TYPE_BOOLEAN);
+      g_value_set_boolean (&value, val);
+      g_object_set_property (G_OBJECT (item->bin.child), "is_floating", &value);
+      g_value_unset (&value);
+    }
+}
+
+static void
+go_dock_item_remove (GtkContainer *container,
+			 GtkWidget    *widget)
+{
+  GoDockItem *di;
+
+  g_return_if_fail (GO_IS_DOCK_ITEM (container));
+
+  di = GO_DOCK_ITEM (container);
+
+  if (widget == di->_priv->grip)
+    {
+      gboolean grip_was_visible;
+
+      grip_was_visible = GTK_WIDGET_VISIBLE (widget);
+
+      gtk_widget_unparent (widget);
+      di->_priv->grip = NULL;
+
+      if (grip_was_visible)
+	gtk_widget_queue_resize (GTK_WIDGET (di));
+
+      return;
+    }
+
+  g_return_if_fail (di->_priv->child == widget);
+  g_assert (di->_priv->child == di->bin.child);
+  g_object_unref (di->_priv->child);
+  di->_priv->child = NULL;
+
+  GNOME_CALL_PARENT (GTK_CONTAINER_CLASS,
+		     remove, (container, widget));
+
+}
+
+static void
+go_dock_item_forall (GtkContainer *container,
+			 gboolean      include_internals,
+			 GtkCallback   callback,
+			 gpointer      callback_data)
+{
+  GtkBin *bin = (GtkBin *) container;
+  GoDockItem *di = (GoDockItem *) container;
+
+  g_return_if_fail (callback != NULL);
+
+  if (di->float_window_mapped)
+    return; /* The owner of the widgets is the floating window, not the item */
+
+  if (di->_priv->grip)
+    callback (di->_priv->grip, callback_data);
+
+  if (bin->child)
+    callback (bin->child, callback_data);
+}
+
+/**
+ * go_dock_item_construct:
+ * @new: a #GoDockItem.
+ * @name: Name for the new item
+ * @behavior: Behavior for the new item
+ *
+ * Description: Constructs the @new GoDockItem named @name, with the
+ * specified @behavior.
+ *
+ * Returns: A new GoDockItem widget.
+ **/
+void
+go_dock_item_construct (GoDockItem *new,
+			   const gchar *name,
+			   GoDockItemBehavior behavior)
+{
+  g_return_if_fail (new != NULL);
+  g_return_if_fail (GO_IS_DOCK_ITEM (new));
+
+  new->name = g_strdup (name);
+  new->behavior = behavior;
+
+  if (behavior & GO_DOCK_ITEM_BEH_LOCKED)
+    {
+      gtk_widget_hide (new->_priv->grip);
+      GTK_WIDGET_UNSET_FLAGS (new->_priv->grip, GTK_CAN_FOCUS);
+    }
+}
+
+/**
+ * go_dock_item_new:
+ * @name: Name for the new item
+ * @behavior: Behavior for the new item
+ *
+ * Description: Create a new GoDockItem named @name, with the
+ * specified @behavior.
+ *
+ * Returns: A new GoDockItem widget.
+ **/
+GtkWidget *
+go_dock_item_new (const gchar *name,
+		      GoDockItemBehavior behavior)
+{
+  GoDockItem *new;
+
+  new = GO_DOCK_ITEM (g_object_new (go_dock_item_get_type (), NULL));
+
+  go_dock_item_construct (new, name, behavior);
+
+  return GTK_WIDGET (new);
+}
+
+/**
+ * go_dock_item_get_child:
+ * @item: A GoDockItem widget
+ *
+ * Description: Retrieve the child of @item.
+ *
+ * Returns: The child of @item.
+ **/
+GtkWidget *
+go_dock_item_get_child (GoDockItem *item)
+{
+    g_return_val_if_fail (GO_IS_DOCK_ITEM (item), NULL);
+
+  if (item->is_floating)
+    {
+
+      GList *list;
+      GtkWidget *child = GTK_BIN (GTK_WIDGET (item->_priv->float_window))->child;
+
+      list = gtk_container_get_children (GTK_CONTAINER (child));
+
+      while (list)
+       {
+            GtkWidget *widget = list->data;
+
+            if (GTK_IS_TOOLBAR (widget))
+                return widget;
+
+            list = list->next;
+       }
+       g_assert_not_reached ();
+    }
+
+   return GTK_BIN (item)->child;
+}
+
+/**
+ * go_dock_item_get_name:
+ * @item: A GoDockItem widget.
+ *
+ * Description: Retrieve the name of @item.
+ *
+ * Return value: The name of @item as a malloc()ed zero-terminated
+ * string.
+ **/
+gchar *
+go_dock_item_get_name (GoDockItem *item)
+{
+  return g_strdup (item->name);
+}
+
+/**
+ * go_dock_item_set_shadow_type:
+ * @dock_item: A GoDockItem widget
+ * @type: The shadow type for @dock_item
+ *
+ * Description: Set the shadow type for @dock_item.
+ **/
+void
+go_dock_item_set_shadow_type (GoDockItem *dock_item,
+				  GtkShadowType   type)
+{
+  g_return_if_fail (GO_IS_DOCK_ITEM (dock_item));
+
+  if (dock_item->shadow_type != type)
+    {
+      dock_item->shadow_type = type;
+
+      if (GTK_WIDGET_DRAWABLE (dock_item))
+        gtk_widget_queue_draw (GTK_WIDGET (dock_item));
+      gtk_widget_queue_resize (GTK_WIDGET (dock_item));
+    }
+}
+
+/**
+ * go_dock_item_get_shadow_type:
+ * @dock_item: A GoDockItem widget.
+ *
+ * Description: Retrieve the shadow type of @dock_item.
+ *
+ * Returns: @dock_item's shadow type.
+ **/
+GtkShadowType
+go_dock_item_get_shadow_type (GoDockItem  *dock_item)
+{
+  g_return_val_if_fail (dock_item != NULL, GTK_SHADOW_OUT);
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (dock_item), GTK_SHADOW_OUT);
+
+  return dock_item->shadow_type;
+}
+
+/**
+ * go_dock_item_set_orientation:
+ * @dock_item: A GoDockItem widget
+ * @orientation: New orientation for @dock_item
+ *
+ * Description: Set the orientation for @dock_item.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+gboolean
+go_dock_item_set_orientation (GoDockItem *dock_item,
+				  GtkOrientation  orientation)
+{
+  g_return_val_if_fail (dock_item != NULL, FALSE);
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (dock_item), FALSE);
+
+  if (dock_item->orientation != orientation)
+    {
+      if ((orientation == GTK_ORIENTATION_VERTICAL
+           && (dock_item->behavior & GO_DOCK_ITEM_BEH_NEVER_VERTICAL))
+          || (orientation == GTK_ORIENTATION_HORIZONTAL
+              && (dock_item->behavior & GO_DOCK_ITEM_BEH_NEVER_HORIZONTAL)))
+        return FALSE;
+
+      dock_item->orientation = orientation;
+
+      if (dock_item->bin.child != NULL) {
+	GValue value = { 0, };
+
+	g_value_init (&value, GTK_TYPE_ORIENTATION);
+	g_value_set_enum (&value, orientation);
+	g_object_set_property (G_OBJECT (dock_item->bin.child),
+			       "orientation", &value);
+	g_value_unset (&value);
+      }
+      if (GTK_WIDGET_DRAWABLE (dock_item))
+        gtk_widget_queue_draw (GTK_WIDGET (dock_item));
+      gtk_widget_queue_resize (GTK_WIDGET (dock_item));
+
+      g_signal_emit (dock_item, dock_item_signals[ORIENTATION_CHANGED], 0, orientation);
+    }
+
+  return TRUE;
+}
+
+/**
+ * go_dock_item_get_orientation:
+ * @dock_item: A GoDockItem widget.
+ *
+ * Description: Retrieve the orientation of @dock_item.
+ *
+ * Returns: The current orientation of @dock_item.
+ **/
+GtkOrientation
+go_dock_item_get_orientation (GoDockItem *dock_item)
+{
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (dock_item),
+                        GTK_ORIENTATION_HORIZONTAL);
+
+  return dock_item->orientation;
+}
+
+/**
+ * go_dock_item_set_behavior:
+ * @dock_item: A GoDockItem widget.
+ * @behavior: New behavior for @dock_item
+ *
+ * Description: Set the behavior for @dock_item.
+ */
+void
+go_dock_item_set_behavior (GoDockItem         *dock_item,
+                               GoDockItemBehavior  behavior)
+{
+  g_return_if_fail (GO_IS_DOCK_ITEM (dock_item));
+
+  if (dock_item->behavior == behavior)
+    return;
+
+  dock_item->behavior = behavior;
+
+  if (behavior & GO_DOCK_ITEM_BEH_LOCKED)
+    go_dock_item_set_locked (dock_item, TRUE);
+
+  if (behavior & GO_DOCK_ITEM_BEH_NEVER_FLOATING &&
+      dock_item->is_floating)
+    go_dock_item_unfloat (dock_item);
+
+  if (behavior & GO_DOCK_ITEM_BEH_NEVER_VERTICAL &&
+      dock_item->orientation == GTK_ORIENTATION_VERTICAL)
+    go_dock_item_set_orientation (dock_item, GTK_ORIENTATION_HORIZONTAL);
+
+  if (behavior & GO_DOCK_ITEM_BEH_NEVER_HORIZONTAL &&
+      dock_item->orientation == GTK_ORIENTATION_HORIZONTAL)
+    go_dock_item_set_orientation (dock_item, GTK_ORIENTATION_VERTICAL);
+
+  gtk_widget_queue_resize (GTK_WIDGET (dock_item));
+}
+
+/**
+ * go_dock_item_get_behavior:
+ * @dock_item: A GoDockItem widget.
+ *
+ * Description: Retrieve the behavior of @dock_item.
+ *
+ * Returns: The behavior of @dock_item.
+ **/
+GoDockItemBehavior
+go_dock_item_get_behavior (GoDockItem *dock_item)
+{
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (dock_item),
+                        GO_DOCK_ITEM_BEH_NORMAL);
+
+  return dock_item->behavior;
+}
+
+/* Private interface.  */
+
+void
+go_dock_item_set_locked (GoDockItem *dock_item,
+			     gboolean        locked)
+{
+  g_return_if_fail (GO_IS_DOCK_ITEM (dock_item));
+
+  if (locked)
+    {
+      if (!GO_DOCK_ITEM_NOT_LOCKED (dock_item))
+        return;
+
+      dock_item->behavior |= GO_DOCK_ITEM_BEH_LOCKED;
+      gtk_widget_hide (dock_item->_priv->grip);
+    }
+  else
+    {
+      if (GO_DOCK_ITEM_NOT_LOCKED (dock_item))
+        return;
+
+      dock_item->behavior &= ~GO_DOCK_ITEM_BEH_LOCKED;
+      gtk_widget_show (dock_item->_priv->grip);
+    }
+}
+
+void
+go_dock_item_grab_pointer (GoDockItem *item)
+{
+  GdkCursor *fleur;
+  GdkWindow *gdk_window;
+
+  g_assert (GO_IS_DOCK_ITEM (item));
+
+  item->in_drag = TRUE;
+
+  fleur = gdk_cursor_new_for_display
+	  (gtk_widget_get_display (GTK_WIDGET (item)),
+	   GDK_FLEUR);
+
+  if (item->is_floating) {
+        /* This is not working well...can drag only
+           in the small region of the grip and the first button.
+           To be precise, it just sucks that we can't get a decent
+           grab on the grip itself
+        */
+
+        gdk_window = GTK_WIDGET (item->_priv->float_window)->window;
+  } else  {
+        gdk_window = item->bin_window;
+  }
+  /* Hm, not sure this is the right thing to do, but it seems to work.  */
+  while (gdk_pointer_grab (gdk_window,
+                           FALSE,
+                           (GDK_BUTTON1_MOTION_MASK |
+                            GDK_POINTER_MOTION_HINT_MASK |
+                            GDK_BUTTON_RELEASE_MASK),
+                           NULL,
+                           fleur,
+                           GDK_CURRENT_TIME) != 0);
+
+
+  gdk_cursor_unref (fleur);
+}
+
+gboolean
+go_dock_item_detach (GoDockItem *item, gint x, gint y)
+{
+  GoDockItemPrivate *priv;
+  GtkWidget *widget;
+
+  priv = item->_priv;
+
+  if (item->behavior & GO_DOCK_ITEM_BEH_NEVER_FLOATING)
+    return FALSE;
+
+  item->float_x = x;
+  item->float_y = y;
+
+  go_dock_item_set_floating (item, TRUE);
+
+  if (!GTK_WIDGET_REALIZED (item))
+    return TRUE;
+
+  g_assert (priv->child != NULL);
+  g_assert (priv->grip != NULL);
+
+  if (!priv->float_window_hidden)
+    {
+      if (item->orientation == GTK_ORIENTATION_HORIZONTAL)
+        priv->float_window_box = gtk_vbox_new (FALSE, 0);
+      else
+        priv->float_window_box = gtk_hbox_new (FALSE, 0);
+
+   /*
+
+    <michael> the size allocate etc. stuff looked dubious to me
+    <michael> we shouldn't be overriding size_allocate really when
+              we re-parent the grip into the floating toolbar box
+    <michael> it should all just work in that case, since there's no
+              need to knobble the GTK_BIN stuff,
+    <arvind>  by not overriding, the grip is not allocated
+    <michael> hmm,
+    <michael> it should be a child of the container,
+    <michael> we should override,
+    <michael> but not do a signal connection for the float_window
+
+   */
+
+      gtk_container_add (GTK_CONTAINER (item->_priv->float_window), priv->float_window_box);
+
+      widget = priv->grip; /* container_remove() will make priv->grip NULL, so we save it here */
+      g_object_ref (priv->grip);
+      gtk_container_remove (GTK_CONTAINER (item), priv->grip);
+      priv->grip = widget;
+      gtk_box_pack_start (GTK_BOX (priv->float_window_box), priv->grip, FALSE, FALSE, 0);
+      g_object_unref (priv->grip);
+
+      widget = priv->child;
+      g_object_ref (priv->child);
+      gtk_container_remove (GTK_CONTAINER (item), priv->child);
+      priv->child = widget;
+      gtk_box_pack_start (GTK_BOX (priv->float_window_box), priv->child, FALSE, FALSE, 0);
+      g_object_unref (priv->child);
+    }
+
+  gtk_window_move (GTK_WINDOW (item->_priv->float_window), x, y);
+  gtk_widget_show_all (GTK_WIDGET (item->_priv->float_window));
+
+  item->float_window_mapped = TRUE;
+  item->_priv->float_window_hidden = FALSE;
+
+  gdk_window_hide (GTK_WIDGET (item)->window);
+  gtk_widget_queue_draw (GTK_WIDGET (item));
+
+  gtk_window_set_transient_for (GTK_WINDOW (item->_priv->float_window),
+                                (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (item)))));
+
+  g_signal_emit (item, dock_item_signals [DOCK_DETACH], 0);
+
+  return TRUE;
+}
+
+void
+go_dock_item_unfloat (GoDockItem *item)
+{
+  GoDockItemPrivate *priv;
+  gboolean is_realized;
+  GtkWidget *widget;
+
+  priv = item->_priv;
+
+  g_assert (item->float_window_mapped);
+  g_assert (priv->child != NULL);
+  g_assert (priv->grip != NULL);
+
+  is_realized = GTK_WIDGET_REALIZED (item);
+
+  /* Grip */
+  g_object_ref (priv->grip);
+  gtk_container_remove (GTK_CONTAINER (priv->float_window_box), priv->grip);
+
+  if (is_realized)
+    gtk_widget_set_parent_window (priv->grip, item->bin_window);
+
+  gtk_widget_set_parent (priv->grip, GTK_WIDGET (item));
+  g_object_unref (priv->grip);
+
+  /* Child */
+  widget = priv->child;
+  g_object_ref (widget);
+  g_assert (item->bin.child == NULL);
+  gtk_container_remove (GTK_CONTAINER (priv->float_window_box), widget);
+  priv->child = NULL;
+
+  if (is_realized)
+    gtk_widget_set_parent_window (widget, item->bin_window);
+
+  /* priv->child must be NULL at this point, or go_dock_item_add() barfs */
+  gtk_container_add (GTK_CONTAINER (item), widget);
+
+  g_assert (item->bin.child == widget);
+  g_assert (priv->child == widget);
+  g_object_unref (widget);
+
+  /* Window */
+
+  gtk_widget_destroy (priv->float_window_box);
+  priv->float_window_box = NULL;
+
+  gtk_widget_hide (GTK_WIDGET (item->_priv->float_window));
+  gdk_window_show (GTK_WIDGET (item)->window);
+
+  item->float_window_mapped = FALSE;
+  item->_priv->float_window_hidden = FALSE;
+
+  go_dock_item_set_floating (item, FALSE);
+
+  gtk_widget_queue_resize (GTK_WIDGET (item));
+}
+
+void
+go_dock_item_attach (GoDockItem *item,
+			 GtkWidget *parent,
+			 gint x, gint y)
+{
+  if (GTK_WIDGET (item)->parent != GTK_WIDGET (parent))
+    {
+      gdk_window_move_resize (GTK_WIDGET (item)->window, -1, -1, 0, 0);
+      g_object_ref (item);
+      gtk_container_remove (GTK_CONTAINER (GTK_WIDGET (item)->parent), GTK_WIDGET (item));
+      gtk_container_add (GTK_CONTAINER (parent), GTK_WIDGET (item));
+      g_object_unref (item);
+
+      if (item->is_floating)
+	go_dock_item_unfloat (item);
+
+      go_dock_item_grab_pointer (item);
+    }
+}
+
+void
+go_dock_item_drag_floating (GoDockItem *item, gint x, gint y)
+{
+  if (item->is_floating)
+    {
+      gtk_window_move (GTK_WINDOW (item->_priv->float_window), x, y);
+
+      item->float_x = x;
+      item->float_y = y;
+    }
+}
+
+void
+go_dock_item_handle_size_request (GoDockItem *item,
+                                     GtkRequisition *requisition)
+{
+  GtkBin *bin;
+  GtkContainer *container;
+
+  bin = GTK_BIN (item);
+  container = GTK_CONTAINER (item);
+
+  if (bin->child != NULL)
+    gtk_widget_size_request (bin->child, requisition);
+
+  if (item->orientation == GTK_ORIENTATION_HORIZONTAL)
+    requisition->width += DRAG_HANDLE_SIZE;
+  else
+    requisition->height += DRAG_HANDLE_SIZE;
+
+  requisition->width += container->border_width * 2;
+  requisition->height += container->border_width * 2;
+}
+
+void
+go_dock_item_get_floating_position (GoDockItem *item,
+					gint *x, gint *y)
+{
+  if (GTK_WIDGET_REALIZED (item) && item->is_floating)
+    gtk_window_get_position (GTK_WINDOW (item->_priv->float_window), x, y);
+  else
+    {
+      *x = item->float_x;
+      *y = item->float_y;
+    }
+}
+
+GtkWidget *
+go_dock_item_get_grip (GoDockItem *item)
+{
+  g_return_val_if_fail (GO_IS_DOCK_ITEM (item), NULL);
+
+  if (item->behavior & GO_DOCK_ITEM_BEH_LOCKED)
+    return NULL;
+  else
+    return item->_priv->grip;
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-item.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,164 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* WARNING ____ IMMATURE API ____ liable to change */
+
+/* go-dock-item.h
+ *
+ * Copyright (C) 1998 Ettore Perazzoli
+ * Copyright (C) 1998 Elliot Lee
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ * All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+/*
+  @NOTATION@
+*/
+
+#ifndef _GO_DOCK_ITEM_H
+#define _GO_DOCK_ITEM_H
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GO_TYPE_DOCK_ITEM            (go_dock_item_get_type())
+#define GO_DOCK_ITEM(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_DOCK_ITEM, GoDockItem))
+#define GO_DOCK_ITEM_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GO_TYPE_DOCK_ITEM, GoDockItemClass))
+#define GO_IS_DOCK_ITEM(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_DOCK_ITEM))
+#define GO_IS_DOCK_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GO_TYPE_DOCK_ITEM))
+#define GO_DOCK_ITEM_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GO_TYPE_DOCK_ITEM, GoDockItemClass))
+
+typedef enum
+{
+  GO_DOCK_ITEM_BEH_NORMAL = 0,
+  GO_DOCK_ITEM_BEH_EXCLUSIVE = 1 << 0,
+  GO_DOCK_ITEM_BEH_NEVER_FLOATING = 1 << 1,
+  GO_DOCK_ITEM_BEH_NEVER_VERTICAL = 1 << 2,
+  GO_DOCK_ITEM_BEH_NEVER_HORIZONTAL = 1 << 3,
+  GO_DOCK_ITEM_BEH_LOCKED = 1 << 4
+  /* MAINT: Update the size of the bit field in the GoDockItem structure if you add items to this */
+} GoDockItemBehavior;
+
+/* obsolete, for compatibility; don't use */
+#define GO_DOCK_ITEM_BEH_NEVER_DETACH GO_DOCK_ITEM_BEH_NEVER_FLOATING
+
+#define GO_DOCK_ITEM_NOT_LOCKED(x) (! (GO_DOCK_ITEM(x)->behavior \
+                                          & GO_DOCK_ITEM_BEH_LOCKED))
+
+typedef struct _GoDockItem        GoDockItem;
+typedef struct _GoDockItemPrivate GoDockItemPrivate;
+typedef struct _GoDockItemClass   GoDockItemClass;
+
+struct _GoDockItem
+{
+  GtkBin bin;
+
+  gchar                *name;
+
+  /* <private> */
+  GdkWindow            *bin_window; /* parent window for children */
+  GdkWindow            *float_window; /* always NULL */
+  GtkShadowType         shadow_type;
+
+  /* Start drag position (wrt widget->window).  */
+  gint16                  dragoff_x, dragoff_y;
+
+  /* Position of the floating window.  */
+  gint16                  float_x, float_y;
+
+  guint                 behavior : 5;
+  guint                 orientation : 1;
+
+  guint                 float_window_mapped : 1;
+  guint                 is_floating : 1;
+  guint                 in_drag : 1;
+  /* If TRUE, the pointer must be grabbed on "map_event".  */
+  guint                 grab_on_map_event : 1;
+
+  /*< private >*/
+  GoDockItemPrivate *_priv;
+};
+
+struct _GoDockItemClass
+{
+  GtkBinClass parent_class;
+
+  void (* dock_drag_begin) (GoDockItem *item);
+  void (* dock_drag_motion) (GoDockItem *item, gint x, gint y);
+  void (* dock_drag_end) (GoDockItem *item);
+  void (* dock_detach) (GoDockItem *item);
+  void (* orientation_changed) (GoDockItem *item, GtkOrientation new_orientation);
+
+  gpointer dummy[4];
+};
+
+/* Public methods.  */
+GtkType        go_dock_item_get_type        (void) G_GNUC_CONST;
+GtkWidget     *go_dock_item_new             (const gchar *name,
+                                                GoDockItemBehavior behavior);
+void           go_dock_item_construct       (GoDockItem *new_dock_item,
+						const gchar *name,
+						GoDockItemBehavior behavior);
+
+GtkWidget     *go_dock_item_get_child       (GoDockItem *dock_item);
+
+char          *go_dock_item_get_name        (GoDockItem *dock_item);
+
+void           go_dock_item_set_shadow_type (GoDockItem *dock_item,
+                                                GtkShadowType type);
+
+GtkShadowType  go_dock_item_get_shadow_type (GoDockItem *dock_item);
+
+gboolean       go_dock_item_set_orientation (GoDockItem *dock_item,
+                                                GtkOrientation orientation);
+
+GtkOrientation go_dock_item_get_orientation (GoDockItem *dock_item);
+
+GoDockItemBehavior
+               go_dock_item_get_behavior    (GoDockItem *dock_item);
+
+/* Private methods.  */
+#if 1 /* defined(GO_UI_INTERNAL) */
+void           go_dock_item_set_locked      (GoDockItem *dock_item,
+						 gboolean        locked);
+gboolean       go_dock_item_detach          (GoDockItem *item,
+						 gint x, gint y);
+
+void           go_dock_item_attach          (GoDockItem *item,
+						 GtkWidget *parent,
+						 gint x, gint y);
+void           go_dock_item_unfloat         (GoDockItem *item);
+
+void           go_dock_item_grab_pointer    (GoDockItem *item);
+
+void           go_dock_item_drag_floating   (GoDockItem *item,
+						 gint x, gint y);
+
+void           go_dock_item_handle_size_request
+                                               (GoDockItem *item,
+                                                GtkRequisition *requisition);
+
+void           go_dock_item_get_floating_position
+                                               (GoDockItem *item,
+                                                gint *x, gint *y);
+GtkWidget     *go_dock_item_get_grip       (GoDockItem *item);
+
+#endif /* GO_UI_INTERNAL */
+
+G_END_DECLS
+
+#endif /* _GO_DOCK_ITEM_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,611 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* go-dock-layout.c
+
+   Copyright (C) 1998 Free Software Foundation
+
+   All rights reserved.
+
+   The Gnome Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The Gnome Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+   Boston, MA  02110-1301 USA.
+
+   Author: Ettore Perazzoli <ettore at comm2000.it>
+*/
+/*
+  @NOTATION@
+*/
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include <stdio.h>
+
+#include "go-dock-layout.h"
+
+/* TODO: handle incorrect GO_DOCK_ITEM_BEH_EXCLUSIVE situations.  */
+
+struct _GoDockLayoutPrivate
+{
+	int dummy;
+	/* Nothing right now, needs to get filled with the private things */
+	/* XXX: When stuff is added, uncomment the allocation in the
+	 * go_dock_layout_init function! */
+};
+
+static GObjectClass *parent_class = NULL;
+
+
+
+static void   go_dock_layout_class_init   (GoDockLayoutClass  *class);
+
+static void   go_dock_layout_instance_init(GoDockLayout *layout);
+
+static void   go_dock_layout_finalize     (GObject *object);
+
+static gint   item_compare_func              (gconstpointer a,
+                                              gconstpointer b);
+
+static gint   compare_item_by_name           (gconstpointer a,
+                                              gconstpointer b);
+
+static gint   compare_item_by_pointer        (gconstpointer a,
+                                              gconstpointer b);
+
+static GList *find                           (GoDockLayout *layout,
+                                              gconstpointer a,
+                                              GCompareFunc func);
+
+static void   remove_item                    (GoDockLayout *layout,
+                                              GList *list);
+
+
+static void
+go_dock_layout_class_init (GoDockLayoutClass  *class)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+
+  gobject_class->finalize = go_dock_layout_finalize;
+
+  parent_class = g_type_class_ref (G_TYPE_OBJECT);
+}
+
+static void
+go_dock_layout_instance_init (GoDockLayout *layout)
+{
+  layout->_priv = NULL;
+  /* XXX: when there is some private stuff enable this
+  layout->_priv = g_new0(GoDockLayoutPrivate, 1);
+  */
+  layout->items = NULL;
+}
+
+static void
+go_dock_layout_finalize (GObject *object)
+{
+  GoDockLayout *layout;
+
+  layout = GO_DOCK_LAYOUT (object);
+
+  while (layout->items)
+    remove_item (layout, layout->items);
+
+  /* Free the private structure */
+  g_free (layout->_priv);
+  layout->_priv = NULL;
+
+  if (G_OBJECT_CLASS (parent_class)->finalize)
+    (* G_OBJECT_CLASS (parent_class)->finalize) (object);
+}
+
+
+
+static gint
+item_compare_func (gconstpointer a,
+                   gconstpointer b)
+{
+  const GoDockLayoutItem *item_a, *item_b;
+
+  item_a = a;
+  item_b = b;
+
+  if (item_a->placement != item_b->placement)
+    return item_b->placement - item_a->placement;
+
+  if (item_a->placement == GO_DOCK_FLOATING)
+    return 0; /* Floating items don't need to be ordered.  */
+  else
+    {
+      if (item_a->position.docked.band_num != item_b->position.docked.band_num)
+        return (item_b->position.docked.band_num
+                - item_a->position.docked.band_num);
+
+      return (item_b->position.docked.band_position
+              - item_a->position.docked.band_position);
+    }
+}
+
+static gint
+compare_item_by_name (gconstpointer a, gconstpointer b)
+{
+  const GoDockItem *item;
+  const gchar *name;
+
+  item = b;
+  name = a;
+
+  return strcmp (name, item->name);
+}
+
+static gint
+compare_item_by_pointer (gconstpointer a, gconstpointer b)
+{
+  return a != b;
+}
+
+static GList *
+find (GoDockLayout *layout, gconstpointer data, GCompareFunc func)
+{
+  GList *p;
+
+  for (p = layout->items; p != NULL; p = p->next)
+    {
+      GoDockLayoutItem *item;
+
+      item = p->data;
+      if (! (* func) (data, item->item))
+        return p;
+    }
+
+  return NULL;
+}
+
+static void
+remove_item (GoDockLayout *layout,
+             GList *list)
+{
+  GoDockItem *item;
+
+  item = ((GoDockLayoutItem *) list->data)->item;
+
+  gtk_widget_unref (GTK_WIDGET (item));
+
+  layout->items = g_list_remove_link (layout->items, list);
+
+  g_free (list->data);
+  g_list_free (list);
+}
+
+
+
+GType
+go_dock_layout_get_type (void)
+{
+  static GType layout_type = 0;
+
+  if (layout_type == 0)
+    {
+      GTypeInfo layout_info = {
+	sizeof (GoDockLayoutClass),
+	NULL, NULL,
+	(GClassInitFunc)go_dock_layout_class_init,
+	NULL, NULL,
+	sizeof (GoDockLayout),
+	0,
+	(GInstanceInitFunc)go_dock_layout_instance_init
+      };
+
+      layout_type = g_type_register_static (G_TYPE_OBJECT, "GoDockLayout", &layout_info, 0);
+    }
+
+  return layout_type;
+}
+
+/**
+ * go_dock_layout_new:
+ *
+ * Description: Create a new #GoDockLayout widget.
+ *
+ * Returns: The new #GoDockLayout widget.
+ **/
+
+GoDockLayout *
+go_dock_layout_new (void)
+{
+  return GO_DOCK_LAYOUT (g_object_new (GO_TYPE_DOCK_LAYOUT, NULL));
+}
+
+/**
+ * go_dock_layout_add_item:
+ * @layout: A #GoDockLayout widget
+ * @item: The dock item to be added to @layout
+ * @placement: Placement of @item in @layout
+ * @band_num: Band number
+ * @band_position: Position within the band
+ * @offset: Distance from the previous element in the band
+ *
+ * Description: Add @item to @layout with the specified parameters.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+gboolean
+go_dock_layout_add_item (GoDockLayout *layout,
+                            GoDockItem *item,
+                            GoDockPlacement placement,
+                            gint band_num,
+                            gint band_position,
+                            gint offset)
+{
+  GoDockLayoutItem *new;
+
+  new = g_new (GoDockLayoutItem, 1);
+  new->item = item;
+  new->placement = placement;
+  new->position.docked.band_num = band_num;
+  new->position.docked.band_position = band_position;
+  new->position.docked.offset = offset;
+
+  layout->items = g_list_prepend (layout->items, new);
+
+  g_object_ref (item);
+
+  return TRUE;
+}
+
+/**
+ * go_dock_layout_add_floating_item:
+ * @layout: A #GoDockLayout widget
+ * @item: The dock item to be added to @layout
+ * @x: X-coordinate for the floating item
+ * @y: Y-coordinate for the floating item
+ * @orientation: Orientation for the floating item
+ *
+ * Description: Add @item to @layout as a floating item with the
+ * specified (@x, @y) position and @orientation.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+
+gboolean
+go_dock_layout_add_floating_item (GoDockLayout *layout,
+                                     GoDockItem *item,
+                                     gint x, gint y,
+                                     GtkOrientation orientation)
+{
+  GoDockLayoutItem *new;
+
+  new = g_new (GoDockLayoutItem, 1);
+  new->item = item;
+  new->placement = GO_DOCK_FLOATING;
+  new->position.floating.x = x;
+  new->position.floating.y = y;
+  new->position.floating.orientation = orientation;
+
+  layout->items = g_list_prepend (layout->items, new);
+
+  g_object_ref (item);
+
+  return TRUE;
+}
+
+/**
+ * go_dock_layout_get_item:
+ * @layout: A #GoDockLayout widget
+ * @item: The #GoDockItem to be retrieved
+ *
+ * Description: Retrieve a layout item.
+ *
+ * Returns: The retrieved #GoDockLayoutItem widget.
+ **/
+GoDockLayoutItem *
+go_dock_layout_get_item (GoDockLayout *layout,
+                            GoDockItem *item)
+{
+  GList *list;
+
+  list = find (layout, item, compare_item_by_pointer);
+
+  if (list == NULL)
+    return NULL;
+  else
+    return list->data;
+}
+
+/**
+ * go_dock_layout_get_item_by_name:
+ * @layout: A #GoDockLayout widget
+ * @name: Name of the item to be retrieved
+ *
+ * Description: Retrieve the dock item named @name.
+ *
+ * Returns: The named #GoDockLayoutItem widget.
+ **/
+GoDockLayoutItem *
+go_dock_layout_get_item_by_name (GoDockLayout *layout,
+                                    const gchar *name)
+{
+  GList *list;
+
+  list = find (layout, name, compare_item_by_name);
+
+  if (list == NULL)
+    return NULL;
+  else
+    return list->data;
+}
+
+/**
+ * go_dock_layout_remove_item:
+ * @layout: A #GoDockLayout widget
+ * @item: The #GoDockItem to be removed
+ *
+ * Description: Remove the specified @item from @layout.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+gboolean
+go_dock_layout_remove_item (GoDockLayout *layout,
+                               GoDockItem *item)
+{
+  GList *list;
+
+  list = find (layout, item, compare_item_by_pointer);
+  if (list == NULL)
+    return FALSE;
+
+  remove_item (layout, list);
+
+  return TRUE;
+}
+
+/**
+ * go_dock_layout_remove_item_by_name:
+ * @layout: A #GoDockLayout widget
+ * @name: Name of the #GoDockItem to be removed
+ *
+ * Description: Remove the item named @name from @layout.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+gboolean
+go_dock_layout_remove_item_by_name (GoDockLayout *layout,
+                                       const gchar *name)
+{
+  GList *list;
+
+  list = find (layout, name, compare_item_by_name);
+  if (list == NULL)
+    return FALSE;
+
+  remove_item (layout, list);
+
+  return TRUE;
+}
+
+
+
+/**
+ * go_dock_layout_add_to_dock:
+ * @layout: A #GoDockLayout widget
+ * @dock: The #GoDock widget the layout items must be added to
+ *
+ * Description: Add all the items in @layout to the specified @dock.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+gboolean
+go_dock_layout_add_to_dock (GoDockLayout *layout,
+                               GoDock *dock)
+{
+  GoDockLayoutItem *item;
+  GList *lp;
+  GoDockPlacement last_placement;
+  gint last_band_num;
+
+  if (layout->items == NULL)
+    return FALSE;
+
+  layout->items = g_list_sort (layout->items, item_compare_func);
+
+  item = layout->items->data;
+
+  last_placement = GO_DOCK_FLOATING;
+  last_band_num = 0;
+
+  for (lp = layout->items; lp != NULL; lp = lp->next)
+    {
+      item = lp->data;
+
+      if (item->placement == GO_DOCK_FLOATING)
+        {
+          go_dock_add_floating_item (dock,
+                                        item->item,
+                                        item->position.floating.x,
+                                        item->position.floating.y,
+                                        item->position.floating.orientation);
+        }
+      else
+        {
+          gboolean need_new;
+
+          if (last_placement != item->placement
+              || last_band_num != item->position.docked.band_num)
+            need_new = TRUE;
+          else
+            need_new = FALSE;
+
+          go_dock_add_item (dock,
+                               item->item,
+                               item->placement,
+                               0,
+                               0,
+                               item->position.docked.offset,
+                               need_new);
+
+          last_band_num = item->position.docked.band_num;
+          last_placement = item->placement;
+        }
+
+      gtk_widget_show (GTK_WIDGET (item->item));
+    }
+
+  return TRUE;
+}
+
+
+
+/* Layout string functions.  */
+
+/**
+ * go_dock_layout_create_string:
+ * @layout: A #GoDockLayout widget
+ *
+ * Description: Generate a string describing the layout in @layout.
+ *
+ * Returns: The (malloced) layout string for @layout.
+ **/
+gchar *
+go_dock_layout_create_string (GoDockLayout *layout)
+{
+  GList *lp;
+  guint tmp_count, tmp_alloc;
+  gchar **tmp;
+  gchar *retval;
+
+  if (layout->items == NULL)
+    return NULL;
+
+  tmp_alloc = 512;
+  tmp = g_new (gchar *, tmp_alloc);
+
+  tmp_count = 0;
+
+  for (lp = layout->items; lp != NULL; lp = lp->next)
+    {
+      GoDockLayoutItem *i;
+
+      i = lp->data;
+
+      if (tmp_alloc - tmp_count <= 2)
+        {
+          tmp_alloc *= 2;
+          tmp = g_renew (char *, tmp, tmp_alloc);
+        }
+
+      if (i->placement == GO_DOCK_FLOATING)
+        tmp[tmp_count] = g_strdup_printf ("%s\\%d,%d,%d,%d",
+                                          i->item->name,
+                                          (gint) i->placement,
+                                          i->position.floating.x,
+                                          i->position.floating.y,
+                                          i->position.floating.orientation);
+      else
+        tmp[tmp_count] = g_strdup_printf ("%s\\%d,%d,%d,%d",
+                                          i->item->name,
+                                          (gint) i->placement,
+                                          i->position.docked.band_num,
+                                          i->position.docked.band_position,
+                                          i->position.docked.offset);
+
+      tmp_count++;
+    }
+
+  tmp[tmp_count] = NULL;
+
+  retval = g_strjoinv ("\\", tmp);
+  g_strfreev (tmp);
+
+  return retval;
+}
+
+/**
+ * go_dock_layout_parse_string:
+ * @layout: A #GoDockLayout widget
+ * @string: A layout string to be parsed
+ *
+ * Description: Parse the layout string @string, and move around the
+ * items in @layout accordingly.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+gboolean
+go_dock_layout_parse_string (GoDockLayout *layout,
+				const gchar *string)
+{
+  gchar **tmp, **p;
+
+  if (string == NULL)
+    return FALSE;
+
+  tmp = g_strsplit (string, "\\", 0);
+  if (tmp == NULL)
+    return FALSE;
+
+  p = tmp;
+  while (*p != NULL)
+    {
+      GList *lp;
+
+      if (*(p + 1) == NULL)
+        {
+          g_strfreev (tmp);
+          return FALSE;
+        }
+
+      lp = find (layout, *p, compare_item_by_name);
+
+      if (lp != NULL)
+        {
+          GoDockLayoutItem *i;
+          gint p1, p2, p3, p4;
+
+          if (sscanf (*(p + 1), "%d,%d,%d,%d", &p1, &p2, &p3, &p4) != 4)
+            {
+              g_strfreev (tmp);
+              return FALSE;
+            }
+
+          if (p1 != (gint) GO_DOCK_TOP
+              && p1 != (gint) GO_DOCK_BOTTOM
+              && p1 != (gint) GO_DOCK_LEFT
+              && p1 != (gint) GO_DOCK_RIGHT
+              && p1 != (gint) GO_DOCK_FLOATING)
+            return FALSE;
+
+          i = lp->data;
+
+          i->placement = (GoDockPlacement) p1;
+
+          if (i->placement == GO_DOCK_FLOATING)
+            {
+              i->position.floating.x = p2;
+              i->position.floating.y = p3;
+              i->position.floating.orientation = p4;
+            }
+          else
+            {
+              i->position.docked.band_num = p2;
+              i->position.docked.band_position = p3;
+              i->position.docked.offset = p4;
+            }
+        }
+
+      p += 2;
+    }
+
+  g_strfreev (tmp);
+
+  return TRUE;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock-layout.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,135 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* go-dock-layout.c
+
+   Copyright (C) 1998 Free Software Foundation
+
+   All rights reserved.
+
+   The Gnome Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The Gnome Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+   Boston, MA  02110-1301 USA.
+
+   Author: Ettore Perazzoli <ettore at comm2000.it>
+*/
+/*
+  @NOTATION@
+*/
+
+#ifndef _GO_DOCK_LAYOUT_H
+#define _GO_DOCK_LAYOUT_H
+
+
+
+G_BEGIN_DECLS
+
+#define GO_TYPE_DOCK_LAYOUT            (go_dock_layout_get_type ())
+#define GO_DOCK_LAYOUT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_DOCK_LAYOUT, GoDockLayout))
+#define GO_DOCK_LAYOUT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GO_TYPE_DOCK_LAYOUT, GoDockLayoutClass))
+#define GO_IS_DOCK_LAYOUT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_DOCK_LAYOUT))
+#define GO_IS_DOCK_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GO_TYPE_DOCK_LAYOUT))
+#define GO_DOCK_LAYOUT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GO_TYPE_DOCK_LAYOUT, GoDockLayoutClass))
+
+typedef struct _GoDockLayoutItem    GoDockLayoutItem;
+typedef struct _GoDockLayoutClass   GoDockLayoutClass;
+typedef struct _GoDockLayout        GoDockLayout;
+typedef struct _GoDockLayoutPrivate GoDockLayoutPrivate;
+
+#include <goffice/gui-utils/go-dock.h>
+#include <goffice/gui-utils/go-dock-item.h>
+
+struct _GoDockLayoutItem
+{
+  GoDockItem *item;
+
+  GoDockPlacement placement;
+
+  union
+  {
+    struct
+    {
+      gint x;
+      gint y;
+      GtkOrientation orientation;
+    } floating;
+
+    struct
+    {
+      gint band_num;
+      gint band_position;
+      gint offset;
+    } docked;
+
+  } position;
+};
+
+struct _GoDockLayout
+{
+  GObject object;
+
+  GList *items;                 /* GoDockLayoutItem */
+
+  /*< private >*/
+  GoDockLayoutPrivate *_priv;
+};
+
+struct _GoDockLayoutClass
+{
+  GObjectClass parent_class;
+
+  gpointer dummy[4];
+};
+
+GoDockLayout     *go_dock_layout_new      (void);
+GType                 go_dock_layout_get_type (void) G_GNUC_CONST;
+
+gboolean             go_dock_layout_add_item (GoDockLayout *layout,
+                                                 GoDockItem *item,
+                                                 GoDockPlacement placement,
+                                                 gint band_num,
+                                                 gint band_position,
+                                                 gint offset);
+
+gboolean             go_dock_layout_add_floating_item
+                                                (GoDockLayout *layout,
+                                                 GoDockItem *item,
+                                                 gint x, gint y,
+                                                 GtkOrientation orientation);
+
+GoDockLayoutItem *go_dock_layout_get_item (GoDockLayout *layout,
+                                                 GoDockItem *item);
+GoDockLayoutItem *go_dock_layout_get_item_by_name
+                                                (GoDockLayout *layout,
+                                                 const gchar *name);
+
+gboolean             go_dock_layout_remove_item
+                                                (GoDockLayout *layout,
+                                                 GoDockItem *item);
+gboolean             go_dock_layout_remove_item_by_name
+                                                (GoDockLayout *layout,
+                                                 const gchar *name);
+
+gchar               *go_dock_layout_create_string
+                                                (GoDockLayout *layout);
+gboolean             go_dock_layout_parse_string
+                                                (GoDockLayout *layout,
+                                                 const gchar *string);
+
+gboolean             go_dock_layout_add_to_dock
+                                                (GoDockLayout *layout,
+                                                 GoDock *dock);
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1816 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* go-dock.c
+
+   Copyright (C) 1998 Free Software Foundation
+
+   The Gnome Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The Gnome Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+   Boston, MA  02110-1301 USA.
+
+   Author: Ettore Perazzoli <ettore at comm2000.it>
+*/
+/*
+  @NOTATION@
+*/
+
+#include <goffice/goffice-config.h>
+#include <glib/gi18n.h>
+#include <string.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+#include "go-dock.h"
+#include "go-dock-band.h"
+#include "go-dock-item.h"
+#include <libgnome/gnome-macros.h>
+
+GNOME_CLASS_BOILERPLATE (GoDock, go_dock,
+			 GtkContainer, GTK_TYPE_CONTAINER);
+
+#define noBONOBO_DOCK_DEBUG
+
+/* FIXME: To be removed.  */
+#if defined GO_DOCK_DEBUG && defined __GNUC__
+#define DEBUG(x)                                        \
+  do                                                    \
+    {                                                   \
+      printf ("%s.%d: ", __FUNCTION__, __LINE__);       \
+      printf x;                                         \
+      putchar ('\n');                                   \
+    }                                                   \
+  while (0)
+#else
+#define DEBUG(x)
+#endif
+
+
+
+struct _GoDockPrivate
+{
+	GdkDragContext *current_drag;
+};
+
+enum {
+  LAYOUT_CHANGED,
+  LAST_SIGNAL
+};
+
+
+
+static void     go_dock_size_request        (GtkWidget *widget,
+                                                GtkRequisition *requisition);
+static void     go_dock_size_allocate       (GtkWidget *widget,
+                                                GtkAllocation *allocation);
+static void     go_dock_map                 (GtkWidget *widget);
+static void     go_dock_unmap               (GtkWidget *widget);
+static void     go_dock_add                 (GtkContainer *container,
+                                                GtkWidget *child);
+static void     go_dock_remove              (GtkContainer *container,
+                                                GtkWidget *widget);
+static void     go_dock_forall              (GtkContainer *container,
+                                                gboolean include_internals,
+                                                GtkCallback callback,
+                                                gpointer callback_data);
+static void     go_dock_finalize            (GObject *object);
+
+static void     size_request_v                 (GList *list,
+                                                GtkRequisition *requisition);
+static void     size_request_h                 (GList *list,
+                                                GtkRequisition *requisition);
+static gint     size_allocate_v                (GList *list,
+                                                gint start_x, gint start_y,
+                                                guint width, gint direction);
+static gint     size_allocate_h                (GList *list,
+                                                gint start_x, gint start_y,
+                                                guint width, gint direction);
+static void     map_widget                     (GtkWidget *w);
+static void     map_widget_foreach             (gpointer data,
+                                                gpointer user_data);
+static void     map_band_list                  (GList *list);
+static void     unmap_widget                     (GtkWidget *w);
+static void     unmap_widget_foreach             (gpointer data,
+                                                gpointer user_data);
+static void     unmap_band_list                  (GList *list);
+static gboolean remove_from_band_list          (GList **list,
+                                                GoDockBand *child);
+static void     forall_helper                  (GList *list,
+                                                GtkCallback callback,
+                                                gpointer callback_data);
+
+static void     drag_begin                     (GtkWidget *widget,
+                                                gpointer data);
+static void     drag_end_bands                 (GList **list,
+                                                GoDockItem *item);
+static void     drag_end                       (GtkWidget *widget,
+                                                gpointer data);
+static gboolean drag_new                       (GoDock *dock,
+                                                GoDockItem *item,
+                                                GList **area,
+                                                GList *where,
+                                                gint x, gint y,
+                                                gboolean is_vertical);
+static gboolean drag_to                        (GoDock *dock,
+                                                GoDockItem *item,
+                                                GList *where,
+                                                gint x, gint y,
+                                                gboolean is_vertical);
+static gboolean drag_floating                  (GoDock *dock,
+                                                GoDockItem *item,
+                                                gint x, gint y,
+                                                gint rel_x, gint rel_y);
+static gboolean drag_check                     (GoDock *dock,
+                                                GoDockItem *item,
+                                                GList **area,
+                                                gint x, gint y,
+                                                gboolean is_vertical);
+static void     drag_snap                      (GoDock *dock,
+                                                GtkWidget *widget,
+                                                gint x, gint y);
+static void     drag_motion                    (GtkWidget *widget,
+                                                gint x, gint y,
+                                                gpointer data);
+
+static GoDockItem *get_docked_item_by_name  (GoDock *dock,
+                                                const gchar *name,
+                                                GoDockPlacement *placement_return,
+                                                guint *num_band_return,
+                                                guint *band_position_return,
+                                                guint *offset_return);
+static GoDockItem *get_floating_item_by_name (GoDock *dock,
+                                                 const gchar *name);
+
+static void           connect_drag_signals      (GoDock *dock,
+                                                 GtkWidget *item);
+
+
+static guint dock_signals[LAST_SIGNAL] = { 0 };
+
+
+
+static void
+go_dock_class_init (GoDockClass *class)
+{
+  GtkObjectClass *object_class;
+  GObjectClass *gobject_class;
+  GtkWidgetClass *widget_class;
+  GtkContainerClass *container_class;
+
+  object_class = (GtkObjectClass *) class;
+  gobject_class = (GObjectClass *) class;
+  widget_class = (GtkWidgetClass *) class;
+  container_class = (GtkContainerClass *) class;
+
+  gobject_class->finalize = go_dock_finalize;
+
+  widget_class->size_request = go_dock_size_request;
+  widget_class->size_allocate = go_dock_size_allocate;
+  widget_class->map = go_dock_map;
+  widget_class->unmap = go_dock_unmap;
+
+  container_class->add = go_dock_add;
+  container_class->remove = go_dock_remove;
+  container_class->forall = go_dock_forall;
+
+  dock_signals[LAYOUT_CHANGED] =
+	  g_signal_new ("layout_changed",
+			G_TYPE_FROM_CLASS (object_class),
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GoDockClass,
+					 layout_changed),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE,
+			0);
+}
+
+static void
+go_dock_instance_init (GoDock *dock)
+{
+  GTK_WIDGET_SET_FLAGS (GTK_WIDGET (dock), GTK_NO_WINDOW);
+
+  dock->_priv = NULL;
+  /* XXX: when there is some private stuff enable this
+  dock->_priv = g_new0(GoDockPrivate, 1);
+  */
+
+  dock->client_area = NULL;
+
+  dock->top_bands = NULL;
+  dock->bottom_bands = NULL;
+  dock->right_bands = NULL;
+  dock->left_bands = NULL;
+
+  dock->floating_children = NULL;
+
+  dock->floating_items_allowed = TRUE;
+}
+
+
+
+static void
+size_request_v (GList *list, GtkRequisition *requisition)
+{
+  for (; list != NULL; list = list->next)
+    {
+      GtkWidget *w;
+      GtkRequisition req;
+
+      w = GTK_WIDGET (list->data);
+      gtk_widget_size_request (w, &req);
+      requisition->width += req.width;
+      requisition->height = MAX (requisition->height, req.height);
+    }
+}
+
+static void
+size_request_h (GList *list, GtkRequisition *requisition)
+{
+  for (list = list; list != NULL; list = list->next)
+    {
+      GtkWidget *w;
+      GtkRequisition req;
+
+      w = GTK_WIDGET (list->data);
+      gtk_widget_size_request (w, &req);
+      requisition->height += req.height;
+      requisition->width = MAX (requisition->width, req.width);
+    }
+}
+
+static void
+go_dock_size_request (GtkWidget *widget, GtkRequisition *requisition)
+{
+  GoDock *dock;
+  GList *lp;
+
+  dock = GO_DOCK (widget);
+
+  if (dock->client_area != NULL && GTK_WIDGET_VISIBLE (dock->client_area))
+    gtk_widget_size_request (dock->client_area, requisition);
+  else
+    {
+      requisition->width = 0;
+      requisition->height = 0;
+    }
+
+  size_request_v (dock->left_bands, requisition);
+  size_request_v (dock->right_bands, requisition);
+  size_request_h (dock->top_bands, requisition);
+  size_request_h (dock->bottom_bands, requisition);
+
+  lp = dock->floating_children;
+  while (lp != NULL)
+    {
+      GtkWidget *w;
+      GtkRequisition float_item_requisition;
+
+      w = lp->data;
+      lp = lp->next;
+      gtk_widget_size_request (w, &float_item_requisition);
+    }
+}
+
+
+
+static gint
+size_allocate_h (GList *list, gint start_x, gint start_y, guint width,
+                 gint direction)
+{
+  GtkAllocation allocation;
+
+  allocation.x = start_x;
+  allocation.y = start_y;
+  allocation.width = width;
+
+  if (direction < 0)
+    list = g_list_last (list);
+  while (list != NULL)
+    {
+      GtkWidget *w;
+
+      w = GTK_WIDGET (list->data);
+      allocation.height = w->requisition.height;
+
+      if (direction > 0)
+        {
+          gtk_widget_size_allocate (w, &allocation);
+          allocation.y += allocation.height;
+          list = list->next;
+        }
+      else
+        {
+          allocation.y -= allocation.height;
+          gtk_widget_size_allocate (w, &allocation);
+          list = list->prev;
+        }
+    }
+
+  return allocation.y;
+}
+
+static gint
+size_allocate_v (GList *list, gint start_x, gint start_y, guint height,
+                 gint direction)
+{
+  GtkAllocation allocation;
+
+  allocation.x = start_x;
+  allocation.y = start_y;
+  allocation.height = height;
+
+  if (direction < 0)
+    list = g_list_last (list);
+
+  while (list != NULL)
+    {
+      GtkWidget *w;
+
+      w = GTK_WIDGET (list->data);
+      allocation.width = w->requisition.width;
+
+      if (direction > 0)
+        {
+          gtk_widget_size_allocate (w, &allocation);
+          allocation.x += allocation.width;
+          list = list->next;
+        }
+      else
+        {
+          allocation.x -= allocation.width;
+          gtk_widget_size_allocate (w, &allocation);
+          list = list->prev;
+        }
+    }
+
+  return allocation.x;
+}
+
+static void
+go_dock_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+{
+  GoDock *dock;
+  gint top_bands_y, bottom_bands_y;
+  gint left_bands_x, right_bands_x;
+  GtkAllocation child_allocation;
+  GList *lp;
+
+  dock = GO_DOCK (widget);
+
+  widget->allocation = *allocation;
+
+  top_bands_y = size_allocate_h (dock->top_bands,
+                                 allocation->x,
+                                 allocation->y,
+                                 allocation->width,
+                                 +1);
+
+  bottom_bands_y = size_allocate_h (dock->bottom_bands,
+                                    allocation->x,
+                                    allocation->y + allocation->height,
+                                    allocation->width,
+                                    -1);
+
+  child_allocation.height = MAX (bottom_bands_y - top_bands_y, 1);
+
+  left_bands_x = size_allocate_v (dock->left_bands,
+                                  allocation->x,
+                                  top_bands_y,
+                                  child_allocation.height,
+                                  +1);
+
+  right_bands_x = size_allocate_v (dock->right_bands,
+                                   allocation->x + allocation->width,
+                                   top_bands_y,
+                                   child_allocation.height,
+                                   -1);
+
+  child_allocation.width = MAX (right_bands_x - left_bands_x, 1);
+
+  child_allocation.x = left_bands_x;
+  child_allocation.y = top_bands_y;
+
+  dock->client_rect = child_allocation;
+
+  if (dock->client_area != NULL && GTK_WIDGET_VISIBLE (dock->client_area))
+    gtk_widget_size_allocate (dock->client_area, &child_allocation);
+
+  lp = dock->floating_children;
+  while (lp != NULL)
+    {
+      GtkWidget *w;
+      GtkAllocation float_item_allocation;
+
+      w = lp->data;
+      lp = lp->next;
+      float_item_allocation.x = 0;
+      float_item_allocation.y = 0;
+      float_item_allocation.width = w->requisition.width;
+      float_item_allocation.height = w->requisition.height;
+      gtk_widget_size_allocate (w, &float_item_allocation);
+    }
+}
+
+
+
+static void
+map_widget (GtkWidget *w)
+{
+  if (w != NULL && GTK_WIDGET_VISIBLE (w) && ! GTK_WIDGET_MAPPED (w))
+    gtk_widget_map (w);
+}
+
+static void
+unmap_widget (GtkWidget *w)
+{
+  if (w != NULL && GTK_WIDGET_VISIBLE (w) && GTK_WIDGET_MAPPED (w))
+    gtk_widget_unmap (w);
+}
+
+static void
+map_widget_foreach (gpointer data,
+                    gpointer user_data)
+{
+  map_widget (GTK_WIDGET (data));
+}
+
+static void
+unmap_widget_foreach (gpointer data,
+                      gpointer user_data)
+{
+  unmap_widget (GTK_WIDGET (data));
+}
+
+static void
+map_band_list (GList *list)
+{
+  while (list != NULL)
+    {
+      GtkWidget *w;
+
+      w = GTK_WIDGET (list->data);
+      map_widget (w);
+
+      list = list->next;
+    }
+}
+
+static void
+unmap_band_list (GList *list)
+{
+  while (list != NULL)
+    {
+      GtkWidget *w;
+
+      w = GTK_WIDGET (list->data);
+      unmap_widget (w);
+
+      list = list->next;
+    }
+}
+
+static void
+go_dock_map (GtkWidget *widget)
+{
+  GoDock *dock;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK(widget));
+
+  GNOME_CALL_PARENT (GTK_WIDGET_CLASS, map, (widget));
+
+  dock = GO_DOCK (widget);
+
+  map_widget (dock->client_area);
+
+  map_band_list (dock->top_bands);
+  map_band_list (dock->bottom_bands);
+  map_band_list (dock->left_bands);
+  map_band_list (dock->right_bands);
+
+  g_list_foreach (dock->floating_children, map_widget_foreach, NULL);
+}
+
+static void
+go_dock_unmap (GtkWidget *widget)
+{
+  GoDock *dock;
+
+  g_return_if_fail (widget != NULL);
+  g_return_if_fail (GO_IS_DOCK(widget));
+
+  dock = GO_DOCK (widget);
+
+  unmap_widget (dock->client_area);
+
+  unmap_band_list (dock->top_bands);
+  unmap_band_list (dock->bottom_bands);
+  unmap_band_list (dock->left_bands);
+  unmap_band_list (dock->right_bands);
+
+  g_list_foreach (dock->floating_children, unmap_widget_foreach, NULL);
+
+  GNOME_CALL_PARENT (GTK_WIDGET_CLASS, unmap, (widget));
+}
+
+
+
+/* GtkContainer methods.  */
+
+static void
+go_dock_add (GtkContainer *container, GtkWidget *child)
+{
+  GoDock *dock;
+
+  dock = GO_DOCK (container);
+  go_dock_add_item (dock, GO_DOCK_ITEM(child), GO_DOCK_TOP, 0, 0, 0, TRUE);
+}
+
+static gboolean
+remove_from_band_list (GList **list, GoDockBand *child)
+{
+  GList *lp;
+
+  for (lp = *list; lp != NULL; lp = lp->next)
+    {
+      if (lp->data == child)
+        {
+          gtk_widget_unparent (GTK_WIDGET (child));
+          *list = g_list_remove_link (*list, lp);
+          g_list_free (lp);
+
+          return TRUE;
+        }
+    }
+
+  return FALSE;
+}
+
+static void
+go_dock_remove (GtkContainer *container, GtkWidget *widget)
+{
+  GoDock *dock;
+
+  dock = GO_DOCK (container);
+
+  if (dock->client_area == widget)
+    {
+      gtk_widget_unparent (widget);
+      dock->client_area = NULL;
+      gtk_widget_queue_resize (GTK_WIDGET (dock));
+    }
+  else
+    {
+      /* Check if it's a floating child.  */
+      {
+        GList *lp;
+
+        lp = dock->floating_children;
+        while (lp != NULL)
+          {
+            GtkWidget *w;
+
+            w = lp->data;
+            if (w == widget)
+              {
+                gtk_widget_unparent (w);
+                dock->floating_children
+                  = g_list_remove_link (dock->floating_children, lp);
+                g_list_free (lp);
+                return;
+              }
+
+            lp = lp->next;
+          }
+      }
+
+      /* Then it must be one of the bands.  */
+      {
+        GoDockBand *band;
+
+        g_return_if_fail (GO_IS_DOCK_BAND (widget));
+
+        band = GO_DOCK_BAND (widget);
+        if (remove_from_band_list (&dock->top_bands, band)
+            || remove_from_band_list (&dock->bottom_bands, band)
+            || remove_from_band_list (&dock->left_bands, band)
+            || remove_from_band_list (&dock->right_bands, band))
+          {
+            gtk_widget_queue_resize (GTK_WIDGET (dock));
+            return;
+          }
+      }
+    }
+}
+
+static void
+forall_helper (GList *list,
+               GtkCallback callback,
+               gpointer callback_data)
+{
+  while (list != NULL)
+    {
+      GtkWidget *w;
+
+      w = GTK_WIDGET(list->data);
+      list = list->next;
+      (* callback) (w, callback_data);
+    }
+}
+
+static void
+go_dock_forall (GtkContainer *container,
+                   gboolean include_internals,
+                   GtkCallback callback,
+                   gpointer callback_data)
+{
+  GoDock *dock;
+  GList *lp;
+
+  g_return_if_fail (container != NULL);
+  g_return_if_fail (GO_IS_DOCK (container));
+  g_return_if_fail (callback != NULL);
+
+  dock = GO_DOCK (container);
+
+  forall_helper (dock->top_bands, callback, callback_data);
+  forall_helper (dock->bottom_bands, callback, callback_data);
+  forall_helper (dock->left_bands, callback, callback_data);
+  forall_helper (dock->right_bands, callback, callback_data);
+
+  lp = dock->floating_children;
+  while (lp != NULL)
+    {
+      GtkWidget *w;
+
+      w = lp->data;
+      lp = lp->next;
+      (* callback) (w, callback_data);
+    }
+
+  if (dock->client_area != NULL)
+    (* callback) (dock->client_area, callback_data);
+}
+
+static void
+go_dock_finalize (GObject *object)
+{
+  GoDock *self = GO_DOCK (object);
+
+  g_free (self->_priv);
+  self->_priv = NULL;
+
+  if (G_OBJECT_CLASS (parent_class)->finalize)
+    (* G_OBJECT_CLASS (parent_class)->finalize) (object);
+}
+
+
+
+static void
+new_band_setup (GoDock    *dock,
+		GtkWidget     *new_band,
+		GtkOrientation orientation)
+{
+      go_dock_band_set_orientation (
+	      GO_DOCK_BAND (new_band), orientation);
+      gtk_widget_set_parent (GTK_WIDGET (new_band), GTK_WIDGET (dock));
+      gtk_widget_queue_resize (GTK_WIDGET (new_band));
+      gtk_widget_show (GTK_WIDGET (new_band));
+}
+
+
+/* When an item is being dragged, there can be 3 situations:
+
+   (I)   A new band is created and the item is docked to it.
+
+   (II)  The item is docked to an existing band.
+
+   (III) The item must be floating, so it has to be detached if
+         currently not floating, and moved around in its own window.  */
+
+/* Case (I): Dock `item' into a new band next to `where' in the
+   docking area `area'.  If `where' is NULL, the band becomes the
+   first one in `area'.  */
+static gboolean
+drag_new (GoDock *dock,
+          GoDockItem *item,
+          GList **area,
+          GList *where,
+          gint x, gint y,
+          gboolean is_vertical)
+{
+  GoDockBand *new_band;
+  GList *next;
+
+  DEBUG (("entering function"));
+
+  new_band = NULL;
+
+  /* We need a new band next to `where', but we try to re-use the band
+     next to it if either it contains no children, or it only contains
+     `item'.  */
+
+  next = NULL;
+  if (where == NULL && area != NULL)
+    next = *area;
+  else
+    next = where->next;
+  if (next != NULL)
+    {
+      GoDockBand *band;
+      guint num_children;
+
+      band = GO_DOCK_BAND (next->data);
+
+      num_children = go_dock_band_get_num_children (band);
+
+      if (num_children == 0
+          || (num_children == 1
+              && GTK_WIDGET (band) == GTK_WIDGET (item)->parent))
+        new_band = GO_DOCK_BAND (next->data);
+    }
+
+  /* Create the new band and make it our child if we cannot re-use an
+     existing one.  */
+  if (new_band == NULL)
+    {
+      new_band = GO_DOCK_BAND (go_dock_band_new ());
+
+      /* This is mostly to remember that `drag_allocation' for this
+         child is bogus, as it was not previously allocated.  */
+      new_band->new_for_drag = TRUE;
+
+      if (where == NULL)
+        *area = where = g_list_prepend (*area, new_band);
+      else if (where->next == NULL)
+        g_list_append (where, new_band);
+      else
+        g_list_prepend (where->next, new_band);
+
+      new_band_setup (dock, GTK_WIDGET (new_band),
+		      is_vertical ? GTK_ORIENTATION_VERTICAL
+		                  : GTK_ORIENTATION_HORIZONTAL);
+    }
+
+  /* Move the item to the new band.  (This is a no-op if we are using
+     `where->next' and it already contains `item'.)  */
+  go_dock_item_attach (item, GTK_WIDGET (new_band), x, y);
+
+  /* Prepare the band for dragging of `item'.  */
+  go_dock_band_drag_begin (new_band, item);
+
+  /* Set the offset of `item' in the band.  */
+  if (is_vertical)
+    go_dock_band_set_child_offset (new_band, GTK_WIDGET (item),
+                                      MAX (y - dock->client_rect.y, 0));
+  else
+    go_dock_band_set_child_offset (new_band, GTK_WIDGET (item),
+                                      MAX (x - GTK_WIDGET (dock)->allocation.x, 0));
+
+  return TRUE;
+}
+
+/* Case (II): Drag into an existing band.  */
+static gboolean
+drag_to (GoDock *dock,
+         GoDockItem *item,
+         GList *where,
+         gint x, gint y,
+         gboolean is_vertical)
+{
+  DEBUG (("x %d y %d", x, y));
+
+  return go_dock_band_drag_to (GO_DOCK_BAND (where->data), item, x, y);
+}
+
+/* Case (III): Move a floating (i.e. floating) item.  */
+static gboolean
+drag_floating (GoDock *dock,
+               GoDockItem *item,
+               gint x,
+               gint y,
+               gint rel_x,
+               gint rel_y)
+{
+  GtkWidget *item_widget, *dock_widget;
+
+  item_widget = GTK_WIDGET (item);
+  dock_widget = GTK_WIDGET (dock);
+
+  if (!item->is_floating && item_widget->parent != dock_widget)
+    {
+      GtkAllocation *dock_allocation, *client_allocation;
+
+      /* The item is currently not floating (so it is not our child).
+         Make it so if we are outside the docking areas.  */
+
+      dock_allocation = &dock_widget->allocation;
+      if (dock->client_area)
+        client_allocation = &dock->client_area->allocation;
+      else
+        client_allocation = NULL;
+
+      if (rel_x < 0
+          || rel_x >= dock_allocation->width
+          || rel_y < 0
+          || rel_y >= dock_allocation->height
+          || (client_allocation != NULL
+              && rel_x >= client_allocation->x
+              && rel_x < client_allocation->x + client_allocation->width
+              && rel_y >= client_allocation->y
+              && rel_y < client_allocation->y + client_allocation->height))
+        {
+          gtk_widget_ref (item_widget);
+
+          gtk_container_remove (GTK_CONTAINER (item_widget->parent),
+                                item_widget);
+          gtk_widget_set_parent (item_widget, dock_widget);
+
+          dock->floating_children = g_list_prepend (dock->floating_children,
+                                                    item);
+
+	  gtk_widget_realize (item_widget);
+	  gtk_widget_map (item_widget);
+	  gtk_widget_queue_resize (item_widget);
+
+	  go_dock_item_detach (item, x, y);
+          if (item->in_drag)
+            go_dock_item_grab_pointer (item);
+
+          gtk_widget_unref (item_widget);
+        }
+    }
+  else
+    {
+      /* The item is already floating; all we have to do is move it to
+         the current dragging position.  */
+      go_dock_item_drag_floating (item, x, y);
+    }
+
+  return TRUE;
+}
+
+
+
+/* Check if `item' can be docked to any of the DockBands of the dock
+   area `area'.  If so, dock it and return TRUE; otherwise, return
+   FALSE.  */
+static gboolean
+drag_check (GoDock *dock,
+            GoDockItem *item,
+            GList **area,
+            gint x, gint y,
+            gboolean is_vertical)
+{
+  GList *lp;
+  GtkAllocation *alloc;
+
+  for (lp = *area; lp != NULL; lp = lp->next)
+    {
+      GoDockBand *band;
+
+      band = GO_DOCK_BAND (lp->data);
+
+      if (! band->new_for_drag)
+        {
+          alloc = &band->drag_allocation;
+
+          if (x >= alloc->x - 10 && x < alloc->x + alloc->width
+              && y >= alloc->y && y < alloc->y + alloc->height)
+            {
+              if (is_vertical)
+                {
+                  if (x < alloc->x + alloc->width / 2
+                      && drag_to (dock, item, lp, x, y, TRUE))
+                    return TRUE;
+                  else
+                    return drag_new (dock, item, area, lp, x, y, TRUE);
+                }
+              else
+                {
+                  if (y < alloc->y + alloc->height / 2
+                      && drag_to (dock, item, lp, x, y, FALSE))
+                    return TRUE;
+                  else
+                    return drag_new (dock, item, area, lp, x, y, FALSE);
+                }
+            }
+        }
+    }
+
+  return FALSE;
+}
+
+/* Snap the GoDockItem `widget' to `dock' at the specified
+   position.  */
+static void
+drag_snap (GoDock *dock,
+           GtkWidget *widget,
+           gint x, gint y)
+{
+#define SNAP 50
+  GoDockItem *item;
+  GoDockItemBehavior item_behavior;
+  gint win_x, win_y;
+  gint rel_x, rel_y;
+  gboolean item_allows_horizontal, item_allows_vertical;
+
+  item = GO_DOCK_ITEM (widget);
+
+  item_behavior = go_dock_item_get_behavior (item);
+  item_allows_horizontal = ! (item_behavior
+                              & GO_DOCK_ITEM_BEH_NEVER_HORIZONTAL);
+  item_allows_vertical = ! (item_behavior
+                            & GO_DOCK_ITEM_BEH_NEVER_VERTICAL);
+
+  gdk_window_get_origin (GTK_WIDGET (dock)->window, &win_x, &win_y);
+  rel_x = x - win_x;
+  rel_y = y - win_y;
+
+  DEBUG (("(%d,%d)", x, y));
+  DEBUG (("relative (%d,%d)", rel_x, rel_y));
+
+  if (item_allows_horizontal
+      && rel_x >= 0 && rel_x < GTK_WIDGET (dock)->allocation.width)
+    {
+      /* Check prepending to top/bottom bands.  */
+      if (rel_y < 0 && rel_y >= -SNAP
+          && drag_new (dock, item, &dock->top_bands, NULL,
+                       rel_x, rel_y, FALSE))
+        return;
+      else if (rel_y >= dock->client_rect.y + dock->client_rect.height - SNAP
+               && rel_y < dock->client_rect.y + dock->client_rect.height
+               && drag_new (dock, item, &dock->bottom_bands, NULL,
+                            rel_x, rel_y, FALSE))
+        return;
+    }
+
+  if (item_allows_vertical
+      && rel_y >= dock->client_rect.y
+      && rel_y < dock->client_rect.y + dock->client_rect.height)
+    {
+      /* Check prepending to left/right bands.  */
+      if (rel_x < 0 && rel_x >= -SNAP
+          && drag_new (dock, item, &dock->left_bands, NULL,
+                       rel_x, rel_y, TRUE))
+        return;
+      else if (rel_x >= dock->client_rect.x + dock->client_rect.width - SNAP
+               && rel_x < dock->client_rect.x + dock->client_rect.width
+               && drag_new (dock, item, &dock->right_bands, NULL,
+                            rel_x, rel_y, TRUE))
+        return;
+    }
+
+  /* Check dragging into bands.  */
+  if (item_allows_horizontal
+      && drag_check (dock, item, &dock->top_bands, rel_x, rel_y, FALSE))
+    return;
+  else if (item_allows_horizontal
+           && drag_check (dock, item, &dock->bottom_bands, rel_x, rel_y, FALSE))
+    return;
+  else if (item_allows_vertical
+           && drag_check (dock, item, &dock->left_bands, rel_x, rel_y, TRUE))
+    return;
+  else if (item_allows_vertical
+           && drag_check (dock, item, &dock->right_bands, rel_x, rel_y, TRUE))
+    return;
+
+  /* We are not in any "interesting" area: the item must be floating
+     if allowed to.  */
+  if (dock->floating_items_allowed
+      && ! (item_behavior & GO_DOCK_ITEM_BEH_NEVER_DETACH))
+    drag_floating (dock, item, x, y, rel_x, rel_y);
+
+  /* If still not floating, fall back to moving the item in its own
+     band.  */
+  if (! item->is_floating)
+    go_dock_band_drag_to (GO_DOCK_BAND (GTK_WIDGET (item)->parent),
+                             item, rel_x, rel_y);
+}
+
+
+
+/* "drag_begin" signal handling.  */
+static void
+drag_begin (GtkWidget *widget, gpointer data)
+{
+  GoDock *dock;
+  GoDockItem *item;
+
+  DEBUG (("entering function"));
+
+  dock = GO_DOCK (data);
+  item = GO_DOCK_ITEM (widget);
+
+  /* Communicate all the bands that `widget' is currently being
+     dragged.  */
+  g_list_foreach (dock->top_bands, (GFunc) go_dock_band_drag_begin, item);
+  g_list_foreach (dock->bottom_bands, (GFunc) go_dock_band_drag_begin, item);
+  g_list_foreach (dock->right_bands, (GFunc) go_dock_band_drag_begin, item);
+  g_list_foreach (dock->left_bands, (GFunc) go_dock_band_drag_begin, item);
+}
+
+
+
+/* "drag_end" signal handling.  */
+
+static void
+drag_end_bands (GList **list, GoDockItem *item)
+{
+  GList *lp;
+  GoDockBand *band;
+
+  lp = *list;
+  while (lp != NULL)
+    {
+      band = GO_DOCK_BAND(lp->data);
+      go_dock_band_drag_end (band, item);
+
+      if (go_dock_band_get_num_children (band) == 0)
+        {
+          GList *next;
+
+          next = lp->next;
+
+          /* This will remove this link, too.  */
+          gtk_widget_destroy (GTK_WIDGET (band));
+
+          lp = next;
+        }
+      else
+        lp = lp->next;
+    }
+}
+
+static void
+drag_end (GtkWidget *widget, gpointer data)
+{
+  GoDockItem *item;
+  GoDock *dock;
+
+  DEBUG (("entering function"));
+
+  item = GO_DOCK_ITEM (widget);
+  dock = GO_DOCK (data);
+
+  /* Communicate to all the bands that `item' is no longer being
+     dragged.  */
+  drag_end_bands (&dock->top_bands, item);
+  drag_end_bands (&dock->bottom_bands, item);
+  drag_end_bands (&dock->left_bands, item);
+  drag_end_bands (&dock->right_bands, item);
+
+  g_signal_emit (data, dock_signals[LAYOUT_CHANGED], 0);
+}
+
+
+
+/* "drag_motion" signal handling.  */
+
+/* Handle a drag motion on the GoDockItem `widget'.  This is
+   connected to the "drag_motion" of all the children being added to
+   the GoDock, and tries to dock the dragged item at the current
+   (`x', `y') position of the pointer.  */
+static void
+drag_motion (GtkWidget *widget,
+             gint x, gint y,
+             gpointer data)
+{
+  drag_snap (GO_DOCK (data), widget, x, y);
+}
+
+
+
+static GoDockItem *
+get_docked_item_by_name (GoDock *dock,
+                         const gchar *name,
+                         GoDockPlacement *placement_return,
+                         guint *num_band_return,
+                         guint *band_position_return,
+                         guint *offset_return)
+{
+  {
+    struct
+    {
+      GList *band_list;
+      GoDockPlacement placement;
+    }
+    areas[] =
+    {
+      { NULL, GO_DOCK_TOP },
+      { NULL, GO_DOCK_BOTTOM },
+      { NULL, GO_DOCK_LEFT },
+      { NULL, GO_DOCK_RIGHT },
+      { NULL, GO_DOCK_FLOATING },
+    };
+    GList *lp;
+    guint i;
+
+    areas[0].band_list = dock->top_bands;
+    areas[1].band_list = dock->bottom_bands;
+    areas[2].band_list = dock->left_bands;
+    areas[3].band_list = dock->right_bands;
+
+    for (i = 0; i < 4; i++)
+      {
+        guint num_band;
+
+        for (lp = areas[i].band_list, num_band = 0;
+             lp != NULL;
+             lp = lp->next, num_band++)
+          {
+            GoDockBand *band;
+            GoDockItem *item;
+
+            band = GO_DOCK_BAND(lp->data);
+            item = go_dock_band_get_item_by_name (band,
+                                                     name,
+                                                     band_position_return,
+                                                     offset_return);
+            if (item != NULL)
+              {
+                if (num_band_return != NULL)
+                  *num_band_return = num_band;
+                if (placement_return != NULL)
+                  *placement_return = areas[i].placement;
+
+                return item;
+              }
+          }
+      }
+  }
+
+  return NULL;
+}
+
+static GoDockItem *
+get_floating_item_by_name (GoDock *dock,
+                           const gchar *name)
+{
+  GList *lp;
+  GoDockItem *item;
+
+  for (lp = dock->floating_children; lp != NULL; lp = lp->next)
+    {
+      item = lp->data;
+      if (strcmp (item->name, name) == 0)
+        return item;
+    }
+
+  return NULL;
+}
+
+static void
+connect_drag_signals (GoDock *dock,
+                      GtkWidget *item)
+{
+  if (GO_IS_DOCK_ITEM (item))
+    {
+      DEBUG (("here"));
+      g_signal_connect (item, "dock_drag_begin",
+			G_CALLBACK (drag_begin), dock);
+      g_signal_connect (item, "dock_drag_motion",
+			G_CALLBACK (drag_motion), dock);
+      g_signal_connect (item, "dock_drag_end",
+			G_CALLBACK (drag_end), dock);
+    }
+}
+
+/**
+ * go_dock_new:
+ *
+ * Description: Creates a new #GoDock widget.
+ *
+ * Return value: The new widget.
+ **/
+GtkWidget *
+go_dock_new (void)
+{
+  GoDock *dock;
+  GtkWidget *widget;
+
+  dock = g_object_new (go_dock_get_type (), NULL);
+  widget = GTK_WIDGET (dock);
+
+#if 0                           /* FIXME: should I? */
+  if (GTK_WIDGET_VISIBLE (widget))
+    gtk_widget_queue_resize (widget);
+#endif
+
+  return widget;
+}
+
+/**
+ * go_dock_allow_floating_items:
+ * @dock: A pointer to a #GoDock widget
+ * @enable: Specifies whether floating items are allowed in this dock
+ *
+ * Description: Enable or disable floating items on @dock, according
+ * to @enable.
+ **/
+void
+go_dock_allow_floating_items (GoDock *dock,
+                                 gboolean enable)
+{
+  dock->floating_items_allowed = enable;
+}
+
+static GList **
+get_band_list (GoDock *dock, GoDockPlacement placement)
+{
+  GList **band_ptr = NULL;
+
+  switch (placement)
+    {
+    case GO_DOCK_TOP:
+      band_ptr = &dock->top_bands;
+      break;
+    case GO_DOCK_BOTTOM:
+      band_ptr = &dock->bottom_bands;
+      break;
+    case GO_DOCK_LEFT:
+      band_ptr = &dock->left_bands;
+      break;
+    case GO_DOCK_RIGHT:
+      band_ptr = &dock->right_bands;
+      break;
+    default:
+      break;
+    }
+  return band_ptr;
+}
+
+/**
+ * go_dock_add_item:
+ * @dock: A pointer to a #GoDock widget
+ * @item: The item to add
+ * @placement: Placement for the new item
+ * @band_num: Number of the band the new item must be added to
+ * @position: Position of the item in the specified band
+ * @offset: Offset (in pixels) from the previous item in the same band
+ * @in_new_band: Specifies whether a new band must be created for this item
+ *
+ * Description: Add @item to @dock.  @placement can be either
+ * %GO_DOCK_TOP, %GO_DOCK_RIGHT, %GO_DOCK_BOTTOM or
+ * %GO_DOCK_LEFT, and specifies what area of the dock should
+ * contain the item.  If @in_new_band is %TRUE, a new dock band is
+ * created at the position specified by @band_num; otherwise, the item
+ * is added to the @band_num'th band.
+ **/
+void
+go_dock_add_item (GoDock *dock,
+		      GoDockItem *item,
+		      GoDockPlacement placement,
+		      guint band_num,
+		      gint position,
+		      guint offset,
+		      gboolean in_new_band)
+{
+  GoDockBand *band;
+  GList **band_ptr;
+  GList *p;
+
+  DEBUG (("band_num %d offset %d position %d in_new_band %d",
+          band_num, offset, position, in_new_band));
+
+  if (placement == GO_DOCK_FLOATING)
+    {
+      g_warning ("Floating dock items not supported by `go_dock_add_item'.");
+      return;
+    }
+  band_ptr = get_band_list (dock, placement);
+  g_return_if_fail (band_ptr != NULL);
+
+  p = g_list_nth (*band_ptr, band_num);
+  if (in_new_band || p == NULL)
+    {
+      GtkWidget *new_band;
+
+      new_band = go_dock_band_new ();
+
+      /* FIXME: slow.  */
+      if (in_new_band)
+        {
+          *band_ptr = g_list_insert (*band_ptr, new_band, band_num);
+          p = g_list_nth (*band_ptr, band_num);
+          if (p == NULL)
+            p = g_list_last (*band_ptr);
+        }
+      else
+        {
+          *band_ptr = g_list_append (*band_ptr, new_band);
+          p = g_list_last (*band_ptr);
+        }
+
+      if (placement == GO_DOCK_TOP || placement == GO_DOCK_BOTTOM)
+        go_dock_band_set_orientation (GO_DOCK_BAND (new_band),
+                                         GTK_ORIENTATION_HORIZONTAL);
+      else
+        go_dock_band_set_orientation (GO_DOCK_BAND (new_band),
+                                         GTK_ORIENTATION_VERTICAL);
+
+      gtk_widget_set_parent (new_band, GTK_WIDGET (dock));
+      gtk_widget_show (new_band);
+      gtk_widget_queue_resize (GTK_WIDGET (dock));
+    }
+
+  band = GO_DOCK_BAND (p->data);
+  go_dock_band_insert (band, GTK_WIDGET(item), offset, position);
+
+  connect_drag_signals (dock, GTK_WIDGET(item));
+
+  g_signal_emit (dock, dock_signals[LAYOUT_CHANGED], 0);
+}
+
+/**
+ * go_dock_add_floating_item:
+ * @dock: A #GoDock widget
+ * @item: The item to be added
+ * @x: X-coordinate for the floating item
+ * @y: Y-coordinate for the floating item
+ * @orientation: Orientation for the new item.
+ *
+ * Description: Add @item to @dock and make it floating at the
+ * specified (@x, @y) coordinates (relative to the root window of the
+ * screen).
+ **/
+void
+go_dock_add_floating_item (GoDock *dock,
+                              GoDockItem *item,
+                              gint x, gint y,
+                              GtkOrientation orientation)
+{
+  GtkWidget *widget;
+
+  g_return_if_fail (GO_IS_DOCK_ITEM (item));
+
+  go_dock_item_set_orientation (item, orientation);
+
+  widget = GTK_WIDGET(item);
+  gtk_widget_ref (widget);
+
+#if 0
+  if (widget->parent != NULL)
+      gtk_container_remove (GTK_CONTAINER (widget->parent), widget);
+#endif
+
+  gtk_widget_set_parent (widget, GTK_WIDGET (dock));
+
+  if (GTK_WIDGET_REALIZED (widget->parent))
+    gtk_widget_realize (widget);
+
+  if (GTK_WIDGET_VISIBLE (widget->parent) && GTK_WIDGET_VISIBLE (widget))
+    {
+      if (GTK_WIDGET_MAPPED (widget->parent))
+	gtk_widget_map (widget);
+
+      gtk_widget_queue_resize (widget);
+    }
+
+  go_dock_item_detach (item, x, y);
+  dock->floating_children = g_list_prepend (dock->floating_children, widget);
+
+  connect_drag_signals (dock, widget);
+
+  gtk_widget_unref (widget);
+
+  g_signal_emit (dock, dock_signals[LAYOUT_CHANGED], 0);
+}
+
+/**
+ * go_dock_set_client_area:
+ * @dock: A #GoDock widget
+ * @widget: The widget to be used for the client area.
+ *
+ * Description: Specify a widget for the dock's client area.
+ **/
+void
+go_dock_set_client_area (GoDock *dock, GtkWidget *widget)
+{
+  g_return_if_fail (dock != NULL);
+
+  if (widget != NULL)
+    gtk_widget_ref (widget);
+
+  if (dock->client_area != NULL)
+    gtk_widget_unparent (dock->client_area);
+
+  if (widget != NULL)
+    {
+      gtk_widget_set_parent (widget, GTK_WIDGET (dock));
+      dock->client_area = widget;
+
+      if (GTK_WIDGET_REALIZED (widget->parent))
+	gtk_widget_realize (widget);
+
+      if (GTK_WIDGET_VISIBLE (widget->parent) && GTK_WIDGET_VISIBLE (widget))
+	{
+	  if (GTK_WIDGET_MAPPED (widget->parent))
+	    gtk_widget_map (widget);
+
+	  gtk_widget_queue_resize (widget);
+	}
+    }
+  else
+    {
+      if (dock->client_area != NULL && GTK_WIDGET_VISIBLE (dock))
+        gtk_widget_queue_resize (GTK_WIDGET (dock));
+      dock->client_area = NULL;
+    }
+
+  if (widget != NULL)
+    gtk_widget_unref (widget);
+}
+
+/**
+ * go_dock_get_client_area:
+ * @dock: A #GoDock widget.
+ *
+ * Description: Retrieve the widget being used as the client area in
+ * @dock.
+ *
+ * Returns: The client area widget.
+ **/
+GtkWidget *
+go_dock_get_client_area (GoDock *dock)
+{
+  return dock->client_area;
+}
+
+/**
+ * go_dock_get_item_by_name:
+ * @dock: A #GoDock widget.
+ * @name: The name of the dock item to retrieve
+ * @placement_return: A pointer to a variable holding the item's placement
+ * @num_band_return: A pointer to a variable holding the band number
+ * @band_position_return: A pointer to a variable holding the position
+ * of the item within the band
+ * @offset_return: A pointer to a variable holding the offset of the item
+ * from the previous item in the same band
+ *
+ * Description: Retrieve the dock item named @name; information about
+ * its position in the dock is returned via @placement_return,
+ * @num_band_return, @band_position_return and @offset_return.  If
+ * the placement is %GO_DOCK_FLOATING *@num_band_return,
+ * *@band_position_return and *@offset_return are not set.
+ *
+ * Returns: The named #GoDockItem widget, or %NULL if no item with
+ * such name exists.
+ **/
+GoDockItem *
+go_dock_get_item_by_name (GoDock *dock,
+                             const gchar *name,
+                             GoDockPlacement *placement_return,
+                             guint *num_band_return,
+                             guint *band_position_return,
+                             guint *offset_return)
+{
+  GoDockItem *item;
+
+  item = get_docked_item_by_name (dock,
+                                  name,
+                                  placement_return,
+                                  num_band_return,
+                                  band_position_return,
+                                  offset_return);
+  if (item != NULL)
+    return item;
+
+  item = get_floating_item_by_name (dock, name);
+  if (item != NULL)
+    {
+      if (placement_return != NULL)
+        *placement_return = GO_DOCK_FLOATING;
+      return item;
+    }
+
+  return NULL;
+}
+
+
+
+/* Layout functions.  */
+
+static void
+layout_add_floating (GoDock *dock,
+                     GoDockLayout *layout)
+{
+  GList *lp;
+
+  for (lp = dock->floating_children; lp != NULL; lp = lp->next)
+    {
+      GtkOrientation orientation;
+      gint x, y;
+      GoDockItem *item;
+
+      item = GO_DOCK_ITEM (lp->data);
+
+      orientation = go_dock_item_get_orientation (item);
+      go_dock_item_get_floating_position (item, &x, &y);
+
+      go_dock_layout_add_floating_item (layout, item,
+                                           x, y,
+                                           orientation);
+    }
+}
+
+static void
+layout_add_bands (GoDock *dock,
+                  GoDockLayout *layout,
+                  GoDockPlacement placement,
+                  GList *band_list)
+{
+  guint band_num;
+  GList *lp;
+
+  for (lp = band_list, band_num = 0;
+       lp != NULL;
+       lp = lp->next, band_num++)
+    {
+      GoDockBand *band;
+
+      band = GO_DOCK_BAND(lp->data);
+      go_dock_band_layout_add (band, layout, placement, band_num);
+    }
+}
+
+/**
+ * go_dock_get_layout:
+ * @dock: A #GoDock widget
+ *
+ * Description: Retrieve the layout of @dock.
+ *
+ * Returns: @dock's layout as a #GoDockLayout object.
+ **/
+GoDockLayout *
+go_dock_get_layout (GoDock *dock)
+{
+  GoDockLayout *layout;
+
+  layout = go_dock_layout_new ();
+
+  layout_add_bands (dock, layout, GO_DOCK_TOP, dock->top_bands);
+  layout_add_bands (dock, layout, GO_DOCK_BOTTOM, dock->bottom_bands);
+  layout_add_bands (dock, layout, GO_DOCK_LEFT, dock->left_bands);
+  layout_add_bands (dock, layout, GO_DOCK_RIGHT, dock->right_bands);
+
+  layout_add_floating (dock, layout);
+
+  return layout;
+}
+
+/**
+ * go_dock_add_from_layout:
+ * @dock: The #GoDock widget
+ * @layout: A #GoDockLayout widget
+ *
+ * Description: Add all the items in @layout to the specified @dock.
+ *
+ * Returns: %TRUE if the operation succeeds, %FALSE if it fails.
+ **/
+gboolean
+go_dock_add_from_layout (GoDock       *dock,
+			     GoDockLayout *layout)
+{
+  return go_dock_layout_add_to_dock (layout, dock);
+}
+
+static GList **
+find_band_list (GoDock          *dock,
+		GoDockBand      *band,
+		GoDockPlacement *placement)
+{
+  GList **band_list = NULL;
+
+  if (g_list_find (dock->top_bands, band))
+    {
+      *placement = GO_DOCK_TOP;
+      band_list = &dock->top_bands;
+    }
+
+  if (g_list_find (dock->bottom_bands, band))
+    {
+      *placement = GO_DOCK_BOTTOM;
+      band_list = &dock->bottom_bands;
+    }
+
+  if (g_list_find (dock->left_bands, band))
+    {
+      *placement = GO_DOCK_LEFT;
+      band_list = &dock->left_bands;
+    }
+
+  if (g_list_find (dock->right_bands, band))
+    {
+      *placement = GO_DOCK_RIGHT;
+      band_list = &dock->right_bands;
+    }
+
+  return band_list;
+}
+
+static gboolean
+insert_into_band_list (GoDock     *dock,
+		       GList         **band_list,
+		       GtkOrientation  orientation,
+		       GoDockItem *item,
+		       gboolean        prepend)
+{
+  GtkWidget *new_band;
+
+  new_band = go_dock_band_new ();
+
+  if (item->behavior & GO_DOCK_ITEM_BEH_NEVER_VERTICAL)
+    orientation = GTK_ORIENTATION_HORIZONTAL;
+
+  if (item->behavior & GO_DOCK_ITEM_BEH_NEVER_HORIZONTAL)
+    orientation = GTK_ORIENTATION_VERTICAL;
+
+  if (!go_dock_band_append (
+	  GO_DOCK_BAND (new_band), GTK_WIDGET (item), 0))
+    return FALSE;
+
+  if (prepend)
+    *band_list = g_list_prepend (*band_list, new_band);
+  else
+    *band_list = g_list_append (*band_list, new_band);
+
+  new_band_setup (dock, new_band, orientation);
+
+  return TRUE;
+}
+
+gint
+_bonobo_dock_handle_key_nav (GoDock     *dock,
+			     GoDockBand *band,
+			     GoDockItem *item,
+			     GdkEventKey    *event)
+{
+  GList   *entry;
+  GList  **band_list;
+  int      cross_band_dir = 0;
+  int      switch_side_dir = 0;
+  gboolean end_stop = FALSE;
+  gboolean was_inserted = FALSE;
+  GtkOrientation orientation;
+  GoDockPlacement placement;
+
+  if (!(event->state & GDK_CONTROL_MASK))
+    return FALSE;
+
+  switch (event->keyval)
+    {
+      case GDK_Up:
+        cross_band_dir = -1;
+	break;
+      case GDK_Down:
+        cross_band_dir = +1;
+	break;
+      case GDK_Left:
+        switch_side_dir = -1;
+	break;
+      case GDK_Right:
+        switch_side_dir = +1;
+	break;
+      default:
+        return FALSE;
+    }
+
+  band_list = find_band_list (dock, band, &placement);
+  g_return_val_if_fail (band_list != NULL, FALSE);
+
+  if (placement == GO_DOCK_LEFT ||
+      placement == GO_DOCK_RIGHT)
+    {
+      int tmp = switch_side_dir;
+      switch_side_dir = cross_band_dir;
+      cross_band_dir = tmp;
+      orientation = GTK_ORIENTATION_VERTICAL;
+    }
+  else
+    {
+      orientation = GTK_ORIENTATION_HORIZONTAL;
+    }
+
+  g_object_ref (G_OBJECT (item));
+
+  gtk_container_remove (GTK_CONTAINER (band), GTK_WIDGET (item));
+
+  /*
+   * Find somewhere new for it ...
+   */
+  entry = g_list_find (*band_list, band);
+  g_return_val_if_fail (entry != NULL, FALSE);
+
+  if (cross_band_dir == -1)
+    {
+      for (entry = entry->prev; !was_inserted && entry;
+	   entry = entry->prev)
+        was_inserted = go_dock_band_append (
+		entry->data, GTK_WIDGET (item), 0);
+
+      if (!was_inserted &&
+	  ((*band_list)->data != band ||
+	   go_dock_band_get_num_children (band) > 0))
+        {
+	  was_inserted = insert_into_band_list (
+		  dock, band_list, orientation, item, TRUE);
+	}
+
+      if (!was_inserted)
+        {
+	  if (placement == GO_DOCK_BOTTOM)
+	    {
+	      was_inserted = insert_into_band_list (
+		      dock, &dock->top_bands, orientation, item, FALSE);
+	    }
+	  else if (placement == GO_DOCK_RIGHT)
+	    {
+	      was_inserted = insert_into_band_list (
+		      dock, &dock->left_bands, orientation, item, FALSE);
+	    }
+	  else
+	    end_stop = TRUE;
+	}
+    }
+
+  if (cross_band_dir == +1)
+    {
+      for (entry = entry->next; !was_inserted && entry;
+	   entry = entry->next)
+        was_inserted = go_dock_band_append (
+		entry->data, GTK_WIDGET (item), 0);
+
+      if (!was_inserted &&
+	  (g_list_last (*band_list)->data != band ||
+	   go_dock_band_get_num_children (band) > 0))
+        {
+	  was_inserted = insert_into_band_list (
+		  dock, band_list, orientation, item, FALSE);
+	}
+
+      if (!was_inserted)
+        {
+	  if (placement == GO_DOCK_TOP)
+	    {
+	      was_inserted = insert_into_band_list (
+		      dock, &dock->bottom_bands, orientation, item, TRUE);
+	    }
+	  else if (placement == GO_DOCK_LEFT)
+	    {
+	      was_inserted = insert_into_band_list (
+		      dock, &dock->right_bands, orientation, item, TRUE);
+	    }
+	  else
+	    end_stop = TRUE;
+	}
+    }
+
+  if (!end_stop && !was_inserted)
+    {
+      orientation = (orientation == GTK_ORIENTATION_HORIZONTAL) ?
+	      GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL;
+      if (placement == GO_DOCK_TOP ||
+	  placement == GO_DOCK_BOTTOM)
+        {
+          if (switch_side_dir == -1)
+	    was_inserted = insert_into_band_list (
+		    dock, &dock->left_bands, orientation, item, FALSE);
+	  else
+            was_inserted = insert_into_band_list (
+		    dock, &dock->right_bands, orientation, item, TRUE);
+	}
+      else
+        {
+          if (switch_side_dir == -1)
+	    was_inserted = insert_into_band_list (
+		    dock, &dock->top_bands, orientation, item, FALSE);
+	  else
+            was_inserted = insert_into_band_list (
+		    dock, &dock->bottom_bands, orientation, item, TRUE);
+	}
+    }
+
+  if (!was_inserted)
+    { /* geometry issue */
+      if (!go_dock_band_append (band, GTK_WIDGET (item), 0))
+	g_error ("no space in fallback original band");
+    }
+
+  if (go_dock_band_get_num_children (band) == 0)
+    gtk_widget_destroy (GTK_WIDGET (band));
+
+  g_object_unref (G_OBJECT (item));
+
+  return TRUE;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-dock.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,140 @@
+/* File import from bonoboui to libgoffice by import-bonobo.  Do not edit.  */
+
+/* go-dock.h
+
+   Copyright (C) 1998 Free Software Foundation
+
+   All rights reserved.
+
+   The Gnome Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The Gnome Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the Gnome Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+   Boston, MA  02110-1301 USA.
+
+   Author: Ettore Perazzoli <ettore at comm2000.it>
+*/
+/*
+  @NOTATION@
+*/
+
+#ifndef _GO_DOCK_H
+#define _GO_DOCK_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GO_TYPE_DOCK            (go_dock_get_type ())
+#define GO_DOCK(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_DOCK, GoDock))
+#define GO_DOCK_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GO_TYPE_DOCK, GoDockClass))
+#define GO_IS_DOCK(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_DOCK))
+#define GO_IS_DOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GO_TYPE_DOCK))
+#define GO_DOCK_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GO_TYPE_DOCK, GoDockClass))
+
+typedef enum
+{
+  GO_DOCK_TOP,
+  GO_DOCK_RIGHT,
+  GO_DOCK_BOTTOM,
+  GO_DOCK_LEFT,
+  GO_DOCK_FLOATING
+} GoDockPlacement;
+
+typedef struct _GoDock GoDock;
+typedef struct _GoDockPrivate GoDockPrivate;
+typedef struct _GoDockClass GoDockClass;
+
+#include <goffice/gui-utils/go-dock-band.h>
+#include <goffice/gui-utils/go-dock-layout.h>
+
+struct _GoDock
+{
+  GtkContainer container;
+
+  GtkWidget *client_area;
+
+  /* GoDockBands associated with this dock.  */
+  GList *top_bands;
+  GList *bottom_bands;
+  GList *right_bands;
+  GList *left_bands;
+
+  /* Children that are currently not docked.  */
+  GList *floating_children;     /* GtkWidget */
+
+  /* Client rectangle before drag.  */
+  GtkAllocation client_rect;
+
+  guint floating_items_allowed : 1;
+
+  /*< private >*/
+  GoDockPrivate *_priv;
+};
+
+struct _GoDockClass
+{
+  GtkContainerClass parent_class;
+
+  void (* layout_changed) (GoDock *dock);
+
+  gpointer dummy[4];
+};
+
+GtkWidget     *go_dock_new               (void);
+GtkType        go_dock_get_type          (void) G_GNUC_CONST;
+
+void           go_dock_allow_floating_items
+                                            (GoDock *dock,
+                                             gboolean enable);
+
+void           go_dock_add_item          (GoDock             *dock,
+                                             GoDockItem         *item,
+                                             GoDockPlacement  placement,
+                                             guint                  band_num,
+                                             gint                   position,
+                                             guint                  offset,
+                                             gboolean               in_new_band);
+
+void           go_dock_add_floating_item (GoDock *dock,
+                                             GoDockItem *widget,
+                                             gint x, gint y,
+                                             GtkOrientation orientation);
+
+void             go_dock_set_client_area   (GoDock             *dock,
+						GtkWidget             *widget);
+
+GtkWidget       *go_dock_get_client_area   (GoDock             *dock);
+
+GoDockItem  *go_dock_get_item_by_name  (GoDock *dock,
+						const gchar *name,
+						GoDockPlacement *placement_return,
+						guint *num_band_return,
+						guint *band_position_return,
+						guint *offset_return);
+
+GoDockLayout *go_dock_get_layout      (GoDock *dock);
+
+gboolean          go_dock_add_from_layout (GoDock *dock,
+					       GoDockLayout *layout);
+
+/* protected */
+#if 1 /* defined(GO_UI_INTERNAL) */
+gint _bonobo_dock_handle_key_nav (GoDock     *dock,
+				  GoDockBand *band,
+				  GoDockItem *item,
+				  GdkEventKey    *event);
+#endif /* GO_UI_INTERNAL */
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,561 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * A font selector widget.  This is a simplified version of the
+ * GnomePrint font selector widget.
+ *
+ * Authors:
+ *   Jody Goldberg (jody at gnome.org)
+ *   Miguel de Icaza (miguel at gnu.org)
+ *   Almer S. Tigelaar (almer at gnome.org)
+ */
+#include <goffice/goffice-config.h>
+#include "go-font-sel.h"
+#include <goffice/utils/go-font.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/utils/go-color.h>
+
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkscrolledwindow.h>
+#include <gtk/gtktreeview.h>
+#include <gtk/gtktreeselection.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkentry.h>
+
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-text.h>
+
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <errno.h>
+#include <math.h>
+#include <stdlib.h>
+
+struct _GOFontSel {
+	GtkHBox		box;
+	GladeXML	*gui;
+
+	GtkWidget	*font_name_entry;
+	GtkWidget	*font_style_entry;
+	GtkWidget	*font_size_entry;
+	GtkTreeView	*font_name_list;
+	GtkTreeView	*font_style_list;
+	GtkTreeView	*font_size_list;
+
+	FooCanvas	*font_preview_canvas;
+	FooCanvasItem	*font_preview_text;
+
+	GOFont		*base, *current;
+	PangoAttrList	*modifications;
+
+	GSList          *family_names;
+	GSList          *font_sizes;
+};
+
+typedef struct {
+	GtkHBoxClass parent_class;
+
+	void (* font_changed) (GOFontSel *gfs, PangoAttrList *modfications);
+} GOFontSelClass;
+
+enum {
+	FONT_CHANGED,
+	LAST_SIGNAL
+};
+
+static guint gfs_signals[LAST_SIGNAL] = { 0 };
+static GtkObjectClass *gfs_parent_class;
+
+static void
+go_font_sel_add_attr (GOFontSel *gfs, PangoAttribute *attr0, PangoAttribute *attr1)
+{
+	attr0->start_index = 0;
+	attr0->end_index = -1;
+	pango_attr_list_change (gfs->modifications, attr0);
+	if (attr1 != NULL) {
+		attr1->start_index = 0;
+		attr1->end_index = -1;
+		pango_attr_list_change (gfs->modifications, attr1);
+	}
+
+}
+static void
+go_font_sel_emit_changed (GOFontSel *gfs)
+{
+	g_signal_emit (G_OBJECT (gfs),
+		gfs_signals [FONT_CHANGED], 0, gfs->modifications);
+	foo_canvas_item_set (gfs->font_preview_text,
+		"attributes",  gfs->modifications,
+		NULL);
+}
+
+static void
+cb_list_adjust (GtkTreeView* view)
+{
+	GtkTreeModel *model;
+	GtkTreeIter iter;
+	GtkTreePath *path;
+	GtkScrolledWindow* scroll;
+	GdkRectangle rect;
+	GtkAdjustment *adj;
+	int pos, height, child_height;
+
+	if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (view), &model, &iter)) {
+		path = gtk_tree_model_get_path (model, &iter);
+		scroll = GTK_SCROLLED_WINDOW (gtk_widget_get_parent (GTK_WIDGET (view)));
+		height = GTK_WIDGET (view)->allocation.height;
+		child_height = GTK_WIDGET (view)->requisition.height;
+		if (height < child_height) {
+			gtk_tree_view_get_cell_area (view, path, NULL, &rect);
+			adj = gtk_scrolled_window_get_vadjustment (scroll);
+			pos = gtk_adjustment_get_value (adj);
+			if (rect.y < 0)
+				pos += rect.y;
+			else if (rect.y + rect.height > height)
+				pos += rect.y + rect.height - height;
+			gtk_adjustment_set_value (adj, pos);
+			gtk_scrolled_window_set_vadjustment (scroll, adj);
+		}
+		gtk_tree_path_free (path);
+	}
+}
+
+static void
+list_init (GtkTreeView* view)
+{
+	GtkCellRenderer *renderer;
+	GtkListStore *store;
+	GtkTreeViewColumn *column;
+
+	gtk_tree_view_set_headers_visible (view, FALSE);
+	store = gtk_list_store_new (1, G_TYPE_STRING);
+	gtk_tree_view_set_model (view, GTK_TREE_MODEL (store));
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes (
+			NULL, renderer, "text", 0, NULL);
+	gtk_tree_view_column_set_expand (column, TRUE);
+	gtk_tree_view_append_column (view, column);
+	g_signal_connect (view, "realize", G_CALLBACK (cb_list_adjust), NULL);
+}
+
+static void
+font_selected (GtkTreeSelection *selection, GOFontSel *gfs)
+{
+	gchar *text;
+	GtkTreeModel *model;
+	GtkTreeIter   iter;
+
+	if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+		gtk_tree_model_get (model, &iter, 0, &text, -1);
+		gtk_entry_set_text (GTK_ENTRY (gfs->font_name_entry), text);
+		go_font_sel_add_attr (gfs, pango_attr_family_new (text), NULL);
+		go_font_sel_emit_changed (gfs);
+		g_free (text);
+	}
+}
+
+static void
+gfs_fill_font_name_list (GOFontSel *gfs)
+{
+	GSList *ptr;
+	GtkListStore *store;
+	GtkTreeIter iter;
+	PangoContext *context;
+
+#warning "FIXME: We need to do this when we realize the widget as we don't have a screen until then."
+	context = gtk_widget_get_pango_context (GTK_WIDGET (gfs));
+	gfs->family_names = go_fonts_list_families (context);
+
+	list_init (gfs->font_name_list);
+	store = GTK_LIST_STORE (gtk_tree_view_get_model (gfs->font_name_list));
+	for (ptr = gfs->family_names; ptr != NULL; ptr = ptr->next) {
+		gtk_list_store_append (store, &iter);
+		gtk_list_store_set (store, &iter, 0, ptr->data, -1);
+	}
+
+	g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (gfs->font_name_list)),
+			  "changed",
+			  G_CALLBACK (font_selected), gfs);
+}
+
+static char const *styles[] = {
+	 N_("Normal"),
+	 N_("Bold"),
+	 N_("Bold italic"),
+	 N_("Italic"),
+	 NULL
+};
+
+static void
+style_selected (GtkTreeSelection *selection,
+		GOFontSel *gfs)
+{
+	GtkTreeModel *model;
+	GtkTreeIter iter;
+	GtkTreePath *path;
+	int row;
+
+	if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+		path = gtk_tree_model_get_path (model, &iter);
+		row = *gtk_tree_path_get_indices (path);
+		gtk_tree_path_free (path);
+		gtk_entry_set_text (GTK_ENTRY (gfs->font_style_entry), _(styles[row]));
+		go_font_sel_add_attr (gfs,
+			pango_attr_weight_new ((row == 1 || row == 2)
+				?  PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL),
+			pango_attr_style_new ((row == 2 || row == 3)
+				? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL));
+		go_font_sel_emit_changed (gfs);
+	}
+}
+
+static void
+gfs_fill_font_style_list (GOFontSel *gfs)
+{
+	 int i;
+	GtkListStore *store;
+	GtkTreeIter iter;
+
+	list_init (gfs->font_style_list);
+	store = GTK_LIST_STORE (gtk_tree_view_get_model (gfs->font_style_list));
+	for (i = 0; styles[i] != NULL; i++) {
+		gtk_list_store_append (store, &iter);
+		gtk_list_store_set (store, &iter, 0, _(styles[i]), -1);
+	}
+	g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (gfs->font_style_list)),
+		"changed",
+		G_CALLBACK (style_selected), gfs);
+}
+
+static void
+select_row (GtkTreeView *list, int row)
+{
+	GtkTreePath *path;
+
+	if (row < 0)
+		gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (list));
+	else {
+		path = gtk_tree_path_new_from_indices (row, -1);
+
+		gtk_tree_selection_select_path (gtk_tree_view_get_selection (list), path);
+		if (GTK_WIDGET_REALIZED (list))
+			cb_list_adjust (list);
+		gtk_tree_path_free (path);
+	}
+}
+
+static double
+size_set_text (GOFontSel *gfs, char const *size_text)
+{
+	char *end;
+	double size;
+	errno = 0; /* strtol sets errno, but does not clear it.  */
+	size = strtod (size_text, &end);
+	size = ((int)floor ((size * 20.) + .5)) / 20.;	/* round .05 */
+
+	if (size_text != end && errno != ERANGE && 1. <= size && size <= 400.) {
+		gtk_entry_set_text (GTK_ENTRY (gfs->font_size_entry), size_text);
+		go_font_sel_add_attr (gfs,
+			pango_attr_size_new (size * PANGO_SCALE), NULL);
+		go_font_sel_emit_changed (gfs);
+		return size;
+	}
+	return -1;
+}
+
+static void
+size_selected (GtkTreeSelection *selection,
+	       GOFontSel *gfs)
+{
+	GtkTreeModel *model;
+	GtkTreeIter iter;
+	char *size_text;
+
+	if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+		gtk_tree_model_get (model, &iter, 0, &size_text, -1);
+		size_set_text (gfs, size_text);
+		g_free (size_text);
+	}
+}
+
+static void
+size_changed (GtkEntry *entry, GOFontSel *gfs)
+{
+	double size = size_set_text (gfs, gtk_entry_get_text (entry));
+
+	if (size > 0) {
+		int psize = (int)(size * PANGO_SCALE + 0.5);
+		int i = 0;
+		GSList *l;
+
+		for (l = gfs->font_sizes; l; i++, l = l->next) {
+			int this_psize = GPOINTER_TO_INT (l->data);
+			if (this_psize == psize)
+				break;
+		}
+		g_signal_handlers_block_by_func (
+			gtk_tree_view_get_selection (gfs->font_size_list),
+			size_selected, gfs);
+		select_row (gfs->font_size_list, (l ? i : -1));
+		g_signal_handlers_unblock_by_func (
+			gtk_tree_view_get_selection (gfs->font_size_list),
+			size_selected, gfs);
+	}
+}
+
+static void
+gfs_fill_font_size_list (GOFontSel *gfs)
+{
+	GtkListStore *store;
+	GtkTreeIter   iter;
+	GSList       *ptr;
+
+	gfs->font_sizes = go_fonts_list_sizes ();
+
+	list_init (gfs->font_size_list);
+	store = GTK_LIST_STORE (gtk_tree_view_get_model (gfs->font_size_list));
+	for (ptr = gfs->font_sizes; ptr != NULL ; ptr = ptr->next) {
+		int psize = GPOINTER_TO_INT (ptr->data);
+		char *size_text = g_strdup_printf ("%g", psize / (double)PANGO_SCALE);
+		gtk_list_store_append (store, &iter);
+		gtk_list_store_set (store, &iter, 0, size_text, -1);
+		g_free (size_text);
+	}
+	g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (gfs->font_size_list)),
+		"changed",
+		G_CALLBACK (size_selected), gfs);
+	g_signal_connect (G_OBJECT (gfs->font_size_entry),
+		"changed",
+		G_CALLBACK (size_changed), gfs);
+}
+
+static void
+canvas_size_changed (G_GNUC_UNUSED GtkWidget *widget,
+		     GtkAllocation *allocation, GOFontSel *gfs)
+{
+	int width  = allocation->width - 1;
+	int height = allocation->height - 1;
+
+	foo_canvas_item_set (gfs->font_preview_text,
+		"x", (double)width/2.,
+		"y", (double)height/2.,
+		NULL);
+
+	foo_canvas_set_scroll_region (gfs->font_preview_canvas, 0, 0,
+				      width, height);
+}
+
+static void
+gfs_init (GOFontSel *gfs)
+{
+	GtkWidget *w;
+
+	gfs->gui = go_libglade_new ("go-font-sel.glade", "toplevel-table", NULL, NULL);
+	if (gfs->gui == NULL)
+                return;
+
+	gfs->modifications = pango_attr_list_new ();
+
+	gtk_box_pack_start_defaults (GTK_BOX (gfs),
+		glade_xml_get_widget (gfs->gui, "toplevel-table"));
+	gfs->font_name_entry  = glade_xml_get_widget (gfs->gui, "font-name-entry");
+	gfs->font_style_entry = glade_xml_get_widget (gfs->gui, "font-style-entry");
+	gfs->font_size_entry  = glade_xml_get_widget (gfs->gui, "font-size-entry");
+	gfs->font_name_list  = GTK_TREE_VIEW (glade_xml_get_widget (gfs->gui, "font-name-list"));
+	gfs->font_style_list = GTK_TREE_VIEW (glade_xml_get_widget (gfs->gui, "font-style-list"));
+	gfs->font_size_list  = GTK_TREE_VIEW (glade_xml_get_widget (gfs->gui, "font-size-list"));
+
+	w = foo_canvas_new ();
+	gfs->font_preview_canvas = FOO_CANVAS (w);
+	foo_canvas_set_scroll_region (gfs->font_preview_canvas, -1, -1, INT_MAX/2, INT_MAX/2);
+	foo_canvas_scroll_to (gfs->font_preview_canvas, 0, 0);
+	gtk_widget_show_all (w);
+	w = glade_xml_get_widget (gfs->gui, "font-preview-frame");
+	gtk_container_add (GTK_CONTAINER (w), GTK_WIDGET (gfs->font_preview_canvas));
+
+	gfs->font_preview_text = FOO_CANVAS_ITEM (foo_canvas_item_new (
+		foo_canvas_root (gfs->font_preview_canvas),
+		FOO_TYPE_CANVAS_TEXT,
+		NULL));
+	go_font_sel_set_sample_text (gfs, NULL); /* init to default */
+
+	g_signal_connect (G_OBJECT (gfs->font_preview_canvas),
+		"size-allocate",
+		G_CALLBACK (canvas_size_changed), gfs);
+
+	gfs_fill_font_name_list (gfs);
+	gfs_fill_font_style_list (gfs);
+	gfs_fill_font_size_list (gfs);
+}
+
+static void
+gfs_destroy (GtkObject *object)
+{
+	GOFontSel *gfs = GO_FONT_SEL (object);
+
+	if (gfs->gui) {
+		g_object_unref (G_OBJECT (gfs->gui));
+		gfs->gui = NULL;
+	}
+	if (gfs->base != NULL) {
+		go_font_unref (gfs->base);
+		gfs->base = NULL;
+	}
+	if (gfs->current != NULL) {
+		go_font_unref (gfs->current);
+		gfs->current = NULL;
+	}
+	if (gfs->modifications != NULL) {
+		pango_attr_list_unref (gfs->modifications);
+		gfs->modifications = NULL;
+	}
+	if (gfs->family_names) {
+		g_slist_foreach (gfs->family_names, (GFunc)g_free, NULL);
+		g_slist_free (gfs->family_names);
+		gfs->family_names = NULL;
+	}
+	if (gfs->font_sizes) {
+		g_slist_free (gfs->font_sizes);
+		gfs->font_sizes = NULL;
+	}
+
+	gfs_parent_class->destroy (object);
+}
+
+static void
+gfs_class_init (GObjectClass *klass)
+{
+	GtkObjectClass *gto_class = (GtkObjectClass *) klass;
+
+	gto_class->destroy = gfs_destroy;
+
+	gfs_parent_class = g_type_class_peek (gtk_hbox_get_type ());
+
+	gfs_signals [FONT_CHANGED] =
+		g_signal_new (
+			"font_changed",
+			G_OBJECT_CLASS_TYPE (klass),
+			G_SIGNAL_RUN_LAST,
+			G_STRUCT_OFFSET (GOFontSelClass, font_changed),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__POINTER,
+			G_TYPE_NONE, 1, G_TYPE_POINTER);
+}
+
+GSF_CLASS (GOFontSel, go_font_sel,
+	   gfs_class_init, gfs_init, GTK_TYPE_HBOX)
+
+GtkWidget *
+go_font_sel_new (void)
+{
+	return g_object_new (GO_FONT_SEL_TYPE, NULL);
+}
+
+void
+go_font_sel_editable_enters (GOFontSel *gfs, GtkWindow *dialog)
+{
+	go_editable_enters (dialog,
+		GTK_WIDGET (gfs->font_name_entry));
+	go_editable_enters (dialog,
+		GTK_WIDGET (gfs->font_style_entry));
+	go_editable_enters (dialog,
+		GTK_WIDGET (gfs->font_size_entry));
+}
+
+void
+go_font_sel_set_sample_text (GOFontSel *gfs, char const *text)
+{
+	g_return_if_fail (IS_GO_FONT_SEL (gfs));
+	foo_canvas_item_set (gfs->font_preview_text,
+		/* xgettext: This text is used as a sample when selecting a font
+		 * please choose a translation that would produce common
+		 * characters specific to the target alphabet. */
+		"text",  ((text == NULL) ? _("AaBbCcDdEe12345") : text),
+		NULL);
+}
+
+GOFont const *
+go_font_sel_get_font (GOFontSel const *gfs)
+{
+	g_return_val_if_fail (IS_GO_FONT_SEL (gfs), NULL);
+	return gfs->current;
+}
+
+static void
+go_font_sel_set_name (GOFontSel *gfs, char const *font_name)
+{
+	GSList *ptr;
+	int row;
+
+	for (row = 0, ptr = gfs->family_names; ptr != NULL; ptr = ptr->next, row++)
+		if (g_ascii_strcasecmp (font_name, ptr->data) == 0)
+			break;
+	select_row (gfs->font_name_list, (ptr != NULL) ? row : -1);
+}
+
+static void
+go_font_sel_set_style (GOFontSel *gfs, gboolean is_bold, gboolean is_italic)
+{
+	int n;
+
+	if (is_bold) {
+		if (is_italic)
+			n = 2;
+		else
+			n = 1;
+	} else {
+		if (is_italic)
+			n = 3;
+		else
+			n = 0;
+	}
+	select_row (gfs->font_style_list, n);
+
+	go_font_sel_add_attr (gfs, 
+		pango_attr_weight_new (is_bold ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL),
+		pango_attr_style_new (is_italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL));
+#warning "Do we really need the following line?"
+	go_font_sel_emit_changed (gfs);
+}
+
+static void
+go_font_sel_set_points (GOFontSel *gfs,
+			double point_size)
+{
+	const char *old_text = gtk_entry_get_text (GTK_ENTRY (gfs->font_size_entry));
+	char *buffer = g_strdup_printf ("%g", point_size);
+	if (strcmp (old_text, buffer) != 0)
+		gtk_entry_set_text (GTK_ENTRY (gfs->font_size_entry), buffer);
+	g_free (buffer);
+}
+
+static void
+go_font_sel_set_strike (GOFontSel *gfs, gboolean strike)
+{
+}
+
+static void
+go_font_sel_set_uline (GOFontSel *gfs, int uline)
+{
+}
+
+static void
+go_font_sel_set_color (GOFontSel *gfs, GOColor c)
+{
+}
+
+void
+go_font_sel_set_font (GOFontSel *gfs, GOFont const *font)
+{
+	g_return_if_fail (IS_GO_FONT_SEL (gfs));
+
+	go_font_sel_set_name (gfs, pango_font_description_get_family (font->desc));
+	go_font_sel_set_style (gfs,
+		pango_font_description_get_weight (font->desc) >= PANGO_WEIGHT_BOLD,
+		pango_font_description_get_style (font->desc) != PANGO_STYLE_NORMAL);
+	go_font_sel_set_points (gfs,
+		pango_font_description_get_size (font->desc) / PANGO_SCALE);
+	go_font_sel_set_strike (gfs, font->strikethrough);
+	go_font_sel_set_uline (gfs, font->underline);
+	go_font_sel_set_color (gfs, font->color);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,277 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="font-toplevel">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+
+  <child>
+    <widget class="GtkTable" id="toplevel-table">
+      <property name="visible">True</property>
+      <property name="n_rows">4</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">4</property>
+      <property name="column_spacing">4</property>
+
+      <child>
+	<widget class="GtkEntry" id="font-style-entry">
+	  <property name="visible">True</property>
+	  <property name="editable">False</property>
+	  <property name="visibility">True</property>
+	  <property name="max_length">0</property>
+	  <property name="text" translatable="yes"></property>
+	  <property name="has_frame">True</property>
+	  <property name="invisible_char" translatable="yes">*</property>
+	  <property name="activates_default">False</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label1">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">Font:</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_CENTER</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label2">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">Font style:</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_CENTER</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label3">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">Size:</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_CENTER</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkEntry" id="font-name-entry">
+	  <property name="visible">True</property>
+	  <property name="has_focus">True</property>
+	  <property name="editable">False</property>
+	  <property name="visibility">True</property>
+	  <property name="max_length">0</property>
+	  <property name="text" translatable="yes"></property>
+	  <property name="has_frame">True</property>
+	  <property name="invisible_char" translatable="yes">*</property>
+	  <property name="activates_default">False</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkFrame" id="font-preview-frame">
+	  <property name="visible">True</property>
+	  <property name="label_xalign">0</property>
+	  <property name="label_yalign">0.5</property>
+	  <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label4">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">Preview</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="type">label_item</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">3</property>
+	  <property name="bottom_attach">4</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkEntry" id="font-size-entry">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="editable">True</property>
+	  <property name="visibility">True</property>
+	  <property name="max_length">0</property>
+	  <property name="text" translatable="yes"></property>
+	  <property name="has_frame">True</property>
+	  <property name="invisible_char" translatable="yes">*</property>
+	  <property name="activates_default">False</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkScrolledWindow" id="scrolledwindow2">
+	  <property name="visible">True</property>
+	  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="shadow_type">GTK_SHADOW_IN</property>
+	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	  <child>
+		<widget class="GtkTreeView" id="font-style-list">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="headers_visible">True</property>
+		  <property name="rules_hint">False</property>
+		  <property name="reorderable">False</property>
+		  <property name="enable_search">True</property>
+		</widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkScrolledWindow" id="scrolledwindow1">
+	  <property name="visible">True</property>
+	  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	  <property name="shadow_type">GTK_SHADOW_IN</property>
+	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	  <child>
+		<widget class="GtkTreeView" id="font-name-list">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="headers_visible">True</property>
+		  <property name="rules_hint">False</property>
+		  <property name="reorderable">False</property>
+		  <property name="enable_search">True</property>
+		</widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkScrolledWindow" id="scrolledwindow3">
+	  <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_IN</property>
+	  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	  <child>
+		<widget class="GtkTreeView" id="font-size-list">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="headers_visible">True</property>
+		  <property name="rules_hint">False</property>
+		  <property name="reorderable">False</property>
+		  <property name="enable_search">True</property>
+		</widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	  <property name="x_options">fill</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-font-sel.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,42 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-font-sel.h - Misc GTK+ utilities
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+#ifndef _GO_FONT_SEL_H_
+#define _GO_FONT_SEL_H_
+
+#include <gtk/gtkwindow.h>
+#include <goffice/utils/goffice-utils.h>
+
+G_BEGIN_DECLS
+
+#define GO_FONT_SEL_TYPE	(go_font_sel_get_type ())
+#define GO_FONT_SEL(obj)	(G_TYPE_CHECK_INSTANCE_CAST((obj), GO_FONT_SEL_TYPE, GOFontSel))
+#define IS_GO_FONT_SEL(obj)	(G_TYPE_CHECK_INSTANCE_TYPE((obj), GO_FONT_SEL_TYPE))
+
+typedef struct _GOFontSel GOFontSel;
+
+GType         go_font_sel_get_type (void);
+GtkWidget    *go_font_sel_new      (void);
+void	      go_font_sel_set_font (GOFontSel *fs, GOFont const *font);
+GOFont const *go_font_sel_get_font (GOFontSel const *fs);
+void go_font_sel_editable_enters   (GOFontSel *fs, GtkWindow *dialog);
+void go_font_sel_set_sample_text   (GOFontSel *fs, char const *text);
+
+G_END_DECLS
+
+#endif /* _GO_FONT_SEL_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1214 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * go-format-sel.c: A widget to select a format
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **/
+
+#include <goffice/goffice-config.h>
+#include "go-format-sel.h"
+
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/gtk/go-combo-text.h>
+#include <goffice/utils/format-impl.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-marshalers.h>
+
+#include <gtk/gtkcellrenderertext.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkliststore.h>
+#include <gtk/gtksizegroup.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtktextview.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtktreeselection.h>
+#include <gtk/gtktreeview.h>
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+
+#include <string.h>
+#include <locale.h>
+
+/* The maximum number of chars in the formatting sample */
+#define FORMAT_PREVIEW_MAX 25
+
+#define SETUP_LOCALE_SWITCH char *oldlocale = NULL
+
+#define START_LOCALE_SWITCH						\
+	do {									\
+		if (gfs->locale) {						\
+			currency_date_format_shutdown ();			\
+			oldlocale = g_strdup (setlocale (LC_ALL, NULL));	\
+			go_setlocale (LC_ALL, gfs->locale);		\
+			currency_date_format_init ();				\
+		}								\
+	} while (0)
+
+#define END_LOCALE_SWITCH						\
+	do {									\
+		if (oldlocale) {						\
+			currency_date_format_shutdown ();			\
+			go_setlocale (LC_ALL, oldlocale);			\
+			g_free (oldlocale);					\
+			currency_date_format_init ();				\
+		}								\
+	} while (0)
+
+#define FMT_CUSTOM ((GOFormatFamily)(GO_FORMAT_SPECIAL + 1))
+
+/*Format Categories*/
+static char const *const format_category_names[] = {
+	N_("General"),
+	N_("Number"),
+	N_("Currency"),
+	N_("Accounting"),
+	N_("Date"),
+	N_("Time"),
+	N_("Percentage"),
+	N_("Fraction"),
+	N_("Scientific"),
+	N_("Text"),
+	N_("Special"),
+	N_("Custom"),
+	NULL
+};
+
+/* The available format widgets */
+typedef enum {
+	F_GENERAL_EXPLANATION,
+	F_NUMBER_EXPLANATION,
+	F_CURRENCY_EXPLANATION,
+	F_ACCOUNTING_EXPLANATION,
+	F_DATE_EXPLANATION,
+	F_TIME_EXPLANATION,
+	F_PERCENTAGE_EXPLANATION,
+	F_FRACTION_EXPLANATION,
+	F_SCIENTIFIC_EXPLANATION,
+	F_TEXT_EXPLANATION,
+	F_SPECIAL_EXPLANATION,
+	F_CUSTOM_EXPLANATION,
+
+	F_SEPARATOR,
+	F_SYMBOL_LABEL,		F_SYMBOL,
+	F_ENTRY,
+	F_LIST_LABEL,		F_LIST_SCROLL,		F_LIST,
+	F_DECIMAL_SPIN,	
+	F_NEGATIVE_LABEL,	F_NEGATIVE_SCROLL,	F_NEGATIVE,
+	F_DECIMAL_LABEL,	F_CODE_LABEL,	F_SYMBOL_BOX,
+	F_DECIMAL_BOX,	F_CODE_BOX,	F_MAX_WIDGET
+} FormatWidget;
+
+struct  _GOFormatSel {
+	GtkHBox   box;
+	GladeXML *gui;
+
+	gpointer  value;
+	char	 *locale;
+
+	gboolean  enable_edit;
+
+	GODateConventions const *date_conv;
+
+	struct {
+		GtkTextView	*preview;
+		GtkWidget	*preview_box;
+		GtkTextBuffer	*preview_buffer;
+
+		GtkWidget	*widget[F_MAX_WIDGET];
+		GtkWidget	*menu;
+		GtkTreeModel	*menu_model;
+		GtkSizeGroup    *size_group;
+
+		struct {
+			GtkTreeView 		*view;
+			GtkListStore		*model;
+			GtkTreeSelection 	*selection;
+		} negative_types;
+
+		struct {
+			GtkTreeView	 *view;
+			GtkListStore	 *model;
+			GtkTreeSelection *selection;
+		} formats;
+
+		gulong          entry_changed_id;
+		GOFormat	*spec;
+		gint		current_type;
+		int		num_decimals;
+		int		negative_format;
+		int		currency_index;
+		gboolean	use_separator;
+	} format;
+};
+
+typedef struct {
+	GtkHBoxClass parent_class;
+
+	gboolean  (*format_changed)   (GOFormatSel *gfs, char const *fmt);
+	char     *(*generate_preview) (GOFormatSel *gfs, char *fmt);
+} GOFormatSelClass;
+
+/* Signals we emit */
+enum {
+	FORMAT_CHANGED,
+	GENERATE_PREVIEW,
+	LAST_SIGNAL
+};
+
+static guint go_format_sel_signals [LAST_SIGNAL] = { 0 };
+
+static void format_entry_set_text (GOFormatSel *gfs, gchar *text);
+
+static void
+generate_format (GOFormatSel *gfs)
+{
+	GOFormatFamily const page = gfs->format.current_type;
+	GOFormat *new_format;
+
+	/* 
+	 * It is a strange idea not to reuse GOFormatDetails
+	 * in this file, so build one.
+	 */
+	GOFormatDetails format = gfs->format.spec->family_info;
+	format.thousands_sep = gfs->format.use_separator;
+	format.num_decimals = gfs->format.num_decimals;
+	format.negative_fmt = gfs->format.negative_format;
+	format.currency_symbol_index = gfs->format.currency_index;
+
+	new_format = go_format_new (page, &format);
+	if (new_format) {
+		char *tmp = go_format_as_XL (new_format, TRUE);
+		format_entry_set_text (gfs, tmp);
+		g_free (tmp);
+	}
+
+	go_format_unref (new_format);
+}
+
+static char *
+generate_preview (GOFormatSel *gfs, GOColor *c)
+{
+	char *res = NULL;
+	g_signal_emit (G_OBJECT (gfs),
+		       go_format_sel_signals [GENERATE_PREVIEW], 0,
+		       c, &res);
+	return res;
+}
+
+static void
+draw_format_preview (GOFormatSel *gfs, gboolean regen_format)
+{
+	char		*preview;
+	GOFormat	*sf = NULL;
+	GOColor		 c = 0;
+	GdkColor	 gdk_color;
+
+	if (regen_format)
+		generate_format (gfs);
+
+	if (NULL == (sf = gfs->format.spec))
+		return;
+
+	if (NULL == (preview = generate_preview (gfs, &c)))
+		return;
+
+	if (strlen (preview) > FORMAT_PREVIEW_MAX)
+		strcpy (&preview[FORMAT_PREVIEW_MAX - 5], " ...");
+	gtk_text_buffer_set_text (gfs->format.preview_buffer, preview, -1);
+	if (c != 0)
+		go_color_to_gdk (c, &gdk_color);
+	else
+		gdk_color_parse ("black", &gdk_color);
+	gtk_widget_modify_text (GTK_WIDGET (gfs->format.preview), 
+				GTK_STATE_NORMAL, &gdk_color);
+	g_free (preview);
+}
+
+static void
+fillin_negative_samples (GOFormatSel *gfs)
+{
+	static char const *const decimals = "098765432109876543210987654321";
+	static char const *const formats[4] = {
+		"-%s%s3%s210%s%s%s%s",
+		"%s%s3%s210%s%s%s%s",
+		"(%s%s3%s210%s%s%s%s)",
+		"(%s%s3%s210%s%s%s%s)"
+	};
+	int const n = 30 - gfs->format.num_decimals;
+
+	GOFormatFamily const page = gfs->format.current_type;
+	char const *space_b = "", *currency_b;
+	char const *space_a = "", *currency_a;
+	const char *decimal;
+	const char *thousand_sep;
+	int i;
+	GtkTreeIter  iter;
+	GtkTreePath *path;
+	gboolean more;
+	SETUP_LOCALE_SWITCH;
+
+	g_return_if_fail (page == GO_FORMAT_NUMBER || page == GO_FORMAT_CURRENCY);
+	g_return_if_fail (gfs->format.num_decimals <= 30);
+
+	START_LOCALE_SWITCH;
+
+	if (gfs->format.use_separator)
+		thousand_sep = format_get_thousand ()->str;
+	else
+		thousand_sep = "";
+	if (gfs->format.num_decimals > 0)
+		decimal = format_get_decimal ()->str;
+	else
+		decimal = "";
+
+	if (page == GO_FORMAT_CURRENCY) {
+		currency_b = go_format_currencies[gfs->format.currency_index].symbol;
+		/*
+		 * FIXME : This should be better hidden.
+		 * Ideally the render would do this for us.
+		 */
+		if (currency_b[0] == '[' && currency_b[1] == '$') {
+			char const *end = strchr (currency_b+2, '-');
+			if (end == NULL)
+				end = strchr (currency_b+2, ']');
+			currency_b = g_strndup (currency_b+2, end-currency_b-2);
+		} else
+			currency_b = g_strdup (currency_b);
+
+		if (go_format_currencies[gfs->format.currency_index].has_space)
+			space_b = " ";
+
+		if (!go_format_currencies[gfs->format.currency_index].precedes) {
+			currency_a = currency_b;
+			currency_b = "";
+			space_a = space_b;
+			space_b = "";
+		} else {
+			currency_a = "";
+		}
+	} else
+		currency_a = currency_b = "";
+
+	more = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (gfs->format.negative_types.model), &iter);
+	for (i = 0 ; i < 4; i++) {
+		char *buf = g_strdup_printf (formats[i],
+					     currency_b, space_b, thousand_sep, decimal,
+					     decimals + n, space_a, currency_a);
+		if (!more)
+			gtk_list_store_append (gfs->format.negative_types.model, &iter);
+		gtk_list_store_set (gfs->format.negative_types.model, &iter,
+				    0, i,
+				    1, buf,
+				    2, (i % 2) ? "red" : NULL,
+				    -1);
+		if (more)
+			more = gtk_tree_model_iter_next (GTK_TREE_MODEL (gfs->format.negative_types.model),
+							 &iter);
+
+		g_free (buf);
+	}
+
+	/* If non empty then free the string */
+	if (*currency_a)
+		g_free ((char*)currency_a);
+	if (*currency_b)
+		g_free ((char*)currency_b);
+
+	path = gtk_tree_path_new ();
+	gtk_tree_path_append_index (path, gfs->format.negative_format);
+	gtk_tree_selection_select_path (gfs->format.negative_types.selection, path);
+	gtk_tree_path_free (path);
+
+	END_LOCALE_SWITCH;
+}
+
+static void
+cb_decimals_changed (GtkSpinButton *spin, GOFormatSel *gfs)
+{
+	GOFormatFamily const page = gfs->format.current_type;
+
+	gfs->format.num_decimals = gtk_spin_button_get_value_as_int (spin);
+
+	if (page == GO_FORMAT_NUMBER || page == GO_FORMAT_CURRENCY)
+		fillin_negative_samples (gfs);
+
+	draw_format_preview (gfs, TRUE);
+}
+
+static void
+cb_separator_toggle (GtkObject *obj, GOFormatSel *gfs)
+{
+	gfs->format.use_separator =
+		gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (obj));
+	fillin_negative_samples (gfs);
+
+	draw_format_preview (gfs, TRUE);
+}
+
+static void
+fmt_dialog_init_fmt_list (GOFormatSel *gfs, char const *const *formats,
+			  GtkTreeIter *select)
+{
+	GtkTreeIter iter;
+	char *fmt;
+	char const *cur_fmt = gfs->format.spec->format;
+
+	for (; *formats; formats++) {
+		gtk_list_store_append (gfs->format.formats.model, &iter);
+		fmt = go_format_str_as_XL (*formats, TRUE);
+		gtk_list_store_set (gfs->format.formats.model, &iter,
+				    0, fmt, -1);
+		g_free (fmt);
+
+		if (!strcmp (*formats, cur_fmt))
+			*select = iter;
+	}
+}
+
+static void
+fmt_dialog_enable_widgets (GOFormatSel *gfs, int page)
+{
+	SETUP_LOCALE_SWITCH;
+	static FormatWidget const contents[][12] = {
+		/* General */
+		{
+			F_GENERAL_EXPLANATION,
+			F_MAX_WIDGET
+		},
+		/* Number */
+		{
+			F_NUMBER_EXPLANATION,
+			F_DECIMAL_BOX,
+			F_DECIMAL_LABEL,
+			F_DECIMAL_SPIN,
+			F_SEPARATOR,
+			F_NEGATIVE_LABEL,
+			F_NEGATIVE_SCROLL,
+			F_NEGATIVE,
+			F_MAX_WIDGET
+		},
+		/* Currency */
+		{
+			F_CURRENCY_EXPLANATION,
+			F_DECIMAL_BOX,
+			F_DECIMAL_LABEL,
+			F_DECIMAL_SPIN,
+			F_SEPARATOR,
+			F_SYMBOL_BOX,
+			F_SYMBOL_LABEL,
+			F_SYMBOL,
+			F_NEGATIVE_LABEL,
+			F_NEGATIVE_SCROLL,
+			F_NEGATIVE,
+			F_MAX_WIDGET
+		},
+		/* Accounting */
+		{
+			F_ACCOUNTING_EXPLANATION,
+			F_DECIMAL_BOX,
+			F_DECIMAL_LABEL,
+			F_DECIMAL_SPIN,
+			F_SYMBOL_BOX,
+			F_SYMBOL_LABEL,
+			F_SYMBOL,
+			F_MAX_WIDGET
+		},
+		/* Date */
+		{
+			F_DATE_EXPLANATION,
+			F_LIST_LABEL,
+			F_LIST_SCROLL,
+			F_LIST,
+			F_MAX_WIDGET
+		},
+		/* Time */
+		{
+			F_TIME_EXPLANATION,
+			F_LIST_LABEL,
+			F_LIST_SCROLL,
+			F_LIST,
+			F_MAX_WIDGET
+		},
+		/* Percentage */
+		{
+			F_PERCENTAGE_EXPLANATION,
+			F_DECIMAL_BOX,
+			F_DECIMAL_LABEL,
+			F_DECIMAL_SPIN,
+			F_MAX_WIDGET
+		},
+		/* Fraction */
+		{
+			F_FRACTION_EXPLANATION,
+			F_LIST_LABEL,
+			F_LIST_SCROLL,
+			F_LIST,
+			F_MAX_WIDGET
+		},
+		/* Scientific */
+		{
+			F_SCIENTIFIC_EXPLANATION,
+			F_DECIMAL_BOX,
+			F_DECIMAL_LABEL,
+			F_DECIMAL_SPIN,
+			F_MAX_WIDGET
+		},
+		/* Text */
+		{
+			F_TEXT_EXPLANATION,
+			F_MAX_WIDGET
+		},
+		/* Special */
+		{
+			F_SPECIAL_EXPLANATION,
+			F_MAX_WIDGET
+		},
+		/* Custom */
+		{
+			F_CUSTOM_EXPLANATION,
+			F_CODE_BOX,
+			F_CODE_LABEL,
+			F_ENTRY,
+			F_LIST_LABEL,
+			F_LIST_SCROLL,
+			F_LIST,
+			F_MAX_WIDGET
+		}
+	};
+
+	GOFormatFamily const old_page = gfs->format.current_type;
+	int i;
+	FormatWidget tmp;
+
+	START_LOCALE_SWITCH;
+
+	/* Hide widgets from old page */
+	if (old_page >= 0) {
+		int i, j;
+		FormatWidget wi, wj;
+		for (i = 0; (wi = contents[old_page][i]) != F_MAX_WIDGET ; ++i) {
+			for (j = 0; (wj = contents[page][j]) != F_MAX_WIDGET ; ++j)
+				if (wi == wj)
+					goto stays;
+			gtk_widget_hide (gfs->format.widget[wi]);
+stays:
+			; /* No more */
+		}
+	}
+
+	/* Set the default format if appropriate */
+	if (page == GO_FORMAT_GENERAL ||
+	    page == GO_FORMAT_ACCOUNTING ||
+	    page == GO_FORMAT_FRACTION ||
+	    page == GO_FORMAT_TEXT) {
+		int list_elem = 0;
+		char *tmp;
+		if (page == gfs->format.spec->family)
+			list_elem = gfs->format.spec->family_info.list_element;
+
+		tmp = go_format_str_as_XL (go_format_builtins[page][list_elem], TRUE);
+		format_entry_set_text (gfs, tmp);
+		g_free (tmp);
+	}
+
+	gfs->format.current_type = page;
+	for (i = 0; (tmp = contents[page][i]) != F_MAX_WIDGET ; ++i) {
+		GtkWidget *w = gfs->format.widget[tmp];
+
+		switch (tmp) {
+		case F_LIST: {
+			int start = 0, end = -1;
+			GtkTreeIter select;
+
+			switch (page) {
+			default :
+				;
+			case GO_FORMAT_DATE:
+			case GO_FORMAT_TIME:
+			case GO_FORMAT_FRACTION:
+				start = end = page;
+				break;
+
+			case FMT_CUSTOM:
+				start = 0; end = 8;
+				break;
+			}
+
+			select.stamp = 0;
+			gtk_list_store_clear (gfs->format.formats.model);
+			for (; start <= end ; ++start)
+				fmt_dialog_init_fmt_list (gfs,
+					go_format_builtins[start], &select);
+
+			/* If this is the custom page and the format has
+			* not been found append it */
+			/* TODO We should add the list of other custom formats created.
+			*      It should be easy.  All that is needed is a way to differentiate
+			*      the std formats and the custom formats in the GOFormat hash.
+			*/
+			if  (page == FMT_CUSTOM && select.stamp == 0) {
+				char *tmp = go_format_as_XL (gfs->format.spec, TRUE);
+				format_entry_set_text (gfs, tmp);
+				g_free (tmp);
+			} else if (select.stamp == 0)
+				gtk_tree_model_get_iter_first (
+					GTK_TREE_MODEL (gfs->format.formats.model),
+					&select);
+
+			if (select.stamp != 0) {
+				GtkTreePath *path = gtk_tree_model_get_path (
+					GTK_TREE_MODEL (gfs->format.formats.model),
+					&select);
+				gtk_tree_selection_select_iter (
+					gfs->format.formats.selection,
+					&select);
+				gtk_tree_view_scroll_to_cell (gfs->format.formats.view,
+					path, NULL, FALSE, 0., 0.);
+				gtk_tree_path_free (path);
+			}
+			break;
+		}
+
+		case F_NEGATIVE:
+			fillin_negative_samples (gfs);
+			break;
+
+		case F_DECIMAL_SPIN:
+			gtk_spin_button_set_value (GTK_SPIN_BUTTON (gfs->format.widget[F_DECIMAL_SPIN]),
+						   gfs->format.num_decimals);
+			break;
+
+		case F_SEPARATOR:
+			gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gfs->format.widget[F_SEPARATOR]),
+						      gfs->format.use_separator);
+			break;
+
+		default:
+			; /* Nothing */
+		}
+
+		gtk_widget_show (w);
+	}
+
+	draw_format_preview (gfs, TRUE);
+
+	END_LOCALE_SWITCH;
+}
+
+/*
+ * Callback routine to manage the relationship between the number
+ * formating radio buttons and the widgets required for each mode.
+ */
+
+static void
+cb_format_class_changed (G_GNUC_UNUSED GtkTreeSelection *ignored, 
+			 GOFormatSel *gfs)
+{
+	int selected_item = 0;
+	GList *list;
+	GtkTreeSelection *selection = gtk_tree_view_get_selection 
+		(GTK_TREE_VIEW(gfs->format.menu));
+
+	list = gtk_tree_selection_get_selected_rows 
+		(selection, &gfs->format.menu_model);
+	if (list) {
+		GtkTreePath *path;
+		path = list->data;
+		selected_item = *(gtk_tree_path_get_indices (path));
+
+		if (selected_item >= 0) {
+			fmt_dialog_enable_widgets (gfs, selected_item);
+		}
+		g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+		g_list_free (list);
+	}
+}
+
+static void
+cb_format_entry_changed (GtkEditable *w, GOFormatSel *gfs)
+{
+	char *fmt;
+	if (!gfs->enable_edit)
+		return;
+
+	fmt = go_format_str_delocalize (gtk_entry_get_text (GTK_ENTRY (w)));
+	if (strcmp (gfs->format.spec->format, fmt)) {
+		go_format_unref (gfs->format.spec);
+		gfs->format.spec = go_format_new_from_XL (fmt, FALSE);
+		g_signal_emit (G_OBJECT (gfs),
+			       go_format_sel_signals [FORMAT_CHANGED], 0,
+			       fmt);
+		draw_format_preview (gfs, FALSE);
+	}
+	g_free (fmt);
+}
+
+/*
+ * We only want to emit the number format changed signal once for each
+ * format change. When not blocking signals when calling
+ * gtk_entry_set_text, one would be emitted for deleting the old text
+ * and one for inserting the new. That's why we block the signal and
+ * invoke cb_format_entry_changed explicitly.
+ */
+static void
+format_entry_set_text (GOFormatSel *gfs, gchar *text)
+{
+	GtkEntry *entry = GTK_ENTRY (gfs->format.widget[F_ENTRY]);
+
+	g_signal_handler_block (entry, gfs->format.entry_changed_id);
+	gtk_entry_set_text (entry, text);
+	g_signal_handler_unblock (entry, gfs->format.entry_changed_id);
+	cb_format_entry_changed (GTK_EDITABLE (entry), gfs);
+}
+
+static void
+cb_format_list_select (GtkTreeSelection *selection, GOFormatSel *gfs)
+{
+	GtkTreeIter iter;
+	gchar *text;
+
+	if (!gtk_tree_selection_get_selected (selection, NULL, &iter))
+		return;
+
+	gtk_tree_model_get (GTK_TREE_MODEL (gfs->format.formats.model),
+			    &iter, 0, &text, -1);
+	format_entry_set_text (gfs, text);
+}
+
+static gboolean
+cb_format_currency_select (G_GNUC_UNUSED GtkWidget *ct,
+			   char * new_text, GOFormatSel *gfs)
+{
+	int i;
+
+	/* ignore the clear while assigning a new value */
+	if (!gfs->enable_edit || new_text == NULL || *new_text == '\0')
+		return FALSE;
+
+	for (i = 0; go_format_currencies[i].symbol != NULL ; ++i)
+		if (!strcmp (_(go_format_currencies[i].description), new_text)) {
+			gfs->format.currency_index = i;
+			break;
+		}
+
+	if (gfs->format.current_type == 1 || gfs->format.current_type == 2)
+		fillin_negative_samples (gfs);
+	draw_format_preview (gfs, TRUE);
+
+	return TRUE;
+}
+
+static void
+cb_format_negative_form_selected (GtkTreeSelection *selection, GOFormatSel *gfs)
+{
+	GtkTreeIter iter;
+	int type;
+
+	if (!gtk_tree_selection_get_selected (selection, NULL, &iter))
+		return;
+
+	gtk_tree_model_get (GTK_TREE_MODEL (gfs->format.negative_types.model),
+			    &iter, 0, &type, -1);
+	gfs->format.negative_format = type;
+	draw_format_preview (gfs, TRUE);
+}
+
+static gint
+funny_currency_order (gconstpointer _a, gconstpointer _b)
+{
+	char const *a = (char const *)_a;
+	char const *b = (char const *)_b;
+
+	/* Keep the special 1 char versions, and both euro forms at the top */
+	gboolean a1 = a[0] && (*(g_utf8_next_char (a)) == '\0' ||
+			       0x20AC == g_utf8_get_char (a)); /* euro */
+	gboolean b1 = b[0] && (*(g_utf8_next_char (b)) == '\0' ||
+			       0x20AC == g_utf8_get_char (b)); /* euro */
+
+	if (a1) {
+		if (b1) {
+			return strcmp (a, b);
+		} else {
+			return -1;
+		}
+	} else {
+		if (b1) {
+			return +1;
+		} else {
+			return strcmp (a, b);
+		}
+	}
+}
+
+static void
+set_format_category (GOFormatSel *gfs, int row)
+{
+	GtkTreePath *path;
+	GtkTreeSelection *selection = gtk_tree_view_get_selection 
+		((GTK_TREE_VIEW(gfs->format.menu)));
+
+	path = gtk_tree_path_new_from_indices (row, -1);
+	gtk_tree_selection_select_path  (selection, path);
+	gtk_tree_path_free (path);
+}
+
+
+static void
+set_format_category_menu_from_style (GOFormatSel *gfs)
+{
+	GOFormatFamily page;
+
+	g_return_if_fail (IS_GO_FORMAT_SEL (gfs));
+
+	/* Attempt to extract general parameters from the current format */
+	if ((page = gfs->format.spec->family) < 0)
+		page = FMT_CUSTOM; /* Default to custom */
+
+	set_format_category (gfs, page);
+	fmt_dialog_enable_widgets (gfs, page);
+}
+
+static void
+populate_menu (GOFormatSel *gfs)
+{
+	GtkTreeViewColumn *column;
+	GtkTreeSelection  *selection;
+	GtkTreeIter iter;
+	GtkCellRenderer *renderer;
+	char const * const *categories = format_category_names;
+
+	gfs->format.menu_model = GTK_TREE_MODEL (gtk_list_store_new 
+						 (1, G_TYPE_STRING));
+	gtk_tree_view_set_model (GTK_TREE_VIEW (gfs->format.menu), 
+				 gfs->format.menu_model);
+	selection = gtk_tree_view_get_selection 
+		(GTK_TREE_VIEW(gfs->format.menu));
+	gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
+
+	while (*categories) {
+		gtk_list_store_append 
+			(GTK_LIST_STORE (gfs->format.menu_model), &iter);
+		gtk_list_store_set (GTK_LIST_STORE (gfs->format.menu_model),
+				    &iter, 0, _(*categories), -1);
+		categories++;
+	}
+
+	renderer = gtk_cell_renderer_text_new ();
+	column = gtk_tree_view_column_new_with_attributes ("", renderer,
+							   "text", 0,
+							   NULL);
+	gtk_tree_view_append_column (GTK_TREE_VIEW(gfs->format.menu), column);
+
+	g_signal_connect (selection,
+			  "changed",
+			  G_CALLBACK (cb_format_class_changed), gfs);
+}
+
+
+/*
+ * static void
+ * fmt_dialog_init_format_page (FormatState *state)
+ */
+
+static void
+nfs_init (GOFormatSel *gfs)
+{
+	/* The various format widgets */
+	static char const *const widget_names[] = {
+		"format_general_explanation",
+		"format_number_explanation",
+		"format_currency_explanation",
+		"format_accounting_explanation",
+		"format_date_explanation",
+		"format_time_explanation",
+		"format_percentage_explanation",
+		"format_fraction_explanation",
+		"format_scientific_explanation",
+		"format_text_explanation",
+		"format_special_explanation",
+		"format_custom_explanation",
+
+		"format_separator",
+		"format_symbol_label",
+		"format_symbol_select",
+		"format_entry",
+		"format_list_label",
+		"format_list_scroll",
+		"format_list",
+		"format_number_decimals",
+		"format_negatives_label",
+		"format_negatives_scroll",
+		"format_negatives",
+		"format_decimal_label",
+		"format_code_label",
+		"format_symbol_box",
+		"format_decimal_box",
+		"format_code_box",
+		NULL
+	};
+
+	GtkWidget *tmp;
+	GtkTreeViewColumn *column;
+	GoComboText *combo;
+	char const *name;
+	int i;
+	GOFormatFamily page;
+
+	GtkWidget *toplevel;
+	GtkWidget *old_parent;
+
+	gfs->enable_edit = FALSE;
+	gfs->locale = NULL;
+
+	gfs->gui = go_libglade_new ("go-format-sel.glade", NULL, NULL, NULL);
+	if (gfs->gui == NULL)
+		return;
+
+	toplevel = glade_xml_get_widget (gfs->gui, "number_box");
+	old_parent = gtk_widget_get_toplevel (toplevel);
+	gtk_widget_reparent (toplevel, GTK_WIDGET (gfs));
+	gtk_widget_destroy (old_parent);
+	gtk_widget_queue_resize (toplevel);
+
+	gfs->format.spec = go_format_general ();
+	go_format_ref (gfs->format.spec);
+
+	gfs->format.preview = NULL;
+
+	/* The handlers will set the format family later.  -1 flags that
+	 * all widgets are already hidden. */
+	gfs->format.current_type = -1;
+
+	/* Even if the format was not recognized it has set intelligent defaults */
+	gfs->format.use_separator = gfs->format.spec->family_info.thousands_sep;
+	gfs->format.num_decimals = gfs->format.spec->family_info.num_decimals;
+	gfs->format.negative_format = gfs->format.spec->family_info.negative_fmt;
+	gfs->format.currency_index = gfs->format.spec->family_info.currency_symbol_index;
+
+	gfs->format.preview_box = glade_xml_get_widget (gfs->gui, "preview_box");
+	gfs->format.preview = GTK_TEXT_VIEW (glade_xml_get_widget (gfs->gui, "preview"));
+	{
+		PangoFontMetrics *metrics;
+		PangoContext *context;
+		GtkWidget *w = GTK_WIDGET (gfs->format.preview);
+		gint char_width;
+
+		/* request width in number of chars */
+		context = gtk_widget_get_pango_context (w);
+		metrics = pango_context_get_metrics (context,
+						     gtk_widget_get_style(w)->font_desc,
+						     pango_context_get_language (context));
+		char_width = pango_font_metrics_get_approximate_char_width (metrics);
+		gtk_widget_set_size_request (w, PANGO_PIXELS (char_width) * FORMAT_PREVIEW_MAX, -1);
+		pango_font_metrics_unref (metrics);
+	}
+	gfs->format.preview_buffer = gtk_text_view_get_buffer (gfs->format.preview);
+
+	gfs->format.menu = glade_xml_get_widget (gfs->gui, "format_menu");
+	populate_menu (gfs);
+
+	/* Collect all the required format widgets and hide them */
+	for (i = 0; (name = widget_names[i]) != NULL; ++i) {
+		tmp = glade_xml_get_widget (gfs->gui, name);
+
+		if (tmp == NULL) {
+			g_warning ("nfs_init : failed to load widget %s", name);
+		}
+
+		g_return_if_fail (tmp != NULL);
+
+		gtk_widget_hide (tmp);
+		gfs->format.widget[i] = tmp;
+	}
+
+	/* set minimum heights */
+	gtk_widget_set_size_request (gfs->format.widget[F_LIST], -1, 100);
+	gtk_widget_set_size_request (gfs->format.widget[F_NEGATIVE], -1, 100);
+
+	/* use size group for better widget alignment */
+	gfs->format.size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+	gtk_size_group_add_widget (gfs->format.size_group,
+				   gfs->format.widget[F_SYMBOL_LABEL]);
+	gtk_size_group_add_widget (gfs->format.size_group,
+				   gfs->format.widget[F_DECIMAL_LABEL]);
+
+	/* hide preview by default until a value is set */
+	gtk_widget_hide (gfs->format.preview_box);
+
+	/* setup the structure of the negative type list */
+	gfs->format.negative_types.model = gtk_list_store_new (3,
+							       G_TYPE_INT,
+							       G_TYPE_STRING,
+							       G_TYPE_STRING);
+	gfs->format.negative_types.view = GTK_TREE_VIEW (gfs->format.widget[F_NEGATIVE]);
+	gtk_tree_view_set_model (gfs->format.negative_types.view,
+				 GTK_TREE_MODEL (gfs->format.negative_types.model));
+	column = gtk_tree_view_column_new_with_attributes (_("Negative Number Format"),
+							   gtk_cell_renderer_text_new (),
+							   "text",		1,
+							   "foreground",	2,
+							   NULL);
+	gtk_tree_view_append_column (gfs->format.negative_types.view, column);
+	gfs->format.negative_types.selection =
+		gtk_tree_view_get_selection (gfs->format.negative_types.view);
+	gtk_tree_selection_set_mode (gfs->format.negative_types.selection,
+				     GTK_SELECTION_SINGLE);
+	g_signal_connect (G_OBJECT (gfs->format.negative_types.selection), "changed",
+		G_CALLBACK (cb_format_negative_form_selected), gfs);
+	g_signal_connect (G_OBJECT (gfs->format.widget[F_DECIMAL_SPIN]), "value_changed",
+		G_CALLBACK (cb_decimals_changed), gfs);
+	g_signal_connect (G_OBJECT (gfs->format.widget[F_SEPARATOR]), "toggled",
+		G_CALLBACK (cb_separator_toggle), gfs);
+
+	/* setup custom format list */
+	gfs->format.formats.model = gtk_list_store_new (1, G_TYPE_STRING);
+	gfs->format.formats.view = GTK_TREE_VIEW (gfs->format.widget[F_LIST]);
+	gtk_tree_view_set_model (gfs->format.formats.view,
+		GTK_TREE_MODEL (gfs->format.formats.model));
+	column = gtk_tree_view_column_new_with_attributes (_("Number Formats"),
+		gtk_cell_renderer_text_new (),
+		"text",		0,
+		NULL);
+	gtk_tree_view_append_column (gfs->format.formats.view, column);
+	gfs->format.formats.selection =
+		gtk_tree_view_get_selection (gfs->format.formats.view);
+	gtk_tree_selection_set_mode (gfs->format.formats.selection,
+		GTK_SELECTION_BROWSE);
+	g_signal_connect (G_OBJECT (gfs->format.formats.selection), "changed",
+		G_CALLBACK (cb_format_list_select), gfs);
+
+	/* Setup handler Currency & Accounting currency symbols */
+	combo = GO_COMBO_TEXT (gfs->format.widget[F_SYMBOL]);
+	if (combo != NULL) {
+		GList *ptr, *l = NULL;
+
+		for (i = 0; go_format_currencies[i].symbol != NULL ; ++i)
+			l = g_list_append (l, _((gchar *)go_format_currencies[i].description));
+		l = g_list_sort (l, funny_currency_order);
+
+		for (ptr = l; ptr != NULL ; ptr = ptr->next)
+			go_combo_text_add_item	(combo, ptr->data);
+		g_list_free (l);
+		go_combo_text_set_text (combo,
+			_((char const *)go_format_currencies[gfs->format.currency_index].description),
+			GO_COMBO_TEXT_FROM_TOP);
+		g_signal_connect (G_OBJECT (combo), "entry_changed",
+			G_CALLBACK (cb_format_currency_select), gfs);
+		gtk_label_set_mnemonic_widget (
+			GTK_LABEL (glade_xml_get_widget (gfs->gui, "format_symbol_label")),
+			GTK_WIDGET (combo));
+	}
+
+	/* Setup special handler for Custom */
+	gfs->format.entry_changed_id = g_signal_connect (
+		G_OBJECT (gfs->format.widget[F_ENTRY]), "changed",
+		G_CALLBACK (cb_format_entry_changed), gfs);
+
+	/* Connect signal for format menu */
+	set_format_category_menu_from_style (gfs);
+
+	if ((page = gfs->format.spec->family) < 0)
+		page = FMT_CUSTOM; /* Default to custom */
+	fmt_dialog_enable_widgets (gfs, page);
+
+	gfs->enable_edit = TRUE;
+}
+
+static void
+go_format_sel_finalize (GObject *obj)
+{
+	GOFormatSel *gfs = GO_FORMAT_SEL (obj);
+
+	g_free (gfs->locale);
+	gfs->locale = NULL;
+
+	if (gfs->format.spec) {
+		go_format_unref (gfs->format.spec);
+		gfs->format.spec = NULL;
+	}
+
+	if (gfs->format.size_group) {
+		g_object_unref (gfs->format.size_group);
+		gfs->format.size_group = NULL;
+	}
+
+	if (gfs->gui) {
+		g_object_unref (G_OBJECT (gfs->gui));
+		gfs->gui = NULL;
+	}
+
+	G_OBJECT_CLASS (g_type_class_peek (GTK_TYPE_HBOX))->finalize (obj);
+}
+
+static gboolean
+accumulate_first_string (GSignalInvocationHint *ihint,
+			 GValue                *accum_result,
+			 const GValue          *handler_result,
+			 gpointer               data)
+{
+	gchar const *str = g_value_get_string (handler_result);
+	if (NULL != str) {
+		g_value_set_string (accum_result, str);
+		return FALSE;
+	}
+	return TRUE;
+}
+
+static void
+nfs_class_init (GObjectClass *klass)
+{
+	klass->finalize = go_format_sel_finalize;
+
+	go_format_sel_signals [FORMAT_CHANGED] =
+		g_signal_new ("format_changed",
+			      G_OBJECT_CLASS_TYPE (klass),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOFormatSelClass, format_changed),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__POINTER,
+			      G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+	go_format_sel_signals [GENERATE_PREVIEW] =
+		g_signal_new ("generate-preview",
+			      G_OBJECT_CLASS_TYPE (klass),
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOFormatSelClass, generate_preview),
+			      accumulate_first_string, NULL,
+			      go__STRING__POINTER,
+			      G_TYPE_STRING, 1, G_TYPE_POINTER);
+}
+
+GSF_CLASS (GOFormatSel, go_format_sel,
+	   nfs_class_init, nfs_init, GTK_TYPE_HBOX)
+
+GtkWidget *
+go_format_sel_new (void)
+{
+	return g_object_new (GO_FORMAT_SEL_TYPE, NULL);
+}
+
+void
+go_format_sel_set_focus (GOFormatSel *gfs)
+{
+	g_return_if_fail (IS_GO_FORMAT_SEL (gfs));
+
+	gtk_widget_grab_focus (GTK_WIDGET (gfs->format.menu));
+}
+
+void
+go_format_sel_set_style_format (GOFormatSel *gfs,
+				GOFormat *style_format)
+{
+	GoComboText *combo;
+
+	g_return_if_fail (IS_GO_FORMAT_SEL (gfs));
+	g_return_if_fail (style_format != NULL);
+
+	go_format_ref (style_format);
+
+	go_format_unref (gfs->format.spec);
+
+	gfs->format.spec = style_format;
+
+	gfs->format.use_separator = style_format->family_info.thousands_sep;
+	gfs->format.num_decimals = style_format->family_info.num_decimals;
+	gfs->format.negative_format = style_format->family_info.negative_fmt;
+	gfs->format.currency_index = style_format->family_info.currency_symbol_index;
+
+	combo = GO_COMBO_TEXT (gfs->format.widget[F_SYMBOL]);
+	go_combo_text_set_text
+		(combo,
+		 _(go_format_currencies[gfs->format.currency_index].description),
+		 GO_COMBO_TEXT_FROM_TOP);
+
+	set_format_category_menu_from_style (gfs);
+	draw_format_preview (gfs, TRUE);
+}
+
+void
+go_format_sel_set_dateconv (GOFormatSel *gfs,
+			    GODateConventions const *date_conv)
+{
+	g_return_if_fail (IS_GO_FORMAT_SEL (gfs));
+	g_return_if_fail (date_conv != NULL);
+
+	/* FIXME is it safe ? */
+
+	gfs->date_conv = date_conv;
+
+	draw_format_preview (gfs, TRUE);
+}
+
+GOFormat *
+go_format_sel_get_fmt (GOFormatSel *gfs)
+{
+	g_return_val_if_fail (IS_GO_FORMAT_SEL (gfs), NULL);
+	return gfs->format.spec;
+}
+
+GODateConventions const *
+go_format_sel_get_dateconv (GOFormatSel *gfs)
+{
+	g_return_val_if_fail (IS_GO_FORMAT_SEL (gfs), NULL);
+	return gfs->date_conv;
+}
+
+void
+go_format_sel_show_preview (GOFormatSel *gfs)
+{
+	g_return_if_fail (IS_GO_FORMAT_SEL (gfs));
+	gtk_widget_show (gfs->format.preview_box);
+	draw_format_preview (gfs, TRUE);
+}
+
+void
+go_format_sel_hide_preview (GOFormatSel *gfs)
+{
+	g_return_if_fail (IS_GO_FORMAT_SEL (gfs));
+	gtk_widget_hide (gfs->format.preview_box);
+}
+
+void
+go_format_sel_editable_enters (GOFormatSel *gfs,
+			       GtkWindow *window)
+{
+	g_return_if_fail (IS_GO_FORMAT_SEL (gfs));
+	go_editable_enters (window, gfs->format.widget[F_DECIMAL_SPIN]);
+	go_editable_enters (window, gfs->format.widget[F_ENTRY]);
+}
+
+void		
+go_format_sel_set_locale (GOFormatSel *gfs, 
+			  char const *locale)
+{
+	g_free (gfs->locale);
+	gfs->locale = g_strdup (locale);
+
+	cb_format_class_changed (NULL, gfs);
+}
+
+/* The following utility function should possibly be in format.h but we */
+/* access to the array of category names which are better located here. */
+char const *    
+go_format_sel_format_classification (GOFormat const *style_format)
+{
+	GOFormatFamily page = style_format->family;
+
+	if (page < 0 || page > FMT_CUSTOM)
+		page = FMT_CUSTOM; /* Default to custom */
+
+	return _(format_category_names[page]);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,848 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="number-format-selector">
+  <property name="title" translatable="no"></property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+
+  <child>
+    <widget class="GtkVBox" id="number_box">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child>
+	<widget class="GtkHBox" id="hbox1">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">12</property>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox1">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">12</property>
+
+	      <child>
+		<widget class="GtkVBox" id="vbox4">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label6">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Ca_tegories:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">format_menu</property>
+		      <accessibility>
+			<atkrelation target="format_menu" type="label-for"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkScrolledWindow" id="scrolledwindow1">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		      <child>
+			<widget class="GtkTreeView" id="format_menu">
+			  <property name="border_width">5</property>
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="headers_visible">False</property>
+			  <property name="rules_hint">False</property>
+			  <property name="reorderable">False</property>
+			  <property name="enable_search">True</property>
+			  <accessibility>
+			    <atkrelation target="label6" type="labelled-by"/>
+			  </accessibility>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkVBox" id="preview_box">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label7">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Preview:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">format_menu</property>
+		      <accessibility>
+			<atkrelation target="preview" type="label-for"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkScrolledWindow" id="scrolledwindow2">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		      <child>
+			<widget class="GtkTextView" id="preview">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">False</property>
+			  <property name="justification">GTK_JUSTIFY_LEFT</property>
+			  <property name="wrap_mode">GTK_WRAP_NONE</property>
+			  <property name="cursor_visible">False</property>
+			  <property name="pixels_above_lines">2</property>
+			  <property name="pixels_below_lines">2</property>
+			  <property name="pixels_inside_wrap">0</property>
+			  <property name="left_margin">3</property>
+			  <property name="right_margin">3</property>
+			  <property name="indent">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <accessibility>
+			    <atkrelation target="label7" type="labelled-by"/>
+			  </accessibility>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox2">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkTable" id="table1">
+		  <property name="visible">True</property>
+		  <property name="n_rows">2</property>
+		  <property name="n_columns">2</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">0</property>
+		  <property name="column_spacing">0</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_number_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display numeric values with a fixed number of decimals.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_currency_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display currency amounts.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_accounting_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display amounts in traditional accounting styles.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_date_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display dates and optionally times of day.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_time_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display times of day.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_fraction_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display values as closest fractional approximation.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_scientific_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display values with power-of-ten scaling.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_text_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display and input values as strings with no interpretation.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_custom_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Specify an XL-style format directly</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_special_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes"></property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_percentage_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Display values as percentages.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_general_explanation">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Select an appropriate format automatically.</property>
+		      <property name="use_underline">False</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">True</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">1</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">2</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">2</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options">shrink</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHSeparator" id="hseparator1">
+		  <property name="visible">True</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="format_decimal_box">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_decimal_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Deci_mal places:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_CENTER</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">format_number_decimals</property>
+		      <accessibility>
+			<atkrelation target="format_number_decimals" type="label-for"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSpinButton" id="format_number_decimals">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="climb_rate">1</property>
+		      <property name="digits">0</property>
+		      <property name="numeric">True</property>
+		      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+		      <property name="snap_to_ticks">False</property>
+		      <property name="wrap">False</property>
+		      <property name="adjustment">0 0 30 1 3 3</property>
+		      <accessibility>
+			<atkrelation target="format_decimal_label" type="labelled-by"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkCheckButton" id="format_separator">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="label" translatable="yes">_Use Separator for 1000's</property>
+		      <property name="use_underline">True</property>
+		      <property name="relief">GTK_RELIEF_NORMAL</property>
+		      <property name="active">False</property>
+		      <property name="inconsistent">False</property>
+		      <property name="draw_indicator">True</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">6</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="format_symbol_box">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_symbol_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">S_ymbol:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <accessibility>
+			<atkrelation target="format_symbol_select" type="label-for"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="Custom" id="format_symbol_select">
+		      <property name="visible">True</property>
+		      <property name="creation_function">go_combo_text_glade_new</property>
+		      <property name="int1">0</property>
+		      <property name="int2">0</property>
+		      <property name="last_modification_time">Mon, 07 Oct 2002 16:09:16 GMT</property>
+		      <accessibility>
+			<atkrelation target="format_symbol_label" type="labelled-by"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkTable" id="table2">
+		  <property name="visible">True</property>
+		  <property name="n_rows">2</property>
+		  <property name="n_columns">1</property>
+		  <property name="homogeneous">False</property>
+		  <property name="row_spacing">6</property>
+		  <property name="column_spacing">0</property>
+
+		  <child>
+		    <widget class="GtkScrolledWindow" id="format_list_scroll">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		      <child>
+			<widget class="GtkTreeView" id="format_list">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="headers_visible">False</property>
+			  <property name="rules_hint">False</property>
+			  <property name="reorderable">False</property>
+			  <property name="enable_search">False</property>
+			  <accessibility>
+			    <atkrelation target="format_list_label" type="labelled-by"/>
+			  </accessibility>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkScrolledWindow" id="format_negatives_scroll">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		      <child>
+			<widget class="GtkTreeView" id="format_negatives">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="headers_visible">False</property>
+			  <property name="rules_hint">False</property>
+			  <property name="reorderable">False</property>
+			  <property name="enable_search">True</property>
+			  <accessibility>
+			    <atkrelation target="format_negatives_label" type="labelled-by"/>
+			  </accessibility>
+			</widget>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">1</property>
+		      <property name="bottom_attach">2</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_list_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Format:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">format_list</property>
+		      <accessibility>
+			<atkrelation target="format_list" type="label-for"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_negatives_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Negative number _format:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">format_negatives</property>
+		      <accessibility>
+			<atkrelation target="format_negatives" type="label-for"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="left_attach">0</property>
+		      <property name="right_attach">1</property>
+		      <property name="top_attach">0</property>
+		      <property name="bottom_attach">1</property>
+		      <property name="x_options">fill</property>
+		      <property name="y_options"></property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="format_code_box">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="format_code_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">Format c_ode:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">format_entry</property>
+		      <accessibility>
+			<atkrelation target="format_entry" type="label-for"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="format_entry">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="no"></property>
+		      <property name="has_frame">True</property>
+		      <property name="activates_default">False</property>
+		      <accessibility>
+			<atkrelation target="format_code_label" type="labelled-by"/>
+		      </accessibility>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-format-sel.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,58 @@
+/**
+ * go-format-sel.h: A widget to select a format
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **/
+
+#ifndef _GO_FORMAT_SEL_H_
+#define _GO_FORMAT_SEL_H_
+
+#include <gtk/gtkwindow.h>
+#include <goffice/utils/goffice-utils.h>
+
+G_BEGIN_DECLS
+
+#define GO_FORMAT_SEL_TYPE	(go_format_sel_get_type ())
+#define GO_FORMAT_SEL(o)	(G_TYPE_CHECK_INSTANCE_CAST((o), GO_FORMAT_SEL_TYPE, GOFormatSel))
+#define IS_GO_FORMAT_SEL(o)	(G_TYPE_CHECK_INSTANCE_TYPE((o), GO_FORMAT_SEL_TYPE))
+typedef struct _GOFormatSel	GOFormatSel;
+
+GType		go_format_sel_get_type	(void);
+GtkWidget * 	go_format_sel_new  	(void);
+
+void		go_format_sel_set_focus (GOFormatSel *gfs);
+void		go_format_sel_set_style_format (GOFormatSel *gfs,
+						GOFormat *style_format);
+void		go_format_sel_set_locale (GOFormatSel *gfs, 
+					  char const *locale);
+
+GOFormat *go_format_sel_get_fmt		(GOFormatSel *gfs);
+
+GODateConventions const *
+	  go_format_sel_get_dateconv	(GOFormatSel *gfs);
+void	  go_format_sel_set_dateconv	(GOFormatSel *gfs,
+					 GODateConventions const *date_conv);
+
+void	  go_format_sel_show_preview	(GOFormatSel *gfs);
+void	  go_format_sel_hide_preview	(GOFormatSel *gfs);
+void	  go_format_sel_editable_enters	(GOFormatSel *gfs,
+					 GtkWindow *window);
+
+/* FIXME FIXME FIXME does not belong here */
+char const *go_format_sel_format_classification (GOFormat const *style_format);
+
+G_END_DECLS
+
+#endif /* _GO_FORMAT_SEL_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,249 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-graph-widget.c : 
+ *
+ * Copyright (C) 2003-2005 Jean Brefort (jean.brefort at normalesup.org)
+ *  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 Library 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <goffice-config.h>
+#include "go-graph-widget.h"
+#include <gtk/gtkdrawingarea.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-renderer-pixbuf.h>
+#include <goffice/utils/go-math.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+enum {
+	GRAPH_WIDGET_PROP_0,
+	GRAPH_WIDGET_PROP_ASPECT_RATIO,
+};
+
+struct  _GOGraphWidget{
+	GtkDrawingArea	base;
+
+	GogRendererPixbuf *renderer;
+	GogGraph *graph;
+	GogChart *chart; /* first chart created on init */
+	double aspect_ratio, width, height, xoffset, yoffset;
+
+	/* Idle handler ID */
+	guint idle_id;
+};
+
+typedef GtkDrawingAreaClass GOGraphWidgetClass;
+
+static GtkWidgetClass *graph_parent_klass;
+
+/* Size allocation handler for the widget */
+static void
+go_graph_widget_size_allocate (GtkWidget *widget, GtkAllocation *allocation)
+{
+	GOGraphWidget *w = GO_GRAPH_WIDGET (widget);
+	w->width = allocation->width;
+	w->height = allocation->height;
+	if (w->aspect_ratio > 0.) {
+		if (w->height > w->width * w->aspect_ratio) {
+			w->yoffset = (w->height - w->width * w->aspect_ratio) / 2.;
+			w->height = w->width * w->aspect_ratio;
+			w->xoffset = 0;
+		} else {
+			w->xoffset = (w->width - w->height / w->aspect_ratio) / 2.;
+			w->width = w->height / w->aspect_ratio;
+			w->yoffset = 0;
+		}
+	}
+	gog_renderer_pixbuf_update (w->renderer, w->width, w->height, 1.0);
+	graph_parent_klass->size_allocate (widget, allocation);
+}
+
+static gboolean
+go_graph_widget_expose_event (GtkWidget *widget, GdkEventExpose *event)
+{
+	GOGraphWidget *w = GO_GRAPH_WIDGET (widget);
+	GdkPixbuf *pixbuf;
+	GdkRectangle display_rect, draw_rect;
+	GdkRegion *draw_region;
+
+	if (w->idle_id)
+		return TRUE;
+	pixbuf = gog_renderer_pixbuf_get (w->renderer);
+	display_rect.x = w->xoffset;
+	display_rect.y = w->yoffset;
+	display_rect.width  = w->width;
+	display_rect.height = w->height;
+	draw_region = gdk_region_rectangle (&display_rect);
+	gdk_region_intersect (draw_region, event->region);
+	if (!gdk_region_empty (draw_region)) {
+		gdk_region_get_clipbox (draw_region, &draw_rect);
+		gdk_draw_pixbuf (widget->window, NULL, pixbuf,
+			/* pixbuf 0, 0 is at pix_rect.x, pix_rect.y */
+			     draw_rect.x - display_rect.x,
+			     draw_rect.y - display_rect.y,
+			     draw_rect.x,
+			     draw_rect.y,
+			     draw_rect.width,
+			     draw_rect.height,
+			     GDK_RGB_DITHER_NORMAL, 0, 0);
+	}
+	gdk_region_destroy (draw_region);
+	return FALSE;
+}
+
+static void
+go_graph_widget_finalize (GObject *object)
+{
+	GOGraphWidget *w = GO_GRAPH_WIDGET (object);
+	g_object_unref (w->graph);
+	g_object_unref (w->renderer);
+	(G_OBJECT_CLASS (graph_parent_klass))->finalize (object);
+}
+
+static void
+go_graph_widget_set_property (GObject *obj, guint param_id,
+			     GValue const *value, GParamSpec *pspec)
+{
+	GOGraphWidget *w = GO_GRAPH_WIDGET (obj);
+
+	switch (param_id) {
+	case GRAPH_WIDGET_PROP_ASPECT_RATIO :
+		w->aspect_ratio = g_value_get_double (value);
+		w->xoffset = w->yoffset = 0.;
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gtk_widget_queue_resize (GTK_WIDGET (obj));
+}
+
+static void
+go_graph_widget_get_property (GObject *obj, guint param_id,
+			     GValue *value, GParamSpec *pspec)
+{
+	GOGraphWidget *w = GO_GRAPH_WIDGET (obj);
+
+	switch (param_id) {
+	case GRAPH_WIDGET_PROP_ASPECT_RATIO :
+		g_value_set_double (value, w->aspect_ratio);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+go_graph_widget_class_init (GOGraphWidgetClass *klass)
+{
+	GObjectClass *object_class = (GObjectClass *) klass;
+	GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
+
+	graph_parent_klass = (GtkWidgetClass *) g_type_class_peek_parent (klass);
+
+	object_class->finalize = go_graph_widget_finalize;
+	object_class->get_property = go_graph_widget_get_property;
+	object_class->set_property = go_graph_widget_set_property;
+	widget_class->size_allocate = go_graph_widget_size_allocate;
+	widget_class->expose_event = go_graph_widget_expose_event;
+	g_object_class_install_property (object_class,
+		GRAPH_WIDGET_PROP_ASPECT_RATIO,
+		g_param_spec_double ("aspect-ratio", "aspect-ratio",
+			"Aspect ratio for rendering the graph, used only if greater than 0.",
+			-G_MAXDOUBLE, G_MAXDOUBLE, -1., G_PARAM_READWRITE));
+}
+
+static gint
+idle_handler (GOGraphWidget *w)
+{
+	GDK_THREADS_ENTER ();
+
+	gog_renderer_pixbuf_update (w->renderer, w->width, w->height, 1.0);
+
+	/* Reset idle id */
+	w->idle_id = 0;
+	gtk_widget_queue_draw (GTK_WIDGET (w));
+
+	GDK_THREADS_LEAVE ();
+
+	return FALSE;
+}
+
+static void
+go_graph_widget_request_update (GOGraphWidget *w)
+{
+	if (!w->idle_id)
+		w->idle_id = g_idle_add_full (GDK_PRIORITY_REDRAW - 20,
+						   (GSourceFunc) idle_handler, w, NULL);
+}
+
+static void
+go_graph_widget_init (GOGraphWidget *w)
+{
+	w->graph = (GogGraph *) g_object_new (GOG_GRAPH_TYPE, NULL);
+	w->renderer = g_object_new (GOG_RENDERER_PIXBUF_TYPE,
+					  "model", w->graph,
+					  NULL);
+	g_signal_connect_swapped (w->renderer, "request_update",
+		G_CALLBACK (go_graph_widget_request_update), w);
+	/* by default, create one chart and add it to the graph */
+	w->chart = (GogChart *) 
+			gog_object_add_by_name (GOG_OBJECT (w->graph), "Chart", NULL);
+	w->idle_id = 0;
+}
+
+/**
+ * go_graph_widget_new :
+ * 
+ * Creates a new #GOGraphWidget with an embedded #GogGraph. Also add a #GogChart inside
+ * graph.
+ * Returns the newly created #GOGraphWidget.
+ **/
+GtkWidget *
+go_graph_widget_new (void)
+{
+	return GTK_WIDGET (g_object_new (GO_GRAPH_WIDGET_TYPE, NULL));
+}
+
+GSF_CLASS (GOGraphWidget, go_graph_widget,
+	   go_graph_widget_class_init, go_graph_widget_init,
+	   gtk_drawing_area_get_type ())
+
+/**
+ * go_graph_widget_get_graph :
+ * @widget : #GOGraphWidget
+ * 
+ * Returns the #GogGraph embedded in the widget.
+ **/
+GogGraph *
+go_graph_widget_get_graph (GOGraphWidget *widget)
+{
+	g_return_val_if_fail (IS_GO_GRAPH_WIDGET (widget), NULL);
+	return widget->graph;
+}
+
+/**
+ * go_graph_widget_get_chart :
+ * @widget : #GOGraphWidget
+ * 
+ * Returns the #GogChart created by go_graph_widget_new().
+ **/
+GogChart *
+go_graph_widget_get_chart (GOGraphWidget *widget)
+{
+	g_return_val_if_fail (IS_GO_GRAPH_WIDGET (widget), NULL);
+	return widget->chart;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-graph-widget.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-graph-widget.h : 
+ *
+ * Copyright (C) 2003-2005 Jean Brefort (jean.brefort at normalesup.org)
+ *  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 Library 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#ifndef _GO_GRAPH_WIDGET_H_
+#define _GO_GRAPH_WIDGET_H_
+
+#include <glib-object.h>
+#include <gtk/gtkwidget.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-graph.h>
+
+G_BEGIN_DECLS
+
+#define GO_GRAPH_WIDGET_TYPE	(go_graph_widget_get_type ())
+#define GO_GRAPH_WIDGET(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GO_GRAPH_WIDGET_TYPE, GOGraphWidget))
+#define IS_GO_GRAPH_WIDGET(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_GRAPH_WIDGET_TYPE))
+
+typedef struct _GOGraphWidget GOGraphWidget;
+
+GType go_graph_widget_get_type (void);
+GtkWidget *go_graph_widget_new (void);
+
+GogGraph *go_graph_widget_get_graph (GOGraphWidget *widget);
+GogChart *go_graph_widget_get_chart (GOGraphWidget *widget);
+
+G_END_DECLS
+
+#endif  /* _GO_GRAPH_WIDGET_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,678 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * A locale selector widget.
+ *
+ *  Copyright (C) 2003 Andreas J. Guelzow
+ *
+ *  based on code by:
+ *  Copyright (C) 2000 Marco Pesenti Gritti
+ *  from the galeon code base
+ *
+ *  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, 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-locale-sel.h"
+#include "go-optionmenu.h"
+#include <goffice/utils/go-glib-extras.h>
+#include <gtk/gtkcheckmenuitem.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkseparatormenuitem.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+#include <stdlib.h>
+#include <locale.h>
+
+#define LS(x) GO_LOCALE_SEL (x)
+
+#define LOCALE_NAME_KEY "Name of Locale"
+
+/* ------------------------------------------------------------------------- */
+
+typedef enum {
+	LG_WESTERN_EUROPE,
+	LG_EASTERN_EUROPE,
+	LG_NORTH_AMERICA,
+	LG_SOUTHCENTRAL_AMERICA,
+	LG_ASIA,
+	LG_MIDDLE_EAST,
+	LG_AFRICA,
+	LG_AUSTRALIA,
+	LG_OTHER,
+	LG_LAST
+} LocaleGroup;
+
+typedef struct
+{
+        char const *group_name;
+	LocaleGroup const lgroup;
+}
+LGroupInfo;
+
+static LGroupInfo lgroups[] = {
+	{N_("Western Europe"), LG_WESTERN_EUROPE},
+	{N_("Eastern Europe"), LG_EASTERN_EUROPE},
+	{N_("North America"), LG_NORTH_AMERICA},
+	{N_("South & Central America"), LG_SOUTHCENTRAL_AMERICA},
+	{N_("Asia"), LG_ASIA},
+	{N_("Africa"), LG_AFRICA},
+	{N_("Australia"), LG_AUSTRALIA},
+	{N_("Other"), LG_OTHER},
+	{NULL, LG_LAST}
+};
+
+static int
+lgroups_order (const void *_a, const void *_b)
+{
+	const LGroupInfo *a = (const LGroupInfo *)_a;
+	const LGroupInfo *b = (const LGroupInfo *)_b;
+
+	return g_utf8_collate (_(a->group_name), _(b->group_name));
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef struct {
+	gchar const *locale_title;
+	gchar const *locale;
+	LocaleGroup const lgroup;
+	gboolean available;
+} LocaleInfo;
+
+static LocaleInfo locale_trans_array[] = {
+	/*
+	 * The format here is "Country/Language (locale)" or just
+	 * "Country (locale)" when there is only one choice or one
+	 * very dominant language.
+	 *
+	 * Note: lots of people get very emotional over this.  Please
+	 * err on the safe side, if any.
+	 */
+	{N_("United States/English (C)"),                "C",     LG_NORTH_AMERICA},
+	{N_("South Africa Afrikaans (af_ZA)"),           "af_ZA", LG_AFRICA },
+	{N_("Ethiopia/Amharic (am_ET)"),                 "am_ET", LG_AFRICA },
+	{N_("United Arab Emirates (ar_AE)"),             "ar_AE", LG_ASIA },
+	{N_("Bahrain (ar_BH)"),                          "ar_BH", LG_ASIA },
+	{N_("Algeria (ar_DZ)"),                          "ar_DZ", LG_AFRICA },
+	{N_("Egypt (ar_EG)"),                            "ar_EG", LG_AFRICA },
+	{N_("India/Arabic (ar_IN)"),                     "ar_IN", LG_ASIA },
+	{N_("Iraq (ar_IQ)"),                             "ar_IQ", LG_ASIA },
+	{N_("Jordan (ar_JO)"),                           "ar_JO", LG_ASIA },
+	{N_("Kuwait (ar_KW)"),                           "ar_KW", LG_ASIA },
+	{N_("Lebanon (ar_LB)"),                          "ar_LB", LG_ASIA },
+	{N_("Libya (ar_LY)"),                            "ar_LY", LG_AFRICA },
+	{N_("Morocco (ar_MA)"),                          "ar_MA", LG_AFRICA },
+	{N_("Oman (ar_OM)"),                             "ar_OM", LG_ASIA },
+	{N_("Qatar (ar_QA)"),                            "ar_QA", LG_ASIA },
+	{N_("Saudi Arabia (ar_SA)"),                     "ar_SA", LG_ASIA },
+	{N_("Sudan (ar_SD)"),                            "ar_SD", LG_AFRICA },
+	{N_("Syria (ar_SY)"),                            "ar_SY", LG_ASIA },
+	{N_("Tunisia (ar_TN)"),                          "ar_TN", LG_AFRICA },
+	{N_("Yemen (ar_YE)"),                            "ar_YE", LG_ASIA },
+	{N_("Azerbaijan (az_AZ)"),                       "az_AZ", LG_ASIA },
+	{N_("Belarus (be_BY)"),                          "be_BY", LG_EASTERN_EUROPE },
+	{N_("Bulgaria (bg_BG)"),                         "bg_BG", LG_EASTERN_EUROPE },
+	{N_("Bangladesh (bn_BD)"),                       "bn_BD", LG_ASIA },
+	{N_("India/Bengali (bn_IN)"),                    "bn_IN", LG_ASIA },
+	{N_("France/Breton (br_FR)"),                    "br_FR", LG_WESTERN_EUROPE },
+	{N_("Bosnia and Herzegowina (bs_BA)"),           "bs_BA", LG_EASTERN_EUROPE },
+	{N_("Spain/Catalan (ca_ES)"),                    "ca_ES", LG_WESTERN_EUROPE },
+	{N_("Czech Republic (cs_CZ)"),                   "cs_CZ", LG_EASTERN_EUROPE },
+	{N_("Great Britain/Welsh (cy_GB)"),              "cy_GB", LG_WESTERN_EUROPE },
+	{N_("Denmark (da_DK)"),                          "da_DK", LG_WESTERN_EUROPE },
+	{N_("Austria (de_AT)"),                          "de_AT", LG_WESTERN_EUROPE },
+	{N_("Belgium/German (de_BE)"),                   "de_BE", LG_WESTERN_EUROPE },
+	{N_("Switzerland/German (de_CH)"),               "de_CH", LG_WESTERN_EUROPE },
+	{N_("Germany (de_DE)"),                          "de_DE", LG_WESTERN_EUROPE},
+	{N_("Luxembourg/German (de_LU)"),                "de_LU", LG_WESTERN_EUROPE },
+	{N_("Greece (el_GR)"),                           "el_GR", LG_WESTERN_EUROPE },
+	{N_("Australia (en_AU)"),                        "en_AU", LG_AUSTRALIA },
+	{N_("Botswana (en_BW)"),                         "en_BW", LG_AFRICA },
+	{N_("Canada/English (en_CA)"),                   "en_CA", LG_NORTH_AMERICA},
+	{N_("Great Britain (en_GB)"),                    "en_GB", LG_WESTERN_EUROPE},
+	{N_("Hong Kong/English (en_HK)"),                "en_HK", LG_ASIA },
+	{N_("Ireland (en_IE)"),                          "en_IE", LG_WESTERN_EUROPE },
+	{N_("India/English (en_IN)"),                    "en_IN", LG_ASIA },
+	{N_("New Zealand (en_NZ)"),                      "en_NZ", LG_AUSTRALIA },
+	{N_("Philippines (en_PH)"),                      "en_PH", LG_ASIA },
+	{N_("Singapore/English (en_SG)"),                "en_SG", LG_ASIA },
+	{N_("United States/English (en_US)"),            "en_US", LG_NORTH_AMERICA},
+	{N_("South Africa/English (en_ZA)"),             "en_ZA", LG_AFRICA },
+	{N_("Zimbabwe (en_ZW)"),                         "en_ZW", LG_AFRICA },
+	{N_("Esperanto (eo_EO)"),                        "eo_EO", LG_OTHER },
+	{N_("Argentina (es_AR)"),                        "es_AR", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Bolivia (es_BO)"),                          "es_BO", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Chile (es_CL)"),                            "es_CL", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Colombia (es_CO)"),                         "es_CO", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Costa Rica (es_CR)"),                       "es_CR", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Dominican Republic (es_DO)"),               "es_DO", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Ecuador (es_EC)"),                          "es_EC", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Spain (es_ES)"),                            "es_ES", LG_WESTERN_EUROPE },
+	{N_("Guatemala (es_GT)"),                        "es_GT", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Honduras (es_HN)"),                         "es_HN", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Mexico (es_MX)"),                           "es_MX", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Nicaragua (es_NI)"),                        "es_NI", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Panama (es_PA)"),                           "es_PA", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Peru (es_PE)"),                             "es_PE", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Puerto Rico (es_PR)"),                      "es_PR", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Paraguay (es_PY)"),                         "es_PY", LG_SOUTHCENTRAL_AMERICA },
+	{N_("El Salvador (es_SV)"),                      "es_SV", LG_SOUTHCENTRAL_AMERICA },
+	{N_("United States/Spanish (es_US)"),            "es_US", LG_NORTH_AMERICA },
+	{N_("Uruguay (es_UY)"),                          "es_UY", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Venezuela (es_VE)"),                        "es_VE", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Estonia (et_EE)"),                          "et_EE", LG_EASTERN_EUROPE },
+	{N_("Spain/Basque (eu_ES)"),                     "eu_ES", LG_WESTERN_EUROPE },
+	{N_("Iran (fa_IR)"),                             "fa_IR", LG_ASIA },
+	{N_("Finland/Finnish (fi_FI)"),                  "fi_FI", LG_WESTERN_EUROPE },
+	{N_("Faroe Islands (fo_FO)"),                    "fo_FO", LG_WESTERN_EUROPE },
+	{N_("Belgium/French (fr_BE)"),                   "fr_BE", LG_WESTERN_EUROPE },
+	{N_("Canada/French (fr_CA)"),                    "fr_CA", LG_NORTH_AMERICA },
+	{N_("Switzerland/French (fr_CH)"),               "fr_CH", LG_WESTERN_EUROPE },
+	{N_("France (fr_FR)"),                           "fr_FR", LG_WESTERN_EUROPE },
+	{N_("Ireland/Gaelic (ga_IE)"),                   "ga_IE", LG_WESTERN_EUROPE },
+	{N_("Great Britain/Scottish Gaelic (gd_GB)"),    "gd_GB", LG_WESTERN_EUROPE },
+	{N_("Spain/Galician (gl_ES)"),                   "gl_ES", LG_WESTERN_EUROPE },
+	{N_("Great Britain/Manx Gaelic (gv_GB)"),        "gv_GB", LG_WESTERN_EUROPE },
+	{N_("India/Hindu (hi_IN)"),                      "hi_IN", LG_ASIA },
+	{N_("Croatia (hr_HR)"),                          "hr_HR", LG_EASTERN_EUROPE },
+	{N_("Hungary (hu_HU)"),                          "hu_HU", LG_EASTERN_EUROPE },
+	{N_("Armenia (hy_AM)"),                          "hy_AM", LG_EASTERN_EUROPE },
+	{N_("(i18n)"),                                   "i18n",  LG_OTHER },
+	{N_("Indonesia (id_ID)"),                        "id_ID", LG_ASIA },
+	{N_("Iceland (is_IS)"),                          "is_IS", LG_WESTERN_EUROPE },
+	{N_("(iso14651_t1)"),                            "iso14651_t1", LG_OTHER },
+	{N_("Switzerland/Italian (it_CH)"),              "it_CH", LG_WESTERN_EUROPE },
+	{N_("Italy (it_IT)"),                            "it_IT", LG_WESTERN_EUROPE },
+	{N_("Israel/Hebrew (iw_IL)"),                    "iw_IL", LG_ASIA },
+	{N_("Japan (ja_JP)"),                            "ja_JP", LG_ASIA },
+	{N_("Georgia (ka_GE)"),                          "ka_GE", LG_EASTERN_EUROPE },
+	{N_("Greenland (kl_GL)"),                        "kl_GL", LG_WESTERN_EUROPE },
+	{N_("Korea (ko_KR)"),                            "ko_KR", LG_ASIA },
+	{N_("Great Britain/Cornish (kw_GB)"),            "kw_GB", LG_WESTERN_EUROPE },
+	{N_("Lithuania (lt_LT)"),                        "lt_LT", LG_EASTERN_EUROPE },
+	{N_("Latvia (lv_LV)"),                           "lv_LV", LG_EASTERN_EUROPE },
+	{N_("New Zealand/Maori (mi_NZ)"),                "mi_NZ", LG_AUSTRALIA },
+	{N_("Macedonia (mk_MK)"),                        "mk_MK", LG_EASTERN_EUROPE },
+	{N_("India/Marathi (mr_IN)"),                    "mr_IN", LG_ASIA },
+	{N_("Malaysia (ms_MY)"),                         "ms_MY", LG_ASIA },
+	{N_("Malta (mt_MT)"),                            "mt_MT", LG_WESTERN_EUROPE },
+	{N_("Belgium/Flemish (nl_BE)"),                  "nl_BE", LG_WESTERN_EUROPE },
+	{N_("The Netherlands (nl_NL)"),                  "nl_NL", LG_WESTERN_EUROPE },
+	{N_("Norway/Nynorsk (nn_NO)"),                   "nn_NO", LG_WESTERN_EUROPE },
+	{N_("Norway/Bokmal (no_NO)"),                    "no_NO", LG_WESTERN_EUROPE},
+	{N_("France/Occitan (oc_FR)"),                   "oc_FR", LG_WESTERN_EUROPE },
+	{N_("Poland (pl_PL)"),                           "pl_PL", LG_EASTERN_EUROPE },
+	{N_("Brazil (pt_BR)"),                           "pt_BR", LG_SOUTHCENTRAL_AMERICA },
+	{N_("Portugal (pt_PT)"),                         "pt_PT", LG_WESTERN_EUROPE },
+	{N_("Romania (ro_RO)"),                          "ro_RO", LG_EASTERN_EUROPE },
+	{N_("Russia (ru_RU)"),                           "ru_RU", LG_EASTERN_EUROPE },
+	{N_("Ukraine/Russian (ru_UA)"),                  "ru_UA", LG_EASTERN_EUROPE },
+	{N_("Norway/Saami (se_NO)"),                     "se_NO", LG_WESTERN_EUROPE },
+	{N_("Slovakia (sk_SK)"),                         "sk_SK", LG_EASTERN_EUROPE },
+	{N_("Slovenia (sl_SI)"),                         "sl_SI", LG_EASTERN_EUROPE },
+	{N_("Albania (sq_AL)"),                          "sq_AL", LG_EASTERN_EUROPE },
+	{N_("Yugoslavia (sr_YU)"),                       "sr_YU", LG_EASTERN_EUROPE },
+	{N_("Finland/Swedish (sv_FI)"),                  "sv_FI", LG_WESTERN_EUROPE },
+	{N_("Sweden (sv_SE)"),                           "sv_SE", LG_WESTERN_EUROPE },
+	{N_("India/Tamil (ta_IN)"),                      "ta_IN", LG_ASIA },
+	{N_("India/Telugu (te_IN)"),                     "te_IN", LG_ASIA },
+	{N_("Tajikistan (tg_TJ)"),                       "tg_TJ", LG_ASIA },
+	{N_("Thailand (th_TH)"),                         "th_TH", LG_ASIA },
+	{N_("Eritrea (ti_ER)"),                          "ti_ER", LG_AFRICA },
+	{N_("Ethiopia/Tigrinya (ti_ET)"),                "ti_ET", LG_AFRICA },
+	{N_("Philippines/Tagalog (tl_PH)"),              "tl_PH", LG_ASIA },
+	{N_("Turkey (tr_TR)"),                           "tr_TR", LG_ASIA },
+	{N_("Russia/Tatar (tt_RU)"),                     "tt_RU", LG_EASTERN_EUROPE },
+	{N_("Ukraine (uk_UA)"),                          "uk_UA", LG_EASTERN_EUROPE },
+	{N_("Pakistan (ur_PK)"),                         "ur_PK", LG_ASIA },
+	{N_("Uzbekistan (uz_UZ)"),                       "uz_UZ", LG_ASIA },
+	{N_("Vietnam (vi_VN)"),                          "vi_VN", LG_ASIA },
+	{N_("Belgium/Walloon (wa_BE)"),                  "wa_BE", LG_WESTERN_EUROPE },
+	{N_("United States/Yiddish (yi_US)"),            "yi_US", LG_NORTH_AMERICA },
+	{N_("China (zh_CN)"),                            "zh_CN", LG_ASIA },
+	{N_("Hong Kong/Chinese (zh_HK)"),                "zh_HK", LG_ASIA },
+	{N_("Singapore/Chinese (zh_SG)"),                "zh_SG", LG_ASIA },
+	{N_("Taiwan (zh_TW)"),                           "zh_TW", LG_ASIA },
+	{NULL,                                           NULL,    LG_LAST}
+};
+
+/* What is this?  See also iw_IL. {N_("(he_IL)"),"he_IL", LG_ASIA }, */
+/* {N_("(lug_UG)"),                                 "lug_UG",LG_OTHER }, */
+
+
+static int
+locale_order (const void *_a, const void *_b)
+{
+	const LocaleInfo *a = (const LocaleInfo *)_a;
+	const LocaleInfo *b = (const LocaleInfo *)_b;
+
+	if (a->lgroup != b->lgroup)
+		return b->lgroup - a->lgroup;
+
+	return g_utf8_collate (_(a->locale_title), _(b->locale_title));
+}
+
+/* ------------------------------------------------------------------------- */
+
+/* name -> LocaleInfo* mapping */
+static GHashTable *locale_hash;
+
+struct _GOLocaleSel {
+	GtkHBox box;
+	GOOptionMenu *locales;
+	GtkMenu *locales_menu;
+};
+
+typedef struct {
+	GtkHBoxClass parent_class;
+
+	gboolean (* locale_changed) (GOLocaleSel *ls, char const *new_locale);
+} GOLocaleSelClass;
+
+
+typedef GOLocaleSel Ls;
+typedef GOLocaleSelClass LsClass;
+
+/* Signals we emit */
+enum {
+	LOCALE_CHANGED,
+	LAST_SIGNAL
+};
+
+enum {
+	PROP_0
+};
+
+
+
+
+static guint ls_signals[LAST_SIGNAL] = { 0 };
+
+static void ls_set_property      (GObject          *object,
+				  guint             prop_id,
+				  const GValue     *value,
+				  GParamSpec       *pspec);
+
+static void ls_get_property      (GObject          *object,
+				  guint             prop_id,
+				  GValue           *value,
+				  GParamSpec       *pspec);
+
+const char *
+go_locale_sel_get_locale_name (G_GNUC_UNUSED GOLocaleSel *ls,
+				 const char *locale)
+{
+	LocaleInfo const *ci;
+
+	g_return_val_if_fail (locale != NULL, NULL);
+
+	ci = g_hash_table_lookup (locale_hash, locale);
+	return ci ? _(ci->locale_title) : NULL;
+}
+
+static char*
+get_locale_name (GOLocaleSel *ls)
+{
+	char const *cur_locale, *name;
+	char *locale, *p;
+
+	/*
+	 * We cannot use LC_ALL here because a composite locale may have
+	 * a string that is a mile wide (and not be intented for humans
+	 * anyway).  Why use LC_MESSAGES?  Good question, but it actuality
+	 * I doubt it will matter.  It's an arbitrary choice.
+	 */
+	cur_locale = setlocale (LC_MESSAGES, NULL);
+	if (!cur_locale) cur_locale = "C";  /* Just in case.  */
+	locale = g_strdup (cur_locale);
+
+	/* Get rid of charsets.  */
+	p = strchr (locale, '.');
+	if (p)
+		*p = 0;
+	p = strchr (locale, '@');
+	if (p)
+		*p = 0;
+
+	name = go_locale_sel_get_locale_name (ls, locale);
+	if (name) {
+		g_free (locale);
+		return g_strdup (name);
+	} else {
+		/* Just in case we get something really wide.  */
+		const char *ellipsis = "...";
+		if ((size_t)g_utf8_strlen (locale, -1) > 50 + strlen (ellipsis))
+			strcpy (g_utf8_offset_to_pointer (locale, 50), ellipsis);
+
+		return locale;
+	}
+}
+
+static void
+locales_changed_cb (GOOptionMenu *optionmenu, GOLocaleSel *ls)
+{
+	char * locale;
+
+	g_return_if_fail (IS_GO_LOCALE_SEL (ls));
+	g_return_if_fail (optionmenu == ls->locales);
+
+	locale = go_locale_sel_get_locale (ls);
+
+	g_signal_emit (G_OBJECT (ls),
+		       ls_signals[LOCALE_CHANGED],
+		       0, locale);
+	g_free (locale);
+}
+
+static void
+set_menu_to_default (GOLocaleSel *ls, gint item)
+{
+	GSList sel = { GINT_TO_POINTER (item - 1), NULL};
+
+	g_return_if_fail (ls != NULL && IS_GO_LOCALE_SEL (ls));
+
+	go_option_menu_set_history (ls->locales, &sel);
+}
+
+static gboolean
+ls_mnemonic_activate (GtkWidget *w, gboolean group_cycling)
+{
+	GOLocaleSel *ls = GO_LOCALE_SEL (w);
+	gtk_widget_grab_focus (GTK_WIDGET (ls->locales));
+	return TRUE;
+}
+
+
+static void
+ls_build_menu (GOLocaleSel *ls)
+{
+        GtkWidget *item;
+	GtkMenu *menu;
+	LGroupInfo const *lgroup = lgroups;
+	gint lg_cnt = 0;
+
+        menu = GTK_MENU (gtk_menu_new ());
+
+	while (lgroup->group_name) {
+		LocaleInfo const *locale_trans;
+		GtkMenu *submenu;
+		gint cnt = 0;
+
+		item = gtk_menu_item_new_with_label (_(lgroup->group_name));
+
+		submenu = GTK_MENU (gtk_menu_new ());
+		locale_trans = locale_trans_array;
+
+		while (locale_trans->lgroup != LG_LAST) {
+			GtkWidget *subitem;
+			if (locale_trans->lgroup == lgroup->lgroup && locale_trans->available) {
+					subitem = gtk_check_menu_item_new_with_label
+						(_(locale_trans->locale_title));
+					gtk_widget_show (subitem);
+					gtk_menu_shell_append (GTK_MENU_SHELL (submenu),  subitem);
+					g_object_set_data (G_OBJECT (subitem), LOCALE_NAME_KEY,
+							   (gpointer)(locale_trans->locale));
+					cnt++;
+			}
+			locale_trans++;
+		}
+		if (cnt > 0) {
+			gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), GTK_WIDGET (submenu));
+			gtk_widget_show (item);
+			gtk_menu_shell_append (GTK_MENU_SHELL (menu),  item);
+			lg_cnt++;
+		} else {
+			g_object_unref (item);
+		}
+                lgroup++;
+        }
+	item = gtk_separator_menu_item_new ();
+	gtk_widget_show (item);
+	gtk_menu_shell_append (GTK_MENU_SHELL (menu),  item);
+	lg_cnt++;
+
+	{
+		char *locale_name = get_locale_name (ls);
+		char *locale_menu_title = g_strconcat (_("Current Locale: "),
+						       locale_name, NULL);
+		g_free (locale_name);
+		item = gtk_check_menu_item_new_with_label (locale_menu_title);
+		g_free (locale_menu_title);
+		gtk_widget_show (item);
+		gtk_menu_shell_append (GTK_MENU_SHELL (menu),  item);
+		lg_cnt++;
+	}
+
+	go_option_menu_set_menu (ls->locales, GTK_WIDGET (menu));
+	ls->locales_menu = menu;
+	set_menu_to_default (ls, lg_cnt);
+}
+
+static void
+ls_init (GOLocaleSel *ls)
+{
+	ls->locales = GO_OPTION_MENU (go_option_menu_new ());
+	ls_build_menu (ls);
+
+	g_signal_connect (G_OBJECT (ls->locales), "changed",
+                          G_CALLBACK (locales_changed_cb), ls);
+        gtk_box_pack_start (GTK_BOX (ls), GTK_WIDGET (ls->locales),
+                            TRUE, TRUE, 0);
+}
+
+static void
+ls_class_init (GtkWidgetClass *widget_klass)
+{
+	LocaleInfo *ci;
+	char *oldlocale;
+
+	GObjectClass *gobject_class = G_OBJECT_CLASS (widget_klass);
+	widget_klass->mnemonic_activate = ls_mnemonic_activate;
+
+	gobject_class->set_property = ls_set_property;
+	gobject_class->get_property = ls_get_property;
+
+	ls_signals[LOCALE_CHANGED] =
+		g_signal_new ("locale_changed",
+			      GO_LOCALE_SEL_TYPE,
+			      G_SIGNAL_RUN_LAST,
+			      G_STRUCT_OFFSET (GOLocaleSelClass, locale_changed),
+			      NULL, NULL,
+			      g_cclosure_marshal_VOID__POINTER,
+			      G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+	qsort (lgroups, G_N_ELEMENTS (lgroups) - 2, sizeof (lgroups[0]),
+	       lgroups_order);
+	qsort (locale_trans_array, G_N_ELEMENTS (locale_trans_array) - 1,
+	       sizeof (locale_trans_array[0]), locale_order);
+
+	locale_hash =
+		g_hash_table_new_full (go_ascii_strcase_hash,
+				       go_ascii_strcase_equal,
+				       (GDestroyNotify)g_free,
+				       NULL);
+
+	oldlocale = g_strdup (setlocale (LC_ALL, NULL));
+	for (ci = locale_trans_array; ci->locale_title; ci++) {
+		ci->available = (setlocale (LC_ALL, ci->locale) != NULL);
+		g_hash_table_insert (locale_hash, (char *)ci->locale, ci);
+	}
+
+	/* Handle the POSIX/C alias.  */
+	{
+		LocaleInfo *ci = g_hash_table_lookup (locale_hash, "C");
+		g_assert (ci != NULL);
+		g_hash_table_insert (locale_hash, (char *)"POSIX", ci);
+	}
+
+	setlocale (LC_ALL, oldlocale);
+	g_free (oldlocale);
+}
+
+GSF_CLASS (GOLocaleSel, go_locale_sel,
+	   ls_class_init, ls_init, GTK_TYPE_HBOX)
+
+GtkWidget *
+go_locale_sel_new (void)
+{
+	return g_object_new (GO_LOCALE_SEL_TYPE, NULL);
+}
+
+gchar *
+go_locale_sel_get_locale (GOLocaleSel *ls)
+{
+	GtkMenuItem *selection;
+	char const *cur_locale;
+	char const *locale;
+
+	char *cur_locale_cp = NULL;
+	char **parts;
+
+	cur_locale = setlocale (LC_ALL, NULL);
+	if (cur_locale) {
+		parts = g_strsplit (cur_locale,".",2);
+		cur_locale_cp = g_strdup (parts[0]);
+		g_strfreev (parts);
+	}
+
+ 	g_return_val_if_fail (IS_GO_LOCALE_SEL (ls), cur_locale_cp);
+
+ 	selection = GTK_MENU_ITEM (go_option_menu_get_history (ls->locales));
+	locale = (char const *) g_object_get_data (G_OBJECT (selection),
+						     LOCALE_NAME_KEY);
+	return locale ? g_strdup (locale) : cur_locale_cp;
+}
+
+struct cb_find_entry {
+	const char *locale;
+	gboolean found;
+	int i;
+	GSList *path;
+};
+
+static void
+cb_find_entry (GtkMenuItem *w, struct cb_find_entry *cl)
+{
+	GtkWidget *sub;
+
+	if (cl->found)
+		return;
+
+	sub = gtk_menu_item_get_submenu (w);
+	if (sub) {
+		GSList *tmp = cl->path = g_slist_prepend (cl->path, GINT_TO_POINTER (cl->i));
+		cl->i = 0;
+
+		gtk_container_foreach (GTK_CONTAINER (sub), (GtkCallback)cb_find_entry, cl);
+		if (cl->found)
+			return;
+
+		cl->i = GPOINTER_TO_INT (cl->path->data);
+		cl->path = cl->path->next;
+		g_slist_free_1 (tmp);
+	} else {
+		const char *this_locale =
+			g_object_get_data (G_OBJECT (w), LOCALE_NAME_KEY);
+		if (this_locale && strcmp (this_locale, cl->locale) == 0) {
+			cl->found = TRUE;
+			cl->path = g_slist_prepend (cl->path, GINT_TO_POINTER (cl->i));
+			cl->path = g_slist_reverse (cl->path);
+			return;
+		}
+	}
+	cl->i++;
+}
+
+gboolean
+go_locale_sel_set_locale (GOLocaleSel *ls, const char *locale)
+{
+	struct cb_find_entry cl;
+	LocaleInfo const *ci;
+
+	g_return_val_if_fail (IS_GO_LOCALE_SEL (ls), FALSE);
+	g_return_val_if_fail (locale != NULL, FALSE);
+
+	ci = g_hash_table_lookup (locale_hash, locale);
+	if (!ci)
+		return FALSE;
+
+	locale = ci->locale;
+	if (!locale)
+		return FALSE;
+
+	cl.locale = locale;
+	cl.found = FALSE;
+	cl.i = 0;
+	cl.path = NULL;
+
+	gtk_container_foreach (GTK_CONTAINER (ls->locales_menu),
+			       (GtkCallback)cb_find_entry,
+			       &cl);
+	if (!cl.found)
+		return FALSE;
+
+	go_option_menu_set_history (ls->locales, cl.path);
+	g_slist_free (cl.path);
+
+	return TRUE;
+}
+
+
+void
+go_locale_sel_set_sensitive (GOLocaleSel *ls, gboolean sensitive)
+{
+	g_return_if_fail (IS_GO_LOCALE_SEL (ls));
+
+	gtk_widget_set_sensitive (GTK_WIDGET (ls->locales), sensitive);
+}
+
+static void
+ls_set_property (GObject      *object,
+		 guint         prop_id,
+		 const GValue *value,
+		 GParamSpec   *pspec)
+{
+	GOLocaleSel *ls;
+	ls = GO_LOCALE_SEL (object);
+
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+
+static void
+ls_get_property (GObject     *object,
+		 guint        prop_id,
+		 GValue      *value,
+		 GParamSpec  *pspec)
+{
+	GOLocaleSel *ls;
+
+	ls = GO_LOCALE_SEL (object);
+
+	switch (prop_id)
+	{
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-locale-sel.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,48 @@
+/*
+ *  Copyright (C) 2003 Andreas J. Guelzow
+ *
+ *  based on code by:
+ *  Copyright (C) 2000 Marco Pesenti Gritti
+ *  from the galeon code base
+ *
+ *  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, 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#ifndef _GO_LOCALE_SEL_H_
+#define _GO_LOCALE_SEL_H_
+
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+#define GO_LOCALE_SEL_TYPE        (go_locale_sel_get_type ())
+#define GO_LOCALE_SEL(obj)        (G_TYPE_CHECK_INSTANCE_CAST((obj), GO_LOCALE_SEL_TYPE, GOLocaleSel))
+#define IS_GO_LOCALE_SEL(obj)     (G_TYPE_CHECK_INSTANCE_TYPE((obj), GO_LOCALE_SEL_TYPE))
+
+typedef struct _GOLocaleSel GOLocaleSel;
+
+GType        go_locale_sel_get_type (void);
+GtkWidget *  go_locale_sel_new (void);
+
+gchar       *go_locale_sel_get_locale (GOLocaleSel *cs);
+gboolean     go_locale_sel_set_locale (GOLocaleSel *cs, const char *loc);
+
+void         go_locale_sel_set_sensitive (GOLocaleSel *cs, gboolean sensitive);
+
+const char  *go_locale_sel_get_locale_name (GOLocaleSel *cs, const char *loc);
+
+G_END_DECLS
+
+#endif /* _GO_LOCALE_SEL_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1062 @@
+/*
+ * go-optionmenu.c
+ *
+ * Copyright (C) 2002 Andreas J. Guelzow <aguelzow at taliesin.ca>
+ *
+ * based extensively on:
+ *
+ * GTK - The GIMP Toolkit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * Modified by the GTK+ Team and others 1997-2000.  See the GTK AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-optionmenu.h"
+
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkcheckmenuitem.h>
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n.h>
+
+#define CHILD_LEFT_SPACING        4
+#define CHILD_RIGHT_SPACING       1
+#define CHILD_TOP_SPACING         1
+#define CHILD_BOTTOM_SPACING      1
+
+typedef struct _GOOptionMenuProps GOOptionMenuProps;
+
+struct _GOOptionMenuProps
+{
+  gboolean interior_focus;
+  GtkRequisition indicator_size;
+  GtkBorder indicator_spacing;
+  gint focus_width;
+  gint focus_pad;
+};
+
+static const GOOptionMenuProps default_props = {
+  TRUE,
+  { 7, 13 },
+  { 7, 5, 2, 2 },		/* Left, right, top, bottom */
+  1,
+  0
+};
+
+static void go_option_menu_class_init      (GOOptionMenuClass *klass);
+static void go_option_menu_init            (GOOptionMenu      *option_menu);
+static void go_option_menu_destroy         (GtkObject          *object);
+static void go_option_menu_set_property    (GObject            *object,
+						  guint               prop_id,
+						  const GValue       *value,
+						  GParamSpec         *pspec);
+static void go_option_menu_get_property    (GObject            *object,
+						  guint               prop_id,
+						  GValue             *value,
+						  GParamSpec         *pspec);
+static void go_option_menu_size_request    (GtkWidget          *widget,
+						  GtkRequisition     *requisition);
+static void go_option_menu_size_allocate   (GtkWidget          *widget,
+						  GtkAllocation      *allocation);
+static void go_option_menu_paint           (GtkWidget          *widget,
+						  GdkRectangle       *area);
+static gint go_option_menu_expose          (GtkWidget          *widget,
+						  GdkEventExpose     *event);
+static gint go_option_menu_button_press    (GtkWidget          *widget,
+						  GdkEventButton     *event);
+static gint go_option_menu_key_press       (GtkWidget          *widget,
+						  GdkEventKey        *event);
+static void go_option_menu_selection_done  (GtkMenu            *menu,
+						  GOOptionMenu *option_menu);
+static void go_option_menu_update_contents (GOOptionMenu *option_menu, GtkMenu *menu);
+static void go_option_menu_remove_contents (GOOptionMenu *option_menu);
+static void go_option_menu_calc_size       (GOOptionMenu *option_menu);
+static void go_option_menu_position        (GtkMenu            *menu,
+						  gint               *x,
+						  gint               *y,
+						  gint               *scroll_offet,
+						  gpointer            user_data);
+static void go_option_menu_show_all        (GtkWidget          *widget);
+static void go_option_menu_hide_all        (GtkWidget          *widget);
+static gboolean go_option_menu_mnemonic_activate (GtkWidget    *widget,
+							gboolean      group_cycling);
+static GType go_option_menu_child_type   (GtkContainer       *container);
+static gint go_option_menu_scroll_event    (GtkWidget          *widget,
+						  GdkEventScroll     *event);
+
+enum
+{
+  CHANGED,
+  LAST_SIGNAL
+};
+
+enum
+{
+  PROP_0,
+  PROP_MENU,
+  LAST_PROP
+};
+
+static GtkButtonClass *parent_class = NULL;
+static guint           signals[LAST_SIGNAL] = { 0 };
+
+
+GType
+go_option_menu_get_type (void)
+{
+  static GType option_menu_type = 0;
+
+  if (!option_menu_type)
+    {
+      static const GTypeInfo option_menu_info =
+      {
+	sizeof (GOOptionMenuClass),
+	NULL,		/* base_init */
+	NULL,		/* base_finalize */
+	(GClassInitFunc) go_option_menu_class_init,
+	NULL,		/* class_finalize */
+	NULL,		/* class_data */
+	sizeof (GOOptionMenu),
+	0,		/* n_preallocs */
+	(GInstanceInitFunc) go_option_menu_init,
+      };
+
+      option_menu_type =
+	g_type_register_static (GTK_TYPE_BUTTON, "GOOptionMenu",
+				&option_menu_info, 0);
+    }
+
+  return option_menu_type;
+}
+
+static void
+go_option_menu_class_init (GOOptionMenuClass *class)
+{
+  GObjectClass *gobject_class;
+  GtkObjectClass *object_class;
+  GtkWidgetClass *widget_class;
+  GtkButtonClass *button_class;
+  GtkContainerClass *container_class;
+
+  gobject_class = (GObjectClass*) class;
+  object_class = (GtkObjectClass*) class;
+  widget_class = (GtkWidgetClass*) class;
+  button_class = (GtkButtonClass*) class;
+  container_class = (GtkContainerClass*) class;
+
+  parent_class = g_type_class_peek_parent (class);
+
+  signals[CHANGED] =
+    g_signal_new ("changed",
+                  G_OBJECT_CLASS_TYPE (class),
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GOOptionMenuClass, changed),
+                  NULL, NULL,
+                  g_cclosure_marshal_VOID__VOID,
+                  G_TYPE_NONE, 0);
+
+  gobject_class->set_property = go_option_menu_set_property;
+  gobject_class->get_property = go_option_menu_get_property;
+  object_class->destroy = go_option_menu_destroy;
+  
+  widget_class->size_request = go_option_menu_size_request;
+  widget_class->size_allocate = go_option_menu_size_allocate;
+  widget_class->expose_event = go_option_menu_expose;
+  widget_class->button_press_event = go_option_menu_button_press;
+  widget_class->key_press_event = go_option_menu_key_press;
+  widget_class->scroll_event = go_option_menu_scroll_event;
+  widget_class->show_all = go_option_menu_show_all;
+  widget_class->hide_all = go_option_menu_hide_all;
+  widget_class->mnemonic_activate = go_option_menu_mnemonic_activate;
+
+  container_class->child_type = go_option_menu_child_type;
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_MENU,
+                                   g_param_spec_object ("menu",
+                                                        _("Menu"),
+                                                        _("The menu of options"),
+                                                        GTK_TYPE_MENU,
+                                                        G_PARAM_READABLE | G_PARAM_WRITABLE));
+  
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_boxed ("indicator_size",
+							       _("Indicator Size"),
+							       _("Size of dropdown indicator"),
+							       GTK_TYPE_REQUISITION,
+							       G_PARAM_READABLE));
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_boxed ("indicator_spacing",
+							       _("Indicator Spacing"),
+							       _("Spacing around indicator"),
+							       GTK_TYPE_BORDER,
+							       G_PARAM_READABLE));
+}
+
+static GType
+go_option_menu_child_type (GtkContainer       *container)
+{
+  return G_TYPE_NONE;
+}
+
+static void
+go_option_menu_init (GOOptionMenu *option_menu)
+{
+  GTK_WIDGET_SET_FLAGS (option_menu, GTK_CAN_FOCUS);
+  GTK_WIDGET_UNSET_FLAGS (option_menu, GTK_CAN_DEFAULT | GTK_RECEIVES_DEFAULT);
+
+  option_menu->menu = NULL;
+  option_menu->select_menu = NULL;
+  option_menu->menu_item = NULL;
+  option_menu->old_menu_item = NULL;
+  option_menu->last_signaled_menu_item = NULL;
+  option_menu->selection = NULL;
+  option_menu->new_selection = TRUE;
+  option_menu->width = 0;
+  option_menu->height = 0;
+}
+
+GtkWidget*
+go_option_menu_new (void)
+{
+  return g_object_new (GO_TYPE_OPTION_MENU, NULL);
+}
+
+GtkWidget*
+go_option_menu_get_menu (GOOptionMenu *option_menu)
+{
+  g_return_val_if_fail (GO_IS_OPTION_MENU (option_menu), NULL);
+
+  return option_menu->menu;
+}
+
+static void
+go_option_menu_detacher (GtkWidget     *widget,
+			  GtkMenu	*menu)
+{
+  GOOptionMenu *option_menu;
+
+  g_return_if_fail (GO_IS_OPTION_MENU (widget));
+
+  option_menu = GO_OPTION_MENU (widget);
+  g_return_if_fail (option_menu->menu == (GtkWidget*) menu);
+
+  go_option_menu_remove_contents (option_menu);
+  g_signal_handlers_disconnect_by_func (option_menu->menu,
+					go_option_menu_selection_done,
+					option_menu);
+  g_signal_handlers_disconnect_by_func (option_menu->menu,
+					go_option_menu_calc_size,
+					option_menu);
+  
+  option_menu->menu = NULL;
+  g_object_notify (G_OBJECT (option_menu), "menu");
+}
+
+static void connect_menu_signals (GtkMenu *menu, gpointer data);
+
+static void
+connect_menu_signals_to_submenu (GtkMenuItem *item, gpointer data)
+{
+	GtkMenu *menu = GTK_MENU(gtk_menu_item_get_submenu (item));
+	
+	if (menu)
+		connect_menu_signals (menu, data);
+}
+
+
+static void
+connect_menu_signals (GtkMenu *menu, gpointer data)
+{
+	GList *children;
+	
+	g_signal_connect_after (menu, "selection_done",
+				G_CALLBACK (go_option_menu_selection_done),
+				data);
+	children = gtk_container_get_children (GTK_CONTAINER(menu));
+	g_list_foreach (children, (GFunc)connect_menu_signals_to_submenu, data);
+	g_list_free (children);
+}
+
+
+void
+go_option_menu_set_menu (GOOptionMenu *option_menu,
+			       GtkWidget *menu)
+{
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+  g_return_if_fail (GTK_IS_MENU (menu));
+
+  if (option_menu->menu != menu)
+    {
+      go_option_menu_remove_menu (option_menu);
+
+      option_menu->menu = menu;
+      gtk_menu_attach_to_widget (GTK_MENU (menu),
+				 GTK_WIDGET (option_menu),
+				 go_option_menu_detacher);
+
+      go_option_menu_calc_size (option_menu);
+
+      connect_menu_signals (GTK_MENU(option_menu->menu), option_menu);
+      
+      g_signal_connect_swapped (option_menu->menu, "size_request",
+				G_CALLBACK (go_option_menu_calc_size),
+				option_menu);
+
+      if (GTK_WIDGET (option_menu)->parent)
+	gtk_widget_queue_resize (GTK_WIDGET (option_menu));
+
+      go_option_menu_update_contents (option_menu, NULL);
+      
+      g_object_notify (G_OBJECT (option_menu), "menu");
+    }
+}
+
+void
+go_option_menu_remove_menu (GOOptionMenu *option_menu)
+{
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+
+  if (option_menu->menu)
+    {
+      if (GTK_MENU_SHELL (option_menu->menu)->active)
+	g_signal_emit_by_name (option_menu->menu, "cancel", 0);
+      
+      gtk_menu_detach (GTK_MENU (option_menu->menu));
+    }
+}
+
+void
+go_option_menu_set_history (GOOptionMenu *option_menu, GSList *selection)
+{
+  GtkWidget *item;
+  
+  g_return_if_fail (selection != NULL);
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+
+  if (option_menu->menu)
+    {
+	    GtkMenu *menu = GTK_MENU(option_menu->menu);
+	    
+	    while (selection->next) {
+		    GList *children = gtk_container_get_children (GTK_CONTAINER(menu));
+		    gint index = GPOINTER_TO_INT (selection->data);
+		    item = GTK_WIDGET(g_list_nth_data (children, index));
+		    menu = GTK_MENU(gtk_menu_item_get_submenu (GTK_MENU_ITEM(item)));
+		    selection = selection->next;
+		    g_list_free (children);
+	    }
+	    
+	    gtk_menu_set_active (menu,  GPOINTER_TO_INT (selection->data));
+	    item = gtk_menu_get_active (menu);
+	    if (item != option_menu->menu_item)
+		    go_option_menu_update_contents (option_menu, menu);
+	    g_slist_free (option_menu->selection);
+	    option_menu->selection = g_slist_copy (selection);
+    }
+}
+
+/**
+ * go_option_menu_get_history:
+ * @option_menu: a #GOOptionMenu
+ * 
+ * Retrieves the currently selected menu item. The menu
+ * items are numbered from top to bottom, starting with 0. 
+ * 
+ * Return value: the selected menu_item
+ **/
+
+GtkWidget *
+go_option_menu_get_history (GOOptionMenu *option_menu)
+{
+     return GTK_WIDGET(option_menu->menu_item);
+}
+
+
+
+
+static void
+go_option_menu_set_property (GObject            *object,
+			      guint               prop_id,
+			      const GValue       *value,
+			      GParamSpec         *pspec)
+{
+  GOOptionMenu *option_menu = GO_OPTION_MENU (object);
+
+  switch (prop_id)
+    {
+    case PROP_MENU:
+      go_option_menu_set_menu (option_menu, g_value_get_object (value));
+      break;
+      
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+go_option_menu_get_property (GObject            *object,
+				   guint               prop_id,
+				   GValue             *value,
+				   GParamSpec         *pspec)
+{
+  GOOptionMenu *option_menu = GO_OPTION_MENU (object);
+
+  switch (prop_id)
+    {
+    case PROP_MENU:
+      g_value_set_object (value, option_menu->menu);
+      break;
+      
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+go_option_menu_destroy (GtkObject *object)
+{
+  GOOptionMenu *option_menu;
+
+  g_return_if_fail (GO_IS_OPTION_MENU (object));
+
+  option_menu = GO_OPTION_MENU (object);
+
+  if (option_menu->selection) {
+	  g_slist_free (option_menu->selection);
+	  option_menu->selection = NULL;
+  }
+
+  if (option_menu->menu)
+    gtk_widget_destroy (option_menu->menu);
+
+  if (GTK_OBJECT_CLASS (parent_class)->destroy)
+    (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+}
+
+static void
+go_option_menu_get_props (GOOptionMenu       *option_menu,
+			   GOOptionMenuProps  *props)
+{
+  GtkRequisition *indicator_size;
+  GtkBorder *indicator_spacing;
+  
+  gtk_widget_style_get (GTK_WIDGET (option_menu),
+			"indicator_size", &indicator_size,
+			"indicator_spacing", &indicator_spacing,
+			"interior_focus", &props->interior_focus,
+			"focus_line_width", &props->focus_width,
+			"focus_padding", &props->focus_pad,
+			NULL);
+
+  if (indicator_size)
+    props->indicator_size = *indicator_size;
+  else
+    props->indicator_size = default_props.indicator_size;
+
+  if (indicator_spacing)
+    props->indicator_spacing = *indicator_spacing;
+  else
+    props->indicator_spacing = default_props.indicator_spacing;
+
+  g_free (indicator_size);
+  g_free (indicator_spacing);
+}
+
+static void
+go_option_menu_size_request (GtkWidget      *widget,
+				   GtkRequisition *requisition)
+{
+  GOOptionMenu *option_menu = GO_OPTION_MENU (widget);
+  GOOptionMenuProps props;
+  gint tmp;
+  GtkRequisition child_requisition = { 0, 0 };
+      
+  go_option_menu_get_props (option_menu, &props);
+ 
+  if (GTK_BIN (option_menu)->child && GTK_WIDGET_VISIBLE (GTK_BIN (option_menu)->child))
+    {
+      gtk_widget_size_request (GTK_BIN (option_menu)->child, &child_requisition);
+
+      requisition->width += child_requisition.width;
+      requisition->height += child_requisition.height;
+    }
+  
+  requisition->width = ((GTK_CONTAINER (widget)->border_width +
+			 GTK_WIDGET (widget)->style->xthickness + props.focus_pad) * 2 +
+			MAX (child_requisition.width, option_menu->width) +
+ 			props.indicator_size.width +
+ 			props.indicator_spacing.left + props.indicator_spacing.right +
+			CHILD_LEFT_SPACING + CHILD_RIGHT_SPACING + props.focus_width * 2);
+  requisition->height = ((GTK_CONTAINER (widget)->border_width +
+			  GTK_WIDGET (widget)->style->ythickness + props.focus_pad) * 2 +
+			 MAX (child_requisition.height, option_menu->height) +
+			 CHILD_TOP_SPACING + CHILD_BOTTOM_SPACING + props.focus_width * 2);
+
+  tmp = (requisition->height - MAX (child_requisition.height, option_menu->height) +
+	 props.indicator_size.height + props.indicator_spacing.top + props.indicator_spacing.bottom);
+  requisition->height = MAX (requisition->height, tmp);
+}
+
+static void
+go_option_menu_size_allocate (GtkWidget     *widget,
+				    GtkAllocation *allocation)
+{
+  GtkWidget *child;
+  GtkButton *button = GTK_BUTTON (widget);
+  GtkAllocation child_allocation;
+  GOOptionMenuProps props;
+  gint border_width;
+    
+  go_option_menu_get_props (GO_OPTION_MENU (widget), &props);
+  border_width = GTK_CONTAINER (widget)->border_width;
+
+  widget->allocation = *allocation;
+  if (GTK_WIDGET_REALIZED (widget))
+    gdk_window_move_resize (button->event_window,
+			    allocation->x + border_width, allocation->y + border_width,
+			    allocation->width - border_width * 2, allocation->height - border_width * 2);
+
+  child = GTK_BIN (widget)->child;
+  if (child && GTK_WIDGET_VISIBLE (child))
+    {
+      gint xthickness = GTK_WIDGET (widget)->style->xthickness;
+      gint ythickness = GTK_WIDGET (widget)->style->ythickness;
+      
+      child_allocation.x = widget->allocation.x + border_width + xthickness + props.focus_width + props.focus_pad + CHILD_LEFT_SPACING;
+      child_allocation.y = widget->allocation.y + border_width + ythickness + props.focus_width + props.focus_pad + CHILD_TOP_SPACING;
+      child_allocation.width = MAX (1, allocation->width - (border_width + xthickness + props.focus_width + props.focus_pad) * 2 -
+				    props.indicator_size.width - props.indicator_spacing.left - props.indicator_spacing.right -
+				    CHILD_LEFT_SPACING - CHILD_RIGHT_SPACING);
+      child_allocation.height = MAX (1, allocation->height - (border_width + ythickness + props.focus_width + props.focus_pad) * 2 -
+				     CHILD_TOP_SPACING - CHILD_BOTTOM_SPACING);
+
+      if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL) 
+	child_allocation.x += props.indicator_size.width + props.indicator_spacing.left + props.indicator_spacing.right;
+
+      gtk_widget_size_allocate (child, &child_allocation);
+    }
+}
+
+static void
+go_option_menu_paint (GtkWidget    *widget,
+		       GdkRectangle *area)
+{
+  GdkRectangle button_area;
+  GOOptionMenuProps props;
+  gint border_width;
+  gint tab_x;
+
+  g_return_if_fail (GO_IS_OPTION_MENU (widget));
+  g_return_if_fail (area != NULL);
+
+  if (GTK_WIDGET_DRAWABLE (widget))
+    {
+      border_width = GTK_CONTAINER (widget)->border_width;
+      go_option_menu_get_props (GO_OPTION_MENU (widget), &props);
+
+      button_area.x = widget->allocation.x + border_width;
+      button_area.y = widget->allocation.y + border_width;
+      button_area.width = widget->allocation.width - 2 * border_width;
+      button_area.height = widget->allocation.height - 2 * border_width;
+
+      if (!props.interior_focus && GTK_WIDGET_HAS_FOCUS (widget))
+	{
+	  button_area.x += props.focus_width + props.focus_pad;
+	  button_area.y += props.focus_width + props.focus_pad;
+	  button_area.width -= 2 * (props.focus_width + props.focus_pad);
+	  button_area.height -= 2 * (props.focus_width + props.focus_pad);
+	}
+      
+      gtk_paint_box (widget->style, widget->window,
+		     GTK_WIDGET_STATE (widget), GTK_SHADOW_OUT,
+		     area, widget, "optionmenu",
+		     button_area.x, button_area.y,
+		     button_area.width, button_area.height);
+      
+      if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL) 
+	tab_x = button_area.x + props.indicator_spacing.right + 
+	  widget->style->xthickness;
+      else
+	tab_x = button_area.x + button_area.width - 
+	  props.indicator_size.width - props.indicator_spacing.right -
+	  widget->style->xthickness;
+
+      gtk_paint_tab (widget->style, widget->window,
+		     GTK_WIDGET_STATE (widget), GTK_SHADOW_OUT,
+		     area, widget, "optionmenutab",
+		     tab_x,
+		     button_area.y + (button_area.height - props.indicator_size.height) / 2,
+		     props.indicator_size.width, props.indicator_size.height);
+      
+      if (GTK_WIDGET_HAS_FOCUS (widget))
+	{
+	  if (props.interior_focus)
+	    {
+	      button_area.x += widget->style->xthickness + props.focus_pad;
+	      button_area.y += widget->style->ythickness + props.focus_pad;
+	      button_area.width -= 2 * (widget->style->xthickness + props.focus_pad) +
+		      props.indicator_spacing.left +
+		      props.indicator_spacing.right +
+		      props.indicator_size.width;
+	      button_area.height -= 2 * (widget->style->ythickness + props.focus_pad);
+	      if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL) 
+		button_area.x += props.indicator_spacing.left +
+		  props.indicator_spacing.right +
+		  props.indicator_size.width;
+	    }
+	  else
+	    {
+	      button_area.x -= props.focus_width + props.focus_pad;
+	      button_area.y -= props.focus_width + props.focus_pad;
+	      button_area.width += 2 * (props.focus_width + props.focus_pad);
+	      button_area.height += 2 * (props.focus_width + props.focus_pad);
+	    }
+	    
+	  gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget),
+			   area, widget, "button",
+			   button_area.x, 
+			   button_area.y, 
+			   button_area.width,
+			   button_area.height);
+	}
+    }
+}
+
+static gint
+go_option_menu_expose (GtkWidget      *widget,
+			GdkEventExpose *event)
+{
+  g_return_val_if_fail (GO_IS_OPTION_MENU (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  if (GTK_WIDGET_DRAWABLE (widget))
+    {
+      go_option_menu_paint (widget, &event->area);
+
+      if (GTK_BIN (widget)->child)
+	gtk_container_propagate_expose (GTK_CONTAINER (widget),
+					GTK_BIN (widget)->child,
+					event);
+    }
+
+  return FALSE;
+}
+
+static gint
+go_option_menu_button_press (GtkWidget      *widget,
+			      GdkEventButton *event)
+{
+  GOOptionMenu *option_menu;
+  GtkWidget *menu_item;
+
+  g_return_val_if_fail (GO_IS_OPTION_MENU (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  option_menu = GO_OPTION_MENU (widget);
+
+  if ((event->type == GDK_BUTTON_PRESS) &&
+      (event->button == 1))
+    {
+	    option_menu->new_selection = TRUE;
+	    option_menu->old_menu_item = option_menu->menu_item;
+	    go_option_menu_remove_contents (option_menu);
+	    gtk_menu_popup (GTK_MENU (option_menu->menu), NULL, NULL,
+			    go_option_menu_position, option_menu,
+			    event->button, event->time);
+	    menu_item = gtk_menu_get_active (GTK_MENU (option_menu->menu));
+	    if (menu_item)
+		    gtk_menu_shell_select_item (GTK_MENU_SHELL (option_menu->menu), menu_item);
+	    else
+		    gtk_menu_shell_select_item (GTK_MENU_SHELL (option_menu->select_menu), 
+						option_menu->old_menu_item);
+		    
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
+static gint
+go_option_menu_key_press (GtkWidget   *widget,
+			   GdkEventKey *event)
+{
+  GOOptionMenu *option_menu;
+  GtkWidget *menu_item;
+
+  g_return_val_if_fail (GO_IS_OPTION_MENU (widget), FALSE);
+  g_return_val_if_fail (event != NULL, FALSE);
+
+  option_menu = GO_OPTION_MENU (widget);
+
+  switch (event->keyval)
+    {
+    case GDK_KP_Space:
+    case GDK_space:
+	    option_menu->new_selection= TRUE;
+	    option_menu->old_menu_item = option_menu->menu_item;
+	    go_option_menu_remove_contents (option_menu);
+	    gtk_menu_popup (GTK_MENU (option_menu->menu), NULL, NULL,
+			    go_option_menu_position, option_menu,
+			    0, event->time);
+	    menu_item = gtk_menu_get_active (GTK_MENU (option_menu->menu));
+	    if (menu_item)
+		    gtk_menu_shell_select_item (GTK_MENU_SHELL (option_menu->menu), menu_item);
+	    else
+		    gtk_menu_shell_select_item (GTK_MENU_SHELL (option_menu->select_menu), 
+						option_menu->old_menu_item);
+	    return TRUE;
+    }
+  
+  return FALSE;
+}
+
+static void
+go_option_menu_selection_done (GtkMenu  *menu,
+				GOOptionMenu *option_menu)
+{
+  g_return_if_fail (menu != NULL);
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+
+  go_option_menu_update_contents (option_menu, menu);
+}
+
+static void
+go_option_menu_changed (GOOptionMenu *option_menu)
+{
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+
+  if (option_menu->last_signaled_menu_item && GTK_IS_CHECK_MENU_ITEM(option_menu->last_signaled_menu_item))
+	  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(option_menu->last_signaled_menu_item),
+					  FALSE);
+  
+  option_menu->last_signaled_menu_item = option_menu->menu_item;
+  if (option_menu->last_signaled_menu_item
+      && GTK_IS_CHECK_MENU_ITEM(option_menu->last_signaled_menu_item))
+          gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(option_menu->last_signaled_menu_item),
+					  TRUE);
+  
+  g_signal_emit (option_menu, signals[CHANGED], 0);
+}
+
+static void
+go_option_menu_select_first_sensitive (GOOptionMenu *option_menu)
+{
+}
+
+static void
+go_option_menu_item_state_changed_cb (GtkWidget      *widget,
+				       GtkStateType    previous_state,
+				       GOOptionMenu  *option_menu)
+{
+  GtkWidget *child = GTK_BIN (option_menu)->child;
+
+  if (child && GTK_WIDGET_SENSITIVE (child) != GTK_WIDGET_IS_SENSITIVE (widget))
+    gtk_widget_set_sensitive (child, GTK_WIDGET_IS_SENSITIVE (widget));
+}
+
+static void
+go_option_menu_item_destroy_cb (GtkWidget     *widget,
+				 GOOptionMenu *option_menu)
+{
+  GtkWidget *child = GTK_BIN (option_menu)->child;
+
+  if (child)
+    {
+      g_object_ref (child);
+      go_option_menu_remove_contents (option_menu);
+      gtk_widget_destroy (child);
+      g_object_unref (child);
+
+      go_option_menu_select_first_sensitive (option_menu);
+    }
+}
+
+static void
+go_option_menu_update_contents_real (GOOptionMenu *option_menu, 
+					   GtkMenu *menu, GtkMenuItem *menu_item)
+{
+	GtkWidget *child;
+	GtkRequisition child_requisition;
+
+	g_return_if_fail (option_menu != NULL);
+	g_return_if_fail (menu_item != NULL);
+	g_return_if_fail (menu != NULL);
+	
+	go_option_menu_remove_contents (option_menu);
+	option_menu->menu_item = GTK_WIDGET(menu_item);
+	option_menu->old_menu_item = NULL;
+	option_menu->select_menu = GTK_WIDGET(menu);
+	g_object_ref (option_menu->menu_item);
+	child = GTK_BIN (option_menu->menu_item)->child;
+	if (child)
+	{
+		if (!GTK_WIDGET_IS_SENSITIVE (option_menu->menu_item))
+			gtk_widget_set_sensitive (child, FALSE);
+		gtk_widget_reparent (child, GTK_WIDGET (option_menu));
+	}
+	
+	g_signal_connect (option_menu->menu_item, "state_changed",
+			  G_CALLBACK (go_option_menu_item_state_changed_cb), option_menu);
+	g_signal_connect (option_menu->menu_item, "destroy",
+			  G_CALLBACK (go_option_menu_item_destroy_cb), option_menu);
+	
+	gtk_widget_size_request (child, &child_requisition);
+	gtk_widget_size_allocate (GTK_WIDGET (option_menu),
+				  &(GTK_WIDGET (option_menu)->allocation));
+	
+	if (GTK_WIDGET_DRAWABLE (option_menu))
+		gtk_widget_queue_draw (GTK_WIDGET (option_menu));
+}
+
+
+
+static void
+go_option_menu_update_contents (GOOptionMenu *option_menu, GtkMenu *menu)
+{
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+
+  if (option_menu->menu)
+  {
+	  GtkWidget *old_item = option_menu->menu_item;
+	  GtkWidget *new_item;
+	  
+	  new_item = menu ? gtk_menu_get_active (menu) :
+		  gtk_menu_get_active (GTK_MENU(option_menu->menu));
+	  
+ 	  if (new_item && !gtk_menu_item_get_submenu (GTK_MENU_ITEM(new_item))) {
+		  g_slist_free (option_menu->selection);
+		  option_menu->selection = NULL;
+		  
+		  go_option_menu_update_contents_real (option_menu, 
+							     menu ? menu : GTK_MENU(option_menu->menu), 
+							     GTK_MENU_ITEM(new_item));
+	  } else {
+		  if (option_menu->old_menu_item)
+			  go_option_menu_update_contents_real (option_menu, 
+								     GTK_MENU(option_menu->select_menu), 
+								     GTK_MENU_ITEM(option_menu->old_menu_item));
+	  }
+	  if (new_item && !(gtk_menu_item_get_submenu (GTK_MENU_ITEM(new_item)) && option_menu->new_selection)) {
+		  GList *children = gtk_container_get_children (GTK_CONTAINER(menu ? menu : GTK_MENU(option_menu->menu)));
+		  option_menu->selection = g_slist_prepend(option_menu->selection, 
+							   GINT_TO_POINTER(g_list_position
+									   (children, g_list_find (children, new_item))));
+		  g_list_free (children);
+		  option_menu->new_selection = FALSE;
+	  }
+	  
+	  if (old_item != option_menu->menu_item)
+		  go_option_menu_changed (option_menu);
+  }
+}
+
+static void
+go_option_menu_remove_contents (GOOptionMenu *option_menu)
+{
+  GtkWidget *child;
+  
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+
+  if (option_menu->menu_item)
+    {
+      child = GTK_BIN (option_menu)->child;
+  
+      if (child)
+	{
+	  gtk_widget_set_sensitive (child, TRUE);
+	  gtk_widget_reparent (child, option_menu->menu_item);
+	}
+
+      g_signal_handlers_disconnect_by_func (option_menu->menu_item,
+					    go_option_menu_item_state_changed_cb,
+					    option_menu);				     
+      g_signal_handlers_disconnect_by_func (option_menu->menu_item,
+					    go_option_menu_item_destroy_cb,
+					    option_menu);
+      g_object_unref (option_menu->menu_item);
+      option_menu->menu_item = NULL;
+    }
+}
+
+static void
+go_option_menu_calc_size (GOOptionMenu *option_menu)
+{
+  GtkWidget *child;
+  GList *children;
+  GtkRequisition child_requisition;
+  gint old_width = option_menu->width;
+  gint old_height = option_menu->height;
+
+  g_return_if_fail (GO_IS_OPTION_MENU (option_menu));
+
+  option_menu->width = 0;
+  option_menu->height = 0;
+
+  if (option_menu->menu)
+    {
+      children = GTK_MENU_SHELL (option_menu->menu)->children;
+      while (children)
+	{
+	  child = children->data;
+	  children = children->next;
+
+	  if (GTK_WIDGET_VISIBLE (child))
+	    {
+	      GtkWidget *inner = GTK_BIN (child)->child;
+
+	      if (inner)
+		{
+		  gtk_widget_size_request (inner, &child_requisition);
+
+		  option_menu->width = MAX (option_menu->width, child_requisition.width);
+		  option_menu->height = MAX (option_menu->height, child_requisition.height);
+		}
+	    }
+	}
+    }
+
+  if (old_width != option_menu->width || old_height != option_menu->height)
+    gtk_widget_queue_resize (GTK_WIDGET (option_menu));
+}
+
+static void
+go_option_menu_position (GtkMenu  *menu,
+			  gint     *x,
+			  gint     *y,
+			  gboolean *push_in,
+			  gpointer  user_data)
+{
+  GOOptionMenu *option_menu;
+  GtkWidget *active;
+  GtkWidget *child;
+  GtkWidget *widget;
+  GtkRequisition requisition;
+  GList *children;
+  gint screen_width;
+  gint menu_xpos;
+  gint menu_ypos;
+  gint menu_width;
+
+  g_return_if_fail (GO_IS_OPTION_MENU (user_data));
+
+  option_menu = GO_OPTION_MENU (user_data);
+  widget = GTK_WIDGET (option_menu);
+
+  gtk_widget_get_child_requisition (GTK_WIDGET (menu), &requisition);
+  menu_width = requisition.width;
+
+  active = gtk_menu_get_active (GTK_MENU (option_menu->menu));
+  gdk_window_get_origin (widget->window, &menu_xpos, &menu_ypos);
+
+  menu_xpos += widget->allocation.x;
+  menu_ypos += widget->allocation.y + widget->allocation.height / 2 - 2;
+
+  if (active != NULL)
+    {
+      gtk_widget_get_child_requisition (active, &requisition);
+      menu_ypos -= requisition.height / 2;
+    }
+
+  children = GTK_MENU_SHELL (option_menu->menu)->children;
+  while (children)
+    {
+      child = children->data;
+
+      if (active == child)
+	break;
+
+      if (GTK_WIDGET_VISIBLE (child))
+	{
+	  gtk_widget_get_child_requisition (child, &requisition);
+	  menu_ypos -= requisition.height;
+	}
+
+      children = children->next;
+    }
+
+  screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget));
+  
+  if (menu_xpos < 0)
+    menu_xpos = 0;
+  else if ((menu_xpos + menu_width) > screen_width)
+    menu_xpos -= ((menu_xpos + menu_width) - screen_width);
+
+  *x = menu_xpos;
+  *y = menu_ypos;
+  *push_in = TRUE;
+}
+
+
+static void
+go_option_menu_show_all (GtkWidget *widget)
+{
+  GtkContainer *container;
+  GOOptionMenu *option_menu;
+  
+  g_return_if_fail (GO_IS_OPTION_MENU (widget));
+  container = GTK_CONTAINER (widget);
+  option_menu = GO_OPTION_MENU (widget);
+
+  gtk_widget_show (widget);
+  gtk_container_foreach (container, (GtkCallback) gtk_widget_show_all, NULL);
+  if (option_menu->menu)
+    gtk_widget_show_all (option_menu->menu);
+  if (option_menu->menu_item)
+    gtk_widget_show_all (option_menu->menu_item);
+  if (option_menu->last_signaled_menu_item)
+    gtk_widget_show_all (option_menu->last_signaled_menu_item);
+  if (option_menu->select_menu)
+	  gtk_widget_show_all (option_menu->select_menu);
+}
+
+
+static void
+go_option_menu_hide_all (GtkWidget *widget)
+{
+  GtkContainer *container;
+
+  g_return_if_fail (GO_IS_OPTION_MENU (widget));
+  container = GTK_CONTAINER (widget);
+
+  gtk_widget_hide (widget);
+  gtk_container_foreach (container, (GtkCallback) gtk_widget_hide_all, NULL);
+}
+
+static gboolean
+go_option_menu_mnemonic_activate (GtkWidget *widget,
+				   gboolean   group_cycling)
+{
+  gtk_widget_grab_focus (widget);
+  return TRUE;
+}
+
+static gint
+go_option_menu_scroll_event (GtkWidget          *widget,
+			      GdkEventScroll     *event)
+{
+  return TRUE;
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-optionmenu.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,96 @@
+/* 
+ * go-optionmenu.h
+ *
+ * Copyright (C) 2002-2005 Andreas J. Guelzow <aguelzow at taliesin.ca>
+ *
+ * based extensively on:
+ *
+ * GTK - The GIMP Toolkit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * Modified by the GTK+ Team and others 1997-2000.  See the GTK AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#ifndef _GO_OPTIONMENU_H_
+#define _GO_OPTIONMENU_H_
+
+
+#include <gdk/gdk.h>
+#include <gtk/gtkbutton.h>
+
+G_BEGIN_DECLS
+
+#define GO_TYPE_OPTION_MENU              (go_option_menu_get_type ())
+#define GO_OPTION_MENU(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), GO_TYPE_OPTION_MENU, GOOptionMenu))
+#define GO_OPTION_MENU_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GO_TYPE_OPTION_MENU, GOOptionMenuClass))
+#define GO_IS_OPTION_MENU(obj)           (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GO_TYPE_OPTION_MENU))
+#define GO_IS_OPTION_MENU_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GO_TYPE_OPTION_MENU))
+#define GO_OPTION_MENU_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GO_TYPE_OPTION_MENU, GOOptionMenuClass))
+
+typedef struct _GOOptionMenu       GOOptionMenu;
+typedef struct _GOOptionMenuClass  GOOptionMenuClass;
+
+struct _GOOptionMenu
+{
+	GtkButton button;
+	
+	GtkWidget *menu;
+	GtkWidget *select_menu;
+	GtkWidget *menu_item;
+	GtkWidget *old_menu_item;
+
+	GtkWidget *last_signaled_menu_item;
+
+	GSList *selection;
+	gboolean new_selection;
+	
+	guint16 width;
+	guint16 height;
+};
+
+struct _GOOptionMenuClass
+{
+  GtkButtonClass parent_class;
+
+  void (*changed) (GOOptionMenu *option_menu);
+
+  /* Padding for future expansion */
+  void (*_gtk_reserved1) (void);
+  void (*_gtk_reserved2) (void);
+  void (*_gtk_reserved3) (void);
+  void (*_gtk_reserved4) (void);
+};
+
+
+GType      go_option_menu_get_type    (void) G_GNUC_CONST;
+GtkWidget* go_option_menu_new         (void);
+GtkWidget* go_option_menu_get_menu    (GOOptionMenu *option_menu);
+void       go_option_menu_set_menu    (GOOptionMenu *option_menu,
+				       GtkWidget *menu);
+void       go_option_menu_remove_menu (GOOptionMenu *option_menu);
+void       go_option_menu_set_history (GOOptionMenu *option_menu,
+				       GSList *selection);
+GtkWidget *go_option_menu_get_history (GOOptionMenu *option_menu);
+
+G_END_DECLS
+
+#endif /* _GO_OPTIONMENU_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,308 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * go-rotation-sel.c: A widget to select a text orientation
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ **/
+#include <goffice/goffice-config.h>
+#include "go-rotation-sel.h"
+
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-util.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-line.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-widget.h>
+#include <goffice/cut-n-paste/foocanvas/foo-canvas-rect-ellipse.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtklabel.h>
+#include <glib/gi18n.h>
+#include <math.h>
+#include <string.h>
+
+struct _GORotationSel {
+	GtkHBox		 box;
+	GladeXML	*gui;
+	int		 angle;
+
+	GtkSpinButton	*rotate_spinner;
+	FooCanvas       *rotate_canvas;
+	FooCanvasItem   *rotate_marks[13];
+	FooCanvasItem   *line;
+	GtkWidget       *text_widget;
+	FooCanvasItem   *text;
+	int		 rot_width, rot_height;
+	gulong		 motion_handle;
+};
+
+typedef struct {
+	GtkHBoxClass parent_class;
+	void (* rotation_changed) (GORotationSel *grs, int angle);
+} GORotationSelClass;
+
+enum {
+	ROTATION_CHANGED,
+	LAST_SIGNAL
+};
+
+static guint grs_signals[LAST_SIGNAL] = { 0 };
+static GObjectClass *grs_parent_class;
+
+static void
+cb_rotate_changed (GORotationSel *grs)
+{
+	char const *colour;
+	int i;
+
+	go_rotation_sel_set_rotation (grs,
+		gtk_spin_button_get_value_as_int (grs->rotate_spinner) % 360);
+
+	for (i = 0 ; i <= 12 ; i++)
+		if (grs->rotate_marks[i] != NULL) {
+			colour = (grs->angle == (i-6)*15) ? "green" : "black";
+			foo_canvas_item_set (grs->rotate_marks[i], "fill-color", colour, NULL);
+		}
+
+	if (grs->line != NULL) {
+		FooCanvasPoints *points = foo_canvas_points_new (2);
+		double rad = grs->angle * M_PI / 180.;
+		points->coords[0] =  15 + cos (rad) * grs->rot_width;
+		points->coords[1] = 100 - sin (rad) * grs->rot_width;
+		points->coords[2] =  15 + cos (rad) * 72.;
+		points->coords[3] = 100 - sin (rad) * 72.;
+		foo_canvas_item_set (grs->line, "points", points, NULL);
+		foo_canvas_points_free (points);
+	}
+
+	if (grs->text) {
+		double x = 15.0;
+		double y = 100.0;
+		double rad = grs->angle * M_PI / 180.;
+		x -= grs->rot_height * sin (fabs (rad)) / 2;
+		y -= grs->rot_height * cos (rad) / 2;
+		if (rad >= 0)
+			y -= grs->rot_width * sin (rad);
+		foo_canvas_item_set (grs->text, "x", x, "y", y, NULL);
+#if 0 // jsled: gtk-2.4 does not have this.
+		gtk_label_set_angle (GTK_LABEL (grs->text_widget),
+			(grs->angle + 360) % 360);
+#endif // 0
+	}
+}
+
+static void
+cb_rotate_canvas_realize (FooCanvas *canvas, GORotationSel *grs)
+{
+	FooCanvasGroup  *group = FOO_CANVAS_GROUP (foo_canvas_root (canvas));
+	int i;
+	GtkStyle *style = gtk_style_copy (GTK_WIDGET (canvas)->style);
+	style->bg[GTK_STATE_NORMAL] = style->white;
+	gtk_widget_set_style (GTK_WIDGET (canvas), style);
+	g_object_unref (style);
+
+	foo_canvas_set_scroll_region (canvas, 0, 0, 100, 200);
+	foo_canvas_scroll_to (canvas, 0, 0);
+
+	for (i = 0 ; i <= 12 ; i++) {
+		double rad = (i-6) * M_PI / 12.;
+		double x = 15 + cos (rad) * 80.;
+		double y = 100 - sin (rad) * 80.;
+		double size = (i % 3) ? 3.0 : 4.0;
+		FooCanvasItem *item = foo_canvas_item_new (group,
+			FOO_TYPE_CANVAS_ELLIPSE,
+			"x1", x-size,	"y1", y-size,
+			"x2", x+size,	"y2", y+size,
+			"width-pixels", (int) 1,
+			"outline-color","black",
+			"fill-color",	"black",
+			NULL);
+		grs->rotate_marks[i] = item;
+	}
+	grs->line = foo_canvas_item_new (group, FOO_TYPE_CANVAS_LINE,
+		"fill-color",	"black",
+		"width_units",	2.,
+		NULL);
+
+	{
+		int w, h;
+		GtkWidget *tw = grs->text_widget = gtk_label_new (_("Text"));
+		PangoAttrList *attrs = pango_attr_list_new ();
+		PangoAttribute *attr = pango_attr_scale_new (1.3);
+		attr->start_index = 0;
+		attr->end_index = -1;
+		pango_attr_list_insert (attrs, attr);
+#ifdef DEBUG_ROTATION
+		attr = pango_attr_background_new (0xffff, 0, 0);
+		attr->start_index = 0;
+		attr->end_index = -1;
+		pango_attr_list_insert (attrs, attr);
+#endif
+		gtk_label_set_attributes (GTK_LABEL (tw), attrs);
+		pango_attr_list_unref (attrs);
+
+		pango_layout_get_pixel_size (gtk_label_get_layout (GTK_LABEL (tw)), &w, &h);
+		grs->rot_width  = w;
+		grs->rot_height = h;
+
+		grs->text = foo_canvas_item_new (group, FOO_TYPE_CANVAS_WIDGET,
+			"widget", tw, NULL);
+		gtk_widget_show (tw);
+	}
+
+	cb_rotate_changed (grs);
+}
+
+static void
+set_rot_from_point (GORotationSel *grs, FooCanvas *canvas, double x, double y)
+{
+	double degrees;
+	foo_canvas_window_to_world (canvas, x, y, &x, &y);
+	x -= 15.;	if (x < 0.) x = 0.;
+	y -= 100.;
+
+	degrees = atan2 (-y, x) * 180 / M_PI;
+
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (grs->rotate_spinner),
+		go_fake_round (degrees));
+}
+
+static gboolean
+cb_rotate_motion_notify_event (FooCanvas *canvas, GdkEventMotion *event,
+			       GORotationSel *grs)
+{
+	set_rot_from_point (grs, canvas, event->x, event->y);
+	return TRUE;
+}
+
+static gboolean
+cb_rotate_canvas_button (FooCanvas *canvas, GdkEventButton *event, GORotationSel *grs)
+{
+	if (event->type == GDK_BUTTON_PRESS) {
+		set_rot_from_point (grs, canvas, event->x, event->y);
+		if (grs->motion_handle == 0) {
+			gdk_pointer_grab (canvas->layout.bin_window, FALSE,
+				GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
+				NULL, NULL, event->time);
+
+			grs->motion_handle = g_signal_connect (G_OBJECT (canvas), "motion_notify_event",
+				G_CALLBACK (cb_rotate_motion_notify_event), grs);
+		}
+		return TRUE;
+	} else if (event->type == GDK_BUTTON_RELEASE) {
+		if (grs->motion_handle != 0) {
+			gdk_display_pointer_ungrab (gtk_widget_get_display (GTK_WIDGET (canvas)),
+				event->time);
+			g_signal_handler_disconnect (canvas, grs->motion_handle);
+			grs->motion_handle = 0;
+		}
+		return TRUE;
+	} else
+		return FALSE;
+}
+
+static void
+grs_init (GORotationSel *grs)
+{
+	GtkWidget *w;
+
+	grs->gui = go_libglade_new ("go-rotation-sel.glade", "toplevel", NULL, NULL);
+	if (grs->gui == NULL)
+		return;
+
+	grs->angle = 0;
+	grs->line  = NULL;
+	grs->text  = NULL;
+	grs->text_widget = NULL;
+	grs->rotate_canvas = FOO_CANVAS (foo_canvas_new ());
+	gtk_container_add (GTK_CONTAINER (glade_xml_get_widget (grs->gui,
+		"rotate_canvas_container")),
+		GTK_WIDGET (grs->rotate_canvas));
+	gtk_widget_show (GTK_WIDGET (grs->rotate_canvas));
+	memset (grs->rotate_marks, 0, sizeof (grs->rotate_marks));
+	w = glade_xml_get_widget (grs->gui, "rotate_spinner");
+	grs->rotate_spinner = GTK_SPIN_BUTTON (w);
+	g_signal_connect_swapped (G_OBJECT (w), "value-changed",
+		G_CALLBACK (cb_rotate_changed), grs);
+
+	grs->motion_handle = 0;
+	g_object_connect (G_OBJECT (grs->rotate_canvas),
+		"signal::realize",		G_CALLBACK (cb_rotate_canvas_realize), grs,
+		"signal::button_press_event",	G_CALLBACK (cb_rotate_canvas_button), grs,
+		"signal::button_release_event", G_CALLBACK (cb_rotate_canvas_button), grs,
+		NULL);
+	gtk_spin_button_set_value (grs->rotate_spinner, grs->angle);
+
+	w = glade_xml_get_widget (grs->gui, "toplevel");
+	gtk_box_pack_start (GTK_BOX (grs), w, TRUE, TRUE, 0);
+	gtk_widget_show_all (GTK_WIDGET (grs));
+}
+
+static void
+grs_finalize (GObject *obj)
+{
+	GORotationSel *grs = GO_ROTATION_SEL (obj);
+
+	if (grs->gui) {
+		g_object_unref (G_OBJECT (grs->gui));
+		grs->gui = NULL;
+	}
+
+	grs_parent_class->finalize (obj);
+}
+
+static void
+grs_class_init (GObjectClass *klass)
+{
+	GObjectClass *gobj_class = (GObjectClass *) klass;
+	gobj_class->finalize = grs_finalize;
+
+	grs_parent_class = g_type_class_peek (gtk_hbox_get_type ());
+	grs_signals [ROTATION_CHANGED] = g_signal_new ("rotation-changed",
+		G_OBJECT_CLASS_TYPE (klass),	G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (GORotationSelClass, rotation_changed),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__INT,
+		G_TYPE_NONE, 1, G_TYPE_INT);
+}
+
+GSF_CLASS (GORotationSel, go_rotation_sel,
+	   grs_class_init, grs_init, GTK_TYPE_HBOX)
+
+GtkWidget *
+go_rotation_sel_new (void)
+{
+	return g_object_new (GO_ROTATION_SEL_TYPE, NULL);
+}
+
+int
+go_rotation_sel_get_rotation (GORotationSel const *grs)
+{
+	g_return_val_if_fail (IS_GO_ROTATION_SEL (grs), 0);
+	return grs->angle;
+}
+
+void
+go_rotation_sel_set_rotation (GORotationSel *grs, int angle)
+{
+	g_return_if_fail (IS_GO_ROTATION_SEL (grs));
+	if (grs->angle != angle) {
+		grs->angle = angle;
+		gtk_spin_button_set_value (grs->rotate_spinner, grs->angle);
+		g_signal_emit (G_OBJECT (grs),
+			grs_signals [ROTATION_CHANGED], 0, grs->angle);
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,225 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="dummy">
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+
+  <child>
+    <widget class="GtkVBox" id="toplevel">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label72">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">&lt;b&gt;Orientation&lt;/b&gt;</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">True</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	  <property name="width_chars">-1</property>
+	  <property name="single_line_mode">False</property>
+	  <property name="angle">0</property>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="hbox44">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">0</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="label73">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">    </property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+	      <property name="width_chars">-1</property>
+	      <property name="single_line_mode">False</property>
+	      <property name="angle">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="vbox53">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox58">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">0</property>
+
+		  <child>
+		    <widget class="GtkScrolledWindow" id="rotate_canvas_container">
+		      <property name="width_request">140</property>
+		      <property name="height_request">210</property>
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="vscrollbar_policy">GTK_POLICY_NEVER</property>
+		      <property name="shadow_type">GTK_SHADOW_IN</property>
+		      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		      <child>
+			<placeholder/>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox39">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">6</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="label87">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">A_ngle:</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">rotate_spinner</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSpinButton" id="rotate_spinner">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="climb_rate">1</property>
+		      <property name="digits">0</property>
+		      <property name="numeric">True</property>
+		      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+		      <property name="snap_to_ticks">False</property>
+		      <property name="wrap">False</property>
+		      <property name="adjustment">0 -90 90 1 5 5</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="label62">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">degrees</property>
+		      <property name="use_underline">True</property>
+		      <property name="use_markup">False</property>
+		      <property name="justify">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap">False</property>
+		      <property name="selectable">False</property>
+		      <property name="xalign">0.5</property>
+		      <property name="yalign">0.5</property>
+		      <property name="xpad">0</property>
+		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">rotate_spinner</property>
+		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		      <property name="width_chars">-1</property>
+		      <property name="single_line_mode">False</property>
+		      <property name="angle">0</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/go-rotation-sel.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-rotation-sel.h - Select a text orientation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+#ifndef _GO_ROTATION_SEL_H_
+#define _GO_ROTATION_SEL_H_
+
+#include <gtk/gtkwindow.h>
+#include <goffice/utils/goffice-utils.h>
+
+G_BEGIN_DECLS
+
+#define GO_ROTATION_SEL_TYPE	(go_rotation_sel_get_type ())
+#define GO_ROTATION_SEL(obj)	(G_TYPE_CHECK_INSTANCE_CAST((obj), GO_ROTATION_SEL_TYPE, GORotationSel))
+#define IS_GO_ROTATION_SEL(obj)	(G_TYPE_CHECK_INSTANCE_TYPE((obj), GO_ROTATION_SEL_TYPE))
+
+typedef struct _GORotationSel GORotationSel;
+
+GType      go_rotation_sel_get_type (void);
+GtkWidget *go_rotation_sel_new      (void);
+void	   go_rotation_sel_set_rotation (GORotationSel *rs, int degrees);
+int	   go_rotation_sel_get_rotation (GORotationSel const *rs);
+
+G_END_DECLS
+
+#endif /* _GO_ROTATION_SEL_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1022 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice-gtk.c: Misc gtk utilities
+ *
+ * Copyright (C) 2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <goffice/goffice-config.h>
+#include "goffice-gtk.h"
+
+#include <goffice/app/go-cmd-context.h>
+#include <goffice/utils/go-file.h>
+#include <goffice/goffice-priv.h>
+#include <gtk/gtkalignment.h>
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkhbox.h>
+#include <gtk/gtkmessagedialog.h>
+#include <gtk/gtklabel.h>
+#include <gtk/gtkstock.h>
+#include <gtk/gtkmain.h>
+#include <gtk/gtkdialog.h>
+#include <gtk/gtkvbox.h>
+#include <gtk/gtkbbox.h>
+#include <gtk/gtkcombobox.h>
+#include <gtk/gtkfilechooserdialog.h>
+#include <gtk/gtkicontheme.h>
+#include <gdk/gdkkeysyms.h>
+#include <atk/atkrelation.h>
+#include <atk/atkrelationset.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-input-textline.h>
+
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#ifndef HAVE_GTK26
+// +jsled: maybe not needed due to cascading imports under gtk+-2.6?
+#include <gtk/gtkimage.h>
+#endif
+
+#ifndef HAVE_GLIB26
+#include "glib24_26-compat.h"
+#endif
+
+#define PREVIEW_HSIZE 150
+#define PREVIEW_VSIZE 150
+
+/* ------------------------------------------------------------------------- */
+
+#ifndef W_OK
+#define W_OK 2
+#endif
+
+/* g_access would be nice here.  */
+static int
+go_access (const char *filename, int what)
+{
+#ifdef G_OS_WIN32
+	int retval;
+	int save_errno;
+	if (G_WIN32_HAVE_WIDECHAR_API ()) {
+		wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+		if (wfilename == NULL) {
+			errno = EINVAL;
+			return -1;
+		}
+
+		retval = _waccess (wfilename, what);
+		save_errno = errno;
+
+		g_free (wfilename);
+      
+		errno = save_errno;
+	} else {
+		gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+		if (cp_filename == NULL) {
+			errno = EINVAL;
+			return -1;
+		}
+
+		retval = _access (cp_filename, what);
+		save_errno = errno;
+
+		g_free (cp_filename);
+
+		errno = save_errno;
+	}
+	return retval;
+#else
+	return access (filename, what);
+#endif
+}
+
+/* ------------------------------------------------------------------------- */
+
+
+/**
+ * go_gtk_button_new_with_stock
+ *
+ * Code from gedit
+ *
+ * Creates a new GtkButton with custom label and stock image.
+ *
+ * text : button label
+ * stock_id : id for stock icon
+ *
+ * return : newly created button
+ **/
+GtkWidget*
+go_gtk_button_new_with_stock (char const *text, char const* stock_id)
+{
+	GtkStockItem item;
+	GtkWidget *button = gtk_button_new_with_mnemonic (text);
+	if (gtk_stock_lookup (stock_id, &item))
+		gtk_button_set_image (GTK_BUTTON (button),
+			gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON));
+	return button;
+}
+
+/**
+ * go_gtk_dialog_add_button
+ * dialog : dialog you want to add a button
+ * text : button label
+ * stock_id : stock icon id
+ * response_id : respond id when button clicked
+ *
+ * Creates and adds a button with stock image to the action area of an existing dialog.
+ * Code from gedit
+ * 
+ * return : newly created button
+ **/
+GtkWidget*
+go_gtk_dialog_add_button (GtkDialog *dialog, const gchar* text, const gchar* stock_id,
+			  gint response_id)
+{
+	GtkWidget *button;
+
+	g_return_val_if_fail (GTK_IS_DIALOG (dialog), NULL);
+	g_return_val_if_fail (text != NULL, NULL);
+	g_return_val_if_fail (stock_id != NULL, NULL);
+
+	button = go_gtk_button_new_with_stock (text, stock_id);
+	g_return_val_if_fail (button != NULL, NULL);
+
+	GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+
+	gtk_widget_show (button);
+
+	gtk_dialog_add_action_widget (dialog, button, response_id);	
+
+	return button;
+}
+
+/**
+ * go_libglade_new :
+ * @gcc : #GOCmdContext
+ * @gladefile :
+ *
+ * Simple utility to open glade files
+ **/
+GladeXML *
+go_libglade_new (char const *gladefile, char const *root,
+		 char const *domain, GOCmdContext *gcc)
+{
+	GladeXML *gui;
+	char *f;
+
+	g_return_val_if_fail (gladefile != NULL, NULL);
+
+	if (!g_path_is_absolute (gladefile))
+		f = g_build_filename (go_sys_data_dir (), "glade", gladefile, NULL);
+	else
+		f = g_strdup (gladefile);
+
+	gui = glade_xml_new (f, root, domain);
+	if (gui == NULL && gcc != NULL) {
+		char *msg = g_strdup_printf (_("Unable to open file '%s'"), f);
+		go_cmd_context_error_system (gcc, msg);
+		g_free (msg);
+	}
+	g_free (f);
+
+	return gui;
+}
+
+/**
+ * go_editable_enters:
+ * @window: dialog to affect.
+ * @editable: Editable to affect.
+ *
+ * Normally if there's an editable widget (such as #GtkEntry) in your
+ * dialog, pressing Enter will activate the editable rather than the
+ * default dialog button. However, in most cases, the user expects to
+ * type something in and then press enter to close the dialog. This
+ * function enables that behavior.
+ **/
+void
+go_editable_enters (GtkWindow *window, GtkWidget *w)
+{
+	g_return_if_fail (GTK_IS_WINDOW (window));
+	g_signal_connect_swapped (G_OBJECT (w),
+		"activate",
+		G_CALLBACK (gtk_window_activate_default), window);
+}
+
+GdkPixbuf *
+go_pixbuf_intelligent_scale (GdkPixbuf *buf, guint width, guint height)
+{
+	GdkPixbuf *scaled;
+	int w, h;
+	unsigned long int ow = gdk_pixbuf_get_width (buf);
+	unsigned long int oh = gdk_pixbuf_get_height (buf);
+
+	if (ow > width || oh > height) {
+		if (ow * height > oh * width) {
+			w = width;
+			h = width * (((double)oh)/(double)ow);
+		} else {
+			h = height;
+			w = height * (((double)ow)/(double)oh);
+		}
+
+		scaled = gdk_pixbuf_scale_simple (buf, w, h, GDK_INTERP_BILINEAR);
+	} else
+		scaled = g_object_ref (buf);
+
+	return scaled;
+}
+
+void
+go_gtk_widget_disable_focus (GtkWidget *w)
+{
+	if (GTK_IS_CONTAINER (w))
+		gtk_container_foreach (GTK_CONTAINER (w),
+			(GtkCallback) go_gtk_widget_disable_focus, NULL);
+	GTK_WIDGET_UNSET_FLAGS (w, GTK_CAN_FOCUS);
+}
+
+int
+go_pango_measure_string (PangoContext *context, const PangoFontDescription *font_desc, const char *str)
+{
+	PangoLayout *layout = pango_layout_new (context);
+	int width;
+
+	pango_layout_set_text (layout, str, -1);
+	pango_layout_set_font_description (layout, font_desc);
+	pango_layout_get_pixel_size (layout, &width, NULL);
+
+	g_object_unref (layout);
+
+	return width;
+}
+
+static void
+cb_parent_mapped (GtkWidget *parent, GtkWindow *window)
+{
+	if (GTK_WIDGET_MAPPED (window)) {
+		gtk_window_present (window);
+		g_signal_handlers_disconnect_by_func (G_OBJECT (parent),
+			G_CALLBACK (cb_parent_mapped), window);
+	}
+}
+
+/**
+ * go_gtk_window_set_transient
+ * @wbcg	: The calling window
+ * @window      : the transient window
+ *
+ * Make the window a child of the workbook in the command context, if there is
+ * one.
+ * The function duplicates the positioning functionality in
+ * gnome_dialog_set_parent, but does not require the transient window to be
+ * a GnomeDialog.
+ */
+void
+go_gtk_window_set_transient (GtkWindow *toplevel, GtkWindow *window)
+{
+/* FIXME:                                                                     */
+/* 	GtkWindowPosition position = gnome_preferences_get_dialog_position(); */
+	GtkWindowPosition position = GTK_WIN_POS_CENTER_ON_PARENT;
+
+	g_return_if_fail (GTK_IS_WINDOW (toplevel));
+	g_return_if_fail (GTK_IS_WINDOW (window));
+
+	gtk_window_set_transient_for (window, toplevel);
+
+	if (position == GTK_WIN_POS_NONE)
+		position = GTK_WIN_POS_CENTER_ON_PARENT;
+	gtk_window_set_position (window, position);
+
+	if (!GTK_WIDGET_MAPPED (toplevel))
+		g_signal_connect_after (G_OBJECT (toplevel),
+			"map",
+			G_CALLBACK (cb_parent_mapped), window);
+}
+
+static gint
+cb_non_modal_dialog_keypress (GtkWidget *w, GdkEventKey *e)
+{
+	if(e->keyval == GDK_Escape) {
+		gtk_widget_destroy (w);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+void
+go_gtk_nonmodal_dialog (GtkWindow *toplevel, GtkWindow *dialog)
+{
+	go_gtk_window_set_transient (toplevel, dialog);
+	g_signal_connect (G_OBJECT (dialog),
+		"key-press-event",
+		G_CALLBACK (cb_non_modal_dialog_keypress), NULL);
+}
+
+static void
+fsel_response_cb (GtkFileChooser *dialog,
+		  gint response_id,
+		  gboolean *result)
+{
+	if (response_id == GTK_RESPONSE_OK) {
+		char *uri = gtk_file_chooser_get_uri (dialog);
+
+		if (uri) {
+			g_free (uri);
+			*result = TRUE;
+		}
+	}
+
+	gtk_main_quit ();
+}
+
+static gint
+gu_delete_handler (GtkDialog *dialog,
+		   GdkEventAny *event,
+		   gpointer data)
+{
+	gtk_dialog_response (dialog, GTK_RESPONSE_CANCEL);
+	return TRUE; /* Do not destroy */
+}
+
+gboolean
+go_gtk_file_sel_dialog (GtkWindow *toplevel, GtkWidget *w)
+{
+	gboolean result = FALSE;
+	gulong delete_handler;
+
+	g_return_val_if_fail (GTK_IS_WINDOW (toplevel), FALSE);
+	g_return_val_if_fail (GTK_IS_FILE_CHOOSER (w), FALSE);
+
+	gtk_window_set_modal (GTK_WINDOW (w), TRUE);
+	go_gtk_window_set_transient (toplevel, GTK_WINDOW (w));
+	g_signal_connect (w, "response",
+		G_CALLBACK (fsel_response_cb), &result);
+	delete_handler = g_signal_connect (w, "delete_event",
+		G_CALLBACK (gu_delete_handler), NULL);
+
+	gtk_widget_show_all (w);
+	gtk_grab_add (w);
+	gtk_main ();
+
+	g_signal_handler_disconnect (w, delete_handler);
+
+	return result;
+}
+
+static gboolean have_pixbufexts = FALSE;
+static GSList *pixbufexts = NULL;  /* FIXME: we leak this.  */
+
+static gboolean
+filter_images (const GtkFileFilterInfo *filter_info, gpointer data)
+{
+	if (filter_info->mime_type)
+		return strncmp (filter_info->mime_type, "image/", 6) == 0;
+
+	if (filter_info->display_name) {
+		GSList *l;
+		const char *ext = strrchr (filter_info->display_name, '.');
+		if (!ext) return FALSE;
+		ext++;
+
+		if (!have_pixbufexts) {
+			GSList *l, *pixbuf_fmts = gdk_pixbuf_get_formats ();
+
+			for (l = pixbuf_fmts; l != NULL; l = l->next) {
+				GdkPixbufFormat *fmt = l->data;
+				gchar **support_exts = gdk_pixbuf_format_get_extensions (fmt);
+				int i;
+
+				for (i = 0; support_exts[i]; ++i)
+					pixbufexts = g_slist_prepend (pixbufexts,
+								      support_exts[i]);
+				/*
+				 * Use g_free here because the strings have been
+				 * taken by pixbufexts.
+				 */
+				g_free (support_exts);
+			}
+
+			g_slist_free (pixbuf_fmts);
+			have_pixbufexts = TRUE;
+		}
+
+		for (l = pixbufexts; l != NULL; l = l->next)
+			if (g_ascii_strcasecmp (l->data, ext) == 0)
+				return TRUE;
+	}
+
+	return FALSE;
+}
+
+static void
+update_preview_cb (GtkFileChooser *chooser)
+{
+	gchar *filename = gtk_file_chooser_get_preview_filename (chooser);
+	GtkWidget *label = g_object_get_data (G_OBJECT (chooser), "label-widget");
+	GtkWidget *image = g_object_get_data (G_OBJECT (chooser), "image-widget");
+
+	if (filename == NULL) {
+		gtk_widget_hide (image);
+		gtk_widget_hide (label);
+	} else if (g_file_test (filename, G_FILE_TEST_IS_DIR)) {
+		/* Not quite sure what to do here.  */
+		gtk_widget_hide (image);
+		gtk_widget_hide (label);
+	} else {
+		GdkPixbuf *buf;
+		gboolean dummy;
+
+		buf = gdk_pixbuf_new_from_file (filename, NULL);
+		if (buf) {
+			dummy = FALSE;
+		} else {
+			GdkScreen *screen = gtk_widget_get_screen (GTK_WIDGET (chooser));
+			buf = gtk_icon_theme_load_icon
+				(gtk_icon_theme_get_for_screen (screen),
+				 "unknown_image", 100, 100, NULL);
+			dummy = buf != NULL;
+		}
+
+		if (buf) {
+			GdkPixbuf *pixbuf = go_pixbuf_intelligent_scale (buf, PREVIEW_HSIZE, PREVIEW_VSIZE);
+			gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+			g_object_unref (pixbuf);
+			gtk_widget_show (image);
+
+			if (dummy)
+				gtk_label_set_text (GTK_LABEL (label), "");
+			else {
+				int w = gdk_pixbuf_get_width (buf);
+				int h = gdk_pixbuf_get_height (buf);
+				char *size = g_strdup_printf (_("%d x %d"), w, h);
+				gtk_label_set_text (GTK_LABEL (label), size);
+				g_free (size);
+			}
+			gtk_widget_show (label);
+
+			g_object_unref (buf);
+		}
+
+		g_free (filename);
+	}
+}
+
+static GtkFileChooser *
+gui_image_chooser_new (gboolean is_save)
+{
+	GtkFileChooser *fsel;
+
+	fsel = GTK_FILE_CHOOSER
+		(g_object_new (GTK_TYPE_FILE_CHOOSER_DIALOG,
+			       "action", is_save ? GTK_FILE_CHOOSER_ACTION_SAVE : GTK_FILE_CHOOSER_ACTION_OPEN,
+			       "local-only", FALSE,
+			       "use-preview-label", FALSE,
+			       NULL));
+	gtk_dialog_add_buttons (GTK_DIALOG (fsel),
+				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+				is_save ? GTK_STOCK_SAVE : GTK_STOCK_OPEN,
+				GTK_RESPONSE_OK,
+				NULL);
+	gtk_dialog_set_default_response (GTK_DIALOG (fsel), GTK_RESPONSE_OK);
+	/* Filters */
+	{
+		GtkFileFilter *filter;
+
+		filter = gtk_file_filter_new ();
+		gtk_file_filter_set_name (filter, _("All Files"));
+		gtk_file_filter_add_pattern (filter, "*");
+		gtk_file_chooser_add_filter (fsel, filter);
+
+		filter = gtk_file_filter_new ();
+		gtk_file_filter_set_name (filter, _("Images"));
+		gtk_file_filter_add_custom (filter, GTK_FILE_FILTER_MIME_TYPE,
+					    filter_images, NULL, NULL);
+		gtk_file_chooser_add_filter (fsel, filter);
+		/* Make this filter the default */
+		gtk_file_chooser_set_filter (fsel, filter);
+	}
+
+	/* Preview */
+	{
+		GtkWidget *vbox = gtk_vbox_new (FALSE, 2);
+		GtkWidget *preview_image = gtk_image_new ();
+		GtkWidget *preview_label = gtk_label_new ("");
+
+		g_object_set_data (G_OBJECT (fsel), "image-widget", preview_image);
+		g_object_set_data (G_OBJECT (fsel), "label-widget", preview_label);
+
+		gtk_widget_set_size_request (vbox, PREVIEW_HSIZE, -1);
+
+		gtk_box_pack_start (GTK_BOX (vbox), preview_image, FALSE, FALSE, 0);
+		gtk_box_pack_start (GTK_BOX (vbox), preview_label, FALSE, FALSE, 0);
+		gtk_file_chooser_set_preview_widget (fsel, vbox);
+		g_signal_connect (fsel, "update-preview",
+				  G_CALLBACK (update_preview_cb), NULL);
+		update_preview_cb (fsel);
+	}
+	return fsel;
+}
+
+char *
+go_gtk_select_image (GtkWindow *toplevel, const char *initial)
+{
+	const char *key = "go_gtk_select_image";
+	char *uri = NULL;
+	GtkFileChooser *fsel;
+
+	g_return_val_if_fail (GTK_IS_WINDOW (toplevel), NULL);
+
+	fsel = gui_image_chooser_new (FALSE);
+
+	if (!initial)
+		initial = g_object_get_data (G_OBJECT (toplevel), key);
+	if (initial)
+		gtk_file_chooser_set_uri (fsel, initial);
+	g_object_set (G_OBJECT (fsel), "title", _("Select an Image"), NULL);
+
+	/* Show file selector */
+	if (go_gtk_file_sel_dialog (toplevel, GTK_WIDGET (fsel))) {
+		uri = gtk_file_chooser_get_uri (fsel);
+		g_object_set_data_full (G_OBJECT (toplevel),
+					key, g_strdup (uri),
+					g_free);
+	}
+	gtk_widget_destroy (GTK_WIDGET (fsel));
+	return uri;
+}
+
+char *
+gui_get_image_save_info (GtkWindow *toplevel, GSList *formats,
+			 GOImageType const **ret_format)
+{
+	GOImageType const *sel_format = NULL;
+	GtkComboBox *format_combo = NULL;
+	char *uri = NULL;
+	GtkFileChooser *fsel = gui_image_chooser_new (TRUE);
+
+	g_object_set (G_OBJECT (fsel), "title", _("Save as"), NULL);
+
+	/* Make format chooser */
+	if (formats && ret_format) {
+		GtkWidget *label;
+		GtkWidget *box = gtk_hbox_new (FALSE, 5);
+		GSList *l;
+		int i;
+
+		format_combo = GTK_COMBO_BOX (gtk_combo_box_new_text ());
+		if (*ret_format)
+			sel_format = *ret_format;
+		for (l = formats, i = 0; l != NULL; l = l->next, i++) {
+			gtk_combo_box_append_text
+				(format_combo,
+				 ((GOImageType *) (l->data))->desc);
+			if (l->data == (void *)sel_format)
+				gtk_combo_box_set_active (format_combo, i);
+		}
+		if (gtk_combo_box_get_active (format_combo) < 0)
+			gtk_combo_box_set_active (format_combo, 0);
+
+		label = gtk_label_new_with_mnemonic (_("File _type:"));
+		gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0);
+		gtk_box_pack_start (GTK_BOX (box),  GTK_WIDGET (format_combo),
+				    TRUE, TRUE, 0);
+		gtk_label_set_mnemonic_widget (GTK_LABEL (label),
+					       GTK_WIDGET (format_combo));
+		gtk_file_chooser_set_extra_widget (fsel, box);
+	}
+
+	/* Show file selector */
+ loop:
+	if (!go_gtk_file_sel_dialog (toplevel, GTK_WIDGET (fsel)))
+		goto out;
+	uri = gtk_file_chooser_get_uri (fsel);
+	if (format_combo) {
+		char *new_uri = NULL;
+
+		sel_format = g_slist_nth_data (
+			formats, gtk_combo_box_get_active (format_combo));
+		if (!go_url_check_extension (uri, sel_format->ext, &new_uri) &&
+		    !go_gtk_query_yes_no (GTK_WINDOW (fsel), TRUE,
+		     _("The given file extension does not match the"
+		       " chosen file type. Do you want to use this name"
+		       " anyway?"))) {
+			g_free (new_uri);
+			g_free (uri);
+			uri = NULL;
+			goto out;
+		} else {
+			g_free (uri);
+			uri = new_uri;
+		}
+		*ret_format = sel_format;
+	}
+	if (!go_gtk_url_is_writeable (GTK_WINDOW (fsel), uri, TRUE)) {
+		g_free (uri);
+		uri = NULL;
+		goto loop;
+	}
+ out:
+	gtk_widget_destroy (GTK_WIDGET (fsel));
+	return uri;
+}
+
+char *
+go_mime_to_image_format (char const *mime_type)
+{
+ 	guint i;
+	const char *suffix;
+	const char* exceptions[] = {
+		"svg+xml", "svg",
+		"x-wmf", "wmf",
+		"x-emf", "emf",
+	};
+
+	if (strncmp (mime_type, "image/", 6) != 0)
+		return NULL;
+	suffix = mime_type + 6;
+	for (i = 0; i < G_N_ELEMENTS (exceptions); i +=2)
+		if (strcmp (suffix, exceptions[i]) == 0)
+			return g_strdup (exceptions[i+1]);
+
+	return g_strdup (suffix);
+}
+
+char *
+go_image_format_to_mime (char const *format)
+{
+ 	guint i;
+	GSList *ptr, *pixbuf_fmts;
+	GdkPixbufFormat *pfmt;
+	gchar *name;
+	char *ret = NULL;
+	int cmp;
+	gchar **mimes;
+
+	const char* formats[] = {
+		"svg", "image/svg,image/svg+xml",
+		"wmf", "x-wmf",
+		"emf", "x-emf",
+	};
+	
+	if (format == NULL)
+		return NULL;
+
+	for (i = 0; i < G_N_ELEMENTS (formats); i +=2)
+		if (strcmp (format, formats[i]) == 0)
+			return g_strdup (formats[i+1]);
+
+	/* Not a format we have special knowledge about - ask gdk-pixbuf */
+	pixbuf_fmts = gdk_pixbuf_get_formats ();
+	for (ptr = pixbuf_fmts; ptr != NULL; ptr = ptr->next) {
+		pfmt = (GdkPixbufFormat *)ptr->data;
+		name = gdk_pixbuf_format_get_name (pfmt);
+		cmp = strcmp (format, name);
+		g_free (name);
+		if (cmp == 0) {
+			mimes = gdk_pixbuf_format_get_mime_types (pfmt);
+			ret = g_strjoinv (",", mimes);
+			g_strfreev (mimes);
+			break;
+		}
+	}
+	g_slist_free (pixbuf_fmts);
+
+	return ret;
+}
+
+static void
+add_atk_relation (GtkWidget *w0, GtkWidget *w1, AtkRelationType type)
+{
+	AtkObject *atk0 = gtk_widget_get_accessible(w0);
+	AtkObject *atk1 = gtk_widget_get_accessible(w1);
+	AtkRelationSet *relation_set = atk_object_ref_relation_set (atk0);
+	AtkRelation *relation = atk_relation_new (&atk1, 1, type);
+	atk_relation_set_add (relation_set, relation);
+	g_object_unref (relation_set);
+	g_object_unref (relation);
+}
+
+/**
+ * go_atk_setup_label :
+ * @label : #GtkWidget
+ * @target : #GtkWidget
+ *
+ * A convenience routine to setup label-for/labeled-by relationship between a
+ * pair of widgets
+ **/
+void
+go_atk_setup_label (GtkWidget *label, GtkWidget *target)
+{
+	 add_atk_relation (label, target, ATK_RELATION_LABEL_FOR);
+	 add_atk_relation (target, label, ATK_RELATION_LABELLED_BY);
+}
+
+typedef struct {
+	char const *data_dir;
+	char const *app;
+	char const *link;
+} CBHelpPaths;
+
+#ifdef WITH_GNOME
+#include <libgnome/gnome-help.h>
+#elif defined(G_OS_WIN32)
+#include <goffice/utils/win32-stub.h>
+#endif
+static void
+go_help_display (CBHelpPaths const *paths)
+{
+#ifdef WITH_GNOME
+	gnome_help_display (paths->app, paths->link, NULL);
+#elif defined(G_OS_WIN32)
+	static GHashTable* context_help_map = NULL;
+	guint id;
+
+	if (!context_help_map) {
+		GsfInput *input;
+		GsfInputTextline *textline;
+		GError *err = NULL;
+		gchar *mapfile = g_strconcat (paths->app, ".hhmap", NULL);
+		gchar *path = g_build_filename (paths->data_dir, "doc", "C", mapfile, NULL);
+
+		g_free (mapfile);
+
+		if (!(input = gsf_input_stdio_new (path, &err)) ||
+		    !(textline = (GsfInputTextline *) gsf_input_textline_new (input)))
+			go_gtk_notice_dialog (NULL, GTK_MESSAGE_ERROR, "Cannot open '%s': %s",
+					      path, err ? err->message :
+							  "failed to create gsf-input-textline");
+		else {
+			gchar *line, *topic;
+			gulong id, i = 1;
+			context_help_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+			while ((line = gsf_input_textline_utf8_gets (textline)) != NULL) {
+				if (!(id = strtoul (line, &topic, 10))) {
+					go_gtk_notice_dialog (NULL, GTK_MESSAGE_ERROR,
+							      "Invalid topic id at line %lu in %s: '%s'",
+							      i, path, line);
+					continue;
+				}
+				for (; *topic == ' '; ++topic);
+				g_hash_table_insert (context_help_map, g_strdup (topic),
+					(gpointer)id);
+			}
+			g_object_unref (G_OBJECT (textline));
+		}
+		if (input)
+			g_object_unref (G_OBJECT (input));
+		g_free (path);
+	}
+
+	if (!(id = (guint) g_hash_table_lookup (context_help_map, paths->link)))
+		go_gtk_notice_dialog (NULL, GTK_MESSAGE_ERROR, "Topic '%s' not found.",
+				      paths->link);
+	else {
+		gchar *chmfile = g_strconcat (paths->app, ".chm", NULL);
+		gchar *path = g_build_filename (paths->data_dir, "doc", "C", chmfile, NULL);
+
+		g_free (chmfile);
+		if (!HtmlHelp_ (GetDesktopWindow (), path, HH_HELP_CONTEXT, id))
+			go_gtk_notice_dialog (NULL, GTK_MESSAGE_ERROR, "Failed to spawn HtmlHelp");
+		g_free (path);
+	}
+#else
+	go_gtk_notice_dialog (NULL, GTK_MESSAGE_ERROR,
+			      "TODO : launch help browser for %s", paths->link);
+#endif
+}
+
+static void
+cb_help (CBHelpPaths const *paths)
+{
+	go_help_display (paths);
+}
+
+void
+go_gtk_help_button_init (GtkWidget *w, char const *data_dir, char const *app, char const *link)
+{
+	CBHelpPaths *paths = g_new (CBHelpPaths, 1);
+	GtkWidget *parent = gtk_widget_get_parent (w);
+
+	if (GTK_IS_BUTTON_BOX (parent))
+		gtk_button_box_set_child_secondary (
+			GTK_BUTTON_BOX (parent), w, TRUE);
+
+	paths->data_dir = data_dir;
+	paths->app	= app;
+	paths->link	= link;
+	g_signal_connect_data (G_OBJECT (w), "clicked",
+		G_CALLBACK (cb_help), (gpointer) paths,
+		(GClosureNotify)g_free, G_CONNECT_SWAPPED);
+}
+
+/**
+ * go_gtk_url_is_writeable:
+ * @parent : #GtkWindow
+ * @uri :
+ *
+ * Check if it makes sense to try saving.
+ * If it's an existing file and writable for us, ask if we want to overwrite.
+ * We check for other problems, but if we miss any, the saver will report.
+ * So it doesn't have to be bulletproof.
+ *
+ * FIXME: The message boxes should really be children of the file selector,
+ * not the workbook.
+ **/
+gboolean
+go_gtk_url_is_writeable (GtkWindow *parent, char const *uri,
+			 gboolean overwrite_by_default)
+{
+	gboolean result = TRUE;
+	char *filename;
+
+	if (uri == NULL || uri[0] == '\0')
+		result = FALSE;
+
+	filename = go_filename_from_uri (uri);
+	if (!filename)
+		return TRUE;  /* Just assume writable.  */
+
+	if (G_IS_DIR_SEPARATOR (filename [strlen (filename) - 1]) ||
+	    g_file_test (filename, G_FILE_TEST_IS_DIR)) {
+		go_gtk_notice_dialog (parent, GTK_MESSAGE_ERROR,
+				      _("%s\nis a directory name"), uri);
+		result = FALSE;
+	} else if (go_access (filename, W_OK) != 0 && errno != ENOENT) {
+		go_gtk_notice_dialog (parent, GTK_MESSAGE_ERROR,
+				      _("You do not have permission to save to\n%s"),
+				      uri);
+		result = FALSE;
+	} else if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
+		char *dirname = go_dirname_from_uri (uri, TRUE);
+		char *basename = go_basename_from_uri (uri);
+		char *msg = g_markup_printf_escaped (
+			_("A file called <i>%s</i> already exists in %s.\n\n"
+			  "Do you want to save over it?"),
+			basename, dirname);
+		GtkWidget *dialog = gtk_message_dialog_new_with_markup (parent,
+			 GTK_DIALOG_DESTROY_WITH_PARENT,
+			 GTK_MESSAGE_WARNING,
+			 GTK_BUTTONS_OK_CANCEL,
+			 msg);
+		gtk_dialog_set_default_response (GTK_DIALOG (dialog),
+			overwrite_by_default ? GTK_RESPONSE_OK : GTK_RESPONSE_CANCEL);
+		result = GTK_RESPONSE_OK ==
+			go_gtk_dialog_run (GTK_DIALOG (dialog), parent);
+		g_free (dirname);
+		g_free (basename);
+		g_free (msg);
+	}
+
+	g_free (filename);
+	return result;
+}
+
+static gint
+cb_modal_dialog_keypress (GtkWidget *w, GdkEventKey *e)
+{
+	if(e->keyval == GDK_Escape) {
+		gtk_dialog_response (GTK_DIALOG (w), GTK_RESPONSE_CANCEL);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+/**
+ * go_gtk_dialog_run
+ *
+ * Pop up a dialog as child of a window.
+ */
+gint
+go_gtk_dialog_run (GtkDialog *dialog, GtkWindow *parent)
+{
+	gint      result;
+
+	g_return_val_if_fail (GTK_IS_DIALOG (dialog), GTK_RESPONSE_NONE);
+
+	if (parent) {
+		g_return_val_if_fail (GTK_IS_WINDOW (parent), GTK_RESPONSE_NONE);
+
+		go_gtk_window_set_transient (parent, GTK_WINDOW (dialog));
+	}
+
+	g_signal_connect (G_OBJECT (dialog),
+		"key-press-event",
+		G_CALLBACK (cb_modal_dialog_keypress), NULL);
+
+	while ((result = gtk_dialog_run (dialog)) >= 0)
+	       ;
+	gtk_widget_destroy (GTK_WIDGET (dialog));
+	return result;
+}
+
+#define _VPRINTF_MESSAGE(format,args,msg) va_start (args, format); \
+					  msg = g_strdup_vprintf (format, args); \
+					  va_end (args);
+#define VPRINTF_MESSAGE(format,args,msg) _VPRINTF_MESSAGE (format, args, msg); \
+					 g_return_if_fail (msg != NULL);
+
+/*
+ * TODO:
+ * Get rid of trailing newlines /whitespace.
+ */
+void
+go_gtk_notice_dialog (GtkWindow *parent, GtkMessageType type,
+		      const gchar *format, ...)
+{
+	va_list args;
+	gchar *msg;
+	GtkWidget *dialog;
+
+	VPRINTF_MESSAGE (format, args, msg);
+	dialog = gtk_message_dialog_new (parent,
+		GTK_DIALOG_DESTROY_WITH_PARENT, type, GTK_BUTTONS_OK, "%s", msg);
+	g_free (msg);
+	gtk_label_set_use_markup (GTK_LABEL (GTK_MESSAGE_DIALOG (dialog)->label), TRUE);
+	go_gtk_dialog_run (GTK_DIALOG (dialog), parent);
+}
+
+void
+go_gtk_notice_nonmodal_dialog (GtkWindow *parent, GtkWidget **ref,
+			       GtkMessageType type, const gchar *format, ...)
+{
+	va_list args;
+	gchar *msg;
+	GtkWidget *dialog;
+
+	if (*ref != NULL)
+		gtk_widget_destroy (*ref);
+
+	VPRINTF_MESSAGE (format, args, msg);
+	*ref = dialog = gtk_message_dialog_new (parent, GTK_DIALOG_DESTROY_WITH_PARENT, type,
+					 GTK_BUTTONS_OK, "%s", msg);
+	g_free (msg);
+
+	g_signal_connect_object (G_OBJECT (dialog),
+		"response",
+		G_CALLBACK (gtk_widget_destroy), G_OBJECT (dialog), 0);
+	g_signal_connect (G_OBJECT (dialog),
+		"destroy",
+		G_CALLBACK (gtk_widget_destroyed), ref);
+
+	gtk_widget_show (dialog);
+
+	return;
+}
+
+gboolean
+go_gtk_query_yes_no (GtkWindow *parent, gboolean default_answer,
+		     const gchar *format, ...)
+{
+	va_list args;
+	gchar *msg;
+	GtkWidget *dialog;
+
+	_VPRINTF_MESSAGE (format, args, msg);
+	g_return_val_if_fail (msg != NULL, default_answer);
+	dialog = gtk_message_dialog_new (parent,
+		GTK_DIALOG_DESTROY_WITH_PARENT,
+		GTK_MESSAGE_QUESTION,
+		GTK_BUTTONS_YES_NO,
+		"%s", msg);
+        g_free (msg);
+	gtk_dialog_set_default_response (GTK_DIALOG (dialog),
+		default_answer ? GTK_RESPONSE_YES : GTK_RESPONSE_NO);
+	return GTK_RESPONSE_YES ==
+		go_gtk_dialog_run (GTK_DIALOG (dialog), parent);
+}
+
+/**
+ * go_pixbuf_new_from_file :
+ * @filename :
+ *
+ * utility routine to create pixbufs from file @name in the goffice_icon_dir.
+ *
+ * Returns a GdkPixbuf that the caller is responsible for.
+ **/
+GdkPixbuf *
+go_pixbuf_new_from_file (char const *filename)
+{
+	char *path = g_build_filename (go_sys_icon_dir (), filename, NULL);
+	GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file (path, NULL);
+	g_free (path);
+	return pixbuf;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/gtk/goffice-gtk.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,79 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-gui-utils.h - Misc GTK+ utilities
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License, version 2, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+#ifndef _GOFFICE_GTK_H_
+#define _GOFFICE_GTK_H_
+
+#include <gtk/gtkmessagedialog.h>
+#include <glade/glade-xml.h>
+#include <gtk/gtkfilechooser.h>
+#include <goffice/app/goffice-app.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	char *name;
+	char *desc;
+	char *ext;
+	gboolean has_pixbuf_saver;
+} GOImageType;
+
+void	   go_editable_enters (GtkWindow *window, GtkWidget *w);
+
+GladeXML  *go_libglade_new (char const *gladefile, char const *root,
+			    char const *domain, GOCmdContext *cc);
+
+GdkPixbuf *go_pixbuf_new_from_file	(char const *filename);
+GdkPixbuf *go_pixbuf_intelligent_scale	(GdkPixbuf *pixbuf, 
+					 guint width, guint height);
+
+int	   go_pango_measure_string	(PangoContext *context,
+					 PangoFontDescription const *font_desc,
+					 char const *str);
+
+gint       go_gtk_dialog_run		(GtkDialog *dialog, GtkWindow *parent);
+GtkWidget *go_gtk_dialog_add_button	(GtkDialog *dialog, char const *text, char const *stock_id,
+					 gint response_id);
+void       go_gtk_notice_dialog		(GtkWindow *parent, GtkMessageType type, 
+					 const gchar *format, ...);
+void       go_gtk_notice_nonmodal_dialog (GtkWindow *parent, GtkWidget **ref,
+					  GtkMessageType type, const gchar *format, ...);
+gboolean   go_gtk_query_yes_no		(GtkWindow *toplevel, gboolean default_answer,
+					 const gchar *format, ...);
+
+GtkWidget *go_gtk_button_new_with_stock (char const *text,
+					 char const *stock_id);
+void	   go_gtk_widget_disable_focus	(GtkWidget *w);
+void       go_gtk_window_set_transient  (GtkWindow *parent,   GtkWindow *window);
+void	   go_gtk_help_button_init	(GtkWidget *w, char const *data_dir,
+					 char const *app, char const *link);
+void       go_gtk_nonmodal_dialog	(GtkWindow *toplevel, GtkWindow *dialog);
+gboolean   go_gtk_file_sel_dialog	(GtkWindow *toplevel, GtkWidget *w);
+char	  *go_gtk_select_image		(GtkWindow *toplevel, const char *initial);
+char	  *gui_get_image_save_info	(GtkWindow *toplevel, GSList *formats, 
+					 GOImageType const **ret_format);
+char *go_mime_to_image_format     (char const *mime_type);
+char *go_image_format_to_mime     (char const *format);
+gboolean   go_gtk_url_is_writeable	(GtkWindow *parent, char const *url,
+					 gboolean overwrite_by_default);
+
+void	   go_atk_setup_label	 	(GtkWidget *label, GtkWidget *target);
+
+G_END_DECLS
+
+#endif /* _GOFFICE_GTK_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,16 @@
+noinst_LTLIBRARIES = libgoffice-ms-compat.la 
+
+libgoffice_ms_compat_la_SOURCES =	\
+	god-drawing-ms-client-handler.c	\
+	god-drawing-ms.c		\
+	god-image-ms.c			\
+	go-ms-parser.c
+
+libgoffice_ms_compat_ladir = $(goffice_include_dir)/ms-compat
+libgoffice_ms_compat_la_HEADERS = 	\
+	god-drawing-ms-client-handler.h	\
+	god-drawing-ms.h		\
+	god-image-ms.h			\
+	go-ms-parser.h
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,549 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+noinst_LTLIBRARIES = libgoffice-ms-compat.la 
+
+libgoffice_ms_compat_la_SOURCES = \
+	god-drawing-ms-client-handler.c	\
+	god-drawing-ms.c		\
+	god-image-ms.c			\
+	go-ms-parser.c
+
+
+libgoffice_ms_compat_ladir = $(goffice_include_dir)/ms-compat
+libgoffice_ms_compat_la_HEADERS = \
+	god-drawing-ms-client-handler.h	\
+	god-drawing-ms.h		\
+	god-image-ms.h			\
+	go-ms-parser.h
+
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice/ms-compat
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+
+libgoffice_ms_compat_la_LDFLAGS =
+libgoffice_ms_compat_la_LIBADD =
+am_libgoffice_ms_compat_la_OBJECTS = god-drawing-ms-client-handler.lo \
+	god-drawing-ms.lo god-image-ms.lo go-ms-parser.lo
+libgoffice_ms_compat_la_OBJECTS = $(am_libgoffice_ms_compat_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/go-ms-parser.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-drawing-ms-client-handler.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-drawing-ms.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/god-image-ms.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgoffice_ms_compat_la_SOURCES)
+HEADERS = $(libgoffice_ms_compat_la_HEADERS)
+
+DIST_COMMON = $(libgoffice_ms_compat_la_HEADERS) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice.mk Makefile.am
+SOURCES = $(libgoffice_ms_compat_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/ms-compat/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-ms-compat.la: $(libgoffice_ms_compat_la_OBJECTS) $(libgoffice_ms_compat_la_DEPENDENCIES) 
+	$(LINK)  $(libgoffice_ms_compat_la_LDFLAGS) $(libgoffice_ms_compat_la_OBJECTS) $(libgoffice_ms_compat_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-ms-parser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-drawing-ms-client-handler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-drawing-ms.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/god-image-ms.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgoffice_ms_compat_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_ms_compat_laHEADERS: $(libgoffice_ms_compat_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_ms_compat_ladir)
+	@list='$(libgoffice_ms_compat_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_ms_compat_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_ms_compat_ladir)/$$f"; \
+	  $(libgoffice_ms_compat_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_ms_compat_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_ms_compat_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_ms_compat_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_ms_compat_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_ms_compat_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_ms_compat_ladir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libgoffice_ms_compat_laHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libgoffice_ms_compat_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libgoffice_ms_compat_laHEADERS install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \
+	uninstall-libgoffice_ms_compat_laHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,154 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* 
+ * ms-escher-types.h - 
+ * Copyright (C) 2003-2004, Christopher James Lahey
+ *
+ * Authors:
+ *   Christopher James Lahey <clahey at ximian.com>
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU Library General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this file; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/ms-compat/go-ms-parser.h>
+#include <glib/gmacros.h>
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-utils.h>
+
+#define d(x) x
+
+#define CVS_VERSION "$Id: go-ms-parser.c,v 1.8 2005/08/08 08:57:01 jdassen Exp $"
+#define ERROR_STRING(cond,str) G_STRLOC "\n<" CVS_VERSION ">\n" str " (" #cond ")"
+#define ERROR(cond,str) { \
+	if (!(cond)) { \
+		if (err) \
+			g_set_error (err, domain, code, ERROR_STRING(cond,str)); \
+		else \
+			g_warning (ERROR_STRING(cond,str)); \
+		goto error_cleanup; \
+	} \
+}
+
+#define STACK_TOP GO_MS_PARSER_STACK_TOP(stack)
+
+static GQuark domain;
+static gint code;
+
+GOMSParserRecordType unknown_type =
+	{	0,			"Unknown",			FALSE,	FALSE,	-1,	-1	};
+
+
+void
+go_ms_parser_read (GsfInput   *input,
+		   gsf_off_t   length,
+		   const GOMSParserRecordType *types,
+		   guint type_count,
+		   GOMSParserCallbacks *callbacks,
+		   gpointer user_data,
+		   GError    **err)
+{
+	GSList *stack = NULL;
+	const guint8 *data;
+	gsf_off_t position;
+
+	while (length > 0) {
+		const GOMSParserRecordType *type;
+		GOMSParserRecord record;
+		guint i;
+
+		ERROR (length >= 8, "Length Error");
+		data = gsf_input_read (input, 8, NULL);
+		ERROR (data != NULL, "Length Error");
+
+		record.vers   = data[0] & 0xf;
+		record.inst   = ((data[0] & 0xf0) >> 4) | (data[1] << 4);
+		record.opcode = GSF_LE_GET_GUINT16 (data+2);
+		record.length = GSF_LE_GET_GUINT32 (data+4);
+
+		record.length_remaining = record.length;
+		record.parse_state = NULL;
+
+		data = NULL;
+
+		/* Find type */
+		type = &unknown_type;
+
+		for (i = 0; i < type_count; i++) {
+			if (types[i].typecode == record.opcode) {
+				type = &types[i];
+				break;
+			}
+		}
+
+		record.type = type;
+
+		ERROR (record.length + 8 <= (stack ? ((GOMSParserRecord *) (stack->data))->length_remaining : length), "Length Error");
+		ERROR (type->min_record_size == -1 || ((guint32)type->min_record_size) <= record.length, "Length Error");
+		ERROR (type->max_record_size == -1 || ((guint32)type->max_record_size) >= record.length, "Length Error");
+
+		position = gsf_input_tell (input);
+
+		if (type->is_container) {
+			GOMSParserRecord *stack_item;
+			stack_item = g_new (GOMSParserRecord, 1);
+			*stack_item = record;
+			stack = g_slist_prepend (stack, stack_item);
+
+			if (callbacks && callbacks->start_container) {
+				callbacks->start_container (stack, input, err, user_data);
+			}
+
+			gsf_input_seek (input, position, G_SEEK_SET);
+		} else {
+			if (callbacks && callbacks->handle_atom) {
+				if (type->do_read) {
+					data = gsf_input_read (input, record.length, NULL);
+					ERROR (record.length == 0 || data, "Length Error");
+				}
+
+				callbacks->handle_atom (&record, stack, data, input, err, user_data);
+			}
+
+			if (STACK_TOP) {
+				STACK_TOP->length_remaining -= record.length + 8;
+			} else {
+				length -= record.length + 8;
+			}
+			gsf_input_seek (input, position + record.length, G_SEEK_SET);
+		}
+
+		while (STACK_TOP && STACK_TOP->length_remaining == 0) {
+			int item_length = STACK_TOP->length;
+
+			if (callbacks && callbacks->end_container) {
+				callbacks->end_container (stack, input, err, user_data);
+			}
+
+			g_free (stack->data);
+			stack = g_slist_delete_link (stack, stack);
+			if (stack) {
+				STACK_TOP->length_remaining -= item_length + 8;
+			} else {
+				length -= item_length + 8;
+			}
+		}
+	}
+
+ error_cleanup:
+	while (stack) {
+		g_free (stack->data);
+		stack = g_slist_delete_link (stack, stack);
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/go-ms-parser.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,68 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * go-drawing-ms.h: MS Office Graphic Object I/O support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2004 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GO_MS_PARSER_H
+#define GO_MS_PARSER_H
+
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+#define GO_MS_PARSER_STACK_TOP(stack) ((stack) ? (GOMSParserRecord *) (stack)->data : NULL)
+#define GO_MS_PARSER_STACK_SECOND(stack) ((stack) && (stack)->next ? (GOMSParserRecord *) (stack)->next->data : NULL)
+
+typedef struct
+{
+	guint  typecode;
+	const char *name;
+	gboolean    is_container;
+	gboolean    do_read; /* If false, data will be NULL.  Ignored for containers. */
+	int min_record_size;
+	int max_record_size;
+} GOMSParserRecordType;
+
+typedef struct {
+	guint16 opcode;
+	guint8 vers;
+	guint16 inst;
+	guint32 length;
+	guint32 length_remaining;
+	gpointer parse_state;
+	const GOMSParserRecordType *type;
+} GOMSParserRecord;
+
+/* stack is of type GOMSParserRecord */
+typedef void (*GOMSParserHandleAtom) (GOMSParserRecord *record, GSList *stack, const guint8 *data, GsfInput *input, GError **err, gpointer user_data);
+typedef void (*GOMSParserStartContainer) (GSList *stack, GsfInput *input, GError **err, gpointer user_data);
+typedef void (*GOMSParserEndContainer) (GSList *stack, GsfInput *input, GError **err, gpointer user_data);
+
+typedef struct {
+	GOMSParserHandleAtom handle_atom;
+	GOMSParserStartContainer start_container;
+	GOMSParserEndContainer end_container;
+} GOMSParserCallbacks;
+
+void go_ms_parser_read        (GsfInput   *input,
+			       gsf_off_t   length,
+			       const GOMSParserRecordType *types,
+			       guint type_count,
+			       GOMSParserCallbacks *callbacks,
+			       gpointer user_data,
+			       GError    **err);
+#if 0
+int             go_ms_parser_write       (GODrawing  *drawing,
+					  GsfOutput  *output);
+#endif
+
+G_END_DECLS
+
+#endif /* GO_MS_PARSER_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,134 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-drawing-ms-client-handler.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2002
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/ms-compat/god-drawing-ms-client-handler.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-input.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodDrawingMsClientHandlerPrivate_ {
+	int dummy;
+};
+
+GodTextModel *
+god_drawing_ms_client_handler_handle_client_text    (GodDrawingMsClientHandler *handler,
+						     GsfInput                  *input,
+						     gsf_off_t                  length,
+						     GError                    **err)
+{
+	if (GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->handle_client_text) {
+		const guint8 *data = NULL;
+		if (GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->client_text_read_data)
+			data = gsf_input_read (input, length, NULL);
+		return GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->handle_client_text (handler,
+											      data,
+											      input,
+											      length,
+											      err);
+	} else {
+		return NULL;
+	}
+}
+
+GodAnchor *
+god_drawing_ms_client_handler_handle_client_anchor    (GodDrawingMsClientHandler *handler,
+						       GsfInput                  *input,
+						       gsf_off_t                  length,
+						       GError                    **err)
+{
+	if (GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->handle_client_anchor) {
+		const guint8 *data = NULL;
+		if (GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->client_anchor_read_data)
+			data = gsf_input_read (input, length, NULL);
+		return GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->handle_client_anchor (handler,
+												data,
+												input,
+												length,
+												err);
+	} else {
+		return NULL;
+	}
+}
+
+GObject *
+god_drawing_ms_client_handler_handle_client_data    (GodDrawingMsClientHandler *handler,
+						     GsfInput                  *input,
+						     gsf_off_t                  length,
+						     GError                    **err)
+{
+	if (GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->handle_client_data) {
+		const guint8 *data = NULL;
+		if (GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->client_data_read_data)
+			data = gsf_input_read (input, length, NULL);
+		return GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS (handler)->handle_client_data (handler,
+											      data,
+											      input,
+											      length,
+											      err);
+	} else {
+		return NULL;
+	}
+}
+
+static void
+god_drawing_ms_client_handler_init (GObject *object)
+{
+	GodDrawingMsClientHandler *handler = GOD_DRAWING_MS_CLIENT_HANDLER (object);
+	handler->priv = g_new0 (GodDrawingMsClientHandlerPrivate, 1);
+}
+
+static void
+god_drawing_ms_client_handler_finalize (GObject *object)
+{
+	GodDrawingMsClientHandler *handler = GOD_DRAWING_MS_CLIENT_HANDLER (object);
+
+	g_free (handler->priv);
+	handler->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+god_drawing_ms_client_handler_class_init (GodDrawingMsClientHandlerClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class                   = (GObjectClass *) class;
+
+	parent_class                   = g_type_class_peek_parent (class);
+
+	object_class->finalize         = god_drawing_ms_client_handler_finalize;
+
+	class->client_text_read_data   = TRUE;
+	class->client_anchor_read_data = TRUE;
+	class->client_data_read_data   = TRUE;
+}
+
+GSF_CLASS (GodDrawingMsClientHandler, god_drawing_ms_client_handler,
+	   god_drawing_ms_client_handler_class_init, god_drawing_ms_client_handler_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms-client-handler.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,69 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-drawing-ms-client-handler.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GOD_DRAWING_MS_CLIENT_HANDLER_H
+#define GOD_DRAWING_MS_CLIENT_HANDLER_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-text-model.h>
+#include <goffice/drawing/god-anchor.h>
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+#define GOD_DRAWING_MS_CLIENT_HANDLER_TYPE		(god_drawing_ms_client_handler_get_type ())
+#define GOD_DRAWING_MS_CLIENT_HANDLER(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_DRAWING_MS_CLIENT_HANDLER_TYPE, GodDrawingMsClientHandler))
+#define GOD_DRAWING_MS_CLIENT_HANDLER_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOD_DRAWING_MS_CLIENT_HANDLER_TYPE, GodDrawingMsClientHandlerClass))
+#define GOD_DRAWING_MS_CLIENT_HANDLER_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GOD_DRAWING_MS_CLIENT_HANDLER_TYPE, GodDrawingMsClientHandlerClass))
+#define IS_GOD_DRAWING_MS_CLIENT_HANDLER(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_DRAWING_MS_CLIENT_HANDLER_TYPE))
+#define IS_GOD_DRAWING_MS_CLIENT_HANDLER_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_DRAWING_MS_CLIENT_HANDLER_TYPE))
+
+typedef struct GodDrawingMsClientHandlerPrivate_ GodDrawingMsClientHandlerPrivate;
+
+typedef struct {
+	GObject parent;
+	GodDrawingMsClientHandlerPrivate *priv;
+} GodDrawingMsClientHandler;
+
+typedef struct {
+	GObjectClass parent_class;
+
+	GodTextModel *(*handle_client_text)   (GodDrawingMsClientHandler *handler, const guint8 *data, GsfInput *input, gsf_off_t length, GError **err);
+	GodAnchor    *(*handle_client_anchor) (GodDrawingMsClientHandler *handler, const guint8 *data, GsfInput *input, gsf_off_t length, GError **err);
+	GObject      *(*handle_client_data)   (GodDrawingMsClientHandler *handler, const guint8 *data, GsfInput *input, gsf_off_t length, GError **err);
+
+	guint client_text_read_data : 1;
+	guint client_anchor_read_data : 1;
+	guint client_data_read_data : 1;
+} GodDrawingMsClientHandlerClass;
+
+GType         god_drawing_ms_client_handler_get_type              (void);
+
+GodTextModel *god_drawing_ms_client_handler_handle_client_text    (GodDrawingMsClientHandler  *handler,
+								   GsfInput                   *input,
+								   gsf_off_t                   length,
+								   GError                    **err);
+GodAnchor    *god_drawing_ms_client_handler_handle_client_anchor  (GodDrawingMsClientHandler  *handler,
+								   GsfInput                   *input,
+								   gsf_off_t                   length,
+								   GError                    **err);
+GObject      *god_drawing_ms_client_handler_handle_client_data    (GodDrawingMsClientHandler  *handler,
+								   GsfInput                   *input,
+								   gsf_off_t                   length,
+								   GError                    **err);
+
+
+
+G_END_DECLS
+
+#endif /* GOD_DRAWING_MS_CLIENT_HANDLER_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,685 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* 
+ * god-drawing-ms.h - 
+ * Copyright (C) 2003-2004, Christopher James Lahey
+ *
+ * Authors:
+ *   Christopher James Lahey <clahey at ximian.com>
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU Library General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this file; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA.
+ **/
+
+#include <goffice/goffice-config.h>
+#include <goffice/ms-compat/god-drawing-ms.h>
+#include <goffice/ms-compat/go-ms-parser.h>
+#include <goffice/ms-compat/god-image-ms.h>
+#include <goffice/drawing/god-property-table.h>
+#include <goffice/drawing/god-shape.h>
+#include <glib/gmacros.h>
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-utils.h>
+#include <string.h>
+
+#define d(x) x
+
+#define CVS_VERSION "$Id: god-drawing-ms.c,v 1.12 2005/08/08 08:57:01 jdassen Exp $"
+#define ERROR_STRING(cond,str) G_STRLOC "\n<" CVS_VERSION ">\n" str " (" #cond ")"
+#define ERROR(cond,str) { \
+	if (!(cond)) { \
+		if (err) \
+			g_set_error (err, domain, code, ERROR_STRING(cond,str)); \
+		else \
+			g_warning (ERROR_STRING(cond,str)); \
+		return; \
+	} \
+}
+
+static GQuark domain;
+static gint code;
+
+static void
+god_drawing_ms_init (void)
+{
+	static gboolean inited = FALSE;
+	if (inited)
+		return;
+	domain = g_quark_from_static_string ("GodDrawingMs");
+	code = 1;
+	inited = TRUE;
+}
+
+typedef enum {
+	EscherDggContainer		= 0xf000, /* Drawing Group Container */
+	EscherDgg			= 0xf006,
+	EscherCLSID			= 0xf016,
+	EscherOPT			= 0xf00b,
+	EscherBStoreContainer		= 0xf001,
+	EscherBSE			= 0xf007,
+	EscherBlip_START		= 0xf018, /* Blip types are between */
+	EscherBlip_END			= 0xf117, /* these two values */
+	EscherDgContainer		= 0xf002, /* Drawing Container */
+	EscherDg			= 0xf008,
+	EscherRegroupItems		= 0xf118,
+	EscherColorScheme		= 0xf120, /* bug in docs */
+	EscherSpgrContainer		= 0xf003,
+	EscherSpContainer		= 0xf004,
+	EscherSpgr			= 0xf009,
+	EscherSp			= 0xf00a,
+	EscherTextbox			= 0xf00c,
+	EscherClientTextbox		= 0xf00d,
+	EscherAnchor			= 0xf00e,
+	EscherChildAnchor		= 0xf00f,
+	EscherClientAnchor		= 0xf010,
+	EscherClientData		= 0xf011,
+	EscherSolverContainer		= 0xf005,
+	EscherConnectorRule		= 0xf012, /* bug in docs */
+	EscherAlignRule			= 0xf013,
+	EscherArcRule			= 0xf014,
+	EscherClientRule		= 0xf015,
+	EscherCalloutRule		= 0xf017,
+	EscherSelection			= 0xf119,
+	EscherColorMRU			= 0xf11a,
+	EscherDeletedPspl		= 0xf11d, /* bug in docs */
+	EscherSplitMenuColors		= 0xf11e,
+	EscherOleObject			= 0xf11f,
+	EscherUserDefined		= 0xf122,
+} EscherTypecode;
+
+static const GOMSParserRecordType types[] =
+{
+	{	EscherDggContainer,		"EscherDggContainer",		TRUE,	FALSE,	-1,	-1	},
+	{	EscherDgg,			"EscherDgg",			FALSE,	FALSE,	-1,	-1	},
+	{	EscherCLSID,			"EscherCLSID",			FALSE,	FALSE,	-1,	-1	},
+	{	EscherOPT,			"EscherOPT",			FALSE,	TRUE,	-1,	-1	},
+	{	EscherBStoreContainer,		"EscherBStoreContainer",	TRUE,	FALSE,	-1,	-1	},
+	{	EscherBSE,			"EscherBSE",			FALSE,	TRUE,	-1,	-1	},
+	{	EscherBlip_START,		"EscherBlip_START",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherBlip_END,			"EscherBlip_END",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherDgContainer,		"EscherDgContainer",		TRUE,	FALSE,	-1,	-1	},
+	{	EscherDg,			"EscherDg",			FALSE,	FALSE,	-1,	-1	},
+	{	EscherRegroupItems,		"EscherRegroupItems",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherColorScheme,		"EscherColorScheme",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherSpgrContainer,		"EscherSpgrContainer",		TRUE,	FALSE,	-1,	-1	},
+	{	EscherSpContainer,		"EscherSpContainer",		TRUE,	FALSE,	-1,	-1	},
+	{	EscherSpgr,			"EscherSpgr",			FALSE,	FALSE,	-1,	-1	},
+	{	EscherSp,			"EscherSp",			FALSE,	TRUE,	-1,	-1	},
+	{	EscherTextbox,			"EscherTextbox",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherClientTextbox,		"EscherClientTextbox",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherAnchor,			"EscherAnchor",			FALSE,	FALSE,	-1,	-1	},
+	{	EscherChildAnchor,		"EscherChildAnchor",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherClientAnchor,		"EscherClientAnchor",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherClientData,		"EscherClientData",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherSolverContainer,		"EscherSolverContainer",	TRUE,	FALSE,	-1,	-1	},
+	{	EscherConnectorRule,		"EscherConnectorRule",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherAlignRule,		"EscherAlignRule",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherArcRule,			"EscherArcRule",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherClientRule,		"EscherClientRule",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherCalloutRule,		"EscherCalloutRule",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherSelection,		"EscherSelection",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherColorMRU,			"EscherColorMRU",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherDeletedPspl,		"EscherDeletedPspl",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherSplitMenuColors,		"EscherSplitMenuColors",	FALSE,	FALSE,	-1,	-1	},
+	{	EscherOleObject,		"EscherOleObject",		FALSE,	FALSE,	-1,	-1	},
+	{	EscherUserDefined,		"EscherUserDefined",		FALSE,	FALSE,	-1,	-1	},
+};
+
+typedef guint32 Spid;
+
+typedef struct {
+	Spid id;
+	guint is_group : 1;      /* This shape is a group shape */
+	guint is_child : 1;      /* Not a top-level shape */
+	guint is_patriarch : 1;  /* This is the topmost group shape. */
+	guint is_deleted : 1;    /* The shape has been deleted */
+	guint is_ole_shape : 1;  /* The shape is an OLE object */
+	guint have_master : 1;   /* Shape has a hspMaster property */
+	guint is_flip_h : 1;     /* Shape is flipped horizontally */
+	guint is_flip_v : 1;     /* Shape is flipped vertically */
+	guint is_connector : 1;  /* Connector type of shape */
+	guint have_anchor : 1;   /* Shape has an anchor of some kind */
+	guint is_background : 1; /* Background shape */
+	guint have_spt : 1;      /* Shape has a shape type property */
+} ShapeDetails;
+
+typedef struct {
+	GodPropertyTable *prop_table;
+	GodAnchor *anchor;
+	GodTextModel *text_model;
+	ShapeDetails sp;
+} ShapeParseState;
+
+typedef struct {
+	GodShape *main_shape;
+	GList *shapes; /* Of type GodShape */
+	ShapeDetails sp;
+} ShapeGroupParseState;
+
+typedef struct {
+	GodShape *root_shape;
+	GodShape *background;
+} DrawingParseState;
+
+typedef struct {
+	GodDrawing *drawing;
+	GodDrawingGroup *drawing_group;
+	GodDrawingMsClientHandler *handler;
+} ParseCallbackData;
+
+#define STACK_TOP GO_MS_PARSER_STACK_TOP(stack)
+#define STACK_SECOND GO_MS_PARSER_STACK_SECOND(stack)
+
+static void
+handle_atom (GOMSParserRecord *record, GSList *stack, const guint8 *data, GsfInput *input, GError **err, gpointer user_data)
+{
+	ParseCallbackData *cb_data = user_data;
+	switch (record->opcode) {
+	case EscherClientAnchor:
+		{
+			ShapeParseState *parse_state;
+
+			ERROR (STACK_TOP && STACK_TOP->opcode == EscherSpContainer, "Placement Error");
+
+			parse_state = STACK_TOP->parse_state;
+
+			ERROR (parse_state->anchor == NULL, "Placement Error");
+
+			if (cb_data->handler) {
+				parse_state->anchor = god_drawing_ms_client_handler_handle_client_anchor
+					(cb_data->handler,
+					 input,
+					 record->length,
+					 err);
+			}
+		}
+		break;
+	case EscherClientTextbox:
+		{
+			ShapeParseState *parse_state;
+
+			ERROR (STACK_TOP && STACK_TOP->opcode == EscherSpContainer, "Placement Error");
+
+			parse_state = STACK_TOP->parse_state;
+
+			ERROR (parse_state->text_model == NULL, "Placement Error");
+
+			if (cb_data->handler) {
+				parse_state->text_model = god_drawing_ms_client_handler_handle_client_text
+					(cb_data->handler,
+					 input,
+					 record->length,
+					 err);
+			}
+		}
+		break;
+	case EscherOPT:
+		{
+			int i;
+			guint complex_offset;
+			ShapeParseState *parse_state;
+
+			ERROR (STACK_TOP && (STACK_TOP->opcode == EscherSpContainer ||
+					     STACK_TOP->opcode == EscherDggContainer), "Placement Error");
+
+			if (STACK_TOP->opcode == EscherDggContainer)
+				break;
+
+			parse_state = STACK_TOP->parse_state;
+
+			ERROR (parse_state->prop_table == NULL, "Placement Error");
+
+			parse_state->prop_table = god_property_table_new ();
+			complex_offset = 6 * record->inst;
+			ERROR (record->length >= complex_offset, "Length Error");
+			for (i = 0; i < record->inst; i++) {
+				int id = GSF_LE_GET_GUINT16 (data + i * 6);
+#if 0
+				gboolean is_bid = id & 0x4000;
+#endif
+				gboolean is_complex = id & 0x8000;
+				guint32 opt_data = GSF_LE_GET_GUINT32 (data + i * 6 + 2);
+				guint32 color = (data[i * 6 + 3] << 16) | (data[i * 6 + 4] << 8) | data[i * 6 + 5];
+
+				id &= 0x3fff;
+				switch (id) {
+				case 128:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_LTXID,
+						 opt_data);
+					break;
+				case 129:
+					god_property_table_set_length
+						(parse_state->prop_table,
+						 GOD_PROPERTY_DX_TEXT_LEFT,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 130:
+					god_property_table_set_length
+						(parse_state->prop_table,
+						 GOD_PROPERTY_DX_TEXT_TOP,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 131:
+					god_property_table_set_length
+						(parse_state->prop_table,
+						 GOD_PROPERTY_DX_TEXT_RIGHT,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 132:
+					god_property_table_set_length
+						(parse_state->prop_table,
+						 GOD_PROPERTY_DX_TEXT_BOTTOM,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 133:
+					/*
+typedef enum
+   {
+   msowrapSquare,
+   msowrapByPoints,
+   msowrapNone,
+   msowrapTopBottom,
+   msowrapThrough,
+   } MSOWRAPMODE;
+					*/
+					break;
+				case 135:
+					/*
+typedef enum
+   {
+   msoanchorTop, 
+   msoanchorMiddle, 
+   msoanchorBottom, 
+   msoanchorTopCentered, 
+   msoanchorMiddleCentered, 
+   msoanchorBottomCentered,
+   msoanchorTopBaseline,
+   msoanchorBottomBaseline,
+   msoanchorTopCenteredBaseline,
+   msoanchorBottomCenteredBaseline
+   } MSOANCHOR;
+					*/
+					break;
+ 
+				case 260:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_BLIP_ID,
+						 opt_data - 1);
+					break;
+				case 384:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_TYPE,
+						 opt_data);
+					break;
+				case 385:
+					god_property_table_set_uint
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_COLOR,
+						 color);
+					break;
+				case 386:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_ALPHA,
+						 opt_data);
+					break;
+				case 387:
+					god_property_table_set_uint
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_BACKGROUND,
+						 color);
+					break;
+				case 388:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_BACKGROUND_ALPHA,
+						 opt_data);
+					break;
+				case 401:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_RECT_LEFT,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 402:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_RECT_TOP,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 403:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_RECT_RIGHT,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 404:
+					god_property_table_set_int
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILL_RECT_BOTTOM,
+						 GO_EMU_TO_UN(opt_data));
+					break;
+				case 447:
+					god_property_table_set_flag
+						(parse_state->prop_table,
+						 GOD_PROPERTY_FILLED,
+						 opt_data & 0x00000010);
+					break;
+				case 448:
+					/* Line color */
+					break;
+				case 450:
+					/* Line background color */
+					break;
+				case 769:
+					/* Master shape */
+					break;
+				case 831:
+					god_property_table_set_flag
+						(parse_state->prop_table,
+						 GOD_PROPERTY_BACKGROUND,
+						 opt_data & 0x1);
+					break;
+				}
+				if (is_complex) {
+					complex_offset += opt_data;
+					ERROR (record->length >= complex_offset, "Length Error");
+				}
+			}
+		}
+		break;
+	case EscherSp:
+		{
+			ShapeParseState *parse_state;
+
+			ERROR (STACK_TOP && STACK_TOP->opcode == EscherSpContainer, "Placement Error");
+
+			parse_state = STACK_TOP->parse_state;
+
+			parse_state->sp.id = GSF_LE_GET_GUINT32 (data);
+			parse_state->sp.is_group = !!(data[4] & 0x01);
+			parse_state->sp.is_child = !!(data[4] & 0x02);
+			parse_state->sp.is_patriarch = !!(data[4] & 0x04);
+			parse_state->sp.is_deleted = !!(data[4] & 0x08);
+			parse_state->sp.is_ole_shape = !!(data[4] & 0x10);
+			parse_state->sp.have_master = !!(data[4] & 0x20);
+			parse_state->sp.is_flip_h = !!(data[4] & 0x40);
+			parse_state->sp.is_flip_v = !!(data[4] & 0x80);
+			parse_state->sp.is_connector = !!(data[5] & 0x01);
+			parse_state->sp.have_anchor = !!(data[5] & 0x02);
+			parse_state->sp.is_background = !!(data[5] & 0x04);
+			parse_state->sp.have_spt = !!(data[5] & 0x08);
+		}
+		break;
+	case EscherBSE:
+		{
+			GodImageStore *store;
+			GodImage *image;
+			ERROR (cb_data->drawing_group, "Placement Error");
+			store = god_drawing_group_get_image_store (cb_data->drawing_group);
+			image = god_image_ms_new ();
+			god_image_ms_set_hash (GOD_IMAGE_MS(image), data + 2);
+			god_image_store_append_image (store, image);
+		}
+		break;
+	}
+
+	if (record->opcode >= EscherBlip_START && record->opcode <= EscherBlip_END) {
+		int i, image_count;
+		GodImageStore *store;
+		GodImage *image;
+
+		ERROR (record->length >= 17, "Length Error");
+		data = gsf_input_read (input, record->length, NULL);
+		ERROR (data, "Length Error");
+
+		ERROR (cb_data->drawing_group, "Placement Error");
+		store = god_drawing_group_get_image_store (cb_data->drawing_group);
+		image_count = god_image_store_get_image_count (store);
+		for (i = 0; i < image_count; i++) {
+			const guint8 *hash;
+			image = god_image_store_get_image (store, i);
+			hash = god_image_ms_get_hash (GOD_IMAGE_MS(image));
+			if (!memcmp(hash, data, 16)) {
+				god_image_set_image_data (image,
+							  NULL,
+							  data + 17,
+							  record->length - 17);
+			}
+		}
+		g_object_unref (store);
+	}
+}
+
+static void
+start_container (GSList *stack, GsfInput *input, GError **err, gpointer user_data)
+{
+	ParseCallbackData *cb_data = user_data;
+	switch (STACK_TOP->opcode) {
+	case EscherSpContainer:
+		{
+			ShapeParseState *parse_state = g_new0 (ShapeParseState, 1);
+			STACK_TOP->parse_state = parse_state;
+			ERROR (STACK_SECOND && (STACK_SECOND->opcode == EscherSpgrContainer ||
+						STACK_SECOND->opcode == EscherDgContainer), "Placement Error");
+		}
+		break;
+	case EscherSpgrContainer:
+		{
+			ShapeGroupParseState *parse_state = g_new0 (ShapeGroupParseState, 1);
+			STACK_TOP->parse_state = parse_state;
+			ERROR (STACK_SECOND && (STACK_SECOND->opcode == EscherSpgrContainer ||
+						STACK_SECOND->opcode == EscherDgContainer), "Placement Error");
+		}
+		break;
+	case EscherDgContainer:
+		{
+			DrawingParseState *parse_state = g_new0 (DrawingParseState, 1);
+			STACK_TOP->parse_state = parse_state;
+			ERROR (!STACK_SECOND, "Placement Error");
+			ERROR (cb_data->drawing == NULL, "Multiple EscherDgContainers");
+			cb_data->drawing = god_drawing_new();
+		}
+		break;
+	case EscherDggContainer:
+		{
+			ERROR (!STACK_SECOND, "Placement Error");
+			ERROR (cb_data->drawing_group == NULL, "Multiple EscherDggContainers");
+			cb_data->drawing_group = god_drawing_group_new();
+		}
+		break;
+	}
+}
+
+static void
+append_shape_on_stack (GSList *stack, GError **err, GodShape *shape, ShapeDetails *sp)
+{
+	if (STACK_SECOND->opcode == EscherSpgrContainer) {
+		ShapeGroupParseState *parent_state = STACK_SECOND->parse_state;
+		ERROR (!sp->is_patriarch &&
+		       !sp->is_background &&
+		       !sp->is_deleted, "Placement Error");
+		parent_state->shapes = g_list_prepend (parent_state->shapes,
+						       shape);
+		g_object_ref (shape);
+	} else if (STACK_SECOND->opcode == EscherDgContainer) {
+		DrawingParseState *parent_state = STACK_SECOND->parse_state;
+		ERROR (sp->is_patriarch ||
+		       sp->is_background ||
+		       sp->is_deleted, "Placement Error");
+		if (sp->is_patriarch) {
+			ERROR (parent_state->root_shape == NULL, "Only one patriarch per drawing.");
+			parent_state->root_shape = shape;
+			g_object_ref (shape);
+		} else if (sp->is_background) {
+			ERROR (parent_state->background == NULL, "Only one background per drawing.");
+			parent_state->background = shape;
+			g_object_ref (shape);
+		}
+	}
+}
+
+static void
+end_container (GSList *stack, GsfInput *input, GError **err, gpointer user_data)
+{
+	ParseCallbackData *cb_data = user_data;
+	switch (STACK_TOP->opcode) {
+	case EscherSpContainer:
+		{
+			ShapeParseState *parse_state = STACK_TOP->parse_state;
+			GodShape *shape;
+			shape = g_object_new (GOD_SHAPE_TYPE, NULL);
+			if (parse_state->prop_table) {
+				god_shape_set_prop_table (shape, parse_state->prop_table);
+				g_object_unref (parse_state->prop_table);
+			}
+			if (parse_state->anchor) {
+				god_shape_set_anchor (shape, parse_state->anchor);
+				g_object_unref (parse_state->anchor);
+			}
+			if (parse_state->text_model) {
+				god_shape_set_text_model (shape, parse_state->text_model);
+				g_object_unref (parse_state->text_model);
+			}
+			if (parse_state->sp.is_group) {
+				ShapeGroupParseState *parent_state = STACK_SECOND->parse_state;
+				ERROR (parent_state->main_shape == NULL, "Placement Error");
+				ERROR (STACK_SECOND->opcode == EscherSpgrContainer, "Placement Error");
+				parent_state->main_shape = shape;
+				parent_state->sp = parse_state->sp;
+			} else {
+				append_shape_on_stack (stack, err, shape, &parse_state->sp);
+				g_object_unref (shape);
+			}
+		}
+		break;
+	case EscherSpgrContainer:
+		{
+			ShapeGroupParseState *parse_state = STACK_TOP->parse_state;
+			GList *list;
+
+			ERROR (parse_state->main_shape != NULL, "Children Error");
+			parse_state->shapes = g_list_reverse (parse_state->shapes);
+			for (list = parse_state->shapes; list; list = list->next) {
+				god_shape_append_child (parse_state->main_shape, 
+							       list->data);
+				g_object_unref (list->data);
+			}
+			g_list_free (parse_state->shapes);
+			append_shape_on_stack (stack, err, parse_state->main_shape, &parse_state->sp);
+			g_object_unref (parse_state->main_shape);
+			g_free (parse_state);
+		}
+		break;
+	case EscherDgContainer:
+		{
+			DrawingParseState *parse_state = STACK_TOP->parse_state;
+
+			god_drawing_set_root_shape (cb_data->drawing, parse_state->root_shape);
+			god_drawing_set_background (cb_data->drawing, parse_state->background);
+			g_object_unref (parse_state->root_shape);
+			g_object_unref (parse_state->background);
+
+			g_free (parse_state);
+		}
+		break;
+	}
+}
+
+static GOMSParserCallbacks callbacks = { handle_atom,
+					 start_container,
+					 end_container };
+
+GodDrawing *
+god_drawing_read_ms (GsfInput   *input,
+		     gsf_off_t   length,
+		     GodDrawingMsClientHandler *handler,
+		     GError    **err)
+{
+	ParseCallbackData cb_data;
+
+	god_drawing_ms_init();
+
+	cb_data.drawing = NULL;
+	cb_data.drawing_group = NULL;
+	cb_data.handler = handler;
+
+	go_ms_parser_read (input,
+			   length,
+			   types,
+			   (sizeof (types) / sizeof (types[0])),
+			   &callbacks,
+			   &cb_data,
+			   err);
+
+	if (cb_data.drawing_group)
+		g_object_unref (cb_data.drawing_group);
+	return cb_data.drawing;
+}
+
+GodDrawingGroup *
+god_drawing_group_read_ms  (GsfInput   *input,
+			    gsf_off_t   length,
+			    GodDrawingMsClientHandler *handler,
+			    GError    **err)
+{
+	ParseCallbackData cb_data;
+
+	god_drawing_ms_init();
+
+	cb_data.drawing = NULL;
+	cb_data.drawing_group = NULL;
+	cb_data.handler = handler;
+
+	go_ms_parser_read (input,
+			   length,
+			   types,
+			   (sizeof (types) / sizeof (types[0])),
+			   &callbacks,
+			   &cb_data,
+			   err);
+
+	if (cb_data.drawing)
+		g_object_unref (cb_data.drawing);
+	return cb_data.drawing_group;
+}
+
+void
+god_drawing_group_parse_images  (GodDrawingGroup *drawing_group,
+				 GsfInput   *input,
+				 gsf_off_t   length,
+				 GodDrawingMsClientHandler *handler,
+				 GError    **err)
+{
+	ParseCallbackData cb_data;
+
+	god_drawing_ms_init();
+
+	cb_data.drawing = NULL;
+	cb_data.drawing_group = drawing_group;
+	cb_data.handler = handler;
+
+	go_ms_parser_read (input,
+			   length,
+			   types,
+			   (sizeof (types) / sizeof (types[0])),
+			   &callbacks,
+			   &cb_data,
+			   err);
+	if (cb_data.drawing)
+		g_object_unref (cb_data.drawing);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-drawing-ms.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,43 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-drawing-ms.h: MS Office Graphic Object I/O support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2004 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GO_DRAWING_MS_H
+#define GO_DRAWING_MS_H
+
+#include <goffice/drawing/god-drawing.h>
+#include <goffice/drawing/god-drawing-group.h>
+#include <goffice/ms-compat/god-drawing-ms-client-handler.h>
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+GodDrawing      *god_drawing_read_ms             (GsfInput                   *input,
+						  gsf_off_t                   length,
+						  GodDrawingMsClientHandler  *handler,
+						  GError                    **err);
+GodDrawingGroup *god_drawing_group_read_ms       (GsfInput                   *input,
+						  gsf_off_t                   length,
+						  GodDrawingMsClientHandler  *handler,
+						  GError                    **err);
+void             god_drawing_group_parse_images  (GodDrawingGroup            *drawing_group,
+						  GsfInput                   *input,
+						  gsf_off_t                   length,
+						  GodDrawingMsClientHandler  *handler,
+						  GError                    **err);
+#if 0
+int              god_drawing_write_ms            (GodDrawing                 *drawing,
+						  GsfOutput                  *output);
+#endif
+
+G_END_DECLS
+
+#endif /* GO_DRAWING_MS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,94 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * god-image-ms.c: MS Office Graphic Object support
+ *
+ * Copyright (C) 2000-2004
+ *	Jody Goldberg (jody at gnome.org)
+ *	Michael Meeks (mmeeks at gnu.org)
+ *      Christopher James Lahey <clahey at ximian.com>
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/ms-compat/god-image-ms.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct GodImageMsPrivate_ {
+	guint8 *hash;
+};
+
+GodImage *
+god_image_ms_new (void)
+{
+	GodImage *image;
+
+	image = g_object_new (GOD_IMAGE_MS_TYPE, NULL);
+
+	return image;
+}
+
+const guint8 *
+god_image_ms_get_hash  (GodImageMs     *image)
+{
+	return image->priv->hash;
+}
+
+void
+god_image_ms_set_hash  (GodImageMs     *image,
+			const guint8 *hash)
+{
+	g_free (image->priv->hash);
+	image->priv->hash = g_memdup (hash, 16);
+}
+
+static void
+god_image_ms_init (GObject *object)
+{
+	GodImageMs *image = GOD_IMAGE_MS (object);
+	image->priv = g_new0 (GodImageMsPrivate, 1);
+}
+
+static void
+god_image_ms_finalize (GObject *object)
+{
+	GodImageMs *image = GOD_IMAGE_MS (object);
+
+	g_free (image->priv->hash);
+	g_free (image->priv);
+	image->priv = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+god_image_ms_class_init (GodImageMsClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class           = (GObjectClass *) class;
+
+	parent_class           = g_type_class_peek_parent (class);
+
+	object_class->finalize = god_image_ms_finalize;
+}
+
+GSF_CLASS (GodImageMs, god_image_ms,
+	   god_image_ms_class_init, god_image_ms_init,
+	   GOD_IMAGE_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/ms-compat/god-image-ms.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,52 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/**
+ * god-image-ms.h: MS Office Graphic Object support
+ *
+ * Author:
+ *    Michael Meeks (michael at ximian.com)
+ *    Jody Goldberg (jody at gnome.org)
+ *    Christopher James Lahey <clahey at ximian.com>
+ *
+ * (C) 1998-2003 Michael Meeks, Jody Goldberg, Chris Lahey
+ **/
+
+#ifndef GOD_IMAGE_MS_H
+#define GOD_IMAGE_MS_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include <goffice/drawing/god-image.h>
+
+G_BEGIN_DECLS
+
+#define GOD_IMAGE_MS_TYPE		(god_image_ms_get_type ())
+#define GOD_IMAGE_MS(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOD_IMAGE_MS_TYPE, GodImageMs))
+#define GOD_IMAGE_MS_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOD_IMAGE_MS_TYPE, GodImageMsClass))
+#define GOD_IMAGE_MS_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GOD_IMAGE_MS_TYPE, GodImageMsClass))
+#define IS_GOD_IMAGE_MS(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOD_IMAGE_MS_TYPE))
+#define IS_GOD_IMAGE_MS_CLASS(k)	(G_TYPE_CHECK_CLASS_TYPE ((k), GOD_IMAGE_MS_TYPE))
+
+typedef struct GodImageMsPrivate_ GodImageMsPrivate;
+
+typedef struct {
+	GodImage parent;
+	GodImageMsPrivate *priv;
+} GodImageMs;
+
+typedef struct {
+	GodImageClass parent_class;
+} GodImageMsClass;
+
+GType         god_image_ms_get_type  (void);
+GodImage     *god_image_ms_new       (void);
+
+/* hash is a 16 byte id */
+const guint8 *god_image_ms_get_hash  (GodImageMs   *image);
+void          god_image_ms_set_hash  (GodImageMs   *image,
+				      const guint8 *hash);
+
+
+
+G_END_DECLS
+
+#endif /* GOD_IMAGE_MS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,83 @@
+if WITH_WIN32
+    lib_LTLIBRARIES = libgoffice-win32-stub.la
+
+    libgoffice_win32_stub_la_SOURCES = win32-stub.c win32-stub.h
+    libgoffice_win32_stub_la_LIBADD = -luuid -lhtmlhelp -lurlmon
+    libgoffice_win32_stub_la_LDFLAGS = -no-undefined -export-symbols $(srcdir)/goffice-win32-stub.def
+endif
+EXTRA_DIST = goffice-win32-stub.def
+
+patternsdir = $(goffice_datadir)/patterns
+dist_patterns_DATA = svg-patterns.xml
+
+noinst_LTLIBRARIES = libgoffice-utils.la
+libgoffice_utils_la_SOURCES =	\
+	go-marshalers.list	\
+	\
+	go-color.c		\
+	go-file.c		\
+	go-font.c		\
+	\
+	go-gradient.c		\
+	go-line.c		\
+	go-marker.c		\
+	go-pattern.c		\
+	go-geometry.c		\
+	go-math.c		\
+	datetime.c		\
+	format.c		\
+	formats.c		\
+	go-format.c		\
+	go-format-match.c	\
+	regutf8.c 		\
+	\
+	go-glib-extras.c	\
+	go-libxml-extras.c	\
+	go-rangefunc.c	\
+	go-regression.c
+
+libgoffice_utils_ladir = $(goffice_include_dir)/utils
+libgoffice_utils_la_HEADERS = 	\
+	goffice-utils.h		\
+	go-color.h		\
+	go-file.h		\
+	go-font.h		\
+	go-gradient.h		\
+	go-line.h		\
+	go-marker.h		\
+	go-pattern.h		\
+	go-units.h		\
+	go-geometry.h		\
+	go-math.h		\
+	datetime.h		\
+	format-impl.h		\
+	go-format.h		\
+	go-format-match.h	\
+	regutf8.h 		\
+	go-glib-extras.h	\
+	go-libxml-extras.h	\
+	go-rangefunc.h	\
+	go-regression.h
+
+CLEANFILES =			\
+	go-marshalers.h		\
+	go-marshalers.c
+
+# A hint is needed to build the header first:
+BUILT_SOURCES = go-marshalers.h
+
+# Another hint, see bugs #172211 and #172212:
+non-intermediate: go-marshalers.c
+
+GENMARSHAL_COMMAND = $(GLIB_GENMARSHAL) --prefix=go_
+
+.list.h:
+	$(GENMARSHAL_COMMAND) --header $< >$@
+
+.list.c:
+	(echo '/* This file has been automatically generated.  Do not edit. */' && \
+	echo '#include <goffice/goffice-config.h>' && \
+	echo '#include "$*.h"' && \
+	$(GENMARSHAL_COMMAND) --body $< ) >$@
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,712 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+ at WITH_WIN32_TRUE@lib_LTLIBRARIES = libgoffice-win32-stub.la
+
+ at WITH_WIN32_TRUE@libgoffice_win32_stub_la_SOURCES = win32-stub.c win32-stub.h
+ at WITH_WIN32_TRUE@libgoffice_win32_stub_la_LIBADD = -luuid -lhtmlhelp -lurlmon
+ at WITH_WIN32_TRUE@libgoffice_win32_stub_la_LDFLAGS = -no-undefined -export-symbols $(srcdir)/goffice-win32-stub.def
+EXTRA_DIST = goffice-win32-stub.def
+
+patternsdir = $(goffice_datadir)/patterns
+dist_patterns_DATA = svg-patterns.xml
+
+noinst_LTLIBRARIES = libgoffice-utils.la
+libgoffice_utils_la_SOURCES = \
+	go-marshalers.list	\
+	\
+	go-color.c		\
+	go-file.c		\
+	go-font.c		\
+	\
+	go-gradient.c		\
+	go-line.c		\
+	go-marker.c		\
+	go-pattern.c		\
+	go-geometry.c		\
+	go-math.c		\
+	datetime.c		\
+	format.c		\
+	formats.c		\
+	go-format.c		\
+	go-format-match.c	\
+	regutf8.c 		\
+	\
+	go-glib-extras.c	\
+	go-libxml-extras.c	\
+	go-rangefunc.c	\
+	go-regression.c
+
+
+libgoffice_utils_ladir = $(goffice_include_dir)/utils
+libgoffice_utils_la_HEADERS = \
+	goffice-utils.h		\
+	go-color.h		\
+	go-file.h		\
+	go-font.h		\
+	go-gradient.h		\
+	go-line.h		\
+	go-marker.h		\
+	go-pattern.h		\
+	go-units.h		\
+	go-geometry.h		\
+	go-math.h		\
+	datetime.h		\
+	format-impl.h		\
+	go-format.h		\
+	go-format-match.h	\
+	regutf8.h 		\
+	go-glib-extras.h	\
+	go-libxml-extras.h	\
+	go-rangefunc.h	\
+	go-regression.h
+
+
+CLEANFILES = \
+	go-marshalers.h		\
+	go-marshalers.c
+
+
+# A hint is needed to build the header first:
+BUILT_SOURCES = go-marshalers.h
+
+GENMARSHAL_COMMAND = $(GLIB_GENMARSHAL) --prefix=go_
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+subdir = goffice/utils
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+
+libgoffice_utils_la_LDFLAGS =
+libgoffice_utils_la_LIBADD =
+am_libgoffice_utils_la_OBJECTS = go-marshalers.lo go-color.lo go-file.lo \
+	go-font.lo go-gradient.lo go-line.lo go-marker.lo go-pattern.lo \
+	go-geometry.lo go-math.lo datetime.lo format.lo formats.lo \
+	go-format.lo go-format-match.lo regutf8.lo go-glib-extras.lo \
+	go-libxml-extras.lo go-rangefunc.lo go-regression.lo
+libgoffice_utils_la_OBJECTS = $(am_libgoffice_utils_la_OBJECTS)
+ at WITH_WIN32_TRUE@libgoffice_win32_stub_la_DEPENDENCIES =
+ at WITH_WIN32_FALSE@libgoffice_win32_stub_la_DEPENDENCIES =
+am__libgoffice_win32_stub_la_SOURCES_DIST = win32-stub.c win32-stub.h
+ at WITH_WIN32_TRUE@am_libgoffice_win32_stub_la_OBJECTS = win32-stub.lo
+libgoffice_win32_stub_la_OBJECTS = \
+	$(am_libgoffice_win32_stub_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/datetime.Plo ./$(DEPDIR)/format.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/formats.Plo ./$(DEPDIR)/go-color.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-file.Plo ./$(DEPDIR)/go-font.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-format-match.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-format.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-geometry.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-glib-extras.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-gradient.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-libxml-extras.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-line.Plo ./$(DEPDIR)/go-marker.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-marshalers.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-math.Plo ./$(DEPDIR)/go-pattern.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-rangefunc.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/go-regression.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/regutf8.Plo ./$(DEPDIR)/win32-stub.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgoffice_utils_la_SOURCES) \
+	$(am__libgoffice_win32_stub_la_SOURCES_DIST)
+DATA = $(dist_patterns_DATA)
+
+HEADERS = $(libgoffice_utils_la_HEADERS)
+
+DIST_COMMON = $(dist_patterns_DATA) $(libgoffice_utils_la_HEADERS) \
+	$(srcdir)/Makefile.in $(top_srcdir)/goffice.mk Makefile.am
+SOURCES = $(libgoffice_utils_la_SOURCES) $(libgoffice_win32_stub_la_SOURCES)
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .h .list .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  goffice/utils/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgoffice-utils.la: $(libgoffice_utils_la_OBJECTS) $(libgoffice_utils_la_DEPENDENCIES) 
+	$(LINK)  $(libgoffice_utils_la_LDFLAGS) $(libgoffice_utils_la_OBJECTS) $(libgoffice_utils_la_LIBADD) $(LIBS)
+libgoffice-win32-stub.la: $(libgoffice_win32_stub_la_OBJECTS) $(libgoffice_win32_stub_la_DEPENDENCIES) 
+	$(LINK) -rpath $(libdir) $(libgoffice_win32_stub_la_LDFLAGS) $(libgoffice_win32_stub_la_OBJECTS) $(libgoffice_win32_stub_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/datetime.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/format.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/formats.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-color.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-file.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-font.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-format-match.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-format.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-geometry.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-glib-extras.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-gradient.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-libxml-extras.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-line.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-marker.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-marshalers.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-math.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-pattern.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-rangefunc.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/go-regression.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/regutf8.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/win32-stub.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_patternsDATA_INSTALL = $(INSTALL_DATA)
+install-dist_patternsDATA: $(dist_patterns_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(patternsdir)
+	@list='$(dist_patterns_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_patternsDATA_INSTALL) $$d$$p $(DESTDIR)$(patternsdir)/$$f"; \
+	  $(dist_patternsDATA_INSTALL) $$d$$p $(DESTDIR)$(patternsdir)/$$f; \
+	done
+
+uninstall-dist_patternsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_patterns_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(patternsdir)/$$f"; \
+	  rm -f $(DESTDIR)$(patternsdir)/$$f; \
+	done
+libgoffice_utils_laHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgoffice_utils_laHEADERS: $(libgoffice_utils_la_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgoffice_utils_ladir)
+	@list='$(libgoffice_utils_la_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgoffice_utils_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_utils_ladir)/$$f"; \
+	  $(libgoffice_utils_laHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgoffice_utils_ladir)/$$f; \
+	done
+
+uninstall-libgoffice_utils_laHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgoffice_utils_la_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgoffice_utils_ladir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgoffice_utils_ladir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(patternsdir) $(DESTDIR)$(libgoffice_utils_ladir)
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_patternsDATA \
+	install-libgoffice_utils_laHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_patternsDATA uninstall-info-am \
+	uninstall-libLTLIBRARIES uninstall-libgoffice_utils_laHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
+	ctags distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am info \
+	info-am install install-am install-data install-data-am \
+	install-dist_patternsDATA install-exec install-exec-am \
+	install-info install-info-am install-libLTLIBRARIES \
+	install-libgoffice_utils_laHEADERS install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_patternsDATA \
+	uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgoffice_utils_laHEADERS
+
+
+# Another hint, see bugs #172211 and #172212:
+non-intermediate: go-marshalers.c
+
+.list.h:
+	$(GENMARSHAL_COMMAND) --header $< >$@
+
+.list.c:
+	(echo '/* This file has been automatically generated.  Do not edit. */' && \
+	echo '#include <goffice/goffice-config.h>' && \
+	echo '#include "$*.h"' && \
+	$(GENMARSHAL_COMMAND) --body $< ) >$@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,490 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * datetime.c: Date and time routines grabbed from elsewhere.
+ *
+ * Authors:
+ *   Miguel de Icaza (miguel at gnu.org)
+ *   Morten Welinder <terra at gnome.org>
+ *   Jukka-Pekka Iivonen <iivonen at iki.fi>
+ *   Andreas J. Guelzow <aguelzow at taliesin.ca>
+ */
+
+#include <goffice/goffice-config.h>
+#include "datetime.h"
+
+#include <math.h>
+
+#ifndef HAVE_GLIB26
+#include "glib24_26-compat.h"
+#endif
+
+#define SECS_PER_DAY (24 * 60 * 60)
+#define HALF_SEC (0.5 / SECS_PER_DAY)
+
+/* ------------------------------------------------------------------------- */
+
+/* One less that the Julian day number of 19000101.  */
+static int date_origin = 0;
+/* Julian day number of 19040101.  */
+static int date_origin_1904 = 0;
+
+/*
+ * The serial number of 19000228.  Excel allocates a serial number for
+ * the non-existing date 19000229.
+ */
+static int const date_serial_19000228 = 59;
+
+static void
+date_init (void)
+{
+	/* Day 1 means 1st of January of 1900 */
+	GDate* date = g_date_new_dmy (1, 1, 1900);
+	date_origin = g_date_get_julian (date) - 1;
+
+	/* Day 0 means 1st of January of 1904 */
+	g_date_set_dmy (date, 1, 1, 1904);
+	date_origin_1904 = g_date_get_julian (date);
+	g_date_free (date);
+}
+
+/* ------------------------------------------------------------------------- */
+
+int
+datetime_g_to_serial (GDate const *date, GODateConventions const *conv)
+{
+	int day;
+
+	if (!date_origin)
+		date_init ();
+
+	if (conv && conv->use_1904)
+		return g_date_get_julian (date) - date_origin_1904;
+	day = g_date_get_julian (date) - date_origin;
+	return day + (day > date_serial_19000228);
+}
+
+/* ------------------------------------------------------------------------- */
+
+void
+datetime_serial_to_g (GDate *res, int serial, GODateConventions const *conv)
+{
+	if (!date_origin)
+		date_init ();
+
+	g_date_clear (res, 1);
+	if (conv && conv->use_1904)
+		g_date_set_julian (res, serial + date_origin_1904);
+	else if (serial > date_serial_19000228) {
+		if (serial == date_serial_19000228 + 1)
+			g_warning ("Request for date 19000229.");
+		g_date_set_julian (res, serial + date_origin - 1);
+	} else
+		g_date_set_julian (res, serial + date_origin);
+}
+
+/* ------------------------------------------------------------------------- */
+
+double
+datetime_timet_to_serial_raw (time_t t, GODateConventions const *conv)
+{
+	struct tm *tm = localtime (&t);
+	int secs;
+	GDate date;
+
+        g_date_clear (&date, 1);
+	g_date_set_time (&date, t);
+	secs = tm->tm_hour * 3600 + tm->tm_min * 60 + tm->tm_sec;
+	return datetime_g_to_serial (&date, conv) +
+		secs / (double)SECS_PER_DAY;
+}
+
+/* ------------------------------------------------------------------------- */
+
+int
+datetime_serial_raw_to_serial (double raw)
+{
+	return (int) floor (raw + HALF_SEC);
+}
+
+/* ------------------------------------------------------------------------- */
+
+int
+datetime_timet_to_serial (time_t t, GODateConventions const *conv)
+{
+	return datetime_serial_raw_to_serial (datetime_timet_to_serial_raw (t, conv));
+}
+
+/* ------------------------------------------------------------------------- */
+
+time_t
+datetime_serial_to_timet (int serial, GODateConventions const *conv)
+{
+	GDate gd;
+	struct tm tm;
+
+	datetime_serial_to_g (&gd, serial, conv);
+	g_date_to_struct_tm (&gd, &tm);
+
+	return mktime (&tm);
+}
+
+/* ------------------------------------------------------------------------- */
+/* This is time-only assuming a 24h day.  It probably loses completely on */
+/* days with summer time ("daylight savings") changes.  */
+
+int
+datetime_serial_raw_to_seconds (double raw)
+{
+	raw += HALF_SEC;
+	return (raw - floor (raw)) * SECS_PER_DAY;
+}
+
+/* ------------------------------------------------------------------------- */
+
+int
+datetime_timet_to_seconds (time_t t)
+{
+	/* we just want the seconds, actual date does not matter. So we can ignore
+	 * the date convention (1900 vs 1904) */
+	return datetime_serial_raw_to_seconds (datetime_timet_to_serial_raw (t, NULL));
+}
+
+/* ------------------------------------------------------------------------- */
+
+int
+datetime_g_days_between (GDate const* date1, GDate const *date2)
+{
+	g_return_val_if_fail (g_date_valid (date1), 0);
+	g_return_val_if_fail (g_date_valid (date2), 0);
+
+	return (int) (g_date_get_julian (date2) - g_date_get_julian (date1));
+}
+
+/* ------------------------------------------------------------------------- */
+
+int
+datetime_g_months_between (GDate const *date1, GDate const *date2)
+{
+	g_return_val_if_fail (g_date_valid (date1), 0);
+	g_return_val_if_fail (g_date_valid (date2), 0);
+
+	/* find the difference according to the month and year ordinals,
+	   but discount the last month if there are not enough days. */
+	return 12 * (g_date_get_year (date2) - g_date_get_year (date1))
+		+ g_date_get_month (date2) - g_date_get_month (date1)
+		- (g_date_get_day (date2) >= g_date_get_day (date1) ? 0 : 1);
+}
+
+/* ------------------------------------------------------------------------- */
+
+int
+datetime_g_years_between (GDate const *date1, GDate const *date2)
+{
+	int months;
+
+	g_return_val_if_fail (g_date_valid (date1), 0);
+	g_return_val_if_fail (g_date_valid (date2), 0);
+
+	months = datetime_g_months_between (date1, date2);
+	return months > 0 ? months / 12 : -(-months / 12);
+}
+
+/* ------------------------------------------------------------------------- */
+
+/**
+ * datetime_weeknum (GDate *date, int method)
+ * @date      date
+ * @method    week numbering method
+ *
+ * Returns week number according to the given method.
+ * 1:   Week starts on Sunday. Days before first Sunday are in week 0.
+ * 2:   Week starts on Monday. Days before first Monday are in week 0.
+ * 150: ISO 8601 week number. See datetime_isoweeknum.
+ */
+int
+datetime_weeknum (GDate const *date, int method)
+{
+	int res;
+
+	g_return_val_if_fail (g_date_valid (date), -1);
+	g_return_val_if_fail (method == WEEKNUM_METHOD_SUNDAY ||
+			      method == WEEKNUM_METHOD_MONDAY ||
+			      method == WEEKNUM_METHOD_ISO,
+			      -1);
+
+	switch (method) {
+	case WEEKNUM_METHOD_SUNDAY:
+		res = g_date_get_sunday_week_of_year (date); break;
+	case WEEKNUM_METHOD_MONDAY:
+		res = g_date_get_monday_week_of_year (date); break;
+	case WEEKNUM_METHOD_ISO:
+		res = g_date_get_iso8601_week_of_year (date); break;
+	default: res = -1;
+	}
+
+	return res;
+}
+
+/* ------------------------------------------------------------------------- */
+
+static gint32
+days_between_BASIS_MSRB_30_360 (GDate const *from, GDate const *to)
+{
+	int y1, m1, d1, y2, m2, d2;
+
+	y1 = g_date_get_year (from);
+	m1 = g_date_get_month (from);
+	d1 = g_date_get_day (from);
+	y2 = g_date_get_year (to);
+	m2 = g_date_get_month (to);
+	d2 = g_date_get_day (to);
+
+	if (m1 == 2 && g_date_is_last_of_month (from))
+		d1 = 30;
+	if (d2 == 31 && d1 >= 30)
+		d2 = 30;
+	if (d1 == 31)
+		d1 = 30;
+
+	return (y2 - y1) * 360 + (m2 - m1) * 30 + (d2 - d1);
+}
+
+static gint32
+days_between_BASIS_MSRB_30_360_SYM (GDate const *from, GDate const *to)
+{
+	int y1, m1, d1, y2, m2, d2;
+
+	y1 = g_date_get_year (from);
+	m1 = g_date_get_month (from);
+	d1 = g_date_get_day (from);
+	y2 = g_date_get_year (to);
+	m2 = g_date_get_month (to);
+	d2 = g_date_get_day (to);
+
+	if (m1 == 2 && g_date_is_last_of_month (from))
+		d1 = 30;
+	if (m2 == 2 && g_date_is_last_of_month (to))
+		d2 = 30;
+	if (d2 == 31 && d1 >= 30)
+		d2 = 30;
+	if (d1 == 31)
+		d1 = 30;
+
+	return (y2 - y1) * 360 + (m2 - m1) * 30 + (d2 - d1);
+}
+
+static gint32
+days_between_BASIS_30E_360 (GDate const *from, GDate const *to)
+{
+	int y1, m1, d1, y2, m2, d2;
+
+	y1 = g_date_get_year (from);
+	m1 = g_date_get_month (from);
+	d1 = g_date_get_day (from);
+	y2 = g_date_get_year (to);
+	m2 = g_date_get_month (to);
+	d2 = g_date_get_day (to);
+
+	if (d1 == 31)
+		d1 = 30;
+	if (d2 == 31)
+		d2 = 30;
+
+	return (y2 - y1) * 360 + (m2 - m1) * 30 + (d2 - d1);
+}
+
+static gint32
+days_between_BASIS_30Ep_360 (GDate const *from, GDate const *to)
+{
+	int y1, m1, d1, y2, m2, d2;
+
+	y1 = g_date_get_year (from);
+	m1 = g_date_get_month (from);
+	d1 = g_date_get_day (from);
+	y2 = g_date_get_year (to);
+	m2 = g_date_get_month (to);
+	d2 = g_date_get_day (to);
+
+	if (d1 == 31)
+		d1 = 30;
+	if (d2 == 31) {
+		d2 = 1;
+		m2++;
+		/* No need to check for m2 == 13 since 12*30 == 360 */
+	}
+
+	return (y2 - y1) * 360 + (m2 - m1) * 30 + (d2 - d1);
+}
+
+/*
+ * days_between_basis
+ *
+ * @from      : GDate *
+ * @to        : GDate *
+ * @basis     : basis_t
+ * see datetime.h and doc/fn-financial-basis.txt for details
+ *
+ * @in_order  : dates are considered in order
+ *
+ * returns    : Number of days strictly between from and to +1
+ *
+ */
+
+gint32
+days_between_basis (GDate const *from, GDate const *to, basis_t basis)
+{
+	int sign = 1;
+
+	if (g_date_compare (from, to) == 1) {
+		GDate const *tmp = from;
+		from = to;
+		to = tmp;
+		sign = -1;
+	}
+
+	switch (basis) {
+	case BASIS_ACT_ACT:
+	case BASIS_ACT_360:
+	case BASIS_ACT_365:
+		return sign * (g_date_get_julian (to) - g_date_get_julian (from));
+	case BASIS_30E_360:
+		return sign * days_between_BASIS_30E_360 (from, to);
+	case BASIS_30Ep_360:
+		return sign * days_between_BASIS_30Ep_360 (from, to);
+	case BASIS_MSRB_30_360_SYM:
+		return sign * days_between_BASIS_MSRB_30_360_SYM (from, to);
+	case BASIS_MSRB_30_360:
+	default:
+		return sign * days_between_BASIS_MSRB_30_360 (from, to);
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+/*
+ * coup_cd
+ *
+ * @res	      :
+ * @settlement: GDate *
+ * @maturity  : GDate *  must follow settlement strictly
+ * @freq      : int      divides 12 evenly
+ * @eom       : gboolean whether to do special end of month
+ *                       handling
+ * @next      : gboolean whether next or previous date
+ *
+ * returns    : GDate *  next  or previous coupon date
+ *
+ * this function does not depend on the basis of counting!
+ */
+void
+coup_cd (GDate *result, GDate const *settlement, GDate const *maturity,
+	 int freq, gboolean eom, gboolean next)
+{
+        int        months, periods;
+	gboolean   is_eom_special;
+
+	is_eom_special = eom && g_date_is_last_of_month (maturity);
+
+	g_date_clear (result, 1);
+
+	months = 12 / freq;
+	periods = (g_date_get_year(maturity) - g_date_get_year (settlement));
+	if (periods > 0)
+		periods = (periods - 1) * freq;
+
+	do {
+		g_date_set_julian (result, g_date_get_julian (maturity));
+		periods++;
+		g_date_subtract_months (result, periods * months);
+		if (is_eom_special) {
+			int ndays = g_date_get_days_in_month
+				(g_date_get_month (result),
+				 g_date_get_year (result));
+			g_date_set_day (result, ndays);
+		}
+	} while (g_date_compare (settlement, result) < 0 );
+
+	if (next) {
+		g_date_set_julian (result, g_date_get_julian (maturity));
+		periods--;
+		g_date_subtract_months (result, periods * months);
+		if (is_eom_special) {
+			int ndays = g_date_get_days_in_month
+				(g_date_get_month (result),
+				 g_date_get_year (result));
+			g_date_set_day (result, ndays);
+		}
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+
+/*
+ * Returns the number of days in the coupon period of the settlement date.
+ * Currently, returns negative numbers if the branch is not implemented.
+ */
+double
+coupdays (GDate const *settlement, GDate const *maturity,
+	  GnmCouponConvention const *conv)
+{
+	GDate prev, next;
+
+        switch (conv->basis) {
+	case BASIS_MSRB_30_360:
+	case BASIS_ACT_360:
+        case BASIS_30E_360:
+        case BASIS_30Ep_360:
+		return 360 / conv->freq;
+	case BASIS_ACT_365:
+		return 365.0 / conv->freq;
+	case BASIS_ACT_ACT:
+	default:
+		coup_cd (&next, settlement, maturity, conv->freq, conv->eom, TRUE);
+		coup_cd (&prev, settlement, maturity, conv->freq, conv->eom, FALSE);
+		return days_between_basis (&prev, &next, BASIS_ACT_ACT);
+        }
+}
+
+/* ------------------------------------------------------------------------- */
+
+
+/*
+ * Returns the number of days from the beginning of the coupon period to
+ * the settlement date.
+ */
+double
+coupdaybs (GDate const *settlement, GDate const *maturity,
+	   GnmCouponConvention const *conv)
+{
+	GDate prev_coupon;
+	coup_cd (&prev_coupon, settlement, maturity, conv->freq, conv->eom, FALSE);
+	return days_between_basis (&prev_coupon, settlement, conv->basis);
+}
+
+/**
+ * coupdaysnc :
+ * @settlement :
+ * @maturity :
+ * @freq :
+ * @basis :
+ * @eom :
+ *
+ * Returns the number of days from the settlement date to the next
+ * coupon date.
+ **/
+double
+coupdaysnc (GDate const *settlement, GDate const *maturity,
+	    GnmCouponConvention const *conv)
+{
+	GDate next_coupon;
+	coup_cd (&next_coupon, settlement, maturity, conv->freq, conv->eom, TRUE);
+	return days_between_basis (settlement, &next_coupon, conv->basis);
+}
+
+int
+gnm_date_convention_base (GODateConventions const *conv)
+{
+	g_return_val_if_fail (conv != NULL, 1900);
+	return conv->use_1904 ? 1904 : 1900;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/datetime.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,97 @@
+#ifndef _GO_DATETIME_H_
+#define _GO_DATETIME_H_
+
+#include <goffice/utils/goffice-utils.h>
+#include <glib.h>
+#include <time.h>
+
+G_BEGIN_DECLS
+
+struct _GODateConventions {
+	gboolean use_1904;	/* Use MacOffice 1904 based date convention,
+				 * Rather than the Win32 style 1900 */
+};
+
+/*
+ * Naming conventions:
+ *
+ * "g": a GDate *.
+ * "timet": Unix' time_t.
+ * "serial": Excel serial day number.
+ * "serial_raw": serial plus time as fractional day.
+ */
+
+/* Week numbering methods */
+/* 1:   Week starts on Sunday. Days before first Sunday are in week 0. */
+/* 2:   Week starts on Monday. Days before first Monday are in week 0. */
+/* 150: ISO 8601 week number. */
+enum {
+	WEEKNUM_METHOD_SUNDAY = 1,
+	WEEKNUM_METHOD_MONDAY = 2,
+	WEEKNUM_METHOD_ISO = 150
+};
+
+/* These do not round and produces fractional values, i.e., includes time.  */
+double	datetime_timet_to_serial_raw  (time_t t, GODateConventions const *conv);
+
+/* These are date-only, no time.  */
+int	datetime_timet_to_serial      (time_t t, GODateConventions const *conv);
+int	datetime_g_to_serial	      (GDate const *date, GODateConventions const *conv);
+void	datetime_serial_to_g	      (GDate *res, int serial, GODateConventions const *conv);
+time_t	datetime_serial_to_timet      (int serial, GODateConventions const *conv);
+int	datetime_serial_raw_to_serial (double raw);
+
+/* These are time-only assuming a 24h day.  It probably loses completely on */
+/* days with summer time ("daylight savings") changes.  */
+int datetime_timet_to_seconds (time_t t);
+int datetime_serial_raw_to_seconds (double raw);
+
+int datetime_g_days_between (GDate const *date1, GDate const *date2);
+
+/* Number of full months between date1 and date2. */
+/* largest value s.t. g_date_add_months (date1, result) <= date2 */
+/* except that if the day is decreased in g_date_add_monts, treat
+   that as > the date it is decreased to. */
+/* ( datetime_g_months_between ( March 31, April 30 ) == 0
+     even though g_date_add_months ( Mar 31, 1 ) <= Apr 30.... */
+int datetime_g_months_between (GDate const *date1, GDate const *date2);
+/* Number of full years between date1 and date2. */
+/* (g_date_add_years (date1, result) <= date2; largest such value. */
+/*  treat add_years (29-feb, x) > 28-feb ) */
+int datetime_g_years_between (GDate const *date1, GDate const *date2);
+/* week number according to the given method. */
+int datetime_weeknum (GDate const *date, int method);
+
+typedef enum { /* see doc/fn-financial-basis.txt for details */
+	BASIS_MSRB_30_360     = 0,
+	BASIS_ACT_ACT         = 1,
+	BASIS_ACT_360         = 2,
+	BASIS_ACT_365         = 3,
+	BASIS_30E_360         = 4,
+	BASIS_30Ep_360        = 5,
+	BASIS_MSRB_30_360_SYM = 6         /* Gnumeric extension.  */
+} basis_t;
+
+gint32  days_between_basis (GDate const *from, GDate const *to, basis_t basis);
+
+typedef struct {
+	int	 freq;
+	basis_t  basis;
+	gboolean eom;
+	GODateConventions const *date_conv;
+} GnmCouponConvention;
+
+void	  coup_cd    (GDate *res, GDate const *settle, GDate const *mat,
+		      int freq, gboolean eom, gboolean next);
+double coupdays   (GDate const *settle, GDate const *mat,
+		      GnmCouponConvention const *conv);
+double coupdaybs  (GDate const *settle, GDate const *mat,
+		      GnmCouponConvention const *conv);
+double coupdaysnc (GDate const *settle, GDate const *mat,
+		      GnmCouponConvention const *conv);
+
+int gnm_date_convention_base (GODateConventions const *conv);
+
+G_END_DECLS
+
+#endif /* _GO_DATETIME_H_ */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,42 @@
+#ifndef GO_FORMAT_IMPL_H
+#define GO_FORMAT_IMPL_H
+
+#include <goffice/utils/go-format.h>
+
+G_BEGIN_DECLS
+
+struct _GOFormatElement {
+        char const *format;
+        char        restriction_type;
+        double	    restriction_value;
+	GOColor     go_color;
+
+	/* fmt contains an '@' that stringifies things */
+	gboolean    forces_text;
+
+	gboolean    want_am_pm;
+	gboolean    has_fraction;
+	gboolean    suppress_minus;
+	gboolean    elapsed_time;
+
+	GOFormat	*container;
+	char		*regexp_str;
+	GByteArray	*match_tags;
+	GORegexp	 regexp;
+};
+
+void go_fmt_general_int    (GString *result, int val, int col_width);
+void go_fmt_general_float  (GString *result, double val, double col_width);
+void go_format_number      (GString *result,
+			    double number, int col_width, GOFormatElement const *elem,
+			    GODateConventions const *date_conv);
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+void go_fmt_general_floatl (GString *result, long double val, double col_width);
+void go_format_numberl     (GString *result,
+			    long double number, int col_width, GOFormatElement const *elem,
+			    GODateConventions const *date_conv);
+#endif
+
+G_END_DECLS
+
+#endif /* GO_FORMAT_IMPL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/format.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2782 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* format.c - attempts to emulate excel's number formatting ability.
+ * Copyright (C) 1998 Chris Lahey, Miguel de Icaza
+ *
+ * Redid the format parsing routine to make it accept more of the Excel
+ * formats.  The number rendeing code from Chris has not been touched,
+ * that routine is pretty good.
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-format.h"
+#include "format-impl.h"
+#include "go-format-match.h"
+#include "go-color.h"
+#include "datetime.h"
+#include "go-glib-extras.h"
+#include "go-math.h"
+#include <glib/gi18n.h>
+
+#include <time.h>
+#include <math.h>
+#include <locale.h>
+#include <string.h>
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#ifdef HAVE_LANGINFO_H
+#  include <langinfo.h>
+#endif
+#ifdef G_OS_WIN32
+#  include <windows.h>
+#endif
+
+/* ------------------------------------------------------------------------- */
+
+#ifndef DOUBLE
+
+#define DEFINE_COMMON
+#define DOUBLE double
+#define SUFFIX(_n) _n
+#define PREFIX(_n) DBL_ ## _n
+#define FORMAT_e "e"
+#define FORMAT_f "f"
+#define FORMAT_E "E"
+#define FORMAT_G "G"
+#define STRTO strtod
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+#include "format.c"
+#undef DEFINE_COMMON
+#undef DOUBLE
+#undef SUFFIX
+#undef PREFIX
+#undef FORMAT_e
+#undef FORMAT_f
+#undef FORMAT_E
+#undef FORMAT_G
+#undef STRTO
+
+#ifdef HAVE_SUNMATH_H
+#include <sunmath.h>
+#endif
+#define DOUBLE long double
+#define SUFFIX(_n) _n ## l
+#define PREFIX(_n) LDBL_ ## _n
+#define FORMAT_e "Le"
+#define FORMAT_f "Lf"
+#define FORMAT_E "LE"
+#define FORMAT_G "LG"
+#define STRTO strtold
+#endif
+
+#endif
+
+/* ------------------------------------------------------------------------- */
+
+#undef DEBUG_REF_COUNT
+
+/***************************************************************************/
+
+#ifdef DEFINE_COMMON
+static GOFormat *default_percentage_fmt;
+static GOFormat *default_money_fmt;
+static GOFormat *default_date_fmt;
+static GOFormat *default_time_fmt;
+static GOFormat *default_date_time_fmt;
+static GOFormat *default_general_fmt;
+
+
+/*
+ * Points to the locale information for number display.  All strings are
+ * in UTF-8 encoding.
+ */
+static gboolean locale_info_cached = FALSE;
+static GString *lc_decimal = NULL;
+static GString *lc_thousand = NULL;
+static gboolean lc_precedes;
+static gboolean lc_space_sep;
+static GString *lc_currency = NULL;
+
+static gboolean date_order_cached = FALSE;
+
+static gboolean boolean_cached = FALSE;
+static char const *lc_TRUE = NULL;
+static char const *lc_FALSE = NULL;
+
+static double beyond_precision;
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+static long double beyond_precisionl;
+#endif
+
+/* FIXME : use nl_langinfo
+ * DAY_{1-7} (LC_TIME)
+ * ABDAY_{1-7} (LC_TIME)
+ * MON_{1-12} (LC_TIME)
+ * ABMON_{1-12} (LC_TIME)
+ *
+ * The down side is that we can not guarantee the case
+ **/
+char const * const day_short [] = {
+	N_("*Sun"),
+	N_("*Mon"),
+	N_("*Tue"),
+	N_("*Wed"),
+	N_("*Thu"),
+	N_("*Fri"),
+	N_("*Sat"),
+	NULL,
+};
+
+char const * const day_long [] = {
+	N_("Sunday"),
+	N_("Monday"),
+	N_("Tuesday"),
+	N_("Wednesday"),
+	N_("Thursday"),
+	N_("Friday"),
+	N_("Saturday"),
+	NULL
+};
+
+char const * const month_short [] = {
+	N_("*Jan"),
+	N_("*Feb"),
+	N_("*Mar"),
+	N_("*Apr"),
+	N_("*May"),
+	N_("*Jun"),
+	N_("*Jul"),
+	N_("*Aug"),
+	N_("*Sep"),
+	N_("*Oct"),
+	N_("*Nov"),
+	N_("*Dec"),
+	NULL
+};
+
+char const * const month_long [] = {
+	N_("January"),
+	N_("February"),
+	N_("March"),
+	N_("April"),
+	N_("May"),
+	N_("June"),
+	N_("July"),
+	N_("August"),
+	N_("September"),
+	N_("October"),
+	N_("November"),
+	N_("December"),
+	NULL
+};
+
+static GOColor lookup_color (char const *str, char const *end);
+
+char const *
+go_setlocale (int category, char const *val)
+{
+	locale_info_cached = FALSE;
+	date_order_cached = FALSE;
+	boolean_cached = FALSE;
+	return setlocale (category, val);
+}
+
+static void
+convert1 (GString *res, char const *lstr, char const *name, char const *def)
+{
+	char *tmp;
+
+	if (lstr == NULL || lstr[0] == 0) {
+		g_string_assign (res, def);
+		return;
+	}
+
+	tmp = g_locale_to_utf8 (lstr, -1, NULL, NULL, NULL);
+	if (tmp) {
+		g_string_assign (res, tmp);
+		g_free (tmp);
+		return;
+	}
+
+	g_warning ("Failed to convert locale's %s \"%s\" to UTF-8.", name, lstr);
+	g_string_assign (res, def);
+}
+
+static void
+update_lc (void)
+{
+	struct lconv *lc = localeconv ();
+
+	/*
+	 * Extract all information here as lc is not guaranteed to stay
+	 * valid after next localeconv call which could be anywhere.
+	 */
+
+	convert1 (lc_decimal, lc->decimal_point, "decimal separator", ".");
+	if (g_utf8_strlen (lc_decimal->str, -1) != 1)
+		g_warning ("Decimal separator is not a single character.");
+
+	convert1 (lc_thousand, lc->mon_thousands_sep, "monetary thousands separator",
+		  (lc_decimal->str[0] == ',' ? "." : ","));
+	if (g_utf8_strlen (lc_thousand->str, -1) != 1)
+		g_warning ("Monetary thousands separator is not a single character.");
+
+	if (g_string_equal (lc_thousand, lc_decimal)) {
+		g_string_assign (lc_thousand,
+				 (lc_decimal->str[0] == ',') ? "." : ",");
+		g_warning ("Monetary thousands separator is the same as the decimal separator; converting '%s' to '%s'",
+			   lc_decimal->str, lc_thousand->str);
+	}
+
+	/* Use != 0 rather than == 1 so that CHAR_MAX (undefined) is true */
+	lc_precedes = (lc->p_cs_precedes != 0);
+
+	/* Use == 1 rather than != 0 so that CHAR_MAX (undefined) is false */
+	lc_space_sep = (lc->p_sep_by_space == 1);
+
+	convert1 (lc_currency, lc->currency_symbol, "currency symbol",	"$");
+
+	locale_info_cached = TRUE;
+}
+
+GString const *
+format_get_decimal (void)
+{
+	if (!locale_info_cached)
+		update_lc ();
+
+	return lc_decimal;
+}
+
+GString const *
+format_get_thousand (void)
+{
+	if (!locale_info_cached)
+		update_lc ();
+
+	return lc_thousand;
+}
+
+/**
+ * format_get_currency :
+ * @precedes : a pointer to a boolean which is set to TRUE if the currency
+ * 		should precede
+ * @space_sep: a pointer to a boolean which is set to TRUE if the currency
+ * 		should have a space separating it from the the value
+ *
+ * Play with the default logic so that things come out nicely for the default
+ * case.
+ */
+GString const *
+format_get_currency (gboolean *precedes, gboolean *space_sep)
+{
+	if (!locale_info_cached)
+		update_lc ();
+
+	if (precedes)
+		*precedes = lc_precedes;
+
+	if (space_sep)
+		*space_sep = lc_space_sep;
+
+	return lc_currency;
+}
+
+/*
+ * format_month_before_day :
+ *
+ * A quick utility routine to guess whether the default date format
+ * uses day/month or month/day
+ */
+gboolean
+format_month_before_day (void)
+{
+#ifdef HAVE_LANGINFO_H
+	static gboolean month_first = TRUE;
+
+	if (!date_order_cached) {
+		char const *ptr = nl_langinfo (D_FMT);
+
+		date_order_cached = TRUE;
+		month_first = TRUE;
+		if (ptr)
+			while (*ptr) {
+				char c = *ptr++;
+				if (c == 'd' || c == 'D') {
+					month_first = FALSE;
+					break;
+				} else if (c == 'm' || c == 'M')
+					break;
+			}
+	}
+
+	return month_first;
+#elif defined(G_OS_WIN32)
+	TCHAR str[2];
+
+	GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_IDATE, str, 2);
+
+	return str[0] != L'1';
+#else
+	static gboolean warning = TRUE;
+	if (warning) {
+		g_warning ("Incomplete locale library, dates will be month day year");
+		warning = FALSE;
+	}
+	return TRUE;
+#endif
+}
+
+/* Use comma as the arg separator unless the decimal point is a
+ * comma, in which case use a semi-colon
+ */
+char
+format_get_arg_sep (void)
+{
+	if (format_get_decimal ()->str[0] == ',')
+		return ';';
+	return ',';
+}
+
+char
+format_get_col_sep (void)
+{
+	if (format_get_decimal ()->str[0] == ',')
+		return '\\';
+	return ',';
+}
+
+char
+format_get_row_sep (void)
+{
+	return ';';
+}
+
+char const *
+format_boolean (gboolean b)
+{
+	if (!boolean_cached) {
+		lc_TRUE = _("TRUE");
+		lc_FALSE = _("FALSE");
+		boolean_cached = TRUE;
+	}
+	return b ? lc_TRUE : lc_FALSE;
+}
+
+/**
+ * go_set_untranslated_bools :
+ * 
+ * Short circuit the current locale so that we can import files
+ * and still produce error messages in the current LC_MESSAGE
+ **/
+void
+go_set_untranslated_bools (void)
+{
+	lc_TRUE = "TRUE";
+	lc_FALSE = "FALSE";
+	boolean_cached = TRUE;
+}
+
+/***************************************************************************/
+
+/* WARNING : Global */
+static GHashTable *style_format_hash = NULL;
+
+/*
+ * The returned string is newly allocated.
+ *
+ * Current format is an optional date specification followed by an
+ * optional number specification.
+ *
+ * A date specification is an arbitrary sequence of characters (other
+ * than '#', '0', '?', or '.') which is copied to the output.  The
+ * standard date fields are substituted for.  If it ever finds an a or
+ * a p it lists dates in 12 hour time, otherwise, it lists dates in 24
+ * hour time.
+ *
+ * A number specification is as described in the relevant portions of
+ * the excel formatting information.  Commas can currently only appear
+ * at the end of the number specification.  Fractions are supported
+ * but the parsing is not as nice as it should be.
+ */
+
+
+/*
+ * Parses the year field at the beginning of the format.  Returns the
+ * number of characters used.
+ */
+static int
+append_year (GString *string, gchar const *format, struct tm const *time_split)
+{
+	int year = time_split->tm_year + 1900;
+
+	if (format[1] != 'y' && format[1] != 'Y') {
+		g_string_append_c (string, 'y');
+		return 1;
+	}
+
+	if ((format[2] != 'y' && format[2] != 'Y') ||
+	    (format[3] != 'y' && format[3] != 'Y')) {
+		g_string_append_printf (string, "%02d", year % 100);
+		return 2;
+	}
+
+	g_string_append_printf (string, "%04d", year);
+	return 4;
+}
+
+/*
+ * Parses the month field at the beginning of the format.  Returns the
+ * number of characters used.
+ */
+static int
+append_month (GString *string, int n, struct tm const *time_split)
+{
+	int month = time_split->tm_mon + 1;
+
+	if (n == 1) {
+		g_string_append_printf (string, "%d", month);
+		return 1;
+	}
+
+	if (n == 2) {
+		g_string_append_printf (string, "%02d", month);
+		return 2;
+	}
+
+	if (n == 3) {
+		g_string_append (string, _(month_short[month - 1]) + 1);
+		return 3;
+	}
+
+	if (n == 5) {
+		g_string_append_c (string, _(month_short[month - 1])[1]);
+		return 5;
+	}
+	g_string_append (string, _(month_long[month - 1]));
+	return 4;
+}
+
+/*
+ * Parses the day field at the beginning of the format.  Returns the
+ * number of characters used.
+ */
+static int
+append_day (GString *string, gchar const *format, struct tm const *time_split)
+{
+	if (format[1] != 'd' && format[1] != 'D') {
+		g_string_append_printf (string, "%d", time_split->tm_mday);
+		return 1;
+	}
+
+	if (format[2] != 'd' && format[2] != 'D') {
+		g_string_append_printf (string, "%02d", time_split->tm_mday);
+		return 2;
+	}
+
+	if (format[3] != 'd' && format[3] != 'D') {
+		/* Note: day-of-week.  */
+		g_string_append (string, _(day_short[time_split->tm_wday]) + 1);
+		return 3;
+	}
+
+	/* Note: day-of-week.  */
+	g_string_append (string, _(day_long[time_split->tm_wday]));
+	return 4;
+}
+
+static void
+append_hour (GString *string, int n, struct tm const *time_split,
+	     gboolean want_am_pm)
+{
+	int hour = time_split->tm_hour;
+
+	g_string_append_printf (string, "%0*d", MIN (n, 2),
+				(want_am_pm || (n > 2))
+				? ((hour + 11) % 12) + 1
+				: hour);
+}
+#endif
+
+static void
+SUFFIX(append_hour_elapsed) (GString *string, struct tm *tm, DOUBLE number)
+{
+	DOUBLE whole_days, frac_days;
+	gboolean is_neg;
+	int cs;  /* Centi seconds.  */
+	int const secs_per_day = 24 * 60 * 60;
+
+	is_neg = (number < 0);
+	frac_days = SUFFIX(modf) (number, &whole_days);
+
+	/* ick.  round assuming no more than 100th of a second, we really need
+	 * to know the precision earlier */
+	cs = (int)SUFFIX(go_fake_round) (SUFFIX(fabs) (frac_days) * secs_per_day * 100);
+
+	/* FIXME: Why limit hours to int? */
+	cs /= 100;
+	tm->tm_sec = cs % 60;
+	cs /= 60;
+	tm->tm_min = cs % 60;
+	cs /= 60;
+	tm->tm_hour = (is_neg ? -cs : cs) + (int)(whole_days * 24);
+
+	g_string_append_printf (string, "%d", tm->tm_hour);
+}
+
+#ifdef DEFINE_COMMON
+static void
+append_minute (GString *string, int n, struct tm const *time_split)
+{
+	g_string_append_printf (string, "%0*d", n, time_split->tm_min);
+}
+#endif
+
+static void
+SUFFIX(append_minute_elapsed) (GString *string, struct tm *tm, DOUBLE number)
+{
+	DOUBLE res, int_part;
+
+	res = SUFFIX(modf) (SUFFIX(go_fake_round) (number * 24. * 60.), &int_part);
+	tm->tm_min = int_part;
+	tm->tm_sec = res * ((res < 0.) ? -60. : 60.);
+	g_string_append_printf (string, "%d", tm->tm_min);
+}
+
+#ifdef DEFINE_COMMON
+static void
+append_second (GString *string, int n, struct tm const *time_split)
+{
+	g_string_append_printf (string, "%0*d", n, time_split->tm_sec);
+}
+#endif
+
+static void
+SUFFIX(append_second_elapsed) (GString *string, DOUBLE number)
+{
+	g_string_append_printf (string, "%d",
+				(int) SUFFIX(go_fake_round) (number * 24. * 3600.));
+}
+
+#ifdef DEFINE_COMMON
+static GOFormatElement *
+format_entry_ctor (GOFormat *container)
+{
+	GOFormatElement *entry;
+
+	entry = g_new (GOFormatElement, 1);
+	entry->container = container;
+	entry->restriction_type = '*';
+	entry->restriction_value = 0.;
+	entry->suppress_minus = FALSE;
+	entry->forces_text = FALSE;
+	entry->elapsed_time = FALSE;
+	entry->want_am_pm = entry->has_fraction = FALSE;
+	entry->go_color = 0;
+	entry->regexp_str = NULL;
+	entry->match_tags = NULL;
+
+	/* symbolic failure */
+	g_return_val_if_fail (container != NULL, entry);
+
+	return entry;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/* WARNING : do not call this for temporary formats generated for 'General' */
+static void
+format_entry_dtor (gpointer data, gpointer user_data)
+{
+	GOFormatElement *entry = data;
+	format_match_release (entry);
+	g_free ((char *)entry->format);
+	g_free (entry);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static void
+format_entry_set_fmt (GOFormatElement *entry,
+		      gchar const *begin,
+		      gchar const *end)
+{
+	/* empty formats are General if there is a color, or a condition */
+	entry->format = (begin != NULL && end != begin)
+		? g_strndup (begin, end - begin)
+		: g_strdup ((entry->go_color || entry->restriction_type != '*')
+			    ? "General" : "");
+	format_match_create (entry);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/*
+ * Since the Excel formating codes contain a number of ambiguities, this
+ * routine does some analysis on the format first.  This routine should always
+ * return, it cannot fail, in the worst case it should just downgrade to
+ * simplistic formatting
+ */
+static void
+format_compile (GOFormat *format)
+{
+	gchar const *fmt, *real_start = NULL;
+	GOFormatElement *entry = format_entry_ctor (format);
+	int num_entries = 1, counter = 0;
+	GSList *ptr;
+
+	for (fmt = format->format; *fmt ; fmt++) {
+		if (NULL == real_start && '[' != *fmt)
+			real_start = fmt;
+
+		switch (*fmt) {
+		case '[': {
+			gchar const *begin = fmt + 1;
+			gchar const *end = begin;
+
+			/* find end checking for escapes but not quotes ?? */
+			for (; end[0] != ']' && end[1] != '\0' ; ++end)
+				if (*end == '\\')
+					end++;
+
+			/* Check for conditional */
+			if (*begin == '<') {
+				if (begin[1] == '=') {
+					entry->restriction_type = ',';
+					begin += 2;
+				} else if (begin[1] == '>') {
+					entry->restriction_type = '+';
+					begin += 2;
+				} else {
+					entry->restriction_type = '<';
+					begin++;
+				}
+			} else if (*begin == '>') {
+				if (begin[1] == '=') {
+					entry->restriction_type = '.';
+					begin += 2;
+				} else {
+					entry->restriction_type = '>';
+					begin++;
+				}
+			} else if (*begin == '=') {
+				entry->restriction_type = '=';
+			} else {
+				if (begin[1] == ']' &&
+				    (*begin == 'h' || *begin == 'H' ||
+				     *begin == 'm' || *begin == 'M' ||
+				     *begin == 's' || *begin == 'S'))
+					entry->elapsed_time = TRUE;
+				else if (*begin != '$' && entry->go_color == 0) {
+					entry->go_color = lookup_color (begin, end);
+					/* Only the first colour counts */
+					if (0 != entry->go_color) {
+						fmt = end;
+						continue;
+					}
+				}
+				if (NULL == real_start)
+					real_start = fmt;
+				continue;
+			}
+			fmt = end;
+
+			/* fall back on 0 for errors */
+			errno = 0;
+			entry->restriction_value = STRTO (begin, (char **)&end);
+			if (errno == ERANGE || begin == end)
+				entry->restriction_value = 0.;
+
+			/* this is a guess based on checking the results of
+			 * 0.00;[<0]0.00
+			 * 0.00;[<=0]0.00
+			 *
+			 * for -1.2.3
+			 **/
+			else if (entry->restriction_type == '<')
+				entry->suppress_minus = (entry->restriction_value <= 0.);
+			else if (entry->restriction_type == ',')
+				entry->suppress_minus = (entry->restriction_value < 0.);
+			break;
+		}
+
+		case '\\' :
+			if (fmt[1] != '\0')
+				fmt++; /* skip escaped characters */
+			break;
+
+		case '\'' :
+		case '\"' : {
+			/* skip quoted strings */
+			char const match = *fmt;
+			for (; fmt[0] != match && fmt[1] != '\0'; fmt++)
+				if (*fmt == '\\')
+					fmt++;
+			break;
+		}
+
+		case '/':
+			if (fmt[1] == '?' || (fmt[1] >= '0' && fmt[1] <= '9')) {
+				entry->has_fraction = TRUE;
+				fmt++;
+			}
+			break;
+
+		case 'a': case 'A':
+		case 'p': case 'P':
+			if (fmt[1] == 'm' || fmt[1] == 'M')
+				entry->want_am_pm = TRUE;
+			break;
+
+		case 'M': case 'm':
+		case 'D': case 'd':
+		case 'Y': case 'y':
+		case 'S': case 's':
+		case 'H': case 'h':
+			if (!entry->suppress_minus && !entry->elapsed_time)
+				entry->suppress_minus = TRUE;
+			break;
+
+		case '@':
+			entry->forces_text = TRUE;
+			break;
+
+		case ';':
+			format_entry_set_fmt (entry, real_start, fmt);
+			format->entries = g_slist_append (format->entries, entry);
+			num_entries++;
+
+			entry = format_entry_ctor (format);
+			real_start = NULL;
+			break;
+
+		case '*':
+			if (fmt != format->format)
+				format->is_var_width = TRUE;
+			break;
+
+		default :
+			break;
+		}
+	}
+
+	format_entry_set_fmt (entry, real_start, fmt);
+	format->entries = g_slist_append (format->entries, entry);
+
+	for (ptr = format->entries; ptr && counter++ < 4 ; ptr = ptr->next) {
+		GOFormatElement *entry = ptr->data;
+
+		/* apply the standard restrictions where things are unspecified */
+		if (entry->restriction_type == '*') {
+			entry->restriction_value = 0.;
+			switch (counter) {
+			case 1 : entry->restriction_type = (num_entries > 2) ? '>' : '.';
+				 break;
+			case 2 : entry->restriction_type = '<'; break;
+			case 3 : entry->restriction_type = '='; break;
+			case 4 : entry->restriction_type = '@'; break;
+			default :
+				 break;
+			}
+		}
+	}
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/*
+ * This routine is invoked when the last user of the
+ * format is gone (ie, refcount has reached zero) just
+ * before the GOFormat structure is actually released.
+ *
+ * resources allocated in format_compile should be disposed here
+ */
+static void
+format_destroy (GOFormat *format)
+{
+	g_slist_foreach (format->entries, &format_entry_dtor, NULL);
+	g_slist_free (format->entries);
+	format->entries = NULL;
+	if (format->markup != NULL) {
+		pango_attr_list_unref (format->markup);
+		format->markup = NULL;
+	}
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/* used to generate formats when delocalizing so keep the leadings caps */
+typedef struct {
+	char const *name;
+	GOColor	 go_color;
+} FormatColor;
+static FormatColor const format_colors [] = {
+	{ N_("Black"),	 RGBA_BLACK },
+	{ N_("Blue"),	 RGBA_BLUE },
+	{ N_("Cyan"),	 RGBA_CYAN },
+	{ N_("Green"),	 RGBA_GREEN },
+	{ N_("Magenta"), RGBA_VIOLET },
+	{ N_("Red"),	 RGBA_RED },
+	{ N_("White"),	 RGBA_WHITE },
+	{ N_("Yellow"),	 RGBA_YELLOW }
+};
+#endif
+
+#ifdef DEFINE_COMMON
+static FormatColor const *
+lookup_color_by_name (gchar const *str, gchar const *end,
+		      gboolean translate)
+{
+	int i, len;
+
+	len = end - str;
+	for (i = G_N_ELEMENTS (format_colors) ; i-- > 0 ; ) {
+		gchar const *name = format_colors[i].name;
+		if (translate)
+			name = _(name);
+
+		if (0 == g_ascii_strncasecmp (name, str, len) && name[len] == '\0')
+			return format_colors + i;
+	}
+	return NULL;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static GOColor
+lookup_color (gchar const *str, gchar const *end)
+{
+	FormatColor const *color = lookup_color_by_name (str, end, FALSE);
+	return (color != NULL) ? color->go_color : 0;
+}
+#endif
+
+void
+SUFFIX(go_render_number) (GString *result,
+			  DOUBLE number,
+			  GONumberFormat const *info)
+{
+	GString const *thousands_sep = format_get_thousand ();
+	char num_buf[(PREFIX(MANT_DIG) + PREFIX(MAX_EXP)) * 2 + 1];
+	gchar *num = num_buf + sizeof (num_buf) - 1;
+	DOUBLE frac_part, int_part;
+	int group, zero_count, digit_count = 0;
+	int left_req = info->left_req;
+	int right_req = info->right_req;
+	int left_spaces = info->left_spaces;
+	int right_spaces = info->right_spaces;
+	int right_allowed = info->right_allowed + info->right_optional;
+	int sigdig = 0;
+
+	number = SUFFIX(go_add_epsilon) (number);
+
+	if (right_allowed >= 0 && !info->has_fraction) {
+		/* Change "rounding" into "truncating".   */
+		/* Note, that we assume number >= 0 here. */
+		DOUBLE delta = 5 * SUFFIX(go_pow10) (-right_allowed - 1);
+		number += delta;
+	}
+	frac_part = SUFFIX(modf) (number, &int_part);
+
+	*num = '\0';
+	group = (info->group_thousands) ? 3 : -1;
+	for (; int_part > SUFFIX(beyond_precision) ; int_part /= 10., digit_count++) {
+		if (group-- == 0) {
+			int i;
+			group = 2;
+			for (i = thousands_sep->len - 1; i >= 0; i--)
+				*(--num) = thousands_sep->str[i];
+		}
+		*(--num) = '0';
+		sigdig++;
+	}
+
+	for (; int_part >= 1. ; int_part /= 10., digit_count++) {
+		DOUBLE r = SUFFIX(floor) (int_part);
+		int digit = r - SUFFIX(floor) (r / 10) * 10;
+
+		if (group-- == 0) {
+			int i;
+			group = 2;
+			for (i = thousands_sep->len - 1; i >= 0; i--)
+				*(--num) = thousands_sep->str[i];
+		}
+		*(--num) = digit + '0';
+		sigdig++;
+	}
+
+	if (left_req > digit_count) {
+		for (left_spaces -= left_req ; left_spaces-- > 0 ;)
+			g_string_append_c (result, ' ');
+		for (left_req -= digit_count ; left_req-- > 0 ;)
+			g_string_append_c (result, '0');
+	}
+
+	g_string_append_len (result, num, num_buf + sizeof (num_buf) - 1 - num);
+
+	/* If the format contains only "#"s to the left of the decimal
+	 * point, number in the [0.0,1.0] range are prefixed with a
+	 * decimal point
+	 */
+	if (info->decimal_separator_seen ||
+	    (number > 0.0 &&
+	     number < 1.0 &&
+	     info->right_allowed == 0 &&
+	     info->right_optional > 0))
+		go_string_append_gstring (result, format_get_decimal ());
+
+	/* TODO : clip this a DBL_DIG */
+	/* TODO : What if is a fraction ? */
+	right_allowed -= right_req;
+	right_spaces  -= right_req;
+	while (right_req-- > 0) {
+		gint digit;
+		frac_part *= 10.0;
+		digit = (gint)frac_part;
+		frac_part -= digit;
+		if (++sigdig > PREFIX(DIG)) digit = 0;
+		g_string_append_c (result, digit + '0');
+	}
+
+	zero_count = 0;
+
+	while (right_allowed-- > 0) {
+		gint digit;
+		frac_part *= 10.0;
+		digit = (gint)frac_part;
+		frac_part -= digit;
+
+		if (++sigdig > PREFIX(DIG)) digit = 0;
+
+		if (digit != 0) {
+			right_spaces -= zero_count + 1;
+			zero_count = 0;
+		} else
+			zero_count ++;
+
+		g_string_append_c (result, digit + '0');
+	}
+
+	g_string_truncate (result, result->len - zero_count);
+
+	while (right_spaces-- > 0)
+		g_string_append_c (result, ' ');
+}
+
+static void
+SUFFIX(do_render_number) (DOUBLE number, GONumberFormat *info, GString *result)
+{
+	info->rendered = TRUE;
+
+#if 0
+	printf ("Rendering: %g with:\n", number);
+	printf ("left_req:    %d\n"
+		"right_req:   %d\n"
+		"left_spaces: %d\n"
+		"right_spaces:%d\n"
+		"right_allow: %d\n"
+		"supress:     %d\n"
+		"decimalseen: %d\n"
+		"decimalp:    %s\n",
+		info->left_req,
+		info->right_req,
+		info->left_spaces,
+		info->right_spaces,
+		info->right_allowed + info->right_optional,
+		info->decimal_separator_seen,
+		decimal_point);
+#endif
+
+	SUFFIX(go_render_number) (result, info->scale * number, info);
+}
+
+/*
+ * Microsoft Excel has a bug in the handling of year 1900,
+ * I quote from http://catless.ncl.ac.uk/Risks/19.64.html#subj9.1
+ *
+ * > Microsoft EXCEL version 6.0 ("Office 95 version") and version 7.0 ("Office
+ * > 97 version") believe that year 1900 is a leap year.  The extra February 29
+ * > cause the following problems.
+ * >
+ * > 1)  All day-of-week before March 1, 1900 are incorrect;
+ * > 2)  All date sequence (serial number) on and after March 1, 1900 are incorrect.
+ * > 3)  Calculations of number of days across March 1, 1900 are incorrect.
+ * >
+ * > The risk of the error will cause must be little.  Especially case 1.
+ * > However, import or export date using serial date number will be a problem.
+ * > If no one noticed anything wrong, it must be that no one did it that way.
+ */
+static gboolean
+SUFFIX(split_time) (struct tm *tm, DOUBLE number, GODateConventions const *date_conv)
+{
+	guint secs;
+	GDate date;
+
+	datetime_serial_to_g (&date,
+		datetime_serial_raw_to_serial (number), date_conv);
+	g_date_to_struct_tm (&date, tm);
+
+	secs = datetime_serial_raw_to_seconds (number);
+	tm->tm_hour = secs / 3600;
+	secs -= tm->tm_hour * 3600;
+	tm->tm_min  = secs / 60;
+	secs -= tm->tm_min * 60;
+	tm->tm_sec  = secs;
+
+	return FALSE;
+}
+
+#ifdef DEFINE_COMMON
+#define NUM_ZEROS 30
+static char const zeros[NUM_ZEROS + 1]  = "000000000000000000000000000000";
+static char const qmarks[NUM_ZEROS + 1] = "??????????????????????????????";
+#endif
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_as_number :
+ * @fmt : #GOFormatDetails
+ *
+ * generate an unlocalized number format based on @fmt.
+ **/
+static GOFormat *
+go_format_as_number (GOFormatDetails const *fmt)
+{
+	int symbol = fmt->currency_symbol_index;
+	GString *str, *tmp;
+	GOFormat *gf;
+
+	g_return_val_if_fail (fmt->num_decimals >= 0, NULL);
+	g_return_val_if_fail (fmt->num_decimals <= NUM_ZEROS, NULL);
+
+	str = g_string_new (NULL);
+
+	/* Currency */
+	if (symbol != 0 && go_format_currencies[symbol].precedes) {
+		g_string_append (str, go_format_currencies[symbol].symbol);
+		if (go_format_currencies[symbol].has_space)
+			g_string_append_c (str, ' ');
+	}
+
+	if (fmt->thousands_sep)
+		g_string_append (str, "#,##0");
+	else
+		g_string_append_c (str, '0');
+
+	if (fmt->num_decimals > 0) {
+		g_string_append_c (str, '.');
+		g_string_append_len (str, zeros, fmt->num_decimals);
+	}
+
+	/* Currency */
+	if (symbol != 0 && !go_format_currencies[symbol].precedes) {
+		if (go_format_currencies[symbol].has_space)
+			g_string_append_c (str, ' ');
+		g_string_append (str, go_format_currencies[symbol].symbol);
+	}
+
+	/* There are negatives */
+	if (fmt->negative_fmt > 0) {
+		size_t prelen = str->len;
+
+		switch (fmt->negative_fmt) {
+		case 1 : g_string_append (str, ";[Red]");
+			break;
+		case 2 : g_string_append (str, "_);(");
+			break;
+		case 3 : g_string_append (str, "_);[Red](");
+			break;
+		default :
+			g_assert_not_reached ();
+		};
+
+		tmp = g_string_new_len (str->str, str->len);
+		g_string_append_len (tmp, str->str, prelen);
+		g_string_free (str, TRUE);
+		str = tmp;
+
+		if (fmt->negative_fmt >= 2)
+			g_string_append_c (str, ')');
+	}
+
+	gf = go_format_new_from_XL (str->str, FALSE);
+	g_string_free (str, TRUE);
+	return gf;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static GOFormat *
+style_format_fraction (GOFormatDetails const *fmt)
+{
+	GString *str = g_string_new (NULL);
+	GOFormat *gf;
+
+	if (fmt->fraction_denominator >= 2) {
+		g_string_printf (str, "# ?/%d", fmt->fraction_denominator);
+	} else {
+		g_return_val_if_fail (fmt->num_decimals > 0, NULL);
+		g_return_val_if_fail (fmt->num_decimals <= NUM_ZEROS, NULL);
+
+		g_string_append (str, "# ");
+		g_string_append_len (str, qmarks, fmt->num_decimals);
+		g_string_append_c (str, '/');
+		g_string_append_len (str, qmarks, fmt->num_decimals);
+	}
+
+	gf = go_format_new_from_XL (str->str, FALSE);
+	g_string_free (str, TRUE);
+	return gf;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static GOFormat *
+go_format_as_percentage (GOFormatDetails const *fmt)
+{
+	GString *str;
+	GOFormat *gf;
+
+	g_return_val_if_fail (fmt->num_decimals >= 0, NULL);
+	g_return_val_if_fail (fmt->num_decimals <= NUM_ZEROS, NULL);
+
+	str = g_string_new (NULL);
+	g_string_append_c (str, '0');
+	if (fmt->num_decimals > 0) {
+		g_string_append_c (str, '.');
+		g_string_append_len (str, zeros, fmt->num_decimals);
+	}
+	g_string_append_c (str, '%');
+
+	gf = go_format_new_from_XL (str->str, FALSE);
+	g_string_free (str, TRUE);
+	return gf;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static GOFormat *
+go_format_as_scientific (GOFormatDetails const *fmt)
+{
+	GString *str;
+	GOFormat *gf;
+
+	g_return_val_if_fail (fmt->num_decimals >= 0, NULL);
+	g_return_val_if_fail (fmt->num_decimals <= NUM_ZEROS, NULL);
+
+	str = g_string_new (NULL);
+	g_string_append_c (str, '0');
+	if (fmt->num_decimals > 0) {
+		g_string_append_c (str, '.');
+		g_string_append_len (str, zeros, fmt->num_decimals);
+	}
+	g_string_append (str, "E+00");
+
+	gf = go_format_new_from_XL (str->str, FALSE);
+	g_string_free (str, TRUE);
+	return gf;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static GOFormat *
+go_format_as_account (GOFormatDetails const *fmt)
+{
+	GString *str, *sym, *num;
+	GOFormat *gf;
+	int symbol = fmt->currency_symbol_index;
+	gboolean quote_currency;
+
+	g_return_val_if_fail (fmt->num_decimals >= 0, NULL);
+	g_return_val_if_fail (fmt->num_decimals <= NUM_ZEROS, NULL);
+
+	str = g_string_new (NULL);
+	/* The number with decimals */
+	num = g_string_new ("#,##0");
+	if (fmt->num_decimals > 0) {
+		g_string_append_c (num, '.');
+		g_string_append_len (num, zeros, fmt->num_decimals);
+	}
+
+	/* The currency symbols with space after or before */
+	sym = g_string_new (NULL);
+	quote_currency = (go_format_currencies[symbol].symbol[0] != '[');
+	if (go_format_currencies[symbol].precedes) {
+		if (quote_currency)
+			g_string_append_c (sym, '\"');
+		g_string_append (sym, go_format_currencies[symbol].symbol);
+		if (quote_currency)
+			g_string_append_c (sym, '\"');
+		g_string_append (sym, "* ");
+		if (go_format_currencies[symbol].has_space)
+			g_string_append_c (sym, ' ');
+	} else {
+		g_string_append (sym, "* ");
+		if (go_format_currencies[symbol].has_space)
+			g_string_append_c (sym, ' ');
+		if (quote_currency)
+			g_string_append_c (sym, '\"');
+		g_string_append (sym, go_format_currencies[symbol].symbol);
+		if (quote_currency)
+			g_string_append_c (sym, '\"');
+	}
+
+	/* Finally build the correct string */
+	if (go_format_currencies[symbol].precedes) {
+		g_string_append_printf (str, "_(%s%s_);_(%s(%s);_(%s\"-\"%s_);_(@_)",
+					sym->str, num->str,
+					sym->str, num->str,
+					sym->str, (qmarks + NUM_ZEROS) - fmt->num_decimals);
+	} else {
+		g_string_append_printf (str, "_(%s%s_);_((%s)%s;_(\"-\"%s%s_);_(@_)",
+					num->str, sym->str,
+					num->str, sym->str,
+					(qmarks + NUM_ZEROS) - fmt->num_decimals, sym->str);
+	}
+
+	g_string_free (num, TRUE);
+	g_string_free (sym, TRUE);
+
+	gf = go_format_new_from_XL (str->str, FALSE);
+	g_string_free (str, TRUE);
+	return gf;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/*
+ * Finds the decimal char in @str doing the proper parsing of a
+ * format string
+ */
+static char const *
+find_decimal_char (char const *str)
+{
+	for (;*str; str++){
+		if (*str == '.')
+			return str;
+
+		if (*str == ',')
+			continue;
+
+		switch (*str){
+			/* These ones do not have any argument */
+		case '#': case '?': case '0': case '%':
+		case '-': case '+': case ')': case '£':
+		case ':': case '$': case '¥': case '¤':
+		case 'M': case 'm': case 'D': case 'd':
+		case 'Y': case 'y': case 'S': case 's':
+		case '*': case 'h': case 'H': case 'A':
+		case 'a': case 'P': case 'p':
+			break;
+
+			/* Quoted string */
+		case '"':
+			for (str++; *str && *str != '"'; str++)
+				;
+			break;
+
+			/* Escaped char and spacing format */
+		case '\\': case '_':
+			if (*(str + 1))
+				str++;
+			break;
+
+			/* Scientific number */
+		case 'E': case 'e':
+			for (str++; *str;){
+				if (*str == '+')
+					str++;
+				else if (*str == '-')
+					str++;
+				else if (*str == '0')
+					str++;
+				else
+					break;
+			}
+		}
+	}
+	return NULL;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/* An helper function which modify the number of decimals displayed
+ * and recreate the format string by calling the good function */
+static GOFormat *
+reformat_decimals (GOFormatDetails const *fc,
+		   GOFormat * (*format_function) (GOFormatDetails const *fmt),
+		   int step)
+{
+	GOFormatDetails fc_copy;
+
+	/* Be sure that the number of decimals displayed will remain correct */
+	if ((fc->num_decimals+step > NUM_ZEROS) || (fc->num_decimals+step <0))
+		return NULL;
+	fc_copy = *fc;
+	fc_copy.num_decimals += step;
+
+	return (*format_function) (&fc_copy);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/*
+ * This routine scans the format_string for a decimal dot,
+ * and if it finds it, it removes the first zero after it to
+ * reduce the display precision for the number.
+ *
+ * Returns NULL if the new format would not change things
+ */
+GOFormat *
+go_format_dec_precision (GOFormat const *fmt)
+{
+	int start;
+	char *ret;
+	char const *format_string = fmt->format;
+
+	switch (fmt->family) {
+	case GO_FORMAT_NUMBER:
+	case GO_FORMAT_CURRENCY:
+		return reformat_decimals (&fmt->family_info, &go_format_as_number, -1);
+	case GO_FORMAT_ACCOUNTING:
+		return reformat_decimals (&fmt->family_info, &go_format_as_account, -1);
+	case GO_FORMAT_PERCENTAGE:
+		return reformat_decimals (&fmt->family_info, &go_format_as_percentage, -1);
+	case GO_FORMAT_SCIENTIFIC:
+		return reformat_decimals (&fmt->family_info, &go_format_as_scientific, -1);
+	case GO_FORMAT_FRACTION: {
+		GOFormatDetails fc = fmt->family_info;
+
+		if (fc.fraction_denominator >= 2) {
+			if (fc.fraction_denominator > 2 &&
+			    ((fc.fraction_denominator & (fc.fraction_denominator - 1)) == 0))
+				/* It's a power of two.  */
+				fc.fraction_denominator /= 2;
+			else if (fc.fraction_denominator > 10 &&
+				 fc.fraction_denominator % 10 == 0)
+				/* It's probably a power of ten.  */
+				fc.fraction_denominator /= 10;
+			else
+				return NULL;
+		} else {
+			if (fc.num_decimals <= 1)
+				return NULL;
+			fc.num_decimals--;
+		}
+		return style_format_fraction (&fc);
+	}
+
+	case GO_FORMAT_TIME:
+		/* FIXME: we might have decimals on seconds part.  */
+	case GO_FORMAT_DATE:
+	case GO_FORMAT_TEXT:
+	case GO_FORMAT_SPECIAL:
+	case GO_FORMAT_MARKUP:
+		/* Nothing to remove for these formats ! */
+		return NULL;
+	case GO_FORMAT_UNKNOWN:
+	case GO_FORMAT_GENERAL:
+		; /* Nothing.  */
+	}
+
+	/* Use the old code for more special formats to try to remove a
+	   decimal */
+
+	/*
+	 * Consider General format as 0. with several optional decimal places.
+	 * This is WRONG.  FIXME FIXME FIXME
+	 * We need to look at the number of decimals in the current value
+	 * and use that as a base.
+	 */
+	if (go_format_is_general (fmt))
+		format_string = "0.########";
+
+	start = 0;
+	ret = g_strdup (format_string);
+	while (1) {
+		char *p = (char *)find_decimal_char (ret + start);
+		int offset;
+
+		if (!p)
+			break;
+
+		/* If there is more than 1 thing after the decimal place
+		 * leave the decimal.
+		 * If there is only 1 thing after the decimal remove the decimal too.
+		 */
+		if ((p[1] == '0' || p[1] == '#') && (p[2] == '0' || p[2] == '#'))
+			offset = 1, ++p;
+		else
+			offset = 2;
+
+		strcpy (p, p + offset);
+
+		start = (p + 1) - ret;
+	}
+
+	if (start) {
+		GOFormat *gf = go_format_new_from_XL (ret, FALSE);
+		g_free (ret);
+		return gf;
+	} else {
+		g_free (ret);
+		return NULL;
+	}
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_inc_precision :
+ * @fmt : #GOFormat
+ * Scans @fmt for the decimal character and when it finds it, it adds a zero
+ * after it to force the rendering of the number with one more digit of decimal
+ * precision.
+ *
+ * Returns NULL if the new format would not change things
+ **/
+GOFormat *
+go_format_inc_precision (GOFormat const *fmt)
+{
+	char const *pre = NULL;
+	char const *post = NULL;
+	char *res;
+	char const *format_string = fmt->format;
+	GOFormat *gf;
+
+	switch (fmt->family) {
+	case GO_FORMAT_NUMBER:
+	case GO_FORMAT_CURRENCY:
+		return reformat_decimals (&fmt->family_info, &go_format_as_number, +1);
+	case GO_FORMAT_ACCOUNTING:
+		return reformat_decimals (&fmt->family_info, &go_format_as_account, +1);
+	case GO_FORMAT_PERCENTAGE:
+		return reformat_decimals (&fmt->family_info, &go_format_as_percentage, +1);
+	case GO_FORMAT_SCIENTIFIC:
+		return reformat_decimals (&fmt->family_info, &go_format_as_scientific, +1);
+	case GO_FORMAT_FRACTION: {
+		GOFormatDetails fc = fmt->family_info;
+
+		if (fc.fraction_denominator >= 2) {
+			if (fc.fraction_denominator <= INT_MAX / 2 &&
+			    ((fc.fraction_denominator & (fc.fraction_denominator - 1)) == 0))
+				/* It's a power of two.  */
+				fc.fraction_denominator *= 2;
+			else if (fc.fraction_denominator <= INT_MAX / 10 &&
+				 fc.fraction_denominator % 10 == 0)
+				/* It's probably a power of ten.  */
+				fc.fraction_denominator *= 10;
+			else
+				return NULL;
+		} else {
+			if (fc.num_decimals >= 5)
+				return NULL;
+			fc.num_decimals++;
+		}
+		return style_format_fraction (&fc);
+	}
+
+	case GO_FORMAT_TIME:
+		/* FIXME: we might have decimals on seconds part.  */
+	case GO_FORMAT_DATE:
+	case GO_FORMAT_TEXT:
+	case GO_FORMAT_SPECIAL:
+	case GO_FORMAT_MARKUP:
+		/* Nothing to add for these formats ! */
+		return NULL;
+	case GO_FORMAT_UNKNOWN:
+	case GO_FORMAT_GENERAL:
+		; /* Nothing.  */
+	}
+
+	/* Use the old code for more special formats to try to add a
+	   decimal */
+
+	if (go_format_is_general (fmt)) {
+		format_string = "0";
+		pre = format_string + 1;
+		post = pre;
+	} else {
+		pre = find_decimal_char (format_string);
+
+		/* If there is no decimal append to the last '0' */
+		if (pre == NULL) {
+			pre = strrchr (format_string, '0');
+
+			/* If there are no 0s append to the ':s' */
+			if (pre == NULL) {
+				pre = strrchr (format_string, 's');
+				if (pre > format_string && pre[-1] == ':') {
+					if (pre[1] == 's')
+						pre += 2;
+					else
+						++pre;
+				} else
+					return NULL;
+			} else
+				++pre;
+			post = pre;
+		} else
+			post = pre + 1;
+	}
+	res = g_malloc ((pre - format_string + 1) +
+		      1 + /* for the decimal */
+		      1 + /* for the extra 0 */
+		      strlen (post) +
+		      1 /*terminate */);
+	if (!res)
+		return NULL;
+
+	strncpy (res, format_string, pre - format_string);
+	res[pre-format_string + 0] = '.';
+	res[pre-format_string + 1] = '0';
+	strcpy (res + (pre - format_string) + 2, post);
+
+	gf = go_format_new_from_XL (res, FALSE);
+	g_free (res);
+	return gf;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_toggle_1000sep (GOFormat const *fmt)
+{
+	GOFormatDetails fc;
+
+	fc = fmt->family_info;
+	fc.thousands_sep = !fc.thousands_sep;
+
+	switch (fmt->family) {
+	case GO_FORMAT_NUMBER:
+	case GO_FORMAT_CURRENCY:
+		return go_format_as_number (&fc);
+
+	case GO_FORMAT_ACCOUNTING:
+		/*
+		 * FIXME: this doesn't actually work as no 1000 seps
+		 * are used for accounting.
+		 */
+		return go_format_as_account (&fc);
+	case GO_FORMAT_GENERAL:
+		fc.currency_symbol_index = 0;
+		return go_format_as_number (&fc);
+
+	default:
+		break;
+	}
+
+	return NULL;
+}
+#endif
+
+/*********************************************************************/
+
+void
+SUFFIX(go_format_number) (GString *result,
+			  DOUBLE number, int col_width, GOFormatElement const *entry,
+			  GODateConventions const *date_conv)
+{
+	gchar const *format = entry->format;
+	GONumberFormat info;
+	gboolean can_render_number = FALSE;
+	gboolean hour_seen = FALSE;
+	gboolean time_display_elapsed = FALSE;
+	gboolean ignore_further_elapsed = FALSE;
+
+	gunichar fill_char = 0;
+	int fill_start = -1;
+
+	gboolean need_time_split = TRUE;
+	struct tm tm;
+	DOUBLE signed_number;
+
+	memset (&info, 0, sizeof (info));
+	signed_number = number;
+	if (number < 0.) {
+		number = -number;
+		if (!entry->suppress_minus)
+			g_string_append_c (result, '-');
+	}
+	info.has_fraction = entry->has_fraction;
+	info.scale = 1;
+
+	while (*format) {
+		/* This is just g_utf8_get_char, but we're in a hurry.  */
+		gunichar c = (*format & 0x80) ? g_utf8_get_char (format) : *(guchar *)format;
+
+		switch (c) {
+
+		case '[':
+			/* Currency symbol */
+			if (format[1] == '$') {
+				gboolean no_locale = TRUE;
+				for (format += 2; *format && *format != ']' ; ++format)
+					/* strip digits from [$<currency>-{digit}+] */
+					if (*format == '-')
+						no_locale = FALSE;
+					else if (no_locale)
+						g_string_append_c (result, *format);
+				if (!*format)
+					continue;
+			} else if (!ignore_further_elapsed)
+				time_display_elapsed = TRUE;
+			break;
+
+		case '#':
+			can_render_number = TRUE;
+			if (info.decimal_separator_seen)
+				info.right_optional++;
+			break;
+
+		case '?':
+			can_render_number = TRUE;
+			if (info.decimal_separator_seen)
+				info.right_spaces++;
+			else
+				info.left_spaces++;
+			break;
+
+		case '0':
+			can_render_number = TRUE;
+			if (info.decimal_separator_seen){
+				info.right_req++;
+				info.right_allowed++;
+				info.right_spaces++;
+			} else {
+				info.left_spaces++;
+				info.left_req++;
+			}
+			break;
+
+		case '.': {
+			int c = *(format + 1);
+
+			can_render_number = TRUE;
+			if (0 && c && (c != '0' && c != '#' && c != '?'))
+				/*
+				 * Before reinstating this, look at format
+				 * "#,##0.\\-" with value 255.
+				 */
+				number /= 1000;
+			else
+				info.decimal_separator_seen = TRUE;
+			break;
+		}
+
+		case ',':
+			if (can_render_number) {
+				gchar const *tmp = format;
+				while (*++tmp == ',')
+					;
+				if (*tmp == '\0' || *tmp == '.' || *tmp == ';')
+					/* NOTE : format-tmp is NEGATIVE */
+					info.scale = SUFFIX(go_pow10) (3*(format-tmp));
+				info.group_thousands = TRUE;
+				format = tmp;
+				continue;
+			} else
+				go_string_append_gstring (result, format_get_thousand ());
+			break;
+
+		/* FIXME: this is a gross hack */
+		/* FIXME: Missing support for scientific notation.
+		 * #00.00e###  that keeps axponent to a multiple of 3
+		 * XL seems to just special case that.
+		 **/
+		case 'E': case 'e': {
+			gboolean const is_lower = (*format++ == 'e');
+			gboolean shows_plus = FALSE;
+			int prec = info.right_optional + info.right_req;
+
+			can_render_number = TRUE;
+			if (*format == '+') {
+				shows_plus = TRUE;
+				format++;
+			} else if (*format == '-')
+				format++;
+
+			while (*format == '0' || *format == '#')
+				format++;
+
+			g_string_append_printf (result,
+						is_lower ? "%.*" FORMAT_e : "%.*" FORMAT_E,
+						prec, number);
+			return;
+		}
+
+		case '\\':
+			if (format[1] != '\0') {
+				if (can_render_number && !info.rendered)
+					SUFFIX(do_render_number) (number, &info, result);
+
+				format++;
+				g_string_append_len (result, format,
+					g_utf8_skip[*(guchar *)format]);
+			}
+			break;
+
+		case '"': {
+			gchar const *tmp = ++format;
+			if (can_render_number && !info.rendered)
+				SUFFIX(do_render_number) (number, &info, result);
+
+			for (; *tmp && *tmp != '"'; tmp++)
+				;
+			g_string_append_len (result, format, tmp-format);
+			format = tmp;
+			if (!*format)
+				continue;
+			break;
+		}
+
+		case '/': /* fractions */
+			if (can_render_number && info.left_spaces > info.left_req) {
+				int size = 0;
+				int numerator = -1, denominator = -1;
+
+				while (format[size + 1] == '?')
+					++size;
+
+				/* check for explicit denominator */
+				if (size == 0) {
+					char *end;
+
+					errno = 0;
+					denominator = strtol ((char *)format + 1, &end, 10);
+					if (format + 1 != end && errno != ERANGE) {
+						size = end - (format + 1);
+						format = end;
+						numerator = (int)((number - (int)number) * denominator + 0.5);
+					}
+				} else {
+					static int const powers[9] = {
+						10, 100, 1000, 10000, 100000,
+						1000000, 10000000, 100000000, 1000000000
+					};
+
+					format += size + 1;
+					if (size > (int)G_N_ELEMENTS (powers))
+						size = G_N_ELEMENTS (powers);
+					go_continued_fraction (number - (int)number, powers[size - 1],
+						&numerator, &denominator);
+				}
+
+				if (denominator > 0) {
+					gboolean show_zero = TRUE;
+					/* improper fractions */
+					if (!info.rendered) {
+						info.rendered = TRUE;
+						numerator += ((int)number) * denominator;
+					} else
+						show_zero = (number == 0);
+
+					/*
+					 * FIXME: the space-aligning here doesn't come out
+					 * right except in mono-space fonts.
+					 */
+					if (numerator > 0 || show_zero) {
+						g_string_append_printf (result,
+									"%*d/%-*d",
+									info.left_spaces, numerator,
+									size, denominator);
+					} else {
+						g_string_append_printf (result,
+									"%-*s",
+									info.left_spaces + 1 + size,
+									"");
+					}
+					continue;
+				}
+			}
+
+		case '-':
+		case '(':
+		case '+':
+		case ':':
+		case ' ': /* eg # ?/? */
+		case '$':
+		case 0x00A3 : /* pound */
+		case 0x00A5 : /* yen */
+		case 0x20AC : /* Euro */
+		case ')':
+			if (can_render_number && !info.rendered)
+				SUFFIX(do_render_number) (number, &info, result);
+			g_string_append_unichar (result, c);
+			break;
+
+		/* percent */
+		case '%':
+			if (!info.rendered) {
+				number *= 100;
+				if (can_render_number)
+					SUFFIX(do_render_number) (number, &info, result);
+				else
+					can_render_number = TRUE;
+			}
+			g_string_append_c (result, '%');
+			break;
+
+		case '_':
+			if (can_render_number && !info.rendered)
+				SUFFIX(do_render_number) (number, &info, result);
+			if (format[1])
+				format++;
+			g_string_append_c (result, ' ');
+			break;
+
+		case '*':
+			/* Intentionally forget any previous fill characters
+			 * (no need to be smart).
+			 * FIXME : make the simplifying assumption that we are
+			 * not going to fill in the middle of a number.  This
+			 * assumption is WRONG! but ok until we rewrite the
+			 * format engine.
+			 */
+			if (format[1]) {
+				if (can_render_number && !info.rendered)
+					SUFFIX(do_render_number) (number, &info, result);
+				++format;
+				fill_char = g_utf8_get_char (format);
+				fill_start = result->len;
+			}
+			break;
+
+		case 'M':
+		case 'm': {
+			int n;
+
+			/* FIXME : Yuck
+			 * This is a problem waiting to happen.
+			 * rewrite.
+			 */
+			for (n = 1; format[1] == 'M' || format[1] == 'm'; format++)
+				n++;
+			if (format[1] == ']')
+				format++;
+			if (time_display_elapsed) {
+				need_time_split = time_display_elapsed = FALSE;
+				ignore_further_elapsed = TRUE;
+				SUFFIX(append_minute_elapsed) (result, &tm, number);
+				break;
+			}
+
+			if (need_time_split)
+				need_time_split = SUFFIX(split_time) (&tm, signed_number, date_conv);
+			if (hour_seen ||
+			    (format[1] == ':' &&
+			     (format[2] == 's' || format[2] == 'S'))) {
+				append_minute (result, n, &tm);
+			} else
+				append_month (result, n, &tm);
+			break;
+		}
+
+		case 'D':
+		case 'd':
+			if (need_time_split)
+				need_time_split = SUFFIX(split_time) (&tm, signed_number, date_conv);
+			format += append_day (result, format, &tm) - 1;
+			break;
+
+		case 'Y':
+		case 'y':
+			if (need_time_split)
+				need_time_split = SUFFIX(split_time) (&tm, signed_number, date_conv);
+			format += append_year (result, format, &tm) - 1;
+			break;
+
+		case 'S':
+		case 's': {
+			int n;
+
+			for (n = 1; format[1] == 's' || format[1] == 'S'; format++)
+				n++;
+			if (format[1] == ']')
+				format++;
+			if (time_display_elapsed) {
+				need_time_split = time_display_elapsed = FALSE;
+				ignore_further_elapsed = TRUE;
+				SUFFIX(append_second_elapsed) (result, number);
+			} else {
+				if (need_time_split)
+					need_time_split = SUFFIX(split_time) (&tm, signed_number, date_conv);
+				append_second (result, n, &tm);
+
+				if (format[1] == '.') {
+					/* HACK for fractional seconds.  */
+					DOUBLE days, secs;
+					int decs = 0;
+					int old_len = result->len;
+					format++;
+					while (format[1] == '0')
+						decs++, format++;
+
+					secs = SUFFIX(modf) (SUFFIX(fabs) (number), &days);
+					secs = SUFFIX(modf) (secs * (24 * 60 * 60), &days);
+
+					if (decs > 0)
+						g_string_append_printf (result, "%.*" FORMAT_f, decs, secs);
+					/* Remove the "0" or "1" before the dot.  */
+					g_string_erase (result, old_len, 1);
+				}
+			}
+			break;
+		}
+
+		case 'H':
+		case 'h': {
+			int n;
+
+			for (n = 1; format[1] == 'h' || format[1] == 'H'; format++)
+				n++;
+			if (format[1] == ']')
+				format++;
+			if (time_display_elapsed) {
+				need_time_split = time_display_elapsed = FALSE;
+				ignore_further_elapsed = TRUE;
+				SUFFIX(append_hour_elapsed) (result, &tm, number);
+			} else {
+				/* h == hour optionally in 24 hour mode
+				 * h followed by am/pm puts it in 12 hour mode
+				 *
+				 * more than 2 h eg 'hh' force 12 hour mode.
+				 * NOTE : This is a non-XL extension
+				 */
+				if (need_time_split)
+					need_time_split = SUFFIX(split_time) (&tm, signed_number, date_conv);
+
+				append_hour (result, n, &tm, entry->want_am_pm);
+			}
+			hour_seen = TRUE;
+			break;
+		}
+
+		case 'A':
+		case 'a':
+			if (need_time_split)
+				need_time_split = SUFFIX(split_time) (&tm, signed_number, date_conv);
+			if (tm.tm_hour < 12){
+				g_string_append_c (result, *format);
+				format++;
+				if (*format == 'm' || *format == 'M'){
+					g_string_append_c (result, *format);
+					if (*(format + 1) == '/')
+						format++;
+				}
+			} else {
+				if (*(format + 1) == 'm' || *(format + 1) == 'M')
+					format++;
+				if (*(format + 1) == '/')
+					format++;
+			}
+			break;
+
+		case 'P': case 'p':
+			if (need_time_split)
+				need_time_split = SUFFIX(split_time) (&tm, signed_number, date_conv);
+			if (tm.tm_hour >= 12){
+				g_string_append_c (result, *format);
+				if (*(format + 1) == 'm' || *(format + 1) == 'M'){
+					format++;
+					g_string_append_c (result, *format);
+				}
+			} else {
+				if (*(format + 1) == 'm' || *(format + 1) == 'M')
+					format++;
+			}
+			break;
+
+		default:
+			/* TODO : After release check this.
+			 * shouldn't we tack on the explicit characters here ?
+			 */
+			break;
+		}
+		format = g_utf8_next_char (format);
+	}
+
+	if (!info.rendered && can_render_number)
+		SUFFIX(do_render_number) (number, &info, result);
+
+	/* This is kinda ugly.  It does not handle variable width fonts */
+	if (fill_char != '\0') {
+		int count = col_width - result->len;
+		while (count-- > 0)
+			g_string_insert_unichar (result, fill_start, fill_char);
+	}
+}
+
+/**
+ * go_fmt_general_float:
+ *
+ * @val : the integer value being formated.
+ * @col_width : the approximate width in characters.
+ **/
+void
+SUFFIX(go_fmt_general_float) (GString *result, DOUBLE val, double col_width)
+{
+	DOUBLE tmp;
+	int log_val, prec;
+
+	if (col_width < 0.) {
+		g_string_append_printf (result, "%.*" FORMAT_G, PREFIX(DIG), val);
+		return;
+	}
+
+	if (val < 0.) {
+		/* leave space for minus sign */
+		/* FIXME : idealy we would use the width of a minus sign */
+		col_width -= 1.;
+		tmp = SUFFIX(log10) (-val);
+	} else
+		tmp = (val > 0.) ? SUFFIX(log10) (val) : 0;
+
+	/* leave space for the decimal */
+	/* FIXME : idealy we would use the width of a decimal point */
+	prec = (int) floor (col_width - .4);
+	if (prec < 0)
+		prec = 0;
+
+	if (tmp > 0.) {
+		log_val = SUFFIX(ceil) (tmp);
+
+		/* Decrease precision to leave space for the E+00 */
+		if (log_val > prec)
+			for (prec -= 4; log_val >= 100 ; log_val /= 10)
+				prec--;
+	} else {
+		log_val = SUFFIX(floor) (tmp);
+
+		/* Display 0 for cols that are too narrow for scientific
+		 * notation with abs (value) < 1 */
+		if (col_width < 5. && -log_val >= prec) {
+			g_string_append_c (result, '0');
+			return;
+		}
+
+		/* Include leading zeros eg 0.0x has 2 leading zero */
+		if (log_val >= -4)
+			prec += log_val;
+
+		/* Decrease precision to leave space for the E+00 */
+		else for (prec -= 4; log_val <= -100 ; log_val /= 10)
+			prec--;
+	}
+
+	if (prec < 1)
+		prec = 1;
+	else if (prec > PREFIX(DIG))
+		prec = PREFIX(DIG);
+
+	g_string_append_printf (result, "%.*" FORMAT_G, prec, val);
+}
+
+#ifdef DEFINE_COMMON
+/**
+ * go_fmt_general_int :
+ *
+ * @val : the integer value being formated.
+ * @col_width : the approximate width in characters.
+ */
+void
+go_fmt_general_int (GString *result, int val, int col_width)
+{
+	if (col_width > 0) {
+		int log_val;
+
+		if (val < 0) {
+			/* leave space for minus sign */
+			col_width--;
+			log_val = ceil (log10 ((unsigned int)-val));
+		} else
+			log_val = (val > 0) ? ceil (log10 (val)) : 0;
+
+		/* Switch to scientific notation if things are too wide */
+		if (log_val > col_width) {
+			/* Decrease available width by 5 to account for .+E00 */
+			g_string_append_printf (result, "%.*G", col_width - 5, (double)val);
+			return;
+		}
+	}
+
+	/* FIXME: we can do better than this.  */
+	g_string_append_printf (result, "%d", val);
+}
+#endif
+
+
+#ifdef DEFINE_COMMON
+void
+number_format_init (void)
+{
+	style_format_hash = g_hash_table_new (g_str_hash, g_str_equal);
+
+	beyond_precision = go_pow10 (DBL_DIG) + 1;
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+	beyond_precisionl = go_pow10l (LDBL_DIG) + 1;
+#endif
+
+	lc_decimal = g_string_new (NULL);
+	lc_thousand = g_string_new (NULL);
+	lc_currency = g_string_new (NULL);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static void
+cb_format_leak (gpointer key, gpointer value, gpointer user_data)
+{
+	GOFormat *format = value;
+
+	fprintf (stderr, "Leaking GOFormat at %p [%s].\n",
+		 format, format->format);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+void
+number_format_shutdown (void)
+{
+	g_string_free (lc_decimal, TRUE);
+	lc_decimal = NULL;
+
+	g_string_free (lc_thousand, TRUE);
+	lc_thousand = NULL;
+
+	g_string_free (lc_currency, TRUE);
+	lc_currency = NULL;
+
+	if (default_percentage_fmt) {
+		go_format_unref (default_percentage_fmt);
+		default_percentage_fmt = NULL;
+	}
+
+	if (default_money_fmt) {
+		go_format_unref (default_money_fmt);
+		default_money_fmt = NULL;
+	}
+
+	if (default_date_fmt) {
+		go_format_unref (default_date_fmt);
+		default_date_fmt = NULL;
+	}
+
+	if (default_time_fmt) {
+		go_format_unref (default_time_fmt);
+		default_time_fmt = NULL;
+	}
+
+	if (default_date_time_fmt) {
+		go_format_unref (default_date_time_fmt);
+		default_date_time_fmt = NULL;
+	}
+
+	if (default_general_fmt) {
+		go_format_unref (default_general_fmt);
+		default_general_fmt = NULL;
+	}
+
+	g_hash_table_foreach (style_format_hash, cb_format_leak, NULL);
+	g_hash_table_destroy (style_format_hash);
+	style_format_hash = NULL;
+}
+#endif
+
+/****************************************************************************/
+
+#ifdef DEFINE_COMMON
+static char *
+translate_format_color (GString *res, char const *ptr, gboolean translate_to_en)
+{
+	char *end;
+	FormatColor const *color;
+
+	g_string_append_c (res, '[');
+
+	/*
+	 * Special [h*], [m*], [*s] is using for
+	 * and [$*] are for currencies.
+	 * measuring times, not for specifying colors.
+	 */
+	if (ptr[1] == 'h' || ptr[1] == 's' || ptr[1] == 'm' || ptr[1] == '$')
+		return NULL;
+
+	end = strchr (ptr, ']');
+	if (end == NULL)
+		return NULL;
+
+	color = lookup_color_by_name (ptr+1, end, translate_to_en);
+	if (color != NULL) {
+		g_string_append (res, translate_to_en
+			? color->name : _(color->name));
+		g_string_append_c (res, ']');
+		return end;
+	}
+	return NULL;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+char *
+go_format_str_delocalize (char const *descriptor_string)
+{
+	g_return_val_if_fail (descriptor_string != NULL, NULL);
+
+	if (*descriptor_string == '\0')
+		return g_strdup ("");
+
+	if (strcmp (descriptor_string, _("General"))) {
+		GString const *thousands_sep = format_get_thousand ();
+		GString const *decimal = format_get_decimal ();
+		char const *ptr = descriptor_string;
+		GString *res = g_string_sized_new (strlen (ptr));
+
+		for ( ; *ptr ; ++ptr) {
+			if (strncmp (ptr, decimal->str, decimal->len) == 0) {
+				ptr += decimal->len - 1;
+				g_string_append_c (res, '.');
+			} else if (strncmp (ptr, thousands_sep->str, thousands_sep->len) == 0) {
+				ptr += thousands_sep->len - 1;
+				g_string_append_c (res, ',');
+			} else if (*ptr == '\"') {
+				do {
+					g_string_append_c (res, *ptr++);
+				} while (*ptr && *ptr != '\"');
+				if (*ptr)
+					g_string_append_c (res, *ptr);
+			} else if (*ptr == '[') {
+				char *tmp = translate_format_color (res, ptr, TRUE);
+				if (tmp != NULL)
+					ptr = tmp;
+			} else {
+				if (*ptr == '\\' && ptr[1] != '\0') {
+					ptr++;
+					/* Ignore '\' if we probably added it */
+					if (strncmp (ptr, decimal->str, decimal->len) != 0 &&
+					    strncmp (ptr, thousands_sep->str, thousands_sep->len) != 0)
+						g_string_append_c (res, '\\');
+				}
+				g_string_append_c (res, *ptr);
+			}
+		}
+		return g_string_free (res, FALSE);
+	} else
+		return g_strdup ("General");
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static gboolean
+cb_attrs_as_string (PangoAttribute *a, GString *accum)
+{
+	PangoColor const *c;
+
+	if (a->start_index >= a->end_index)
+		return FALSE;
+
+	switch (a->klass->type) {
+	case PANGO_ATTR_FAMILY :
+		g_string_append_printf (accum, "[family=%s",
+			((PangoAttrString *)a)->value);
+		break;
+	case PANGO_ATTR_SIZE :
+		g_string_append_printf (accum, "[size=%d",
+			((PangoAttrInt *)a)->value);
+		break;
+	case PANGO_ATTR_STYLE :
+		g_string_append_printf (accum, "[italic=%d",
+			(((PangoAttrInt *)a)->value == PANGO_STYLE_ITALIC) ? 1 : 0);
+		break;
+	case PANGO_ATTR_WEIGHT :
+		g_string_append_printf (accum, "[bold=%d",
+			(((PangoAttrInt *)a)->value >= PANGO_WEIGHT_BOLD) ? 1 : 0);
+		break;
+	case PANGO_ATTR_STRIKETHROUGH :
+		g_string_append_printf (accum, "[strikthrough=%d",
+			((PangoAttrInt *)a)->value ? 1 : 0);
+		break;
+	case PANGO_ATTR_UNDERLINE :
+		switch (((PangoAttrInt *)a)->value) {
+		case PANGO_UNDERLINE_NONE :
+			g_string_append (accum, "[underline=none");
+			break;
+		case PANGO_UNDERLINE_SINGLE :
+			g_string_append (accum, "[underline=single");
+			break;
+		case PANGO_UNDERLINE_DOUBLE :
+			g_string_append (accum, "[underline=double");
+			break;
+		}
+		break;
+
+	case PANGO_ATTR_FOREGROUND :
+		c = &((PangoAttrColor *)a)->color;
+		g_string_append_printf (accum, "[color=%02xx%02xx%02x",
+			((c->red & 0xff00) >> 8),
+			((c->green & 0xff00) >> 8),
+			((c->blue & 0xff00) >> 8));
+		break;
+	default :
+		return FALSE; /* ignored */
+	}
+	g_string_append_printf (accum, ":%u:%u]", a->start_index, a->end_index);
+	return FALSE;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+static PangoAttrList *
+go_format_parse_markup (char *str)
+{
+	PangoAttrList *attrs;
+	PangoAttribute *a;
+	char *closer, *val, *val_end;
+	unsigned len;
+	int r, g, b;
+
+	g_return_val_if_fail (*str == '@', NULL);
+
+	attrs = pango_attr_list_new ();
+	for (str++ ; *str ; str = closer + 1) {
+		g_return_val_if_fail (*str == '[', attrs);
+		str++;
+
+		val = strchr (str, '=');
+		g_return_val_if_fail (val != NULL, attrs);
+		len = val - str;
+		val++;
+
+		val_end = strchr (val, ':');
+		g_return_val_if_fail (val_end != NULL, attrs);
+
+		closer = strchr (val_end, ']');
+		g_return_val_if_fail (closer != NULL, attrs);
+		*val_end = '\0';
+		*closer = '\0';
+
+		a = NULL;
+		switch (len) {
+		case 4:
+			if (0 == strncmp (str, "size", 4))
+				a = pango_attr_size_new (atoi (val));
+			else if (0 == strncmp (str, "bold", 4))
+				a = pango_attr_weight_new (atoi (val) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL);
+			break;
+
+		case 5:
+			if (0 == strncmp (str, "color", 5) &&
+			    3 == sscanf (val, "%02xx%02xx%02x", &r, &g, &b))
+				a = pango_attr_foreground_new ((r << 8) | r, (g << 8) | g, (b << 8) | b);
+			break;
+
+		case 6:
+			if (0 == strncmp (str, "family", 6))
+				a = pango_attr_family_new (val);
+			else if (0 == strncmp (str, "italic", 6))
+				a = pango_attr_style_new (atoi (val) ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL);
+			break;
+
+		case 9:
+			if (0 == strncmp (str, "underline", 9)) {
+				if (0 == strcmp (val, "none"))
+					a = pango_attr_underline_new (PANGO_UNDERLINE_NONE);
+				else if (0 == strcmp (val, "single"))
+					a = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
+				else if (0 == strcmp (val, "double"))
+					a = pango_attr_underline_new (PANGO_UNDERLINE_DOUBLE);
+			}
+			break;
+
+		case 13:
+			if (0 == strncmp (str, "strikethrough", 13))
+				a = pango_attr_strikethrough_new (atoi (val) != 0);
+			break;
+		}
+
+		if (a != NULL && val_end != NULL) {
+			if (sscanf (val_end+1, "%u:%u]", &a->start_index, &a->end_index) == 2 &&
+				a->start_index < a->end_index)
+				pango_attr_list_insert (attrs, a);
+			else
+				pango_attribute_destroy (a);
+		}
+
+		*val_end = ':';
+		*closer = ']';
+	}
+
+	return attrs;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_new_from_XL :
+ *
+ * Looks up and potentially creates a GOFormat from the supplied string in
+ * XL format.
+ *
+ * @descriptor_string: XL descriptor in UTF-8 encoding.
+ **/
+GOFormat *
+go_format_new_from_XL (char const *descriptor_string, gboolean delocalize)
+{
+	GOFormat *format;
+	char *desc_copy = NULL;
+
+	/* Safety net */
+	if (descriptor_string == NULL) {
+		g_warning ("Invalid format descriptor string, using General");
+		descriptor_string = "General";
+	} else if (delocalize)
+		descriptor_string = desc_copy = go_format_str_delocalize (descriptor_string);
+
+	format = (GOFormat *) g_hash_table_lookup (style_format_hash, descriptor_string);
+
+	if (!format) {
+		format = g_new0 (GOFormat, 1);
+		format->format = g_strdup (descriptor_string);
+		format->entries = NULL;
+		format->family = go_format_classify (format, &format->family_info);
+		format->is_var_width = FALSE;
+		if (format->family == GO_FORMAT_MARKUP)
+			format->markup = go_format_parse_markup (format->format);
+		else if (!go_format_is_general (format))
+			format_compile (format);
+		else
+			format->is_var_width = TRUE;
+
+		g_hash_table_insert (style_format_hash, format->format, format);
+	}
+	format->ref_count++;
+#ifdef DEBUG_REF_COUNT
+	g_message (__FUNCTION__ " format=%p '%s' ref_count=%d",
+		   format, format->format, format->ref_count);
+#endif
+
+	g_free (desc_copy);
+	return format;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_new_markup :
+ * @markup : #PangoAttrList
+ * @add_ref :
+ *
+ * Create a MARKUP format.  If @add_ref is FALSE absorb the reference to
+ * @markup, otherwise add a reference.
+ */
+GOFormat *
+go_format_new_markup (PangoAttrList *markup, gboolean add_ref)
+{
+	GOFormat *format = g_new0 (GOFormat, 1);
+	GString *accum = g_string_new ("@");
+
+	pango_attr_list_filter (markup,
+		(PangoAttrFilterFunc) cb_attrs_as_string, accum);
+
+	format->format = g_string_free (accum, FALSE);
+	format->entries = NULL;
+	format->family = GO_FORMAT_MARKUP;
+	format->markup = markup;
+	if (add_ref)
+		pango_attr_list_ref (markup);
+
+	g_hash_table_insert (style_format_hash, format->format, format);
+	format->ref_count++;
+
+#ifdef DEBUG_REF_COUNT
+	g_message (__FUNCTION__ " format=%p '%s' ref_count=%d",
+		   format, format->format, format->ref_count);
+#endif
+
+	return format;
+}
+#endif
+
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_new (GOFormatFamily family, GOFormatDetails const *info)
+{
+	switch (family) {
+	case GO_FORMAT_GENERAL:
+	case GO_FORMAT_TEXT:
+		return go_format_new_from_XL (go_format_builtins[family][0], FALSE);
+
+	case GO_FORMAT_NUMBER: {
+		/* Make sure no currency is selected */
+		GOFormatDetails info_copy = *info;
+		info_copy.currency_symbol_index = 0;
+		return go_format_as_number (&info_copy);
+	}
+
+	case GO_FORMAT_CURRENCY:
+		return go_format_as_number (info);
+
+	case GO_FORMAT_ACCOUNTING:
+		return go_format_as_account (info);
+
+	case GO_FORMAT_PERCENTAGE:
+		return go_format_as_percentage (info);
+
+	case GO_FORMAT_SCIENTIFIC:
+		return go_format_as_scientific (info);
+
+	default:
+	case GO_FORMAT_DATE:
+	case GO_FORMAT_TIME:
+		return NULL;
+	};
+}
+#endif
+
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_str_as_XL
+ *
+ * The caller is responsible for freeing the resulting string.
+ */
+char *
+go_format_str_as_XL (char const *ptr, gboolean localized)
+{
+	GString const *thousands_sep, *decimal;
+	GString *res;
+
+	g_return_val_if_fail (ptr != NULL,
+			      g_strdup (localized ? _("General") : "General"));
+
+	if (!localized)
+		return g_strdup (ptr);
+
+	if (!strcmp (ptr, "General"))
+		return g_strdup (_("General"));
+
+	thousands_sep = format_get_thousand ();
+	decimal = format_get_decimal ();
+
+	res = g_string_sized_new (strlen (ptr));
+
+	/* TODO : XL seems to do an adaptive escaping of
+	 * things.
+	 * eg '#,##0.00 ' in a locale that uses ' '
+	 * as the thousands would become
+	 *    '# ##0.00 '
+	 * rather than
+	 *    '# ##0.00\ '
+	 *
+	 * TODO : Minimal quotes.
+	 * It also seems to have a display mode vs a storage mode.
+	 * Internally it adds a few quotes around strings.
+	 * Then tries not to display the quotes unless needed.
+	 */
+	for ( ; *ptr ; ++ptr)
+		switch (*ptr) {
+		case '.':
+			go_string_append_gstring (res, decimal);
+			break;
+		case ',':
+			go_string_append_gstring (res, thousands_sep);
+			break;
+
+		case '\"':
+			do {
+				g_string_append_c (res, *ptr++);
+			} while (*ptr && *ptr != '\"');
+			if (*ptr)
+				g_string_append_c (res, *ptr);
+			break;
+
+		case '\\':
+			g_string_append_c (res, '\\');
+			if (ptr[1] != '\0') {
+				g_string_append_c (res, ptr[1]);
+				++ptr;
+			}
+			break;
+
+		case '[': {
+			char *tmp = translate_format_color (res, ptr, FALSE);
+			if (tmp != NULL)
+				ptr = tmp;
+			break;
+		}
+
+		default:
+			if (strncmp (ptr, decimal->str, decimal->len) == 0 ||
+			    strncmp (ptr, thousands_sep->str, thousands_sep->len) == 0)
+				g_string_append_c (res, '\\');
+			g_string_append_c (res, *ptr);
+		}
+
+	return g_string_free (res, FALSE);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_as_XL :
+ * @gf :
+ * @localized : should the string be in cannonical or locale specific form.
+ *
+ * Return a string which the caller is responsible for freeing.
+ */
+char *
+go_format_as_XL (GOFormat const *fmt, gboolean localized)
+{
+	g_return_val_if_fail (fmt != NULL,
+			      g_strdup (localized ? _("General") : "General"));
+
+	return go_format_str_as_XL (fmt->format, localized);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+gboolean
+go_format_eq (GOFormat const *a, GOFormat const *b)
+{
+	/*
+	 * The way we create GOFormat *s ensures that we don't need
+	 * to compare anything but pointers.
+	 */
+	return (a == b);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_ref :
+ * @gf :
+ *
+ * Add a reference to a GOFormat
+ **/
+GOFormat *
+go_format_ref (GOFormat *gf)
+{
+	g_return_val_if_fail (gf != NULL, NULL);
+
+	gf->ref_count++;
+#ifdef DEBUG_REF_COUNT
+	g_message (__FUNCTION__ " format=%p '%s' ref_count=%d",
+		   gf, gf->format, gf->ref_count);
+#endif
+
+	return gf;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+/**
+ * go_format_unref :
+ * @gf :
+ *
+ * Remove a reference to a GOFormat, freeing when it goes to zero.
+ **/
+void
+go_format_unref (GOFormat *gf)
+{
+	if (gf == NULL)
+		return;
+
+	g_return_if_fail (gf->ref_count > 0);
+
+	gf->ref_count--;
+#ifdef DEBUG_REF_COUNT
+	g_message (__FUNCTION__ " format=%p '%s' ref_count=%d",
+		   gf, gf->format, gf->ref_count);
+#endif
+	if (gf->ref_count != 0)
+		return;
+
+	g_hash_table_remove (style_format_hash, gf->format);
+
+	format_destroy (gf);
+	g_free (gf->format);
+	g_free (gf);
+}
+#endif
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_general (void)
+{
+	if (!default_general_fmt)
+		default_general_fmt = go_format_new_from_XL (
+			go_format_builtins[GO_FORMAT_GENERAL][0], FALSE);
+	return default_general_fmt;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_default_date (void)
+{
+	if (!default_date_fmt)
+		default_date_fmt = go_format_new_from_XL (
+			go_format_builtins[GO_FORMAT_DATE][0], FALSE);
+	return default_date_fmt;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_default_time (void)
+{
+	if (!default_time_fmt)
+		default_time_fmt = go_format_new_from_XL (
+			go_format_builtins[GO_FORMAT_TIME][0], FALSE);
+	return default_time_fmt;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_default_date_time (void)
+{
+	if (!default_date_time_fmt)
+		default_date_time_fmt = go_format_new_from_XL (
+			go_format_builtins[GO_FORMAT_TIME][4], FALSE);
+	return default_date_time_fmt;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_default_percentage (void)
+{
+	if (!default_percentage_fmt)
+		default_percentage_fmt = go_format_new_from_XL (
+			go_format_builtins[GO_FORMAT_PERCENTAGE][1], FALSE);
+	return default_percentage_fmt;
+}
+#endif
+
+#ifdef DEFINE_COMMON
+GOFormat *
+go_format_default_money (void)
+{
+	if (!default_money_fmt)
+		default_money_fmt = go_format_new_from_XL (
+			go_format_builtins[GO_FORMAT_CURRENCY][2], FALSE);
+	return default_money_fmt;
+}
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/formats.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/formats.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/formats.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,791 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * formats.c: The default formats supported in Gnumeric
+ *
+ * For information on how to translate these format strings properly,
+ * refer to the doc/translating.sgml file in the Gnumeric distribution.
+ *
+ * Author:
+ *    Miguel de Icaza (miguel at kernel.org)
+ */
+#include <goffice/goffice-config.h>
+#include "go-format.h"
+#include <goffice/cut-n-paste/pcre/pcreposix.h>
+#include <glib/gi18n.h>
+#include <string.h>
+
+/* The various formats */
+static char const * const
+fmts_general [] = {
+	"General",
+	NULL
+};
+
+static char const * const
+fmts_number [] = {
+	"0",
+	"0.00",
+	"#,##0",
+	"#,##0.00",
+	"#,##0_);(#,##0)",
+	"#,##0_);[Red](#,##0)",
+	"#,##0.00_);(#,##0.00)",
+	"#,##0.00_);[Red](#,##0.00)",
+	"0.0",
+	NULL
+};
+
+/* Some are generated */
+static char const *
+fmts_currency [] = {
+	NULL, /* "$#,##0", */
+	NULL, /* "$#,##0_);($#,##0)", */
+	NULL, /* "$#,##0_);[Red]($#,##0)", */
+	NULL, /* "$#,##0.00", */
+	NULL, /* "$#,##0.00_);($#,##0.00)", */
+	NULL, /* "$#,##0.00_);[Red]($#,##0.00)", */
+	NULL,
+};
+
+/* Some are generated */
+static char const *
+fmts_accounting [] = {
+	NULL, /* "_($* #,##0_);_($* (#,##0);_($* \"-\"_);_(@_)", */
+	"_(* #,##0_);_(* (#,##0);_(* \"-\"_);_(@_)",
+	NULL, /* "_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)", */
+	"_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)",
+	NULL
+};
+
+/*****************************************************************/
+/* Some are generated						 */
+/* WARNING WARNING WARNING : do not reorder these !! 		 */
+/* the generated versions and the excel plugin assume this order */
+static char const *
+fmts_date [] = {
+	"m/d/yy",		/* 0 */
+	"m/d/yyyy",		/* 1 */
+	"d-mmm-yy",		/* 2 */
+	"d-mmm-yyyy",		/* 3 */
+	"d-mmm",		/* 4 */
+	"d-mm",			/* 5 */
+	"mmm/d",		/* 6 */
+	"mm/d",			/* 7 */
+	"mm/dd/yy",		/* 8 */
+	"mm/dd/yyyy",		/* 9 */
+	"mmm/dd/yy",		/* 10 */
+	"mmm/dd/yyyy",		/* 11 */
+	"mmm/ddd/yy",		/* 12 */
+	"mmm/ddd/yyyy",		/* 13 */
+	"mm/ddd/yy",		/* 14 */
+	"mm/ddd/yyyy",		/* 15 */
+	"mmm-yy",		/* 16 */
+	"mmm-yyyy",		/* 17 */
+	"mmmm-yy",		/* 18 */
+	"mmmm-yyyy",		/* 19 */
+	"m/d/yy h:mm",		/* 20 */
+	"m/d/yyyy h:mm",	/* 21 */
+	"yyyy/mm/d",		/* 22 */
+	"yyyy/mmm/d",		/* 23 */
+	"yyyy/mm/dd",		/* 24 */
+	"yyyy/mmm/dd",		/* 25 */
+	"yyyy-mm-d",		/* 26 */
+	"yyyy-mmm-d",		/* 27 */
+	"yyyy-mm-dd",		/* 28 */
+	"yyyy-mmm-dd",		/* 29 */
+	"yy",			/* 30 */
+	"yyyy",			/* 31 */
+	"mmmmm",		/* 32 stored as custom in xls */
+	"mmmmm-yy",		/* 33 stored as custom in xls */
+	NULL
+};
+
+/*****************************************************/
+
+/* Some are generated */
+static char const *
+fmts_time [] = {
+	"h:mm AM/PM",
+	"h:mm:ss AM/PM",
+	"h:mm",
+	"h:mm:ss",
+	"m/d/yy h:mm",
+	"[h]:mm",		/* keep this before mm:ss so that 24:00 will */
+	"[h]:mm:ss",		/* match an hour based format (bug #86338)   */
+	"mm:ss",
+	"mm:ss.0",
+	"[mm]:ss",
+	"[ss]",
+	NULL
+};
+
+static char const * const
+fmts_percentage [] = {
+	"0%",
+	"0.00%",
+	NULL,
+};
+
+static char const * const
+fmts_fraction [] = {
+	"# ?/?",
+	"# ?" "?/?" "?",  /* Don't accidentally use trigraph.  */
+	"# ?" "?" "?/?" "?" "?",
+	"# ?/2",
+	"# ?/4",
+	"# ?/8",
+	"# ?/16",
+	"# ?/10",
+	"# ?/100",
+	NULL
+};
+
+static char const * const
+fmts_science [] = {
+	"0.00E+00",
+	"##0.0E+0",
+	NULL
+};
+
+static char const *
+fmts_text [] = {
+	"@",
+	NULL,
+};
+
+char const * const * const
+go_format_builtins [] = {
+	fmts_general,
+	fmts_number,
+	fmts_currency,
+	fmts_accounting,
+	fmts_date,
+	fmts_time,
+	fmts_percentage,
+	fmts_fraction,
+	fmts_science,
+	fmts_text,
+	NULL
+};
+
+/* The compiled regexp for go_format_classify */
+static GORegexp re_simple_number;
+static GORegexp re_red_number;
+static GORegexp re_brackets_number;
+static GORegexp re_percent_science;
+static GORegexp re_account;
+static GORegexp re_fraction;
+
+static const char *
+my_regerror (int err, const GORegexp *preg)
+{
+	static char buffer[1024];
+	go_regerror (err, preg, buffer, sizeof (buffer));
+	return buffer;
+}
+
+void
+currency_date_format_init (void)
+{
+	gboolean precedes, space_sep;
+	char const *curr = format_get_currency (&precedes, &space_sep)->str;
+	char *pre, *post, *pre_rep, *post_rep;
+	int err;
+
+	/* Compile the regexps for format classification */
+
+	/* This one is for simple numbers - it is an extended regexp */
+	char const * const simple_number_pattern = "^(\"?(\\$|£|¥|€|\\[\\$.{1,3}-?[0-9]{0,3}\\])\"? ?)?(#,##)?0(\\.0{1,30})?( ?(\\$|£|¥|€|\\[\\$.{1,3}-?[0-9]{0,3}\\]))?$";
+
+	/* This one is for matching formats like 0.00;[Red]0.00 */
+	char const * const red_number_pattern = "^(.*);\\[[Rr][Ee][Dd]\\]\\1$";
+
+	/* This one is for matching formats like 0.00_);(0.00) */
+	char const * const brackets_number_pattern = "^(.*)_\\);(\\[[Rr][Ee][Dd]\\])?\\(\\1\\)$";
+
+	/* This one is for GO_FORMAT_PERCENTAGE and GO_FORMAT_SCIENTIFIC, extended regexp */
+	char const *pattern_percent_science = "^0(.0{1,30})?(%|E+00)$";
+
+	char const *pattern_fraction = "^#\\\\? (\\?+)/(\\?+|[1-9]\\d*)$";
+
+	/* This one is for GO_FORMAT_ACCOUNTING */
+
+	/*
+	 *  1. "$*  "	Yes, it is needed (because we use match[])
+	 *  2. "$*  "	This one is like \1, but doesn't have the \{0,1\}
+	 *  3. "$"
+	 *  4. "#,##0.00"
+	 *  5. ".00"
+	 *  6. "*  $"	Same here.
+	 *  7. "*  $"
+	 *  8. "$"
+	 */
+
+	char const *pattern_account = "^_\\((((.*)\\*  ?)?)(#,##0(\\.0{1,30})?)((\\*  ?(.*))?)_\\);_\\(\\1\\(\\4\\)\\6;_\\(\\1\"-\"\\?{0,30}\\6_\\);_\\(@_\\)$";
+
+
+	err = go_regcomp (&re_simple_number, simple_number_pattern, 0);
+	if (err)
+		g_warning ("Error in regcomp() for simple number, please report the bug [%s] [%s]",
+			   my_regerror (err, &re_simple_number), simple_number_pattern);
+
+	err = go_regcomp (&re_red_number, red_number_pattern, 0);
+	if (err)
+		g_warning ("Error in regcomp() for red number, please report the bug [%s] [%s]",
+			   my_regerror (err, &re_red_number), red_number_pattern);
+
+	err = go_regcomp (&re_brackets_number, brackets_number_pattern, 0);
+	if (err)
+		g_warning ("Error in regcomp() for brackets number, please report the bug [%s] [%s]",
+			   my_regerror (err, &re_brackets_number), brackets_number_pattern);
+
+	err = go_regcomp (&re_percent_science, pattern_percent_science, 0);
+	if (err)
+		g_warning ("Error in regcomp() for percent and science, please report the bug [%s] [%s]",
+			  my_regerror (err, &re_percent_science), pattern_percent_science);
+
+	err = go_regcomp (&re_fraction, pattern_fraction, 0);
+	if (err)
+		g_warning ("Error in regcomp() for fraction, please report the bug [%s] [%s]",
+			  my_regerror (err, &re_fraction), pattern_fraction);
+
+	err = go_regcomp (&re_account, pattern_account, 0);
+	if (err)
+		g_warning ("Error in regcomp() for account, please report the bug [%s] [%s]",
+			   my_regerror (err, &re_account), pattern_account);
+
+	if (precedes) {
+		post_rep = post = (char *)"";
+		pre_rep = (char *)"* ";
+		pre = g_strconcat ("\"", curr,
+				   (space_sep ? "\" " : "\""), NULL);
+	} else {
+		pre_rep = pre = (char *)"";
+		post_rep = (char *)"* ";
+		post = g_strconcat ((space_sep ? " \"" : "\""),
+				    curr, "\"", NULL);
+	}
+
+	fmts_currency [0] = g_strdup_printf (
+		"%s#,##0%s",
+		pre, post);
+	fmts_currency [1] = g_strdup_printf (
+		"%s#,##0%s_);(%s#,##0%s)",
+		pre, post, pre, post);
+	fmts_currency [2] = g_strdup_printf (
+		"%s#,##0%s_);[Red](%s#,##0%s)",
+		pre, post, pre, post);
+	fmts_currency [3] = g_strdup_printf (
+		"%s#,##0.00%s",
+		pre, post);
+	fmts_currency [4] = g_strdup_printf (
+		"%s#,##0.00%s_);(%s#,##0.00%s)",
+		pre, post, pre, post);
+	fmts_currency [5] = g_strdup_printf (
+		"%s#,##0.00%s_);[Red](%s#,##0.00%s)",
+		pre, post, pre, post);
+
+	fmts_accounting [0] = g_strdup_printf (
+		"_(%s%s#,##0%s%s_);_(%s%s(#,##0)%s%s;_(%s%s\"-\"%s%s_);_(@_)",
+		pre, pre_rep, post_rep, post,
+		pre, pre_rep, post_rep, post,
+		pre, pre_rep, post_rep, post);
+	fmts_accounting [2] = g_strdup_printf (
+		"_(%s%s#,##0.00%s%s_);_(%s%s(#,##0.00)%s%s;_(%s%s\"-\"??%s%s_);_(@_)",
+		pre, pre_rep, post_rep, post,
+		pre, pre_rep, post_rep, post,
+		pre, pre_rep, post_rep, post);
+
+	g_free (*pre ? pre : post);
+
+	if (!format_month_before_day ()) {
+		fmts_date [0]  = "d/m/yy";
+		fmts_date [1]  = "d/m/yyyy";
+		fmts_date [2]  = "mmm-d-yy";
+		fmts_date [3]  = "mmm-d-yyyy";
+		fmts_date [4]  = "mmm-d";
+		fmts_date [5]  = "mm-d";
+		fmts_date [6]  = "d/mmm";
+		fmts_date [7]  = "d/mm";
+		fmts_date [8]  = "dd/mm/yy";
+		fmts_date [9]  = "dd/mm/yyyy";
+		fmts_date [10] = "dd/mmm/yy";
+		fmts_date [11] = "dd/mmm/yyyy";
+		fmts_date [12] = "ddd/mmm/yy";
+		fmts_date [13] = "ddd/mmm/yyyy";
+		fmts_date [14] = "ddd/mm/yy";
+		fmts_date [15] = "ddd/mm/yyyy";
+		fmts_date [20] = "d/m/yy h:mm";
+		fmts_date [21] = "d/m/yyyy h:mm";
+
+		fmts_time [4]  = "d/m/yy h:mm";
+	} else {
+		fmts_date [0]  = "m/d/yy";
+		fmts_date [1]  = "m/d/yyyy";
+		fmts_date [2]  = "d-mmm-yy";
+		fmts_date [3]  = "d-mmm-yyyy";
+		fmts_date [4]  = "d-mmm";
+		fmts_date [5]  = "d-mm";
+		fmts_date [6]  = "mmm/d";
+		fmts_date [7]  = "mm/d";
+		fmts_date [8]  = "mm/dd/yy";
+		fmts_date [9]  = "mm/dd/yyyy";
+		fmts_date [10] = "mmm/dd/yy";
+		fmts_date [11] = "mmm/dd/yyyy";
+		fmts_date [12] = "mmm/ddd/yy";
+		fmts_date [13] = "mmm/ddd/yyyy";
+		fmts_date [14] = "mm/ddd/yy";
+		fmts_date [15] = "mm/ddd/yyyy";
+		fmts_date [20] = "m/d/yy h:mm";
+		fmts_date [21] = "m/d/yyyy h:mm";
+
+		fmts_time [4]  = "m/d/yy h:mm";
+	}
+}
+
+void
+currency_date_format_shutdown (void)
+{
+	/* We need to free allocated strings since */
+	/* currency_date_format_init/shutdown may  */
+	/* be called repeatedly by the format selector */
+	/* when switching locales */
+
+	int i;
+
+	for (i = 0; i < 6; i++) {
+		g_free ((char *)(fmts_currency [i]));
+		fmts_currency [i] = NULL;
+	}
+	g_free ((char *)(fmts_accounting [0]));
+	fmts_accounting [0] = NULL;
+	g_free ((char *)(fmts_accounting [2]));
+	fmts_accounting [3] = NULL;
+
+	go_regfree (&re_simple_number);
+	go_regfree (&re_red_number);
+	go_regfree (&re_brackets_number);
+	go_regfree (&re_percent_science);
+	go_regfree (&re_account);
+	go_regfree (&re_fraction);
+}
+
+#define EURO_FORM_1 4
+
+GOFormatCurrency const go_format_currencies[] =
+{
+ 	{ "", "None", TRUE, FALSE },	/* These first six elements */
+ 	{ "$", "$", TRUE, FALSE },	/* Must stay in this order */
+ 	{ "£", "£", TRUE, FALSE },	/* GBP */
+ 	{ "Â¥", "Â¥", TRUE, FALSE },	/* JPY */
+
+ 	/* Add yours to this list ! */
+ 	{ "[$€-1]", "€ Euro (100 €)", FALSE, TRUE},
+	{ "[$€-2]", "€ Euro (€ 100)", TRUE, TRUE},
+
+	/* The first column has three letter acronyms
+	 * for each currency.  They MUST start with '[$'
+	 * The second column has the long names of the currencies.
+	 */
+
+	/* 2002/08/04 Updated to match iso 4217 */
+	{ "[$AED]",	N_("United Arab Emirates, Dirhams"), TRUE, TRUE },
+	{ "[$AFA]",	N_("Afghanistan, Afghanis"), TRUE, TRUE },
+	{ "[$ALL]",	N_("Albania, Leke"), TRUE, TRUE },
+	{ "[$AMD]",	N_("Armenia, Drams"), TRUE, TRUE },
+	{ "[$ANG]",	N_("Netherlands Antilles, Guilders"), TRUE, TRUE },
+	{ "[$AOA]",	N_("Angola, Kwanza"), TRUE, TRUE },
+	{ "[$ARS]",	N_("Argentina, Pesos"), TRUE, TRUE },
+	{ "[$AUD]",	N_("Australia, Dollars"), TRUE, TRUE },
+	{ "[$AWG]",	N_("Aruba, Guilders"), TRUE, TRUE },
+	{ "[$AZM]",	N_("Azerbaijan, Manats"), TRUE, TRUE },
+	{ "[$BAM]",	N_("Bosnia and Herzegovina, Convertible Marka"), TRUE, TRUE },
+	{ "[$BBD]",	N_("Barbados, Dollars"), TRUE, TRUE },
+	{ "[$BDT]",	N_("Bangladesh, Taka"), TRUE, TRUE },
+	{ "[$BGL]",	N_("Bulgaria, Leva"), TRUE, TRUE },
+	{ "[$BHD]",	N_("Bahrain, Dinars"), TRUE, TRUE },
+	{ "[$BIF]",	N_("Burundi, Francs"), TRUE, TRUE },
+	{ "[$BMD]",	N_("Bermuda, Dollars"), TRUE, TRUE },
+	{ "[$BND]",	N_("Brunei Darussalam, Dollars"), TRUE, TRUE },
+	{ "[$BOB]",	N_("Bolivia, Bolivianos"), TRUE, TRUE },
+	{ "[$BRL]",	N_("Brazil, Brazil Real"), TRUE, TRUE },
+	{ "[$BSD]",	N_("Bahamas, Dollars"), TRUE, TRUE },
+	{ "[$BTN]",	N_("Bhutan, Ngultrum"), TRUE, TRUE },
+	{ "[$BWP]",	N_("Botswana, Pulas"), TRUE, TRUE },
+	{ "[$BYR]",	N_("Belarus, Rubles"), TRUE, TRUE },
+	{ "[$BZD]",	N_("Belize, Dollars"), TRUE, TRUE },
+	{ "[$CAD]",	N_("Canada, Dollars"), TRUE, TRUE },
+	{ "[$CDF]",	N_("Congo/Kinshasa, Congolese Francs"), TRUE, TRUE },
+	{ "[$CHF]",	N_("Switzerland, Francs"), TRUE, TRUE },
+	{ "[$CLP]",	N_("Chile, Pesos"), TRUE, TRUE },
+	{ "[$CNY]",	N_("China, Yuan Renminbi"), TRUE, TRUE },
+	{ "[$COP]",	N_("Colombia, Pesos"), TRUE, TRUE },
+	{ "[$CRC]",	N_("Costa Rica, Colones"), TRUE, TRUE },
+	{ "[$CUP]",	N_("Cuba, Pesos"), TRUE, TRUE },
+	{ "[$CVE]",	N_("Cape Verde, Escudos"), TRUE, TRUE },
+	{ "[$CYP]",	N_("Cyprus, Pounds"), TRUE, TRUE },
+	{ "[$CZK]",	N_("Czech Republic, Koruny"), TRUE, TRUE },
+	{ "[$DJF]",	N_("Djibouti, Francs"), TRUE, TRUE },
+	{ "[$DKK]",	N_("Denmark, Kroner"), TRUE, TRUE },
+	{ "[$DOP]",	N_("Dominican Republic, Pesos"), TRUE, TRUE },
+	{ "[$DZD]",	N_("Algeria, Algeria Dinars"), TRUE, TRUE },
+	{ "[$EEK]",	N_("Estonia, Krooni"), TRUE, TRUE },
+	{ "[$EGP]",	N_("Egypt, Pounds"), TRUE, TRUE },
+	{ "[$ERN]",	N_("Eritrea, Nakfa"), TRUE, TRUE },
+	{ "[$ETB]",	N_("Ethiopia, Birr"), TRUE, TRUE },
+	{ "[$EUR]",	N_("Euro Member Countries, Euro"), TRUE, TRUE },
+	{ "[$FJD]",	N_("Fiji, Dollars"), TRUE, TRUE },
+	{ "[$FKP]",	N_("Falkland Islands (Malvinas), Pounds"), TRUE, TRUE },
+	{ "[$GBP]",	N_("United Kingdom, Pounds"), TRUE, TRUE },
+	{ "[$GEL]",	N_("Georgia, Lari"), TRUE, TRUE },
+	{ "[$GGP]",	N_("Guernsey, Pounds"), TRUE, TRUE },
+	{ "[$GHC]",	N_("Ghana, Cedis"), TRUE, TRUE },
+	{ "[$GIP]",	N_("Gibraltar, Pounds"), TRUE, TRUE },
+	{ "[$GMD]",	N_("Gambia, Dalasi"), TRUE, TRUE },
+	{ "[$GNF]",	N_("Guinea, Francs"), TRUE, TRUE },
+	{ "[$GTQ]",	N_("Guatemala, Quetzales"), TRUE, TRUE },
+	{ "[$GYD]",	N_("Guyana, Dollars"), TRUE, TRUE },
+	{ "[$HKD]",	N_("Hong Kong, Dollars"), TRUE, TRUE },
+	{ "[$HNL]",	N_("Honduras, Lempiras"), TRUE, TRUE },
+	{ "[$HRK]",	N_("Croatia, Kuna"), TRUE, TRUE },
+	{ "[$HTG]",	N_("Haiti, Gourdes"), TRUE, TRUE },
+	{ "[$HUF]",	N_("Hungary, Forint"), TRUE, TRUE },
+	{ "[$IDR]",	N_("Indonesia, Rupiahs"), TRUE, TRUE },
+	{ "[$ILS]",	N_("Israel, New Shekels"), TRUE, TRUE },
+	{ "[$IMP]",	N_("Isle of Man, Pounds"), TRUE, TRUE },
+	{ "[$INR]",	N_("India, Rupees"), TRUE, TRUE },
+	{ "[$IQD]",	N_("Iraq, Dinars"), TRUE, TRUE },
+	{ "[$IRR]",	N_("Iran, Rials"), TRUE, TRUE },
+	{ "[$ISK]",	N_("Iceland, Kronur"), TRUE, TRUE },
+	{ "[$JEP]",	N_("Jersey, Pounds"), TRUE, TRUE },
+	{ "[$JMD]",	N_("Jamaica, Dollars"), TRUE, TRUE },
+	{ "[$JOD]",	N_("Jordan, Dinars"), TRUE, TRUE },
+	{ "[$JPY]",	N_("Japan, Yen"), TRUE, TRUE },
+	{ "[$KES]",	N_("Kenya, Shillings"), TRUE, TRUE },
+	{ "[$KGS]",	N_("Kyrgyzstan, Soms"), TRUE, TRUE },
+	{ "[$KHR]",	N_("Cambodia, Riels"), TRUE, TRUE },
+	{ "[$KMF]",	N_("Comoros, Francs"), TRUE, TRUE },
+	{ "[$KPW]",	N_("Korea (North), Won"), TRUE, TRUE },
+	{ "[$KRW]",	N_("Korea (South), Won"), TRUE, TRUE },
+	{ "[$KWD]",	N_("Kuwait, Dinars"), TRUE, TRUE },
+	{ "[$KYD]",	N_("Cayman Islands, Dollars"), TRUE, TRUE },
+	{ "[$KZT]",	N_("Kazakstan, Tenge"), TRUE, TRUE },
+	{ "[$LAK]",	N_("Laos, Kips"), TRUE, TRUE },
+	{ "[$LBP]",	N_("Lebanon, Pounds"), TRUE, TRUE },
+	{ "[$LKR]",	N_("Sri Lanka, Rupees"), TRUE, TRUE },
+	{ "[$LRD]",	N_("Liberia, Dollars"), TRUE, TRUE },
+	{ "[$LSL]",	N_("Lesotho, Maloti"), TRUE, TRUE },
+	{ "[$LTL]",	N_("Lithuania, Litai"), TRUE, TRUE },
+	{ "[$LVL]",	N_("Latvia, Lati"), TRUE, TRUE },
+	{ "[$LYD]",	N_("Libya, Dinars"), TRUE, TRUE },
+	{ "[$MAD]",	N_("Morocco, Dirhams"), TRUE, TRUE },
+	{ "[$MDL]",	N_("Moldova, Lei"), TRUE, TRUE },
+	{ "[$MGF]",	N_("Madagascar, Malagasy Francs"), TRUE, TRUE },
+	{ "[$MKD]",	N_("Macedonia, Denars"), TRUE, TRUE },
+	{ "[$MMK]",	N_("Myanmar (Burma), Kyats"), TRUE, TRUE },
+	{ "[$MNT]",	N_("Mongolia, Tugriks"), TRUE, TRUE },
+	{ "[$MOP]",	N_("Macau, Patacas"), TRUE, TRUE },
+	{ "[$MRO]",	N_("Mauritania, Ouguiyas"), TRUE, TRUE },
+	{ "[$MTL]",	N_("Malta, Liri"), TRUE, TRUE },
+	{ "[$MUR]",	N_("Mauritius, Rupees"), TRUE, TRUE },
+	{ "[$MVR]",	N_("Maldives (Maldive Islands), Rufiyaa"), TRUE, TRUE },
+	{ "[$MWK]",	N_("Malawi, Kwachas"), TRUE, TRUE },
+	{ "[$MXN]",	N_("Mexico, Pesos"), TRUE, TRUE },
+	{ "[$MYR]",	N_("Malaysia, Ringgits"), TRUE, TRUE },
+	{ "[$MZM]",	N_("Mozambique, Meticais"), TRUE, TRUE },
+	{ "[$NAD]",	N_("Namibia, Dollars"), TRUE, TRUE },
+	{ "[$NGN]",	N_("Nigeria, Nairas"), TRUE, TRUE },
+	{ "[$NIO]",	N_("Nicaragua, Gold Cordobas"), TRUE, TRUE },
+	{ "[$NOK]",	N_("Norway, Krone"), TRUE, TRUE },
+	{ "[$NPR]",	N_("Nepal, Nepal Rupees"), TRUE, TRUE },
+	{ "[$NZD]",	N_("New Zealand, Dollars"), TRUE, TRUE },
+	{ "[$OMR]",	N_("Oman, Rials"), TRUE, TRUE },
+	{ "[$PAB]",	N_("Panama, Balboa"), TRUE, TRUE },
+	{ "[$PEN]",	N_("Peru, Nuevos Soles"), TRUE, TRUE },
+	{ "[$PGK]",	N_("Papua New Guinea, Kina"), TRUE, TRUE },
+	{ "[$PHP]",	N_("Philippines, Pesos"), TRUE, TRUE },
+	{ "[$PKR]",	N_("Pakistan, Rupees"), TRUE, TRUE },
+	{ "[$PLN]",	N_("Poland, Zlotys"), TRUE, TRUE },
+	{ "[$PYG]",	N_("Paraguay, Guarani"), TRUE, TRUE },
+	{ "[$QAR]",	N_("Qatar, Rials"), TRUE, TRUE },
+	{ "[$ROL]",	N_("Romania, Lei"), TRUE, TRUE },
+	{ "[$RUR]",	N_("Russia, Rubles"), TRUE, TRUE },
+	{ "[$RWF]",	N_("Rwanda, Rwanda Francs"), TRUE, TRUE },
+	{ "[$SAR]",	N_("Saudi Arabia, Riyals"), TRUE, TRUE },
+	{ "[$SBD]",	N_("Solomon Islands, Dollars"), TRUE, TRUE },
+	{ "[$SCR]",	N_("Seychelles, Rupees"), TRUE, TRUE },
+	{ "[$SDD]",	N_("Sudan, Dinars"), TRUE, TRUE },
+	{ "[$SEK]",	N_("Sweden, Kronor"), TRUE, TRUE },
+	{ "[$SGD]",	N_("Singapore, Dollars"), TRUE, TRUE },
+	{ "[$SHP]",	N_("Saint Helena, Pounds"), TRUE, TRUE },
+	{ "[$SIT]",	N_("Slovenia, Tolars"), TRUE, TRUE },
+	{ "[$SKK]",	N_("Slovakia, Koruny"), TRUE, TRUE },
+	{ "[$SLL]",	N_("Sierra Leone, Leones"), TRUE, TRUE },
+	{ "[$SOS]",	N_("Somalia, Shillings"), TRUE, TRUE },
+	{ "[$SPL]",	N_("Seborga, Luigini"), TRUE, TRUE },
+	{ "[$SRG]",	N_("Suriname, Guilders"), TRUE, TRUE },
+	{ "[$STD]",	N_("Sao Tome and Principe, Dobras"), TRUE, TRUE },
+	{ "[$SVC]",	N_("El Salvador, Colones"), TRUE, TRUE },
+	{ "[$SYP]",	N_("Syria, Pounds"), TRUE, TRUE },
+	{ "[$SZL]",	N_("Swaziland, Emalangeni"), TRUE, TRUE },
+	{ "[$THB]",	N_("Thailand, Baht"), TRUE, TRUE },
+	{ "[$TJR]",	N_("Tajikistan, Rubles"), TRUE, TRUE },
+	{ "[$TMM]",	N_("Turkmenistan, Manats"), TRUE, TRUE },
+	{ "[$TND]",	N_("Tunisia, Dinars"), TRUE, TRUE },
+	{ "[$TOP]",	N_("Tonga, Pa'anga"), TRUE, TRUE },
+	{ "[$TRL]",	N_("Turkey, Liras"), TRUE, TRUE },
+	{ "[$TTD]",	N_("Trinidad and Tobago, Dollars"), TRUE, TRUE },
+	{ "[$TVD]",	N_("Tuvalu, Tuvalu Dollars"), TRUE, TRUE },
+	{ "[$TWD]",	N_("Taiwan, New Dollars"), TRUE, TRUE },
+	{ "[$TZS]",	N_("Tanzania, Shillings"), TRUE, TRUE },
+	{ "[$UAH]",	N_("Ukraine, Hryvnia"), TRUE, TRUE },
+	{ "[$UGX]",	N_("Uganda, Shillings"), TRUE, TRUE },
+	{ "[$USD]",	N_("United States of America, Dollars"), TRUE, TRUE },
+	{ "[$UYU]",	N_("Uruguay, Pesos"), TRUE, TRUE },
+	{ "[$UZS]",	N_("Uzbekistan, Sums"), TRUE, TRUE },
+	{ "[$VEB]",	N_("Venezuela, Bolivares"), TRUE, TRUE },
+	{ "[$VND]",	N_("Viet Nam, Dong"), TRUE, TRUE },
+	{ "[$VUV]",	N_("Vanuatu, Vatu"), TRUE, TRUE },
+	{ "[$WST]",	N_("Samoa, Tala"), TRUE, TRUE },
+	{ "[$XAF]",	N_("Communaute Financiere Africaine BEAC, Francs"), TRUE, TRUE },
+	{ "[$XAG]",	N_("Silver, Ounces"), TRUE, TRUE },
+	{ "[$XAU]",	N_("Gold, Ounces"), TRUE, TRUE },
+	{ "[$XCD]",	N_("East Caribbean Dollars"), TRUE, TRUE },
+	{ "[$XDR]",	N_("International Monetary Fund (IMF) Special Drawing Rights"), TRUE, TRUE },
+	{ "[$XOF]",	N_("Communaute Financiere Africaine BCEAO, Francs"), TRUE, TRUE },
+	{ "[$XPD]",	N_("Palladium, Ounces"), TRUE, TRUE },
+	{ "[$XPF]",	N_("Comptoirs Francais du Pacifique Francs"), TRUE, TRUE },
+	{ "[$XPT]",	N_("Platinum, Ounces"), TRUE, TRUE },
+	{ "[$YER]",	N_("Yemen, Rials"), TRUE, TRUE },
+	{ "[$YUM]",	N_("Yugoslavia, New Dinars"), TRUE, TRUE },
+	{ "[$ZAR]",	N_("South Africa, Rand"), TRUE, TRUE },
+	{ "[$ZMK]",	N_("Zambia, Kwacha"), TRUE, TRUE },
+	{ "[$ZWD]",	N_("Zimbabwe, Zimbabwe Dollars"), TRUE, TRUE },
+
+	{ NULL, NULL, FALSE, FALSE }
+};
+
+/* Returns the index in go_format_currencies of the symbol in ptr */
+static int
+find_currency (char const *ptr, int len)
+{
+	int i;
+
+	if (len == 5 && memcmp (ptr, "\"€\"", 5) == 0) {
+		/* Accept quoted Euro character -- arbitrarity pick form 1.  */
+		return EURO_FORM_1;
+	} else if (len >= 2 && ptr[0] == '"' && ptr [len - 1] == '"') {
+		/* Accept quotes around the currency.  */
+		ptr++;
+		len -= 2;
+	}
+
+	for (i = 0; go_format_currencies[i].symbol; i++)
+		if (strncmp (go_format_currencies[i].symbol, ptr, len) == 0)
+			return i;
+
+	return -1;
+}
+
+static GOFormatFamily
+cell_format_simple_number (char const * const fmt, GOFormatDetails *info)
+{
+	GOFormatFamily result = GO_FORMAT_NUMBER;
+	int cur = -1;
+	regmatch_t match[7];
+
+	if (go_regexec (&re_simple_number, fmt, G_N_ELEMENTS (match), match, 0) == 0) {
+
+		if (match[2].rm_eo == -1 && match[6].rm_eo == -1) {
+			result = GO_FORMAT_NUMBER;
+			info->currency_symbol_index = 0;
+		} else {
+			result = GO_FORMAT_CURRENCY;
+			if (match[6].rm_eo == -1)
+				cur = find_currency (fmt + match[2].rm_so,
+						     match[2].rm_eo
+						     - match[2].rm_so);
+			else if (match[2].rm_eo == -1)
+				cur = find_currency (fmt + match[6].rm_so,
+						     match[6].rm_eo
+						     - match[6].rm_so);
+			if (cur == -1)
+				return GO_FORMAT_UNKNOWN;
+			info->currency_symbol_index = cur;
+		}
+
+		if (match[3].rm_eo != -1)
+			info->thousands_sep = TRUE;
+
+		info->num_decimals = 0;
+		if (match[4].rm_eo != -1)
+			info->num_decimals = match[4].rm_eo -
+				match[4].rm_so - 1;
+
+		return result;
+	} else {
+		return GO_FORMAT_UNKNOWN;
+	}
+}
+
+static GOFormatFamily
+cell_format_is_number (char const * const fmt, GOFormatDetails *info)
+{
+	GOFormatFamily result = GO_FORMAT_NUMBER;
+	char const *ptr = fmt;
+	int cur = -1;
+	regmatch_t match[9];
+
+	/* GO_FORMAT_CURRENCY or GO_FORMAT_NUMBER ? */
+	if ((result = cell_format_simple_number (fmt, info)) != GO_FORMAT_UNKNOWN)
+		return result;
+
+	if (go_regexec (&re_red_number, fmt, G_N_ELEMENTS (match), match, 0) == 0) {
+		char *tmp = g_strndup(fmt+match[1].rm_so,
+				      match[1].rm_eo-match[1].rm_so);
+		result = cell_format_simple_number (tmp, info);
+		g_free(tmp);
+		info->negative_fmt = 1;
+		return result;
+	}
+
+	if (go_regexec (&re_brackets_number, fmt, G_N_ELEMENTS (match), match, 0) == 0) {
+		char *tmp = g_strndup(fmt+match[1].rm_so,
+				      match[1].rm_eo-match[1].rm_so);
+		result = cell_format_simple_number (tmp, info);
+		g_free(tmp);
+		if (match[2].rm_eo != -1)
+			info->negative_fmt = 3;
+		else
+			info->negative_fmt = 2;
+		return result;
+	}
+
+	/* GO_FORMAT_PERCENTAGE or GO_FORMAT_SCIENTIFIC ? */
+	if (go_regexec (&re_percent_science, fmt, G_N_ELEMENTS (match), match, 0) == 0) {
+		info->num_decimals = 0;
+		if (match[1].rm_eo != -1)
+			info->num_decimals = match[1].rm_eo -
+				match[1].rm_so - 1;
+
+		if (ptr[match[2].rm_so] == '%')
+			return GO_FORMAT_PERCENTAGE;
+		else
+			return GO_FORMAT_SCIENTIFIC;
+	}
+
+	/* GO_FORMAT_ACCOUNTING */
+	if (go_regexec (&re_account, fmt, G_N_ELEMENTS (match), match, 0) == 0) {
+		info->num_decimals = 0;
+		if (match[5].rm_eo != -1)
+			info->num_decimals = match[5].rm_eo -
+				match[5].rm_so - 1;
+
+		if (match[1].rm_eo == -1 && match[6].rm_eo == -1)
+			return GO_FORMAT_UNKNOWN;
+		else {
+			if (match[8].rm_eo == -1)
+				cur = find_currency (ptr + match[3].rm_so,
+						    match[3].rm_eo
+						    - match[3].rm_so);
+			else if (match[3].rm_eo == -1)
+				cur = find_currency (ptr + match[8].rm_so,
+						    match[8].rm_eo
+						    - match[8].rm_so);
+			else
+				return GO_FORMAT_UNKNOWN;
+
+		}
+
+		if (cur == -1)
+			return GO_FORMAT_UNKNOWN;
+		info->currency_symbol_index = cur;
+
+		return GO_FORMAT_ACCOUNTING;
+	}
+
+	return GO_FORMAT_UNKNOWN;
+
+}
+
+static gboolean
+cell_format_is_fraction (char const *fmt, GOFormatDetails *info)
+{
+	regmatch_t match[3];
+	const char *denominator;
+
+	if (go_regexec (&re_fraction, fmt, G_N_ELEMENTS (match), match, 0) != 0)
+		return FALSE;
+
+	denominator = fmt + match[2].rm_so;
+	if (denominator[0] == '?') {
+		info->num_decimals = match[1].rm_eo - match[1].rm_so;
+		info->fraction_denominator = 0;
+	} else {
+		info->num_decimals = 0;
+		info->fraction_denominator = atoi (denominator);
+	}
+	return TRUE;
+}
+
+
+GOFormatFamily
+go_format_classify (GOFormat const *gf, GOFormatDetails *info)
+{
+	char const *fmt = gf->format;
+	GOFormatFamily res;
+	int i;
+
+	g_return_val_if_fail (fmt != NULL, GO_FORMAT_GENERAL);
+	g_return_val_if_fail (info != NULL, GO_FORMAT_GENERAL);
+
+	/* Init the result to something sane */
+	info->thousands_sep = FALSE;
+	info->num_decimals = 2;
+	info->negative_fmt = 0;
+	info->list_element = 0;
+	info->currency_symbol_index = 1; /* '$' */
+	info->date_has_days = FALSE;
+	info->date_has_months = FALSE;
+	info->fraction_denominator = 0;
+
+	if (*fmt == '\0')
+		return GO_FORMAT_UNKNOWN;
+
+	/* Note: ->family is not yet ready.  */
+	if (g_ascii_strcasecmp (gf->format, fmts_general[0]) == 0)
+		return GO_FORMAT_GENERAL;
+
+	if (fmt[0] == '@' && fmt[1] == '[')
+		return GO_FORMAT_MARKUP;
+
+	/* Can we parse it ? */
+	if ((res = cell_format_is_number (fmt, info)) != GO_FORMAT_UNKNOWN)
+		return res;
+
+	if (cell_format_is_fraction (fmt, info))
+		return GO_FORMAT_FRACTION;
+
+	/* Is it in the lists */
+	for (i = 0; go_format_builtins[i] != NULL ; ++i) {
+		int j = 0;
+		char const * const * elem = go_format_builtins[i];
+		for (; elem[j] ; ++j)
+			if (g_ascii_strcasecmp (_(elem[j]), fmt) == 0) {
+				info->list_element = j;
+				switch (i) {
+				case GO_FORMAT_DATE:
+					info->date_has_days = 
+						(NULL != g_utf8_strchr (elem[j],-1,'d'));
+					info->date_has_months = 
+						(NULL != g_utf8_strchr (elem[j],-1,'m'));
+					break;
+				default:
+					break;
+				}
+				
+				return i;
+			}
+	}
+	return GO_FORMAT_UNKNOWN;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,386 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-color.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-color.h"
+
+#include <stdio.h>
+
+void
+go_color_to_artpix (ArtPixMaxDepth *res, GOColor rgba)
+{
+	guint8 r = UINT_RGBA_R (rgba);
+	guint8 g = UINT_RGBA_G (rgba);
+	guint8 b = UINT_RGBA_B (rgba);
+	guint8 a = UINT_RGBA_A (rgba);
+	res[0] = ART_PIX_MAX_FROM_8 (r);
+	res[1] = ART_PIX_MAX_FROM_8 (g);
+	res[2] = ART_PIX_MAX_FROM_8 (b);
+	res[3] = ART_PIX_MAX_FROM_8 (a);
+}
+
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ *  A slightly modified version of art_rgb_svp to render into rgba buffer
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library 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 Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *  Authors:
+ *    Raph Levien <raph at acm.org>
+ *    Lauris Kaplinski <lauris at ariman.ee>
+ *
+ *  Copyright (C) 1998 Raph Levien
+ *
+ */
+
+/* Render a sorted vector path into an RGBA buffer. */
+#include <libart_lgpl/art_misc.h>
+#include <libart_lgpl/art_svp_render_aa.h>
+#include <libart_lgpl/art_rgb.h>
+
+typedef struct {
+	int const *alphatab;
+	art_u8 r, g, b;
+	art_u8 *buf;
+	int rowstride;
+	int x0, x1;
+} solid_data;
+
+static void
+fill_solid (art_u8 * buf, art_u8 r, art_u8 g, art_u8 b, int n)
+{
+	while (n-- > 0) {
+		* buf++ = r;
+		* buf++ = g;
+		* buf++ = b;
+		* buf++ = 255;
+	}
+}
+
+static void
+fill_blend (art_u8 * buf, art_u8 r, art_u8 g, art_u8 b, int alpha, int n)
+{
+	int br, bg, bb, ba;
+	int cr, cg, cb;
+
+	while (n-- > 0) {
+		br = * (buf + 0);
+		bg = * (buf + 1);
+		bb = * (buf + 2);
+		ba = * (buf + 3);
+
+		cr = (br * ba + 0x80) >> 8;
+		cg = (bg * ba + 0x80) >> 8;
+		cb = (bb * ba + 0x80) >> 8;
+
+		* buf++ = cr + (((r - cr) * alpha + 0x80) >> 8);
+		* buf++ = cg + (((g - cg) * alpha + 0x80) >> 8);
+		* buf++ = cb + (((b - cb) * alpha + 0x80) >> 8);
+		* buf++ = ba + (((255 - ba) * alpha + 0x80) >> 8);
+	}
+}
+
+static void
+cb_fill_alpha (void *callback_data, int y, int start,
+	       ArtSVPRenderAAStep *steps, int n_steps)
+{
+	solid_data *data = callback_data;
+	art_u8 *linebuf;
+	int run_x0, run_x1;
+	art_u32 running_sum = start;
+	int x0, x1;
+	int k;
+	art_u8 r, g, b;
+	int const *alphatab;
+	int alpha;
+
+	linebuf = data->buf;
+	x0 = data->x0;
+	x1 = data->x1;
+
+	r = data->r;
+	g = data->g;
+	b = data->b;
+	alphatab = data->alphatab;
+
+	if (n_steps > 0) {
+		run_x1 = steps[0].x;
+		if (run_x1 > x0) {
+			alpha = (running_sum >> 16) & 0xff;
+			if (alpha)
+				fill_blend (linebuf, r, g, b, alphatab[alpha],
+					    run_x1 - x0);
+		}
+
+		/* render the steps into tmpbuf */
+		for (k = 0; k < n_steps - 1; k++) {
+			running_sum += steps[k].delta;
+			run_x0 = run_x1;
+			run_x1 = steps[k + 1].x;
+			if (run_x1 > run_x0) {
+				alpha = (running_sum >> 16) & 0xff;
+				if (alpha)
+					fill_blend (linebuf + (run_x0 - x0) * 4, r, g, b, alphatab[alpha],
+						    run_x1 - run_x0);
+			}
+		}
+		running_sum += steps[k].delta;
+		if (x1 > run_x1) {
+			alpha = (running_sum >> 16) & 0xff;
+			if (alpha)
+				fill_blend (linebuf + (run_x1 - x0) * 4, r, g, b, alphatab[alpha],
+					    x1 - run_x1);
+		}
+	} else {
+		alpha = (running_sum >> 16) & 0xff;
+		if (alpha)
+			fill_blend (linebuf, r, g, b, alphatab[alpha],
+				    x1 - x0);
+	}
+
+	data->buf += data->rowstride;
+}
+
+static void
+cb_fill_opaque (void *callback_data, int y, int start,
+		ArtSVPRenderAAStep *steps, int n_steps)
+{
+	solid_data *data = callback_data;
+	art_u8 *linebuf;
+	int run_x0, run_x1;
+	art_u32 running_sum = start;
+	int x0, x1;
+	int k;
+	art_u8 r, g, b;
+	int const *alphatab;
+	int alpha;
+
+	linebuf = data->buf;
+	x0 = data->x0;
+	x1 = data->x1;
+
+	r = data->r;
+	g = data->g;
+	b = data->b;
+	alphatab = data->alphatab;
+
+	if (n_steps > 0) {
+		run_x1 = steps[0].x;
+		if (run_x1 > x0) {
+			alpha = running_sum >> 16;
+			if (alpha) {
+				if (alpha >= 255)
+					fill_solid (linebuf, r, g, b,
+						    run_x1 - x0);
+				else
+					fill_blend (linebuf, r, g, b, alphatab[alpha],
+						    run_x1 - x0);
+			}
+		}
+
+		/* render the steps into tmpbuf */
+		for (k = 0; k < n_steps - 1; k++) {
+			running_sum += steps[k].delta;
+			run_x0 = run_x1;
+			run_x1 = steps[k + 1].x;
+			if (run_x1 > run_x0) {
+				alpha = running_sum >> 16;
+				if (alpha) {
+					if (alpha >= 255)
+						fill_solid (linebuf + (run_x0 - x0) * 4, r, g, b,
+							    run_x1 - run_x0);
+					else
+						fill_blend (linebuf + (run_x0 - x0) * 4, r, g, b, alphatab[alpha],
+							    run_x1 - run_x0);
+				}
+			}
+		}
+		running_sum += steps[k].delta;
+		if (x1 > run_x1) {
+			alpha = running_sum >> 16;
+			if (alpha) {
+				if (alpha >= 255)
+					fill_solid (linebuf + (run_x1 - x0) * 4, r, g, b,
+						    x1 - run_x1);
+				else
+					fill_blend (linebuf + (run_x1 - x0) * 4, r, g, b, alphatab[alpha],
+						    x1 - run_x1);
+			}
+		}
+	} else {
+		alpha = running_sum >> 16;
+		if (alpha) {
+			if (alpha >= 255)
+				fill_solid (linebuf, r, g, b, x1 - x0);
+			else
+				fill_blend (linebuf, r, g, b, alphatab[alpha], x1 - x0);
+		}
+	}
+
+	data->buf += data->rowstride;
+}
+
+/**
+ * go_color_render_svp: Alpha-composite sorted vector path over RGBA buffer.
+ * @color : Color in 0xRRGGBBAA format.
+ * @svp   : The source sorted vector path.
+ * @x0    : Left coordinate of destination rectangle.
+ * @y0    : Top coordinate of destination rectangle.
+ * @x1    : Right coordinate of destination rectangle.
+ * @y1    : Bottom coordinate of destination rectangle.
+ * @buf   : Destination RGB buffer.
+ * @rowstride: Rowstride of @buf buffer.
+ *
+ * Renders the shape specified with @svp over the @buf RGB buffer.
+ * @x1 - @x0 specifies the width, and @y1 - @y0 specifies the height,
+ * of the rectangle rendered. The new pixels are stored starting at
+ * the first byte of @buf. Thus, the @x0 and @y0 parameters specify
+ * an offset within @svp, and may be tweaked as a way of doing
+ * integer-pixel translations without fiddling with @svp itself.
+ *
+ * The @color argument specifies the color for the rendering. Pixels of
+ * entirely 0 winding number are left untouched. Pixels of entirely
+ * 1 winding number have the color @color composited over them (ie,
+ * are replaced by the red, green, blue components of @color if the alpha
+ * component is 0xff). Pixels of intermediate coverage are linearly
+ * interpolated.
+ **/
+void
+go_color_render_svp (GOColor color, ArtSVP const *svp,
+		     int x0, int y0, int x1, int y1,
+		     art_u8 *buf, int rowstride)
+{
+	solid_data data;
+	int alpha, i, a, da;
+	int alphatab[256];
+
+	data.rowstride = rowstride;
+	data.buf = buf;
+	data.x0 = x0;
+	data.x1 = x1;
+	data.r = UINT_RGBA_R (color);
+	data.g = UINT_RGBA_G (color);
+	data.b = UINT_RGBA_B (color);
+	alpha  = UINT_RGBA_A (color);
+
+	a = 0x8000;
+	da = (alpha * 66051 + 0x80) >> 8; /* 66051 equals 2 ^ 32 / (255 * 255) */
+
+	if (alpha != 0xff) {
+		for (i = 0; i < 256; i++) {
+			alphatab[i] = a >> 16;
+			a += da;
+		}
+		data.alphatab = alphatab;
+		art_svp_render_aa (svp, x0, y0, x1, y1, &cb_fill_alpha, &data);
+	} else {
+		/* Hard code the most common table */
+		static int const opaque[] = {
+			0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+			18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+			34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+			50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+			66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+			82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+			98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+			111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+			123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135,
+			136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+			148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+			160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+			172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+			184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+			196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+			208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+			220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+			232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+			244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256
+		};
+		data.alphatab = opaque;
+		art_svp_render_aa (svp, x0, y0, x1, y1, &cb_fill_opaque, &data);
+	}
+}
+
+GOColor
+go_color_from_str (gchar const *string)
+{
+	unsigned r, g, b, a;
+	GOColor color = 0;
+
+	if (sscanf ((char const *) string, "%X:%X:%X:%X", &r, &g, &b, &a) == 4)
+		color = RGBA_TO_UINT (r, g, b, a);
+	return color;
+}
+
+gchar *
+go_color_as_str (GOColor color)
+{
+	unsigned r, g, b, a;
+
+	UINT_TO_RGBA (color, &r, &g, &b, &a);
+	return g_strdup_printf ("%X:%X:%X:%X", r, g, b, a);
+}
+
+PangoAttribute *
+go_color_to_pango (GOColor color, gboolean is_fore)
+{
+	guint16 r, g, b;
+	r  = UINT_RGBA_R (color);
+	r |= (r << 8);
+	g  = UINT_RGBA_G (color);
+	g |= (g << 8);
+	b  = UINT_RGBA_B (color);
+	b |= (b << 8);
+
+	if (is_fore)
+		return pango_attr_foreground_new (r, g, b);
+	else
+		return pango_attr_background_new (r, g, b);
+}
+
+#ifdef WITH_GTK
+#include <gdk/gdkcolor.h>
+
+GdkColor *
+go_color_to_gdk	(GOColor color, GdkColor *res)
+{
+	res->red    = UINT_RGBA_R (color);
+	res->red   |= (res->red << 8);
+	res->green  = UINT_RGBA_G (color);
+	res->green |= (res->green << 8);
+	res->blue   = UINT_RGBA_B (color);
+	res->blue  |= (res->blue << 8);
+
+	return res;
+}
+#endif /* WITH_GTK */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-color.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,125 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-color.h
+ *
+ * Copyright (C) 1999, 2000 EMC Capital Management, Inc.
+ *
+ * Developed by Jon Trowbridge <trow at gnu.org> and
+ * Havoc Pennington <hp at pobox.com>.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GO_COLOR_H
+#define GO_COLOR_H
+
+#include <glib.h>
+#include <goffice/utils/goffice-utils.h>
+#include <libart_lgpl/art_render.h>
+#include <libart_lgpl/art_svp.h>
+#include <pango/pango.h>
+
+#ifdef WITH_GTK
+#include <gdk/gdktypes.h>
+#endif
+
+G_BEGIN_DECLS
+
+/*
+  Some convenient macros for drawing into an RGB buffer.
+  Beware of side effects, code-bloat, and all of the other classic
+  cpp-perils...
+*/
+
+#define GDK_TO_UINT(c)	RGBA_TO_UINT(((c).red>>8), ((c).green>>8), ((c).blue>>8), 0xff)
+
+#define RGB_TO_UINT(r,g,b)	((((guint)(r))<<16)|(((guint)(g))<<8)|((guint)(b)))
+#define RGB_TO_RGBA(x,a)	(((x) << 8) | ((((guint)a) & 0xff)))
+#define RGB_WHITE   RGB_TO_UINT(0xff, 0xff, 0xff)
+#define RGB_BLACK   RGB_TO_UINT(0x00, 0x00, 0x00)
+#define RGB_RED     RGB_TO_UINT(0xff, 0x00, 0x00)
+#define RGB_GREEN   RGB_TO_UINT(0x00, 0xff, 0x00)
+#define RGB_BLUE    RGB_TO_UINT(0x00, 0x00, 0xff)
+#define RGB_YELLOW  RGB_TO_UINT(0xff, 0xff, 0x00)
+#define RGB_VIOLET  RGB_TO_UINT(0xff, 0x00, 0xff)
+#define RGB_CYAN    RGB_TO_UINT(0x00, 0xff, 0xff)
+#define RGB_GREY(x) RGB_TO_UINT(x,x,x)
+
+#define RGBA_TO_UINT(r,g,b,a)	((((guint)(r))<<24)|(((guint)(g))<<16)|(((guint)(b))<<8)|(guint)(a))
+#define RGBA_WHITE  RGB_TO_RGBA(RGB_WHITE, 0xff)
+#define RGBA_BLACK  RGB_TO_RGBA(RGB_BLACK, 0xff)
+#define RGBA_RED    RGB_TO_RGBA(RGB_RED, 0xff)
+#define RGBA_GREEN  RGB_TO_RGBA(RGB_GREEN, 0xff)
+#define RGBA_BLUE   RGB_TO_RGBA(RGB_BLUE, 0xff)
+#define RGBA_YELLOW RGB_TO_RGBA(RGB_YELLOW, 0xff)
+#define RGBA_VIOLET RGB_TO_RGBA(RGB_VIOLET, 0xff)
+#define RGBA_CYAN   RGB_TO_RGBA(RGB_CYAN, 0xff)
+#define RGBA_GREY(x) RGB_TO_RGBA(RGB_GREY(x), 0xff)
+
+#define UINT_RGBA_R(x) (((guint)(x))>>24)
+#define UINT_RGBA_G(x) ((((guint)(x))>>16)&0xff)
+#define UINT_RGBA_B(x) ((((guint)(x))>>8)&0xff)
+#define UINT_RGBA_A(x) (((guint)(x))&0xff)
+#define UINT_RGBA_CHANGE_R(x, r) (((x)&(~(0xff<<24)))|(((r)&0xff)<<24))
+#define UINT_RGBA_CHANGE_G(x, g) (((x)&(~(0xff<<16)))|(((g)&0xff)<<16))
+#define UINT_RGBA_CHANGE_B(x, b) (((x)&(~(0xff<<8)))|(((b)&0xff)<<8))
+#define UINT_RGBA_CHANGE_A(x, a) (((x)&(~0xff))|((a)&0xff))
+#define UINT_TO_RGB(u,r,g,b) \
+{ (*(r)) = ((u)>>16)&0xff; (*(g)) = ((u)>>8)&0xff; (*(b)) = (u)&0xff; }
+#define UINT_TO_RGBA(u,r,g,b,a) \
+{ UINT_TO_RGB(((u)>>8),r,g,b); (*(a)) = (u)&0xff; }
+#define MONO_INTERPOLATE(v1, v2, t) ((gint)rint((v2)*(t)+(v1)*(1-(t))))
+#define UINT_INTERPOLATE(c1, c2, t) \
+  RGBA_TO_UINT( MONO_INTERPOLATE(UINT_RGBA_R(c1), UINT_RGBA_R(c2), t), \
+		MONO_INTERPOLATE(UINT_RGBA_G(c1), UINT_RGBA_G(c2), t), \
+		MONO_INTERPOLATE(UINT_RGBA_B(c1), UINT_RGBA_B(c2), t), \
+		MONO_INTERPOLATE(UINT_RGBA_A(c1), UINT_RGBA_A(c2), t) )
+#define PIXEL_RGB(p, r, g, b) \
+{((guchar*)(p))[0]=(r); ((guchar*)(p))[1]=(g); ((guchar*)(p))[2]=(b);}
+#define PIXEL_RGBA(p, r, g, b, a) \
+{ if ((a)>=0xff) { PIXEL_RGB(p,r,g,b) } \
+  else if ((a)>0) { \
+    guint pixel_tmp; \
+    pixel_tmp = ((guchar*)(p))[0]; \
+    ((guchar*)(p))[0] = pixel_tmp + ((((r)-pixel_tmp)*(a)+0x80) >> 8); \
+    pixel_tmp = ((guchar*)(p))[1]; \
+    ((guchar*)(p))[1] = pixel_tmp + ((((g)-pixel_tmp)*(a)+0x80) >> 8); \
+    pixel_tmp = ((guchar*)(p))[2]; \
+    ((guchar*)(p))[2] = pixel_tmp + ((((b)-pixel_tmp)*(a)+0x80) >> 8); }}
+#define PIXEL_RGB_UINT(p, i) \
+UINT_TO_RGB((i), ((guchar*)p), ((guchar*)p)+1, ((guchar*)p)+2)
+#define PIXEL_RGBA_UINT(p, i) \
+  PIXEL_RGBA((p), ((i)>>24)&0xff, ((i)>>16)&0xff, ((i)>>8)&0xff, (i)&0xff)
+#define PIXEL_BLACK(p) PIXEL_RGB(p,0,0,0)
+#define PIXEL_WHITE(p) PIXEL_RGB(p,0xff,0xff,0xff)
+#define PIXEL_GREY(p,g) PIXEL_RGB(p,g,g,g)
+#define PIXEL_GREYA(p,g,a) PIXEL_RGBA(p,g,g,g,a)
+
+void go_color_to_artpix  (ArtPixMaxDepth *res, GOColor rgba);
+void go_color_render_svp (GOColor color, ArtSVP const *svp,
+			  int x0, int y0, int x1, int y1,
+			  art_u8 *buf, int rowstride);
+
+GOColor   go_color_from_str (char const *string);
+gchar    *go_color_as_str   (GOColor color);
+PangoAttribute *go_color_to_pango (GOColor color, gboolean is_fore);
+#ifdef WITH_GTK
+GdkColor *go_color_to_gdk   (GOColor color, GdkColor *res);
+#endif
+
+G_END_DECLS
+
+#endif /* GO_COLOR_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,634 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-file.c :
+ *
+ * Copyright (C) 2004 Morten Welinder (terra at gnome.org)
+ * Copyright (C) 2004 Yukihiro Nakai  <nakai at gnome.gr.jp>
+ * Copyright (C) 2003, Red Hat, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-file.h"
+#include "go-glib-extras.h"
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-output-stdio.h>
+#ifdef WITH_GNOME
+#include <libgnomevfs/gnome-vfs-utils.h>
+#include <libgnomevfs/gnome-vfs-mime-utils.h>
+#include <gsf-gnome/gsf-input-gnomevfs.h>
+#include <gsf-gnome/gsf-output-gnomevfs.h>
+#include <libgnome/gnome-url.h>
+#else
+#ifdef G_OS_WIN32
+#include <windows.h>
+#include <winreg.h>
+#include <goffice/utils/win32-stub.h>
+#endif
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+/* ------------------------------------------------------------------------- */
+
+char *
+go_filename_from_uri (const char *uri)
+{
+#ifdef WITH_GNOME
+	return gnome_vfs_get_local_path_from_uri (uri);
+#else
+	return g_filename_from_uri (uri, NULL, NULL);
+#endif
+}
+
+
+char *
+go_filename_to_uri (const char *filename)
+{
+	if (g_path_is_absolute (filename)) {
+		char *uri;
+		char *simp = g_strdup (filename);
+		char *p, *q;
+
+		for (p = q = simp; *p;) {
+			if (p != simp &&
+			    p[0] == G_DIR_SEPARATOR &&
+			    p[1] == G_DIR_SEPARATOR) {
+				/* "//" --> "/", except initially.  */
+				p++;
+				continue;
+			}
+
+			if (p[0] == G_DIR_SEPARATOR &&
+			    p[1] == '.' &&
+			    p[2] == G_DIR_SEPARATOR) {
+				/* "/./" -> "/".  */
+				p += 2;
+				continue;
+			}
+
+			*q++ = *p++;
+		}
+		*q = 0;
+
+		/* FIXME: Resolve ".." parts.  */
+#ifdef WITH_GNOME
+		uri = gnome_vfs_get_uri_from_local_path (simp);
+#else
+		uri = g_filename_to_uri (simp, NULL, NULL);
+#endif
+		g_free (simp);
+		return uri;
+	} else {
+		char *uri;
+		char *current_dir = g_get_current_dir ();
+		char *abs_filename =
+			g_build_filename (current_dir, filename, NULL);
+		g_return_val_if_fail (g_path_is_absolute (abs_filename), NULL);
+		uri = go_filename_to_uri (abs_filename);
+		g_free (current_dir);
+		g_free (abs_filename);
+		return uri;
+	}
+}
+
+gchar **
+go_shell_argv_to_glib_encoding (gint argc, gchar const **argv)
+{
+#ifdef G_OS_WIN32
+	gchar **args;
+	gint i;
+
+	args = g_new (gchar *, argc);
+	if (G_WIN32_IS_NT_BASED ())
+	{
+		LPWSTR *wargs;
+		gint narg;
+		GIConv conv;
+
+		wargs = CommandLineToArgvW (GetCommandLineW (), &narg);
+		conv = g_iconv_open ("utf-8", "utf-16le");
+		for (i = 0; i < narg; ++i)
+			args[i] = g_convert_with_iconv ((const gchar *) wargs[i], wcslen (wargs[i]) << 1, conv, NULL, NULL, NULL);
+		g_iconv_close (conv);
+	}
+	else
+	{
+		for (i = 0; i < argc; ++i)
+			args[i] = g_locale_to_utf8 (argv[i], -1, NULL, NULL, NULL);
+	}
+
+	return args;
+#else
+	return (gchar **) argv;
+#endif
+}
+
+char *
+go_shell_arg_to_uri (const char *arg)
+{
+#ifdef WITH_GNOME
+	return gnome_vfs_make_uri_from_shell_arg (arg);
+#else
+	if (g_path_is_absolute (arg))
+		return go_filename_to_uri (arg);
+	else {
+		/* See if it's a file: uri.  */
+		gchar *tmp = go_filename_from_uri (arg);
+		if (tmp) {
+			g_free (tmp);
+			return g_strdup (arg);
+		}
+	}
+
+	/* Just assume it's a filename.  */
+	return go_filename_to_uri (arg);
+#endif
+}
+
+/**
+ * go_basename_from_uri:
+ * @uri :
+ *
+ * Decode the final path component.  Returns as UTF-8 encoded.
+ **/
+char *
+go_basename_from_uri (const char *uri)
+{
+#ifdef WITH_GNOME
+	char *raw_uri = gnome_vfs_unescape_string (uri, G_DIR_SEPARATOR_S);
+	char *basename = raw_uri ? g_path_get_basename (raw_uri) : NULL;
+	g_free (raw_uri);
+#else
+	char *uri_basename = g_path_get_basename (uri);
+	char *fake_uri = g_strconcat ("file:///", uri_basename, NULL);
+	char *filename = go_filename_from_uri (fake_uri);
+	char *basename = filename ? g_path_get_basename (filename) : NULL;
+	g_free (uri_basename);
+	g_free (fake_uri);
+	g_free (filename);
+
+#endif
+	{
+		char *basename_utf8 = basename
+			? g_filename_to_utf8 (basename, -1, NULL, NULL, NULL)
+			: NULL;
+		g_free (basename);
+		return basename_utf8;
+	}
+}
+
+/**
+ * go_dirname_from_uri:
+ * @uri :
+ * @brief: if TRUE, hide "file://" if present.
+ *
+ * Decode the all but the final path component.  Returns as UTF-8 encoded.
+ **/
+char *
+go_dirname_from_uri (const char *uri, gboolean brief)
+{
+	char *dirname_utf8, *dirname;
+
+#ifdef WITH_GNOME
+	char *raw_uri = gnome_vfs_unescape_string (uri, G_DIR_SEPARATOR_S);
+	dirname = raw_uri ? g_path_get_dirname (raw_uri) : NULL;
+	g_free (raw_uri);
+#else
+	char *uri_dirname = g_path_get_dirname (uri);
+	dirname = uri_dirname ? go_filename_from_uri (uri_dirname) : NULL;
+	dirname = dirname ? g_strconcat ("file://", dirname, NULL) : NULL;
+	g_free (uri_dirname);
+#endif
+
+	if (brief && dirname &&
+	    g_ascii_strncasecmp (dirname, "file:///", 8) == 0) {
+		char *temp = g_strdup (dirname + 7);
+		g_free (dirname);
+		dirname = temp;
+	}
+
+	dirname_utf8 = dirname
+		? g_filename_to_utf8 (dirname, -1, NULL, NULL, NULL)
+		: NULL;
+	g_free (dirname);
+	return dirname_utf8;
+}
+
+/* ------------------------------------------------------------------------- */
+
+static gboolean
+is_fd_uri (const char *uri, int *fd)
+{
+	unsigned long ul;
+	char *end;
+
+	if (g_ascii_strncasecmp (uri, "fd://", 5))
+		return FALSE;
+	uri += 5;
+	if (!g_ascii_isdigit (*uri))
+		return FALSE;  /* Space, for example.  */
+
+	ul = strtoul (uri, &end, 10);
+	if (*end != 0 || ul > INT_MAX)
+		return FALSE;
+
+	*fd = (int)ul;
+	return TRUE;
+}
+
+/* ------------------------------------------------------------------------- */
+
+static GsfInput *
+open_plain_file (const char *path, GError **err)
+{
+	GsfInput *input = gsf_input_mmap_new (path, NULL);
+	if (input != NULL)
+		return input;
+	/* Only report error if stdio fails too */
+	return gsf_input_stdio_new (path, err);
+}
+
+
+/**
+ * go_file_open :
+ * @uri :
+ * @err : #GError
+ *
+ * Try all available methods to open a file or return an error
+ **/
+GsfInput *
+go_file_open (char const *uri, GError **err)
+{
+	char *filename;
+	int fd;
+
+	if (err != NULL)
+		*err = NULL;
+	g_return_val_if_fail (uri != NULL, NULL);
+
+	if (uri[0] == G_DIR_SEPARATOR) {
+		g_warning ("Got plain filename %s in go_file_open.", uri);
+		return open_plain_file (uri, err);
+	}
+
+	filename = go_filename_from_uri (uri);
+	if (filename) {
+		GsfInput *result = open_plain_file (filename, err);
+		g_free (filename);
+		return result;
+	}
+
+	if (is_fd_uri (uri, &fd)) {
+		int fd2 = dup (fd);
+		FILE *fil = fd2 != -1 ? fdopen (fd2, "rb") : NULL;
+		GsfInput *result = fil ? gsf_input_stdio_new_FILE (uri, fil, FALSE) : NULL;
+
+		if (!result)
+			g_set_error (err, gsf_output_error_id (), 0,
+				     "Unable to read from %s", uri);
+		return result;
+	}
+
+#ifdef WITH_GNOME
+	return gsf_input_gnomevfs_new (uri, err);
+#else
+	g_set_error (err, gsf_input_error (), 0,
+		     "Invalid or non-supported URI");
+	return NULL;
+#endif
+}
+
+GsfOutput *
+go_file_create (char const *uri, GError **err)
+{
+	char *filename;
+	int fd;
+
+	g_return_val_if_fail (uri != NULL, NULL);
+
+	filename = go_filename_from_uri (uri);
+	if (filename) {
+		GsfOutput *result = gsf_output_stdio_new (filename, err);
+		g_free (filename);
+		return result;
+	}
+
+	if (is_fd_uri (uri, &fd)) {
+		int fd2 = dup (fd);
+		FILE *fil = fd2 != -1 ? fdopen (fd2, "wb") : NULL;
+		GsfOutput *result = fil ? gsf_output_stdio_new_FILE (uri, fil, FALSE) : NULL;
+
+		if (!result)
+			g_set_error (err, gsf_output_error_id (), 0,
+				     "Unable to write to %s", uri);
+		return result;
+	}
+
+#ifdef WITH_GNOME
+	return gsf_output_gnomevfs_new (uri, err);
+#else
+	g_set_error (err, gsf_output_error_id (), 0,
+		     "Invalid or non-supported URI");
+	return NULL;
+#endif
+}
+
+/* ------------------------------------------------------------------------- */
+/* Adapted from gtkfilechooserdefault.c.  Unfortunately it is static there.  */
+
+GSList *
+go_file_split_urls (const char *data)
+{
+  GSList *uris;
+  const char *p, *q;
+
+  uris = NULL;
+
+  p = data;
+
+  /* We don't actually try to validate the URI according to RFC
+   * 2396, or even check for allowed characters - we just ignore
+   * comments and trim whitespace off the ends.  We also
+   * allow LF delimination as well as the specified CRLF.
+   *
+   * We do allow comments like specified in RFC 2483.
+   */
+  while (p)
+    {
+      if (*p != '#')
+	{
+	  while (g_ascii_isspace (*p))
+	    p++;
+
+	  q = p;
+	  while (*q && (*q != '\n') && (*q != '\r'))
+	    q++;
+
+	  if (q > p)
+	    {
+	      q--;
+	      while (q > p && g_ascii_isspace (*q))
+		q--;
+
+	      if (q > p)
+		uris = g_slist_prepend (uris, g_strndup (p, q - p + 1));
+	    }
+	}
+      p = strchr (p, '\n');
+      if (p)
+	p++;
+    }
+
+  uris = g_slist_reverse (uris);
+  return uris;
+}
+
+/* ------------------------------------------------------------------------- */
+
+/*
+ * go_url_decode: decode the result of go_url_encode.
+ */
+gchar*
+go_url_decode (gchar const *text)
+{
+	GString *result;
+
+	g_return_val_if_fail (text != NULL, NULL);
+	g_return_val_if_fail (*text != '\0', NULL);
+
+	result = g_string_new (NULL);
+	while (*text) {
+		unsigned char c = *text++;
+		if (c == '%') {
+			if (g_ascii_isxdigit (text[0]) && g_ascii_isxdigit (text[1])) {
+				g_string_append_c (result,
+						   (g_ascii_xdigit_value (text[0]) << 4) |
+						   g_ascii_xdigit_value (text[1]));
+				text += 2;
+			} else {
+				/* Bogus.  */
+				return g_string_free (result, TRUE);
+			}
+		} else
+			g_string_append_c (result, c);
+	}
+
+	return g_string_free (result, FALSE);
+}
+
+/**
+ * go_url_encode: url-encode a string according to RFC 2368.
+ */
+gchar*
+go_url_encode (gchar const *text)
+{
+	static const char hex[16] = "0123456789ABCDEF";
+	GString* result;
+
+	g_return_val_if_fail (text != NULL, NULL);
+	g_return_val_if_fail (*text != '\0', NULL);
+
+	result = g_string_new (NULL);
+	while (*text) {
+		unsigned char c = *text++;
+		switch (c) {
+		case '.': case '-': case '_': case '@':
+			g_string_append_c (result, c);
+			break;
+		default:
+			if (g_ascii_isalnum (c))
+				g_string_append_c (result, c);
+			else {
+				g_string_append_c (result, '%');
+				g_string_append_c (result, hex[c >> 4]);
+				g_string_append_c (result, hex[c & 0xf]);
+			}
+		}
+	}
+
+	return g_string_free (result, FALSE);
+}
+
+#ifndef WITH_GNOME
+static char *
+check_program (char const *prog)
+{
+	if (NULL == prog)
+		return NULL;
+	if (g_path_is_absolute (prog)) {
+		if (!g_file_test (prog, G_FILE_TEST_IS_EXECUTABLE))
+			return NULL;
+	} else if (!g_find_program_in_path (prog))
+		return NULL;
+	return g_strdup (prog);
+}
+#endif
+
+GError *
+go_url_show (gchar const *url)
+{
+#ifdef G_OS_WIN32
+	ShellExecute (NULL, "open", url, NULL, NULL, SW_SHOWNORMAL);
+
+	return NULL;
+#else
+	GError *err = NULL;
+#ifdef WITH_GNOME
+	gnome_url_show (url, &err);
+	return err;
+#else
+	guint8 *browser = NULL;
+	guint8 *clean_url = NULL;
+
+	/* 1) Check BROWSER env var */
+	browser = check_program (getenv ("BROWSER"));
+
+	if (browser == NULL) {
+		static char const * const browsers[] = {
+			"sensible-browser",	/* debian */
+			"epiphany",		/* primary gnome */
+			"galeon",		/* secondary gnome */
+			"encompass",
+			"firefox",
+			"mozilla-firebird",
+			"mozilla",
+			"netscape",
+			"konqueror",
+			"xterm -e w3m",
+			"xterm -e lynx",
+			"xterm -e links"
+		};
+		unsigned i;
+		for (i = 0 ; i < G_N_ELEMENTS (browsers) ; i++)
+			if (NULL != (browser = check_program (browsers[i])))
+				break;
+  	}
+
+	if (browser != NULL) {
+		gint    argc;
+		gchar **argv = NULL;
+		char   *cmd_line = g_strconcat (browser, " %1", NULL);
+
+		if (g_shell_parse_argv (cmd_line, &argc, &argv, &err)) {
+			/* check for '%1' in an argument and substitute the url
+			 * otherwise append it */
+			gint i;
+			char *tmp;
+
+			for (i = 1 ; i < argc ; i++)
+				if (NULL != (tmp = strstr (argv[i], "%1"))) {
+					*tmp = '\0';
+					tmp = g_strconcat (argv[i],
+						(clean_url != NULL) ? (char const *)clean_url : url,
+						tmp+2, NULL);
+					g_free (argv[i]);
+					argv[i] = tmp;
+					break;
+				}
+
+			/* there was actually a %1, drop the one we added */
+			if (i != argc-1) {
+				g_free (argv[argc-1]);
+				argv[argc-1] = NULL;
+			}
+			g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH,
+				NULL, NULL, NULL, &err);
+			g_strfreev (argv);
+		}
+		g_free (cmd_line);
+	}
+	g_free (browser);
+	g_free (clean_url);
+	return err;
+#endif
+#endif
+}
+
+/**
+ * go_url_check_extension
+ * @uri     : Uri
+ * @std_ext : Standard extension for the content type
+ * @new_uri : New uri
+ *
+ * Modifies given @uri by adding the extension @std_ext if needed.
+ * If no @std_ext is given or @uri already has some extension,
+ * it just copies @uri.
+ *
+ * Value in new_uri:  newly allocated string which you should free after
+ *                    use, containing (optionally) modified uri.
+ *
+ * Return Value:  FALSE if the uri has an extension not matching @std_ext
+ */
+gboolean
+go_url_check_extension (gchar const *uri,
+			gchar const *std_ext,
+			gchar **new_uri)
+{
+	gchar *base;
+	gchar *user_ext;
+	gboolean res;
+
+	g_return_val_if_fail (uri != NULL, FALSE);
+	g_return_val_if_fail (new_uri != NULL, FALSE);
+
+	res      = TRUE;
+	base     = g_path_get_basename (uri);
+	user_ext = strrchr (base, '.');
+	if (std_ext != NULL && strlen (std_ext) > 0 && user_ext == NULL)
+		*new_uri = g_strconcat (uri, ".", std_ext, NULL);
+	else {
+		if (user_ext != NULL && std_ext != NULL)
+			res = !go_utf8_collate_casefold (user_ext + 1, std_ext);
+		*new_uri = g_strdup (uri);
+	}
+	g_free (base);
+
+	return res;
+}
+
+gchar *
+go_get_mime_type (gchar const *uri)
+{
+#ifdef WITH_GNOME
+	return gnome_vfs_get_mime_type (uri);
+#elif defined(G_OS_WIN32)
+	LPWSTR wuri, mime_type;
+
+	wuri = g_utf8_to_utf16 (uri, -1, NULL, NULL, NULL);
+	if (wuri &&
+	    FindMimeFromData_ (NULL, wuri, NULL, 0, NULL, 0, &mime_type, 0) == NOERROR)
+	{
+		g_free (wuri);
+		return g_utf16_to_utf8 (mime_type, -1, NULL, NULL, NULL);
+	}
+
+	g_free (wuri);
+
+	/* We try to determine mime using FindMimeFromData().
+	 * However, we are not sure whether the functions will know about
+	 * the necessary mime types. In the worst wase we fall back to
+	 * "text/plain"
+	 */
+	return g_strdup ("text/plain");
+#else
+	return g_strdup ("application/octet-stream");
+#endif
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-file.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,49 @@
+/*
+ * go-file.h : 
+ *
+ * Copyright (C) 2004 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_FILE_H
+#define GO_FILE_H
+
+#include <glib.h>
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+char *go_filename_from_uri (const char *uri);
+char *go_filename_to_uri (const char *filename);
+char *go_shell_arg_to_uri (const char *arg);
+char *go_basename_from_uri (const char *uri);
+char *go_dirname_from_uri (const char *uri, gboolean brief);
+gchar **go_shell_argv_to_glib_encoding (gint argc, gchar const **argv);
+
+GsfInput  *go_file_open		(char const *uri, GError **err);
+GsfOutput *go_file_create	(char const *uri, GError **err);
+GSList	  *go_file_split_urls	(char const *data);
+
+gchar	*go_url_decode		(gchar const *text);
+gchar	*go_url_encode		(gchar const *text);
+GError	*go_url_show		(gchar const *url);
+gboolean go_url_check_extension (gchar const *uri,
+				 gchar const *std_ext,
+				 gchar **new_uri);
+gchar	*go_get_mime_type	(gchar const *uri);
+
+G_END_DECLS
+
+#endif /* GO_FILE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,239 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-font.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-font.h"
+#include "go-glib-extras.h"
+#include <pango/pango-context.h>
+
+static GHashTable	*font_hash;
+static GPtrArray	*font_array;
+static GSList		*font_watchers;
+static GOFont const	*font_default;
+
+#if 0
+#define ref_debug(x)	x
+#else
+#define ref_debug(x)	do { } while (0)
+#endif
+
+static void
+go_font_free (GOFont *font)
+{
+	g_return_if_fail (font->ref_count == 1);
+	pango_font_description_free (font->desc);
+	g_free (font);
+}
+
+/**
+ * go_font_new_by_desc:
+ * @desc : #PangoFontDescription
+ *
+ * Aborbs @desc and returns a ref to a font that matches it.
+ **/
+GOFont const *
+go_font_new_by_desc (PangoFontDescription *desc)
+{
+	GOFont *font = g_hash_table_lookup (font_hash, desc);
+
+	if (font == NULL) {
+		int i = font_array->len;
+
+		while (i-- > 0 && g_ptr_array_index (font_array, i) != NULL)
+			;
+
+		font = g_new0 (GOFont, 1);
+		font->desc = desc; /* absorb it */
+		font->ref_count = 1; /* one for the hash */
+		ref_debug (g_warning ("created %p = 1", font););
+		if (i < 0) {
+			i = font_array->len;
+			g_ptr_array_add (font_array, font);
+		} else
+			g_ptr_array_index (font_array, i) = font;
+		font->font_index = i;
+		g_hash_table_insert (font_hash, font->desc, font);
+	} else
+		pango_font_description_free (desc);	/* free it */
+
+	return go_font_ref (font); /* and another ref for the result */
+}
+
+GOFont const *
+go_font_new_by_name  (char const *str)
+{
+	return go_font_new_by_desc (pango_font_description_from_string (str));
+}
+
+GOFont const *
+go_font_new_by_index (unsigned i)
+{
+	g_return_val_if_fail (i < font_array->len, NULL);
+	return go_font_ref (g_ptr_array_index (font_array, i));
+}
+
+char *
+go_font_as_str (GOFont const *font)
+{
+	g_return_val_if_fail (font != NULL, g_strdup (""));
+	return pango_font_description_to_string (font->desc);
+}
+
+GOFont const *
+go_font_ref (GOFont const *font)
+{
+	g_return_val_if_fail (font != NULL, NULL);
+	((GOFont *)font)->ref_count++;
+	ref_debug (g_warning ("ref added %p = %d", font, font->ref_count););
+	return font;
+}
+
+void
+go_font_unref (GOFont const *font)
+{
+	g_return_if_fail (font != NULL);
+
+	if (--((GOFont *)font)->ref_count == 1) {
+		GValue instance_and_params[2];
+		GSList *ptr;
+
+		for (ptr = font_watchers; ptr != NULL ; ptr = ptr->next) {
+			GClosure *watcher = ptr->data;
+			gpointer data = watcher->is_invalid ? 
+				NULL : watcher->data;
+			
+			instance_and_params[0].g_type = 0;
+			g_value_init (&instance_and_params[0], G_TYPE_POINTER);
+			g_value_set_pointer (&instance_and_params[0], (gpointer)font);
+
+			instance_and_params[1].g_type = 0;
+			g_value_init (&instance_and_params[1], G_TYPE_POINTER);
+			g_value_set_pointer (&instance_and_params[1], data);
+
+			g_closure_invoke (watcher, NULL, 2,
+				instance_and_params, NULL);
+		}
+		g_ptr_array_index (font_array, font->font_index) = NULL;
+		g_hash_table_remove (font_hash, font->desc);
+		ref_debug (g_warning ("unref removed %p = 1 (and deleted)", font););
+	} else
+		ref_debug (g_warning ("unref removed %p = %d", font, font->ref_count););
+}
+
+gboolean
+go_font_eq (GOFont const *a, GOFont const *b)
+{
+	return pango_font_description_equal (a->desc, b->desc);
+}
+
+void
+go_font_cache_register (GClosure *watcher)
+{
+	g_return_if_fail (watcher != NULL);
+
+	font_watchers = g_slist_prepend (font_watchers, watcher);
+	g_closure_set_marshal (watcher,
+		g_cclosure_marshal_VOID__POINTER);
+}
+
+void
+go_font_cache_unregister (GClosure *watcher)
+{
+	font_watchers = g_slist_remove (font_watchers, watcher);
+}
+
+/*
+ * Returns a sorted list of strings of font family names.  The list and
+ * the names must be freed.
+ */
+GSList *
+go_fonts_list_families (PangoContext *context)
+{
+	PangoFontFamily **pango_families;
+	int i, n_families;
+	GSList *res = NULL;
+
+	pango_context_list_families (context, &pango_families, &n_families);
+	for (i = 0 ; i < n_families ; i++) {
+		const char *name = pango_font_family_get_name (pango_families[i]);
+		if (name)
+			res = g_slist_prepend (res, g_strdup (name));
+	}
+	g_free (pango_families);
+
+	res = g_slist_sort (res, (GCompareFunc)g_utf8_collate);
+	return res;
+}
+
+GSList *
+go_fonts_list_sizes (void)
+{
+	return go_slist_create
+		(GINT_TO_POINTER (4 * PANGO_SCALE),
+		 GINT_TO_POINTER (8 * PANGO_SCALE),
+		 GINT_TO_POINTER (9 * PANGO_SCALE),
+		 GINT_TO_POINTER (10 * PANGO_SCALE),
+		 GINT_TO_POINTER (11 * PANGO_SCALE),
+		 GINT_TO_POINTER (12 * PANGO_SCALE),
+		 GINT_TO_POINTER (14 * PANGO_SCALE),
+		 GINT_TO_POINTER (16 * PANGO_SCALE),
+		 GINT_TO_POINTER (18 * PANGO_SCALE),
+		 GINT_TO_POINTER (20 * PANGO_SCALE),
+		 GINT_TO_POINTER (22 * PANGO_SCALE),
+		 GINT_TO_POINTER (24 * PANGO_SCALE),
+		 GINT_TO_POINTER (26 * PANGO_SCALE),
+		 GINT_TO_POINTER (28 * PANGO_SCALE),
+		 GINT_TO_POINTER (36 * PANGO_SCALE),
+		 GINT_TO_POINTER (48 * PANGO_SCALE),
+		 GINT_TO_POINTER (72 * PANGO_SCALE),
+		 NULL);
+}
+
+/* private */
+void
+go_fonts_init (void)
+{
+	font_array = g_ptr_array_new ();
+	font_hash = g_hash_table_new_full (
+		(GHashFunc)pango_font_description_hash,
+		(GEqualFunc)pango_font_description_equal,
+		NULL, (GDestroyNotify) go_font_free);
+	font_default = go_font_new_by_desc (
+		pango_font_description_from_string ("Sans 8"));
+}
+
+void
+go_fonts_shutdown (void)
+{
+	go_font_unref (font_default);
+	font_default = NULL;
+	g_ptr_array_free (font_array, TRUE);
+	font_array = NULL;
+	g_hash_table_destroy (font_hash);
+	font_hash = NULL;
+
+	if (font_watchers != NULL) {
+		g_warning ("Missing calls to go_font_cache_unregister");
+		/* be careful and _leak_ the closured in case they are already freed */
+		g_slist_free (font_watchers);
+		font_watchers = NULL;
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-font.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,62 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-font.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_FONT_H
+#define GO_FONT_H
+
+#include <glib.h>
+#include <goffice/utils/goffice-utils.h>
+#include <pango/pango-font.h>
+#include <pango/pangofc-fontmap.h>
+
+G_BEGIN_DECLS
+
+struct _GOFont {
+	PangoFontDescription	*desc;
+	int			 underline;
+	gboolean		 strikethrough;
+	GOColor			 color;
+
+	int	 ref_count;
+	int	 font_index; /* each renderer keeps an array for lookup */
+};
+
+GOFont const *go_font_new_by_desc  (PangoFontDescription *desc);
+GOFont const *go_font_new_by_name  (char const *str);
+GOFont const *go_font_new_by_index (unsigned i);
+char   	     *go_font_as_str       (GOFont const *font);
+GOFont const *go_font_ref	   (GOFont const *font);
+void	      go_font_unref	   (GOFont const *font);
+gboolean      go_font_eq	   (GOFont const *a, GOFont const *b);
+
+GSList       *go_fonts_list_families (PangoContext *context);
+GSList       *go_fonts_list_sizes    (void);
+
+/* cache notification */
+void go_font_cache_register   (GClosure *callback);
+void go_font_cache_unregister (GClosure *callback);
+
+/* private */
+void go_fonts_init     (void);
+void go_fonts_shutdown (void);
+
+G_END_DECLS
+
+#endif /* GO_FONT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,545 @@
+#include <goffice/goffice-config.h>
+#include "go-format-match.h"
+#include "go-format.h"
+#include "format-impl.h"
+#include "regutf8.h"
+
+#include <glib/gi18n.h>
+#include <stdio.h>
+#include <string.h>
+
+#define append_type(t) do { guint8 x = t; match_types = g_byte_array_append (match_types, &x, 1); } while (0)
+
+static void
+print_regex_error (int ret)
+{
+	switch (ret) {
+	case REG_BADBR:
+		fprintf (stderr,
+			 "There was an invalid `\\{...\\}' construct in the regular\n"
+			 "expression.  A valid `\\{...\\}' construct must contain either a\n"
+			 "single number, or two numbers in increasing order separated by a\n"
+			 "comma.\n");
+		break;
+
+	case REG_BADPAT:
+		fprintf (stderr,
+			 "There was a syntax error in the regular expression.\n");
+		break;
+
+	case REG_BADRPT:
+		fprintf (stderr,
+			 "A repetition operator such as `?' or `*' appeared in a bad\n"
+			 "position (with no preceding subexpression to act on).\n");
+		break;
+
+	case REG_ECOLLATE:
+		fprintf (stderr,
+			 "The regular expression referred to an invalid collating element\n"
+			 "(one not defined in the current locale for string collation).\n");
+		break;
+
+	case REG_ECTYPE:
+		fprintf (stderr,
+			 "The regular expression referred to an invalid character class name.\n");
+		break;
+
+#if REG_EESCAPE != REG_BADPAT
+	case REG_EESCAPE:
+		fprintf (stderr,
+			 "The regular expression ended with `\\'.\n");
+		break;
+#endif
+
+	case REG_ESUBREG:
+		fprintf (stderr,
+			 "There was an invalid number in the `\\DIGIT' construct.\n");
+		break;
+
+	case REG_EBRACK:
+		fprintf (stderr,
+			 "There were unbalanced square brackets in the regular expression.\n");
+		break;
+
+#if REG_EPAREN != REG_BADPAT
+	case REG_EPAREN:
+		fprintf (stderr,
+			 "An extended regular expression had unbalanced parentheses, or a\n"
+			 "basic regular expression had unbalanced `\\(' and `\\)'.\n");
+		break;
+#endif
+
+#if REG_EBRACE != REG_BADPAT
+	case REG_EBRACE:
+		fprintf (stderr,
+			 "The regular expression had unbalanced `\\{' and `\\}'.\n");
+		break;
+#endif
+
+#ifdef REG_EBOL
+	case REG_EBOL:
+		fprintf (stderr, "Found ^ not at the beginning.\n");
+		break;
+#endif
+
+#ifdef REG_EEOL
+	case REG_EEOL:
+		fprintf (stderr, "Found $ not at the end.\n");
+		break;
+#endif
+
+	case REG_ERANGE:
+		fprintf (stderr,
+			 "One of the endpoints in a range expression was invalid.\n");
+		break;
+
+	case REG_ESPACE:
+		fprintf (stderr,
+			 "`regcomp' ran out of memory.\n");
+		break;
+
+	default:
+		fprintf (stderr, "regexp error %d\n", ret);
+	}
+}
+
+/* Takes a list of strings (optionally include an * at the beginning
+ * that gets stripped, for i18n purposes). and returns a regexp that
+ * would match them */
+static char *
+create_option_list (char const *const *list)
+{
+	int len = 0;
+	char const *const *p;
+	char *res;
+
+	for (p = list; *p; p++) {
+		char const *v = _(*p);
+
+		if (*v == '*')
+			v++;
+		len += strlen (v) + 1;
+	}
+	len += 5;
+
+	res = g_malloc (len);
+	res[0] = '(';
+	res[1] = 0;
+	for (p = list; *p; p++) {
+		char const *v = _(*p);
+
+		if (*v == '*')
+			v++;
+
+		strcat (res, v);
+		if (*(p + 1))
+		    strcat (res, "|");
+	}
+	strcat (res, ")");
+
+	return res;
+}
+
+/* Create a regular expression for the given XL-style format.
+ * NOTE: the format as well as the regexp are UTF-8 encoded. */
+static char *
+format_create_regexp (gchar const *format, GByteArray **dest)
+{
+	GString *regexp;
+	GByteArray *match_types;
+	char *str;
+	gboolean hour_seen = FALSE;
+	gboolean number_seen = FALSE;
+	gboolean fraction = FALSE;
+
+	g_return_val_if_fail (format != NULL, NULL);
+
+#ifdef DEBUG_NUMBER_MATCH
+	printf ("'%s' = ", format);
+#endif
+	regexp = g_string_new ("^");
+	match_types = g_byte_array_new ();
+
+	for (; *format; format = g_utf8_next_char (format)) {
+		gunichar c = g_utf8_get_char (format);
+		switch (c) {
+		case '*':
+			/* FIXME: I don't think this will work for '^'.  */
+			if (format[1]) {
+				format++;
+				g_string_append_c (regexp, '[');
+				g_string_append_unichar (regexp, g_utf8_get_char (format));
+				g_string_append_c (regexp, ']');
+				g_string_append_c (regexp, '*');
+			}
+			break;
+
+		case 'P': case 'p':
+			if (format[1] == 'm' || format[1] == 'M')
+				format++;
+			break;
+
+		case '\\': {
+			if (format[1] != '\0')
+				format++;
+			go_regexp_quote1 (regexp, format);
+			break;
+		}
+
+		case '[' :
+			/* Currency symbol */
+			if (format[1] == '$') {
+				for (format += 2; *format && *format != ']' ; ++format)
+					g_string_append_c (regexp, *format);
+				if (*format != ']')
+					format--;
+				break;
+			} else if (format[1] == 'h' && format[2] == ']') {
+				g_string_append (regexp, "([-+]?[0-9]+)");
+				append_type (MATCH_CUMMULATIVE_HOURS);
+				hour_seen = TRUE;
+				format += 2;
+				break;
+			} else if (format[1] == 'm' && format[2] == ']') {
+				g_string_append (regexp, "([-+]?[0-9]+)");
+				append_type (hour_seen ? MATCH_MINUTE : MATCH_CUMMULATIVE_MINUTES);
+				format += 2;
+				break;
+			} else if (format[1] == 's' && format[2] == ']') {
+				g_string_append (regexp, "([-+]?[0-9]+)");
+				append_type (MATCH_CUMMULATIVE_SECONDS);
+				format += 2;
+				break;
+			}
+
+		case '%':
+			g_string_append (regexp, "%");
+			append_type (MATCH_PERCENT);
+			break;
+
+		case '#': case '0': case '.': case '+': case '?': {
+			gboolean include_sep = FALSE;
+			gboolean include_decimal = FALSE;
+
+			while (*format == '#' || *format == '0' || *format == '.' ||
+			       *format == '-' || *format == 'E' || *format == 'e' ||
+			       *format == '+' || *format == '?' || *format == ',') {
+				switch (*format) {
+				case ',': include_sep = TRUE; break;
+				case '.': include_decimal = TRUE; break;
+				}
+				format++;
+			}
+			format--;
+
+			if (format[1] == '/' && number_seen)
+				append_type (MATCH_NUMERATOR);
+			else
+				append_type (MATCH_NUMBER);
+
+			if (include_sep) {
+				/* Not strictly correct.
+				 * There should be a limit of 1-3 digits.
+				 * However, that creates problems when
+				 * There are formats like
+				 *  $#,##0.00
+				 * but not
+				 *  $###0.00
+				 * as a result $1000 would not be recognized.
+				 */
+				g_string_append (regexp, "([-+]?[0-9]+(");
+				go_regexp_quote (regexp, format_get_thousand ()->str);
+				g_string_append (regexp, "[0-9]{3})*)");
+				append_type (MATCH_SKIP);
+			} else {
+				g_string_append (regexp, "([-+]?[0-9]+)");
+			}
+
+			if (include_decimal) {
+				g_string_append (regexp, "?(");
+				go_regexp_quote (regexp, format_get_decimal ()->str);
+				g_string_append (regexp, "[0-9]+([Ee][-+]?[0-9]+)?)");
+				append_type (MATCH_NUMBER_DECIMALS);
+			}
+
+			number_seen = TRUE;
+			break;
+		}
+
+		case 'h':
+		case 'H':
+			hour_seen = TRUE;
+			if (format[1] == 'h' || format[1] == 'H')
+				format++;
+
+			g_string_append (regexp, "([0-9][0-9]?)");
+			append_type (MATCH_HOUR);
+			break;
+
+		case 'M':
+		case 'm':
+			if (hour_seen) {
+				if (format[1] == 'm' || format[1] == 'M')
+					format++;
+				g_string_append (regexp, "([0-9][0-9]?)");
+				append_type (MATCH_MINUTE);
+				hour_seen = FALSE;
+			} else {
+				if (format[1] == 'm' || format[1] == 'M') {
+					if (format[2] == 'm' || format[2] == 'M') {
+						if (format[3] == 'm' || format[3] == 'M') {
+							char *l;
+
+							l = create_option_list (month_long);
+							g_string_append (regexp, l);
+							g_free (l);
+
+							append_type (MATCH_MONTH_FULL);
+							format++;
+						} else {
+							char *l;
+
+							l = create_option_list (month_short);
+							g_string_append (regexp, l);
+							g_free (l);
+
+							append_type (MATCH_MONTH_SHORT);
+						}
+						format++;
+					} else {
+						g_string_append (regexp, "([0-9][0-9]?)");
+						append_type (MATCH_MONTH_NUMBER);
+					}
+					format++;
+				} else {
+					g_string_append (regexp, "([0-9][0-9]?)");
+					append_type (MATCH_MONTH_NUMBER);
+				}
+			}
+			break;
+
+		case 's':
+		case 'S':
+			/* ICK!
+			 * ICK!
+			 * 'm' is ambiguous.  It can be months or minutes.
+			 */
+			{
+				int l = match_types->len;
+				if (l > 0 && match_types->data[l - 1] == MATCH_MONTH_NUMBER)
+					match_types->data[l - 1] = MATCH_MINUTE;
+			}
+
+			if (format[1] == 's' || format[1] == 'S')
+				format++;
+			g_string_append (regexp, "([0-9][0-9]?)");
+			append_type (MATCH_SECOND);
+			break;
+
+		case 'D':
+		case 'd':
+			if (format[1] == 'd' || format[1] == 'D') {
+				if (format[2] == 'd' || format[2] == 'D') {
+					if (format[3] == 'd' || format[3] == 'D') {
+						char *l;
+
+						l = create_option_list (day_long);
+						g_string_append (regexp, l);
+						g_free (l);
+
+						append_type (MATCH_DAY_FULL);
+						format++;
+					} else {
+						char *l;
+
+						l = create_option_list (day_short);
+						g_string_append (regexp, l);
+						g_free (l);
+					}
+					format++;
+				} else {
+					g_string_append (regexp, "([0-9][0-9]?)");
+					append_type (MATCH_DAY_NUMBER);
+				}
+				format++;
+			} else {
+				g_string_append (regexp, "([0-9][0-9]?)");
+				append_type (MATCH_DAY_NUMBER);
+			}
+			break;
+
+		case 'Y':
+		case 'y':
+			if (format[1] == 'y' || format[1] == 'Y') {
+				if (format[2] == 'y' || format[2] == 'Y') {
+					if (format[3] == 'y' || format[3] == 'Y') {
+						g_string_append (regexp, "([0-9][0-9][0-9][0-9])");
+						append_type (MATCH_YEAR_FULL);
+						format++;
+					}
+					format++;
+				} else {
+					g_string_append (regexp, "([0-9][0-9]?)");
+					append_type (MATCH_YEAR_SHORT);
+				}
+				format++;
+			} else {
+				g_string_append (regexp, "([0-9][0-9]?)");
+				append_type (MATCH_YEAR_SHORT);
+			}
+			break;
+
+		case ';':
+			/* TODO : Is it ok to only match the first entry ?? */
+			/* FIXME: What is this?  */
+			while (*format)
+				format = g_utf8_next_char (format);
+			format = g_utf8_prev_char (format);
+			break;
+
+		case 'A': case 'a':
+			if (*(format + 1) == 'm' || *(format + 1) == 'M') {
+				if (*(format + 2) == '/') {
+					if (*(format + 3) == 'P' || *(format + 3) == 'p') {
+						if (*(format + 4) == 'm' || *(format + 4) == 'M') {
+							format++;
+						}
+						format++;
+					}
+					format++;
+				}
+				format++;
+			}
+			g_string_append (regexp, "([Aa]|[Pp])[Mm]?");
+			append_type (MATCH_AMPM);
+			break;
+
+		case '"':
+			/* Matches a string */
+			format++;
+			while (*format != '"') {
+				if (*format == 0)
+					goto error;
+				format = go_regexp_quote1 (regexp, format);
+			}
+			break;
+
+		case '@':
+			g_string_append (regexp, "(.*)");
+			append_type (MATCH_STRING_CONSTANT);
+			break;
+
+		case '_':
+			if (format[1]) {
+				g_string_append (regexp, "[ ]?");
+				format++;
+			}
+			break;
+
+		case '/':
+			g_string_append_c (regexp, '/');
+			if (number_seen) {
+				fraction = TRUE;
+				/* Fraction.  Ick.  */
+				if (strncmp (regexp->str, "^([-+]?[0-9]+) ", 15) == 0) {
+					g_string_erase (regexp, 14, 1);
+					g_string_insert (regexp, 13, " +|");
+					/* FIXME: The final regexp won't match a plain digit sequence.  */
+				}
+
+				g_string_append_c (regexp, '(');
+				while (format[1] == '?' || g_ascii_isdigit (format[1])) {
+					format++;
+					g_string_append (regexp, "[0-9]");
+				}
+
+				g_string_append (regexp, ") *");
+				append_type (MATCH_DENOMINATOR);
+			}
+			break;
+
+#if 0
+		/* these were here explicitly before adding default.
+		 * Leave them explicit for now as documentation.
+		 */
+			/* Default appears fine for this.  */
+		case 0x00a3: /* GBP sign. */
+		case 0x00a5: /* JPY sign. */
+		case 0x20ac: /* EUR sign. */
+		case '^':
+		case '|':
+		case ']':
+		case '$':
+		case ':':
+		case '-':
+		case ' ':
+		case '(':
+		case ')':
+
+#endif
+		default :
+			go_regexp_quote1 (regexp, format);
+		}
+	}
+
+	g_string_append_c (regexp, '$');
+
+	str = g_string_free (regexp, FALSE);
+	*dest = match_types;
+
+#ifdef DEBUG_NUMBER_MATCH
+	printf ("'%s'\n",str);
+#endif
+	return str;
+
+ error:
+	g_string_free (regexp, TRUE);
+	g_byte_array_free (match_types, TRUE);
+	return NULL;
+}
+
+gboolean
+format_match_create (GOFormatElement *fmt)
+{
+	GByteArray *match_tags;
+	char *regexp;
+	GORegexp r;
+	int ret;
+
+	g_return_val_if_fail (fmt != NULL, FALSE);
+	g_return_val_if_fail (fmt->regexp_str == NULL, FALSE);
+	g_return_val_if_fail (fmt->match_tags == NULL, FALSE);
+	g_return_val_if_fail (strcmp (fmt->format, "General"), FALSE);
+
+	regexp = format_create_regexp (fmt->format, &match_tags);
+	if (!regexp) {
+		fmt->regexp_str = NULL;
+		fmt->match_tags = NULL;
+		return FALSE;
+	}
+
+	ret = go_regcomp (&r, regexp, REG_EXTENDED | REG_ICASE);
+	if (ret != 0) {
+		g_warning ("expression [%s] produced [%s]", fmt->format, regexp);
+		print_regex_error (ret);
+		g_free (regexp);
+		return FALSE;
+	}
+
+	fmt->regexp_str = regexp;
+	fmt->regexp     = r;
+	fmt->match_tags = match_tags;
+
+	return TRUE;
+}
+
+void
+format_match_release (GOFormatElement *fmt)
+{
+	if (fmt->regexp_str != NULL) {
+		g_free (fmt->regexp_str);
+		go_regfree (&fmt->regexp);
+		g_byte_array_free (fmt->match_tags, TRUE);
+	}
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format-match.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,57 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-format-match.h : 
+ *
+ * Copyright (C) 2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_FORMAT_MATCH_H
+#define GO_FORMAT_MATCH_H
+
+#include <goffice/utils/goffice-utils.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	MATCH_DAY_FULL 		  = 1,
+	MATCH_DAY_NUMBER	  = 2,
+	MATCH_MONTH_FULL	  = 3,
+	MATCH_MONTH_SHORT	  = 4,
+	MATCH_MONTH_NUMBER	  = 5,
+	MATCH_YEAR_FULL		  = 6,
+	MATCH_YEAR_SHORT	  = 7,
+	MATCH_HOUR		  = 8,
+	MATCH_MINUTE		  = 9,
+	MATCH_SECOND		  = 10,
+	MATCH_AMPM		  = 11,
+	MATCH_NUMBER		  = 12,
+	MATCH_NUMBER_DECIMALS	  = 13,
+	MATCH_PERCENT		  = 14,
+	MATCH_SKIP		  = 15,
+	MATCH_STRING_CONSTANT	  = 16,
+	MATCH_CUMMULATIVE_HOURS	  = 17,
+	MATCH_CUMMULATIVE_MINUTES = 18,
+	MATCH_CUMMULATIVE_SECONDS = 19,
+	MATCH_NUMERATOR           = 20,
+	MATCH_DENOMINATOR         = 21
+} MatchType;
+
+gboolean format_match_create  (GOFormatElement *elem);
+void	 format_match_release (GOFormatElement *elem);
+
+G_END_DECLS
+
+#endif /* GO_FORMAT_MATCH_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,123 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-format.c :
+ *
+ * Copyright (C) 2003-2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-format.h"
+#include "go-math.h"
+#include "datetime.h"
+#include "format-impl.h"
+#include <string.h>
+
+static gboolean
+go_style_format_condition (GOFormatElement const *entry, double val)
+{
+	if (entry->restriction_type == '*')
+		return TRUE;
+
+	switch (entry->restriction_type) {
+	case '<': return val < entry->restriction_value;
+	case '>': return val > entry->restriction_value;
+	case '=': return val == entry->restriction_value;
+	case ',': return val <= entry->restriction_value;
+	case '.': return val >= entry->restriction_value;
+	case '+': return val != entry->restriction_value;
+	default:
+		return FALSE;
+	}
+}
+
+void
+go_format_value_gstring (GOFormat const *format, GString *res, double val,
+			 int col_width, GODateConventions const *date_conv)
+{
+	GOFormatElement const *entry = NULL; /* default to General */
+	GSList const *list = NULL;
+	gboolean need_abs = FALSE;
+
+	if (format != NULL) {
+		for (list = format->entries; list; list = list->next)
+			if (go_style_format_condition (list->data, val))
+				break;
+		if (list == NULL)
+			list = format->entries;
+	}
+
+	/* If nothing matches treat it as General */
+	if (list != NULL) {
+		entry = list->data;
+
+		/* Empty formats should be ignored */
+		if (entry->format[0] == '\0')
+			return;
+
+#if 0
+		if (go_color && entry->go_color != 0)
+			*go_color = entry->go_color;
+#endif
+
+		if (strcmp (entry->format, "@") == 0) {
+			/* FIXME : Formatting a value as a text returns
+			 * the entered text.  We need access to the
+			 * parse format */
+			entry = NULL;
+
+		/* FIXME : Just containing General is enough to be
+		 * general for now.  We'll ignore prefixes and suffixes
+		 * for the time being */
+		} else if (strstr (entry->format, "General") != NULL)
+			entry = NULL;
+	}
+
+	/* More than one format? -- abs the value.  */
+	need_abs = entry && format->entries->next;
+
+	if (INT_MAX >= val && val >= INT_MIN && val == floor (val)) {
+		int i_val = (int)val;
+		if (need_abs)
+			i_val = ABS (i_val);
+
+		if (entry == NULL)
+			go_fmt_general_int (res, i_val, col_width);
+		else
+			go_format_number (res, i_val, col_width, entry, date_conv);
+	} else {
+		if (need_abs)
+			val = fabs (val);
+
+		if (entry == NULL)
+			go_fmt_general_float (res, val, col_width);
+		else
+			go_format_number (res, val, col_width, entry, date_conv);
+	}
+}
+
+char *
+go_format_value (GOFormat const *fmt, double val)
+{
+	GString *res;
+
+	if (!go_finite (val))
+		return g_strdup ("#VALUE!");
+
+	res = g_string_sized_new (20);
+	go_format_value_gstring (fmt, res, val, -1, NULL);
+	return g_string_free (res, FALSE);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-format.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,161 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-format.h : 
+ *
+ * Copyright (C) 2003-2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_FORMAT_H
+#define GO_FORMAT_H
+
+#include <goffice/goffice-features.h>
+#include <goffice/utils/goffice-utils.h>
+#include <pango/pango-attributes.h>
+#include <goffice/cut-n-paste/pcre/pcreposix.h>
+#include <glib.h>
+
+#include <goffice/utils/goffice-utils.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* Keep these sequential, they are used as the index for go_format_builtins */
+typedef enum {
+	GO_FORMAT_UNKNOWN	= -1,
+
+	GO_FORMAT_GENERAL	= 0,
+	GO_FORMAT_NUMBER	= 1,
+	GO_FORMAT_CURRENCY	= 2,
+	GO_FORMAT_ACCOUNTING	= 3,
+	GO_FORMAT_DATE		= 4,
+	GO_FORMAT_TIME		= 5,
+	GO_FORMAT_PERCENTAGE	= 6,
+	GO_FORMAT_FRACTION	= 7,
+	GO_FORMAT_SCIENTIFIC	= 8,
+	GO_FORMAT_TEXT		= 9,
+	GO_FORMAT_SPECIAL	= 10,
+
+	GO_FORMAT_MARKUP	= 11	/* Internal use only */
+} GOFormatFamily;
+
+typedef struct {
+	gboolean thousands_sep;
+	int	 num_decimals;	/* 0 - 30 */
+	int	 negative_fmt;	/* 0 - 3 */
+	int	 currency_symbol_index;
+	int	 list_element;
+	gboolean date_has_days;
+	gboolean date_has_months;
+	int      fraction_denominator;
+} GOFormatDetails;
+
+struct _GOFormat {
+	int		 ref_count;
+	char		*format;
+        GSList		*entries;	/* Of type GOFormatElement. */
+	GOFormatFamily	 family;
+	GOFormatDetails	 family_info;
+	gboolean	 is_var_width;
+	PangoAttrList	*markup;	/* only for GO_FORMAT_MARKUP */
+};
+
+GOFormat *go_format_new_from_XL		(char const *str, gboolean delocalize);
+GOFormat *go_format_new			(GOFormatFamily family,
+					 GOFormatDetails const *details);
+GOFormat *go_format_new_markup		(PangoAttrList *markup, gboolean add_ref);
+
+/* these do not add a reference to the result */
+GOFormat *go_format_general	   	(void);
+GOFormat *go_format_default_date	(void);
+GOFormat *go_format_default_time	(void);
+GOFormat *go_format_default_date_time	(void);
+GOFormat *go_format_default_percentage	(void);
+GOFormat *go_format_default_money	(void);
+
+char	 *go_format_str_delocalize	(char const *str);
+char   	 *go_format_str_as_XL	   	(char const *str, gboolean localized);
+char   	 *go_format_as_XL	   	(GOFormat const *fmt, gboolean localized);
+
+GOFormat *go_format_ref		 	(GOFormat *fmt);
+void      go_format_unref		(GOFormat *fmt);
+
+#define	  go_format_is_general(fmt)	((fmt)->family == GO_FORMAT_GENERAL)
+#define   go_format_is_markup(fmt)	((fmt)->family == GO_FORMAT_MARKUP)
+#define   go_format_is_text(fmt)	((fmt)->family == GO_FORMAT_TEXT)
+#define   go_format_is_var_width(fmt)	((fmt)->is_var_width)
+
+char	*go_format_value		(GOFormat const *fmt, double val);
+void	 go_format_value_gstring	(GOFormat const *format, GString *res, double val,
+					 int col_width, GODateConventions const *date_conv);
+gboolean go_format_eq			(GOFormat const *a, GOFormat const *b);
+GOFormat *go_format_inc_precision	(GOFormat const *fmt);
+GOFormat *go_format_dec_precision	(GOFormat const *fmt);
+GOFormat *go_format_toggle_1000sep	(GOFormat const *fmt);
+GOFormatFamily go_format_classify	(GOFormat const *fmt, GOFormatDetails *details);
+
+typedef struct {
+	gchar const *symbol;
+	gchar const *description;
+	gboolean precedes;
+	gboolean has_space;
+} GOFormatCurrency;
+
+/* Indexed by GOFormatFamily */
+extern char const * const * const go_format_builtins [];
+extern GOFormatCurrency     const go_format_currencies [];
+
+/*************************************************************************/
+
+typedef struct {
+	int  right_optional, right_spaces, right_req, right_allowed;
+	int  left_spaces, left_req;
+	float scale;
+	gboolean rendered;
+	gboolean decimal_separator_seen;
+	gboolean group_thousands;
+	gboolean has_fraction;
+} GONumberFormat;
+
+void go_render_number (GString *result, double number, GONumberFormat const *info);
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+void go_render_numberl (GString *result, long double number, GONumberFormat const *info);
+#endif
+
+/* Locale support routines */
+void	       go_set_untranslated_bools (void);
+char const *   go_setlocale            (int category, char const *val);
+GString const *format_get_currency     (gboolean *precedes, gboolean *space_sep);
+gboolean       format_month_before_day (void);
+char           format_get_arg_sep      (void);
+char           format_get_col_sep      (void);
+char           format_get_row_sep      (void);
+GString const *format_get_thousand     (void);
+GString const *format_get_decimal      (void);
+char const *   format_boolean          (gboolean b);
+
+void number_format_init (void);
+void number_format_shutdown (void);
+void currency_date_format_init     (void);
+void currency_date_format_shutdown (void);
+
+extern char const * const day_short   [];
+extern char const * const day_long    [];
+extern char const * const month_short [];
+extern char const * const month_long  [];
+
+G_END_DECLS
+
+#endif /* GO_FORMAT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,219 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-geometry.c : A collection of geometry related functions.
+ *
+ * Copyright (C) 2005 Emmanuel Pacaud <emmanuel.pacaud at univ-poitiers.fr>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/utils/go-geometry.h>
+#include <goffice/goffice-config.h>
+#include <math.h>
+
+#define dist(x0, y0, x1, y1) sqrt(((x0) - (x1))*((x0) - (x1)) + ((y0) - (y1))*((y0) - (y1)))
+
+/**
+ * go_geometry_cartesian_to_polar:
+ * @x, @y: cartesian coordinates.
+ * @rho, @theta: polar coordinates.
+ *
+ * Convert cartesion coordinates to polar coordinates.
+ **/
+void
+go_geometry_cartesian_to_polar (double x, double y, double *rho, double *theta)
+{
+	*rho = sqrt (x * x + y * y);
+	if (x != 0.) {
+		*theta = atan (y / x);
+		if (x < 0.) {
+			*theta += M_PI;
+		}
+	} else {
+		if (y < 0.) {
+			*theta = -M_PI/2.0;
+		} else {
+			*theta = M_PI/2.0;
+		}
+	}
+}
+
+/**
+ * go_geometry_point_to_segment:
+ * @xp, @yp: point coordinates
+ * @xs, ys: segment strt coordinates:
+ * @w, @h: extent of segment.
+ *
+ * Computes the distance between a point and a segment.
+ **/
+double
+go_geometry_point_to_segment (double xp, double yp, double xs, double ys, double w, double h)
+{
+	double c1, c2, b;
+
+	c1 = w * (xp - xs) + h * (yp - ys);
+	if (c1 <= 0.0)
+		return dist (xp, yp, xs, ys);
+
+	c2 = w * w + h * h;
+	if (c2 <= c1)
+		return dist (xp, yp, xs + w, ys + h);
+
+	b = c1 / c2;
+	return dist (xp, yp, xs + b * w, ys + b * h);
+}
+
+/**
+ * go_geometry_AABR_add:
+ * @aabr0: #GOGeometryAABR
+ * @aabr1: #GOGeometryAABR
+ *
+ * Computes the Axis Aligned Bounding Rectangle of aabr0 and aabr1,
+ * and stores result in aabr0.
+ **/
+void
+go_geometry_AABR_add (GOGeometryAABR *aabr0, GOGeometryAABR const *aabr1)
+{
+	double min, max;
+
+	min = MIN (aabr0->x, aabr1->x);
+	max = MAX (aabr0->x + aabr0->w, aabr1->x + aabr1->w);
+	aabr0->x = min;
+	aabr0->w = max - min;
+	
+	min = MIN (aabr0->y, aabr1->y);
+	max = MAX (aabr0->y + aabr0->h, aabr1->y + aabr1->h);
+	aabr0->y = min;
+	aabr0->h = max - min;
+}
+
+/**
+ * go_geometry_OBR_to_AABR:
+ * @obr: #GOGeometryOBR
+ * @aabr: #GOGeometryAABR
+ * 
+ * Returns an Axis Aligned Bouding Rectangle of obr.
+ **/
+void
+go_geometry_OBR_to_AABR (GOGeometryOBR const *obr, GOGeometryAABR *aabr)
+{
+	double cos_alpha = cos (obr->alpha);
+	double sin_alpha = sin (obr->alpha);
+
+	aabr->w = fabs (obr->w * cos_alpha) + fabs (obr->h * sin_alpha);
+	aabr->h = fabs (obr->w * sin_alpha) + fabs (obr->h * cos_alpha);
+	aabr->x = obr->x - aabr->w / 2.0 ;
+	aabr->y = obr->y - aabr->h / 2.0 ;
+}
+
+/** 
+ * go_geometry_test_OBR_overlap:
+ * @obr0: #GOGeometryOBR
+ * @obr1: #GOGeometryOBR
+ * 
+ * Overlap test of Oriented Bounding Rectangles by the separating axis method.
+ **/
+gboolean
+go_geometry_test_OBR_overlap (GOGeometryOBR const *obr0, GOGeometryOBR const *obr1)
+{
+        double TL, pa, pb;
+        double cos_delta, sin_delta;
+        double cos_alpha, sin_alpha;
+        double delta_x, delta_y;
+	double a00, a01, a10, a11;
+
+        delta_x = obr1->x - obr0->x;
+        delta_y = obr1->y - obr0->y;
+        cos_delta = cos (obr1->alpha - obr0->alpha);
+        sin_delta = sin (obr1->alpha - obr0->alpha);
+
+        cos_alpha = fabs (cos (obr0->alpha));
+        sin_alpha = fabs (sin (obr0->alpha));
+
+	a00 = fabs (obr0->w / 2.0);
+	a01 = fabs (obr0->h / 2.0);
+	a10 = fabs (obr1->w / 2.0);
+	a11 = fabs (obr1->h / 2.0);
+
+        /* Separating axis parallel to obr0->w */
+        TL = fabs (delta_x * cos_alpha - delta_y * sin_alpha);
+        pa = a00;
+        pb = a10 * cos_delta + a11 * sin_delta;
+        if (TL > pa + pb) return FALSE;
+        
+        /* Separating axis parallel to obr->h */
+        TL = fabs (delta_x * sin_alpha + delta_y * cos_alpha);
+        pa = a01;
+        pb = a10 * sin_delta + a11 * cos_delta;
+        if (TL > pa + pb) return FALSE;
+
+        cos_alpha = fabs (cos (obr1->alpha));
+        sin_alpha = fabs (sin (obr1->alpha));
+
+        /* Separating axis parallel to obr1->w */
+        TL = fabs (delta_x * cos_alpha - delta_y * sin_alpha);
+        pa = a00 * cos_delta + a01 * sin_delta;
+        pb = a10;
+        if (TL > pa + pb) return FALSE;
+
+        /* Separating axis parallel to obr1->h */
+        TL = fabs (delta_x * sin_alpha + delta_y * cos_alpha);
+        pa = a00 * sin_delta + a01 * cos_delta;
+        pb = a11;
+        if (TL > pa + pb) return FALSE;
+        
+        return TRUE;
+}
+
+/** 
+ * go_geometry_get_rotation_type:
+ * @alpha: angle in radians
+ *
+ * Returns rotation type for handling of special angles (alpha = n * pi / 2)
+ **/
+GOGeometryRotationType 
+go_geometry_get_rotation_type (double alpha) 
+{
+	unsigned index;
+
+	if (alpha < 0 || alpha > 2 * M_PI)
+		alpha = alpha - 2 * M_PI * floor (alpha / (2 * M_PI));
+	
+	if (fmod(alpha + GO_GEOMETRY_ANGLE_TOLERANCE, M_PI / 2.0) > 2 * GO_GEOMETRY_ANGLE_TOLERANCE)
+		return GO_ROTATE_FREE;
+	index = rint (2.0 * alpha / M_PI);
+	return index < GO_ROTATE_FREE ? index : GO_ROTATE_NONE;
+}
+
+/**
+ * go_geometry_update_label_OBR:
+ * @obr: bouding rectangle of label
+ * @alpha: angle of axis
+ * @offset: minimum distance between label and axis
+ * @side: side of label with respect to axis
+ *
+ * Convenience routine that computes position of a label relative to an axis. 
+ **/
+void
+go_geometry_calc_label_position (GOGeometryOBR *obr, double alpha, double offset, GOGeometrySide side)
+{
+	GOGeometryAABR aabr;
+	
+	go_geometry_OBR_to_AABR (obr, &aabr);
+
+	offset += (fabs (aabr.w * sin (alpha)) + fabs (aabr.h * cos (alpha))) / 2.0;
+	obr->x = offset * ((side == GO_SIDE_RIGHT) ? - sin (alpha) : + sin (alpha));
+	obr->y = offset * ((side == GO_SIDE_RIGHT) ? + cos (alpha) : - cos (alpha));
+}	

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-geometry.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,66 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-geometry.h : A collection of geometry related functions.
+ *
+ * Copyright (C) 2005 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GO_GEOMETRY_H
+#define GO_GEOMETRY_H
+
+#include <goffice/graph/goffice-graph.h>
+
+G_BEGIN_DECLS
+
+#define GO_GEOMETRY_ANGLE_TOLERANCE 1E-3
+
+typedef enum {
+	GO_SIDE_LEFT,
+	GO_SIDE_RIGHT
+} GOGeometrySide;
+
+typedef enum {
+	GO_ROTATE_NONE = 0,
+	GO_ROTATE_COUNTERCLOCKWISE = 1,
+	GO_ROTATE_UPSIDEDOWN = 2,
+	GO_ROTATE_CLOCKWISE = 3,	
+	GO_ROTATE_FREE = 4
+} GOGeometryRotationType;
+
+typedef struct {
+        double x,y;     /* Center */
+        double w,h;     /* Edges */
+        double alpha;   /* Angle from x axis to w edge, in radians */
+} GOGeometryOBR;
+
+#define GOGeometryAABR GogViewAllocation /* x, y: top left corner */
+
+void 		go_geometry_cartesian_to_polar 	(double x, double y, double *rho, double *theta);
+double 		go_geometry_point_to_segment	(double xp, double yp, double xs, double ys, double w, double h);
+
+void 		go_geometry_AABR_add 		(GOGeometryAABR *aabr0, GOGeometryAABR const *aabr1);
+void		go_geometry_OBR_to_AABR 	(GOGeometryOBR const *obr, GOGeometryAABR *aabr);
+gboolean 	go_geometry_test_OBR_overlap 	(GOGeometryOBR const *obr0, GOGeometryOBR const *obr1);
+
+GOGeometryRotationType 
+		go_geometry_get_rotation_type	(double angle);
+
+void 		go_geometry_calc_label_position	(GOGeometryOBR *obr, double alpha, double offset, GOGeometrySide side);
+
+G_END_DECLS
+
+#endif /* GO_GEOMETRY_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,845 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * utils.c:  Various utility routines that should have been in glib.
+ *
+ * Authors:
+ *    Miguel de Icaza (miguel at gnu.org)
+ *    Jukka-Pekka Iivonen (iivonen at iki.fi)
+ *    Zbigniew Chyla (cyba at gnome.pl)
+ *    Morten Welinder (terra at gnome.org)
+ */
+#include <goffice-config.h>
+#include <goffice/goffice-config.h>
+#include "go-glib-extras.h"
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+#include <libxml/encoding.h>
+
+#include <stdlib.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+static void
+cb_hash_collect_keys (gpointer key, gpointer value, GSList **accum)
+{
+	*accum = g_slist_prepend (*accum, key);
+}
+
+/**
+ * go_hash_keys :
+ * @hash : #GHashTable
+ *
+ * Collects an unordered list of the keys in @hash.
+ *
+ * Returns a list which the caller needs to free.
+ * 	The content has not additional references added
+ **/
+GSList *
+go_hash_keys (GHashTable *hash)
+{
+	GSList *accum = NULL;
+	g_hash_table_foreach (hash,
+		(GHFunc )cb_hash_collect_keys, &accum);
+	return accum;
+}
+
+static void
+cb_hash_collect_values (gpointer key, gpointer value, GSList **accum)
+{
+	*accum = g_slist_prepend (*accum, value);
+}
+
+/**
+ * go_hash_values :
+ * @hash : #GHashTable
+ *
+ * Collects an unordered list of the values in @hash.
+ *
+ * Returns a list which the caller needs to free.
+ * 	The content has not additional references added
+ **/
+GSList *
+go_hash_values (GHashTable *hash)
+{
+	GSList *accum = NULL;
+	g_hash_table_foreach (hash,
+		(GHFunc )cb_hash_collect_values, &accum);
+	return accum;
+}
+
+/***************************************************************************/
+void
+go_ptr_array_insert (GPtrArray *array, gpointer value, int index)
+{
+	if (index < (int)array->len) {
+		int i = array->len - 1;
+		gpointer last = g_ptr_array_index (array, i);
+		g_ptr_array_add (array, last);
+
+		while (i-- > index) {
+			gpointer tmp = g_ptr_array_index (array, i);
+			g_ptr_array_index (array, i + 1) = tmp;
+		}
+		g_ptr_array_index (array, index) = value;
+	} else
+		g_ptr_array_add (array, value);
+}
+
+/**
+ * go_slist_create:
+ * @item1: First item.
+ *
+ * Creates a GList from NULL-terminated list of arguments.
+ *
+ * Return value: created list.
+ **/
+GSList *
+go_slist_create (gpointer item1, ...)
+{
+	va_list args;
+	GSList *list = NULL;
+	gpointer item;
+
+	va_start (args, item1);
+	for (item = item1; item != NULL; item = va_arg (args, gpointer)) {
+		list = g_slist_prepend (list, item);
+	}
+	va_end (args);
+
+	return g_slist_reverse (list);
+}
+
+/**
+ * go_slist_map:
+ * @list        : list of some items
+ * @map_func    : mapping function
+ *
+ **/
+GSList *
+go_slist_map (GSList const *list, GOMapFunc map_func)
+{
+	GSList *list_copy = NULL;
+
+	GO_SLIST_FOREACH (list, void, value,
+		GO_SLIST_PREPEND (list_copy, map_func (value))
+	);
+
+	return g_slist_reverse (list_copy);
+}
+
+/**
+ * go_slist_free_custom:
+ * @list: list of some items
+ * @free_func: function freeing list item
+ *
+ * Clears a list, calling @free_func for each list item.
+ **/
+void
+go_slist_free_custom (GSList *list, GFreeFunc free_func)
+{
+	GSList *l;
+
+	for (l = list; l != NULL; l = l->next) {
+		free_func (l->data);
+	}
+	g_slist_free (list);
+}
+
+gint
+go_list_index_custom (GList *list, gpointer data, GCompareFunc cmp_func)
+{
+	GList *l;
+	gint i;
+
+	for (l = list, i = 0; l != NULL; l = l->next, i++) {
+		if (cmp_func (l->data, data) == 0) {
+			return i;
+		}
+	}
+
+	return -1;
+}
+
+/**
+ * go_list_free_custom:
+ * @list: list of some items
+ * @free_func: function freeing list item
+ *
+ * Clears a list, calling @free_func for each list item.
+ *
+ */
+void
+go_list_free_custom (GList *list, GFreeFunc free_func)
+{
+	GList *l;
+
+	for (l = list; l != NULL; l = l->next) {
+		free_func (l->data);
+	}
+	g_list_free (list);
+}
+
+/**
+ * go_strsplit_to_slist:
+ * @string: String to split
+ * @delimiter: Token delimiter
+ *
+ * Splits up string into tokens at delim and returns a string list.
+ *
+ * Returns: string list which you should free after use using function
+ * e_free_string_list().
+ **/
+GSList *
+go_strsplit_to_slist (gchar const *string, gchar delimiter)
+{
+	gchar **token_v;
+	GSList *string_list = NULL;
+	char buf[2] = { '\0', '\0' };
+	gint i;
+
+	buf[0] = delimiter;
+	token_v = g_strsplit (string, buf, 0);
+	if (token_v != NULL) {
+		for (i = 0; token_v[i] != NULL; i++) {
+			string_list = g_slist_prepend (string_list, token_v[i]);
+		}
+		string_list = g_slist_reverse (string_list);
+		g_free (token_v);
+	}
+
+	return string_list;
+}
+
+gint
+go_utf8_collate_casefold (const char *a, const char *b)
+{
+	char *a2 = g_utf8_casefold (a, -1);
+	char *b2 = g_utf8_casefold (b, -1);
+	int res = g_utf8_collate (a2, b2);
+	g_free (a2);
+	g_free (b2);
+	return res;
+}
+
+gint
+go_ascii_strcase_equal (gconstpointer v1, gconstpointer v2)
+{
+	return g_ascii_strcasecmp ((char const *) v1, (char const *)v2) == 0;
+}
+
+/* a char* hash function from ASU */
+guint
+go_ascii_strcase_hash (gconstpointer v)
+{
+	unsigned const char *s = (unsigned const char *)v;
+	unsigned const char *p;
+	guint h = 0, g;
+
+	for(p = s; *p != '\0'; p += 1) {
+		h = ( h << 4 ) + g_ascii_tolower (*p);
+		if ( ( g = h & 0xf0000000 ) ) {
+			h = h ^ (g >> 24);
+			h = h ^ g;
+		}
+	}
+
+	return h /* % M */;
+}
+
+/* ------------------------------------------------------------------------- */
+
+/*
+ * Escapes all backslashes and quotes in a string. It is based on glib's
+ * g_strescape.
+ *
+ * Also adds quotes around the result.
+ */
+void
+go_strescape (GString *target, char const *string)
+{
+	g_string_append_c (target, '"');
+	/* This loop should be UTF-8 safe.  */
+	for (; *string; string++) {
+		switch (*string) {
+		case '"':
+		case '\\':
+			g_string_append_c (target, '\\');
+		default:
+			g_string_append_c (target, *string);
+		}
+	}
+	g_string_append_c (target, '"');
+}
+
+/*
+ * The reverse operation of go_strescape.  Returns a pointer to the
+ * first char after the string on success or NULL on failure.
+ *
+ * First character of the string should be an ASCII character used
+ * for quoting.
+ */
+const char *
+go_strunescape (GString *target, const char *string)
+{
+	char quote = *string++;
+	size_t oldlen = target->len;
+
+	/* This should be UTF-8 safe as long as quote is ASCII.  */
+	while (*string != quote) {
+		if (*string == 0)
+			goto error;
+		else if (*string == '\\') {
+			string++;
+			if (*string == 0)
+				goto error;
+		}
+
+		g_string_append_c (target, *string);
+		string++;
+	}
+
+	return ++string;
+
+ error:
+	g_string_truncate (target, oldlen);
+	return NULL;
+}
+
+void
+go_string_append_gstring (GString *target, const GString *source)
+{
+	g_string_append_len (target, source->str, source->len);
+}
+
+/* ------------------------------------------------------------------------- */
+
+/**
+ * go_utf8_strcapital:
+ * @p: pointer to UTF-8 string
+ * @len: length in bytes, or -1.
+ *
+ * Similar to g_utf8_strup and g_utf8_strup, except that this function
+ * creates a string "Very Much Like: This, One".
+ *
+ * Return value: newly allocated string.
+ **/
+char *
+go_utf8_strcapital (const char *p, ssize_t len)
+{
+	const char *pend = (len < 0 ? NULL : p + len);
+	GString *res = g_string_sized_new (len < 0 ? 1 : len + 1);
+	gboolean up = TRUE;
+
+	/*
+	 * This does a simple character-by-character mapping and probably
+	 * is not linguistically correct.
+	 */
+
+	for (; (len < 0 || p < pend) && *p; p = g_utf8_next_char (p)) {
+		gunichar c = g_utf8_get_char (p);
+
+		if (g_unichar_isalpha (c)) {
+			if (up ? g_unichar_isupper (c) : g_unichar_islower (c))
+				/* Correct case -- keep the char.  */
+				g_string_append_unichar (res, c);
+			else {
+				char *tmp = up
+					? g_utf8_strup (p, 1)
+					: g_utf8_strdown (p, 1);
+				g_string_append (res, tmp);
+				g_free (tmp);
+			}
+			up = FALSE;
+		} else {
+			g_string_append_unichar (res, c);
+			up = TRUE;
+		}
+	}
+
+	return g_string_free (res, FALSE);
+}
+
+/* ------------------------------------------------------------------------- */
+
+#undef DEBUG_CHUNK_ALLOCATOR
+
+typedef struct _go_mem_chunk_freeblock go_mem_chunk_freeblock;
+typedef struct _go_mem_chunk_block go_mem_chunk_block;
+
+struct _go_mem_chunk_freeblock {
+	go_mem_chunk_freeblock *next;
+};
+
+struct _go_mem_chunk_block {
+	gpointer data;
+	int freecount, nonalloccount;
+	go_mem_chunk_freeblock *freelist;
+#ifdef DEBUG_CHUNK_ALLOCATOR
+	int id;
+#endif
+};
+
+struct _GOMemChunk {
+	char *name;
+	size_t atom_size, user_atom_size, chunk_size, alignment;
+	int atoms_per_block;
+
+	/* List of all blocks.  */
+	GSList *blocklist;
+
+	/* List of blocks that are not full.  */
+	GList *freeblocks;
+
+#ifdef DEBUG_CHUNK_ALLOCATOR
+	int blockid;
+#endif
+};
+
+
+GOMemChunk *
+go_mem_chunk_new (char const *name, size_t user_atom_size, size_t chunk_size)
+{
+	int atoms_per_block;
+	GOMemChunk *res;
+	size_t user_alignment, alignment, atom_size;
+	size_t maxalign = 1 + ((sizeof (void *) - 1) |
+			       (sizeof (long) - 1) |
+			       (sizeof (double) - 1));
+
+	/*
+	 * The alignment that the caller can expect is 2^(lowest_bit_in_size).
+	 * The fancy bit math computes this.  Think it over.
+	 *
+	 * We don't go lower than pointer-size, so this always comes out as
+	 * 4 or 8.  Sometimes, when user_atom_size is a multiple of 8, this
+	 * alignment is bigger than really needed, but we don't know if the
+	 * structure has elements with 8-byte alignment.  In those cases we
+	 * waste memory.
+	 */
+	user_alignment = ((user_atom_size ^ (user_atom_size - 1)) + 1) / 2;
+	alignment = MIN (MAX (user_alignment, sizeof (go_mem_chunk_block *)), maxalign);
+	atom_size = alignment + MAX (user_atom_size, sizeof (go_mem_chunk_freeblock));
+	atoms_per_block = MAX (1, chunk_size / atom_size);
+	chunk_size = atoms_per_block * atom_size;
+
+#ifdef DEBUG_CHUNK_ALLOCATOR
+	g_print ("Created %s with alignment=%d, atom_size=%d (%d), chunk_size=%d.\n",
+		 name, alignment, atom_size, user_atom_size,
+		 chunk_size);
+#endif
+
+	res = g_new (GOMemChunk, 1);
+	res->alignment = alignment;
+	res->name = g_strdup (name);
+	res->user_atom_size = user_atom_size;
+	res->atom_size = atom_size;
+	res->chunk_size = chunk_size;
+	res->atoms_per_block = atoms_per_block;
+	res->blocklist = NULL;
+	res->freeblocks = NULL;
+#ifdef DEBUG_CHUNK_ALLOCATOR
+	res->blockid = 0;
+#endif
+
+	return res;
+}
+
+void
+go_mem_chunk_destroy (GOMemChunk *chunk, gboolean expect_leaks)
+{
+	GSList *l;
+
+	g_return_if_fail (chunk != NULL);
+
+#ifdef DEBUG_CHUNK_ALLOCATOR
+	g_print ("Destroying %s.\n", chunk->name);
+#endif
+	/*
+	 * Since this routine frees all memory allocated for the pool,
+	 * it is sometimes convenient not to free at all.  For such
+	 * cases, don't report leaks.
+	 */
+	if (!expect_leaks) {
+		GSList *l;
+		int leaked = 0;
+
+		for (l = chunk->blocklist; l; l = l->next) {
+			go_mem_chunk_block *block = l->data;
+			leaked += chunk->atoms_per_block - (block->freecount + block->nonalloccount);
+		}
+		if (leaked) {
+			g_warning ("Leaked %d nodes from %s.",
+				   leaked, chunk->name);
+		}
+	}
+
+	for (l = chunk->blocklist; l; l = l->next) {
+		go_mem_chunk_block *block = l->data;
+		g_free (block->data);
+		g_free (block);
+	}
+	g_slist_free (chunk->blocklist);
+	g_list_free (chunk->freeblocks);
+	g_free (chunk->name);
+	g_free (chunk);
+}
+
+gpointer
+go_mem_chunk_alloc (GOMemChunk *chunk)
+{
+	go_mem_chunk_block *block;
+	char *res;
+
+	/* First try the freelist.  */
+	if (chunk->freeblocks) {
+		go_mem_chunk_freeblock *res;
+
+		block = chunk->freeblocks->data;
+		res = block->freelist;
+		if (res) {
+			block->freelist = res->next;
+
+			block->freecount--;
+			if (block->freecount == 0 && block->nonalloccount == 0) {
+				/* Block turned full -- remove it from freeblocks.  */
+				chunk->freeblocks = g_list_delete_link (chunk->freeblocks,
+									chunk->freeblocks);
+			}
+			return res;
+		}
+		/*
+		 * If we get here, the block has free space that was never
+		 * allocated.
+		 */
+	} else {
+		block = g_new (go_mem_chunk_block, 1);
+#ifdef DEBUG_CHUNK_ALLOCATOR
+		block->id = chunk->blockid++;
+		g_print ("Allocating new chunk %d for %s.\n", block->id, chunk->name);
+#endif
+		block->nonalloccount = chunk->atoms_per_block;
+		block->freecount = 0;
+		block->data = g_malloc (chunk->chunk_size);
+		block->freelist = NULL;
+
+		chunk->blocklist = g_slist_prepend (chunk->blocklist, block);
+		chunk->freeblocks = g_list_prepend (chunk->freeblocks, block);
+	}
+
+	res = (char *)block->data +
+		(chunk->atoms_per_block - block->nonalloccount--) * chunk->atom_size;
+	*((go_mem_chunk_block **)res) = block;
+
+	if (block->nonalloccount == 0 && block->freecount == 0) {
+		/* Block turned full -- remove it from freeblocks.  */
+		chunk->freeblocks = g_list_delete_link (chunk->freeblocks, chunk->freeblocks);
+	}
+
+	return res + chunk->alignment;
+}
+
+gpointer
+go_mem_chunk_alloc0 (GOMemChunk *chunk)
+{
+	gpointer res = go_mem_chunk_alloc (chunk);
+	memset (res, 0, chunk->user_atom_size);
+	return res;
+}
+
+void
+go_mem_chunk_free (GOMemChunk *chunk, gpointer mem)
+{
+	go_mem_chunk_freeblock *fb = mem;
+	go_mem_chunk_block *block =
+		*((go_mem_chunk_block **)((char *)mem - chunk->alignment));
+
+#if 0
+	/*
+	 * This is useful when the exact location of a leak needs to be
+	 * pin-pointed.
+	 */
+	memset (mem, 0, chunk->user_atom_size);
+#endif
+
+	fb->next = block->freelist;
+	block->freelist = fb;
+	block->freecount++;
+
+	if (block->freecount == 1 && block->nonalloccount == 0) {
+		/* Block turned non-full.  */
+		chunk->freeblocks = g_list_prepend (chunk->freeblocks, block);
+	} else if (block->freecount == chunk->atoms_per_block) {
+		/* Block turned all-free.  */
+
+#ifdef DEBUG_CHUNK_ALLOCATOR
+		g_print ("Releasing chunk %d for %s.\n", block->id, chunk->name);
+#endif
+		/*
+		 * FIXME -- this could be faster if we rolled our own lists.
+		 * Hopefully, however, (a) the number of blocks is small,
+		 * and (b) the freed block might be near the beginning ("top")
+		 * of the stacks.
+		 */
+		chunk->blocklist = g_slist_remove (chunk->blocklist, block);
+		chunk->freeblocks = g_list_remove (chunk->freeblocks, block);
+
+		g_free (block->data);
+		g_free (block);
+	}
+}
+
+/*
+ * Loop over all non-freed memory in the chunk.  It's safe to allocate or free
+ * from the chunk in the callback.
+ */
+void
+go_mem_chunk_foreach_leak (GOMemChunk *chunk, GFunc cb, gpointer user)
+{
+	GSList *l, *leaks = NULL;
+
+	for (l = chunk->blocklist; l; l = l->next) {
+		go_mem_chunk_block *block = l->data;
+		if (chunk->atoms_per_block - (block->freecount + block->nonalloccount) > 0) {
+			char *freed = g_new0 (char, chunk->atoms_per_block);
+			go_mem_chunk_freeblock *fb = block->freelist;
+			int i;
+
+			while (fb) {
+				char *atom = (char *)fb - chunk->alignment;
+				int no = (atom - (char *)block->data) / chunk->atom_size;
+				freed[no] = 1;
+				fb = fb->next;
+			}
+
+			for (i = chunk->atoms_per_block - block->nonalloccount - 1; i >= 0; i--) {
+				if (!freed[i]) {
+					char *atom = (char *)block->data + i * chunk->atom_size;
+					leaks = g_slist_prepend (leaks, atom + chunk->alignment);
+				}
+			}
+			g_free (freed);
+		}
+	}
+
+	g_slist_foreach (leaks, cb, user);
+	g_slist_free (leaks);
+}
+
+int
+go_str_compare (void const *x, void const *y)
+{
+	if (x == NULL || y == NULL) {
+		if (x == y)
+			return 0;
+		else
+			return x ? -1 : 1;
+	}
+
+	return strcmp (x, y);
+}
+
+
+const char *
+go_guess_encoding (const char *raw, size_t len, const char *user_guess,
+		   char **utf8_str)
+{
+	int try;
+	gboolean debug = FALSE;
+
+	g_return_val_if_fail (raw != NULL, NULL);
+
+	for (try = 1; 1; try++) {
+		const char *guess;
+		GError *error = NULL;
+		char *utf8_data;
+
+		switch (try) {
+		case 1: guess = user_guess; break;
+		case 2: g_get_charset (&guess); break;
+		case 3: {
+			xmlCharEncoding enc =
+				xmlDetectCharEncoding ((const unsigned char*)raw, len);
+			if (enc == XML_CHAR_ENCODING_NONE)
+				guess = NULL;
+			else
+				guess = xmlGetCharEncodingName (enc);
+			break;
+		}
+		case 4: guess = "ASCII"; break;
+		case 5: guess = "ISO-8859-1"; break;
+		case 6: guess = "UTF-8"; break;
+		default: return NULL;
+		}
+
+		if (!guess)
+			continue;
+
+		if (debug)
+			g_print ("Trying %s as encoding.\n", guess);
+
+		utf8_data = g_convert (raw, len, "UTF-8", guess,
+				       NULL, NULL, &error);
+		if (!error) {
+			if (debug)
+				g_print ("Guessed %s as encoding.\n", guess);
+			if (utf8_str)
+				*utf8_str = utf8_data;
+			else
+				g_free (utf8_data);
+			return guess;
+		}
+
+		g_error_free (error);
+	}
+}
+
+/**
+ * go_get_real_name :
+ *
+ * Return a utf8 encoded string with the current user name.
+ * Caller should _NOT_ free the result.
+ **/
+char const *
+go_get_real_name (void)
+{
+	/* We will leak this.  */
+	static char *go_real_name = NULL;
+
+	if (go_real_name == NULL) {
+		char const *name = getenv ("NAME");
+		if (name == NULL)
+			name = g_get_real_name ();
+		if (name == NULL)
+			name = g_get_user_name ();
+		if (name != NULL)
+			(void) go_guess_encoding (name, strlen (name),
+				NULL, &go_real_name);
+		else
+			go_real_name = (char *)"unknown";
+	}
+	return go_real_name;
+}
+
+/**
+ * go_destroy_password :
+ *
+ * Overwrite a string holding a password.  This is a separate routine to
+ * ensure that the compiler does not try to outsmart us.
+ *
+ * Note: this does not free the memory.
+ **/
+void
+go_destroy_password (char *passwd)
+{
+	memset (passwd, 0, strlen (passwd));
+}
+
+
+/**
+ * go_object_toggle: toggle a boolean object property.
+ *
+ **/
+void
+go_object_toggle (gpointer object, const gchar *property_name)
+{
+	gboolean value = FALSE;
+	GParamSpec *pspec;
+
+	g_return_if_fail (G_IS_OBJECT (object));
+	g_return_if_fail (property_name != NULL);
+
+	pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (object), property_name);
+	if (!pspec ||
+	    !G_IS_PARAM_SPEC_BOOLEAN (pspec) ||
+	    ((pspec->flags & (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)) !=
+	     G_PARAM_READWRITE)) {
+		g_warning ("%s: object class `%s' has no boolean property named `%s' that can be both read and written.",
+			   G_STRFUNC,
+			   G_OBJECT_TYPE_NAME (object),
+			   property_name);
+		return;
+	}
+
+	/* And now, the actual action.  */
+	g_object_get (object, property_name, &value, NULL);
+	g_object_set (object, property_name, !value, NULL);
+}
+
+/*
+ * Collect all rw properties and their values.
+ */
+GSList *
+go_object_properties_collect (GObject *obj)
+{
+	GSList *res = NULL;
+	guint n;
+	GParamSpec **pspecs =
+		g_object_class_list_properties (G_OBJECT_GET_CLASS (obj),
+						&n);
+
+	while (n--) {
+		GParamSpec *pspec = pspecs[n];
+		if ((pspec->flags & (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)) ==
+		    G_PARAM_READWRITE) {
+			GValue *value = g_new0 (GValue, 1);
+			g_value_init (value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+			g_object_get_property (obj, pspec->name, value);
+			res = g_slist_prepend (res, value);
+			res = g_slist_prepend (res, pspec);
+		}
+	}
+
+	g_free (pspecs);
+	return res;
+}
+
+void
+go_object_properties_apply (GObject *obj, GSList *props, gboolean changed_only)
+{
+	GValue current = { 0, };
+
+	for (; props; props = props->next->next) {
+		GParamSpec *pspec = props->data;
+		const GValue *value = props->next->data;
+		gboolean doit;
+
+		if (changed_only) {
+			g_value_init (&current,
+				      G_PARAM_SPEC_VALUE_TYPE (pspec));
+			g_object_get_property (obj, pspec->name, &current);
+			doit = g_param_values_cmp (pspec, &current, value);
+#if 0
+			g_print ("%2d:  old: [%s]   new: [%s]\n",
+				 g_param_values_cmp (pspec, &current, value),
+				 g_strdup_value_contents (value),
+				 g_strdup_value_contents (&current));
+#endif
+			g_value_unset (&current);
+		} else
+			doit = TRUE;
+
+		if (doit)
+			g_object_set_property (obj, pspec->name, value);
+	}
+}
+
+void
+go_object_properties_free (GSList *props)
+{
+	GSList *l;
+
+	for (l = props; l; l = l->next->next) {
+		GValue *value = l->next->data;
+		g_value_unset (value);
+		g_free (value);
+	}
+
+	g_slist_free (props);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-glib-extras.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,103 @@
+#ifndef GO_GLIB_EXTRAS_H
+#define GO_GLIB_EXTRAS_H
+
+#include <goffice/utils/goffice-utils.h>
+#include <glib.h>
+#include <sys/types.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* Misc convenience routines that would be nice to have in glib */
+
+typedef gpointer (*GOMapFunc) (gpointer value);
+
+void	 go_ptr_array_insert	(GPtrArray *array, gpointer value, int index);
+
+GSList	*go_hash_keys		(GHashTable *hash);
+GSList	*go_hash_values		(GHashTable *hash);
+
+GSList	*go_slist_map		(GSList const *list, GOMapFunc map_func);
+GSList	*go_slist_create	(gpointer item1, ...);
+void	 go_slist_free_custom	(GSList *list, GFreeFunc free_func);
+#define	 go_string_slist_copy(list) go_slist_map (list, (GOMapFunc) g_strdup)
+GSList	*go_strsplit_to_slist	(char const *str, gchar delimiter);
+#define GO_SLIST_FOREACH(list,valtype,val,stmnt) \
+G_STMT_START { \
+	GSList const *go_l; \
+	for (go_l = (list); go_l != NULL; go_l = go_l->next) { \
+		valtype *val = go_l->data; \
+		stmnt \
+		; \
+	} \
+} G_STMT_END
+#define GO_SLIST_PREPEND(list,item) \
+	(list = g_slist_prepend (list, item))
+#define GO_SLIST_APPEND(list,item) \
+	(list = g_slist_append (list, item))
+#define GO_SLIST_REMOVE(list,item) \
+	(list = g_slist_remove (list, item))
+#define GO_SLIST_CONCAT(list_a,list_b) \
+	(list_a = g_slist_concat (list_a, list_b))
+#define GO_SLIST_REVERSE(list) \
+	(list = g_slist_reverse (list))
+#define GO_SLIST_SORT(list,cmp_func) \
+	(list = g_slist_sort (list, cmp_func))
+
+gint go_list_index_custom (GList *list, gpointer data, GCompareFunc cmp_func);
+void go_list_free_custom  (GList *list, GFreeFunc free_func);
+#define GO_LIST_FOREACH(list,valtype,val,stmnt) \
+G_STMT_START { \
+	GList *go_l; \
+	for (go_l = (list); go_l != NULL; go_l = go_l->next) { \
+		valtype *val = go_l->data; \
+		stmnt \
+		; \
+	} \
+} G_STMT_END
+#define GO_LIST_PREPEND(list,item) \
+	(list = g_list_prepend (list, item))
+#define GO_LIST_APPEND(list,item) \
+	(list = g_list_append (list, item))
+#define GO_LIST_REMOVE(list,item) \
+	(list = g_list_remove (list, item))
+#define GO_LIST_CONCAT(list_a,list_b) \
+	(list_a = g_list_concat (list_a, list_b))
+#define GO_LIST_REVERSE(list) \
+	(list = g_list_reverse (list))
+#define GO_LIST_SORT(list,cmp_func) \
+	(list = g_list_sort (list, cmp_func))
+
+int	    go_str_compare		(void const *x, void const *y);
+guint	    go_ascii_strcase_hash	(gconstpointer v);
+gint	    go_ascii_strcase_equal	(gconstpointer v, gconstpointer v2);
+gint	    go_utf8_collate_casefold	(char const *a, char const *b);
+char	   *go_utf8_strcapital		(char const *p, ssize_t len);
+void	    go_strescape		(GString *target, char const *str);
+char const *go_strunescape		(GString *target, char const *str);
+void	    go_string_append_gstring	(GString *target, const GString *src);
+char const *go_guess_encoding		(char const *raw, size_t len,
+					 char const *user_guess,
+					 char **utf8_str);
+
+char const *go_get_real_name		(void);
+void	    go_destroy_password	(char *passwd);
+
+GOMemChunk  *go_mem_chunk_new		(char const *, size_t, size_t);
+void	     go_mem_chunk_destroy	(GOMemChunk *, gboolean);
+gpointer     go_mem_chunk_alloc		(GOMemChunk *);
+gpointer     go_mem_chunk_alloc0	(GOMemChunk *);
+void         go_mem_chunk_free		(GOMemChunk *, gpointer);
+void         go_mem_chunk_foreach_leak	(GOMemChunk *, GFunc, gpointer);
+
+void	go_object_toggle             (gpointer object,
+				      const gchar *property_name);
+GSList *go_object_properties_collect (GObject *obj);
+void    go_object_properties_apply   (GObject *obj,
+				      GSList *props,
+				      gboolean changed_only);
+void    go_object_properties_free    (GSList *props);
+
+G_END_DECLS
+
+#endif /* GO_GLIB_EXTRAS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,166 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-gradient.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-gradient.h"
+#include "go-color.h"
+
+#ifdef WITH_GTK
+#include <goffice/gtk/go-combo-pixmaps.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+#endif
+
+#include <glib/gi18n.h>
+#include <string.h>
+
+
+char const *grad_dir_names[] = {
+	"n-s",
+	"s-n",
+	"n-s-mirrored",
+	"s-n-mirrored",
+	"w-e",
+	"e-w",
+	"w-e-mirrored",
+	"e-w-mirrored",
+	"nw-se",
+	"se-nw",
+	"nw-se-mirrored",
+	"se-nw-mirrored",
+	"ne-sw",
+	"sw-ne",
+	"sw-ne-mirrored",
+	"ne-sw-mirrored"
+};
+
+GOGradientDirection
+go_gradient_dir_from_str (char const *name)
+{
+	unsigned i;
+	for (i = 0; i < GO_GRADIENT_MAX; i++)
+		if (strcmp (grad_dir_names[i], name) == 0)
+			return i;
+	return GO_GRADIENT_N_TO_S;
+}
+
+char const *
+go_gradient_dir_as_str (GOGradientDirection dir)
+{
+	return (dir < 0 || dir >= GO_GRADIENT_MAX) ? "gradient"
+		: grad_dir_names[dir];
+}
+
+#ifdef WITH_GTK
+GtkWidget *
+go_gradient_selector (GOColor start, GOColor end)
+{
+	int const W = 20, H = 20;
+	unsigned	 i;
+	GOComboPixmaps	*w;
+	GdkPixbuf	*pixbuf;
+	ArtRender	*render;
+	ArtGradientLinear gradient;
+	ArtGradientStop	  stops[2];
+
+	w = go_combo_pixmaps_new (4);
+	for (i = 0; i < GO_GRADIENT_MAX; i++) {
+		GOGradientDirection dir = (GOGradientDirection)i;
+		pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, W, H);
+		gdk_pixbuf_fill (pixbuf, 0); /* in case the fill colours have alpha = 0 */
+		render = art_render_new (0, 0, W, H,
+			gdk_pixbuf_get_pixels (pixbuf),
+			gdk_pixbuf_get_rowstride (pixbuf),
+			gdk_pixbuf_get_n_channels (pixbuf) - 1,
+			8, ART_ALPHA_SEPARATE, NULL);
+		go_gradient_setup (&gradient, dir, start, end, 0, 0,
+			W, H, stops);
+		art_render_gradient_linear (render,
+			&gradient, ART_FILTER_NEAREST);
+		art_render_invoke (render);
+		go_combo_pixmaps_add_element (w, pixbuf, dir, NULL);
+	}
+
+	return GTK_WIDGET (w);
+}
+#endif /* WITH_GTK */
+
+void
+go_gradient_setup (ArtGradientLinear *gradient,
+		   GOGradientDirection dir, GOColor col0, GOColor col1,
+		   double x0, double y0, double x1, double y1,
+		   ArtGradientStop *stops)
+{
+	double dx = x1 - x0;
+	double dy = y1 - y0;
+
+	if (dir < 4) {
+		gradient->a = 0.;
+		gradient->b = 1. / (dy ? dy : 1);
+		gradient->c = - 1.e-10 - (gradient->a * x0 + gradient->b * y0);
+	} else if (dir < 8) {
+		gradient->a = 1. / (dx ? dx : 1);
+		gradient->b = 0.;
+		gradient->c = -(gradient->a * x0 + gradient->b * y0);
+	} else if (dir < 12) {
+		gradient->a = .5 / (dx ? dx : 1);
+		gradient->b = .5 / (dy ? dy : 1);
+		gradient->c = -(gradient->a * x0 + gradient->b * y0);
+	} else {
+		gradient->a = -.5 / (dx ? dx : 1);
+		gradient->b = .5 / (dy ? dy : 1);
+		/* Note: this gradient is anchored at (x1,y0).  */
+		gradient->c = -(gradient->a * x1 + gradient->b * y0);
+	}
+
+	gradient->stops = stops;
+	gradient->n_stops = 2;
+	stops[0].offset = 0;
+	stops[1].offset = 1;
+
+	switch (dir % 4) {
+	case 0:
+		gradient->spread = ART_GRADIENT_PAD;
+		go_color_to_artpix (stops[0].color, col0);
+		go_color_to_artpix (stops[1].color, col1);
+		break;
+	case 1:
+		gradient->spread = ART_GRADIENT_PAD;
+		go_color_to_artpix (stops[0].color, col1);
+		go_color_to_artpix (stops[1].color, col0);
+		break;
+	case 2:
+		gradient->spread = ART_GRADIENT_REFLECT;
+		go_color_to_artpix (stops[0].color, col0);
+		go_color_to_artpix (stops[1].color, col1);
+		gradient->a *= 2;
+		gradient->b *= 2;
+		gradient->c *= 2;
+		break;
+	case 3:
+		gradient->spread = ART_GRADIENT_REFLECT;
+		go_color_to_artpix (stops[0].color, col1);
+		go_color_to_artpix (stops[1].color, col0);
+		gradient->a *= 2;
+		gradient->b *= 2;
+		gradient->c *= 2;
+		break;
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-gradient.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,68 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-gradient.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_GRADIENT_H
+#define GO_GRADIENT_H
+
+#include <glib.h>
+#include <goffice/utils/goffice-utils.h>
+#include <libart_lgpl/libart.h>
+#include <libart_lgpl/art_render_gradient.h>
+
+#ifdef WITH_GTK
+#include <gtk/gtkwidget.h>
+#endif
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GO_GRADIENT_N_TO_S,
+	GO_GRADIENT_S_TO_N,
+	GO_GRADIENT_N_TO_S_MIRRORED,
+	GO_GRADIENT_S_TO_N_MIRRORED,
+	GO_GRADIENT_W_TO_E,
+	GO_GRADIENT_E_TO_W,
+	GO_GRADIENT_W_TO_E_MIRRORED,
+	GO_GRADIENT_E_TO_W_MIRRORED,
+	GO_GRADIENT_NW_TO_SE,
+	GO_GRADIENT_SE_TO_NW,
+	GO_GRADIENT_NW_TO_SE_MIRRORED,
+	GO_GRADIENT_SE_TO_NW_MIRRORED,
+	GO_GRADIENT_NE_TO_SW,
+	GO_GRADIENT_SW_TO_NE,
+	GO_GRADIENT_SW_TO_NE_MIRRORED,
+	GO_GRADIENT_NE_TO_SW_MIRRORED,
+	GO_GRADIENT_MAX
+} GOGradientDirection;
+
+GOGradientDirection go_gradient_dir_from_str (const gchar *name);
+const gchar *go_gradient_dir_as_str (GOGradientDirection dir);
+void go_gradient_setup (ArtGradientLinear *gradient,
+			GOGradientDirection dir, GOColor col0, GOColor col1,
+			double x0, double y0, double x1, double y1,
+			ArtGradientStop *stops);
+
+#ifdef WITH_GTK
+GtkWidget *go_gradient_selector (GOColor fore, GOColor back);
+#endif
+
+G_END_DECLS
+
+#endif /* GO_GRADIENT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,305 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-libxml-extras.c: stuff that should have been in libxml2.
+ *
+ * Authors:
+ *   Daniel Veillard <Daniel.Veillard at w3.org>
+ *   Miguel de Icaza <miguel at gnu.org>
+ *   Jody Goldberg <jody at gnome.org>
+ *   Jukka-Pekka Iivonen <jiivonen at hutcs.cs.hut.fi>
+ */
+#include <goffice/goffice-config.h>
+#include "go-libxml-extras.h"
+#include "go-color.h"
+
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <math.h>
+
+#ifndef HAVE_GLIB26
+#include "glib24_26-compat.h"
+#endif
+
+#define CC2XML(s) ((xmlChar const *)(s))
+#define CXML2C(s) ((char const *)(s))
+
+
+/**
+ * Like xmlParseFile, but faster.  Does not accept compressed files.
+ * See http://bugzilla.gnome.org/show_bug.cgi?id=168414
+ *
+ * Note: this reads the entire file into memory and should therefore
+ * not be used for user-supplied files.
+ **/
+xmlDocPtr
+go_xml_parse_file (char const *filename)
+{
+	xmlDocPtr result = NULL;
+	gchar *contents;
+	gsize length;
+
+	if (g_file_get_contents (filename, &contents, &length, NULL)) {
+		result = xmlParseMemory (contents, length);
+		g_free (contents);
+	}
+
+	return result;
+}
+
+/* Get an xmlChar * value for a node carried as an attibute
+ * result must be xmlFree
+ */
+xmlChar *
+xml_node_get_cstr (xmlNodePtr node, char const *name)
+{
+	if (name != NULL)
+		return xmlGetProp (node, CC2XML (name));
+	/* in libxml1 <foo/> would return NULL
+	 * in libxml2 <foo/> would return ""
+	 */
+	if (node->xmlChildrenNode != NULL)
+		return xmlNodeGetContent (node);
+	return NULL;
+}
+void
+xml_node_set_cstr (xmlNodePtr node, char const *name, char const *val)
+{
+	if (name)
+		xmlSetProp (node, CC2XML (name), CC2XML (val));
+	else
+		xmlNodeSetContent (node, CC2XML (val));
+}
+
+gboolean
+xml_node_get_bool (xmlNodePtr node, char const *name, gboolean *val)
+{
+	xmlChar *buf = xml_node_get_cstr (node, name);
+	if (buf == NULL)
+		return FALSE;
+
+	*val = (!strcmp (CXML2C (buf), "1")
+		|| 0 == g_ascii_strcasecmp (CXML2C (buf), "true"));
+	g_free (buf);
+	return TRUE;
+}
+
+void
+xml_node_set_bool (xmlNodePtr node, char const *name, gboolean val)
+{
+	xml_node_set_cstr (node, name, val ? "true" : "false");
+}
+
+gboolean
+xml_node_get_int (xmlNodePtr node, char const *name, int *val)
+{
+	xmlChar *buf;
+	char *end;
+	gboolean ok;
+	long l;
+
+	buf = xml_node_get_cstr (node, name);
+	if (buf == NULL)
+		return FALSE;
+
+	errno = 0; /* strto(ld) sets errno, but does not clear it.  */
+	*val = l = strtol (CXML2C (buf), &end, 10);
+	ok = (CXML2C (buf) != end) && *end == 0 && errno != ERANGE && (*val == l);
+	xmlFree (buf);
+
+	return ok;
+}
+
+void
+xml_node_set_int (xmlNodePtr node, char const *name, int val)
+{
+	char str[4 * sizeof (int)];
+	sprintf (str, "%d", val);
+	xml_node_set_cstr (node, name, str);
+}
+
+gboolean
+xml_node_get_double (xmlNodePtr node, char const *name, double *val)
+{
+	xmlChar *buf;
+	char *end;
+	gboolean ok;
+
+	buf = xml_node_get_cstr (node, name);
+	if (buf == NULL)
+		return FALSE;
+
+	errno = 0; /* strto(ld) sets errno, but does not clear it.  */
+	*val = strtod (CXML2C (buf), &end);
+	ok = (CXML2C (buf) != end) && *end == 0 && errno != ERANGE;
+	xmlFree (buf);
+
+	return ok;
+}
+
+void
+xml_node_set_double (xmlNodePtr node, char const *name, double val,
+		     int precision)
+{
+	char str[101 + DBL_DIG];
+
+	if (precision < 0 || precision > DBL_DIG)
+		precision = DBL_DIG;
+
+	if (fabs (val) < 1e9 && fabs (val) > 1e-5)
+		g_snprintf (str, 100 + DBL_DIG, "%.*g", precision, val);
+	else
+		g_snprintf (str, 100 + DBL_DIG, "%f", val);
+
+	xml_node_set_cstr (node, name, str);
+}
+
+
+gboolean
+xml_node_get_gocolor (xmlNodePtr node, char const *name, GOColor *res)
+{
+	xmlChar *color;
+	int r, g, b;
+
+	color = xmlGetProp (node, CC2XML (name));
+	if (color == NULL)
+		return FALSE;
+	if (sscanf (CXML2C (color), "%X:%X:%X", &r, &g, &b) == 3) {
+		r >>= 8;
+		g >>= 8;
+		b >>= 8;
+		*res = RGBA_TO_UINT (r,g,b,0xff);
+		xmlFree (color);
+		return TRUE;
+	}
+	xmlFree (color);
+	return FALSE;
+}
+
+void
+xml_node_set_gocolor (xmlNodePtr node, char const *name, GOColor val)
+{
+	unsigned r, g, b;
+	char str[4 * sizeof (val)];
+
+	UINT_TO_RGB (val, &r, &g, &b);
+	sprintf (str, "%X:%X:%X", r, g, b);
+	xml_node_set_cstr (node, name, str);
+}
+
+gboolean
+xml_node_get_enum (xmlNodePtr node, char const *name, GType etype, gint *val)
+{
+	GEnumClass *eclass = G_ENUM_CLASS (g_type_class_peek (etype));
+	GEnumValue *ev;
+	xmlChar *s;
+	int i;
+
+	s = xmlGetProp (node, CC2XML (name));
+	if (s == NULL)
+		return FALSE;
+
+	ev = g_enum_get_value_by_name (eclass, CXML2C (s));
+	if (!ev) ev = g_enum_get_value_by_nick (eclass, CXML2C (s));
+	if (!ev && xml_node_get_int (node, name, &i))
+		/* Check that the value is valid.  */
+		ev = g_enum_get_value (eclass, i);
+	xmlFree (s);
+	if (!ev) return FALSE;
+
+	*val = ev->value;
+	return TRUE;
+}
+
+void
+xml_node_set_enum (xmlNodePtr node, char const *name, GType etype, gint val)
+{
+	GEnumClass *eclass = G_ENUM_CLASS (g_type_class_peek (etype));
+	GEnumValue *ev = g_enum_get_value (eclass, val);
+
+	if (ev)
+		xml_node_set_cstr (node, name, ev->value_name);
+	else
+		g_warning ("Invalid value %d for type %s",
+			   val, g_type_name (etype));
+}
+
+/*************************************************************************/
+
+xmlNode *
+e_xml_get_child_by_name (xmlNode const *parent, char const *child_name)
+{
+	xmlNode *child;
+
+	g_return_val_if_fail (parent != NULL, NULL);
+	g_return_val_if_fail (child_name != NULL, NULL);
+
+	for (child = parent->xmlChildrenNode; child != NULL; child = child->next) {
+		if (xmlStrcmp (child->name, CC2XML (child_name)) == 0) {
+			return child;
+		}
+	}
+	return NULL;
+}
+
+xmlNode *
+e_xml_get_child_by_name_no_lang (xmlNode const *parent, char const *name)
+{
+	xmlNodePtr node;
+
+	g_return_val_if_fail (parent != NULL, NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+
+	for (node = parent->xmlChildrenNode; node != NULL; node = node->next) {
+		xmlChar *lang;
+
+		if (node->name == NULL || strcmp (CXML2C (node->name), name) != 0) {
+			continue;
+		}
+		lang = xmlGetProp (node, CC2XML ("xml:lang"));
+		if (lang == NULL) {
+			return node;
+		}
+		xmlFree (lang);
+	}
+
+	return NULL;
+}
+
+
+xmlNode *
+e_xml_get_child_by_name_by_lang (xmlNode const *parent, gchar const *name)
+{
+	xmlNodePtr   best_node = NULL, node;
+	gint         best_lang_score = INT_MAX;
+	char const * const *langs = g_get_language_names ();
+
+	g_return_val_if_fail (parent != NULL, NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+
+	for (node = parent->xmlChildrenNode; node != NULL; node = node->next) {
+		xmlChar *lang;
+
+		if (node->name == NULL || strcmp (CXML2C (node->name), name) != 0)
+			continue;
+
+		lang = xmlGetProp (node, CC2XML ("xml:lang"));
+		if (lang != NULL) {
+			gint i;
+
+			for (i = 0; langs[i] != NULL && i < best_lang_score; i++) {
+				if (strcmp (langs[i], CXML2C (lang)) == 0) {
+					best_node = node;
+					best_lang_score = i;
+				}
+			}
+		} else if (best_node == NULL)
+			best_node = node;
+
+		xmlFree (lang);
+		if (best_lang_score == 0) 
+			return best_node;
+	}
+
+	return best_node;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-libxml-extras.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,52 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-libxml-extras.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_LIBXML_EXTRAS_H
+#define GO_LIBXML_EXTRAS_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include <goffice/utils/goffice-utils.h>
+#include <libxml/tree.h>
+
+G_BEGIN_DECLS
+
+xmlDocPtr  go_xml_parse_file    (const char *filename);
+
+xmlChar   *xml_node_get_cstr	(xmlNodePtr node, char const *name);
+void	   xml_node_set_cstr	(xmlNodePtr node, char const *name, char const *val);
+gboolean   xml_node_get_bool	(xmlNodePtr node, char const *name, gboolean *result);
+void       xml_node_set_bool	(xmlNodePtr node, char const *name, gboolean val);
+gboolean   xml_node_get_int	(xmlNodePtr node, char const *name, int *result);
+void       xml_node_set_int	(xmlNodePtr node, char const *name, int  val);
+gboolean   xml_node_get_double	(xmlNodePtr node, char const *name, double *result);
+void       xml_node_set_double	(xmlNodePtr node, char const *name, double  val, int precision);
+gboolean   xml_node_get_gocolor (xmlNodePtr node, char const *name, GOColor *result);
+void	   xml_node_set_gocolor (xmlNodePtr node, char const *name, GOColor  val);
+gboolean   xml_node_get_enum    (xmlNodePtr node, char const *name, GType etype, gint *val);
+void       xml_node_set_enum    (xmlNodePtr node, char const *name, GType etype, gint val);
+
+xmlNode *e_xml_get_child_by_name	 (xmlNode const *tree, char const *name);
+xmlNode *e_xml_get_child_by_name_no_lang (xmlNode const *tree, char const *name);
+xmlNode *e_xml_get_child_by_name_by_lang (xmlNode const *tree, char const *name);
+
+G_END_DECLS
+
+#endif /* GO_LIBXML_EXTRAS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,454 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-line.c :
+ *
+ * Copyright (C) 2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+
+#include "go-color.h"
+#include "go-line.h"
+#include "go-math.h"
+
+#ifdef WITH_GTK
+#include <goffice/gtk/go-combo-pixmaps.h>
+#endif
+
+#include <string.h>
+#include <glib/gi18n.h>
+
+typedef struct {
+	int 		 n_dash;
+	double 		 dash[6];
+} GOLineDashDesc;
+
+static const GOLineDashDesc line_dash_desc =		{2,	{ 18, 6 } };
+static const GOLineDashDesc line_dot_desc = 		{2,	{ 3, 3 } };
+static const GOLineDashDesc line_dash_dot_desc =	{4, 	{ 9, 3, 6, 3 } };
+static const GOLineDashDesc line_dash_dot_dot_desc =  {6, 	{ 9, 3, 3, 3, 3, 3 } };	
+
+struct {
+	GOLineDashType type;
+	char const *label;
+	char const *name;
+	const GOLineDashDesc *dash_desc;
+} line_dashes[GO_LINE_MAX] = 
+{
+	{ GO_LINE_NONE,		N_("None"), 		"none",		NULL },
+	{ GO_LINE_SOLID,	N_("Solid"),		"solid",	NULL },
+	{ GO_LINE_DASH,		N_("Dash"), 		"dash",		&line_dash_desc },
+	{ GO_LINE_DOT,		N_("Dot"),		"dot",		&line_dot_desc},
+	{ GO_LINE_DASH_DOT,	N_("Dash dot"),		"dash-dot",	&line_dash_dot_desc },
+	{ GO_LINE_DASH_DOT_DOT,	N_("Dash dot dot"),	"dash-dot-dot",	&line_dash_dot_dot_desc }
+};
+	
+GOLineDashType
+go_line_dash_from_str (char const *name)
+{
+	unsigned i;
+	GOLineDashType ret = GO_LINE_NONE;
+
+	for (i = 0; i < GO_LINE_MAX; i++) {
+		if (strcmp (line_dashes[i].name, name) == 0) {
+			ret = line_dashes[i].type;
+			break;
+		}
+	}
+	return ret;
+}
+
+char const *
+go_line_dash_as_str (GOLineDashType type)
+{
+	unsigned i;
+	char const *ret = "none";
+
+	for (i = 0; i < GO_LINE_MAX; i++) {
+		if (line_dashes[i].type == type) {
+			ret = line_dashes[i].name;
+			break;
+		}
+	}
+	return ret;
+}
+
+void
+go_line_vpath_dash_free (ArtVpathDash *dash)
+{
+	if (dash != NULL)
+		g_free (dash->dash);
+	g_free (dash);
+}
+
+ArtVpathDash *
+go_line_get_vpath_dash (GOLineDashType type, double scale)
+{
+	int i;
+	ArtVpathDash *dash = NULL;
+	const GOLineDashDesc *dash_desc;
+
+	if (type < 0 || type >= G_N_ELEMENTS (line_dashes))
+		return NULL;
+	
+	dash_desc = line_dashes[type].dash_desc;
+	if (dash_desc != NULL) {
+		dash = g_new (ArtVpathDash, 1);
+		dash->offset = 0.5;
+		dash->n_dash = dash_desc->n_dash;
+		dash->dash = g_new (double, dash->n_dash);
+		for (i = 0; i < dash->n_dash; i++) 
+			dash->dash[i] = scale * dash_desc->dash[i];
+	}
+
+	return dash;
+}
+
+/* Liang-Barsky line clipping */
+ArtVpath *
+go_line_clip_vpath (ArtVpath const *vpath, GogViewAllocation const *clip_area)
+{
+	double x1, y1, x2, y2;
+	double p[4], q[4], r, t1 = 0., t2 = 1., delta_x, delta_y;
+	double x_min, x_max, y_min, y_max;
+	unsigned i = 0, j;
+	gboolean clip_last, clip_first;
+	ArtVpath *result_path;
+	int n_result, n_result_max;
+	
+	x_min = clip_area->x;
+	x_max = x_min + clip_area->w;
+	y_min = clip_area->y;
+	y_max = y_min + clip_area->h;
+
+	n_result = 0;
+	n_result_max = 16;
+	result_path = art_new (ArtVpath, n_result_max);
+
+	/* TODO clip_first computation isn't needed if previous clip_last was FALSE */
+	while (vpath[i].code != ART_END) {
+		gboolean reject = FALSE;
+		clip_last = TRUE;
+		while (vpath[i+1].code == ART_LINETO) {
+
+			t1 = 0.;
+			t2 = 1.;
+
+			x1 = vpath[i].x;
+			y1 = vpath[i].y;
+			x2 = vpath[i+1].x;
+			y2 = vpath[i+1].y;
+
+			delta_x = x2 - x1;
+			delta_y = y2 - y1;
+
+			p[0] = - delta_x;
+			q[0] = x1 - x_min;
+			p[1] = delta_x;
+			q[1] = x_max - x1;
+			p[2] = - delta_y;
+			q[2] = y1 - y_min;
+			p[3] = delta_y;
+			q[3] = y_max - y1;
+
+			clip_last = FALSE;
+			clip_first = FALSE;
+
+			for (j = 0; j < 4; j++) {
+				if (p[j] < 0.) {
+					r =  q[j] / p[j];
+					if (r > t1) {
+						t1 = r;
+						clip_first = TRUE;
+					} 
+				}
+				else if (p[j] > 0.) {
+					r =  q[j] / p[j];
+					if (r < t2) {
+						t2 = r;
+						clip_last = TRUE;
+					} 
+				}
+			}
+
+			if (t1 <= t2) {
+				reject = FALSE;
+				if (clip_first) 
+					art_vpath_add_point (&result_path, &n_result, &n_result_max,
+							     ART_MOVETO,
+							     x1 + t1 * delta_x,
+							     y1 + t1 * delta_y);
+				else
+					art_vpath_add_point (&result_path, &n_result, &n_result_max,
+							     vpath[i].code,
+							     vpath[i].x,
+							     vpath[i].y);
+				if (clip_last)
+					art_vpath_add_point (&result_path, &n_result, &n_result_max,
+							     ART_LINETO,
+							     x1 + t2 * delta_x,
+							     y1 + t2 * delta_y);
+			} else 
+				reject = TRUE;		     
+			
+			i++;
+		}
+		if (!clip_last && !reject)
+			art_vpath_add_point (&result_path, &n_result, &n_result_max,
+					     ART_LINETO, vpath[i].x, vpath[i].y);
+
+		i++;
+	}
+	art_vpath_add_point (&result_path, &n_result, &n_result_max,
+			     ART_END, 0., 0.);
+
+	return result_path;
+}
+
+ArtVpath *
+go_line_dash_vpath (ArtVpath const *path, 
+		    ArtVpathDash const *dash,
+		    GogViewAllocation const *bbox)
+{
+	ArtVpath *dashed;
+
+	if (dash == NULL) 
+		return NULL;
+
+	if (bbox != NULL) {
+		ArtVpath *clipped = go_line_clip_vpath (path, bbox);
+		dashed = art_vpath_dash (clipped, dash);
+		g_free (clipped);
+	} else
+		dashed = art_vpath_dash (path, dash);
+
+	return dashed;
+}
+					 
+#ifdef WITH_GTK
+
+#define LINE_SAMPLE_HEIGHT	5
+#define LINE_SAMPLE_WIDTH	60
+
+gpointer	 
+go_line_dash_selector (GOLineDashType default_type)
+{
+	static GOLineDashType const elements[] = {
+		GO_LINE_NONE,
+		GO_LINE_SOLID,
+		GO_LINE_DASH,
+		GO_LINE_DOT,
+		GO_LINE_DASH_DOT,
+		GO_LINE_DASH_DOT_DOT,
+		GO_LINE_MAX
+	};
+
+	unsigned	 i;
+	gboolean	 is_auto;
+	GOComboPixmaps	*w;
+	GdkPixbuf	*pixbuf;
+	ArtVpathDash	*dash;
+	GOLineDashType	 dash_type;
+	ArtVpath	 line[3], *path;
+	ArtSVP		*svp;
+	GogViewAllocation bbox;
+
+	bbox.x = 0;
+	bbox.y = 0;
+	bbox.w = LINE_SAMPLE_WIDTH;
+	bbox.h = LINE_SAMPLE_HEIGHT;
+
+	line[0].code = ART_MOVETO;
+	line[1].code = ART_LINETO;
+	line[2].code = ART_END;
+	line[0].x = 0.5;
+	line[1].x = LINE_SAMPLE_WIDTH - 0.5;
+	line[0].y = line[1].y = LINE_SAMPLE_HEIGHT / 2.0;
+
+	w = go_combo_pixmaps_new (1);
+	for (i = 0; i < G_N_ELEMENTS (elements); i++) {
+		pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, 
+					 LINE_SAMPLE_WIDTH, LINE_SAMPLE_HEIGHT);
+		gdk_pixbuf_fill (pixbuf, 0); /* in case the fill colours have alpha = 0 */
+		is_auto = elements[i] == GO_LINE_MAX;
+		dash_type = is_auto ? default_type : i;
+		if (dash_type != GO_LINE_NONE) {
+			dash = go_line_get_vpath_dash (dash_type, 1.0);
+			path = dash != NULL ? art_vpath_dash (line, dash) : line;
+			svp = art_svp_vpath_stroke (path,
+						    ART_PATH_STROKE_JOIN_MITER, ART_PATH_STROKE_CAP_ROUND,
+						    1.0, 4.0, 0.5);
+			if (dash != NULL) {
+				go_line_vpath_dash_free (dash);
+				g_free (path);
+			}
+			go_color_render_svp (0x000000FF, svp, 0, 0, LINE_SAMPLE_WIDTH, LINE_SAMPLE_HEIGHT,
+					     gdk_pixbuf_get_pixels (pixbuf),
+					     gdk_pixbuf_get_rowstride (pixbuf));
+			art_svp_free (svp);
+		}
+		if (is_auto) {
+			/* xgettext : this will appear as 'Automatic (patternname)' */
+			char *name = g_strdup_printf (_("Automatic (%s)"),
+						      _(line_dashes [default_type].label));
+			go_combo_pixmaps_add_element (w, pixbuf, -default_type, name);
+			g_free (name);
+		} else
+			go_combo_pixmaps_add_element (w, pixbuf, dash_type,
+						      _(line_dashes[dash_type].label));
+	}
+	return w;
+}
+
+ArtBpath*
+go_line_build_bpath (double const *x, double const *y, int n)
+{
+	ArtBpath *path;
+	int i, j, start, cur, nb;
+	double *lengths, *angles, curx, cury, t, t0, a0, a1;
+
+	g_return_val_if_fail (n > 0, NULL);
+
+	path = art_new (ArtBpath, n + 1);
+	lengths = g_new (double, n - 1);
+	angles = g_new (double, n - 1);
+
+	j = -1;
+	for (start = nb = cur = i = 0; i <= n; i++) {
+		if ((i == n) || isnan (x[i]) || !go_finite (x[i]) || (fabs (x[i]) == DBL_MAX) ||
+			isnan (y[i]) || !go_finite (y[i]) || (fabs (y[i]) == DBL_MAX)) {
+			/* invalid or infinite points interrupt the curve; DBL_MAX is also filtered
+			because this value is returned when mapping a negative value to a logarithmic
+			axis. */
+			switch (nb) {
+			case 0: /* invalid point: don't draw anything */
+				break;
+			case 1: /* isolated point: don't draw anything */
+				j--;
+				break;
+			case 2: /* two points: draw a linear segment*/
+				path[start++].code = ART_MOVETO_OPEN;
+				path[start++].code = ART_LINETO;
+				cur = start;
+				break;
+			default: /* draw a bezier spline */
+				path[start].code = ART_MOVETO_OPEN;
+				while (start < j) {
+					curx = path[start + 1].x3 - path[start].x3;
+					cury = path[start + 1].y3 - path[start].y3;
+					lengths[start] = sqrt (curx * curx + cury * cury) / 4.;
+					angles[start] = atan2 (cury, curx);
+					start++ ;
+					path[start].code = ART_CURVETO;
+				}
+				start++;
+				a0 = angles[cur];
+				a1 = angles[cur + 1];
+				if (fabs (a1 - a0) > M_PI)
+					a1 -= (a1 > a0)? 2. * M_PI: -2. * M_PI;
+				t = (a0 * lengths[cur + 1] + a1 * lengths[cur])
+					/ (lengths[cur] + lengths[cur + 1]);
+				t0 = (a0 * 3. - t) / 2.;
+				cur++;
+				path[cur].x1 = path[cur - 1].x3 + lengths[cur - 1] * cos (t0);
+				path[cur].y1 = path[cur - 1].y3 + lengths[cur - 1] * sin (t0);
+				path[cur].x2 = path[cur].x3 - lengths[cur - 1] * cos (t);
+				path[cur].y2 = path[cur].y3 - lengths[cur - 1] * sin (t);
+				cur++;
+				t0 = t;
+				a0 = a1;
+				while (cur < j) {
+					a1 = angles[cur];
+					if (fabs (a1 - a0) > M_PI)
+						a1 -= (a1 > a0)? 2. * M_PI: -2. * M_PI;
+					t = (a0 * lengths[cur] + a1 * lengths[cur - 1])
+						/ (lengths[cur] + lengths[cur - 1]);
+					path[cur].x1 = path[cur - 1].x3 + lengths[cur - 1] * cos (t0);
+					path[cur].y1 = path[cur - 1].y3 + lengths[cur - 1] * sin (t0);
+					path[cur].x2 = path[cur].x3 - lengths[cur - 1] * cos (t);
+					path[cur].y2 = path[cur].y3 - lengths[cur - 1] * sin (t);
+					t0 = t;
+					a0 = a1;
+					cur++;
+				}
+				path[cur].x1 = path[cur - 1].x3 + lengths[cur - 1] * cos (t0);
+				path[cur].y1 = path[cur - 1].y3 + lengths[cur - 1] * sin (t0);
+				t = (a0 * 3. - t0) / 2.;
+				path[cur].x2 = path[cur].x3 - lengths[cur - 1] * cos (t);
+				path[cur].y2 = path[cur].y3 - lengths[cur - 1] * sin (t);
+				cur++;
+			}
+			nb = 0;
+		} else if (!nb || ((path[j].x3 != x[i]) || (path[j].y3 != y[i]))) {
+			j++;
+			path[j].x3 = x[i];
+			path[j].y3 = y[i];
+			nb++;
+		}
+	}
+
+	path[start].code = ART_END;
+	g_free (lengths);
+	g_free (angles);
+	return path;
+}
+
+ArtVpath*
+go_line_build_vpath (double const *x, double const *y, int n)
+{
+	ArtVpath *path;
+	int i, j, start, nb;
+
+	g_return_val_if_fail (n > 0, NULL);
+
+	path = art_new (ArtVpath, n + 1);
+
+	j = -1;
+	for (start = nb = i = 0; i <= n; i++) {
+		if ((i == n) || isnan (x[i]) || !go_finite (x[i]) || (fabs (x[i]) == DBL_MAX) ||
+			isnan (y[i]) || !go_finite (y[i]) || (fabs (y[i]) == DBL_MAX)) {
+			/* invalid or infinite points interrupt the path; DBL_MAX is also filtered
+			because this value is returned when mapping a negative value to a logarithmic
+			axis. */
+			switch (nb) {
+			case 0: /* invalid point: don't draw anything */
+				break;
+			case 1: /* isolated point: don't draw anything */
+				j--;
+				break;
+			default: 
+				path[start].code = ART_MOVETO_OPEN;
+				while (start < j) {
+					start++ ;
+					path[start].code = ART_LINETO;
+				}
+				start++;
+			}
+			nb = 0;
+		} else if (!nb || ((path[j].x != x[i]) || (path[j].y != y[i]))) {
+			j++;
+			path[j].x = x[i];
+			path[j].y = y[i];
+			nb++;
+		}
+	}
+
+	path[start].code = ART_END;
+	return path;
+}
+
+#endif /* WITH_GTK */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-line.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,58 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-line.h : 
+ *
+ * Copyright (C) 2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GO_LINE_H
+#define GO_LINE_H
+
+#include <goffice/graph/goffice-graph.h>
+#include <libart_lgpl/libart.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GO_LINE_NONE,
+	GO_LINE_SOLID,
+	GO_LINE_DASH,
+	GO_LINE_DOT,
+	GO_LINE_DASH_DOT,
+	GO_LINE_DASH_DOT_DOT,
+	GO_LINE_MAX
+} GOLineDashType;
+
+GOLineDashType	 go_line_dash_from_str		(char const *name);
+char const 	*go_line_dash_as_str		(GOLineDashType type);
+
+void 		 go_line_vpath_dash_free	(ArtVpathDash *dash);
+ArtVpathDash 	*go_line_get_vpath_dash 	(GOLineDashType type, double scale);
+
+ArtVpath 	*go_line_clip_vpath		(ArtVpath const *path, GogViewAllocation const *bbox);
+ArtVpath 	*go_line_dash_vpath 		(ArtVpath const *path, ArtVpathDash const *dash, 
+						 GogViewAllocation const *bbox);
+
+gpointer	 go_line_dash_selector		(GOLineDashType default_type);
+
+ArtBpath *go_line_build_bpath (double const *x, double const *y, int n);
+ArtVpath *go_line_build_vpath (double const *x, double const *y, int n);
+
+G_END_DECLS
+
+#endif /* GO_LINE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,581 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-marker.c :
+ *
+ * Copyright (C) 2003-2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-marker.h"
+#include "go-color.h"
+#include <goffice/utils/go-math.h>
+
+#ifdef WITH_GTK
+#include <goffice/gtk/go-combo-color.h>
+#include <goffice/gtk/go-combo-pixmaps.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+#include <glade/glade-xml.h>
+#endif
+
+#include <libart_lgpl/art_render_gradient.h>
+#include <libart_lgpl/art_render_svp.h>
+#include <libart_lgpl/art_render_mask.h>
+#include <libart_lgpl/art_svp_vpath_stroke.h>
+#include <libart_lgpl/art_svp_vpath.h>
+#include <libart_lgpl/art_affine.h>
+#include <libart_lgpl/art_rgb_svp.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+#define MARKER_DEFAULT_SIZE 5
+#define MARKER_OUTLINE_WIDTH 0.1
+
+typedef struct {
+	GObjectClass	base;
+} GOMarkerClass;
+
+#define GO_MARKER_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o),  GO_MARKER_TYPE, GOMarkerClass))
+
+static ArtVpath const square_path[] = { 
+	{ART_MOVETO, -1.0, -1.0},
+	{ART_LINETO, -1.0,  1.0},
+	{ART_LINETO,  1.0,  1.0},
+	{ART_LINETO,  1.0, -1.0},
+	{ART_LINETO, -1.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const diamond_path[] = { 
+	{ART_MOVETO,  0.0, -1.0},
+	{ART_LINETO,  1.0,  0.0},
+	{ART_LINETO,  0.0,  1.0},
+	{ART_LINETO, -1.0,  0.0},
+	{ART_LINETO,  0.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const triangle_down_path[] = { 
+	{ART_MOVETO, -1.0, -1.0},
+	{ART_LINETO,  1.0, -1.0},
+	{ART_LINETO,  0.0,  1.0},
+	{ART_LINETO, -1.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const triangle_up_path[] = { 
+	{ART_MOVETO,  0.0, -1.0},
+	{ART_LINETO,  1.0,  1.0},
+	{ART_LINETO, -1.0,  1.0},
+	{ART_LINETO,  0.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const triangle_right_path[] = { 
+	{ART_MOVETO, -1.0, -1.0},
+	{ART_LINETO,  1.0,  0.0},
+	{ART_LINETO, -1.0,  1.0},
+	{ART_LINETO, -1.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const triangle_left_path[] = { 
+	{ART_MOVETO,  1.0, -1.0},
+	{ART_LINETO, -1.0,  0.0},
+	{ART_LINETO,  1.0,  1.0},
+	{ART_LINETO,  1.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const circle_path[] = {
+	{ART_MOVETO,	1.000	,	0.000	},
+	{ART_LINETO,	0.985	,	0.174	},
+	{ART_LINETO,	0.940	,	0.342	},
+	{ART_LINETO,	0.866	,	0.500	},
+	{ART_LINETO,	0.766	,	0.643	},
+	{ART_LINETO,	0.643	,	0.766	},
+	{ART_LINETO,	0.500	,	0.866	},
+	{ART_LINETO,	0.342	,	0.940	},
+	{ART_LINETO,	0.174	,	0.985	},
+	{ART_LINETO,	0.000	,	1.000	},
+	{ART_LINETO,	-0.174	,	0.985	},
+	{ART_LINETO,	-0.342	,	0.940	},
+	{ART_LINETO,	-0.500	,	0.866	},
+	{ART_LINETO,	-0.643	,	0.766	},
+	{ART_LINETO,	-0.766	,	0.643	},
+	{ART_LINETO,	-0.866	,	0.500	},
+	{ART_LINETO,	-0.940	,	0.342	},
+	{ART_LINETO,	-0.985	,	0.174	},
+	{ART_LINETO,	-1.000	,	0.000	},
+	{ART_LINETO,	-0.985	,	-0.174	},
+	{ART_LINETO,	-0.940	,	-0.342	},
+	{ART_LINETO,	-0.866	,	-0.500	},
+	{ART_LINETO,	-0.766	,	-0.643	},
+	{ART_LINETO,	-0.643	,	-0.766	},
+	{ART_LINETO,	-0.500	,	-0.866	},
+	{ART_LINETO,	-0.342	,	-0.940	},
+	{ART_LINETO,	-0.174	,	-0.985	},
+	{ART_LINETO,	-0.000	,	-1.000	},
+	{ART_LINETO,	0.174	,	-0.985	},
+	{ART_LINETO,	0.342	,	-0.940	},
+	{ART_LINETO,	0.500	,	-0.866	},
+	{ART_LINETO,	0.643	,	-0.766	},
+	{ART_LINETO,	0.766	,	-0.643	},
+	{ART_LINETO,	0.866	,	-0.500	},
+	{ART_LINETO,	0.940	,	-0.342	},
+	{ART_LINETO,	0.985	,	-0.174	},
+	{ART_LINETO,	1.000	,	 0.000	},
+	{ART_END,	0.000	,  	 0.000	}
+};
+
+static ArtVpath const x_path[] = { 
+	{ART_MOVETO,  1.0,  1.0},
+	{ART_LINETO, -1.0, -1.0},
+	{ART_MOVETO,  1.0, -1.0},
+	{ART_LINETO, -1.0,  1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const cross_path[] = { 
+	{ART_MOVETO,  1.0,  0.0},
+	{ART_LINETO, -1.0,  0.0},
+	{ART_MOVETO,  0.0,  1.0},
+	{ART_LINETO,  0.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const asterisk_path[] = { 
+	{ART_MOVETO,  0.7,  0.7},
+	{ART_LINETO, -0.7, -0.7},
+	{ART_MOVETO,  0.7, -0.7},
+	{ART_LINETO, -0.7,  0.7},
+	{ART_MOVETO,  1.0,  0.0},
+	{ART_LINETO, -1.0,  0.0},
+	{ART_MOVETO,  0.0,  1.0},
+	{ART_LINETO,  0.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const bar_path[] = {
+	{ART_MOVETO, -1.0, -0.2},
+	{ART_LINETO,  1.0, -0.2},
+	{ART_LINETO,  1.0,  0.2},
+	{ART_LINETO, -1.0,  0.2},
+	{ART_LINETO, -1.0, -0.2},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const half_bar_path[] = {
+	{ART_MOVETO,  0.0, -0.2},
+	{ART_LINETO,  1.0, -0.2},
+	{ART_LINETO,  1.0,  0.2},
+	{ART_LINETO,  0.0,  0.2},
+	{ART_LINETO,  0.0, -0.2},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const butterfly_path[] = {
+	{ART_MOVETO, -1.0, -1.0},
+	{ART_LINETO, -1.0,  1.0},
+	{ART_LINETO,  0.0,  0.0},
+	{ART_LINETO,  1.0,  1.0},
+	{ART_LINETO,  1.0, -1.0},
+	{ART_LINETO,  0.0,  0.0},
+	{ART_LINETO, -1.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+static ArtVpath const hourglass_path[] = {
+	{ART_MOVETO, -1.0, -1.0},
+	{ART_LINETO,  1.0, -1.0},
+	{ART_LINETO,  0.0,  0.0},
+	{ART_LINETO,  1.0,  1.0},
+	{ART_LINETO, -1.0,  1.0},
+	{ART_LINETO,  0.0,  0.0},
+	{ART_LINETO, -1.0, -1.0},
+	{ART_END   ,  0.0,  0.0}
+};
+
+typedef struct
+{
+	char const *name;
+	char const *str;
+	ArtVpath const *outline_path;
+	ArtVpath const *fill_path;
+} MarkerShape;
+
+#define MAKE_MARKER_SHAPE(name, str, path)	{name, str, path, path}
+#define MAKE_MARKER_SQUARED(name, str, path)	{name, str, path, square_path}
+
+static MarkerShape const marker_shapes[GO_MARKER_MAX] = {
+    MAKE_MARKER_SHAPE   ( N_("none"),		"none",           NULL),
+    MAKE_MARKER_SHAPE   ( N_("square"),		"square",         square_path),
+    MAKE_MARKER_SHAPE   ( N_("diamond"),	"diamond",        diamond_path),
+    MAKE_MARKER_SHAPE   ( N_("triangle down"),	"triangle-down",  triangle_down_path),
+    MAKE_MARKER_SHAPE   ( N_("triangle up"),	"triangle-up",    triangle_up_path),
+    MAKE_MARKER_SHAPE   ( N_("triangle right"),	"triangle-right", triangle_right_path),
+    MAKE_MARKER_SHAPE   ( N_("triangle left"),	"triangle-left",  triangle_left_path),
+    MAKE_MARKER_SHAPE   ( N_("circle"),		"circle",         circle_path),
+    MAKE_MARKER_SQUARED ( N_("x"),		"x",              x_path),
+    MAKE_MARKER_SQUARED ( N_("cross"),		"cross",          cross_path),
+    MAKE_MARKER_SQUARED ( N_("asterisk"),	"asterisk",       asterisk_path),
+    MAKE_MARKER_SHAPE   ( N_("bar"), 		"bar",            bar_path),
+    MAKE_MARKER_SHAPE   ( N_("half bar"),	"half-bar",       half_bar_path),
+    MAKE_MARKER_SHAPE   ( N_("butterfly"),	"butterfly",      butterfly_path),
+    MAKE_MARKER_SHAPE   ( N_("hourglass"),	"hourglass",      hourglass_path)
+};
+
+static GObjectClass *marker_parent_klass;
+
+#ifdef WITH_GTK
+static GdkPixbuf *
+new_blank_pixbuf (GOMarker *marker, guint size)
+{
+	int offset = ceil ((double)size * MARKER_OUTLINE_WIDTH / 2.0);
+	int pixbuf_size = size + 1 + 2 * offset;
+	GdkPixbuf *res = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
+					    pixbuf_size, pixbuf_size);
+	gdk_pixbuf_fill (res, 0); /* in case the fill colours have alpha = 0 */
+	return res;
+}
+
+static GdkPixbuf *
+marker_create_pixbuf_with_size (GOMarker *marker, guint size)
+{
+	double scaling[6], translation[6], affine[6];
+	guchar *pixels;
+	int rowstride;
+	ArtSVP *outline, *fill;
+	double half_size;
+	int pixbuf_size, offset;
+	ArtVpath  *outline_path;
+	ArtVpath  *fill_path;
+	GdkPixbuf *pixbuf;
+
+	size = rint (marker->scale * size);
+
+	if (size < 1 || marker->shape == GO_MARKER_NONE)
+		return NULL;
+
+	/* FIXME : markers look bad due to grey outline */
+
+	/* keep in sync with new_blank_pixbuf */
+	offset = ceil ((double)size * MARKER_OUTLINE_WIDTH / 2.0);
+	pixbuf_size = size + 1 + 2 * offset;
+	half_size = (double)size / 2.0;
+	
+	art_affine_scale (scaling, half_size, half_size);
+	art_affine_translate (translation, half_size + offset + .5, half_size + offset + .5);
+	art_affine_multiply (affine, scaling, translation);
+	
+	outline_path = art_vpath_affine_transform (marker_shapes[marker->shape].outline_path, affine);
+	fill_path = art_vpath_affine_transform (marker_shapes[marker->shape].fill_path, affine);
+
+	pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, pixbuf_size, pixbuf_size);
+	pixels = gdk_pixbuf_get_pixels (pixbuf);
+	rowstride = gdk_pixbuf_get_rowstride (pixbuf);
+
+	gdk_pixbuf_fill (pixbuf, 0xffffff00);
+	outline = art_svp_vpath_stroke (outline_path,
+					ART_PATH_STROKE_JOIN_MITER,
+					ART_PATH_STROKE_CAP_SQUARE,
+				 	MARKER_OUTLINE_WIDTH * (double)size, 4, 0.5);
+	fill = art_svp_from_vpath (fill_path);
+
+	go_color_render_svp (marker->fill_color, fill, 0, 0, pixbuf_size, pixbuf_size, 
+			     pixels, rowstride);
+	go_color_render_svp (marker->outline_color, outline, 0, 0, pixbuf_size, pixbuf_size,
+			     pixels, rowstride);
+
+	art_svp_free (fill);
+	art_svp_free (outline);
+
+	g_free (outline_path);
+	g_free (fill_path);
+
+/*	{*/
+/*		GError * error = NULL;*/
+		
+/*		if (!gdk_pixbuf_save (pixbuf, "test.png", "png", &error, NULL))*/
+/*		{*/
+/*			g_warning("%s", error->message);*/
+/*			g_error_free (error);*/
+/*		}*/
+/*	}*/
+
+	return pixbuf; 
+}
+	
+static void
+marker_free_pixbuf (GOMarker * marker)
+{
+	if (marker->pixbuf != NULL) {
+		g_object_unref (marker->pixbuf);
+		marker->pixbuf = NULL;
+	}
+}
+
+static void
+marker_update_pixbuf (GOMarker * marker)
+{
+	marker->pixbuf = marker_create_pixbuf_with_size (marker, marker->size);
+}
+#else
+# define marker_free_pixbuf(marker) do {} while(0)
+#endif /* WITH_GTK */
+
+static void
+go_marker_finalize (GObject *obj)
+{
+	marker_free_pixbuf(GO_MARKER (obj));
+	
+	marker_parent_klass->finalize (obj);
+}
+
+static void
+go_marker_init (GOMarker * marker)
+{
+	marker->shape		= GO_MARKER_NONE;
+	marker->outline_color	= RGBA_BLACK;
+	marker->fill_color	= RGBA_WHITE;
+	marker->size		= MARKER_DEFAULT_SIZE;
+#ifdef WITH_GTK
+	marker->pixbuf 		= NULL;
+#endif
+	marker->scale		= 1.;
+}
+
+static void
+go_marker_class_init (GObjectClass *gobject_klass)
+{
+	marker_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gobject_klass->finalize	= go_marker_finalize;
+}
+
+GOMarkerShape
+go_marker_shape_from_str (char const *str)
+{
+	unsigned i;
+	for (i = 0; i < GO_MARKER_MAX; i++)
+		if (g_ascii_strcasecmp (marker_shapes[i].str, str) == 0)
+			return (GOMarkerShape)i;
+	return GO_MARKER_NONE;
+}
+
+char const *
+go_marker_shape_as_str (GOMarkerShape shape)
+{
+	return (shape < 0 || shape >= GO_MARKER_MAX) ? "pattern"
+		: marker_shapes[shape].str;
+}
+
+void
+go_marker_get_paths (GOMarker * marker,
+		     ArtVpath const **outline_path,
+		     ArtVpath const **fill_path)
+{
+	*outline_path = marker_shapes[marker->shape].outline_path;
+	*fill_path = marker_shapes[marker->shape].fill_path;
+}
+
+#ifdef WITH_GTK
+GdkPixbuf *
+go_marker_get_pixbuf (GOMarker * marker, double scale)
+{
+	g_return_val_if_fail (IS_GO_MARKER (marker), NULL);
+
+	if (marker->pixbuf == NULL ||
+	    marker->scale !=  scale) {
+		marker->scale = scale;
+		marker_update_pixbuf (marker);
+	}
+	return marker->pixbuf;
+}
+
+GdkPixbuf *
+go_marker_get_pixbuf_with_size (GOMarker *marker, guint size)
+{
+	g_return_val_if_fail (IS_GO_MARKER (marker), NULL);
+
+	return marker_create_pixbuf_with_size (marker, size);
+}
+#endif /* WITH_GTK */
+
+GOMarkerShape 
+go_marker_get_shape (GOMarker * marker)
+{
+	return marker->shape;
+}
+
+void
+go_marker_set_shape (GOMarker *marker, GOMarkerShape shape)
+{
+	g_return_if_fail (IS_GO_MARKER (marker));	    
+	if (marker->shape == shape)
+		return;
+	marker->shape = shape;
+	marker_free_pixbuf(marker);
+}
+	
+GOColor
+go_marker_get_outline_color (GOMarker * marker)
+{
+	return marker->outline_color;
+}
+
+void
+go_marker_set_outline_color (GOMarker *marker, GOColor color)
+{
+	g_return_if_fail (IS_GO_MARKER (marker));
+	if (marker->outline_color == color)
+		return;
+	marker->outline_color = color;
+	marker_free_pixbuf(marker);
+}
+	
+GOColor
+go_marker_get_fill_color (GOMarker * marker)
+{
+	return marker->fill_color;
+}
+
+void
+go_marker_set_fill_color (GOMarker *marker, GOColor color)
+{
+	g_return_if_fail (IS_GO_MARKER (marker));
+	if (marker->fill_color == color)
+		return;
+	marker->fill_color = color;
+	marker_free_pixbuf(marker);
+}
+	
+int
+go_marker_get_size (GOMarker * marker)
+{
+	return marker->size;
+}
+
+double 
+go_marker_get_outline_width (GOMarker * marker)
+{
+	return (double)marker->size * MARKER_OUTLINE_WIDTH;
+}
+
+void
+go_marker_set_size (GOMarker *marker, int size)
+{
+	g_return_if_fail (IS_GO_MARKER (marker));
+	g_return_if_fail (size >= 0);
+	if (marker->size == size)
+		return;
+	marker->size = size;
+	marker_free_pixbuf(marker);
+}
+
+void
+go_marker_assign (GOMarker *dst, GOMarker const *src)
+{
+	if (src == dst)
+		return;
+
+	g_return_if_fail (GO_MARKER (src) != NULL);
+	g_return_if_fail (GO_MARKER (dst) != NULL);
+
+	dst->size		= src->size;
+	dst->shape		= src->shape;
+	dst->outline_color	= src->outline_color;
+	dst->fill_color		= src->fill_color;
+
+#ifdef WITH_GTK
+	if (dst->pixbuf != NULL)
+		g_object_unref (src->pixbuf);
+	dst->pixbuf = src->pixbuf;
+	if (dst->pixbuf != NULL)
+		g_object_ref (dst->pixbuf);
+#endif
+}	
+	
+GOMarker *
+go_marker_dup (GOMarker *src)
+{
+	GOMarker *dst = go_marker_new ();
+	go_marker_assign (dst, src);
+	return dst;
+}
+
+GOMarker *
+go_marker_new (void)
+{
+	return g_object_new (GO_MARKER_TYPE, NULL);
+}
+
+GSF_CLASS (GOMarker, go_marker,
+	   go_marker_class_init, go_marker_init,
+	   G_TYPE_OBJECT)
+
+/*---------------------------------------------------------------------------*/
+
+#ifdef WITH_GTK
+gpointer
+go_marker_selector (GOColor outline_color, GOColor fill_color,
+		    GOMarkerShape default_shape)
+{
+	static const GOMarkerShape elements[] = {
+		GO_MARKER_NONE,		GO_MARKER_TRIANGLE_UP,	GO_MARKER_BUTTERFLY,
+		GO_MARKER_TRIANGLE_LEFT, GO_MARKER_DIAMOND,	GO_MARKER_TRIANGLE_RIGHT,
+		GO_MARKER_BAR,		GO_MARKER_TRIANGLE_DOWN, GO_MARKER_HOURGLASS,
+		GO_MARKER_HALF_BAR,	GO_MARKER_SQUARE,	GO_MARKER_CIRCLE,
+		GO_MARKER_X,		GO_MARKER_CROSS,	GO_MARKER_ASTERISK,
+		GO_MARKER_MAX /* fill with auto */
+	};
+
+	unsigned	 i;
+	GOComboPixmaps	*w;
+	GOMarker	*marker = go_marker_new ();
+
+	go_marker_set_fill_color (marker, fill_color);
+	go_marker_set_outline_color (marker, outline_color);
+	go_marker_set_size (marker, 15);
+
+	w = go_combo_pixmaps_new (4);
+	for (i = 0; i < G_N_ELEMENTS (elements); i++) {
+		GOMarkerShape shape = elements[i];
+		gboolean is_auto = (shape == GO_MARKER_MAX);
+		GdkPixbuf *pixbuf;
+
+		go_marker_set_shape (marker, is_auto ? default_shape : shape);
+		pixbuf = go_marker_get_pixbuf (marker, 1.0);
+		if (pixbuf == NULL) /* handle none */
+			pixbuf = new_blank_pixbuf (marker, marker->size);
+		else	/* add_element absorbs ref */
+			g_object_ref (pixbuf);
+		if (is_auto) {
+			/* xgettext : this will appear as 'Automatic (shapename)' */
+			char *name = g_strdup_printf (_("Automatic (%s)"),
+				_(marker_shapes [default_shape].name));
+			go_combo_pixmaps_add_element (w, pixbuf,
+				-default_shape, name);
+			g_free (name);
+		} else
+			go_combo_pixmaps_add_element (w, pixbuf,
+				shape, _(marker_shapes [shape].name));
+	}
+	g_object_unref (marker);
+
+	return GTK_WIDGET (w);
+}
+#endif /* WITH_GTK */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marker.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,108 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-marker.h :
+ *
+ * Copyright (C) 2003-2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GO_MARKER_H
+#define GO_MARKER_H
+
+#include <glib-object.h>
+#include <goffice/utils/goffice-utils.h>
+#include <libart_lgpl/art_vpath.h>
+
+#ifdef WITH_GTK
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#endif
+
+G_BEGIN_DECLS
+
+#define GO_MARKER_TYPE	  	(go_marker_get_type ())
+#define GO_MARKER(o)		(G_TYPE_CHECK_INSTANCE_CAST((o), GO_MARKER_TYPE, GOMarker))
+#define IS_GO_MARKER(o)		(G_TYPE_CHECK_INSTANCE_TYPE((o), GO_MARKER_TYPE))
+
+typedef enum {
+	GO_MARKER_NONE,
+	GO_MARKER_SQUARE,
+	GO_MARKER_DIAMOND,
+	GO_MARKER_TRIANGLE_DOWN,
+	GO_MARKER_TRIANGLE_UP,
+	GO_MARKER_TRIANGLE_RIGHT,
+	GO_MARKER_TRIANGLE_LEFT,
+	GO_MARKER_CIRCLE,
+	GO_MARKER_X,
+	GO_MARKER_CROSS,
+	GO_MARKER_ASTERISK,
+	GO_MARKER_BAR,
+	GO_MARKER_HALF_BAR,
+	GO_MARKER_BUTTERFLY,
+	GO_MARKER_HOURGLASS,
+	GO_MARKER_MAX
+} GOMarkerShape;
+
+struct _GOMarker {
+	GObject 	base;
+
+	int		size;
+	double		scale;
+	GOMarkerShape	shape;
+	GOColor		outline_color;
+	GOColor		fill_color;
+#ifdef WITH_GTK
+	GdkPixbuf	*pixbuf;
+#else
+	gpointer	 pixbuf_placeholder;
+#endif
+};
+
+GType go_marker_get_type (void); 
+
+
+GOMarkerShape    go_marker_shape_from_str       (char const *name);
+char const      *go_marker_shape_as_str         (GOMarkerShape shape);
+void		 go_marker_get_paths		(GOMarker * marker,
+						 ArtVpath const **outline_path,
+						 ArtVpath const **fill_path);
+GOMarkerShape 	 go_marker_get_shape		(GOMarker *m);
+void 		 go_marker_set_shape 		(GOMarker *m, GOMarkerShape shape);
+GOColor 	 go_marker_get_outline_color	(GOMarker *m);
+void		 go_marker_set_outline_color	(GOMarker *m, GOColor color);
+GOColor		 go_marker_get_fill_color	(GOMarker *m);
+void		 go_marker_set_fill_color	(GOMarker *m, GOColor color);
+int		 go_marker_get_size		(GOMarker *m);
+void		 go_marker_set_size		(GOMarker *m, int size);
+double		 go_marker_get_outline_width	(GOMarker *m);
+
+void		 go_marker_assign 		(GOMarker *dst, GOMarker const *src);
+GOMarker *	 go_marker_dup 			(GOMarker *src);
+GOMarker * 	 go_marker_new 			(void);
+
+#ifdef WITH_GTK
+GdkPixbuf       *go_marker_get_pixbuf		(GOMarker *m, double scale);
+GdkPixbuf       *go_marker_get_pixbuf_with_size (GOMarker *m, guint size);
+
+gpointer 	 go_marker_selector 		(GOColor outline_color, 
+						 GOColor fill_color,
+						 GOMarkerShape default_shape);
+GOMarkerShape	 go_marker_selector_get_shape	(gpointer selector,
+						 int index, gboolean *is_auto);
+#endif
+	
+G_END_DECLS
+
+#endif /* GO_MARKER_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marshalers.list
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marshalers.list	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-marshalers.list	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,26 @@
+# see glib-genmarshal(1) for a detailed description of the file format,
+# possible parameter types are:
+#   VOID        indicates   no   return   type,  or  no  extra
+#               parameters. if VOID is used as  the  parameter
+#               list, no additional parameters may be present.
+#   BOOLEAN     for boolean types (gboolean)
+#   CHAR        for signed char types (gchar)
+#   UCHAR       for unsigned char types (guchar)
+#   INT         for signed integer types (gint)
+#   UINT        for unsigned integer types (guint)
+#   LONG        for signed long integer types (glong)
+#   ULONG       for unsigned long integer types (gulong)
+#   ENUM        for enumeration types (gint)
+#   FLAGS       for flag enumeration types (guint)
+#   FLOAT       for single-precision float types (gfloat)
+#   DOUBLE      for double-precision float types (gdouble)
+#   STRING      for string types (gchar*)
+#   BOXED       for boxed (anonymous but reference counted) types (GBoxed*)
+#   POINTER     for anonymous pointer types (gpointer)
+#   OBJECT      for GObject or derived types (GObject*)
+#   NONE        deprecated alias for VOID
+#   BOOL        deprecated alias for BOOLEAN
+BOOLEAN:OBJECT
+BOOLEAN:POINTER
+STRING:POINTER
+VOID:INT,BOOLEAN,BOOLEAN,BOOLEAN

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,616 @@
+/*
+ * go-math.c:  Mathematical functions.
+ *
+ * Authors:
+ *   Morten Welinder <terra at gnome.org>
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-math.h"
+#include <glib/gmessages.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <locale.h>
+#include <signal.h>
+#include <errno.h>
+
+#if defined (HAVE_IEEEFP_H) || defined (HAVE_IEEE754_H)
+/* Make sure we have this symbol defined, since the existance of either
+   header file implies it.  */
+#ifndef IEEE_754
+#define IEEE_754
+#endif
+#endif
+
+#ifdef HAVE_SUNMATH_H
+#include <sunmath.h>
+#endif
+
+#ifdef HAVE_IEEEFP_H
+#include <ieeefp.h>
+#endif
+#ifdef HAVE_IEEE754_H
+#include <ieee754.h>
+#endif
+
+#define ML_UNDERFLOW (GO_EPSILON * GO_EPSILON)
+
+double go_nan;
+double go_pinf;
+double go_ninf;
+
+void
+go_math_init (void)
+{
+	const char *bug_url = "http://bugzilla.gnome.org/enter_bug.cgi?product=libgoffice";
+	char *old_locale;
+	double d;
+#ifdef SIGFPE
+	void (*signal_handler)(int) = (void (*)(int))signal (SIGFPE, SIG_IGN);
+#endif
+
+	go_pinf = HUGE_VAL;
+	if (go_pinf > 0 && !go_finite (go_pinf))
+		goto have_pinf;
+
+#if defined(INFINITY) && defined(__STDC_IEC_559__)
+	go_pinf = INFINITY;
+	if (go_pinf > 0 && !go_finite (go_pinf))
+		goto have_pinf;
+#endif
+
+	/* Try sscanf with fixed strings.  */
+	old_locale = setlocale (LC_ALL, "C");
+	if (sscanf ("Inf", "%lf", &d) != 1 &&
+	    sscanf ("+Inf", "%lf", &d) != 1)
+		d = 0;
+	setlocale (LC_ALL, old_locale);
+	go_pinf = d;
+	if (go_pinf > 0 && !go_finite (go_pinf))
+		goto have_pinf;
+
+	/* Try overflow.  */
+	go_pinf = (HUGE_VAL * HUGE_VAL);
+	if (go_pinf > 0 && !go_finite (go_pinf))
+		goto have_pinf;
+
+	g_error ("Failed to generate +Inf.  Please report at %s",
+		 bug_url);
+	abort ();
+
+ have_pinf:
+	/* ---------------------------------------- */
+
+	go_ninf = -go_pinf;
+	if (go_ninf < 0 && !go_finite (go_ninf))
+		goto have_ninf;
+
+	g_error ("Failed to generate -Inf.  Please report at %s",
+		 bug_url);
+	abort ();
+
+ have_ninf:
+	/* ---------------------------------------- */
+
+	go_nan = go_pinf * 0.0;
+	if (isnan (go_nan))
+		goto have_nan;
+
+	/* Try sscanf with fixed strings.  */
+	old_locale = setlocale (LC_ALL, "C");
+	if (sscanf ("NaN", "%lf", &d) != 1 &&
+	    sscanf ("NAN", "%lf", &d) != 1 &&
+	    sscanf ("+NaN", "%lf", &d) != 1 &&
+	    sscanf ("+NAN", "%lf", &d) != 1)
+		d = 0;
+	setlocale (LC_ALL, old_locale);
+	go_nan = d;
+	if (isnan (go_nan))
+		goto have_nan;
+
+	go_nan = go_pinf / go_pinf;
+	if (isnan (go_nan))
+		goto have_nan;
+
+	g_error ("Failed to generate NaN.  Please report at %s",
+		 bug_url);
+	abort ();
+
+ have_nan:
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+	go_nanl = go_nan;
+	go_pinfl = go_pinf;
+	go_ninfl = go_ninf;
+	if (!(isnanl (go_nanl) &&
+	      go_pinfl > 0 && !finitel (go_pinfl) &&
+	      go_ninfl < 0 && !finitel (go_ninfl))) {
+		g_error ("Failed to generate long double NaN/+Inf/-Inf.  Please report at %s",
+			 bug_url);
+		abort ();
+	}
+#endif
+
+#ifdef SIGFPE
+	signal (SIGFPE, signal_handler);
+#endif
+	return;
+}
+
+/*
+ * In preparation for truncation, make the value a tiny bit larger (seen
+ * absolutely).  This makes ROUND (etc.) behave a little closer to what
+ * people want, even if it is a bit bogus.
+ */
+double
+go_add_epsilon (double x)
+{
+	if (!go_finite (x) || x == 0)
+		return x;
+	else {
+		int exp;
+		double mant = frexp (fabs (x), &exp);
+		double absres = ldexp (mant + DBL_EPSILON, exp);
+		return (x < 0) ? -absres : absres;
+	}
+}
+
+double
+go_sub_epsilon (double x)
+{
+	if (!go_finite (x) || x == 0)
+		return x;
+	else {
+		int exp;
+		double mant = frexp (fabs (x), &exp);
+		double absres = ldexp (mant - DBL_EPSILON, exp);
+		return (x < 0) ? -absres : absres;
+	}
+}
+
+double
+go_fake_floor (double x)
+{
+	return (x >= 0)
+		? floor (go_add_epsilon (x))
+		: floor (go_sub_epsilon (x));
+}
+
+double
+go_fake_ceil (double x)
+{
+	return (x >= 0)
+		? ceil (go_sub_epsilon (x))
+		: ceil (go_add_epsilon (x));
+}
+
+double
+go_fake_round (double x)
+{
+	double y = go_fake_floor (fabs (x) + 0.5);
+	return (x < 0) ? -y : y;
+}
+
+double
+go_fake_trunc (double x)
+{
+	return (x >= 0)
+		? floor (go_add_epsilon (x))
+		: -floor (go_add_epsilon (-x));
+}
+
+double
+go_rint (double x)
+{
+	double y = floor (fabs (x) + 0.5);
+	return (x < 0) ? -y : y;
+}
+
+int
+go_finite (double x)
+{
+	/* What a circus!  */
+#ifdef HAVE_FINITE
+	return finite (x);
+#elif defined(HAVE_ISFINITE)
+	return isfinite (x);
+#elif defined(FINITE)
+	return FINITE (x);
+#else
+	x = fabs (x);
+	return x < HUGE_VAL;
+#endif
+}
+
+double
+go_pow2 (int n)
+{
+	g_assert (FLT_RADIX == 2);
+	return ldexp (1.0, n);
+}
+
+double
+go_pow10 (int n)
+{
+	static const double fast[] = {
+		1e-20, 1e-19, 1e-18, 1e-17, 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11,
+		1e-10, 1e-09, 1e-08, 1e-07, 1e-06, 1e-05, 1e-04, 1e-03, 1e-02, 1e-01,
+		1e+0,
+		1e+01, 1e+02, 1e+03, 1e+04, 1e+05, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10,
+		1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20
+	};
+
+	if (n >= -20 && n <= 20)
+		return (fast + 20)[n];
+
+	return pow (10.0, n);
+}
+
+#ifdef GOFFICE_SUPPLIED_LOG1P
+double
+log1p (double x)
+{
+  double term, sum;
+  int i;
+
+  if (fabs (x) > 0.25)
+    return log (x + 1);
+
+  i = 0;
+  sum = 0;
+  term = -1;
+  while (fabs (term) > fabs (sum) * DBL_EPSILON) {
+    term *= -x;
+    i++;
+    sum += term / i;
+  }
+
+  return sum;
+}
+#endif
+
+#ifdef GOFFICE_SUPPLIED_EXPM1
+double
+expm1 (double x)
+{
+	double y, a = fabs (x);
+
+	if (a > 1e-8) {
+		y = exp (x) - 1;
+		if (a > 0.697)
+			return y;  /* negligible cancellation */
+	} else {
+		if (a < DBL_EPSILON)
+			return x;
+		/* Taylor expansion, more accurate in this range */
+		y = (x / 2 + 1) * x;
+	}
+
+	/* Newton step for solving   log(1 + y) = x   for y : */
+	y -= (1 + y) * (log1p (y) - x);
+	return y;
+}
+#endif
+
+#ifdef GOFFICE_SUPPLIED_ASINH
+double
+asinh (double x)
+{
+  double y = fabs (x);
+  double r = log1p (y * y / (hypot (y, 1.0) + 1.0) + y);
+  return (x >= 0) ? r : -r;
+}
+#endif
+
+#ifdef GOFFICE_SUPPLIED_ACOSH
+double
+acosh (double x)
+{
+  double xm1 = x - 1;
+  return log1p (xm1 + sqrt (xm1) * sqrt (x + 1.0));
+}
+#endif
+
+#ifdef GOFFICE_SUPPLIED_ATANH
+double
+atanh (double x)
+{
+  double y = fabs (x);
+  double r = -0.5 * log1p (-(y + y) / (1.0 + y));
+  return (x >= 0) ? r : -r;
+}
+#endif
+
+/* ------------------------------------------------------------------------- */
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+
+long double go_nanl;
+long double go_pinfl;
+long double go_ninfl;
+
+long double
+go_pow2l (int n)
+{
+#ifdef GOFFICE_SUPPLIED_LDEXPL
+	return powl (2.0L, n);
+#else
+	g_assert (FLT_RADIX == 2);
+	return ldexpl (1.0L, n);
+#endif
+}
+
+long double
+go_pow10l (int n)
+{
+	static const long double fast[] = {
+		1e-20L, 1e-19L, 1e-18L, 1e-17L, 1e-16L, 1e-15L, 1e-14L, 1e-13L, 1e-12L, 1e-11L,
+		1e-10L, 1e-09L, 1e-08L, 1e-07L, 1e-06L, 1e-05L, 1e-04L, 1e-03L, 1e-02L, 1e-01L,
+		1e+0L,
+		1e+01L, 1e+02L, 1e+03L, 1e+04L, 1e+05L, 1e+06L, 1e+07L, 1e+08L, 1e+09L, 1e+10L,
+		1e+11L, 1e+12L, 1e+13L, 1e+14L, 1e+15L, 1e+16L, 1e+17L, 1e+18L, 1e+19L, 1e+20L
+	};
+
+	if (n >= -20 && n <= 20)
+		return (fast + 20)[n];
+
+	return powl (10.0L, n);
+}
+
+/*
+ * In preparation for truncation, make the value a tiny bit larger (seen
+ * absolutely).  This makes ROUND (etc.) behave a little closer to what
+ * people want, even if it is a bit bogus.
+ */
+long double
+go_add_epsilonl (long double x)
+{
+	if (!go_finitel (x) || x == 0)
+		return x;
+	else {
+		int exp;
+		long double mant = frexpl (fabsl (x), &exp);
+		long double absres = ldexpl (mant + LDBL_EPSILON, exp);
+		return (x < 0) ? -absres : absres;
+	}
+}
+
+long double
+go_sub_epsilonl (long double x)
+{
+	if (!go_finitel (x) || x == 0)
+		return x;
+	else {
+		int exp;
+		long double mant = frexpl (fabsl (x), &exp);
+		long double absres = ldexpl (mant - LDBL_EPSILON, exp);
+		return (x < 0) ? -absres : absres;
+	}
+}
+
+long double
+go_fake_floorl (long double x)
+{
+	return (x >= 0)
+		? floorl (go_add_epsilonl (x))
+		: floorl (go_sub_epsilonl (x));
+}
+
+long double
+go_fake_ceill (long double x)
+{
+	return (x >= 0)
+		? ceill (go_sub_epsilonl (x))
+		: ceill (go_add_epsilonl (x));
+}
+
+long double
+go_fake_roundl (long double x)
+{
+	long double y = go_fake_floorl (fabsl (x) + 0.5L);
+	return (x < 0) ? -y : y;
+}
+
+long double
+go_fake_truncl (long double x)
+{
+	return (x >= 0)
+		? floorl (go_add_epsilonl (x))
+		: -floorl (go_add_epsilonl (-x));
+}
+
+#ifdef GOFFICE_SUPPLIED_LDEXPL
+long double
+ldexpl (long double x, int exp)
+{
+	if (!finitel (x) || x == 0)
+		return x;
+	else {
+		long double res = x * go_pow2l (exp);
+		if (finitel (res))
+			return res;
+		else {
+			errno = ERANGE;
+			return (x > 0) ? go_pinfl : go_ninfl;
+		}
+	}
+}
+#endif
+
+#ifdef GOFFICE_SUPPLIED_FREXPL
+long double
+frexpl (long double x, int *exp)
+{
+	long double l2x;
+
+	if (!finitel (x) || x == 0) {
+		*exp = 0;
+		return x;
+	}
+
+	l2x = logl (fabsl (x)) / logl (2);
+	*exp = (int)floorl (l2x);
+
+	/*
+	 * Now correct the result and adjust things that might have gotten
+	 * off-by-one due to rounding.
+	 */
+	x /= go_pow2l (*exp);
+	if (fabsl (x) >= 1.0)
+		x /= 2, (*exp)++;
+	else if (fabsl (x) < 0.5)
+		x *= 2, (*exp)--;
+
+	return x;
+}
+#endif
+
+#ifndef HAVE_STRTOLD
+long double
+strtold (char const *str, char **end)
+{
+#if defined(HAVE_STRING_TO_DECIMAL) && defined(HAVE_DECIMAL_TO_QUADRUPLE)
+	long double res;
+	decimal_record dr;
+	enum decimal_string_form form;
+	decimal_mode dm;
+	fp_exception_field_type excp;
+	char *echar;
+
+	string_to_decimal ((char **)&str, INT_MAX, 0,
+			   &dr, &form, &echar);
+	if (end) *end = (char *)str;
+
+	if (form == invalid_form) {
+		errno = EINVAL;
+		return 0.0L;
+	}
+
+	dm.rd = fp_nearest;
+	decimal_to_quadruple (&res, &dm, &dr, &excp);
+        if (excp & ((1 << fp_overflow) | (1 << fp_underflow)))
+                errno = ERANGE;
+	return res;
+#else
+	char *myend;
+	long double res;
+	int count;
+
+	if (end == 0) end = &myend;
+	(void) strtod (str, end);
+	if (str == *end)
+		return 0.0L;
+
+	errno = 0;
+	count = sscanf (str, "%Lf", &res);
+	if (count == 1)
+		return res;
+
+	/* Now what?  */
+	*end = (char *)str;
+	errno = ERANGE;
+	return 0.0;
+#endif
+}
+#endif
+
+#ifdef GOFFICE_SUPPLIED_MODFL
+long double
+modfl (long double x, long double *iptr)
+{
+	if (isnanl (x))
+		return *iptr = x;
+	else if (finitel (x)) {
+		if (x >= 0)
+			return x - (*iptr = floorl (x));
+		else
+			return x - (*iptr = -floorl (-x));			
+	} else {
+		*iptr = x;
+		return 0;
+	}
+}
+#endif
+
+#endif
+
+/* ------------------------------------------------------------------------- */
+
+void
+go_continued_fraction (double val, int max_denom, int *res_num, int *res_denom)
+{
+	int n1, n2, d1, d2;
+	double x, y;
+
+	if (val < 0) {
+		go_continued_fraction (-val, max_denom, res_num, res_denom);
+		*res_num = -*res_num;
+		return;
+	}
+
+	n1 = 0; d1 = 1;
+	n2 = 1; d2 = 0;
+
+	x = val;
+	y = 1;
+
+	do {
+		int a = (int) (x / y);
+		double newy = x - a * y;
+		int n3, d3;
+
+		if ((n2 && a > (INT_MAX - n1) / n2) ||
+		    (d2 && a > (INT_MAX - d1) / d2) ||
+		    a * d2 + d1 > max_denom) {
+			*res_num = n2;
+			*res_denom = d2;
+			return;
+		}
+
+		n3 = a * n2 + n1;
+		d3 = a * d2 + d1;
+
+		x = y;
+		y = newy;
+
+		n1 = n2; n2 = n3;
+		d1 = d2; d2 = d3;
+	} while (y > 1e-10);
+
+	*res_num = n2;
+	*res_denom = d2;
+}
+
+
+void
+go_stern_brocot (double val, int max_denom, int *res_num, int *res_denom)
+{
+	int an = 0, ad = 1;
+	int bn = 1, bd = 1;
+	int n, d;
+	double sp, delta;
+
+	while ((d = ad + bd) <= max_denom) {
+		sp = 1e-5 * d;/* Quick and dirty,  do adaptive later */
+		n = an + bn;
+		delta = val * d - n;
+		if (delta > sp) {
+			an = n;
+			ad = d;
+		} else if (delta < -sp) {
+			bn = n;
+			bd = d;
+		} else {
+			*res_num = n;
+			*res_denom = d;
+			return;
+		}
+	}
+	if (bd > max_denom || fabs (val * ad - an) < fabs (val * bd - bn)) {
+		*res_num = an;
+		*res_denom = ad;
+	} else {
+		*res_num = bn;
+		*res_denom = bd;
+	}
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-math.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,94 @@
+#ifndef __GO_MATH_H
+#define __GO_MATH_H
+
+#include <math.h>
+#include <goffice/goffice-features.h>
+#include <glib/gmacros.h>
+
+G_BEGIN_DECLS
+
+/* ------------------------------------------------------------------------- */
+
+void go_math_init (void);
+void go_continued_fraction (double val, int max_denom, int *res_num, int *res_denom);
+void go_stern_brocot	   (double val, int max_denom, int *res_num, int *res_denom);
+
+/* ------------------------------------------------------------------------- */
+
+extern double go_nan;
+extern double go_pinf;
+extern double go_ninf;
+
+double go_add_epsilon (double x);
+double go_sub_epsilon (double x);
+double go_fake_floor (double x);
+double go_fake_ceil (double x);
+double go_fake_round (double x);
+double go_fake_trunc (double x);
+double go_rint (double x);
+
+int go_finite (double x);
+double go_pow2 (int n);
+double go_pow10 (int n);
+
+/*
+ * We provide working versions of these functions for doubles.
+ */ 
+#ifdef GOFFICE_SUPPLIED_ASINH
+double asinh (double x);
+#endif
+#ifdef GOFFICE_SUPPLIED_ACOSH
+double acosh (double x);
+#endif
+#ifdef GOFFICE_SUPPLIED_ATANH
+double atanh (double x);
+#endif
+#ifdef GOFFICE_SUPPLIED_LOG1P
+double log1p (double x);
+#endif
+#ifdef GOFFICE_SUPPLIED_EXPM1
+double expm1 (double x);
+#endif
+
+/* ------------------------------------------------------------------------- */
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+
+extern long double go_nanl;
+extern long double go_pinfl;
+extern long double go_ninfl;
+
+long double go_add_epsilonl (long double x);
+long double go_sub_epsilonl (long double x);
+long double go_fake_floorl (long double x);
+long double go_fake_ceill (long double x);
+long double go_fake_roundl (long double x);
+long double go_fake_truncl (long double x);
+
+#define go_finitel finitel
+long double go_pow2l (int n);
+long double go_pow10l (int n);
+
+/*
+ * We provide working versions of these functions for long doubles.
+ */ 
+#ifdef GOFFICE_SUPPLIED_LDEXPL
+long double ldexpl (long double x, int exp);
+#endif
+#ifdef GOFFICE_SUPPLIED_FREXPL
+long double frexpl (long double x, int *exp);
+#endif
+#ifdef GOFFICE_SUPPLIED_STRTOLD
+long double strtold (const char *, char **);
+#endif
+#ifdef GOFFICE_SUPPLIED_MODFL
+long double modfl (long double x, long double *iptr);
+#endif
+
+#endif
+
+/* ------------------------------------------------------------------------- */
+
+G_END_DECLS
+
+#endif	/* __GO_MATH_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,573 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-pattern.c :
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include <goffice/goffice-priv.h>
+#include <goffice/utils/go-libxml-extras.h>
+#include "go-pattern.h"
+#include "go-color.h"
+
+#ifdef WITH_GTK
+#include <goffice/gtk/go-combo-pixmaps.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+#endif
+
+#include <libart_lgpl/libart.h>
+#include <glib/gi18n.h>
+#include <string.h>
+
+#define CC2XML(s) ((const xmlChar *)(s))
+
+typedef struct {
+	char const *name;
+	char const *str;
+	guint8 pattern[8];
+} GOPatternSpec;
+
+static GOPatternSpec const go_patterns [] = {
+  { N_("Solid"),                     "solid",           { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } },
+  { N_("75% Grey"),                  "grey75",          { 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee } },
+  { N_("50% Grey"),                  "grey50",          { 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55 } },
+  { N_("25% Grey"),                  "grey25",          { 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88 } },
+  { N_("12.5% Grey"),                "grey12.5",        { 0x88, 0x00, 0x22, 0x00, 0x88, 0x00, 0x22, 0x00 } },
+  { N_("6.25% Grey"),                "grey6.25",        { 0x20, 0x00, 0x02, 0x00, 0x20, 0x00, 0x02, 0x00 } },
+  { N_("Horizontal Stripe"),         "horiz",           { 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff } },
+  { N_("Vertical Stripe"),           "vert",            { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33 } },
+  { N_("Reverse Diagonal Stripe"),   "rev-diag",        { 0x33, 0x66, 0xcc, 0x99, 0x33, 0x66, 0xcc, 0x99 } },
+  { N_("Diagonal Stripe"),           "diag",            { 0xcc, 0x66, 0x33, 0x99, 0xcc, 0x66, 0x33, 0x99 } },
+  { N_("Diagonal Crosshatch"),       "diag-cross",      { 0x99, 0x66, 0x66, 0x99, 0x99, 0x66, 0x66, 0x99 } },
+  { N_("Thick Diagonal Crosshatch"), "thick-diag-cross",{ 0xff, 0x66, 0xff, 0x99, 0xff, 0x66, 0xff, 0x99 } },
+  { N_("Thin Horizontal Stripe"),    "thin-horiz",      { 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00 } },
+  { N_("Thin Vertical Stripe"),      "thin-vert",       { 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22 } },
+  { N_("Thin Reverse Diagonal Stripe"),"thin-rev-diag", { 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88 } },
+  { N_("Thin Diagonal Stripe"),      "thin-diag",       { 0x88, 0x44, 0x22, 0x11, 0x88, 0x44, 0x22, 0x11 } },
+  { N_("Thin Horizontal Crosshatch"),"thin-horiz-cross",{ 0x22, 0x22, 0xff, 0x22, 0x22, 0x22, 0xff, 0x22 } },
+  { N_("Thin Diagonal Crosshatch"),  "thin-diag-cross", { 0x88, 0x55, 0x22, 0x55, 0x88, 0x55, 0x22, 0x55 } },
+  { N_("Foreground Solid"),          "foreground-solid",{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
+  { N_("Small Circles")/* Applix */, "small-circles",   { 0x99, 0x55, 0x33, 0xff, 0x99, 0x55, 0x33, 0xff } },
+  { N_("Semi Circles") /* Applix */, "semi-circles",    { 0x10, 0x10, 0x28, 0xc7, 0x01, 0x01, 0x82, 0x7c } },
+  { N_("Thatch") /* Applix small thatch */, "thatch",   { 0x22, 0x74, 0xf8, 0x71, 0x22, 0x17, 0x8f, 0x47 } },
+  { N_("Large Circles")/*Applix round thatch*/,
+				     "large-circles",   { 0xc1, 0x80, 0x1c, 0x3e, 0x3e, 0x3e, 0x1c, 0x80 } },
+  { N_("Bricks") /* Applix Brick */, "bricks",          { 0x20, 0x20, 0x20, 0xff, 0x02, 0x02, 0x02, 0xff } }
+};
+
+
+GOPatternType
+go_pattern_from_str (char const *str)
+{
+	unsigned i;
+
+	for (i = 0; i < GO_PATTERN_MAX; i++)
+		if (strcmp (go_patterns[i].str, str) == 0)
+			return i;
+
+	return GO_PATTERN_SOLID;
+}
+char const *
+go_pattern_as_str (GOPatternType pattern)
+{
+	return (pattern < 0 || pattern >= GO_PATTERN_MAX) ?  "none"
+		: go_patterns[pattern].str;
+}
+
+/**
+ * go_pattern_is_solid :
+ * @pat : #GOPattern
+ * @color : #GOColor
+ * 
+ * Returns if @pat is solid, and stores the color in @color.
+ * If @pat is not solid @color is not touched.
+ **/
+gboolean
+go_pattern_is_solid (GOPattern const *pat, GOColor *color)
+{
+	g_return_val_if_fail (pat != NULL, FALSE);
+
+	if (pat->pattern == GO_PATTERN_SOLID || pat->fore == pat->back) {
+		*color = pat->back;
+		return TRUE;
+	}
+	if (pat->pattern == GO_PATTERN_FOREGROUND_SOLID) {
+		*color = pat->fore;
+		return TRUE;
+	}
+	return FALSE;
+}
+
+/**
+ * go_pattern_set_solid :
+ * @pat  : #GOPattern
+ * @fore : #GOColor
+ *
+ * Makes @pat a solid pattern with colour @fore.
+ **/
+void
+go_pattern_set_solid (GOPattern *pat, GOColor fore)
+{
+	g_return_if_fail (pat != NULL);
+	pat->pattern = GO_PATTERN_SOLID;
+	pat->fore = RGBA_BLACK;
+	pat->back = fore;
+}
+
+guint8 const *
+go_pattern_get_pattern (GOPattern const *pat)
+{
+	return go_patterns [pat->pattern].pattern;
+}
+
+/**
+ * go_pattern_get_svg_path:
+ * @pattern: #GOPattern
+ * @double:  pattern width
+ * @height:  pattern height
+ *
+ * Returns an SVG path as string, which represents pattern shape.
+ * Caller is responsible for freeing the resulting string.
+ *
+ * If width != NULL, returns pattern width.
+ * If height != NULL, returns pattern height.
+ **/
+#warning This result is actually an xmlChar we could run into trouble with g_free vs xmlFree.  Can we change the interface ?
+char *
+go_pattern_get_svg_path (GOPattern const *pattern, double *width, double *height)
+{
+	char *path;
+	char *d = NULL;
+	xmlChar	  *name, *svg_path = NULL;
+	xmlDocPtr  doc;
+	xmlNodePtr ptr;
+
+	g_return_val_if_fail (pattern->pattern >= 0 || pattern->pattern < GO_PATTERN_MAX, NULL);
+
+	path = g_build_filename (go_sys_data_dir(), "patterns", "svg-patterns.xml", NULL);
+	doc = go_xml_parse_file (path);
+	g_free (path);
+
+	g_return_val_if_fail (doc != NULL, NULL);
+
+	for (ptr = doc->xmlRootNode->xmlChildrenNode; 
+	     ptr != NULL && d == NULL ; 
+	     ptr = ptr->next) 
+	{
+		if (!xmlIsBlankNode (ptr) && 
+		    ptr->name && 
+		    !strcmp ((char *)ptr->name, "pattern")) 
+		{
+			name = xmlGetProp (ptr, CC2XML ("name"));
+			if (name != NULL) {
+				if (strcmp ((char *)name, go_patterns [pattern->pattern].str) == 0) {
+					if (width != NULL)
+						xml_node_get_double (ptr, "width", width);
+					if (height != NULL)
+						xml_node_get_double (ptr, "height", height);
+					svg_path = xmlGetProp (ptr, CC2XML ("d"));
+					break;
+				}
+				xmlFree (name);
+			}
+		}
+	}
+	xmlFreeDoc (doc);
+
+	g_return_val_if_fail (svg_path != NULL, NULL);
+
+	return (char *)svg_path;
+}
+
+#ifdef WITH_GTK
+gpointer
+go_pattern_selector (GOColor fore, GOColor back,
+		     GOPatternType default_pat)
+{
+	static GOPatternType const elements[] = {
+		GO_PATTERN_SOLID,	GO_PATTERN_GREY75,	GO_PATTERN_GREY50,	GO_PATTERN_GREY25,
+		GO_PATTERN_GREY125,	GO_PATTERN_GREY625,	GO_PATTERN_HORIZ,	GO_PATTERN_VERT,
+		GO_PATTERN_REV_DIAG,	GO_PATTERN_DIAG,	GO_PATTERN_DIAG_CROSS,	GO_PATTERN_THICK_DIAG_CROSS,
+		GO_PATTERN_THIN_HORIZ,		GO_PATTERN_THIN_VERT,
+		GO_PATTERN_THIN_REV_DIAG,	GO_PATTERN_THIN_DIAG,
+		GO_PATTERN_THIN_HORIZ_CROSS,	GO_PATTERN_THIN_DIAG_CROSS,
+		GO_PATTERN_FOREGROUND_SOLID,	GO_PATTERN_SMALL_CIRCLES,
+		GO_PATTERN_SEMI_CIRCLES, GO_PATTERN_THATCH,	GO_PATTERN_LARGE_CIRCLES,   GO_PATTERN_BRICKS,
+		GO_PATTERN_MAX	/* fill with auto */
+	};
+	int const W = 20, H = 20;
+	unsigned	 i;
+	gboolean	 is_auto;
+	GOComboPixmaps	*w;
+	GdkPixbuf	*pixbuf;
+	GOPattern	 pat;
+	ArtVpath	 path[6];
+	ArtSVP		*svp;
+
+	pat.fore = fore;
+	pat.back = back;
+
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[2].code = ART_LINETO;
+	path[3].code = ART_LINETO;
+	path[4].code = ART_LINETO;
+	path[5].code = ART_END;
+	path[0].x = path[1].x = path[4].x = 0;
+	path[2].x = path[3].x = W;
+	path[0].y = path[3].y = path[4].y = 0;
+	path[1].y = path[2].y = H;
+	svp = art_svp_from_vpath (path);
+
+	w = go_combo_pixmaps_new (5);
+	for (i = 0; i < G_N_ELEMENTS (elements); i++) {
+		pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, W, H);
+		gdk_pixbuf_fill (pixbuf, 0); /* in case the fill colours have alpha = 0 */
+		is_auto = elements[i] == GO_PATTERN_MAX;
+		pat.pattern = is_auto ? default_pat : i;
+		go_pattern_render_svp (&pat, svp, 0, 0, W, H,
+			gdk_pixbuf_get_pixels (pixbuf),
+			gdk_pixbuf_get_rowstride (pixbuf));
+		if (is_auto) {
+			/* xgettext : this will appear as 'Automatic (patternname)' */
+			char *name = g_strdup_printf (_("Automatic (%s)"),
+				_(go_patterns [default_pat].name));
+			go_combo_pixmaps_add_element (w, pixbuf,
+				-default_pat, name);
+			g_free (name);
+		} else
+			go_combo_pixmaps_add_element (w, pixbuf, pat.pattern,
+				_(go_patterns[pat.pattern].name));
+	}
+	art_svp_free (svp);
+	return w;
+}
+#endif /* WITH_GTK */
+
+/*
+ *  A slightly modified version of art_rgb_svp to render into rgba buffer
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library 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 Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public
+ *  License along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *  Authors:
+ *    Raph Levien <raph at acm.org>
+ *    Lauris Kaplinski <lauris at ariman.ee>
+ *
+ *  Copyright (C) 1998 Raph Levien
+ *
+ */
+
+/* Render a sorted vector path into an RGBA buffer. */
+#include <libart_lgpl/art_misc.h>
+#include <libart_lgpl/art_svp.h>
+#include <libart_lgpl/art_svp_render_aa.h>
+#include <libart_lgpl/art_rgb.h>
+
+typedef struct {
+	struct {
+		art_u8 r, g, b;
+		int alphatab[256];
+	} fore, back;
+	art_u8 *buf;
+	int rowstride;
+	int x0, x1;
+	guint8 const *pattern;
+} pattern_data;
+
+static void
+pattern_solid (pattern_data const *state, guint8 pat, int offset, int n)
+{
+	art_u8 r1, g1, b1, r2, g2, b2;
+	art_u8 *buf = state->buf + 4*offset;
+	int mask = 1 << (offset % 8);
+
+	r1 = state->fore.r;
+	g1 = state->fore.g;
+	b1 = state->fore.b;
+	r2 = state->back.r;
+	g2 = state->back.g;
+	b2 = state->back.b;
+	while (n-- > 0) {
+		if (pat & mask) {
+			*buf++ = r1;
+			*buf++ = g1;
+			*buf++ = b1;
+		} else {
+			*buf++ = r2;
+			*buf++ = g2;
+			*buf++ = b2;
+		}
+		* buf++ = 255;
+
+		if (mask != 0x80)
+			mask <<= 1;
+		else
+			mask = 1;
+	}
+}
+
+static void
+pattern_blend (pattern_data const *state, guint8 pat, int offset, int alpha, int n)
+{
+	int br, bg, bb, ba;
+	int cr, cg, cb;
+	int r1, g1, b1, r2, g2, b2;
+	art_u8 *buf = state->buf + 4*offset;
+	int mask = 1 << (offset % 8);
+	int alpha1 = state->fore.alphatab[alpha];
+	int alpha2 = state->back.alphatab[alpha];
+
+	r1 = state->fore.r;
+	g1 = state->fore.g;
+	b1 = state->fore.b;
+	r2 = state->back.r;
+	g2 = state->back.g;
+	b2 = state->back.b;
+
+	while (n-- > 0) {
+		br = * (buf + 0);
+		bg = * (buf + 1);
+		bb = * (buf + 2);
+		ba = * (buf + 3);
+
+		cr = (br * ba + 0x80) >> 8;
+		cg = (bg * ba + 0x80) >> 8;
+		cb = (bb * ba + 0x80) >> 8;
+
+		if (pat & mask) {
+			*buf++ = cr + (((r1 - cr) * alpha1 + 0x80) >> 8);
+			*buf++ = cg + (((g1 - cg) * alpha1 + 0x80) >> 8);
+			*buf++ = cb + (((b1 - cb) * alpha1 + 0x80) >> 8);
+		} else {
+			*buf++ = cr + (((r2 - cr) * alpha2 + 0x80) >> 8);
+			*buf++ = cg + (((g2 - cg) * alpha2 + 0x80) >> 8);
+			*buf++ = cb + (((b2 - cb) * alpha2 + 0x80) >> 8);
+		}
+		*buf++ = ba + (((255 - ba) * alpha + 0x80) >> 8);
+
+		if (mask != 0x80)
+			mask <<= 1;
+		else
+			mask = 1;
+	}
+}
+
+static void
+cb_pattern_alpha (void *callback_data, int y, int start,
+		  ArtSVPRenderAAStep *steps, int n_steps)
+{
+	pattern_data *state = callback_data;
+	int run_x0, run_x1;
+	art_u32 running_sum = start;
+	int k;
+	int alpha;
+	int x0 = state->x0;
+	int x1 = state->x1;
+	int pat = state->pattern [y % 8];
+
+	if (n_steps > 0) {
+		run_x1 = steps[0].x;
+		if (run_x1 > x0) {
+			alpha = (running_sum >> 16) & 0xff;
+			if (alpha)
+				pattern_blend (state, pat, 0, alpha, run_x1 - x0);
+		}
+
+		/* render the steps into tmpbuf */
+		for (k = 0; k < n_steps - 1; k++) {
+			running_sum += steps[k].delta;
+			run_x0 = run_x1;
+			run_x1 = steps[k + 1].x;
+			if (run_x1 > run_x0) {
+				alpha = (running_sum >> 16) & 0xff;
+				if (alpha)
+					pattern_blend (state, pat, run_x0 - x0,
+						       alpha, run_x1 - run_x0);
+			}
+		}
+		running_sum += steps[k].delta;
+		if (x1 > run_x1) {
+			alpha = (running_sum >> 16) & 0xff;
+			if (alpha)
+				pattern_blend (state, pat, run_x1 - x0,
+					       alpha, x1 - run_x1);
+		}
+	} else {
+		alpha = (running_sum >> 16) & 0xff;
+		if (alpha)
+			pattern_blend (state, pat, 0, alpha, x1 - x0);
+	}
+
+	state->buf += state->rowstride;
+}
+
+static void
+cb_pattern_opaque (void *callback_data, int y, int start,
+		   ArtSVPRenderAAStep *steps, int n_steps)
+{
+	pattern_data *state = callback_data;
+	int run_x0, run_x1;
+	art_u32 running_sum = start;
+	int x0, x1;
+	int k;
+	int alpha;
+	int pat = state->pattern [y % 8];
+
+	x0 = state->x0;
+	x1 = state->x1;
+
+	if (n_steps > 0) {
+		run_x1 = steps[0].x;
+		if (run_x1 > x0) {
+			alpha = running_sum >> 16;
+			if (alpha) {
+				if (alpha >= 255)
+					pattern_solid (state, pat,  0, run_x1 - x0);
+				else
+					pattern_blend (state, pat, 0, alpha, run_x1 - x0);
+			}
+		}
+
+		/* render the steps into tmpbuf */
+		for (k = 0; k < n_steps - 1; k++) {
+			running_sum += steps[k].delta;
+			run_x0 = run_x1;
+			run_x1 = steps[k + 1].x;
+			if (run_x1 > run_x0) {
+				alpha = running_sum >> 16;
+				if (alpha) {
+					if (alpha >= 255)
+						pattern_solid (state, pat, run_x0 - x0,
+							       run_x1 - run_x0);
+					else
+						pattern_blend (state, pat, run_x0 - x0,
+							       alpha, run_x1 - run_x0);
+				}
+			}
+		}
+		running_sum += steps[k].delta;
+		if (x1 > run_x1) {
+			alpha = running_sum >> 16;
+			if (alpha) {
+				if (alpha >= 255)
+					pattern_solid (state, pat, run_x1 - x0,
+						       x1 - run_x1);
+				else
+					pattern_blend (state, pat, run_x1 - x0,
+						       alpha, x1 - run_x1);
+			}
+		}
+	} else {
+		alpha = running_sum >> 16;
+		if (alpha) {
+			if (alpha >= 255)
+				pattern_solid (state, pat, 0, x1 - x0);
+			else
+				pattern_blend (state, pat, 0, alpha, x1 - x0);
+		}
+	}
+
+	state->buf += state->rowstride;
+}
+
+/**
+ * go_pattern_render_svp: 
+ * @pat : #GOPattern
+ * @svp: The source sorted vector path.
+ * @x0: Left coordinate of destination rectangle.
+ * @y0: Top coordinate of destination rectangle.
+ * @x1: Right coordinate of destination rectangle.
+ * @y1: Bottom coordinate of destination rectangle.
+ * @buf: Destination RGBA buffer.
+ * @rowstride: Rowstride of @buf buffer.
+ *
+ * Renders the shape specified with @svp over the @buf RGB buffer.
+ * @x1 - @x0 specifies the width, and @y1 - @y0 specifies the height,
+ * of the rectangle rendered. The new pixels are stored starting at
+ * the first byte of @buf. Thus, the @x0 and @y0 parameters specify
+ * an offset within @svp, and may be tweaked as a way of doing
+ * integer-pixel translations without fiddling with @svp itself.
+ *
+ * The @pat argument specifies the pattern for the rendering. Pixels of
+ * entirely 0 winding number are left untouched. Pixels of entirely
+ * 1 winding number have the pattern @pat composited over them (ie,
+ * are replaced by the red, green, blue components of @pat->fore or @pat->back
+ * depending on the stipple associated with @pat->pattern. if the alpha
+ * component is 0xff). Pixels of intermediate coverage are linearly
+ * interpolated.
+ **/
+void
+go_pattern_render_svp (GOPattern const *pat, ArtSVP const *svp,
+		       int x0, int y0, int x1, int y1,
+		       art_u8 *buf, int rowstride)
+{
+	pattern_data state;
+	int i, a, da;
+	gboolean opaque = TRUE;
+	GOColor c;
+
+	g_return_if_fail (pat != NULL);
+
+	if (go_pattern_is_solid (pat, &c)) {
+		go_color_render_svp (c, svp,
+			  x0, y0, x1, y1, buf, rowstride);
+		return;
+	}
+
+	state.fore.r = UINT_RGBA_R (pat->fore);
+	state.fore.g = UINT_RGBA_G (pat->fore);
+	state.fore.b = UINT_RGBA_B (pat->fore);
+	state.back.r = UINT_RGBA_R (pat->back);
+	state.back.g = UINT_RGBA_G (pat->back);
+	state.back.b = UINT_RGBA_B (pat->back);
+	state.buf = buf;
+	state.rowstride = rowstride;
+	state.x0 = x0;
+	state.x1 = x1;
+	state.pattern = go_patterns [pat->pattern].pattern;
+
+	a = 0x8000;
+	da = (UINT_RGBA_A (pat->fore) * 66051 + 0x80) >> 8; /* 66051 equals 2 ^ 32 / (255 * 255) */
+	if (da != 65793) opaque = FALSE;
+	for (i = 0; i < 256; i++) {
+		state.fore.alphatab[i] = a >> 16;
+		a += da;
+	}
+	a = 0x8000;
+	da = (UINT_RGBA_A (pat->back) * 66051 + 0x80) >> 8; /* 66051 equals 2 ^ 32 / (255 * 255) */
+	if (da != 65793) opaque = FALSE;
+	for (i = 0; i < 256; i++) {
+		state.back.alphatab[i] = a >> 16;
+		a += da;
+	}
+
+	art_svp_render_aa (svp, x0, y0, x1, y1,
+		(opaque ? &cb_pattern_opaque : &cb_pattern_alpha), &state);
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-pattern.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,82 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-pattern.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_PATTERN_H
+#define GO_PATTERN_H
+
+#include <glib.h>
+#include <goffice/utils/goffice-utils.h>
+#include <libart_lgpl/art_render.h>
+#include <libart_lgpl/art_svp.h>
+
+G_BEGIN_DECLS
+
+struct _GOPattern {
+	GOColor	 fore, back;
+	unsigned pattern;
+};
+
+/* Useful for themes to explicitly name the pattern */
+typedef enum {
+	GO_PATTERN_SOLID,
+	GO_PATTERN_GREY75,
+	GO_PATTERN_GREY50,
+	GO_PATTERN_GREY25,
+	GO_PATTERN_GREY125,
+	GO_PATTERN_GREY625,
+	GO_PATTERN_HORIZ,
+	GO_PATTERN_VERT,
+	GO_PATTERN_REV_DIAG,
+	GO_PATTERN_DIAG,
+	GO_PATTERN_DIAG_CROSS,
+	GO_PATTERN_THICK_DIAG_CROSS,
+	GO_PATTERN_THIN_HORIZ,
+	GO_PATTERN_THIN_VERT,
+	GO_PATTERN_THIN_REV_DIAG,
+	GO_PATTERN_THIN_DIAG,
+	GO_PATTERN_THIN_HORIZ_CROSS,
+	GO_PATTERN_THIN_DIAG_CROSS,
+	GO_PATTERN_FOREGROUND_SOLID,
+	GO_PATTERN_SMALL_CIRCLES,
+	GO_PATTERN_SEMI_CIRCLES,
+	GO_PATTERN_THATCH,
+	GO_PATTERN_LARGE_CIRCLES,
+	GO_PATTERN_BRICKS,
+	GO_PATTERN_MAX
+} GOPatternType;
+
+GOPatternType	 go_pattern_from_str     (char const *name);
+char const	*go_pattern_as_str       (GOPatternType pattern);
+gboolean	 go_pattern_is_solid     (GOPattern const *pat, GOColor *color);
+void		 go_pattern_set_solid    (GOPattern *pat, GOColor fore);
+void		 go_pattern_render_svp 	 (GOPattern const *pat, ArtSVP const *svp,
+					  int x0, int y0, int x1, int y1,
+					  art_u8 *buf, int rowstride);
+guint8 const 	*go_pattern_get_pattern  (GOPattern const *pat);
+char 		*go_pattern_get_svg_path (GOPattern const *pattern, double *width, double *height);
+
+#ifdef WITH_GTK
+gpointer	 go_pattern_selector   (GOColor fore, GOColor back,
+					GOPatternType default_pat);
+#endif
+
+G_END_DECLS
+
+#endif /* GO_PATTERN_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,151 @@
+/*
+ * rangefunc.c: Functions on ranges (data sets).
+ *
+ * Authors:
+ *   Morten Welinder <terra at gnome.org>
+ *   Andreas J. Guelzow  <aguelzow at taliesin.ca>
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-rangefunc.h"
+
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef DOUBLE
+
+#define DOUBLE double
+#define SUFFIX(_n) _n
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+#include "go-rangefunc.c"
+#undef DOUBLE
+#undef SUFFIX
+
+#ifdef HAVE_SUNMATH_H
+#include <sunmath.h>
+#endif
+#define DOUBLE long double
+#define SUFFIX(_n) _n ## l
+#endif
+
+#endif
+
+/* Arithmetic sum.  */
+int
+SUFFIX(go_range_sum) (const DOUBLE *xs, int n, DOUBLE *res)
+{
+	/* http://bugzilla.gnome.org/show_bug.cgi?id=131588 */
+#ifdef HAVE_LONG_DOUBLE
+	long double sum = 0;
+#else
+	DOUBLE sum = 0;
+#endif
+	int i;
+
+	for (i = 0; i < n; i++)
+		sum += xs[i];
+
+	*res = sum;
+	return 0;
+}
+
+/* Arithmetic sum of squares.  */
+int
+SUFFIX(go_range_sumsq) (const DOUBLE *xs, int n, DOUBLE *res)
+{
+	/* http://bugzilla.gnome.org/show_bug.cgi?id=131588 */
+#ifdef HAVE_LONG_DOUBLE
+	long double sum = 0;
+#else
+	DOUBLE sum = 0;
+#endif
+	int i;
+
+	for (i = 0; i < n; i++)
+		sum += xs[i] * xs[i];
+
+	*res = sum;
+	return 0;
+}
+
+/* Arithmetic average.  */
+int
+SUFFIX(go_range_average) (const DOUBLE *xs, int n, DOUBLE *res)
+{
+	if (n <= 0 || SUFFIX(go_range_sum) (xs, n, res))
+		return 1;
+
+	*res /= n;
+	return 0;
+}
+
+/* Minimum element.  */
+int
+SUFFIX(go_range_min) (const DOUBLE *xs, int n, DOUBLE *res)
+{
+	if (n > 0) {
+		DOUBLE min = xs[0];
+		int i;
+
+		for (i = 1; i < n; i++)
+			if (xs[i] < min)
+				min = xs[i];
+		*res = min;
+		return 0;
+	} else
+		return 1;
+}
+
+/* Maximum element.  */
+int
+SUFFIX(go_range_max) (const DOUBLE *xs, int n, DOUBLE *res)
+{
+	if (n > 0) {
+		DOUBLE max = xs[0];
+		int i;
+
+		for (i = 1; i < n; i++)
+			if (xs[i] > max)
+				max = xs[i];
+		*res = max;
+		return 0;
+	} else
+		return 1;
+}
+
+/* Maximum absolute element.  */
+int
+SUFFIX(go_range_maxabs) (const DOUBLE *xs, int n, DOUBLE *res)
+{
+	if (n > 0) {
+		DOUBLE max = SUFFIX(fabs) (xs[0]);
+		int i;
+
+		for (i = 1; i < n; i++)
+			if (SUFFIX(fabs) (xs[i]) > max)
+				max = SUFFIX(fabs) (xs[i]);
+		*res = max;
+		return 0;
+	} else
+		return 1;
+}
+
+/* Sum of square deviations from mean.  */
+int
+SUFFIX(go_range_devsq) (const DOUBLE *xs, int n, DOUBLE *res)
+{
+	DOUBLE m, dx, q = 0;
+	if (n > 0) {
+		int i;
+
+		SUFFIX(go_range_average) (xs, n, &m);
+		for (i = 0; i < n; i++) {
+			dx = xs[i] - m;
+			q += dx * dx;
+		}
+	}
+	*res = q;
+	return 0;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-rangefunc.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,22 @@
+#ifndef GO_RANGEFUNC_H
+#define GO_RANGEFUNC_H
+
+int go_range_sum (const double *xs, int n, double *res);
+int go_range_sumsq (const double *xs, int n, double *res);
+int go_range_average (const double *xs, int n, double *res);
+int go_range_min (const double *xs, int n, double *res);
+int go_range_max (const double *xs, int n, double *res);
+int go_range_maxabs (const double *xs, int n, double *res);
+int go_range_devsq (const double *xs, int n, double *res);
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+int go_range_suml (const long double *xs, int n, long double *res);
+int go_range_sumsql (const long double *xs, int n, long double *res);
+int go_range_averagel (const long double *xs, int n, long double *res);
+int go_range_minl (const long double *xs, int n, long double *res);
+int go_range_maxl (const long double *xs, int n, long double *res);
+int go_range_maxabsl (const long double *xs, int n, long double *res);
+int go_range_devsql (const long double *xs, int n, long double *res);
+#endif
+
+#endif	/* GO_RANGEFUNC_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1404 @@
+/*
+ * regression.c:  Statistical regression functions.
+ *
+ * Authors:
+ *   Morten Welinder <terra at gnome.org>
+ *   Andrew Chatham <andrew.chatham at duke.edu>
+ *   Daniel Carrera <dcarrera at math.toronto.edu>
+ */
+
+#include <goffice/goffice-config.h>
+#include "go-regression.h"
+#include "go-rangefunc.h"
+#include "go-math.h"
+
+#include <glib/gmem.h>
+#include <glib/gmessages.h>
+
+#include <math.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#ifndef DOUBLE
+
+#define DEFINE_COMMON
+#define DOUBLE double
+#define DOUBLE_MAX DBL_MAX
+#define DOUBLE_MANT_DIG DBL_MANT_DIG
+#define SUFFIX(_n) _n
+#define FORMAT_g "g"
+
+#define ALLOC_MATRIX(var,dim1,dim2)			\
+  do { int _i, _d1, _d2;				\
+       _d1 = (dim1);					\
+       _d2 = (dim2);					\
+       (var) = g_new (double *, _d1);		\
+       for (_i = 0; _i < _d1; _i++)			\
+	       (var)[_i] = g_new (double, _d2);	\
+  } while (0)
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+#include "go-regression.c"
+#undef DEFINE_COMMON
+#undef DOUBLE
+#undef DOUBLE_MAX
+#undef DOUBLE_MANT_DIG
+#undef SUFFIX
+#undef FORMAT_g
+#undef ALLOC_MATRIX
+#ifdef HAVE_SUNMATH_H
+#include <sunmath.h>
+#endif
+#define DOUBLE long double
+#define DOUBLE_MAX LDBL_MAX
+#define DOUBLE_MANT_DIG LDBL_MANT_DIG
+#define SUFFIX(_n) _n ## l
+#define FORMAT_g "Lg"
+
+#define ALLOC_MATRIX(var,dim1,dim2)			\
+  do { int _i, _d1, _d2;				\
+       _d1 = (dim1);					\
+       _d2 = (dim2);					\
+       (var) = g_new (long double *, _d1);		\
+       for (_i = 0; _i < _d1; _i++)			\
+	       (var)[_i] = g_new (long double, _d2);	\
+  } while (0)
+#endif
+
+#endif
+
+#ifdef DEFINE_COMMON
+
+#undef DEBUG_NEAR_SINGULAR
+
+#define FREE_MATRIX(var,dim1,dim2)			\
+  do { int _i, _d1;					\
+       _d1 = (dim1);					\
+       for (_i = 0; _i < _d1; _i++)			\
+	       g_free ((var)[_i]);			\
+       g_free (var);					\
+  } while (0)
+
+#define COPY_MATRIX(dst,src,dim1,dim2)		\
+  do { int _i, _j, _d1, _d2;			\
+       _d1 = (dim1);				\
+       _d2 = (dim2);				\
+       for (_i = 0; _i < _d1; _i++)		\
+	 for (_j = 0; _j < _d2; _j++)		\
+	   (dst)[_i][_j] = (src)[_i][_j];	\
+  } while (0)
+
+#endif
+
+#undef PRINT_MATRIX
+#define PRINT_MATRIX(var,dim1,dim2)					\
+  do {									\
+	int _i, _j, _d1, _d2;						\
+	_d1 = (dim1);							\
+	_d2 = (dim2);							\
+	for (_i = 0; _i < _d1; _i++)					\
+	  {								\
+	    for (_j = 0; _j < _d2; _j++)				\
+	      fprintf (stderr, " %19.10" FORMAT_g, (var)[_i][_j]);	\
+	    fprintf (stderr, "\n");					\
+	  }								\
+  } while (0)
+
+/*
+ *       ---> j
+ *
+ *  |    ********
+ *  |    ********
+ *  |    ********        A[i][j]
+ *  v    ********
+ *       ********
+ *  i    ********
+ *       ********
+ *       ********
+ *
+ */
+
+/* ------------------------------------------------------------------------- */
+
+/* Returns in res the solution to the equation L * U * res = P * b.
+
+   This function is adapted from pseudocode in
+	Introduction to Algorithms_. Cormen, Leiserson, and Rivest.
+	p. 753. MIT Press, 1990.
+*/
+static void
+SUFFIX(backsolve) (DOUBLE **LU, int *P, DOUBLE *b, int n, DOUBLE *res)
+{
+	int i, j;
+
+	for (i = 0; i < n; i++) {
+		res[i] = b[P[i]];
+		for (j = 0; j < i; j++)
+			res[i] -= LU[i][j] * res[j];
+	}
+
+	for (i = n - 1; i >= 0; i--) {
+		for (j = i + 1; j < n; j++)
+			res[i] -= LU[i][j] * res[j];
+		res[i] /= LU[i][i];
+	}
+}
+
+static RegressionResult
+SUFFIX(rescale) (DOUBLE **A, DOUBLE *b, int n, DOUBLE *pdet)
+{
+	int i;
+
+	*pdet = 1;
+	for (i = 0; i < n; i++) {
+		int j, expn;
+		DOUBLE scale, max;
+
+		(void)SUFFIX(go_range_maxabs) (A[i], n, &max);
+
+		if (max == 0)
+			return REG_singular;
+
+		/* Use a power of 2 near sqrt (max) as scale.  */
+		(void)SUFFIX(frexp) (SUFFIX(sqrt) (max), &expn);
+		scale = SUFFIX(ldexp) (1, expn);
+#ifdef DEBUG_NEAR_SINGULAR
+		printf ("scale[%d]=%" FORMAT_g "\n",
+			i, scale);
+#endif
+
+		*pdet *= scale;
+		b[i] /= scale;
+		for (j = 0; j < n; j++)
+			A[i][j] /= scale;
+	}
+	return REG_ok;
+}
+
+
+/*
+ * Performs an LUP Decomposition; LU and P must already be allocated.
+ * A is not destroyed.
+ *
+ * This function is adapted from pseudocode in
+ *   _Introduction to Algorithms_. Cormen, Leiserson, and Rivest.
+ *   p 759. MIT Press, 1990.
+ *
+ * A rescaling of rows is done and the b_scaled vector is scaled
+ * accordingly.
+ */
+static RegressionResult
+SUFFIX(LUPDecomp) (DOUBLE **A, DOUBLE **LU, int *P, int n, DOUBLE *b_scaled,
+	   DOUBLE *pdet)
+{
+	int i, j, k, tempint;
+	DOUBLE highest = 0;
+	DOUBLE lowest = DOUBLE_MAX;
+	DOUBLE cond;
+	gboolean odd_parity = FALSE;
+	DOUBLE det = 1;
+
+	COPY_MATRIX (LU, A, n, n);
+	for (j = 0; j < n; j++)
+		P[j] = j;
+
+
+	*pdet = 0;
+
+#ifdef DEBUG_NEAR_SINGULAR
+	PRINT_MATRIX (LU, n, n);
+#endif
+	{
+		RegressionResult err = SUFFIX(rescale) (LU, b_scaled, n, &det);
+		if (err != REG_ok)
+			return err;
+	}
+
+	for (i = 0; i < n; i++) {
+		DOUBLE max = 0;
+		int mov = -1;
+
+		for (j = i; j < n; j++)
+			if (SUFFIX(fabs) (LU[j][i]) > max) {
+				max = SUFFIX(fabs) (LU[j][i]);
+				mov = j;
+			}
+#ifdef DEBUG_NEAR_SINGULAR
+		PRINT_MATRIX (LU, n, n);
+		printf ("max[%d]=%" FORMAT_g " at %d\n",
+			i, max, mov);
+#endif
+		if (max == 0)
+			return REG_singular;
+		if (max > highest)
+			highest = max;
+		if (max < lowest)
+			lowest = max;
+		if (i != mov) {
+			/*swap the two rows */
+
+			odd_parity = !odd_parity;
+			tempint = P[i];
+			P[i] = P[mov];
+			P[mov] = tempint;
+			for (j = 0; j < n; j++) {
+				DOUBLE temp = LU[i][j];
+				LU[i][j] = LU[mov][j];
+				LU[mov][j] = temp;
+			}
+		}
+
+		for (j = i + 1; j < n; j++) {
+			LU[j][i] /= LU[i][i];
+			for (k = i + 1; k < n; k++)
+				LU[j][k] -= LU[j][i] * LU[i][k];
+		}
+	}
+
+	/* Calculate the determinant.  */
+	if (odd_parity) det = -det;
+	for (i = 0; i < n; i++)
+		det *= LU[i][i];
+	*pdet = det;
+
+	cond = (SUFFIX(log) (highest) - SUFFIX(log) (lowest)) / SUFFIX(log) (2);
+#ifdef DEBUG_NEAR_SINGULAR
+	printf ("cond=%.20" FORMAT_g "\n", cond);
+#endif
+
+	/* FIXME: make some science out of this.  */
+	if (cond > DOUBLE_MANT_DIG * 0.75)
+		return REG_near_singular_bad;
+	else if (cond > DOUBLE_MANT_DIG * 0.50)
+		return REG_near_singular_good;
+	else
+		return REG_ok;
+}
+
+
+static RegressionResult
+SUFFIX(linear_solve) (DOUBLE **A, DOUBLE *b, int n, DOUBLE *res)
+{
+	RegressionResult err;
+	DOUBLE **LU, *b_scaled;
+	int *P;
+	DOUBLE det;
+
+	if (n < 1)
+		return REG_not_enough_data;
+
+	/* Special case.  */
+	if (n == 1) {
+		DOUBLE d = A[0][0];
+		if (d == 0)
+			return REG_singular;
+
+		res[0] = b[0] / d;
+		return REG_ok;
+	}
+
+	/* Special case.  */
+	if (n == 2) {
+		DOUBLE d = SUFFIX(go_matrix_determinant) (A, n);
+		if (d == 0)
+			return REG_singular;
+
+		res[0] = (A[1][1] * b[0] - A[1][0] * b[1]) / d;
+		res[1] = (A[0][0] * b[1] - A[0][1] * b[0]) / d;
+		return REG_ok;
+	}
+
+	/*
+	 * Otherwise, use LUP-decomposition to find res such that
+	 * A res = b
+	 */
+	ALLOC_MATRIX (LU, n, n);
+	P = g_new (int, n);
+
+	b_scaled = g_new (DOUBLE, n);
+	memcpy (b_scaled, b, n * sizeof (DOUBLE));
+
+	err = SUFFIX(LUPDecomp) (A, LU, P, n, b_scaled, &det);
+
+	if (err == REG_ok || err == REG_near_singular_good)
+		SUFFIX(backsolve) (LU, P, b_scaled, n, res);
+
+	FREE_MATRIX (LU, n, n);
+	g_free (P);
+	g_free (b_scaled);
+	return err;
+}
+
+
+gboolean
+SUFFIX(go_matrix_invert) (DOUBLE **A, int n)
+{
+	RegressionResult err;
+	DOUBLE **LU, *b_scaled, det;
+	int *P;
+	int i;
+	gboolean res;
+
+	if (n < 1)
+		return FALSE;
+
+	/*
+	 * Otherwise, use LUP-decomposition to find res such that
+	 * A res = b
+	 */
+	ALLOC_MATRIX (LU, n, n);
+	P = g_new (int, n);
+
+	b_scaled = g_new (DOUBLE, n);
+	for (i = 0; i < n; i++)
+		b_scaled[i] = 1;
+
+	err = SUFFIX(LUPDecomp) (A, LU, P, n, b_scaled, &det);
+
+	if (err == REG_ok || err == REG_near_singular_good) {
+		int i, j;
+		DOUBLE *b = g_new (DOUBLE, n);
+		DOUBLE *w = g_new (DOUBLE, n);
+
+		for (i = 0; i < n; i++) {
+			memset (b, 0, sizeof (DOUBLE) * n);
+			b[i] = b_scaled[i];
+			SUFFIX(backsolve) (LU, P, b, n, w);
+			for (j = 0; j < n; j++)
+				A[j][i] = w[j];
+		}
+		g_free (w);
+		g_free (b);
+		res = TRUE;
+	} else
+		res = FALSE;
+
+	FREE_MATRIX (LU, n, n);
+	g_free (P);
+	g_free (b_scaled);
+
+	return res;
+}
+
+DOUBLE
+SUFFIX(go_matrix_determinant) (DOUBLE **A, int n)
+{
+	RegressionResult err;
+	DOUBLE **LU, *b_scaled, det;
+	int *P;
+
+	if (n < 1)
+		return 0;
+
+	/* Special case.  */
+	if (n == 1)
+		return A[0][0];
+
+	/* Special case.  */
+	if (n == 2)
+		return A[0][0] * A[1][1] - A[1][0] * A[0][1];
+
+	/*
+	 * Otherwise, use LUP-decomposition to find res such that
+	 * A res = b
+	 */
+	ALLOC_MATRIX (LU, n, n);
+	P = g_new (int, n);
+	b_scaled = g_new0 (DOUBLE, n);
+
+	err = SUFFIX(LUPDecomp) (A, LU, P, n, b_scaled, &det);
+
+	FREE_MATRIX (LU, n, n);
+	g_free (P);
+	g_free (b_scaled);
+
+	return det;
+}
+
+/* ------------------------------------------------------------------------- */
+
+static RegressionResult
+SUFFIX(general_linear_regression) (DOUBLE **xss, int xdim,
+			   const DOUBLE *ys, int n,
+			   DOUBLE *result,
+			   SUFFIX(regression_stat_t) *regression_stat, gboolean affine)
+{
+	DOUBLE *xTy, **xTx;
+	int i,j;
+	RegressionResult regerr;
+
+	if (regression_stat)
+		memset (regression_stat, 0, sizeof (SUFFIX(regression_stat_t)));
+
+	if (xdim > n)
+		return REG_not_enough_data;
+
+	xTy = g_new (DOUBLE, xdim);
+	for (i = 0; i < xdim; i++) {
+		const DOUBLE *xs = xss[i];
+		register DOUBLE res = 0;
+		int j;
+		if (xs == NULL)
+			/* NULL represents a 1-vector.  */
+			for (j = 0; j < n; j++)
+				res += ys[j];
+		else
+			for (j = 0; j < n; j++)
+				res += xs[j] * ys[j];
+		xTy[i] = res;
+	}
+
+	ALLOC_MATRIX (xTx, xdim, xdim);
+
+	for (i = 0; i < xdim; i++) {
+		const DOUBLE *xs1 = xss[i];
+		int j;
+		for (j = 0; j <= i; j++) {
+			const DOUBLE *xs2 = xss[j];
+			DOUBLE res = 0;
+			int k;
+
+			if (xs1 == NULL && xs2 == NULL)
+				res = n;
+			else if (xs1 == NULL)
+				for (k = 0; k < n; k++)
+					res += xs2[k];
+			else if (xs2 == NULL)
+				for (k = 0; k < n; k++)
+					res += xs1[k];
+			else
+				for (k = 0; k < n; k++)
+					res += xs1[k] * xs2[k];
+
+			xTx[i][j] = xTx[j][i] = res;
+		}
+	}
+
+	regerr = SUFFIX(linear_solve) (xTx, xTy, xdim, result);
+
+	if (regression_stat &&
+	    (regerr == REG_ok || regerr == REG_near_singular_good)) {
+		RegressionResult err2;
+		DOUBLE *residuals = g_new (DOUBLE, n);
+		DOUBLE **LU, *one_scaled, det;
+		int *P;
+		int err;
+
+		/* This should not fail since n >= 1.  */
+		err = SUFFIX(go_range_average) (ys, n, &regression_stat->ybar);
+		g_assert (err == 0);
+
+		/* FIXME: we ought to have a devsq variant that does not
+		   recompute the mean.  */
+		if (affine)
+			err = SUFFIX(go_range_devsq) (ys, n, &regression_stat->ss_total);
+		else
+			err = SUFFIX(go_range_sumsq) (ys, n, &regression_stat->ss_total);
+		g_assert (err == 0);
+
+		regression_stat->xbar = g_new (DOUBLE, n);
+		for (i = 0; i < xdim; i++) {
+			if (xss[i]) {
+				int err = SUFFIX(go_range_average) (xss[i], n, &regression_stat->xbar[i]);
+				g_assert (err == 0);
+			} else {
+				regression_stat->xbar[i] = 1;
+			}
+		}
+
+		for (i = 0; i < n; i++) {
+			residuals[i] = 0;
+			for (j = 0; j < xdim; j++) {
+				if (xss[j])
+					residuals[i] += xss[j][i] * result[j];
+				else
+					residuals[i] += result[j]; /* If NULL, constant factor */
+			}
+			residuals[i] = ys[i] - residuals[i];
+		}
+
+		err = SUFFIX(go_range_sumsq) (residuals, n, &regression_stat->ss_resid);
+		g_assert (err == 0);
+
+		regression_stat->sqr_r = (regression_stat->ss_total == 0)
+			? 1
+			: 1 - regression_stat->ss_resid / regression_stat->ss_total;
+		/* FIXME: we want to guard against division by zero.  */
+		regression_stat->adj_sqr_r = 1 - regression_stat->ss_resid * (n - 1) /
+			((n - xdim) * regression_stat->ss_total);
+		regression_stat->var = (n == xdim)
+			? 0
+			: regression_stat->ss_resid / (n - xdim);
+
+		ALLOC_MATRIX (LU, xdim, xdim);
+		one_scaled = g_new (DOUBLE, xdim);
+		for (i = 0; i < xdim; i++) one_scaled[i] = 1;
+		P = g_new (int, xdim);
+
+		err2 = SUFFIX(LUPDecomp) (xTx, LU, P, xdim, one_scaled, &det);
+		regression_stat->se = g_new (DOUBLE, xdim);
+		if (err2 == REG_ok || err2 == REG_near_singular_good) {
+			DOUBLE *e = g_new (DOUBLE, xdim); /* Elementary vector */
+			DOUBLE *inv = g_new (DOUBLE, xdim);
+			for (i = 0; i < xdim; i++)
+				e[i] = 0;
+			for (i = 0; i < xdim; i++) {
+				e[i] = one_scaled[i];
+				SUFFIX(backsolve) (LU, P, e, xdim, inv);
+
+				if (inv[i] < 0) {
+					/*
+					 * If this happens, something is really
+					 * wrong, numerically.
+					 */
+					regerr = REG_near_singular_bad;
+				}
+				regression_stat->se[i] =
+					SUFFIX(sqrt) (regression_stat->var * inv[i]);
+				e[i] = 0;
+			}
+			g_free (e);
+			g_free (inv);
+		} else {
+			/*
+			 * This can happen for xdim == 2 as linear_solve does
+			 * not use LUPDecomp in that case.
+			 */
+			regerr = err2;
+			for (i = 0; i < xdim; i++)
+				regression_stat->se[i] = 0;
+		}
+		FREE_MATRIX (LU, xdim, xdim);
+		g_free (P);
+		g_free (one_scaled);
+
+		regression_stat->t = g_new (DOUBLE, xdim);
+
+		for (i = 0; i < xdim; i++)
+			regression_stat->t[i] = (regression_stat->se[i] == 0)
+				? SUFFIX(go_pinf)
+				: result[i] / regression_stat->se[i];
+
+		regression_stat->df_resid = n - xdim;
+		regression_stat->df_reg = xdim - (affine ? 1 : 0);
+		regression_stat->df_total = regression_stat->df_resid + regression_stat->df_reg;
+
+		regression_stat->F = (regression_stat->sqr_r == 1)
+			? SUFFIX(go_pinf)
+			: ((regression_stat->sqr_r / regression_stat->df_reg) /
+			   (1 - regression_stat->sqr_r) * regression_stat->df_resid);
+
+		regression_stat->ss_reg =  regression_stat->ss_total - regression_stat->ss_resid;
+		regression_stat->se_y = SUFFIX(sqrt) (regression_stat->ss_total / n);
+		regression_stat->ms_reg = (regression_stat->df_reg == 0)
+			? 0
+			: regression_stat->ss_reg / regression_stat->df_reg;
+		regression_stat->ms_resid = (regression_stat->df_resid == 0)
+			? 0
+			: regression_stat->ss_resid / regression_stat->df_resid;
+
+		g_free (residuals);
+	}
+
+	FREE_MATRIX (xTx, xdim, xdim);
+	g_free (xTy);
+
+	return regerr;
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef struct {
+  DOUBLE min_x;
+  DOUBLE max_x;
+  DOUBLE min_y;
+  DOUBLE max_y;
+  DOUBLE mean_y;
+} SUFFIX(point_cloud_measure_type);
+
+/* Takes the current 'sign' (res[0]) and 'c' (res[3]) from the calling
+ * function, transforms xs to ln(sign*(x-c)), performs a simple
+ * linear regression to find the best fitting 'a' (res[1]) and 'b'
+ * (res[2]) for ys and transformed xs, and computes the sum of squared
+ * residuals.
+ * Needs 'sign' (i.e. +1 or -1) and 'c' so adjusted that (sign*(x-c)) is
+ * positive for all xs. n must be > 0. These conditions are trusted to be
+ * checked by the calling functions.
+ * Is called often, so do not make it too slow.
+ */
+
+static int
+SUFFIX(transform_x_and_linear_regression_log_fitting) (DOUBLE *xs,
+					       DOUBLE *transf_xs,
+					       const DOUBLE *ys, int n,
+					       DOUBLE *res,
+					       SUFFIX(point_cloud_measure_type)
+					       *point_cloud)
+{
+        int i;
+	int result = REG_ok;
+	DOUBLE mean_transf_x, diff_x, resid_y;
+	DOUBLE sum1 = 0;
+	DOUBLE sum2 = 0;
+
+	/* log (always > 0) */
+	for (i=0; i<n; i++)
+	        transf_xs[i] = SUFFIX(log) (res[0] * (xs[i] - res[3]));
+	SUFFIX(go_range_average) (transf_xs, n, &mean_transf_x);
+	for (i=0; i<n; i++) {
+	        diff_x = transf_xs[i] - mean_transf_x;
+		sum1 += diff_x * (ys[i] - point_cloud->mean_y);
+		sum2 += diff_x * diff_x;
+	}
+	res[2] = sum1 / sum2;
+	res[1] = point_cloud->mean_y - (res[2] * mean_transf_x);
+	res[4] = 0;
+	for (i=0; i<n; i++) {
+	        resid_y = res[1] + (res[2] * transf_xs[i]) - ys[i];
+		res[4] += resid_y * resid_y;
+	}
+	return result; /* not used for error checking for the sake of speed */
+}
+
+static int
+SUFFIX(log_fitting) (DOUBLE *xs, const DOUBLE *ys, int n,
+	     DOUBLE *res, SUFFIX(point_cloud_measure_type) *point_cloud)
+{
+        int result = REG_ok;
+	gboolean sign_plus_ok = 1, sign_minus_ok = 1;
+	DOUBLE x_range, c_step, c_accuracy_int, c_offset, c_accuracy;
+	DOUBLE c_range, c_start, c_end, c_dist;
+	DOUBLE *temp_res;
+        DOUBLE *transf_xs;
+
+	temp_res = g_new (DOUBLE, 5);
+	x_range = (point_cloud->max_x) - (point_cloud->min_x);
+	/* Not needed here, but allocate it once for all subfunction calls */
+	transf_xs = g_new (DOUBLE, n);
+	/* Choose final accuracy of c with respect to range of xs.
+	 * Make accuracy be a whole power of 10. */
+	c_accuracy = SUFFIX(log10) (x_range);
+	if (c_accuracy < 0)
+	        if (SUFFIX(modf) (c_accuracy, &c_accuracy_int) != 0)
+		        c_accuracy--;
+	SUFFIX(modf) (c_accuracy, &c_accuracy_int);
+	c_accuracy = c_accuracy_int;
+	c_accuracy = SUFFIX(pow) (10, c_accuracy);
+	c_accuracy *= LOGFIT_C_ACCURACY;
+
+	/* Determine sign. Take a c which is ``much to small'' since the part
+	 * of the curve cutting the point cloud is almost not bent.
+	 * If making c still smaller does not make things still worse,
+	 * assume that we have to change the direction of curve bending
+	 * by changing sign.
+	 */
+	c_step = x_range * LOGFIT_C_STEP_FACTOR;
+	c_range = x_range * LOGFIT_C_RANGE_FACTOR;
+	res[0] = 1; /* sign */
+	res[3] = point_cloud->min_x - c_range;
+	temp_res[0] = 1;
+	temp_res[3] = res[3] - c_step;
+	SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n,
+						       res, point_cloud);
+	SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n,
+						       temp_res, point_cloud);
+	if (temp_res[4] <= res[4])
+	        sign_plus_ok = 0;
+        /* check again with new sign */
+	res[0] = -1; /* sign */
+	res[3] = point_cloud->max_x + c_range;
+	temp_res[0] = -1;
+	temp_res[3] = res[3] + c_step;
+	SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n,
+						       res, point_cloud);
+	SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n,
+						       temp_res, point_cloud);
+	if (temp_res[4] <= res[4])
+	        sign_minus_ok = 0;
+	/* If not exactly one of plus or minus works, give up.
+	 * This happens in point clouds which are very weakly bent.
+	 */
+	if (sign_plus_ok && !sign_minus_ok)
+	        res[0] = 1;
+	else if (sign_minus_ok && !sign_plus_ok)
+	        res[0] = -1;
+	else {
+	        result = REG_invalid_data;
+		goto out;
+	}
+
+	/* Start of fitted c-range. Rounded to final accuracy of c. */
+	c_offset = (res[0] == 1) ? point_cloud->min_x : point_cloud->max_x;
+	c_offset = c_accuracy * ((res[0] == 1) ?
+				 SUFFIX(floor) (c_offset / c_accuracy)
+				 : SUFFIX(ceil) (c_offset /c_accuracy));
+
+	/* Now the adapting of c starts. Find a local minimum of sum
+	 * of squared residuals. */
+
+	/* First, catch some unsuitably shaped point clouds. */
+	res[3] = c_offset - res[0] * c_accuracy;
+	temp_res[3] = c_offset - res[0] * 2 * c_accuracy;
+	temp_res[0] = res[0];
+	SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n,
+						       res, point_cloud);
+	SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n,
+						       temp_res, point_cloud);
+	if (temp_res[4] >= res[4]) {
+	        result = REG_invalid_data;
+		goto out;
+	}
+	/* After the above check, any minimum reached will be NOT  at
+	 * the start of c-range (c_offset - sign * c_accuracy) */
+	c_start = c_offset;
+	c_end = c_start - res[0] * c_range;
+	c_dist = res[0] * (c_start - c_end) / 2;
+	res[3] = c_end + res[0] * c_dist;
+	do {
+	    c_dist /= 2;
+		SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs,
+							       ys, n, res,
+							       point_cloud);
+		temp_res[3] = res[3] + res[0] * c_dist;
+		SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs,
+							       ys, n, temp_res,
+							       point_cloud);
+		if (temp_res[4] <= res[4])
+		        memcpy (res, temp_res, 5 * sizeof (DOUBLE));
+		else {
+		        temp_res[3] = res[3] - res[0] * c_dist;
+			SUFFIX(transform_x_and_linear_regression_log_fitting) (xs,
+							          transf_xs,
+								  ys, n,
+								  temp_res,
+							          point_cloud);
+			if (temp_res[4] <= res[4])
+			        memcpy (res, temp_res, 5*sizeof (DOUBLE));
+		}
+	} while (c_dist > c_accuracy);
+
+	res[3] = c_accuracy * SUFFIX(go_fake_round) (res[3] / c_accuracy);
+	SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n,
+						       res, point_cloud);
+
+	if ((res[0] * (res[3] - c_end)) < (1.1 * c_accuracy)) {
+	        /* Allowing for some inaccuracy, we are at the end of the
+		 * range, so this is probably no local minimum.
+		 * The start of the range has been checked above. */
+	        result = REG_invalid_data;
+		goto out;
+	}
+
+ out:
+	g_free (transf_xs);
+	g_free (temp_res);
+	return result;
+}
+
+/* ------------------------------------------------------------------------- */
+/* Please refer to description in regression.h.  */
+
+RegressionResult
+SUFFIX(go_linear_regression) (DOUBLE **xss, int dim,
+		   const DOUBLE *ys, int n,
+		   gboolean affine,
+		   DOUBLE *res,
+		   SUFFIX(regression_stat_t) *regression_stat)
+{
+	RegressionResult result;
+
+	g_return_val_if_fail (dim >= 1, REG_invalid_dimensions);
+	g_return_val_if_fail (n >= 1, REG_invalid_dimensions);
+
+	if (affine) {
+		DOUBLE **xss2;
+		xss2 = g_new (DOUBLE *, dim + 1);
+		xss2[0] = NULL;  /* Substitute for 1-vector.  */
+		memcpy (xss2 + 1, xss, dim * sizeof (DOUBLE *));
+
+		result = SUFFIX(general_linear_regression) (xss2, dim + 1, ys, n,
+						    res, regression_stat, affine);
+		g_free (xss2);
+	} else {
+		res[0] = 0;
+		result = SUFFIX(general_linear_regression) (xss, dim, ys, n,
+						    res + 1, regression_stat, affine);
+	}
+	return result;
+}
+
+/* ------------------------------------------------------------------------- */
+/* Please refer to description in regression.h.  */
+
+RegressionResult
+SUFFIX(go_exponential_regression) (DOUBLE **xss, int dim,
+			const DOUBLE *ys, int n,
+			gboolean affine,
+			DOUBLE *res,
+			SUFFIX(regression_stat_t) *regression_stat)
+{
+	DOUBLE *log_ys;
+	RegressionResult result;
+	int i;
+
+	g_return_val_if_fail (dim >= 1, REG_invalid_dimensions);
+	g_return_val_if_fail (n >= 1, REG_invalid_dimensions);
+
+	log_ys = g_new (DOUBLE, n);
+	for (i = 0; i < n; i++)
+		if (ys[i] > 0)
+			log_ys[i] = SUFFIX(log) (ys[i]);
+		else {
+			result = REG_invalid_data;
+			goto out;
+		}
+
+	if (affine) {
+		DOUBLE **xss2;
+		xss2 = g_new (DOUBLE *, dim + 1);
+		xss2[0] = NULL;  /* Substitute for 1-vector.  */
+		memcpy (xss2 + 1, xss, dim * sizeof (DOUBLE *));
+
+		result = SUFFIX(general_linear_regression) (xss2, dim + 1, log_ys,
+						    n, res, regression_stat, affine);
+		g_free (xss2);
+	} else {
+		res[0] = 0;
+		result = SUFFIX(general_linear_regression) (xss, dim, log_ys, n,
+						    res + 1, regression_stat, affine);
+	}
+
+	if (result == 0)
+		for (i = 0; i < dim + 1; i++)
+			res[i] = SUFFIX(exp) (res[i]);
+
+ out:
+	g_free (log_ys);
+	return result;
+}
+
+/* ------------------------------------------------------------------------- */
+/* Please refer to description in regression.h.  */
+
+RegressionResult
+SUFFIX(go_logarithmic_regression) (DOUBLE **xss, int dim,
+			const DOUBLE *ys, int n,
+			gboolean affine,
+			DOUBLE *res,
+			SUFFIX(regression_stat_t) *regression_stat)
+{
+        DOUBLE **log_xss;
+	RegressionResult result;
+	int i, j;
+
+	g_return_val_if_fail (dim >= 1, REG_invalid_dimensions);
+	g_return_val_if_fail (n >= 1, REG_invalid_dimensions);
+
+	ALLOC_MATRIX (log_xss, dim, n);
+	for (i = 0; i < dim; i++)
+	        for (j = 0; j < n; j++)
+		        if (xss[i][j] > 0)
+		                log_xss[i][j] = SUFFIX(log) (xss[i][j]);
+			else {
+			        result = REG_invalid_data;
+				goto out;
+			}
+
+
+	if (affine) {
+		DOUBLE **log_xss2;
+		log_xss2 = g_new (DOUBLE *, dim + 1);
+		log_xss2[0] = NULL;  /* Substitute for 1-vector.  */
+		memcpy (log_xss2 + 1, log_xss, dim * sizeof (DOUBLE *));
+
+		result = SUFFIX(general_linear_regression) (log_xss2, dim + 1, ys, n,
+						    res, regression_stat,
+						    affine);
+		g_free (log_xss2);
+	} else {
+		res[0] = 0;
+		result = SUFFIX(general_linear_regression) (log_xss, dim, ys, n,
+						    res + 1, regression_stat,
+						    affine);
+	}
+
+ out:
+	FREE_MATRIX (log_xss, dim, n);
+	return result;
+}
+
+/* ------------------------------------------------------------------------- */
+/* Please refer to description in regression.h.  */
+
+RegressionResult
+SUFFIX(go_logarithmic_fit) (DOUBLE *xs, const DOUBLE *ys, int n, DOUBLE *res)
+{
+    SUFFIX(point_cloud_measure_type) point_cloud_measures;
+	int i, result;
+	gboolean more_2_y = 0, more_2_x = 0;
+
+	/* Store useful measures for using them here and in subfunctions.
+	 * The checking of n is paranoid -- the calling function should
+	 * have cared for that. */
+	g_return_val_if_fail (n > 2, REG_invalid_dimensions);
+	result = SUFFIX(go_range_min) (xs, n, &(point_cloud_measures.min_x));
+	result = SUFFIX(go_range_max) (xs, n, &(point_cloud_measures.max_x));
+	result = SUFFIX(go_range_min) (ys, n, &(point_cloud_measures.min_y));
+	result = SUFFIX(go_range_max) (ys, n, &(point_cloud_measures.max_y));
+	result = SUFFIX(go_range_average) (ys, n, &(point_cloud_measures.mean_y));
+	/* Checking of error conditions. */
+	/* less than 2 different ys or less than 2 different xs */
+	g_return_val_if_fail (((point_cloud_measures.min_y !=
+				point_cloud_measures.max_y) &&
+			       (point_cloud_measures.min_x !=
+				point_cloud_measures.max_x)),
+			      REG_invalid_data);
+	/* less than 3 different ys */
+	for (i=0; i<n; i++) {
+	        if ((ys[i] != point_cloud_measures.min_y) &&
+		    (ys[i] != point_cloud_measures.max_y)) {
+		        more_2_y = 1;
+			break;
+		}
+	}
+	g_return_val_if_fail (more_2_y, REG_invalid_data);
+	/* less than 3 different xs */
+	for (i=0; i<n; i++) {
+	        if ((xs[i] != point_cloud_measures.min_x) &&
+		    (xs[i] != point_cloud_measures.max_x)) {
+		        more_2_x = 1;
+			break;
+		}
+	}
+	g_return_val_if_fail (more_2_x, REG_invalid_data);
+
+	/* no errors */
+	result = SUFFIX(log_fitting) (xs, ys, n, res, &point_cloud_measures);
+	return result;
+}
+
+/* ------------------------------------------------------------------------- */
+
+SUFFIX(regression_stat_t) *
+SUFFIX(go_regression_stat_new) (void)
+{
+	SUFFIX(regression_stat_t) * regression_stat = g_new0 (SUFFIX(regression_stat_t), 1);
+
+	regression_stat->se = NULL;
+	regression_stat->t = NULL;
+	regression_stat->xbar = NULL;
+
+	return regression_stat;
+}
+
+/* ------------------------------------------------------------------------- */
+
+void
+SUFFIX(go_regression_stat_destroy) (SUFFIX(regression_stat_t) *regression_stat)
+{
+	g_return_if_fail (regression_stat != NULL);
+
+	if (regression_stat->se)
+		g_free(regression_stat->se);
+	if (regression_stat->t)
+		g_free(regression_stat->t);
+	if (regression_stat->xbar)
+		g_free(regression_stat->xbar);
+	g_free (regression_stat);
+}
+
+/* ------------------------------------------------------------------------- */
+
+#ifdef DEFINE_COMMON
+#define DELTA      0.01
+/* FIXME:  I pulled this number out of my hat.
+ * I need some testing to pick a sensible value.
+ */
+#define MAX_STEPS   200
+#endif
+
+/*
+ * SYNOPSIS:
+ *      result = derivative( f, &df, x, par, i)
+ *
+ * Approximates the partial derivative of a given function, at (x;params)
+ * with respect to the parameter indicated by ith parameter.  The resulst
+ * is stored in 'df'.
+ *
+ * See the header file for more information.
+ */
+static RegressionResult
+SUFFIX(derivative) (SUFFIX(RegressionFunction) f,
+	    DOUBLE *df,
+	    DOUBLE *x, /* Only one point, not the whole data set. */
+	    DOUBLE *par,
+	    int index)
+{
+	DOUBLE y1, y2;
+	RegressionResult result;
+	DOUBLE par_save = par[index];
+
+	par[index] = par_save - DELTA;
+	result = (*f) (x, par, &y1);
+	if (result != REG_ok) {
+		par[index] = par_save;
+		return result;
+	}
+
+	par[index] = par_save + DELTA;
+	result = (*f) (x, par, &y2);
+	if (result != REG_ok) {
+		par[index] = par_save;
+		return result;
+	}
+
+#ifdef DEBUG
+	printf ("y1 = %lf\n", y1);
+	printf ("y2 = %lf\n", y2);
+	printf ("DELTA = %lf\n",DELTA);
+#endif
+
+	*df = (y2 - y1) / (2 * DELTA);
+	par[index] = par_save;
+	return REG_ok;
+}
+
+/*
+ * SYNOPSIS:
+ *   result = chi_squared (f, xvals, par, yvals, sigmas, x_dim, &chisq)
+ *
+ *                            /  y  - f(x ; par) \ 2
+ *            2              |    i      i        |
+ *         Chi   ==   Sum (  | ------------------ |   )
+ *                            \     sigma        /
+ *                                       i
+ *
+ * sigmas  -> Measurement errors in the dataset (along the y-axis).
+ *            NULL means "no errors available", so they are all set to 1.
+ *
+ * x_dim   -> Number of data points.
+ *
+ * This value is not very meaningful without the sigmas.  However, it is
+ * still useful for the fit.
+ */
+static RegressionResult
+SUFFIX(chi_squared) (SUFFIX(RegressionFunction) f,
+	     DOUBLE ** xvals, /* The entire data set. */
+	     DOUBLE *par,
+	     DOUBLE *yvals,   /* Ditto. */
+	     DOUBLE *sigmas,  /* Ditto. */
+	     int x_dim,          /* Number of data points. */
+	     DOUBLE *chisq)   /* Chi Squared */
+{
+	int i;
+	RegressionResult result;
+	DOUBLE tmp, y;
+	*chisq = 0;
+
+	for (i = 0; i < x_dim; i++) {
+		result = f (xvals[i], par, &y);
+		if (result != REG_ok)
+			return result;
+
+		tmp = (yvals[i] - y ) / (sigmas ? sigmas[i] : 1);
+
+		*chisq += tmp * tmp;
+	}
+
+	return REG_ok;
+}
+
+
+/*
+ * SYNOPSIS:
+ *      result = chi_derivative (f, &dchi, xvals, par, i, yvals,
+ *                               sigmas, x_dim)
+ *
+ * This is a simple adaptation of the derivative() function specific to
+ * the Chi Squared.
+ */
+static RegressionResult
+SUFFIX(chi_derivative) (SUFFIX(RegressionFunction) f,
+		DOUBLE *dchi,
+		DOUBLE **xvals, /* The entire data set. */
+		DOUBLE *par,
+		int index,
+		DOUBLE *yvals,  /* Ditto. */
+		DOUBLE *sigmas, /* Ditto. */
+		int x_dim)
+{
+	DOUBLE y1, y2;
+	RegressionResult result;
+	DOUBLE par_save = par[index];
+
+	par[index] = par_save - DELTA;
+	result = SUFFIX(chi_squared) (f, xvals, par, yvals, sigmas, x_dim, &y1);
+	if (result != REG_ok) {
+		par[index] = par_save;
+		return result;
+	}
+
+	par[index] = par_save + DELTA;
+	result = SUFFIX(chi_squared) (f, xvals, par, yvals, sigmas, x_dim, &y2);
+	if (result != REG_ok) {
+                par[index] = par_save;
+		return result;
+	}
+
+#ifdef DEBUG
+	printf ("y1 = %lf\n", y1);
+	printf ("y2 = %lf\n", y2);
+	printf ("DELTA = %lf\n", DELTA);
+#endif
+
+	*dchi = (y2 - y1) / (2 * DELTA);
+	par[index] = par_save;
+	return REG_ok;
+}
+
+/*
+ * SYNOPSIS:
+ *   result = coefficient_matrix (A, f, xvals, par, yvals, sigmas,
+ *                                x_dim, p_dim, r)
+ *
+ * RETURNS:
+ *   The coefficient matrix of the LM method.
+ *
+ * DETAIS:
+ *   The coefficient matrix matrix is defined by
+ *
+ *            N        1      df  df
+ *     A   = Sum  ( -------   --  --  ( i == j ? 1 + r : 1 ) a)
+ *      ij   k=1    sigma^2   dp  dp
+ *                       k      i   j
+ *
+ * A      -> p_dim X p_dim coefficient matrix.  MUST ALREADY BE ALLOCATED.
+ *
+ * sigmas -> Measurement errors in the dataset (along the y-axis).
+ *           NULL means "no errors available", so they are all set to 1.
+ *
+ * x_dim  -> Number of data points.
+ *
+ * p_dim  -> Number of parameters.
+ *
+ * r      -> Positive constant.  It's value is altered during the LM procedure.
+ */
+
+static RegressionResult
+SUFFIX(coefficient_matrix) (DOUBLE **A, /* Output matrix. */
+		    SUFFIX(RegressionFunction) f,
+		    DOUBLE **xvals, /* The entire data set. */
+		    DOUBLE *par,
+		    DOUBLE *yvals,  /* Ditto. */
+		    DOUBLE *sigmas, /* Ditto. */
+		    int x_dim,          /* Number of data points. */
+		    int p_dim,          /* Number of parameters.  */
+		    DOUBLE r)
+{
+	int i, j, k;
+	RegressionResult result;
+	DOUBLE df_i, df_j;
+	DOUBLE sum, sigma;
+
+	/* Notice that the matrix is symetric.  */
+	for (i = 0; i < p_dim; i++) {
+		for (j = 0; j <= i; j++) {
+			sum = 0;
+			for (k = 0; k < x_dim; k++) {
+				result = SUFFIX(derivative) (f, &df_i, xvals[k],
+						     par, i);
+				if (result != REG_ok)
+					return result;
+
+				result = SUFFIX(derivative) (f, &df_j, xvals[k],
+						     par, j);
+				if (result != REG_ok)
+					return result;
+
+				sigma = (sigmas ? sigmas[k] : 1);
+
+				sum += (df_i * df_j) / (sigma * sigma) *
+					(i == j ? 1 + r : 1) ;
+			}
+			A[i][j] = A[j][i] = sum;
+		}
+	}
+
+	return REG_ok;
+}
+
+
+/*
+ * SYNOPSIS:
+ *   result = parameter_errors (f, xvals, par, yvals, sigmas,
+ *                              x_dim, p_dim, errors)
+ *
+ * Returns the errors associated with the parameters.
+ * If an error is infinite, it is set to -1.
+ *
+ * sigmas  -> Measurement errors in the dataset (along the y-axis).
+ *            NULL means "no errors available", so they are all set to 1.
+ *
+ * x_dim   -> Number of data points.
+ *
+ * p_dim   -> Number of parameters.
+ *
+ * errors  -> MUST ALREADY BE ALLOCATED.
+ */
+
+/* FIXME:  I am not happy with the behaviour with infinite errors.  */
+static RegressionResult
+SUFFIX(parameter_errors) (SUFFIX(RegressionFunction) f,
+		  DOUBLE **xvals, /* The entire data set. */
+		  DOUBLE *par,
+		  DOUBLE *yvals,  /* Ditto. */
+		  DOUBLE *sigmas, /* Ditto. */
+		  int x_dim,          /* Number of data points. */
+		  int p_dim,          /* Number of parameters.  */
+		  DOUBLE *errors)
+{
+	RegressionResult result;
+	DOUBLE **A;
+	int i;
+
+	ALLOC_MATRIX (A, p_dim, p_dim);
+
+	result = SUFFIX(coefficient_matrix) (A, f, xvals, par, yvals, sigmas,
+				     x_dim, p_dim, 0);
+	if (result == REG_ok) {
+		for (i = 0; i < p_dim; i++)
+			/* FIXME: these were "[i][j]" which makes no sense.  */
+			errors[i] = (A[i][i] != 0
+				     ? 1 / SUFFIX(sqrt) (A[i][i])
+				     : -1);
+	}
+
+	FREE_MATRIX (A, p_dim, p_dim);
+	return result;
+}
+
+
+/*
+ * SYNOPSIS:
+ *   result = non_linear_regression (f, xvals, par, yvals, sigmas,
+ *                                   x_dim, p_dim, &chi, errors)
+ *
+ * Returns the results of the non-linear regression from the given initial
+ * values.
+ * The resulting parameters are placed back into 'par'.
+ *
+ * PARAMETERS:
+ *
+ * sigmas  -> Measurement errors in the dataset (along the y-axis).
+ *            NULL means "no errors available", so they are all set to 1.
+ *
+ * x_dim   -> Number of data points.
+ *
+ * p_dim   -> Number of parameters.
+ *
+ * errors  -> MUST ALREADY BE ALLOCATED.  These are the approximated standard
+ *            deviation for each parameter.
+ *
+ * chi     -> Chi Squared of the final result.  This value is not very
+ *            meaningful without the sigmas.
+ */
+RegressionResult
+SUFFIX(go_non_linear_regression) (SUFFIX(RegressionFunction) f,
+		       DOUBLE **xvals, /* The entire data set. */
+		       DOUBLE *par,
+		       DOUBLE *yvals,  /* Ditto. */
+		       DOUBLE *sigmas, /* Ditto. */
+		       int x_dim,          /* Number of data points. */
+		       int p_dim,          /* Number of parameters.  */
+		       DOUBLE *chi,
+		       DOUBLE *errors)
+{
+	DOUBLE r = 0.001; /* Pick a conservative initial value. */
+	DOUBLE *b, **A;
+	DOUBLE *dpar;
+	DOUBLE *tmp_par;
+	DOUBLE chi_pre, chi_pos, dchi;
+	RegressionResult result;
+	int i, count;
+
+	result = SUFFIX(chi_squared) (f, xvals, par, yvals, sigmas, x_dim, &chi_pre);
+	if (result != REG_ok)
+		return result;
+
+	ALLOC_MATRIX (A, p_dim, p_dim);
+	dpar    = g_new (DOUBLE, p_dim);
+	tmp_par = g_new (DOUBLE, p_dim);
+	b       = g_new (DOUBLE, p_dim);
+#ifdef DEBUG
+	printf ("Chi Squared : %lf", chi_pre);
+#endif
+
+	for (count = 0; count < MAX_STEPS; count++) {
+		for (i = 0; i < p_dim; i++) {
+			/*
+			 *          d Chi
+			 *  b   ==  -----
+			 *   k       d p
+			 *              k
+			 */
+			result = SUFFIX(chi_derivative) (f, &dchi, xvals, par, i,
+						 yvals, sigmas, x_dim);
+			if (result != REG_ok)
+				goto out;
+
+			b[i] = - dchi;
+		}
+
+		result = SUFFIX(coefficient_matrix) (A, f, xvals, par, yvals,
+					     sigmas, x_dim, p_dim, r);
+		if (result != REG_ok)
+			goto out;
+
+		result = SUFFIX(linear_solve) (A, b, p_dim, dpar);
+		if (result != REG_ok)
+			goto out;
+
+		for(i = 0; i < p_dim; i++)
+			tmp_par[i] = par[i] + dpar[i];
+
+		result = SUFFIX(chi_squared) (f, xvals, par, yvals, sigmas,
+				      x_dim, &chi_pos);
+		if (result != REG_ok)
+			goto out;
+
+#ifdef DEBUG
+		printf ("Chi Squared : %lf", chi_pre);
+		printf ("Chi Squared : %lf", chi_pos);
+		printf ("r  :  %lf", r);
+#endif
+
+		if (chi_pos <= chi_pre + DELTA / 2) {
+			/* There is improvement */
+			r /= 10;
+			par = tmp_par;
+
+			if (SUFFIX(fabs) (chi_pos - chi_pre) < DELTA)
+				break;
+
+			chi_pre = chi_pos;
+		} else {
+			r *= 10;
+		}
+	}
+
+	result = SUFFIX(parameter_errors) (f, xvals, par, yvals, sigmas,
+				   x_dim, p_dim, errors);
+	if (result != REG_ok)
+		goto out;
+
+	*chi = chi_pos;
+
+ out:
+	FREE_MATRIX (A, p_dim, p_dim);
+	g_free (dpar);
+	g_free (tmp_par);
+	g_free (b);
+
+	return result;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-regression.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,240 @@
+#ifndef GNUMERIC_REGRESSION_H
+#define GNUMERIC_REGRESSION_H
+
+#include <glib/gtypes.h>
+
+typedef enum {
+	REG_ok,
+	REG_invalid_dimensions,
+	REG_invalid_data,
+	REG_not_enough_data,
+	REG_near_singular_good, /* Probably good result */
+	REG_near_singular_bad, /* Probably bad result */
+	REG_singular
+} RegressionResult;
+
+
+/**
+ * linear_regression:
+ * @xss: x-vectors.  (I.e., independent data.)
+ * @dim: number of x-vectors.
+ * @ys: y-vector.  (Dependent data.)
+ * @n: number of data points.
+ * @affine: if true, a non-zero constant is allowed.
+ * @res: output place for constant[0] and slope1[1], slope2[2], ...
+ *   There will be dim+1 results.
+ *
+ * This performs multi-dimensional linear regressions on the input points.
+ * Fits to "y = b + a1 * x1 + ... ad * xd".
+ *
+ * Returns RegressionResult as above.
+ */
+
+typedef struct {
+        double *se; /*SE for each parameter estimator*/
+        double *t;  /*t values for each parameter estimator*/
+        double sqr_r;
+	double adj_sqr_r;
+        double se_y; /* The Standard Error of Y */
+        double F;
+        int        df_reg;
+        int        df_resid;
+        int        df_total;
+        double ss_reg;
+        double ss_resid;
+        double ss_total;
+        double ms_reg;
+        double ms_resid;
+	double ybar;
+	double *xbar;
+	double var; /* The variance of the entire regression:
+			sum(errors^2)/(n-xdim) */
+} regression_stat_t;
+
+regression_stat_t * go_regression_stat_new (void);
+void go_regression_stat_destroy (regression_stat_t *regression_stat);
+
+RegressionResult go_linear_regression (double **xss, int dim,
+				    const double *ys, int n,
+				    gboolean affine,
+				    double *res,
+				    regression_stat_t *stat);
+
+
+/**
+ * exponential_regression:
+ * @xss: x-vectors.  (I.e., independent data.)
+ * @dim: number of x-vectors.
+ * @ys: y-vector.  (Dependent data.)
+ * @n: number of data points.
+ * @affine: if true, a non-one multiplier is allowed.
+ * @res: output place for constant[0] and root1[1], root2[2], ...
+ *   There will be dim+1 results.
+ *
+ * This performs one-dimensional linear regressions on the input points.
+ * Fits to "y = b * m1^x1 * ... * md^xd " or equivalently to
+ * "log y = log b + x1 * log m1 + ... + xd * log md".
+ *
+ * Returns RegressionResult as above.
+ */
+
+RegressionResult go_exponential_regression (double **xss, int dim,
+					 const double *ys, int n,
+					 gboolean affine,
+					 double *res,
+					 regression_stat_t *stat);
+
+/**
+ * logarithmic_regression:
+ * @xss: x-vectors.  (Ie., independent data.)
+ * @dim: number of x-vectors.
+ * @ys: y-vector.  (Dependent data.)
+ * @n: number of data points.
+ * @affine: if true, a non-zero constant is allowed.
+ * @res: output place for constant[0] and factor1[1], factor2[2], ...
+ *   There will be dim+1 results.
+ *
+ * This is almost a copy of linear_regression and produces multi-dimensional
+ * linear regressions on the input points after transforming xss to ln(xss).
+ * Fits to "y = b + a1 * z1 + ... ad * zd" with "zi = ln (xi)".
+ * Problems with arrays in the calling function: see comment to
+ * gnumeric_linest, which is also valid for gnumeric_logreg.
+ *
+ * Returns RegressionResult as above.  (Errors: less than two points,
+ * all points on a vertical line, non-positive x data.)
+ */
+
+RegressionResult go_logarithmic_regression (double **xss, int dim,
+					 const double *ys, int n,
+					 gboolean affine,
+					 double *res,
+					 regression_stat_t *stat);
+
+/**
+ * logarithmic_fit:
+ * @xs: x-vector.  (Ie., independent data.)
+ * @ys: y-vector.  (Dependent data.)
+ * @n: number of data points.
+ * @res: output place for sign[0], a[1], b[2], c[3], and
+ * sum of squared residuals[4].
+ *
+ * This performs a two-dimensional non-linear fitting on the input points.
+ * Fits to "y = a + b * ln (sign * (x - c))", with sign in {-1, +1}.
+ * The graph is a logarithmic curve moved horizontally by c and possibly
+ * mirrored across the y-axis (if sign = -1).
+ *
+ * Returns RegressionResult as above.
+ * (Requires: at least 3 different x values, at least 3 different y values.)
+ *
+ * Fits c (and sign) by iterative trials, but seems to be fast enough even
+ * for automatic recomputation.
+ *
+ * Adapts c until a local minimum of squared residuals is reached. For each
+ * new c tried out the corresponding a and b are calculated by linear
+ * regression. If no local minimum is found, an error is returned. If there
+ * is more than one local minimum, the one found is not necessarily the
+ * smallest (i.e., there might be cases in which the returned fit is not the
+ * best possible). If the shape of the point cloud is to different from
+ * ``logarithmic'', either sign can not be determined (error returned) or no
+ * local minimum will be found.
+ */
+
+/* Final accuracy of c is: width of x-range rounded to the next smaller
+ * (10^integer), the result times LOGFIT_C_ACCURACY.
+ * If you change it, remember to change the help-text for LOGFIT.
+ * FIXME: Is there a way to stringify this macros value for the help-text? */
+#define LOGFIT_C_ACCURACY 0.000001
+
+/* Stepwidth for testing for sign is: width of x-range
+ * times LOGFIT_C_STEP_FACTOR. Value is tested a bit. */
+#define LOGFIT_C_STEP_FACTOR 0.05
+
+/* Width of fitted c-range is: width of x-range
+ * times LOGFIT_C_RANGE_FACTOR. Value is tested a bit.
+ * Point clouds with a local minimum of squared residuals outside the fitted
+ * c-range are very weakly bent. */
+#define LOGFIT_C_RANGE_FACTOR 100
+
+RegressionResult go_logarithmic_fit (double *xs,
+				  const double *ys, int n,
+				  double *res);
+
+
+
+typedef RegressionResult (*RegressionFunction)
+    (double * x, double * params, double *f);
+
+
+RegressionResult go_non_linear_regression (RegressionFunction f,
+					double **xvals,
+					double *par,
+					double *yvals,
+					double *sigmas,
+					int x_dim,
+					int p_dim,
+					double *chi,
+					double *errors);
+
+
+gboolean go_matrix_invert (double **A, int n);
+double go_matrix_determinant (double **A, int n);
+
+#ifdef GOFFICE_WITH_LONG_DOUBLE
+typedef struct {
+        long double *se; /*SE for each parameter estimator*/
+        long double *t;  /*t values for each parameter estimator*/
+        long double sqr_r;
+	long double adj_sqr_r;
+        long double se_y; /* The Standard Error of Y */
+        long double F;
+        int        df_reg;
+        int        df_resid;
+        int        df_total;
+        long double ss_reg;
+        long double ss_resid;
+        long double ss_total;
+        long double ms_reg;
+        long double ms_resid;
+	long double ybar;
+	long double *xbar;
+	long double var; /* The variance of the entire regression:
+			sum(errors^2)/(n-xdim) */
+} regression_stat_tl;
+
+regression_stat_tl * go_regression_stat_newl (void);
+void go_regression_stat_destroyl (regression_stat_tl *regression_stat);
+
+RegressionResult go_linear_regressionl (long double **xss, int dim,
+				    const long double *ys, int n,
+				    gboolean affine,
+				    long double *res,
+				    regression_stat_tl *stat);
+RegressionResult go_exponential_regressionl (long double **xss, int dim,
+					 const long double *ys, int n,
+					 gboolean affine,
+					 long double *res,
+					 regression_stat_tl *stat);
+RegressionResult go_logarithmic_regressionl (long double **xss, int dim,
+					 const long double *ys, int n,
+					 gboolean affine,
+					 long double *res,
+					 regression_stat_tl *stat);
+RegressionResult go_logarithmic_fitl (long double *xs,
+				  const long double *ys, int n,
+				  long double *res);
+typedef RegressionResult (*RegressionFunctionl)
+    (long double * x, long double * params, long double *f);
+RegressionResult go_non_linear_regressionl (RegressionFunctionl f,
+					long double **xvals,
+					long double *par,
+					long double *yvals,
+					long double *sigmas,
+					int x_dim,
+					int p_dim,
+					long double *chi,
+					long double *errors);
+gboolean go_matrix_invertl (long double **A, int n);
+long double go_matrix_determinantl (long double **A, int n);
+#endif
+
+#endif

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-units.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-units.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/go-units.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,83 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-units.h : 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GO_UNITS_H
+#define GO_UNITS_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/* Conversion factors */
+/* The following number is the least common multiplier of 254 (1/10mm), 72(pt), 100000, and 576 */
+/* This way inch, pt, and mm are all integer multipliers (in fact, a nanometer is.) */
+/* (Of course that is only true because we use the lobotomized pt size so that
+   1inch is exactly 72pt.)  */
+#define PT_PER_IN 72
+#define CM_PER_IN 254
+#define EMU_PER_IN 914400
+
+#define UN_PER_IN 228600000
+#define UN_PER_EMU (UN_PER_IN/EMU_PER_IN)
+#define UN_PER_PT (UN_PER_IN/PT_PER_IN)
+#define UN_PER_CM (UN_PER_IN/CM_PER_IN)
+
+#define GO_IN_TO_UN(inch)	((inch)*UN_PER_IN)
+#define GO_IN_TO_PT(inch)	((inch)*PT_PER_IN)
+#define GO_IN_TO_CM(inch)	((inch)*CM_PER_IN/100)
+#define GO_IN_TO_EMU(inch)	((inch)*EMU_PER_IN)
+
+#define GO_UN_TO_IN(unit)	((unit)/UN_PER_IN)
+#define GO_UN_TO_PT(unit)	((unit)/UN_PER_PT)
+#define GO_UN_TO_CM(unit)	((unit)/UN_PER_CM/100)
+#define GO_UN_TO_EMU(unit)	((unit)/UN_PER_EMU)
+
+#define GO_PT_TO_UN(pt)		((pt)* UN_PER_PT)
+#define GO_PT_TO_IN(pt)		((pt)           /PT_PER_IN)
+#define GO_PT_TO_CM(pt)		((pt)* CM_PER_IN/PT_PER_IN/100)
+#define GO_PT_TO_EMU(pt)	((pt)*EMU_PER_IN/PT_PER_IN)
+
+#define GO_CM_TO_UN(cm)		((cm)*100*UN_PER_CM)
+#define GO_CM_TO_IN(cm)		((cm)*100          /CM_PER_IN)
+#define GO_CM_TO_PT(cm)		((cm)*100*PT_PER_IN/CM_PER_IN)
+#define GO_CM_TO_EMU(cm)	((cm)*100*PT_PER_IN/EMU_PER_IN)
+
+#define GO_EMU_TO_UN(emu)	((emu)*UN_PER_EMU)
+#define GO_EMU_TO_IN(emu)	((emu)          /EMU_PER_IN)
+#define GO_EMU_TO_PT(emu)	((emu)*PT_PER_IN/EMU_PER_IN)
+#define GO_EMU_TO_CM(emu)	((emu)*CM_PER_IN/EMU_PER_IN/100)
+
+typedef gint64 go_unit_t;
+
+typedef struct {
+	go_unit_t x;
+	go_unit_t y;
+} GoPoint;
+
+typedef struct {
+	go_unit_t top;
+	go_unit_t left;
+	go_unit_t bottom;
+	go_unit_t right;
+} GoRect;
+
+G_END_DECLS
+
+#endif /* GO_UNITS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-utils.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-utils.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-utils.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * goffice-utils.h: 
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOFFICE_UTILS_H
+#define GOFFICE_UTILS_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef guint32				GOColor;
+typedef struct _GOFont			GOFont;
+typedef struct _GOPattern		GOPattern;
+typedef struct _GOMarker		GOMarker;
+typedef struct _GOFormat		GOFormat;
+typedef struct _GOFormatElement		GOFormatElement;
+typedef struct _GODateConventions	GODateConventions;
+
+/* rename this */
+typedef struct _GOMemChunk		GOMemChunk;
+
+typedef const char *(*GOTranslateFunc)(char const *path, gpointer func_data);
+
+G_END_DECLS
+
+#endif /* GOFFICE_UTILS_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-win32-stub.def
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-win32-stub.def	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-win32-stub.def	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,3 @@
+EXPORTS
+    HtmlHelp_
+    FindMimeFromData_


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/goffice-win32-stub.def
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,705 @@
+/*
+ * regutf8.c:  UTF-8 regexp routines.
+ *
+ * Author:
+ *   Morten Welinder (terra at gnome.org)
+ */
+
+#include <goffice/goffice-config.h>
+#include "regutf8.h"
+#include "go-glib-extras.h"
+#include <gsf/gsf-impl-utils.h>
+#include <glib/gi18n.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+enum {
+	PROP_0,
+	PROP_SEARCH_TEXT,
+	PROP_REPLACE_TEXT,
+	PROP_IS_REGEXP,
+	PROP_IGNORE_CASE,
+	PROP_PRESERVE_CASE,
+	PROP_MATCH_WORDS
+};
+
+/* ------------------------------------------------------------------------- */
+
+GQuark
+go_search_replace_error_quark (void)
+{
+  static GQuark q = 0;
+  if (q == 0)
+    q = g_quark_from_static_string ("go-search-replace-error-quark");
+
+  return q;
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
+kill_compiled (GoSearchReplace *sr)
+{
+	if (sr->comp_search) {
+		go_regfree (sr->comp_search);
+		g_free (sr->comp_search);
+		sr->comp_search = NULL;
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+static int
+go_search_replace_compile (GoSearchReplace *sr)
+{
+	const char *pattern;
+	char *tmp;
+	int flags = 0;
+	int res;
+
+	g_return_val_if_fail (sr && sr->search_text, REG_EMPTY);
+
+	kill_compiled (sr);
+
+	if (sr->is_regexp) {
+		pattern = sr->search_text;
+		tmp = NULL;
+		sr->plain_replace =
+			(sr->replace_text &&
+			 g_utf8_strchr (sr->replace_text, -1, '$') == 0 &&
+			 g_utf8_strchr (sr->replace_text, -1, '\\') == 0);
+	} else {
+		/*
+		 * Create a regular expression equivalent to the search
+		 * string.  (Thus hoping the regular expression search
+		 * routines are pretty good.)
+		 */
+		GString *regexp = g_string_new (NULL);
+		go_regexp_quote (regexp, sr->search_text);
+		pattern = tmp = g_string_free (regexp, FALSE);
+
+		sr->plain_replace = TRUE;
+	}
+
+	if (sr->ignore_case) flags |= REG_ICASE;
+
+	sr->comp_search = g_new0 (GORegexp, 1);
+	res = go_regcomp (sr->comp_search, pattern, flags);
+
+	g_free (tmp);
+
+	return res;
+}
+
+/* ------------------------------------------------------------------------- */
+/**
+ * go_search_replace_verify:
+ * @sr: Search-and-Replace info to be checked
+ * @repl: Check replacement part too.
+ * @err: Location to store error message.
+ *
+ * Checks that validity of the search-and-replace data and returns TRUE
+ * on success.
+ **/
+
+gboolean
+go_search_replace_verify (GoSearchReplace *sr, gboolean repl, GError **err)
+{
+	int comp_err;
+	g_return_val_if_fail (sr != NULL, err ? ((*err = NULL), FALSE) : FALSE);
+
+	if (!sr->search_text || sr->search_text[0] == 0) {
+		if (err)
+			g_set_error (err,
+				     go_search_replace_error_quark (),
+				     0,
+				     _("Search string must not be empty."));
+		return FALSE;
+	}
+
+	if (repl && !sr->replace_text) {
+		if (err)
+			g_set_error (err,
+				     go_search_replace_error_quark (),
+				     0,
+				     _("Search string must not be empty."));
+		return FALSE;
+	}
+
+	comp_err = go_search_replace_compile (sr);
+	if (comp_err) {
+		if (err) {
+			char buf[500];
+			go_regerror (comp_err, sr->comp_search, buf, sizeof (buf));
+			g_set_error (err,
+				     go_search_replace_error_quark (),
+				     0,
+				     _("Invalid search pattern (%s)"),
+				     buf);
+		}
+		return FALSE;
+	}
+
+	if (repl && !sr->plain_replace) {
+		const char *s;
+
+		for (s = sr->replace_text; *s; s = g_utf8_next_char (s)) {
+			switch (*s) {
+			case '$':
+				s++;
+				switch (*s) {
+				case '1': case '2': case '3': case '4': case '5':
+				case '6': case '7': case '8': case '9':
+					if ((*s - '0') <= (int)sr->comp_search->re_nsub)
+						break;
+					/* Fall through */
+				default:
+					if (err)
+						g_set_error (err,
+							     go_search_replace_error_quark (),
+							     0,
+							     _("Invalid $-specification in replacement."));
+					return FALSE;
+				}
+				break;
+			case '\\':
+				if (s[1] == 0) {
+					if (err)
+						g_set_error (err,
+							     go_search_replace_error_quark (),
+							     0,
+							     _("Invalid trailing backslash in replacement."));
+					return FALSE;
+				}
+				s++;
+				break;
+			}
+		}
+	}
+
+	return TRUE;
+}
+
+/* ------------------------------------------------------------------------- */
+/*
+ * Quote a single UTF-8 encoded character from s into target and return the
+ * location of the next character in s.
+ */
+const char *
+go_regexp_quote1 (GString *target, const char *s)
+{
+	g_return_val_if_fail (target != NULL, NULL);
+	g_return_val_if_fail (s != NULL, NULL);
+
+	switch (*s) {
+	case '.': case '[': case '\\':
+	case '*': case '+': case '{': case '?':
+	case '^': case '$':
+	case '(': case '|': case ')':
+		g_string_append_c (target, '\\');
+		g_string_append_c (target, *s);
+		return s + 1;
+
+	case 0:
+		return s;
+
+	default:
+		do {
+			g_string_append_c (target, *s);
+			s++;
+		} while ((*s & 0xc0) == 0x80);
+
+		return s;
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+/*
+ * Regexp quote a UTF-8 string.
+ */
+void
+go_regexp_quote (GString *target, const char *s)
+{
+	g_return_if_fail (target != NULL);
+	g_return_if_fail (s != NULL);
+
+	while (*s)
+		s = go_regexp_quote1 (target, s);
+}
+
+/* ------------------------------------------------------------------------- */
+
+static gboolean
+match_is_word (const char *src, const regmatch_t *pm, gboolean bolp)
+{
+	/* The empty string is not a word.  */
+	if (pm->rm_so == pm->rm_eo)
+		return FALSE;
+
+	if (pm->rm_so > 0 || !bolp) {
+		/* We get here when something actually preceded the match.  */
+		gunichar c_pre = g_utf8_get_char (g_utf8_prev_char (src + pm->rm_so));
+		if (g_unichar_isalnum (c_pre))
+			return FALSE;
+	}
+
+	{
+		gunichar c_post = g_utf8_get_char (src + pm->rm_eo);
+		if (c_post != 0 && g_unichar_isalnum (c_post))
+			return FALSE;
+	}
+
+	return TRUE;
+}
+
+/* ------------------------------------------------------------------------- */
+
+typedef enum {
+	SC_Upper,    /* At least one letter.  No lower case.  */
+	SC_Capital,  /* Something Like: This */
+	SC_Other
+} SearchCase;
+
+static SearchCase
+inspect_case (const char *p, const char *pend)
+{
+	gboolean is_upper = TRUE;
+	gboolean is_capital = TRUE;
+	gboolean has_letter = FALSE;
+	gboolean expect_upper = TRUE;
+
+	for (; p < pend; p = g_utf8_next_char (p)) {
+		gunichar c = g_utf8_get_char (p);
+		if (g_unichar_isalpha (c)) {
+			has_letter = TRUE;
+			if (!g_unichar_isupper (c)) {
+				is_upper = FALSE;
+			}
+
+			if (expect_upper ? !g_unichar_isupper (c) : !g_unichar_islower (c)) {
+				is_capital = FALSE;
+			}
+			expect_upper = FALSE;
+		} else
+			expect_upper = TRUE;
+	}
+
+	if (has_letter) {
+		if (is_upper)
+			return SC_Upper;
+		if (is_capital)
+			return SC_Capital;
+	}
+
+	return SC_Other;
+}
+
+
+static char *
+calculate_replacement (GoSearchReplace *sr, const char *src, const regmatch_t *pm)
+{
+	char *res;
+
+	if (sr->plain_replace) {
+		res = g_strdup (sr->replace_text);
+	} else {
+		const char *s;
+		GString *gres = g_string_sized_new (strlen (sr->replace_text));
+
+		for (s = sr->replace_text; *s; s = g_utf8_next_char (s)) {
+			switch (*s) {
+			case '$':
+			{
+				int n = s[1] - '0';
+				s++;
+
+				g_assert (n > 0 && n <= (int)sr->comp_search->re_nsub);
+				g_string_append_len (gres,
+						     src + pm[n].rm_so,
+						     pm[n].rm_eo - pm[n].rm_so);
+				break;
+			}
+			case '\\':
+				s++;
+				g_assert (*s != 0);
+				g_string_append_unichar (gres, g_utf8_get_char (s));
+				break;
+			default:
+				g_string_append_unichar (gres, g_utf8_get_char (s));
+				break;
+			}
+		}
+
+		res = gres->str;
+		g_string_free (gres, FALSE);
+	}
+
+	/*
+	 * Try to preserve the case during replacement, i.e., do the
+	 * following substitutions:
+	 *
+	 * search -> replace
+	 * Search -> Replace
+	 * SEARCH -> REPLACE
+	 * TheSearch -> TheReplace
+	 */
+	if (sr->preserve_case) {
+		SearchCase sc =
+			inspect_case (src + pm->rm_so, src + pm->rm_eo);
+
+		switch (sc) {
+		case SC_Upper:
+		{
+			char *newres = g_utf8_strup (res, -1);
+			g_free (res);
+			res = newres;
+			break;
+		}
+
+		case SC_Capital:
+		{
+			char *newres = go_utf8_strcapital (res, -1);
+			g_free (res);
+			res = newres;
+			break;
+		}
+
+		case SC_Other:
+			break;
+
+#ifndef DEBUG_SWITCH_ENUM
+		default:
+			g_assert_not_reached ();
+#endif
+		}
+	}
+
+	return res;
+}
+
+/* ------------------------------------------------------------------------- */
+
+gboolean
+go_search_match_string (GoSearchReplace *sr, const char *src)
+{
+	int flags = 0;
+
+	g_return_val_if_fail (sr, FALSE);
+
+	if (!sr->comp_search) {
+		go_search_replace_compile (sr);
+		g_return_val_if_fail (sr->comp_search, FALSE);
+	}
+
+	while (1) {
+		regmatch_t match;
+		int ret = go_regexec (sr->comp_search, src, 1, &match, flags);
+
+		switch (ret) {
+		case 0:
+			if (!sr->match_words)
+				return TRUE;
+
+			if (match_is_word (src, &match, (flags & REG_NOTBOL) != 0))
+				return TRUE;
+
+			/*
+			 * We had a match, but it's not a word.  Pretend we saw
+			 * a one-character match and continue after that.
+			 */
+			flags |= REG_NOTBOL;
+			src = g_utf8_next_char (src + match.rm_so);
+			break;
+
+		case REG_NOMATCH:
+			return FALSE;
+
+		default:
+			g_error ("Unexpected error code from regexec: %d.", ret);
+			return FALSE;
+		}
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+/*
+ * Returns NULL if nothing changed, or a g_malloc string otherwise.
+ */
+char *
+go_search_replace_string (GoSearchReplace *sr, const char *src)
+{
+	int nmatch;
+	regmatch_t *pmatch;
+	GString *res = NULL;
+	int ret;
+	int flags = 0;
+
+	g_return_val_if_fail (sr, NULL);
+	g_return_val_if_fail (sr->replace_text, NULL);
+
+	if (!sr->comp_search) {
+		go_search_replace_compile (sr);
+		g_return_val_if_fail (sr->comp_search, NULL);
+	}
+
+	nmatch = 1 + sr->comp_search->re_nsub;
+	pmatch = g_new (regmatch_t, nmatch);
+
+	while ((ret = go_regexec (sr->comp_search, src, nmatch, pmatch, flags)) == 0) {
+		if (!res) {
+			/* The size here is a bit arbitrary.  */
+			int size = strlen (src) +
+				10 * strlen (sr->replace_text);
+			res = g_string_sized_new (size);
+		}
+
+		if (pmatch[0].rm_so > 0) {
+			g_string_append_len (res, src, pmatch[0].rm_so);
+		}
+
+		if (sr->match_words && !match_is_word (src, pmatch,
+						       (flags & REG_NOTBOL) != 0)) {
+			/*  We saw a fake match.  */
+			if (pmatch[0].rm_so < pmatch[0].rm_eo) {
+				const char *p = src + pmatch[0].rm_so;
+				gunichar c = g_utf8_get_char (p);
+
+				g_string_append_unichar (res, c);
+
+				/* Pretend we saw a one-character match.  */
+				pmatch[0].rm_eo = pmatch[0].rm_so +
+					(g_utf8_next_char (p) - p);
+			}
+		} else {
+			char *replacement =
+				calculate_replacement (sr, src, pmatch);
+			g_string_append (res, replacement);
+			g_free (replacement);
+
+			if (src[pmatch[0].rm_eo] == 0) {
+				/*
+				 * We matched and replaced the last character
+				 * of the string.  Do not continue as we might
+				 * then match the empty string at the end and
+				 * re-add the replacement.  This would happen,
+				 * for example, if you searched for ".*".
+				 */
+				src = "";
+				break;
+			}
+		}
+
+		if (pmatch[0].rm_eo > 0) {
+			src += pmatch[0].rm_eo;
+			flags |= REG_NOTBOL;
+		}
+
+		if (pmatch[0].rm_so == pmatch[0].rm_eo) {
+			/*
+			 * We have matched a null string at the current point.
+			 * This might happen searching for just an anchor, for
+			 * example.  Don't loop forever...
+			 */
+			break;
+		}
+	}
+
+	g_free (pmatch);
+
+	if (res) {
+		if (*src)
+			g_string_append (res, src);
+		return g_string_free (res, FALSE);
+	} else {
+		return NULL;
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
+go_search_replace_init (GObject *obj)
+{
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
+go_search_replace_finalize (GObject *obj)
+{
+	GoSearchReplace *sr = (GoSearchReplace *)obj;
+
+	kill_compiled (sr);
+	g_free (sr->search_text);
+	g_free (sr->replace_text);
+
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
+go_search_replace_get_property (GObject     *object,
+				guint        property_id,
+				GValue      *value,
+				GParamSpec  *pspec)
+{
+	GoSearchReplace *sr = (GoSearchReplace *)object;
+
+	switch (property_id) {
+	case PROP_SEARCH_TEXT:
+		g_value_set_string (value, sr->search_text);
+		break;
+	case PROP_REPLACE_TEXT:
+		g_value_set_string (value, sr->replace_text);
+		break;
+	case PROP_IS_REGEXP:
+		g_value_set_boolean (value, sr->is_regexp);
+		break;
+	case PROP_IGNORE_CASE:
+		g_value_set_boolean (value, sr->ignore_case);
+		break;
+	case PROP_PRESERVE_CASE:
+		g_value_set_boolean (value, sr->preserve_case);
+		break;
+	case PROP_MATCH_WORDS:
+		g_value_set_boolean (value, sr->match_words);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
+go_search_replace_set_search_text (GoSearchReplace *sr, const char *text)
+{
+	char *text_copy = g_strdup (text);
+	g_free (sr->search_text);
+	sr->search_text = text_copy;
+	kill_compiled (sr);
+}
+
+static void
+go_search_replace_set_replace_text (GoSearchReplace *sr, const char *text)
+{
+	char *text_copy = g_strdup (text);
+	g_free (sr->replace_text);
+	sr->replace_text = text_copy;
+	kill_compiled (sr);
+}
+
+static void
+go_search_replace_set_property (GObject      *object,
+				guint         property_id,
+				GValue const *value,
+				GParamSpec   *pspec)
+{
+	GoSearchReplace *sr = (GoSearchReplace *)object;
+
+	switch (property_id) {
+	case PROP_SEARCH_TEXT:
+		go_search_replace_set_search_text (sr, g_value_get_string (value));
+		break;
+	case PROP_REPLACE_TEXT:
+		go_search_replace_set_replace_text (sr, g_value_get_string (value));
+		break;
+	case PROP_IS_REGEXP:
+		sr->is_regexp = g_value_get_boolean (value);
+		kill_compiled (sr);
+		break;
+	case PROP_IGNORE_CASE:
+		sr->ignore_case = g_value_get_boolean (value);
+		kill_compiled (sr);
+		break;
+	case PROP_PRESERVE_CASE:
+		sr->preserve_case = g_value_get_boolean (value);
+		kill_compiled (sr);
+		break;
+	case PROP_MATCH_WORDS:
+		sr->match_words = g_value_get_boolean (value);
+		kill_compiled (sr);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
+go_search_replace_class_init (GObjectClass *gobject_class)
+{
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	gobject_class->finalize = go_search_replace_finalize;
+	gobject_class->get_property = go_search_replace_get_property;
+	gobject_class->set_property = go_search_replace_set_property;
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SEARCH_TEXT,
+		 g_param_spec_string ("search-text",
+				      _("Search Text"),
+				      _("The text to search for"),
+				      NULL,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE));
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_REPLACE_TEXT,
+		 g_param_spec_string ("replace-text",
+				      _("Replacement Text"),
+				      _("The text to replace with"),
+				      NULL,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_IS_REGEXP,
+		 g_param_spec_boolean ("is-regexp",
+				       _("Is Regular Expression"),
+				       _("Is the search text a regular expression."),
+				       FALSE,
+				       GSF_PARAM_STATIC |
+				       G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_IGNORE_CASE,
+		 g_param_spec_boolean ("ignore-case",
+				       _("Ignore Case"),
+				       _("Ignore the case of letters."),
+				       FALSE,
+				       GSF_PARAM_STATIC |
+				       G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_PRESERVE_CASE,
+		 g_param_spec_boolean ("preserve-case",
+				       _("Preserve Case"),
+				       _("Preserve the case of letters."),
+				       FALSE,
+				       GSF_PARAM_STATIC |
+				       G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_MATCH_WORDS,
+		 g_param_spec_boolean ("match-words",
+				       _("Match Words"),
+				       _("Match whole words only."),
+				       FALSE,
+				       GSF_PARAM_STATIC |
+				       G_PARAM_READWRITE));
+}
+
+/* ------------------------------------------------------------------------- */
+
+GSF_CLASS (GoSearchReplace, go_search_replace,
+	   go_search_replace_class_init, go_search_replace_init, G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/regutf8.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,51 @@
+#ifndef GO_REGUTF8_H
+#define GO_REGUTF8_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include <goffice/cut-n-paste/pcre/pcreposix.h>
+
+/* -------------------------------------------------------------------------- */
+
+G_BEGIN_DECLS
+
+#define GO_SEARCH_REPLACE_TYPE        (go_search_replace_get_type ())
+#define GO_SEARCH_REPLACE(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GO_SEARCH_REPLACE_TYPE, GoSearchReplace))
+#define GO_IS_SEARCH_REPLACE(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GO_SEARCH_REPLACE_TYPE))
+
+typedef struct _GoSearchReplace {
+	GObject base;
+
+	/*< public >*/
+	char *search_text;
+	char *replace_text;
+
+	GORegexp *comp_search;
+	gboolean is_regexp;	/* Search text is a regular expression.  */
+	gboolean ignore_case;	/* Consider "a" and "A" the same.  */
+	gboolean preserve_case;	/* Like Emacs' case-replace.  */
+	gboolean match_words;	/* Like grep -w.  */
+
+	/*< private >*/
+	gboolean plain_replace;
+} GoSearchReplace;
+
+typedef struct {
+	GObjectClass g_object_class;
+} GoSearchReplaceClass;
+
+
+GQuark           go_search_replace_error_quark (void);
+GType            go_search_replace_get_type (void);
+
+gboolean         go_search_replace_verify (GoSearchReplace *sr, gboolean repl, GError **err);
+
+gboolean         go_search_match_string (GoSearchReplace *sr, const char *src);
+char *           go_search_replace_string (GoSearchReplace *sr, const char *src);
+
+const char *go_regexp_quote1 (GString *target, const char *s);
+void go_regexp_quote (GString *target, const char *s);
+
+G_END_DECLS
+
+#endif /* GO_REGUTF8_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/svg-patterns.xml
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/svg-patterns.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/svg-patterns.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<patterns>
+	<pattern name="grey75"			width="1" height="2" d="M 1.5000000,0.0000000 C 1.5000000,0.27614237 1.2761424,0.50000000 1.0000000,0.50000000 C 0.72385763,0.50000000 0.50000000,0.27614237 0.50000000,9.1845477e-17 C 0.50000000,-0.27614237 0.72385763,-0.50000000 1.0000000,-0.50000000 C 1.2761424,-0.50000000 1.5000000,-0.27614237 1.5000000,-1.5307580e-16 L 1.5000000,0.0000000 z M 0.50000000,0.0000000 C 0.50000000,0.27614237 0.27614237,0.50000000 3.0615159e-17,0.50000000 C -0.27614237,0.50000000 -0.50000000,0.27614237 -0.50000000,9.1845477e-17 C -0.50000000,-0.27614237 -0.27614237,-0.50000000 -9.1845477e-17,-0.50000000 C 0.27614237,-0.50000000 0.50000000,-0.27614237 0.50000000,-1.5307580e-16 L 0.50000000,0.0000000 z M 1.0000000,1.0000000 C 1.0000000,1.2761424 0.77614237,1.5000000 0.50000000,1.5000000 C 0.22385763,1.5000000 0.0000000,1.2761424 0.0000000,1.0000000 C 0.0000000,0.72385763 0.22385763,0.50000000 0.50000000,0.50000000 C 0.77614237,0.50000000 1.0000000,0.72385763 1.0000000,1.0000000 L 1.0000000,1.0000000 z M 1.5000000,2.0000000 C 1.5000000,2.2761424 1.2761424,2.5000000 1.0000000,2.5000000 C 0.72385763,2.5000000 0.50000000,2.2761424 0.50000000,2.0000000 C 0.50000000,1.7238576 0.72385763,1.5000000 1.0000000,1.5000000 C 1.2761424,1.5000000 1.5000000,1.7238576 1.5000000,2.0000000 L 1.5000000,2.0000000 z M 0.50000000,2.0000000 C 0.50000000,2.2761424 0.27614237,2.5000000 3.0615159e-17,2.5000000 C -0.27614237,2.5000000 -0.50000000,2.2761424 -0.50000000,2.0000000 C -0.50000000,1.7238576 -0.27614237,1.5000000 -9.1845477e-17,1.5000000 C 0.27614237,1.5000000 0.50000000,1.7238576 0.50000000,2.0000000 L 0.50000000,2.0000000 z "/>
+	<pattern name="grey50"   		width="1" height="2" d="M 1.4000000,0.0000000 C 1.4000000,0.22080000 1.2208000,0.40000001 1.0000000,0.40000001 C 0.77920000,0.40000001 0.59999999,0.22080000 0.59999999,4.8984255e-17 C 0.59999999,-0.22080000 0.77920000,-0.40000001 1.0000000,-0.40000001 C 1.2208000,-0.40000001 1.4000000,-0.22080000 1.4000000,0.0000000 z M 0.40000001,0.0000000 C 0.40000001,0.22080000 0.22080000,0.40000001 2.4492127e-17,0.40000001 C -0.22080000,0.40000001 -0.40000001,0.22080000 -0.40000001,4.8984255e-17 C -0.40000001,-0.22080000 -0.22080000,-0.40000001 -7.3476382e-17,-0.40000001 C 0.22080000,-0.40000001 0.40000001,-0.22080000 0.40000001,0.0000000 z M 0.90000001,1.0000000 C 0.90000001,1.2208000 0.72080000,1.4000000 0.50000000,1.4000000 C 0.27920000,1.4000000 0.099999990,1.2208000 0.099999990,1.0000000 C 0.099999990,0.77920000 0.27920000,0.59999999 0.50000000,0.59999999 C 0.72080000,0.59999999 0.90000001,0.77920000 0.90000001,1.0000000 z M 1.4000000,2.0000000 C 1.4000000,2.2208000 1.2208000,2.4000000 1.0000000,2.4000000 C 0.77920000,2.4000000 0.59999999,2.2208000 0.59999999,2.0000000 C 0.59999999,1.7792000 0.77920000,1.6000000 1.0000000,1.6000000 C 1.2208000,1.6000000 1.4000000,1.7792000 1.4000000,2.0000000 z M 0.40000001,2.0000000 C 0.40000001,2.2208000 0.22080000,2.4000000 2.4492127e-17,2.4000000 C -0.22080000,2.4000000 -0.40000001,2.2208000 -0.40000001,2.0000000 C -0.40000001,1.7792000 -0.22080000,1.6000000 -7.3476382e-17,1.6000000 C 0.22080000,1.6000000 0.40000001,1.7792000 0.40000001,2.0000000 z "/>
+	<pattern name="grey25"	 		width="1" height="1" d="M 0.20000000,0.0000000 C 0.20000000,0.11040000 0.11040000,0.20000000 1.2246064e-17,0.20000000 C -0.11040000,0.20000000 -0.20000000,0.11040000 -0.20000000,2.4492127e-17 C -0.20000000,-0.11040000 -0.11040000,-0.20000000 -3.6738191e-17,-0.20000000 C 0.11040000,-0.20000000 0.20000000,-0.11040000 0.20000000,0.0000000 z M 1.2000000,0.0000000 C 1.2000000,0.11040000 1.1104000,0.20000000 1.0000000,0.20000000 C 0.88960000,0.20000000 0.80000000,0.11040000 0.80000000,2.4492127e-17 C 0.80000000,-0.11040000 0.88960000,-0.20000000 1.0000000,-0.20000000 C 1.1104000,-0.20000000 1.2000000,-0.11040000 1.2000000,0.0000000 z M 0.70000000,0.50000000 C 0.70000000,0.61040000 0.61040000,0.70000000 0.50000000,0.70000000 C 0.38960000,0.70000000 0.30000000,0.61040000 0.30000000,0.50000000 C 0.30000000,0.38960000 0.38960000,0.30000000 0.50000000,0.30000000 C 0.61040000,0.30000000 0.70000000,0.38960000 0.70000000,0.50000000 z M 1.2000000,1.0000000 C 1.2000000,1.1104000 1.1104000,1.2000000 1.0000000,1.2000000 C 0.88960000,1.2000000 0.80000000,1.1104000 0.80000000,1.0000000 C 0.80000000,0.88960000 0.88960000,0.80000000 1.0000000,0.80000000 C 1.1104000,0.80000000 1.2000000,0.88960000 1.2000000,1.0000000 z M 0.20000000,1.0000000 C 0.20000000,1.1104000 0.11040000,1.2000000 1.2246064e-17,1.2000000 C -0.11040000,1.2000000 -0.20000000,1.1104000 -0.20000000,1.0000000 C -0.20000000,0.88960000 -0.11040000,0.80000000 -3.6738191e-17,0.80000000 C 0.11040000,0.80000000 0.20000000,0.88960000 0.20000000,1.0000000 z "/>
+	<pattern name="grey12.5" 		width="1" height="1" d="M 0.10000000,0.0000000 C 0.10000000,0.055228475 0.055228475,0.10000000 6.1230318e-18,0.10000000 C -0.055228475,0.10000000 -0.10000000,0.055228475 -0.10000000,1.8369096e-17 C -0.10000000,-0.055228475 -0.055228475,-0.10000000 -1.8369095e-17,-0.10000000 C 0.055228475,-0.10000000 0.10000000,-0.055228475 0.10000000,-3.0615159e-17 L 0.10000000,0.0000000 z M 1.1000000,0.0000000 C 1.1000000,0.055228475 1.0552285,0.10000000 1.0000000,0.10000000 C 0.94477152,0.10000000 0.90000000,0.055228475 0.90000000,1.8369096e-17 C 0.90000000,-0.055228475 0.94477152,-0.10000000 1.0000000,-0.10000000 C 1.0552285,-0.10000000 1.1000000,-0.055228475 1.1000000,-3.0615159e-17 L 1.1000000,0.0000000 z M 0.60000000,0.50000000 C 0.60000000,0.55522848 0.55522848,0.60000000 0.50000000,0.60000000 C 0.44477153,0.60000000 0.40000000,0.55522848 0.40000000,0.50000000 C 0.40000000,0.44477153 0.44477153,0.40000000 0.50000000,0.40000000 C 0.55522848,0.40000000 0.60000000,0.44477153 0.60000000,0.50000000 L 0.60000000,0.50000000 z M 1.1000000,1.0000000 C 1.1000000,1.0552285 1.0552285,1.1000000 1.0000000,1.1000000 C 0.94477152,1.1000000 0.90000000,1.0552285 0.90000000,1.0000000 C 0.90000000,0.94477152 0.94477152,0.90000000 1.0000000,0.90000000 C 1.0552285,0.90000000 1.1000000,0.94477152 1.1000000,1.0000000 L 1.1000000,1.0000000 z M 0.10000000,1.0000000 C 0.10000000,1.0552285 0.055228475,1.1000000 6.1230318e-18,1.1000000 C -0.055228475,1.1000000 -0.10000000,1.0552285 -0.10000000,1.0000000 C -0.10000000,0.94477152 -0.055228475,0.90000000 -1.8369095e-17,0.90000000 C 0.055228475,0.90000000 0.10000000,0.94477152 0.10000000,1.0000000 L 0.10000000,1.0000000 z "/>
+	<pattern name="grey6.25"	 	width="2" height="2" d="M 0.10000000,0.0000000 C 0.10000000,0.055200001 0.055200001,0.10000000 6.1230319e-18,0.10000000 C -0.055200001,0.10000000 -0.10000000,0.055200001 -0.10000000,1.2246064e-17 C -0.10000000,-0.055200001 -0.055200001,-0.10000000 -1.8369096e-17,-0.10000000 C 0.055200001,-0.10000000 0.10000000,-0.055200001 0.10000000,0.0000000 z M 2.1000000,0.0000000 C 2.1000000,0.055200001 2.0552000,0.10000000 2.0000000,0.10000000 C 1.9448000,0.10000000 1.9000000,0.055200001 1.9000000,1.2246064e-17 C 1.9000000,-0.055200001 1.9448000,-0.10000000 2.0000000,-0.10000000 C 2.0552000,-0.10000000 2.1000000,-0.055200001 2.1000000,0.0000000 z M 1.1000000,1.0000000 C 1.1000000,1.0552000 1.0552000,1.1000000 1.0000000,1.1000000 C 0.94480000,1.1000000 0.90000000,1.0552000 0.90000000,1.0000000 C 0.90000000,0.94480000 0.94480000,0.90000000 1.0000000,0.90000000 C 1.0552000,0.90000000 1.1000000,0.94480000 1.1000000,1.0000000 z M 2.1000000,2.0000000 C 2.1000000,2.0552000 2.0552000,2.1000000 2.0000000,2.1000000 C 1.9448000,2.1000000 1.9000000,2.0552000 1.9000000,2.0000000 C 1.9000000,1.9448000 1.9448000,1.9000000 2.0000000,1.9000000 C 2.0552000,1.9000000 2.1000000,1.9448000 2.1000000,2.0000000 z M 0.10000000,2.0000000 C 0.10000000,2.0552000 0.055200001,2.1000000 6.1230319e-18,2.1000000 C -0.055200001,2.1000000 -0.10000000,2.0552000 -0.10000000,2.0000000 C -0.10000000,1.9448000 -0.055200001,1.9000000 -1.8369096e-17,1.9000000 C 0.055200001,1.9000000 0.10000000,1.9448000 0.10000000,2.0000000 z "/>
+	<pattern name="horiz"  			width="2" height="2" d="M 4.1000000,0.50000000 L -0.10000000,0.50000000 L -0.10000000,1.5000000 L 4.1000000,1.5000000 L 4.1000000,0.50000000 z "/>
+	<pattern name="vert"			width="2" height="2" d="M 0.50000000,0.0000000 L 1.5000000,0.0000000 L 1.5000000,2.0000000 L 0.50000000,2.0000000 L 0.50000000,0.0000000 z "/>
+	<pattern name="rev-diag"		width="4" height="4" d="M 1.0000000,0.0000000 L 0.0000000,0.0000000 L 0.0000000,1.0000000 L 3.0000000,4.0000000 L 4.0000000,4.0000000 L 4.0000000,3.0000000 L 1.0000000,0.0000000 z M 0.0000000,3.0000000 L 1.0000000,4.0000000 L 0.0000000,4.0000000 L 0.0000000,3.0000000 z M 4.0000000,1.0000000 L 3.0000000,0.0000000 L 4.0000000,0.0000000 L 4.0000000,1.0000000 z "/>
+	<pattern name="diag"			width="4" height="4" d="M 3.0000000,0.0000000 L 4.0000000,0.0000000 L 4.0000000,1.0000000 L 1.0000000,4.0000000 L 0.0000000,4.0000000 L 0.0000000,3.0000000 L 3.0000000,0.0000000 z M 4.0000000,3.0000000 L 3.0000000,4.0000000 L 4.0000000,4.0000000 L 4.0000000,3.0000000 z M 0.0000000,1.0000000 L 1.0000000,0.0000000 L 0.0000000,0.0000000 L 0.0000000,1.0000000 z "/>
+	<pattern name="diag-cross"		width="2" height="2" d="M 0.0000000 0.0000000 L 0.0000000 0.50000000 L 0.50000000 1.0000000 L 0.0000000 1.5000000 L 0.0000000 2.0000000 L 0.50000000 2.0000000 L 1.0000000 1.5000000 L 1.5000000 2.0000000 L 2.0000000 2.0000000 L 2.0000000 1.5000000 L 1.5000000 1.0000000 L 2.0000000 0.50000000 L 2.0000000 0.0000000 L 1.5000000 0.0000000 L 1.0000000 0.50000000 L 0.50000000 0.0000000 L 0.0000000 0.0000000 z "/>
+	<pattern name="thick-diag-cross"	width="2" height="2" d="M 0.0000000,0.0000000 L 0.0000000,0.70000000 L 0.30000000,1.0000000 L 0.0000000,1.3000000 L 0.0000000,2.0000000 L 0.70000000,2.0000000 L 1.0000000,1.7000000 L 1.3000000,2.0000000 L 2.0000000,2.0000000 L 2.0000000,1.3000000 L 1.7000000,1.0000000 L 2.0000000,0.70000000 L 2.0000000,0.0000000 L 1.3000000,0.0000000 L 1.0000000,0.30000000 L 0.70000000,0.0000000 L 0.0000000,0.0000000 z "/>
+	<pattern name="thin-horiz"		width="2" height="2" d="M 0.0000000,0.50000000 L 2.0000000,0.50000000 L 2.0000000,1.0000000 L 0.0000000,1.0000000 L 0.0000000,0.50000000 z "/>
+	<pattern name="thin-vert"		width="2" height="2" d="M 1.0000000,0.0000000 L 1.0000000,2.0000000 L 0.50000000,2.0000000 L 0.50000000,0.0000000 L 1.0000000,0.0000000 z "/>
+	<pattern name="thin-rev-diag"		width="4" height="4" d="M 0.40000000,0.0000000 L 0.0000000,0.0000000 L 0.0000000,0.40000000 L 3.6000000,4.0000000 L 4.0000000,4.0000000 L 4.0000000,3.6000000 L 0.40000000,0.0000000 z M 0.0000000,3.6000000 L 0.40000000,4.0000000 L 0.0000000,4.0000000 L 0.0000000,3.6000000 z M 4.0000000,0.40000000 L 3.6000000,4.4408921e-16 L 4.0000000,4.4408921e-16 L 4.0000000,0.40000000 z "/>
+	<pattern name="thin-diag"		width="4" height="4" d="M 3.6000000,0.0000000 L 4.0000000,0.0000000 L 4.0000000,0.40000000 L 0.40000000,4.0000000 L 0.0000000,4.0000000 L 0.0000000,3.6000000 L 3.6000000,0.0000000 z M 4.0000000,3.6000000 L 3.6000000,4.0000000 L 4.0000000,4.0000000 L 4.0000000,3.6000000 z M 0.0000000,0.40000000 L 0.40000000,4.4408921e-16 L 0.0000000,4.4408921e-16 L 0.0000000,0.40000000 z "/>
+	<pattern name="thin-horiz-cross"	width="2" height="2" d="M 0.50000000 0.0000000 L 0.50000000 0.50000000 L 0.0000000 0.50000000 L 0.0000000 1.0000000 L 0.50000000 1.0000000 L 0.50000000 2.0000000 L 1.0000000 2.0000000 L 1.0000000 1.0000000 L 2.0000000 1.0000000 L 2.0000000 0.50000000 L 1.0000000 0.50000000 L 1.0000000 0.0000000 L 0.50000000 0.0000000 z "/>
+	<pattern name="thin-diag-cross"		width="2" height="2" d="M 0.0000000,0.0000000 L 0.0000000,0.30000000 L 0.70000000,1.0000000 L 0.0000000,1.7000000 L 0.0000000,2.0000000 L 0.30000000,2.0000000 L 1.0000000,1.3000000 L 1.7000000,2.0000000 L 2.0000000,2.0000000 L 2.0000000,1.7000000 L 1.3000000,1.0000000 L 2.0000000,0.30000000 L 2.0000000,0.0000000 L 1.7000000,0.0000000 L 1.0000000,0.70000000 L 0.30000000,0.0000000 L 0.0000000,0.0000000 z "/>
+	<pattern name="semi-circles"		width="4" height="4" d="M -2.0937500,0.0000000 C -2.0937500,1.1581063 -1.1581063,2.0937500 0.0000000,2.0937500 C 1.1581063,2.0937500 2.0937500,1.1581063 2.0937500,0.0000000 L 1.9062500,0.0000000 C 1.9062500,1.0498937 1.0498937,1.9062500 0.0000000,1.9062500 C -1.0498937,1.9062500 -1.9062500,1.0498937 -1.9062500,0.0000000 L -2.0937500,0.0000000 z M 1.9062500,0.0000000 C 1.9062500,1.1581063 2.8418937,2.0937500 4.0000000,2.0937500 C 5.1581063,2.0937500 6.0937500,1.1581063 6.0937500,0.0000000 L 5.9062500,0.0000000 C 5.9062500,1.0498937 5.0498937,1.9062500 4.0000000,1.9062500 C 2.9501063,1.9062500 2.0937500,1.0498937 2.0937500,0.0000000 L 1.9062500,0.0000000 z M -0.093750000,2.0000000 C -0.093750000,3.1581063 0.84189370,4.0937500 2.0000000,4.0937500 C 3.1581063,4.0937500 4.0937500,3.1581063 4.0937500,2.0000000 L 3.9062500,2.0000000 C 3.9062500,3.0498937 3.0498937,3.9062500 2.0000000,3.9062500 C 0.95010630,3.9062500 0.093750000,3.0498937 0.093750000,2.0000000 L -0.093750000,2.0000000 z M -0.093750000,-2.0000000 C -0.093750000,-0.84189370 0.84189370,0.093750000 2.0000000,0.093750000 C 3.1581063,0.093750000 4.0937500,-0.84189370 4.0937500,-2.0000000 L 3.9062500,-2.0000000 C 3.9062500,-0.95010630 3.0498937,-0.093750000 2.0000000,-0.093750000 C 0.95010630,-0.093750000 0.093750000,-0.95010630 0.093750000,-2.0000000 L -0.093750000,-2.0000000 z "/>
+	<pattern name="large-circles"		width="4" height="4" d="M 0.0000000,0.0000000 L 0.0000000,1.0312500 C 0.23589023,0.55428545 0.55428545,0.23589023 1.0312500,0.0000000 L 0.0000000,0.0000000 z M 2.9687500,0.0000000 C 3.4457145,0.23589023 3.7641098,0.55428545 4.0000000,1.0312500 L 4.0000000,0.0000000 L 2.9687500,0.0000000 z M 2.0000000,1.0000000 C 1.4430903,1.0000000 1.0000000,1.4430903 1.0000000,2.0000000 C 1.0000000,2.5569097 1.4430903,3.0000000 2.0000000,3.0000000 C 2.5569097,3.0000000 3.0000000,2.5569097 3.0000000,2.0000000 C 3.0000000,1.4430903 2.5569097,1.0000000 2.0000000,1.0000000 z M 0.0000000,2.9687500 L 0.0000000,4.0000000 L 1.0312500,4.0000000 C 0.55428545,3.7641098 0.23589023,3.4457145 0.0000000,2.9687500 z M 4.0000000,2.9687500 C 3.7641098,3.4457145 3.4457145,3.7641098 2.9687500,4.0000000 L 4.0000000,4.0000000 L 4.0000000,2.9687500 z "/>
+	<pattern name="small-circles"		width="2" height="2" d="M 1.0000000,-0.093750000 C 0.39389372,-0.093750000 -0.093750000,0.39389372 -0.093750000,1.0000000 C -0.093750000,1.6061063 0.39389372,2.0937500 1.0000000,2.0937500 C 1.6061063,2.0937500 2.0937500,1.6061063 2.0937500,1.0000000 C 2.0937500,0.39389372 1.6061063,-0.093750000 1.0000000,-0.093750000 z M 1.0000000,0.093750000 C 1.4978937,0.093750000 1.9062500,0.50210628 1.9062500,1.0000000 C 1.9062500,1.4978937 1.4978937,1.9062500 1.0000000,1.9062500 C 0.50210628,1.9062500 0.093750000,1.4978937 0.093750000,1.0000000 C 0.093750000,0.50210628 0.50210628,0.093750000 1.0000000,0.093750000 z "/>
+	<pattern name="bricks"			width="4" height="4" d="M 0.0000000,0.0000000 L 0.0000000,0.100000000 L 0.90000000,0.100000000 L 0.90000000,1.9000000 L 0.0000000,1.9000000 L 0.0000000,2.1000000 L 2.9000000,2.1000000 L 2.9000000,3.9000000 L 0.0000000,3.9000000 L 0.0000000,4.0000000 L 4.0000000,4.0000000 L 4.0000000,3.9000000 L 3.1000000,3.9000000 L 3.1000000,2.1000000 L 4.0000000,2.1000000 L 4.0000000,1.9000000 L 1.1000000,1.9000000 L 1.1000000,0.100000000 L 4.0000000,0.100000000 L 4.0000000,0.0000000 L 0.0000000,0.0000000 z "/>
+	<pattern name="thatch"			width="4" height="4" d="M 1.0000000,0.0000000 L 0.0000000,1.0000000 L 0.0000000,3.0000000 L 0.90000000,2.1000000 L 1.9000000,3.1000000 L 1.0000000,4.0000000 L 3.0000000,4.0000000 L 4.0000000,3.0000000 L 4.0000000,1.0000000 L 3.1000000,1.9000000 L 2.1000000,0.90000000 L 3.0000000,0.0000000 L 1.0000000,0.0000000 z M 1.1000000,0.100000000 L 3.9000000,2.9000000 L 2.9000000,3.9000000 L 0.10000000,1.1000000 L 1.1000000,0.100000000 z "/>
+</patterns>
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,24 @@
+#include <goffice/goffice-config.h>
+#include "win32-stub.h"
+#include <urlmon.h>
+
+HWND HtmlHelp_ (HWND    hwndCaller,
+		LPCSTR  pszFile,
+		UINT    uCommand,
+		DWORD   dwData)
+{
+	return HtmlHelp (hwndCaller, pszFile, uCommand, dwData);
+}
+
+HRESULT FindMimeFromData_(LPBC    pBC,
+			  LPCWSTR pwzUrl,
+			  LPVOID  pBuffer,
+			  DWORD   cbSize,
+			  LPCWSTR pwzMimeProposed,
+			  DWORD   dwMimeFlags,
+			  LPWSTR *ppwzMimeOut,
+			  DWORD   dwReserved)
+{
+	return FindMimeFromData (pBC, pwzUrl, pBuffer, cbSize, pwzMimeProposed,
+				 dwMimeFlags, ppwzMimeOut, dwReserved);
+}


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.c
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,21 @@
+#ifndef _HTMLHELP_STUB_h_
+#define _HTMLHELP_STUB_h_
+
+#include <windows.h>
+#include <htmlhelp.h>
+
+HWND HtmlHelp_ (HWND    hwndCaller,
+		LPCSTR  pszFile,
+		UINT    uCommand,
+		DWORD   dwData);
+
+HRESULT FindMimeFromData_(LPBC    pBC,
+			  LPCWSTR pwzUrl,
+			  LPVOID  pBuffer,
+			  DWORD   cbSize,
+			  LPCWSTR pwzMimeProposed,
+			  DWORD   dwMimeFlags,
+			  LPWSTR *ppwzMimeOut,
+			  DWORD   dwReserved);
+
+#endif


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice/utils/win32-stub.h
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice-plugins.mk
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice-plugins.mk	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice-plugins.mk	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,6 @@
+AM_CPPFLAGS = \
+    -I$(top_srcdir)/lib/goffice-0.0.4		\
+    -I$(top_builddir)/lib/goffice-0.0.4		\
+    $(GOFFICE_DEPS_CFLAGS)
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice.mk
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice.mk	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/goffice.mk	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,7 @@
+AM_CPPFLAGS = \
+	-I$(top_builddir)/lib/goffice-0.0.4		\
+	-I$(top_srcdir)/lib/goffice-0.0.4		\
+	$(GOFFICE_DEPS_CFLAGS)
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/install-sh
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/install-sh	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/install-sh	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+#
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd=$cpprog
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd=$stripprog
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "$0: no input file specified" >&2
+	exit 1
+else
+	:
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+
+	if [ -d "$dst" ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=$mkdirprog
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f "$src" ] || [ -d "$src" ]
+	then
+		:
+	else
+		echo "$0: $src does not exist" >&2
+		exit 1
+	fi
+
+	if [ x"$dst" = x ]
+	then
+		echo "$0: no destination specified" >&2
+		exit 1
+	else
+		:
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d "$dst" ]
+	then
+		dst=$dst/`basename "$src"`
+	else
+		:
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+	'
+IFS="${IFS-$defaultIFS}"
+
+oIFS=$IFS
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS=$oIFS
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp=$pathcomp$1
+	shift
+
+	if [ ! -d "$pathcomp" ] ;
+        then
+		$mkdirprog "$pathcomp"
+	else
+		:
+	fi
+
+	pathcomp=$pathcomp/
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd "$dst" &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		dstfile=`basename "$dst" $transformbasename |
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		:
+	fi
+
+# Make a couple of temp file names in the proper directory.
+
+	dsttmp=$dstdir/_inst.$$_
+	rmtmp=$dstdir/_rm.$$_
+
+# Trap to clean up temp files at exit.
+
+	trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+	trap '(exit $?); exit' 1 2 13 15
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd "$src" "$dsttmp" &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
+
+# Now remove or move aside any old file at destination location.  We try this
+# two ways since rm can't unlink itself on some systems and the destination
+# file might be busy for other reasons.  In this case, the final cleanup
+# might fail but the new file should still install successfully.
+
+{
+	if [ -f "$dstdir/$dstfile" ]
+	then
+		$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
+		$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
+		{
+		  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		  (exit 1); exit
+		}
+	else
+		:
+	fi
+} &&
+
+# Now rename the file to the real destination.
+
+	$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+
+fi &&
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+
+{
+	(exit 0); exit
+}


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/install-sh
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-extract.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-extract.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-extract.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,839 @@
+#!@INTLTOOL_PERL@ -w 
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Extractor
+#
+#  Copyright (C) 2000-2001, 2003 Free Software Foundation.
+#
+#  Intltool 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.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#  As a special exception to the GNU General Public License, if you
+#  distribute this file as part of a program that contains a
+#  configuration script generated by Autoconf, you may include it under
+#  the same distribution terms that you use for the rest of that program.
+#
+#  Authors: Kenneth Christiansen <kenneth at gnu.org>
+#           Darin Adler <darin at bentspoon.com>
+#
+
+## Release information
+my $PROGRAM      = "intltool-extract";
+my $PACKAGE      = "intltool";
+my $VERSION      = "0.34.1";
+
+## Loaded modules
+use strict; 
+use File::Basename;
+use Getopt::Long;
+
+## Scalars used by the option stuff
+my $TYPE_ARG	= "0";
+my $LOCAL_ARG	= "0";
+my $HELP_ARG 	= "0";
+my $VERSION_ARG = "0";
+my $UPDATE_ARG  = "0";
+my $QUIET_ARG   = "0";
+my $SRCDIR_ARG	= ".";
+
+my $FILE;
+my $OUTFILE;
+
+my $gettext_type = "";
+my $input;
+my %messages = ();
+my %loc = ();
+my %count = ();
+my %comments = ();
+my $strcount = 0;
+
+my $XMLCOMMENT = "";
+
+## Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+## Always print first
+$| = 1;
+
+## Handle options
+GetOptions (
+	    "type=s"     => \$TYPE_ARG,
+            "local|l"    => \$LOCAL_ARG,
+            "help|h"     => \$HELP_ARG,
+            "version|v"  => \$VERSION_ARG,
+            "update"     => \$UPDATE_ARG,
+	    "quiet|q"    => \$QUIET_ARG,
+	    "srcdir=s"	 => \$SRCDIR_ARG,
+            ) or &error;
+
+&split_on_argument;
+
+
+## Check for options. 
+## This section will check for the different options.
+
+sub split_on_argument {
+
+    if ($VERSION_ARG) {
+        &version;
+
+    } elsif ($HELP_ARG) {
+	&help;
+        
+    } elsif ($LOCAL_ARG) {
+        &place_local;
+        &extract;
+
+    } elsif ($UPDATE_ARG) {
+	&place_normal;
+	&extract;
+
+    } elsif (@ARGV > 0) {
+	&place_normal;
+	&message;
+	&extract;
+
+    } else {
+	&help;
+
+    }  
+}    
+
+sub place_normal {
+    $FILE	 = $ARGV[0];
+    $OUTFILE     = "$FILE.h";
+}   
+
+sub place_local {
+    $FILE	 = $ARGV[0];
+    $OUTFILE     = fileparse($FILE, ());
+    if (!-e "tmp/") { 
+        system("mkdir tmp/"); 
+    }
+    $OUTFILE     = "./tmp/$OUTFILE.h"
+}
+
+sub determine_type {
+   if ($TYPE_ARG =~ /^gettext\/(.*)/) {
+	$gettext_type=$1
+   }
+}
+
+## Sub for printing release information
+sub version{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+Written by Kenneth Christiansen, 2000.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+## Sub for printing usage information
+sub help {
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... [FILENAME]
+Generates a header file from an XML source file.
+
+It grabs all strings between <_translatable_node> and its end tag in
+XML files. Read manpage (man ${PROGRAM}) for more info.
+
+      --type=TYPE   Specify the file type of FILENAME. Currently supports:
+                    "gettext/glade", "gettext/ini", "gettext/keys"
+                    "gettext/rfc822deb", "gettext/schemas",
+                    "gettext/scheme", "gettext/xml"
+  -l, --local       Writes output into current working directory
+                    (conflicts with --update)
+      --update      Writes output into the same directory the source file 
+                    reside (conflicts with --local)
+      --srcdir      Root of the source tree
+  -v, --version     Output version information and exit
+  -h, --help        Display this help and exit
+  -q, --quiet       Quiet mode
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+## Sub for printing error messages
+sub error{
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit;
+}
+
+sub message {
+    print "Generating C format header file for translation.\n" unless $QUIET_ARG;
+}
+
+sub extract {
+    &determine_type;
+
+    &convert;
+
+    open OUT, ">$OUTFILE";
+    binmode (OUT) if $^O eq 'MSWin32';
+    &msg_write;
+    close OUT;
+
+    print "Wrote $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub convert {
+
+    ## Reading the file
+    {
+	local (*IN);
+	local $/; #slurp mode
+	open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!";
+	$input = <IN>;
+    }
+
+    &type_ini if $gettext_type eq "ini";
+    &type_keys if $gettext_type eq "keys";
+    &type_xml if $gettext_type eq "xml";
+    &type_glade if $gettext_type eq "glade";
+    &type_scheme if $gettext_type eq "scheme";
+    &type_schemas  if $gettext_type eq "schemas";
+    &type_rfc822deb  if $gettext_type eq "rfc822deb";
+}
+
+sub entity_decode_minimal
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+
+    return $_;
+}
+
+sub entity_decode
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+    s/&lt;/</g;
+    s/&gt;/>/g;
+
+    return $_;
+}
+
+sub escape_char
+{
+    return '\"' if $_ eq '"';
+    return '\n' if $_ eq "\n";
+    return '\\' if $_ eq '\\';
+
+    return $_;
+}
+
+sub escape
+{
+    my ($string) = @_;
+    return join "", map &escape_char, split //, $string;
+}
+
+sub type_ini {
+    ### For generic translatable desktop files ###
+    while ($input =~ /^_.*=(.*)$/mg) {
+        $messages{$1} = [];
+    }
+}
+
+sub type_keys {
+    ### For generic translatable mime/keys files ###
+    while ($input =~ /^\s*_\w+=(.*)$/mg) {
+        $messages{$1} = [];
+    }
+}
+
+sub type_xml {
+    ### For generic translatable XML files ###
+    my $tree = readXml($input);
+    parseTree(0, $tree);
+}
+
+sub print_var {
+    my $var = shift;
+    my $vartype = ref $var;
+    
+    if ($vartype =~ /ARRAY/) {
+        my @arr = @{$var};
+        print "[ ";
+        foreach my $el (@arr) {
+            print_var($el);
+            print ", ";
+        }
+        print "] ";
+    } elsif ($vartype =~ /HASH/) {
+        my %hash = %{$var};
+        print "{ ";
+        foreach my $key (keys %hash) {
+            print "$key => ";
+            print_var($hash{$key});
+            print ", ";
+        }
+        print "} ";
+    } else {
+        print $var;
+    }
+}
+
+# Same syntax as getAttributeString in intltool-merge.in.in, similar logic (look for ## differences comment)
+sub getAttributeString
+{
+    my $sub = shift;
+    my $do_translate = shift || 1;
+    my $language = shift || "";
+    my $translate = shift;
+    my $result = "";
+    foreach my $e (reverse(sort(keys %{ $sub }))) {
+	my $key    = $e;
+	my $string = $sub->{$e};
+	my $quote = '"';
+	
+	$string =~ s/^[\s]+//;
+	$string =~ s/[\s]+$//;
+	
+	if ($string =~ /^'.*'$/)
+	{
+	    $quote = "'";
+	}
+	$string =~ s/^['"]//g;
+	$string =~ s/['"]$//g;
+
+        ## differences from intltool-merge.in.in
+	if ($key =~ /^_/) {
+            $comments{entity_decode($string)} = $XMLCOMMENT if $XMLCOMMENT;
+            $messages{entity_decode($string)} = [];
+            $$translate = 2;
+	}
+        ## differences end here from intltool-merge.in.in
+	$result .= " $key=$quote$string$quote";
+    }
+    return $result;
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub getXMLstring
+{
+    my $ref = shift;
+    my $spacepreserve = shift || 0;
+    my @list = @{ $ref };
+    my $result = "";
+
+    my $count = scalar(@list);
+    my $attrs = $list[0];
+    my $index = 1;
+
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+    $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+
+    while ($index < $count) {
+	my $type = $list[$index];
+	my $content = $list[$index+1];
+        if (! $type ) {
+	    # We've got CDATA
+	    if ($content) {
+		# lets strip the whitespace here, and *ONLY* here
+                $content =~ s/\s+/ /gs if (!$spacepreserve);
+		$result .= $content;
+	    }
+	} elsif ( "$type" ne "1" ) {
+	    # We've got another element
+	    $result .= "<$type";
+	    $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements
+	    if ($content) {
+		my $subresult = getXMLstring($content, $spacepreserve);
+		if ($subresult) {
+		    $result .= ">".$subresult . "</$type>";
+		} else {
+		    $result .= "/>";
+		}
+	    } else {
+		$result .= "/>";
+	    }
+	}
+	$index += 2;
+    }
+    return $result;
+}
+
+# Verbatim copy from intltool-merge.in.in, except for MULTIPLE_OUTPUT handling removed
+# Translate list of nodes if necessary
+sub translate_subnodes
+{
+    my $fh = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $singlelang = shift || 0;
+    my $spacepreserve = shift || 0;
+
+    my @nodes = @{ $content };
+
+    my $count = scalar(@nodes);
+    my $index = 0;
+    while ($index < $count) {
+        my $type = $nodes[$index];
+        my $rest = $nodes[$index+1];
+        traverse($fh, $type, $rest, $language, $spacepreserve);
+        $index += 2;
+    }
+}
+
+# Based on traverse() in intltool-merge.in.in
+sub traverse
+{
+    my $fh = shift; # unused, to allow us to sync code between -merge and -extract
+    my $nodename = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $spacepreserve = shift || 0;
+
+    if ($nodename && "$nodename" eq "1") {
+        $XMLCOMMENT = $content;
+    } elsif ($nodename) {
+	# element
+	my @all = @{ $content };
+	my $attrs = shift @all;
+	my $translate = 0;
+	my $outattr = getAttributeString($attrs, 1, $language, \$translate);
+
+	if ($nodename =~ /^_/) {
+	    $translate = 1;
+	    $nodename =~ s/^_//;
+	}
+	my $lookup = '';
+
+        $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+        $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+	if ($translate) {
+	    $lookup = getXMLstring($content, $spacepreserve);
+            if (!$spacepreserve) {
+                $lookup =~ s/^\s+//s;
+                $lookup =~ s/\s+$//s;
+            }
+
+	    if ($lookup && $translate != 2) {
+                $comments{$lookup} = $XMLCOMMENT if $XMLCOMMENT;
+                $messages{$lookup} = [];
+            } elsif ($translate == 2) {
+                translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
+	    }
+	} else {
+            $XMLCOMMENT = "";
+	    my $count = scalar(@all);
+	    if ($count > 0) {
+                my $index = 0;
+                while ($index < $count) {
+                    my $type = $all[$index];
+                    my $rest = $all[$index+1];
+                    traverse($fh, $type, $rest, $language, $spacepreserve);
+                    $index += 2;
+                }
+	    }
+	}
+        $XMLCOMMENT = "";
+    }
+}
+
+
+# Verbatim copy from intltool-merge.in.in, $fh for compatibility
+sub parseTree
+{
+    my $fh        = shift;
+    my $ref       = shift;
+    my $language  = shift || "";
+
+    my $name = shift @{ $ref };
+    my $cont = shift @{ $ref };
+
+    while (!$name || "$name" eq "1") {
+        $name = shift @{ $ref };
+        $cont = shift @{ $ref };
+    }
+
+    my $spacepreserve = 0;
+    my $attrs = @{$cont}[0];
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+    traverse($fh, $name, $cont, $language, $spacepreserve);
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_comment
+{
+    my $expat = shift;
+    my $data  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 1 => $data;
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_cdatastart
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 0 => $expat->original_string();
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_cdataend
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    $clist->[$pos] .= $expat->original_string();
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_char
+{
+    my $expat = shift;
+    my $text  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    # Use original_string so that we retain escaped entities
+    # in CDATA sections.
+    #
+    if ($pos > 0 and $clist->[$pos - 1] eq '0') {
+        $clist->[$pos] .= $expat->original_string();
+    } else {
+        push @$clist, 0 => $expat->original_string();
+    }
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_start
+{
+    my $expat    = shift;
+    my $tag      = shift;
+    my @origlist = ();
+
+    # Use original_string so that we retain escaped entities
+    # in attribute values.  We must convert the string to an
+    # @origlist array to conform to the structure of the Tree
+    # Style.
+    #
+    my @original_array = split /\x/, $expat->original_string();
+    my $source         = $expat->original_string();
+
+    # Remove leading tag.
+    #
+    $source =~ s|^\s*<\s*(\S+)||s;
+
+    # Grab attribute key/value pairs and push onto @origlist array.
+    #
+    while ($source)
+    {
+       if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
+           push @origlist, $1;
+           push @origlist, '"' . $2 . '"';
+       }
+       elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
+           push @origlist, $1;
+           push @origlist, "'" . $2 . "'";
+       }
+       else
+       {
+           last;
+       }
+    }
+
+    my $ol = [ { @origlist } ];
+
+    push @{ $expat->{Lists} }, $expat->{Curlist};
+    push @{ $expat->{Curlist} }, $tag => $ol;
+    $expat->{Curlist} = $ol;
+}
+
+# Copied from intltool-merge.in.in and added comment handler.
+sub readXml
+{
+    my $xmldoc = shift || return;
+    my $ret = eval 'require XML::Parser';
+    if(!$ret) {
+        die "You must have XML::Parser installed to run $0\n\n";
+    }
+    my $xp = new XML::Parser(Style => 'Tree');
+    $xp->setHandlers(Char => \&intltool_tree_char);
+    $xp->setHandlers(Start => \&intltool_tree_start);
+    $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart);
+    $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend);
+
+    ## differences from intltool-merge.in.in
+    $xp->setHandlers(Comment => \&intltool_tree_comment);
+    ## differences end here from intltool-merge.in.in
+
+    my $tree = $xp->parse($xmldoc);
+    #print_var($tree);
+
+# <foo><!-- comment --><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
+# would be:
+# [foo, [{}, 1, "comment", head, [{id => "a"}, 0, "Hello ",  em, [{}, 0, "there"]], bar, 
+# [{}, 0, "Howdy",  ref, [{}]], 0, "do" ] ]
+
+    return $tree;
+}
+
+sub type_schemas {
+    ### For schemas XML files ###
+         
+    # FIXME: We should handle escaped < (less than)
+    while ($input =~ /
+                      <locale\ name="C">\s*
+                          (<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)?
+                          (<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)?
+                          (<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)?
+                      <\/locale>
+                     /sgx) {
+        my @totranslate = ($3,$6,$9);
+        my @eachcomment = ($2,$5,$8);
+        foreach (@totranslate) {
+            my $currentcomment = shift @eachcomment;
+            next if !$_;
+            s/\s+/ /g;
+            $messages{entity_decode_minimal($_)} = [];
+            $comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment));
+        }
+    }
+}
+
+sub type_rfc822deb {
+    ### For rfc822-style Debian configuration files ###
+
+    my $lineno = 1;
+    my $type = '';
+    while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg)
+    {
+        my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5);
+        while ($pre =~ m/\n/g)
+        {
+            $lineno ++;
+        }
+        $lineno += length($newline);
+        my @str_list = rfc822deb_split(length($underscore), $text);
+        for my $str (@str_list)
+        {
+            $strcount++;
+            $messages{$str} = [];
+            $loc{$str} = $lineno;
+            $count{$str} = $strcount;
+            my $usercomment = '';
+            while($pre =~ s/(^|\n)#([^\n]*)$//s)
+            {
+                $usercomment = "\n" . $2 . $usercomment;
+            }
+            $comments{$str} = $tag . $usercomment;
+        }
+        $lineno += ($text =~ s/\n//g);
+    }
+}
+
+sub rfc822deb_split {
+    # Debian defines a special way to deal with rfc822-style files:
+    # when a value contain newlines, it consists of
+    #   1.  a short form (first line)
+    #   2.  a long description, all lines begin with a space,
+    #       and paragraphs are separated by a single dot on a line
+    # This routine returns an array of all paragraphs, and reformat
+    # them.
+    # When first argument is 2, the string is a comma separated list of
+    # values.
+    my $type = shift;
+    my $text = shift;
+    $text =~ s/^[ \t]//mg;
+    return (split(/, */, $text, 0)) if $type ne 1;
+    return ($text) if $text !~ /\n/;
+
+    $text =~ s/([^\n]*)\n//;
+    my @list = ($1);
+    my $str = '';
+    for my $line (split (/\n/, $text))
+    {
+        chomp $line;
+        if ($line =~ /^\.\s*$/)
+        {
+            #  New paragraph
+            $str =~ s/\s*$//;
+            push(@list, $str);
+            $str = '';
+        }
+        elsif ($line =~ /^\s/)
+        {
+            #  Line which must not be reformatted
+            $str .= "\n" if length ($str) && $str !~ /\n$/;
+            $line =~ s/\s+$//;
+            $str .= $line."\n";
+        }
+        else
+        {
+            #  Continuation line, remove newline
+            $str .= " " if length ($str) && $str !~ /\n$/;
+            $str .= $line;
+        }
+    }
+    $str =~ s/\s*$//;
+    push(@list, $str) if length ($str);
+    return @list;
+}
+
+sub type_glade {
+    ### For translatable Glade XML files ###
+
+    my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message";
+
+    while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) {
+	# Glade sometimes uses tags that normally mark translatable things for
+        # little bits of non-translatable content. We work around this by not
+        # translating strings that only includes something like label4 or window1.
+	$messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/;
+    }
+    
+    while ($input =~ /<items>(..[^<]*)<\/items>/sg) {
+	for my $item (split (/\n/, $1)) {
+	    $messages{entity_decode($item)} = [];
+	}
+    }
+
+    ## handle new glade files
+    while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) {
+	$messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/;
+        if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) {
+	   $comments{entity_decode($3)} = entity_decode($2) ;
+        }
+    }
+    while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) {
+        $messages{entity_decode_minimal($2)} = [];
+    }
+}
+
+sub type_scheme {
+    my ($line, $i, $state, $str, $trcomment, $char);
+    for $line (split(/\n/, $input)) {
+        $i = 0;
+        $state = 0; # 0 - nothing, 1 - string, 2 - translatable string
+        while ($i < length($line)) {
+            if (substr($line,$i,1) eq "\"") {
+                if ($state == 2) {
+                    $comments{$str} = $trcomment if ($trcomment);
+                    $messages{$str} = [];
+                    $str = '';
+                    $state = 0; $trcomment = "";
+                } elsif ($state == 1) {
+                    $str = '';
+                    $state = 0; $trcomment = "";
+                } else {
+                    $state = 1;
+                    $str = '';
+                    if ($i>0 && substr($line,$i-1,1) eq '_') {
+                        $state = 2;
+                    }
+                }
+            } elsif (!$state) {
+                if (substr($line,$i,1) eq ";") {
+                    $trcomment = substr($line,$i+1);
+                    $trcomment =~ s/^;*\s*//;
+                    $i = length($line);
+                } elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) {
+                    $trcomment = "";
+                }
+            } else {
+                if (substr($line,$i,1) eq "\\") {
+                    $char = substr($line,$i+1,1);
+                    if ($char ne "\"" && $char ne "\\") {
+                       $str = $str . "\\";
+                    }
+                    $i++;
+                }
+                $str = $str . substr($line,$i,1);
+            }
+            $i++;
+        }
+    }
+}
+
+sub msg_write {
+    my @msgids;
+    if (%count)
+    {
+        @msgids = sort { $count{$a} <=> $count{$b} } keys %count;
+    }
+    else
+    {
+        @msgids = sort keys %messages;
+    }
+    for my $message (@msgids)
+    {
+	my $offsetlines = 1;
+	$offsetlines++ if $message =~ /%/;
+	if (defined ($comments{$message}))
+	{
+		while ($comments{$message} =~ m/\n/g)
+		{
+		    $offsetlines++;
+		}
+	}
+	print OUT "# ".($loc{$message} - $offsetlines).  " \"$FILE\"\n"
+	        if defined $loc{$message};
+   	print OUT "/* ".$comments{$message}." */\n"
+                if defined $comments{$message};
+   	print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/;
+        
+    	my @lines = split (/\n/, $message, -1);
+    	for (my $n = 0; $n < @lines; $n++)
+	{
+            if ($n == 0)
+            {
+ 		print OUT "char *s = N_(\""; 
+            }
+            else
+            {  
+                print OUT "             \""; 
+            }
+
+            print OUT escape($lines[$n]);
+
+            if ($n < @lines - 1)
+            {
+                print OUT "\\n\"\n"; 
+            }
+            else
+            {
+                print OUT "\");\n";  
+	    }
+        }
+    }
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-merge.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-merge.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-merge.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1356 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Merger
+#
+#  Copyright (C) 2000, 2003 Free Software Foundation.
+#  Copyright (C) 2000, 2001 Eazel, Inc
+#
+#  Intltool is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License 
+#  version 2 published by the Free Software Foundation.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#  As a special exception to the GNU General Public License, if you
+#  distribute this file as part of a program that contains a
+#  configuration script generated by Autoconf, you may include it under
+#  the same distribution terms that you use for the rest of that program.
+#
+#  Authors:  Maciej Stachowiak <mjs at noisehavoc.org>
+#            Kenneth Christiansen <kenneth at gnu.org>
+#            Darin Adler <darin at bentspoon.com>
+#
+#  Proper XML UTF-8'ification written by Cyrille Chepelov <chepelov at calixo.net>
+#
+
+## Release information
+my $PROGRAM = "intltool-merge";
+my $PACKAGE = "intltool";
+my $VERSION = "0.34.1";
+
+## Loaded modules
+use strict; 
+use Getopt::Long;
+use Text::Wrap;
+use File::Basename;
+
+my $must_end_tag      = -1;
+my $last_depth        = -1;
+my $translation_depth = -1;
+my @tag_stack = ();
+my @entered_tag = ();
+my @translation_strings = ();
+my $leading_space = "";
+
+## Scalars used by the option stuff
+my $HELP_ARG = 0;
+my $VERSION_ARG = 0;
+my $BA_STYLE_ARG = 0;
+my $XML_STYLE_ARG = 0;
+my $KEYS_STYLE_ARG = 0;
+my $DESKTOP_STYLE_ARG = 0;
+my $SCHEMAS_STYLE_ARG = 0;
+my $RFC822DEB_STYLE_ARG = 0;
+my $QUIET_ARG = 0;
+my $PASS_THROUGH_ARG = 0;
+my $UTF8_ARG = 0;
+my $MULTIPLE_OUTPUT = 0;
+my $cache_file;
+
+## Handle options
+GetOptions 
+(
+ "help" => \$HELP_ARG,
+ "version" => \$VERSION_ARG,
+ "quiet|q" => \$QUIET_ARG,
+ "oaf-style|o" => \$BA_STYLE_ARG, ## for compatibility
+ "ba-style|b" => \$BA_STYLE_ARG,
+ "xml-style|x" => \$XML_STYLE_ARG,
+ "keys-style|k" => \$KEYS_STYLE_ARG,
+ "desktop-style|d" => \$DESKTOP_STYLE_ARG,
+ "schemas-style|s" => \$SCHEMAS_STYLE_ARG,
+ "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG,
+ "pass-through|p" => \$PASS_THROUGH_ARG,
+ "utf8|u" => \$UTF8_ARG,
+ "multiple-output|m" => \$MULTIPLE_OUTPUT,
+ "cache|c=s" => \$cache_file
+ ) or &error;
+
+my $PO_DIR;
+my $FILE;
+my $OUTFILE;
+
+my %po_files_by_lang = ();
+my %translations = ();
+my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "/usr/bin/iconv";
+my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
+
+# Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+# XML quoted string contents
+my $q = "[^\\\"]*";
+
+## Check for options. 
+
+if ($VERSION_ARG) 
+{
+	&print_version;
+} 
+elsif ($HELP_ARG) 
+{
+	&print_help;
+} 
+elsif ($BA_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&ba_merge_translations;
+	&finalize;
+} 
+elsif ($XML_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&xml_merge_output;
+	&finalize;
+} 
+elsif ($KEYS_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&keys_merge_translations;
+	&finalize;
+} 
+elsif ($DESKTOP_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&desktop_merge_translations;
+	&finalize;
+} 
+elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&schemas_merge_translations;
+	&finalize;
+} 
+elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2) 
+{
+	&preparation;
+	&print_message;
+	&rfc822deb_merge_translations;
+	&finalize;
+} 
+else 
+{
+	&print_help;
+}
+
+exit;
+
+## Sub for printing release information
+sub print_version
+{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) ${VERSION}
+Written by Maciej Stachowiak, Darin Adler and Kenneth Christiansen.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+Copyright (C) 2000-2001 Eazel, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+## Sub for printing usage information
+sub print_help
+{
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... PO_DIRECTORY FILENAME OUTPUT_FILE
+Generates an output file that includes some localized attributes from an
+untranslated source file.
+
+Mandatory options: (exactly one must be specified)
+  -b, --ba-style         includes translations in the bonobo-activation style
+  -d, --desktop-style    includes translations in the desktop style
+  -k, --keys-style       includes translations in the keys style
+  -s, --schemas-style    includes translations in the schemas style
+  -r, --rfc822deb-style  includes translations in the RFC822 style
+  -x, --xml-style        includes translations in the standard xml style
+
+Other options:
+  -u, --utf8             convert all strings to UTF-8 before merging 
+                         (default for everything except RFC822 style)
+  -p, --pass-through     deprecated, does nothing and issues a warning
+  -m, --multiple-output  output one localized file per locale, instead of 
+	                 a single file containing all localized elements
+  -c, --cache=FILE       specify cache file name
+                         (usually \$top_builddir/po/.intltool-merge-cache)
+  -q, --quiet            suppress most messages
+      --help             display this help and exit
+      --version          output version information and exit
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+
+## Sub for printing error messages
+sub print_error
+{
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit;
+}
+
+
+sub print_message 
+{
+    print "Merging translations into $OUTFILE.\n" unless $QUIET_ARG;
+}
+
+
+sub preparation 
+{
+    $PO_DIR = $ARGV[0];
+    $FILE = $ARGV[1];
+    $OUTFILE = $ARGV[2];
+
+    &gather_po_files;
+    &get_translation_database;
+}
+
+# General-purpose code for looking up translations in .po files
+
+sub po_file2lang
+{
+    my ($tmp) = @_; 
+    $tmp =~ s/^.*\/(.*)\.po$/$1/; 
+    return $tmp; 
+}
+
+sub gather_po_files
+{
+    for my $po_file (glob "$PO_DIR/*.po") {
+	$po_files_by_lang{po_file2lang($po_file)} = $po_file;
+    }
+}
+
+sub get_local_charset
+{
+    my ($encoding) = @_;
+    my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "/usr/lib/charset.alias";
+
+    # seek character encoding aliases in charset.alias (glib)
+
+    if (open CHARSET_ALIAS, $alias_file) 
+    {
+	while (<CHARSET_ALIAS>) 
+        {
+            next if /^\#/;
+            return $1 if (/^\s*([-._a-zA-Z0-9]+)\s+$encoding\b/i)
+        }
+
+        close CHARSET_ALIAS;
+    }
+
+    # if not found, return input string
+
+    return $encoding;
+}
+
+sub get_po_encoding
+{
+    my ($in_po_file) = @_;
+    my $encoding = "";
+
+    open IN_PO_FILE, $in_po_file or die;
+    while (<IN_PO_FILE>) 
+    {
+        ## example: "Content-Type: text/plain; charset=ISO-8859-1\n"
+        if (/Content-Type\:.*charset=([-a-zA-Z0-9]+)\\n/) 
+        {
+            $encoding = $1; 
+            last;
+        }
+    }
+    close IN_PO_FILE;
+
+    if (!$encoding) 
+    {
+        print STDERR "Warning: no encoding found in $in_po_file. Assuming ISO-8859-1\n" unless $QUIET_ARG;
+        $encoding = "ISO-8859-1";
+    }
+
+    system ("$iconv -f $encoding -t UTF-8 <$devnull 2>$devnull");
+    if ($?) {
+	$encoding = get_local_charset($encoding);
+    }
+
+    return $encoding
+}
+
+sub utf8_sanity_check 
+{
+    print STDERR "Warning: option --pass-through has been removed.\n" if $PASS_THROUGH_ARG;
+    $UTF8_ARG = 1;
+}
+
+sub get_translation_database
+{
+    if ($cache_file) {
+	&get_cached_translation_database;
+    } else {
+        &create_translation_database;
+    }
+}
+
+sub get_newest_po_age
+{
+    my $newest_age;
+
+    foreach my $file (values %po_files_by_lang) 
+    {
+	my $file_age = -M $file;
+	$newest_age = $file_age if !$newest_age || $file_age < $newest_age;
+    }
+
+    $newest_age = 0 if !$newest_age;
+
+    return $newest_age;
+}
+
+sub create_cache
+{
+    print "Generating and caching the translation database\n" unless $QUIET_ARG;
+
+    &create_translation_database;
+
+    open CACHE, ">$cache_file" || die;
+    print CACHE join "\x01", %translations;
+    close CACHE;
+}
+
+sub load_cache 
+{
+    print "Found cached translation database\n" unless $QUIET_ARG;
+
+    my $contents;
+    open CACHE, "<$cache_file" || die;
+    {
+        local $/;
+        $contents = <CACHE>;
+    }
+    close CACHE;
+    %translations = split "\x01", $contents;
+}
+
+sub get_cached_translation_database
+{
+    my $cache_file_age = -M $cache_file;
+    if (defined $cache_file_age) 
+    {
+        if ($cache_file_age <= &get_newest_po_age) 
+        {
+            &load_cache;
+            return;
+        }
+        print "Found too-old cached translation database\n" unless $QUIET_ARG;
+    }
+
+    &create_cache;
+}
+
+sub create_translation_database
+{
+    for my $lang (keys %po_files_by_lang) 
+    {
+    	my $po_file = $po_files_by_lang{$lang};
+
+        if ($UTF8_ARG) 
+        {
+            my $encoding = get_po_encoding ($po_file);
+
+            if (lc $encoding eq "utf-8") 
+            {
+                open PO_FILE, "<$po_file";	
+            } 
+            else 
+            {
+		print STDERR "WARNING: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;;
+
+                open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|";	
+            }
+        } 
+        else 
+        {
+            open PO_FILE, "<$po_file";	
+        }
+
+	my $nextfuzzy = 0;
+	my $inmsgid = 0;
+	my $inmsgstr = 0;
+	my $msgid = "";
+	my $msgstr = "";
+
+        while (<PO_FILE>) 
+        {
+	    $nextfuzzy = 1 if /^#, fuzzy/;
+       
+	    if (/^msgid "((\\.|[^\\])*)"/ ) 
+            {
+		$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+		$msgid = "";
+		$msgstr = "";
+
+		if ($nextfuzzy) {
+		    $inmsgid = 0;
+		} else {
+		    $msgid = unescape_po_string($1);
+		    $inmsgid = 1;
+		}
+		$inmsgstr = 0;
+		$nextfuzzy = 0;
+	    }
+
+	    if (/^msgstr "((\\.|[^\\])*)"/) 
+            {
+	        $msgstr = unescape_po_string($1);
+		$inmsgstr = 1;
+		$inmsgid = 0;
+	    }
+
+	    if (/^"((\\.|[^\\])*)"/) 
+            {
+	        $msgid .= unescape_po_string($1) if $inmsgid;
+	        $msgstr .= unescape_po_string($1) if $inmsgstr;
+	    }
+	}
+	$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+    }
+}
+
+sub finalize
+{
+}
+
+sub unescape_one_sequence
+{
+    my ($sequence) = @_;
+
+    return "\\" if $sequence eq "\\\\";
+    return "\"" if $sequence eq "\\\"";
+    return "\n" if $sequence eq "\\n";
+    return "\r" if $sequence eq "\\r";
+    return "\t" if $sequence eq "\\t";
+    return "\b" if $sequence eq "\\b";
+    return "\f" if $sequence eq "\\f";
+    return "\a" if $sequence eq "\\a";
+    return chr(11) if $sequence eq "\\v"; # vertical tab, see ascii(7)
+
+    return chr(hex($1)) if ($sequence =~ /\\x([0-9a-fA-F]{2})/);
+    return chr(oct($1)) if ($sequence =~ /\\([0-7]{3})/);
+
+    # FIXME: Is \0 supported as well? Kenneth and Rodney don't want it, see bug #48489
+
+    return $sequence;
+}
+
+sub unescape_po_string
+{
+    my ($string) = @_;
+
+    $string =~ s/(\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\.)/unescape_one_sequence($1)/eg;
+
+    return $string;
+}
+
+## NOTE: deal with < - &lt; but not > - &gt;  because it seems its ok to have 
+## > in the entity. For further info please look at #84738.
+sub entity_decode
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+    s/&lt;/</g;
+
+    return $_;
+}
+ 
+# entity_encode: (string)
+#
+# Encode the given string to XML format (encode '<' etc).
+
+sub entity_encode
+{
+    my ($pre_encoded) = @_;
+
+    my @list_of_chars = unpack ('C*', $pre_encoded);
+
+    # with UTF-8 we only encode minimalistic
+    return join ('', map (&entity_encode_int_minimalist, @list_of_chars));
+}
+
+sub entity_encode_int_minimalist
+{
+    return "&quot;" if $_ == 34;
+    return "&amp;" if $_ == 38;
+    return "&apos;" if $_ == 39;
+    return "&lt;" if $_ == 60;
+    return chr $_;
+}
+
+sub entity_encoded_translation
+{
+    my ($lang, $string) = @_;
+
+    my $translation = $translations{$lang, $string};
+    return $string if !$translation;
+    return entity_encode ($translation);
+}
+
+## XML (bonobo-activation specific) merge code
+
+sub ba_merge_translations
+{
+    my $source;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">$OUTFILE" or die "can't open $OUTFILE: $!";
+    # Binmode so that selftest works ok if using a native Win32 Perl...
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while ($source =~ s|^(.*?)([ \t]*<\s*$w+\s+($w+\s*=\s*"$q"\s*)+/?>)([ \t]*\n)?||s) 
+    {
+        print OUTPUT $1;
+
+        my $node = $2 . "\n";
+
+        my @strings = ();
+        $_ = $node;
+	while (s/(\s)_($w+\s*=\s*"($q)")/$1$2/s) {
+             push @strings, entity_decode($3);
+        }
+	print OUTPUT;
+
+	my %langs;
+	for my $string (@strings) 
+        {
+	    for my $lang (keys %po_files_by_lang) 
+            {
+                $langs{$lang} = 1 if $translations{$lang, $string};
+	    }
+	}
+	
+	for my $lang (sort keys %langs) 
+        {
+	    $_ = $node;
+	    s/(\sname\s*=\s*)"($q)"/$1"$2-$lang"/s;
+	    s/(\s)_($w+\s*=\s*")($q)"/$1 . $2 . entity_encoded_translation($lang, $3) . '"'/seg;
+	    print OUTPUT;
+        }
+    }
+
+    print OUTPUT $source;
+
+    close OUTPUT;
+}
+
+
+## XML (non-bonobo-activation) merge code
+
+
+# Process tag attributes
+#   Only parameter is a HASH containing attributes -> values mapping
+sub getAttributeString
+{
+    my $sub = shift;
+    my $do_translate = shift || 0;
+    my $language = shift || "";
+    my $result = "";
+    my $translate = shift;
+    foreach my $e (reverse(sort(keys %{ $sub }))) {
+	my $key    = $e;
+	my $string = $sub->{$e};
+	my $quote = '"';
+	
+	$string =~ s/^[\s]+//;
+	$string =~ s/[\s]+$//;
+	
+	if ($string =~ /^'.*'$/)
+	{
+	    $quote = "'";
+	}
+	$string =~ s/^['"]//g;
+	$string =~ s/['"]$//g;
+
+	if ($do_translate && $key =~ /^_/) {
+	    $key =~ s|^_||g;
+	    if ($language) {
+		# Handle translation
+		my $decode_string = entity_decode($string);
+		my $translation = $translations{$language, $decode_string};
+		if ($translation) {
+		    $translation = entity_encode($translation);
+		    $string = $translation;
+                }
+                $$translate = 2;
+            } else {
+                 $$translate = 2 if ($translate && (!$$translate)); # watch not to "overwrite" $translate
+            }
+	}
+	
+	$result .= " $key=$quote$string$quote";
+    }
+    return $result;
+}
+
+# Returns a translatable string from XML node, it works on contents of every node in XML::Parser tree
+sub getXMLstring
+{
+    my $ref = shift;
+    my $spacepreserve = shift || 0;
+    my @list = @{ $ref };
+    my $result = "";
+
+    my $count = scalar(@list);
+    my $attrs = $list[0];
+    my $index = 1;
+
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+    $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+
+    while ($index < $count) {
+	my $type = $list[$index];
+	my $content = $list[$index+1];
+        if (! $type ) {
+	    # We've got CDATA
+	    if ($content) {
+		# lets strip the whitespace here, and *ONLY* here
+                $content =~ s/\s+/ /gs if (!$spacepreserve);
+		$result .= $content;
+	    }
+	} elsif ( "$type" ne "1" ) {
+	    # We've got another element
+	    $result .= "<$type";
+	    $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements
+	    if ($content) {
+		my $subresult = getXMLstring($content, $spacepreserve);
+		if ($subresult) {
+		    $result .= ">".$subresult . "</$type>";
+		} else {
+		    $result .= "/>";
+		}
+	    } else {
+		$result .= "/>";
+	    }
+	}
+	$index += 2;
+    }
+    return $result;
+}
+
+# Translate list of nodes if necessary
+sub translate_subnodes
+{
+    my $fh = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $singlelang = shift || 0;
+    my $spacepreserve = shift || 0;
+
+    my @nodes = @{ $content };
+
+    my $count = scalar(@nodes);
+    my $index = 0;
+    while ($index < $count) {
+        my $type = $nodes[$index];
+        my $rest = $nodes[$index+1];
+        if ($singlelang) {
+            my $oldMO = $MULTIPLE_OUTPUT;
+            $MULTIPLE_OUTPUT = 1;
+            traverse($fh, $type, $rest, $language, $spacepreserve);
+            $MULTIPLE_OUTPUT = $oldMO;
+        } else {
+            traverse($fh, $type, $rest, $language, $spacepreserve);
+        }
+        $index += 2;
+    }
+}
+
+sub isWellFormedXmlFragment
+{
+    my $ret = eval 'require XML::Parser';
+    if(!$ret) {
+        die "You must have XML::Parser installed to run $0\n\n";
+    } 
+
+    my $fragment = shift;
+    return 0 if (!$fragment);
+
+    $fragment = "<root>$fragment</root>";
+    my $xp = new XML::Parser(Style => 'Tree');
+    my $tree = 0;
+    eval { $tree = $xp->parse($fragment); };
+    return $tree;
+}
+
+sub traverse
+{
+    my $fh = shift; 
+    my $nodename = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $spacepreserve = shift || 0;
+
+    if (!$nodename) {
+	if ($content =~ /^[\s]*$/) {
+	    $leading_space .= $content;
+	}
+	print $fh $content;
+    } else {
+	# element
+	my @all = @{ $content };
+	my $attrs = shift @all;
+	my $translate = 0;
+	my $outattr = getAttributeString($attrs, 1, $language, \$translate);
+
+	if ($nodename =~ /^_/) {
+	    $translate = 1;
+	    $nodename =~ s/^_//;
+	}
+	my $lookup = '';
+
+        $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+        $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+	print $fh "<$nodename", $outattr;
+	if ($translate) {
+	    $lookup = getXMLstring($content, $spacepreserve);
+            if (!$spacepreserve) {
+                $lookup =~ s/^\s+//s;
+                $lookup =~ s/\s+$//s;
+            }
+
+	    if ($lookup || $translate == 2) {
+                my $translation = $translations{$language, $lookup} if isWellFormedXmlFragment($translations{$language, $lookup});
+                if ($MULTIPLE_OUTPUT && ($translation || $translate == 2)) {
+                    $translation = $lookup if (!$translation);
+                    print $fh " xml:lang=\"", $language, "\"" if $language;
+                    print $fh ">";
+                    if ($translate == 2) {
+                        translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
+                    } else {
+                        print $fh $translation;
+                    }
+                    print $fh "</$nodename>";
+
+                    return; # this means there will be no same translation with xml:lang="$language"...
+                            # if we want them both, just remove this "return"
+                } else {
+                    print $fh ">";
+                    if ($translate == 2) {
+                        translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
+                    } else {
+                        print $fh $lookup;
+                    }
+                    print $fh "</$nodename>";
+                }
+	    } else {
+		print $fh "/>";
+	    }
+
+	    for my $lang (sort keys %po_files_by_lang) {
+                    if ($MULTIPLE_OUTPUT && $lang ne "$language") {
+                        next;
+                    }
+		    if ($lang) {
+                        # Handle translation
+                        #
+                        my $translate = 0;
+                        my $localattrs = getAttributeString($attrs, 1, $lang, \$translate);
+                        my $translation = $translations{$lang, $lookup} if isWellFormedXmlFragment($translations{$lang, $lookup});
+                        if ($translate && !$translation) {
+                            $translation = $lookup;
+                        }
+
+                        if ($translation || $translate) {
+			    print $fh "\n";
+			    $leading_space =~ s/.*\n//g;
+			    print $fh $leading_space;
+ 			    print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs, ">";
+                            if ($translate == 2) {
+                               translate_subnodes($fh, \@all, $lang, 1, $spacepreserve);
+                            } else {
+                                print $fh $translation;
+                            }
+                            print $fh "</$nodename>";
+			}
+                    }
+	    }
+
+	} else {
+	    my $count = scalar(@all);
+	    if ($count > 0) {
+		print $fh ">";
+                my $index = 0;
+                while ($index < $count) {
+                    my $type = $all[$index];
+                    my $rest = $all[$index+1];
+                    traverse($fh, $type, $rest, $language, $spacepreserve);
+                    $index += 2;
+                }
+		print $fh "</$nodename>";
+	    } else {
+		print $fh "/>";
+	    }
+	}
+    }
+}
+
+sub intltool_tree_comment
+{
+    my $expat = shift;
+    my $data  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 1 => $data;
+}
+
+sub intltool_tree_cdatastart
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 0 => $expat->original_string();
+}
+
+sub intltool_tree_cdataend
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    $clist->[$pos] .= $expat->original_string();
+}
+
+sub intltool_tree_char
+{
+    my $expat = shift;
+    my $text  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    # Use original_string so that we retain escaped entities
+    # in CDATA sections.
+    #
+    if ($pos > 0 and $clist->[$pos - 1] eq '0') {
+        $clist->[$pos] .= $expat->original_string();
+    } else {
+        push @$clist, 0 => $expat->original_string();
+    }
+}
+
+sub intltool_tree_start
+{
+    my $expat    = shift;
+    my $tag      = shift;
+    my @origlist = ();
+
+    # Use original_string so that we retain escaped entities
+    # in attribute values.  We must convert the string to an
+    # @origlist array to conform to the structure of the Tree
+    # Style.
+    #
+    my @original_array = split /\x/, $expat->original_string();
+    my $source         = $expat->original_string();
+
+    # Remove leading tag.
+    #
+    $source =~ s|^\s*<\s*(\S+)||s;
+
+    # Grab attribute key/value pairs and push onto @origlist array.
+    #
+    while ($source)
+    {
+       if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
+           push @origlist, $1;
+           push @origlist, '"' . $2 . '"';
+       }
+       elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
+           push @origlist, $1;
+           push @origlist, "'" . $2 . "'";
+       }
+       else
+       {
+           last;
+       }
+    }
+
+    my $ol = [ { @origlist } ];
+
+    push @{ $expat->{Lists} }, $expat->{Curlist};
+    push @{ $expat->{Curlist} }, $tag => $ol;
+    $expat->{Curlist} = $ol;
+}
+
+sub readXml
+{
+    my $filename = shift || return;
+    if(!-f $filename) {
+        die "ERROR Cannot find filename: $filename\n";
+    }
+
+    my $ret = eval 'require XML::Parser';
+    if(!$ret) {
+        die "You must have XML::Parser installed to run $0\n\n";
+    } 
+    my $xp = new XML::Parser(Style => 'Tree');
+    $xp->setHandlers(Char => \&intltool_tree_char);
+    $xp->setHandlers(Start => \&intltool_tree_start);
+    $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart);
+    $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend);
+    my $tree = $xp->parsefile($filename);
+
+# <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
+# would be:
+# [foo, [{}, head, [{id => "a"}, 0, "Hello ",  em, [{}, 0, "there"]], bar, [{},
+# 0, "Howdy",  ref, [{}]], 0, "do" ] ]
+
+    return $tree;
+}
+
+sub print_header
+{
+    my $infile = shift;
+    my $fh = shift;
+    my $source;
+
+    if(!-f $infile) {
+        die "ERROR Cannot find filename: $infile\n";
+    }
+
+    print $fh qq{<?xml version="1.0" encoding="UTF-8"?>\n};
+    {
+        local $/;
+        open DOCINPUT, "<${FILE}" or die;
+        $source = <DOCINPUT>;
+        close DOCINPUT;
+    }
+    if ($source =~ /(<!DOCTYPE.*\[.*\]\s*>)/s)
+    {
+        print $fh "$1\n";
+    }
+    elsif ($source =~ /(<!DOCTYPE[^>]*>)/s)
+    {
+        print $fh "$1\n";
+    }
+}
+
+sub parseTree
+{
+    my $fh        = shift;
+    my $ref       = shift;
+    my $language  = shift || "";
+
+    my $name = shift @{ $ref };
+    my $cont = shift @{ $ref };
+    
+    while (!$name || "$name" eq "1") {
+        $name = shift @{ $ref };
+        $cont = shift @{ $ref };
+    }
+
+    my $spacepreserve = 0;
+    my $attrs = @{$cont}[0];
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+    traverse($fh, $name, $cont, $language, $spacepreserve);
+}
+
+sub xml_merge_output
+{
+    my $source;
+
+    if ($MULTIPLE_OUTPUT) {
+        for my $lang (sort keys %po_files_by_lang) {
+	    if ( ! -e $lang ) {
+	        mkdir $lang or die "Cannot create subdirectory $lang: $!\n";
+            }
+            open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n";
+            binmode (OUTPUT) if $^O eq 'MSWin32';
+            my $tree = readXml($FILE);
+            print_header($FILE, \*OUTPUT);
+            parseTree(\*OUTPUT, $tree, $lang);
+            close OUTPUT;
+            print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG;
+        }
+    } 
+    open OUTPUT, ">$OUTFILE" or die "Cannot open $OUTFILE: $!\n";
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+    my $tree = readXml($FILE);
+    print_header($FILE, \*OUTPUT);
+    parseTree(\*OUTPUT, $tree);
+    close OUTPUT;
+    print "CREATED $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub keys_merge_translations
+{
+    open INPUT, "<${FILE}" or die;
+    open OUTPUT, ">${OUTFILE}" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while (<INPUT>) 
+    {
+        if (s/^(\s*)_(\w+=(.*))/$1$2/)  
+        {
+	    my $string = $3;
+
+            print OUTPUT;
+
+	    my $non_translated_line = $_;
+
+            for my $lang (sort keys %po_files_by_lang) 
+            {
+		my $translation = $translations{$lang, $string};
+                next if !$translation;
+
+                $_ = $non_translated_line;
+		s/(\w+)=.*/[$lang]$1=$translation/;
+                print OUTPUT;
+            }
+	} 
+        else 
+        {
+            print OUTPUT;
+        }
+    }
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub desktop_merge_translations
+{
+    open INPUT, "<${FILE}" or die;
+    open OUTPUT, ">${OUTFILE}" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while (<INPUT>) 
+    {
+        if (s/^(\s*)_(\w+=(.*))/$1$2/)  
+        {
+	    my $string = $3;
+
+            print OUTPUT;
+
+	    my $non_translated_line = $_;
+
+            for my $lang (sort keys %po_files_by_lang) 
+            {
+                my $translation = $translations{$lang, $string};
+                next if !$translation;
+
+                $_ = $non_translated_line;
+                s/(\w+)=.*/${1}[$lang]=$translation/;
+                print OUTPUT;
+            }
+	} 
+        else 
+        {
+            print OUTPUT;
+        }
+    }
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub schemas_merge_translations
+{
+    my $source;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">$OUTFILE" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    # FIXME: support attribute translations
+
+    # Empty nodes never need translation, so unmark all of them.
+    # For example, <_foo/> is just replaced by <foo/>.
+    $source =~ s|<\s*_($w+)\s*/>|<$1/>|g;
+
+    while ($source =~ s/
+                        (.*?)
+                        (\s+)(<locale\ name="C">(\s*)
+                            (<default>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/default>)?(\s*)
+                            (<short>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/short>)?(\s*)
+                            (<long>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/long>)?(\s*)
+                        <\/locale>)
+                       //sx) 
+    {
+        print OUTPUT $1;
+
+	my $locale_start_spaces = $2 ? $2 : '';
+	my $default_spaces = $4 ? $4 : '';
+	my $short_spaces = $7 ? $7 : '';
+	my $long_spaces = $10 ? $10 : '';
+	my $locale_end_spaces = $13 ? $13 : '';
+	my $c_default_block = $3 ? $3 : '';
+	my $default_string = $6 ? $6 : '';
+	my $short_string = $9 ? $9 : '';
+	my $long_string = $12 ? $12 : '';
+
+	print OUTPUT "$locale_start_spaces$c_default_block";
+
+        $default_string =~ s/\s+/ /g;
+        $default_string = entity_decode($default_string);
+	$short_string =~ s/\s+/ /g;
+	$short_string = entity_decode($short_string);
+	$long_string =~ s/\s+/ /g;
+	$long_string = entity_decode($long_string);
+
+	for my $lang (sort keys %po_files_by_lang) 
+        {
+	    my $default_translation = $translations{$lang, $default_string};
+	    my $short_translation = $translations{$lang, $short_string};
+	    my $long_translation  = $translations{$lang, $long_string};
+
+	    next if (!$default_translation && !$short_translation && 
+                     !$long_translation);
+
+	    print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">";
+
+        print OUTPUT "$default_spaces";    
+
+        if ($default_translation)
+        {
+            $default_translation = entity_encode($default_translation);
+            print OUTPUT "<default>$default_translation</default>";
+        }
+
+	    print OUTPUT "$short_spaces";
+
+	    if ($short_translation)
+	    {
+			$short_translation = entity_encode($short_translation);
+			print OUTPUT "<short>$short_translation</short>";
+	    }
+
+	    print OUTPUT "$long_spaces";
+
+	    if ($long_translation)
+	    {
+			$long_translation = entity_encode($long_translation);
+			print OUTPUT "<long>$long_translation</long>";
+	    }	    
+
+	    print OUTPUT "$locale_end_spaces</locale>";
+        }
+    }
+
+    print OUTPUT $source;
+
+    close OUTPUT;
+}
+
+sub rfc822deb_merge_translations
+{
+    my %encodings = ();
+    for my $lang (keys %po_files_by_lang) {
+        $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang}));
+    }
+
+    my $source;
+
+    $Text::Wrap::huge = 'overflow';
+    $Text::Wrap::break = qr/\n|\s(?=\S)/;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">${OUTFILE}" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg)
+    {
+	    my $sep = $1;
+	    my $non_translated_line = $3.$4;
+	    my $string = $5;
+	    my $underscore = length($2);
+	    next if $underscore eq 0 && $non_translated_line =~ /^#/;
+	    #  Remove [] dummy strings
+	    my $stripped = $string;
+	    $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2;
+	    $stripped =~ s/\[\s[^\[\]]*\]$//;
+	    $non_translated_line .= $stripped;
+
+	    print OUTPUT $sep.$non_translated_line;
+    
+	    if ($underscore) 
+	    {
+	        my @str_list = rfc822deb_split($underscore, $string);
+
+	        for my $lang (sort keys %po_files_by_lang) 
+                {
+                    my $is_translated = 1;
+                    my $str_translated = '';
+                    my $first = 1;
+                
+                    for my $str (@str_list) 
+                    {
+                        my $translation = $translations{$lang, $str};
+                    
+                        if (!$translation) 
+                        {
+                            $is_translated = 0;
+                            last;
+                        }
+
+	                #  $translation may also contain [] dummy
+                        #  strings, mostly to indicate an empty string
+	                $translation =~ s/\[\s[^\[\]]*\]$//;
+                        
+                        if ($first) 
+                        {
+                            if ($underscore eq 2)
+                            {
+                                $str_translated .= $translation;
+                            }
+                            else
+                            {
+                                $str_translated .=
+                                    Text::Tabs::expand($translation) .
+                                    "\n";
+                            }
+                        } 
+                        else 
+                        {
+                            if ($underscore eq 2)
+                            {
+                                $str_translated .= ', ' . $translation;
+                            }
+                            else
+                            {
+                                $str_translated .= Text::Tabs::expand(
+                                    Text::Wrap::wrap(' ', ' ', $translation)) .
+                                    "\n .\n";
+                            }
+                        }
+                        $first = 0;
+
+                        #  To fix some problems with Text::Wrap::wrap
+                        $str_translated =~ s/(\n )+\n/\n .\n/g;
+                    }
+                    next unless $is_translated;
+
+                    $str_translated =~ s/\n \.\n$//;
+                    $str_translated =~ s/\s+$//;
+
+                    $_ = $non_translated_line;
+                    s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s;
+                    print OUTPUT;
+                }
+	    }
+    }
+    print OUTPUT "\n";
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub rfc822deb_split 
+{
+    # Debian defines a special way to deal with rfc822-style files:
+    # when a value contain newlines, it consists of
+    #   1.  a short form (first line)
+    #   2.  a long description, all lines begin with a space,
+    #       and paragraphs are separated by a single dot on a line
+    # This routine returns an array of all paragraphs, and reformat
+    # them.
+    # When first argument is 2, the string is a comma separated list of
+    # values.
+    my $type = shift;
+    my $text = shift;
+    $text =~ s/^[ \t]//mg;
+    return (split(/, */, $text, 0)) if $type ne 1;
+    return ($text) if $text !~ /\n/;
+
+    $text =~ s/([^\n]*)\n//;
+    my @list = ($1);
+    my $str = '';
+
+    for my $line (split (/\n/, $text)) 
+    {
+        chomp $line;
+        if ($line =~ /^\.\s*$/)
+        {
+            #  New paragraph
+            $str =~ s/\s*$//;
+            push(@list, $str);
+            $str = '';
+        } 
+        elsif ($line =~ /^\s/) 
+        {
+            #  Line which must not be reformatted
+            $str .= "\n" if length ($str) && $str !~ /\n$/;
+            $line =~ s/\s+$//;
+            $str .= $line."\n";
+        } 
+        else 
+        {
+            #  Continuation line, remove newline
+            $str .= " " if length ($str) && $str !~ /\n$/;
+            $str .= $line;
+        }
+    }
+
+    $str =~ s/\s*$//;
+    push(@list, $str) if length ($str);
+
+    return @list;
+}
+

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-update.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-update.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/intltool-update.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1065 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Updater
+#
+#  Copyright (C) 2000-2003 Free Software Foundation.
+#
+#  Intltool is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License 
+#  version 2 published by the Free Software Foundation.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#  As a special exception to the GNU General Public License, if you
+#  distribute this file as part of a program that contains a
+#  configuration script generated by Autoconf, you may include it under
+#  the same distribution terms that you use for the rest of that program.
+#
+#  Authors: Kenneth Christiansen <kenneth at gnu.org>
+#           Maciej Stachowiak
+#           Darin Adler <darin at bentspoon.com>
+
+## Release information
+my $PROGRAM = "intltool-update";
+my $VERSION = "0.34.1";
+my $PACKAGE = "intltool";
+
+## Loaded modules
+use strict;
+use Getopt::Long;
+use Cwd;
+use File::Copy;
+use File::Find;
+
+## Scalars used by the option stuff
+my $HELP_ARG 	   = 0;
+my $VERSION_ARG    = 0;
+my $DIST_ARG	   = 0;
+my $POT_ARG	   = 0;
+my $HEADERS_ARG    = 0;
+my $MAINTAIN_ARG   = 0;
+my $REPORT_ARG     = 0;
+my $VERBOSE	   = 0;
+my $GETTEXT_PACKAGE = "";
+my $OUTPUT_FILE    = "";
+
+my @languages;
+my %varhash = ();
+my %po_files_by_lang = ();
+
+# Regular expressions to categorize file types.
+# FIXME: Please check if the following is correct
+
+my $xml_support =
+"xml(?:\\.in)*|".	# http://www.w3.org/XML/ (Note: .in is not required)
+"ui|".			# Bonobo specific - User Interface desc. files
+"lang|".		# ?
+"glade2?(?:\\.in)*|".	# Glade specific - User Interface desc. files (Note: .in is not required)
+"scm(?:\\.in)*|".	# ? (Note: .in is not required)
+"oaf(?:\\.in)+|".	# DEPRECATED: Replaces by Bonobo .server files 
+"etspec|".		# ?
+"server(?:\\.in)+|".	# Bonobo specific
+"sheet(?:\\.in)+|".	# ?
+"schemas(?:\\.in)+|".	# GConf specific
+"pong(?:\\.in)+|".	# DEPRECATED: PONG is not used [by GNOME] any longer.
+"kbd(?:\\.in)+";	# GOK specific. 
+
+my $ini_support =
+"icon(?:\\.in)+|".	# http://www.freedesktop.org/Standards/icon-theme-spec
+"desktop(?:\\.in)+|".	# http://www.freedesktop.org/Standards/menu-spec
+"caves(?:\\.in)+|".	# GNOME Games specific
+"directory(?:\\.in)+|".	# http://www.freedesktop.org/Standards/menu-spec
+"soundlist(?:\\.in)+|".	# GNOME specific
+"keys(?:\\.in)+|".	# GNOME Mime database specific
+"theme(?:\\.in)+";	# http://www.freedesktop.org/Standards/icon-theme-spec
+
+my $buildin_gettext_support = 
+"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
+
+## Always flush buffer when printing
+$| = 1;
+
+## Sometimes the source tree will be rooted somewhere else.
+my $SRCDIR = ".";
+my $POTFILES_in;
+
+$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
+$POTFILES_in = "<$SRCDIR/POTFILES.in";
+
+my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
+
+## Handle options
+GetOptions 
+(
+ "help" 	       => \$HELP_ARG,
+ "version" 	       => \$VERSION_ARG,
+ "dist|d"	       => \$DIST_ARG,
+ "pot|p"	       => \$POT_ARG,
+ "headers|s"	       => \$HEADERS_ARG,
+ "maintain|m"	       => \$MAINTAIN_ARG,
+ "report|r"	       => \$REPORT_ARG,
+ "verbose|x"	       => \$VERBOSE,
+ "gettext-package|g=s" => \$GETTEXT_PACKAGE,
+ "output-file|o=s"     => \$OUTPUT_FILE,
+ ) or &Console_WriteError_InvalidOption;
+
+&Console_Write_IntltoolHelp if $HELP_ARG;
+&Console_Write_IntltoolVersion if $VERSION_ARG;
+
+my $arg_count = ($DIST_ARG > 0)
+    + ($POT_ARG > 0)
+    + ($HEADERS_ARG > 0)
+    + ($MAINTAIN_ARG > 0)
+    + ($REPORT_ARG > 0);
+
+&Console_Write_IntltoolHelp if $arg_count > 1;
+
+# --version and --help don't require a module name
+my $MODULE = $GETTEXT_PACKAGE || &FindPackageName;
+
+if ($POT_ARG)
+{
+    &GenerateHeaders;
+    &GeneratePOTemplate;
+}
+elsif ($HEADERS_ARG)
+{
+    &GenerateHeaders;
+}
+elsif ($MAINTAIN_ARG)
+{
+    &FindLeftoutFiles;
+}
+elsif ($REPORT_ARG)
+{
+    &GenerateHeaders;
+    &GeneratePOTemplate;
+    &Console_Write_CoverageReport;
+}
+elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/)
+{
+    my $lang = $ARGV[0];
+
+    ## Report error if the language file supplied
+    ## to the command line is non-existent
+    &Console_WriteError_NotExisting("$SRCDIR/$lang.po")
+        if ! -s "$SRCDIR/$lang.po";
+
+    if (!$DIST_ARG)
+    {
+	print "Working, please wait..." if $VERBOSE;
+	&GenerateHeaders;
+	&GeneratePOTemplate;
+    }
+    &POFile_Update ($lang, $OUTPUT_FILE);
+    &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE);
+} 
+else 
+{
+    &Console_Write_IntltoolHelp;
+}
+
+exit;
+
+#########
+
+sub Console_Write_IntltoolVersion
+{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+sub Console_Write_IntltoolHelp
+{
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... LANGCODE
+Updates PO template files and merge them with the translations.
+
+Mode of operation (only one is allowed):
+  -p, --pot                   generate the PO template only
+  -s, --headers               generate the header files in POTFILES.in
+  -m, --maintain              search for left out files from POTFILES.in
+  -r, --report                display a status report for the module
+  -d, --dist                  merge LANGCODE.po with existing PO template
+
+Extra options:
+  -g, --gettext-package=NAME  override PO template name, useful with --pot
+  -o, --output-file=FILE      write merged translation to FILE
+  -x, --verbose               display lots of feedback
+      --help                  display this help and exit
+      --version               output version information and exit
+
+Examples of use:
+${PROGRAM} --pot    just create a new PO template
+${PROGRAM} xy       create new PO template and merge xy.po with it
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+sub echo_n
+{
+    my $str = shift;
+    my $ret = `echo "$str"`;
+
+    $ret =~ s/\n$//; # do we need the "s" flag?
+
+    return $ret;
+}
+
+sub POFile_DetermineType ($) 
+{
+   my $type = $_;
+   my $gettext_type;
+
+   my $xml_regex     = "(?:" . $xml_support . ")";
+   my $ini_regex     = "(?:" . $ini_support . ")";
+   my $buildin_regex = "(?:" . $buildin_gettext_support . ")";
+
+   if ($type =~ /\[type: gettext\/([^\]].*)]/) 
+   {
+	$gettext_type=$1;
+   }
+   elsif ($type =~ /schemas(\.in)+$/) 
+   {
+	$gettext_type="schemas";
+   }
+   elsif ($type =~ /glade2?(\.in)*$/) 
+   {
+       $gettext_type="glade";
+   }
+   elsif ($type =~ /scm(\.in)*$/) 
+   {
+       $gettext_type="scheme";
+   }
+   elsif ($type =~ /keys(\.in)+$/) 
+   {
+       $gettext_type="keys";
+   }
+
+   # bucket types
+
+   elsif ($type =~ /$xml_regex$/) 
+   {
+       $gettext_type="xml";
+   }
+   elsif ($type =~ /$ini_regex$/) 
+   { 
+       $gettext_type="ini";
+   }
+   elsif ($type =~ /$buildin_regex$/) 
+   {
+       $gettext_type="buildin";
+   }
+   else
+   { 
+       $gettext_type="unknown"; 
+   }
+
+   return "gettext\/$gettext_type";
+}
+
+sub TextFile_DetermineEncoding ($) 
+{
+    my $gettext_code="ASCII"; # All files are ASCII by default
+    my $filetype=`file $_ | cut -d ' ' -f 2`;
+
+    if ($? eq "0")
+    {
+	if ($filetype =~ /^(ISO|UTF)/)
+	{
+	    chomp ($gettext_code = $filetype);
+	}
+	elsif ($filetype =~ /^XML/)
+	{
+	    $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8
+	}
+    }
+
+    return $gettext_code;
+}
+
+sub isNotValidMissing
+{
+    my ($file) = @_;
+
+    return if $file =~ /^\{arch\}\/.*$/;
+    return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/;
+}
+
+sub FindLeftoutFiles
+{
+    my (@buf_i18n_plain,
+	@buf_i18n_xml,
+	@buf_i18n_xml_unmarked,
+	@buf_i18n_ini,
+	@buf_potfiles,
+	@buf_potfiles_ignore,
+	@buf_allfiles,
+	@buf_allfiles_sorted,
+	@buf_potfiles_sorted
+    );
+
+    ## Search and find all translatable files
+    find sub { 
+	push @buf_i18n_plain,        "$File::Find::name" if /\.($buildin_gettext_support)$/;
+	push @buf_i18n_xml,          "$File::Find::name" if /\.($xml_support)$/;
+	push @buf_i18n_ini,          "$File::Find::name" if /\.($ini_support)$/;
+	push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/;
+	}, "..";
+
+
+    open POTFILES, $POTFILES_in or die "$PROGRAM:  there's no POTFILES.in!\n";
+    @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>;
+    close POTFILES;
+
+    foreach (@buf_potfiles) {
+	s/^\[.*]\s*//;
+    }
+
+    print "Searching for missing translatable files...\n" if $VERBOSE;
+
+    ## Check if we should ignore some found files, when
+    ## comparing with POTFILES.in
+    foreach my $ignore ("POTFILES.skip", "POTFILES.ignore")
+    {
+	(-s $ignore) or next;
+
+	if ("$ignore" eq "POTFILES.ignore")
+	{
+	    print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n".
+		  "content of this file to POTFILES.skip.\n";
+	}
+
+	print "Found $ignore: Ignoring files...\n" if $VERBOSE;
+	open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n";
+	    
+	while (<FILE>)
+	{
+	    push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/;
+	}
+	close FILE;
+
+	@buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles);
+    }
+
+    foreach my $file (@buf_i18n_plain)
+    {
+	my $in_comment = 0;
+	my $in_macro = 0;
+
+	open FILE, "<$file";
+	while (<FILE>)
+	{
+	    # Handle continued multi-line comment.
+	    if ($in_comment)
+	    {
+		next unless s-.*\*/--;
+		$in_comment = 0;
+	    }
+
+	    # Handle continued macro.
+	    if ($in_macro)
+	    {
+		$in_macro = 0 unless /\\$/;
+		next;
+	    }
+
+	    # Handle start of macro (or any preprocessor directive).
+	    if (/^\s*\#/)
+	    {
+		$in_macro = 1 if /^([^\\]|\\.)*\\$/;
+		next;
+	    }
+
+	    # Handle comments and quoted text.
+	    while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
+	    {
+		my $match = $1;
+		if ($match eq "/*")
+		{
+		    if (!s-/\*.*?\*/--)
+		    {
+			s-/\*.*--;
+			$in_comment = 1;
+		    }
+		}
+		elsif ($match eq "//")
+		{
+		    s-//.*--;
+		}
+		else # ' or "
+		{
+		    if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-)
+		    {
+			warn "mismatched quotes at line $. in $file\n";
+			s-$match.*--;
+		    }
+		}
+	    }	    
+
+	    if (/\.GetString ?\(QUOTEDTEXT/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    ## Remove the first 3 chars and add newline
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+
+	    if (/_\(QUOTEDTEXT/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    ## Remove the first 3 chars and add newline
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_xml) 
+    {
+	open FILE, "<$file";
+	
+	while (<FILE>) 
+	{
+	    # FIXME: share the pattern matching code with intltool-extract
+	    if (/\s_[-A-Za-z0-9._:]+\s*=\s*\"([^"]+)\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_ini)
+    {
+	open FILE, "<$file";
+	while (<FILE>) 
+	{
+	    if (/_(.*)=/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_xml_unmarked)
+    {
+        if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+            push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+        }
+    }
+
+
+    @buf_allfiles_sorted = sort (@buf_allfiles);
+    @buf_potfiles_sorted = sort (@buf_potfiles);
+
+    my %in2;
+    foreach (@buf_potfiles_sorted) 
+    {
+	$in2{$_} = 1;
+    }
+
+    my @result;
+
+    foreach (@buf_allfiles_sorted)
+    {
+	if (!exists($in2{$_}))
+	{
+	    push @result, $_
+	}
+    }
+
+    my @buf_potfiles_notexist;
+
+    foreach (@buf_potfiles_sorted)
+    {
+	chomp (my $dummy = $_);
+	if ("$dummy" ne "" and ! -f "../$dummy")
+	{
+	    push @buf_potfiles_notexist, $_;
+	}
+    }
+
+    ## Save file with information about the files missing
+    ## if any, and give information about this procedure.
+    if (@result + @buf_potfiles_notexist > 0)
+    {
+	if (@result) 
+	{
+	    print "\n" if $VERBOSE;
+	    unlink "missing";
+	    open OUT, ">missing";
+	    print OUT @result;
+	    close OUT;
+	    warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n".
+	         "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n";
+	    print STDERR @result, "\n";
+	    warn "If some of these files are left out on purpose then please add them to\n".
+		 "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n".
+		 "of left out files has been written in the current directory.\n";
+	}
+	if (@buf_potfiles_notexist)
+	{
+	    unlink "notexist";
+	    open OUT, ">notexist";
+	    print OUT @buf_potfiles_notexist;
+	    close OUT;
+	    warn "\n" if ($VERBOSE or @result);
+	    warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";
+	    warn @buf_potfiles_notexist, "\n";
+	    warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n".
+		 "containing this list of absent files has been written in the current directory.\n";
+	}
+    }
+
+    ## If there is nothing to complain about, notify the user
+    else {
+	print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE;
+    }
+}
+
+sub Console_WriteError_InvalidOption
+{
+    ## Handle invalid arguments
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit 1;
+}
+
+sub GenerateHeaders
+{
+    my $EXTRACT = "@INTLTOOL_EXTRACT@";
+    chomp $EXTRACT;
+
+    $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
+
+    ## Generate the .h header files, so we can allow glade and
+    ## xml translation support
+    if (! -x "$EXTRACT")
+    {
+	print STDERR "\n *** The intltool-extract script wasn't found!"
+	     ."\n *** Without it, intltool-update can not generate files.\n";
+	exit;
+    }
+    else
+    {
+	open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n";
+	
+	while (<FILE>) 
+	{
+	   chomp;
+	   next if /^\[\s*encoding/;
+
+	   ## Find xml files in POTFILES.in and generate the
+	   ## files with help from the extract script
+
+	   my $gettext_type= &POFile_DetermineType ($1);
+
+	   if (/\.($xml_support|$ini_support)$/ || /^\[/)
+	   {
+	       s/^\[[^\[].*]\s*//;
+
+	       my $filename = "../$_";
+
+	       if ($VERBOSE)
+	       {
+		   system ($EXTRACT, "--update", "--srcdir=$SRCDIR",
+			   "--type=$gettext_type", $filename);
+	       } 
+	       else 
+	       {
+	 	   system ($EXTRACT, "--update", "--type=$gettext_type", 
+			   "--srcdir=$SRCDIR", "--quiet", $filename);
+	       }
+	   }
+       }
+       close FILE;
+   }
+}
+
+#
+# Generate .pot file from POTFILES.in
+#
+sub GeneratePOTemplate
+{
+    my $XGETTEXT = $ENV{"XGETTEXT"} || "/usr/bin/xgettext";
+    my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
+    chomp $XGETTEXT;
+
+    if (! -x $XGETTEXT)
+    {
+	print STDERR " *** xgettext is not found on this system!\n".
+		     " *** Without it, intltool-update can not extract strings.\n";
+	exit;
+    }
+
+    print "Building $MODULE.pot...\n" if $VERBOSE;
+
+    open INFILE, $POTFILES_in;
+    unlink "POTFILES.in.temp";
+    open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing");
+
+    my $gettext_support_nonascii = 0;
+
+    # checks for GNU gettext >= 0.12
+    my $dummy = `$XGETTEXT --version --from-code=UTF-8 >$devnull 2>$devnull`;
+    if ($? == 0)
+    {
+	$gettext_support_nonascii = 1;
+    }
+    else
+    {
+	# urge everybody to upgrade gettext
+	print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n".
+		     "         strings. That means you should install a version of gettext\n".
+		     "         that supports non-ASCII strings (such as GNU gettext >= 0.12),\n".
+		     "         or have to let non-ASCII strings untranslated. (If there is any)\n";
+    }
+
+    my $encoding = "ASCII";
+    my $forced_gettext_code;
+    my @temp_headers;
+    my $encoding_problem_is_reported = 0;
+
+    while (<INFILE>) 
+    {
+	next if (/^#/ or /^\s*$/);
+
+	chomp;
+
+	my $gettext_code;
+
+	if (/^\[\s*encoding:\s*(.*)\s*\]/)
+	{
+	    $forced_gettext_code=$1;
+	}
+	elsif (/\.($xml_support|$ini_support)$/ || /^\[/)
+	{
+	    s/^\[.*]\s*//;
+            print OUTFILE "../$_.h\n";
+	    push @temp_headers, "../$_.h";
+	    $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+	} 
+	else 
+	{
+	    if ($SRCDIR eq ".") {
+	        print OUTFILE "../$_\n";
+	    } else {
+	        print OUTFILE "$SRCDIR/../$_\n";
+	    }
+	    $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+	}
+
+	next if (! $gettext_support_nonascii);
+
+	if (defined $forced_gettext_code)
+	{
+	    $encoding=$forced_gettext_code;
+	}
+	elsif (defined $gettext_code and "$encoding" ne "$gettext_code")
+	{
+	    if ($encoding eq "ASCII")
+	    {
+		$encoding=$gettext_code;
+	    }
+	    elsif ($gettext_code ne "ASCII")
+	    {
+		# Only report once because the message is quite long
+		if (! $encoding_problem_is_reported)
+		{
+		    print STDERR "WARNING: You should use the same file encoding for all your project files,\n".
+				 "         but $PROGRAM thinks that most of the source files are in\n".
+				 "         $encoding encoding, while \"$_\" is (likely) in\n".
+		       		 "         $gettext_code encoding. If you are sure that all translatable strings\n".
+				 "         are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n".
+				 "         line to POTFILES.in:\n\n".
+				 "                 [encoding: UTF-8]\n\n".
+				 "         and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n".
+				 "(such warning message will only be reported once.)\n";
+		    $encoding_problem_is_reported = 1;
+		}
+	    }
+	}
+    }
+
+    close OUTFILE;
+    close INFILE;
+
+    unlink "$MODULE.pot";
+    my @xgettext_argument=("$XGETTEXT",
+			   "--add-comments",
+			   "--directory\=\.",
+			   "--output\=$MODULE\.pot",
+			   "--files-from\=\.\/POTFILES\.in\.temp");
+    my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
+    push @xgettext_argument, $XGETTEXT_KEYWORDS;
+    push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
+    push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
+    my $xgettext_command = join ' ', @xgettext_argument;
+
+    # intercept xgettext error message
+    print "Running $xgettext_command\n" if $VERBOSE;
+    my $xgettext_error_msg = `$xgettext_command 2>\&1`;
+    my $command_failed = $?;
+
+    unlink "POTFILES.in.temp";
+
+    print "Removing generated header (.h) files..." if $VERBOSE;
+    unlink foreach (@temp_headers);
+    print "done.\n" if $VERBOSE;
+
+    if (! $command_failed)
+    {
+	if (! -e "$MODULE.pot")
+	{
+	    print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE;
+	}
+	else
+	{
+	    print "Wrote $MODULE.pot\n" if $VERBOSE;
+	}
+    }
+    else
+    {
+	if ($xgettext_error_msg =~ /--from-code/)
+	{
+	    # replace non-ASCII error message with a more useful one.
+	    print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n".
+			 "       string marked for translation. Please make sure that all strings marked\n".
+			 "       for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n".
+			 "       following line to POTFILES.in and rerun $PROGRAM:\n\n".
+			 "           [encoding: UTF-8]\n\n";
+	}
+	else
+	{
+	    print STDERR "$xgettext_error_msg";
+	    if (-e "$MODULE.pot")
+	    {
+		# is this possible?
+		print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n".
+			     "       Please consult error message above if there is any.\n";
+	    }
+	    else
+	    {
+		print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n".
+			     "       error message above if there is any.\n";
+	    }
+	}
+	exit (1);
+    }
+}
+
+sub POFile_Update
+{
+    -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
+
+    my $MSGMERGE = $ENV{"MSGMERGE"} || "/usr/bin/msgmerge";
+    my ($lang, $outfile) = @_;
+
+    print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE;
+
+    my $infile = "$SRCDIR/$lang.po";
+    $outfile = "$SRCDIR/$lang.po" if ($outfile eq "");
+
+    # I think msgmerge won't overwrite old file if merge is not successful
+    system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot");
+}
+
+sub Console_WriteError_NotExisting
+{
+    my ($file) = @_;
+
+    ## Report error if supplied language file is non-existing
+    print STDERR "$PROGRAM: $file does not exist!\n";
+    print STDERR "Try '$PROGRAM --help' for more information.\n";
+    exit;
+}
+
+sub GatherPOFiles
+{
+    my @po_files = glob ("./*.po");
+
+    @languages = map (&POFile_GetLanguage, @po_files);
+
+    foreach my $lang (@languages) 
+    {
+	$po_files_by_lang{$lang} = shift (@po_files);
+    }
+}
+
+sub POFile_GetLanguage ($)
+{
+    s/^(.*\/)?(.+)\.po$/$2/;
+    return $_;
+}
+
+sub Console_Write_TranslationStatus
+{
+    my ($lang, $output_file) = @_;
+    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt";
+
+    $output_file = "$SRCDIR/$lang.po" if ($output_file eq "");
+
+    system ("$MSGFMT", "-o", "$devnull", "--verbose", $output_file);
+}
+
+sub Console_Write_CoverageReport
+{
+    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt";
+
+    &GatherPOFiles;
+
+    foreach my $lang (@languages) 
+    {
+	print "$lang: ";
+	&POFile_Update ($lang, "");
+    }
+
+    print "\n\n * Current translation support in $MODULE \n\n";
+
+    foreach my $lang (@languages)
+    {
+	print "$lang: ";
+	system ("$MSGFMT", "-o", "$devnull", "--verbose", "$SRCDIR/$lang.po");
+    }
+}
+
+sub SubstituteVariable
+{
+    my ($str) = @_;
+    
+    # always need to rewind file whenever it has been accessed
+    seek (CONF, 0, 0);
+
+    # cache each variable. varhash is global to we can add
+    # variables elsewhere.
+    while (<CONF>)
+    {
+	if (/^(\w+)=(.*)$/)
+	{
+	    ($varhash{$1} = $2) =~  s/^["'](.*)["']$/$1/;
+	}
+    }
+    
+    if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
+    {
+	my $rest = $3;
+	my $untouched = $1;
+	my $sub = $varhash{$2};
+	
+	return SubstituteVariable ("$untouched$sub$rest");
+    }
+    
+    # We're using Perl backticks ` and "echo -n" here in order to 
+    # expand any shell escapes (such as backticks themselves) in every variable
+    return echo_n ($str);
+}
+
+sub CONF_Handle_Open
+{
+    my $base_dirname = getcwd();
+    $base_dirname =~ s at .*/@@;
+
+    my ($conf_in, $src_dir);
+
+    if ($base_dirname =~ /^po(-.+)?$/) 
+    {
+	if (-f "Makevars") 
+	{
+	    my $makefile_source;
+
+	    local (*IN);
+	    open (IN, "<Makevars") || die "can't open Makevars: $!";
+
+	    while (<IN>) 
+	    {
+		if (/^top_builddir[ \t]*=/) 
+		{
+		    $src_dir = $_;
+		    $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+		    chomp $src_dir;
+                    if (-f "$src_dir" . "/configure.ac") {
+                        $conf_in = "$src_dir" . "/configure.ac" . "\n";
+                    } else {
+                        $conf_in = "$src_dir" . "/configure.in" . "\n";
+                    }
+		    last;
+		}
+	    }
+	    close IN;
+
+	    $conf_in || die "Cannot find top_builddir in Makevars.";
+	}
+	elsif (-f "../configure.ac") 
+	{
+	    $conf_in = "../configure.ac";
+	} 
+	elsif (-f "../configure.in") 
+	{
+	    $conf_in = "../configure.in";
+	} 
+	else 
+	{
+	    my $makefile_source;
+
+	    local (*IN);
+	    open (IN, "<Makefile") || return;
+
+	    while (<IN>) 
+	    {
+		if (/^top_srcdir[ \t]*=/) 
+		{
+		    $src_dir = $_;		    
+		    $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+		    chomp $src_dir;
+		    $conf_in = "$src_dir" . "/configure.in" . "\n";
+
+		    last;
+		}
+	    }
+	    close IN;
+
+	    $conf_in || die "Cannot find top_srcdir in Makefile.";
+	}
+
+	open (CONF, "<$conf_in");
+    }
+    else
+    {
+	print STDERR "$PROGRAM: Unable to proceed.\n" .
+		     "Make sure to run this script inside the po directory.\n";
+	exit;
+    }
+}
+
+sub FindPackageName
+{
+    my $version;
+    my $domain = &FindMakevarsDomain;
+    my $name = $domain || "untitled";
+
+    &CONF_Handle_Open;
+
+    my $conf_source; {
+	local (*IN);
+	open (IN, "<&CONF") || return $name;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$conf_source = <IN>;
+	close IN;
+    }
+
+    # priority for getting package name:
+    # 1. GETTEXT_PACKAGE
+    # 2. first argument of AC_INIT (with >= 2 arguments)
+    # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument)
+
+    # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m 
+    # the \s makes this not work, why?
+    if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m)
+    {
+	($name, $version) = ($1, $2);
+	$name    =~ s/[\[\]\s]//g;
+	$version =~ s/[\[\]\s]//g;
+	$varhash{"AC_PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE"} = $name;
+	$varhash{"AC_PACKAGE_VERSION"} = $version;
+	$varhash{"VERSION"} = $version;
+    }
+    
+    if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) 
+    {
+	($name, $version) = ($1, $2);
+	$name    =~ s/[\[\]\s]//g;
+	$version =~ s/[\[\]\s]//g;
+	$varhash{"AC_PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE"} = $name;
+	$varhash{"AC_PACKAGE_VERSION"} = $version;
+	$varhash{"VERSION"} = $version;
+    }
+
+    # \s makes this not work, why?
+    $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m;
+    
+    # prepend '$' to auto* internal variables, usually they are
+    # used in configure.in/ac without the '$'
+    $name =~ s/AC_/\$AC_/g;
+    $name =~ s/\$\$/\$/g;
+
+    $name = $domain if $domain;
+
+    $name = SubstituteVariable ($name);
+    $name =~ s/^["'](.*)["']$/$1/;
+
+    return $name if $name;
+}
+
+
+sub FindPOTKeywords
+{
+
+    my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_";
+    my $varname = "XGETTEXT_OPTIONS";
+    my $make_source; {
+	local (*IN);
+	open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$make_source = <IN>;
+	close IN;
+    }
+
+    $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m;
+    
+    return $keywords;
+}
+
+sub FindMakevarsDomain
+{
+
+    my $domain = "";
+    my $makevars_source; { 
+	local (*IN);
+	open (IN, "<Makevars") || return $domain;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$makevars_source = <IN>;
+	close IN;
+    }
+
+    $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m;
+    $domain =~ s/^\s+//;
+    $domain =~ s/\s+$//;
+    
+    return $domain;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/libgoffice-1.pc.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/libgoffice-1.pc.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/libgoffice-1.pc.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,14 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+# To retrieve the module from anonymous CVS, use the following command:
+#   cvs -z4 -d:pserver:anonymous at anoncvs.gnome.org:/cvs/gnome co goffice
+
+Name: libGOffice
+Description: G Office support library
+Version: @VERSION@
+Requires: glib-2.0 gobject-2.0 libgsf-1 libxml-2.0 gtk+-2.0 libglade-2.0 libgnomeprint-2.2 libart-2.0
+Libs: -L${libdir} -lgoffice-1 @EXTRA_LIBS@
+Cflags: -I${includedir}/libgoffice-1 @EXTRA_INCLUDES@

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/ltmain.sh
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/ltmain.sh	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/ltmain.sh	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,6426 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.6
+TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42) Debian$Rev: 224 $"
+
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+ *) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS=" 	
+"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid () {
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag () {
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2003  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $EXIT_SUCCESS
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $EXIT_SUCCESS
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $EXIT_SUCCESS
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case "$arg_mode" in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $srcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	status=$?
+	if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      else
+	command="$base_compile $srcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # gcc -m* arguments should be passed to the linker via $compiler_flags
+      # in order to pass architecture information to the linker
+      # (e.g. 32 vs 64-bit).  This may also be accomplished via -Wl,-mfoo
+      # but this is not reliable with gcc because gcc may use -mfoo to
+      # select a different linker, different libraries, etc, while
+      # -Wl,-mfoo simply passes -mfoo to the linker.
+      -m*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    if test "$deplibs_check_method" != pass_all; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	else
+	  dir="$ladir/$objdir"
+	  absdir="$abs_ladir/$objdir"
+	  # Remove this search path later
+	  notinst_path="$notinst_path $abs_ladir"
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var"; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $dir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case "$libdir" in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case "$libdir" in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$deplibs $path" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  *)
+	    $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	    $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $LTCC -o conftest conftest.c $deplibs
+	  if test "$?" -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		$LTCC -o conftest conftest.c $i
+		# Did it work?
+		if test "$?" -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "***  make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			tmp_deplibs="$tmp_deplibs $test_deplib"
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	    generated="$generated $gentop"
+
+	    for xlib in $convenience; do
+	      # Extract the objects.
+	      case $xlib in
+	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	      *) xabs=`pwd`"/$xlib" ;;
+	      esac
+	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	      xdir="$gentop/$xlib"
+
+	      $show "${rm}r $xdir"
+	      $run ${rm}r "$xdir"
+	      $show "$mkdir $xdir"
+	      $run $mkdir "$xdir"
+	      status=$?
+	      if test "$status" -ne 0 && test ! -d "$xdir"; then
+		exit $status
+	      fi
+	      # We will extract separately just the conflicting names and we will no
+	      # longer touch any unique names. It is faster to leave these extract
+	      # automatically by $AR in one run.
+	      $show "(cd $xdir && $AR x $xabs)"
+	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+	      if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+		:
+	      else
+		$echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+		$echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+		$AR t "$xabs" | sort | uniq -cd | while read -r count name
+		do
+		  i=1
+		  while test "$i" -le "$count"
+		  do
+		   # Put our $i before any first dot (extension)
+		   # Never overwrite any file
+		   name_to="$name"
+		   while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+		   do
+		     name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+		   done
+		   $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+		   $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+		   i=`expr $i + 1`
+		  done
+		done
+	      fi
+
+	      libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+	    done
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$save_output-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*"` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$save_output-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$save_output-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadale object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  $show "${rm}r $gentop"
+	  $run ${rm}r "$gentop"
+	  $show "$mkdir $gentop"
+	  $run $mkdir "$gentop"
+	  status=$?
+	  if test "$status" -ne 0 && test ! -d "$gentop"; then
+	    exit $status
+	  fi
+	  generated="$generated $gentop"
+
+	  for xlib in $convenience; do
+	    # Extract the objects.
+	    case $xlib in
+	    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	    *) xabs=`pwd`"/$xlib" ;;
+	    esac
+	    xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	    xdir="$gentop/$xlib"
+
+	    $show "${rm}r $xdir"
+	    $run ${rm}r "$xdir"
+	    $show "$mkdir $xdir"
+	    $run $mkdir "$xdir"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$xdir"; then
+	      exit $status
+	    fi
+	    # We will extract separately just the conflicting names and we will no
+	    # longer touch any unique names. It is faster to leave these extract
+	    # automatically by $AR in one run.
+	    $show "(cd $xdir && $AR x $xabs)"
+	    $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+	    if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+	      :
+	    else
+	      $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+	      $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+	      $AR t "$xabs" | sort | uniq -cd | while read -r count name
+	      do
+		i=1
+		while test "$i" -le "$count"
+		do
+		 # Put our $i before any first dot (extension)
+		 # Never overwrite any file
+		 name_to="$name"
+		 while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+		 do
+		   name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+		 done
+		 $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+		 $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+		 i=`expr $i + 1`
+		done
+	      done
+	    fi
+
+	    reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+	  done
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$output.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+	      $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    cwrappersource=`$echo ${objdir}/lt-${output}.c`
+	    cwrapper=`$echo ${output}.exe`
+	    $rm $cwrappersource $cwrapper
+	    trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+	  # we should really use a build-platform specific compiler
+	  # here, but OTOH, the wrappers (shell script and this C one)
+	  # are only useful if you want to execute the "real" binary.
+	  # Since the "real" binary is built for $host, then this
+	  # wrapper might as well be built for $host, too.
+	  $run $LTCC -s -o $cwrapper $cwrappersource
+	  ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	$show "${rm}r $gentop"
+	$run ${rm}r "$gentop"
+	$show "$mkdir $gentop"
+	$run $mkdir "$gentop"
+	status=$?
+	if test "$status" -ne 0 && test ! -d "$gentop"; then
+	  exit $status
+	fi
+	generated="$generated $gentop"
+
+	# Add in members from convenience archives.
+	for xlib in $addlibs; do
+	  # Extract the objects.
+	  case $xlib in
+	  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	  *) xabs=`pwd`"/$xlib" ;;
+	  esac
+	  xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	  xdir="$gentop/$xlib"
+
+	  $show "${rm}r $xdir"
+	  $run ${rm}r "$xdir"
+	  $show "$mkdir $xdir"
+	  $run $mkdir "$xdir"
+	  status=$?
+	  if test "$status" -ne 0 && test ! -d "$xdir"; then
+	    exit $status
+	  fi
+	  # We will extract separately just the conflicting names and we will no
+	  # longer touch any unique names. It is faster to leave these extract
+	  # automatically by $AR in one run.
+	  $show "(cd $xdir && $AR x $xabs)"
+	  $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+	  if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+	    :
+	  else
+	    $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+	    $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+	    $AR t "$xabs" | sort | uniq -cd | while read -r count name
+	    do
+	      i=1
+	      while test "$i" -le "$count"
+	      do
+	       # Put our $i before any first dot (extension)
+	       # Never overwrite any file
+	       name_to="$name"
+	       while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+	       do
+		 name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+	       done
+	       $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+	       $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+	       i=`expr $i + 1`
+	      done
+	    done
+	  fi
+
+	  oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+	done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+	  # GNU ar 2.10+ was changed to match POSIX; thus no paths are
+	  # encoded into archives.  This makes 'ar r' malfunction in
+	  # this piecewise linking case whenever conflicting object
+	  # names appear in distinct ar calls; check, warn and compensate.
+	    if (for obj in $save_oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	    :
+	  else
+	    $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
+	    $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
+	    AR_FLAGS=cq
+	  fi
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*"` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      save_umask=`umask`
+	      umask 0077
+	      if $mkdir "$tmpdir"; then
+	        umask $save_umask
+	      else
+	        umask $save_umask
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test "$mode" = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool at gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $EXIT_SUCCESS
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/missing
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/missing	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/missing	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,336 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# 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, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+case "$1" in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing 0.4 - GNU automake"
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+  aclocal*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f y.tab.h ]; then
+	echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+       # We have makeinfo, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  tar)
+    shift
+    if test -n "$run"; then
+      echo 1>&2 "ERROR: \`tar' requires --run"
+      exit 1
+    fi
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case "$firstarg" in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case "$firstarg" in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/missing
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/mkinstalldirs
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/mkinstalldirs	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/mkinstalldirs	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,111 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman at prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage" 1>&2
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    fi
+    ;;
+esac
+
+for file
+do
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
+
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+  	errstatus=$lasterr
+      else
+  	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+    	  lasterr=""
+  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+  	  if test ! -z "$lasterr"; then
+  	    errstatus=$lasterr
+  	  fi
+  	fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End:
+# mkinstalldirs ends here


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/mkinstalldirs
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,60 @@
+icondir = $(goffice_icondir)
+dist_icon_DATA = \
+ 	chart_area_1_1.png	chart_area_1_2.png	chart_area_1_3.png	\
+	chart_bar_1_1.png	chart_bar_1_2.png	chart_bar_1_3.png	\
+	chart_bar_2_1.png	chart_bar_2_2.png	chart_bar_2_3.png	\
+	chart_column_1_1.png	chart_column_1_2.png	chart_column_1_3.png	\
+	chart_column_2_1.png	chart_column_2_2.png	chart_column_2_3.png	\
+	chart_column_3_1.png \
+	chart_cone_1_1.png	chart_cone_1_2.png	chart_cone_1_3.png	\
+	chart_cone_2_1.png	chart_cone_2_2.png	chart_cone_2_3.png	\
+	chart_cone_3_1.png  \
+	chart_cylinder_1_1.png	chart_cylinder_1_2.png	chart_cylinder_1_3.png	\
+	chart_cylinder_2_1.png	chart_cylinder_2_2.png	chart_cylinder_2_3.png	\
+	chart_cylinder_3_1.png  \
+	chart_pyramid_1_1.png	chart_pyramid_1_2.png	chart_pyramid_1_3.png	\
+	chart_pyramid_2_1.png	chart_pyramid_2_2.png	chart_pyramid_2_3.png	\
+	chart_pyramid_3_1.png \
+	chart_radar_1_1.png chart_radar_1_2.png chart_radar_1_3.png \
+	chart_polar_1_1.png \
+	chart_stock_1_1.png	chart_stock_1_2.png \
+	chart_stock_2_1.png	chart_stock_2_2.png \
+	chart_line_1_1.png	chart_line_1_2.png	chart_line_1_3.png	\
+	chart_line_2_1.png	chart_line_2_2.png	chart_line_2_3.png	\
+	chart_line_3_1.png \
+	chart_pie_1_1.png	chart_pie_1_2.png	chart_pie_1_3.png	\
+	chart_pie_2_1.png	chart_pie_2_2.png	chart_pie_2_3.png	\
+	chart_ring_1_1.png 	chart_ring_1_2.png \
+	chart_scatter_1_1.png  \
+	chart_scatter_2_1.png	chart_scatter_2_2.png \
+	chart_scatter_3_1.png	chart_scatter_3_2.png	chart_scatter_3_3.png \
+	chart_bubble_1_1.png \
+	chart_contour_1_1.png \
+	chart_boxplot_1_1.png \
+	chart_dropbar_1_1.png chart_dropbar_1_2.png \
+	chart_minmax_1_1.png chart_minmax_1_2.png \
+	chart_minmax_2_1.png chart_minmax_2_2.png \
+	\
+	area.xpm 	\
+	bar.xpm		\
+	boxplot.xpm		\
+	bubble.xpm	\
+	column.xpm	\
+	doughnut.xpm	\
+	dropbar.xpm	\
+	linegraph.xpm	\
+	minmax.xpm	\
+	pie.xpm		\
+	radar.xpm	\
+	polar.png	\
+	scatter.xpm	\
+	stock.xpm	\
+	surface.xpm	\
+	\
+	bar-none.png 	\
+	bar-vplus.png 	\
+	bar-vminus.png 	\
+	bar-vboth.png	\
+	bar-hplus.png 	\
+	bar-hminus.png 	\
+	bar-hboth.png

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,449 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+icondir = $(goffice_icondir)
+dist_icon_DATA = \
+ 	chart_area_1_1.png	chart_area_1_2.png	chart_area_1_3.png	\
+	chart_bar_1_1.png	chart_bar_1_2.png	chart_bar_1_3.png	\
+	chart_bar_2_1.png	chart_bar_2_2.png	chart_bar_2_3.png	\
+	chart_column_1_1.png	chart_column_1_2.png	chart_column_1_3.png	\
+	chart_column_2_1.png	chart_column_2_2.png	chart_column_2_3.png	\
+	chart_column_3_1.png \
+	chart_cone_1_1.png	chart_cone_1_2.png	chart_cone_1_3.png	\
+	chart_cone_2_1.png	chart_cone_2_2.png	chart_cone_2_3.png	\
+	chart_cone_3_1.png  \
+	chart_cylinder_1_1.png	chart_cylinder_1_2.png	chart_cylinder_1_3.png	\
+	chart_cylinder_2_1.png	chart_cylinder_2_2.png	chart_cylinder_2_3.png	\
+	chart_cylinder_3_1.png  \
+	chart_pyramid_1_1.png	chart_pyramid_1_2.png	chart_pyramid_1_3.png	\
+	chart_pyramid_2_1.png	chart_pyramid_2_2.png	chart_pyramid_2_3.png	\
+	chart_pyramid_3_1.png \
+	chart_radar_1_1.png chart_radar_1_2.png chart_radar_1_3.png \
+	chart_polar_1_1.png \
+	chart_stock_1_1.png	chart_stock_1_2.png \
+	chart_stock_2_1.png	chart_stock_2_2.png \
+	chart_line_1_1.png	chart_line_1_2.png	chart_line_1_3.png	\
+	chart_line_2_1.png	chart_line_2_2.png	chart_line_2_3.png	\
+	chart_line_3_1.png \
+	chart_pie_1_1.png	chart_pie_1_2.png	chart_pie_1_3.png	\
+	chart_pie_2_1.png	chart_pie_2_2.png	chart_pie_2_3.png	\
+	chart_ring_1_1.png 	chart_ring_1_2.png \
+	chart_scatter_1_1.png  \
+	chart_scatter_2_1.png	chart_scatter_2_2.png \
+	chart_scatter_3_1.png	chart_scatter_3_2.png	chart_scatter_3_3.png \
+	chart_bubble_1_1.png \
+	chart_contour_1_1.png \
+	chart_boxplot_1_1.png \
+	chart_dropbar_1_1.png chart_dropbar_1_2.png \
+	chart_minmax_1_1.png chart_minmax_1_2.png \
+	chart_minmax_2_1.png chart_minmax_2_2.png \
+	\
+	area.xpm 	\
+	bar.xpm		\
+	boxplot.xpm		\
+	bubble.xpm	\
+	column.xpm	\
+	doughnut.xpm	\
+	dropbar.xpm	\
+	linegraph.xpm	\
+	minmax.xpm	\
+	pie.xpm		\
+	radar.xpm	\
+	polar.png	\
+	scatter.xpm	\
+	stock.xpm	\
+	surface.xpm	\
+	\
+	bar-none.png 	\
+	bar-vplus.png 	\
+	bar-vminus.png 	\
+	bar-vboth.png	\
+	bar-hplus.png 	\
+	bar-hminus.png 	\
+	bar-hboth.png
+
+subdir = pixmaps
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DATA = $(dist_icon_DATA)
+
+DIST_COMMON = $(dist_icon_DATA) $(srcdir)/Makefile.in Makefile.am
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  pixmaps/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_iconDATA_INSTALL = $(INSTALL_DATA)
+install-dist_iconDATA: $(dist_icon_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(icondir)
+	@list='$(dist_icon_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_iconDATA_INSTALL) $$d$$p $(DESTDIR)$(icondir)/$$f"; \
+	  $(dist_iconDATA_INSTALL) $$d$$p $(DESTDIR)$(icondir)/$$f; \
+	done
+
+uninstall-dist_iconDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_icon_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(icondir)/$$f"; \
+	  rm -f $(DESTDIR)$(icondir)/$$f; \
+	done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(icondir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_iconDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_iconDATA uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am info info-am install install-am install-data \
+	install-data-am install-dist_iconDATA install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-dist_iconDATA \
+	uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/area.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/area.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/area.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char * area_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"g.gggggggggggggggg",
+"g.ggggggggg.gggggg",
+"g..ggggggg.c.ggggg",
+"g.c.ggggg.cbc.gggg",
+"g.bc.ggg.cbcbc.ggg",
+"g.cbc.g.cbcbcbc.gg",
+"g.bcbc.cbcbc.cbc.g",
+"g.cbcbcbcbc.#.cbcg",
+"g..cbcbcbc.###.cbg",
+"g.#..bcbc.#####.cg",
+"g.###..c.#######.g",
+"g.#####.#########g",
+"g.###############g",
+"g................g",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hboth.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hboth.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hminus.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hminus.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hplus.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-hplus.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-none.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-none.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vboth.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vboth.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vminus.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vminus.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vplus.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar-vplus.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bar.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char const * const bar_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"g.gggggggggggggggg",
+"g........ggggggggg",
+"g.bbbbbb.ggggggggg",
+"g..........ggggggg",
+"g.########.ggggggg",
+"g...............gg",
+"g.gggggggggggggggg",
+"g...............gg",
+"g.bbbbbbbbbbbbb.gg",
+"g............ggggg",
+"g.##########.ggggg",
+"g............ggggg",
+"g.gggggggggggggggg",
+"g................g",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/boxplot.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/boxplot.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/boxplot.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * boxplot_xpm[] = {
+"18 18 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FF0000",
+"                  ",
+"                  ",
+"                  ",
+"                  ",
+"    ..........    ",
+"  . .+++.++++. .  ",
+"  . .+++.++++. .  ",
+"  ...+++.++++...  ",
+"  . .+++.++++. .  ",
+"  . .+++.++++. .  ",
+"    ..........    ",
+"                  ",
+"                  ",
+"                  ",
+"                  ",
+" ................ ",
+"                  ",
+"                  "};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bubble.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bubble.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/bubble.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char const * const bubble_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggg....gggggggggg",
+"ggg.cbcb.ggggggggg",
+"ggg.bcbc.gg..ggggg",
+"ggg.cbcb.g.##.gggg",
+"ggg.bcbc.g.##.gggg",
+"gggg....ggg..ggggg",
+"gggggggggggggggggg",
+"ggggggggggg..ggggg",
+"ggggg..ggg.cb.gggg",
+"gggg.##.gg.bc.gggg",
+"gggg.##.ggg..ggggg",
+"ggggg..ggggggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_area_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bar_2_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_boxplot_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_boxplot_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bubble_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_bubble_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_2_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_3_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_column_3_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_2_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_3_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cone_3_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_contour_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_contour_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_2_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_3_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_cylinder_3_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_dropbar_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_dropbar_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_dropbar_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_dropbar_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_2_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_3_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_line_3_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_minmax_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pie_2_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_polar_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_polar_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_2_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_3_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_pyramid_3_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_radar_1_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_ring_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_ring_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_ring_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_ring_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_3.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_scatter_3_3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_1_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_1_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_1_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_1_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_2_1.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_2_1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_2_2.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/chart_stock_2_2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/column.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/column.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/column.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char const * const column_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"g.gggggggggg...ggg",
+"g.gggggggggg.b.ggg",
+"g.gggggggggg.b.ggg",
+"g.gggggggggg.b.ggg",
+"g.gggggggggg.b.ggg",
+"g.gggggggg...b.ggg",
+"g.gggggggg.#.b.ggg",
+"g.gggg...g.#.b.ggg",
+"g.gggg.b.g.#.b.ggg",
+"g.gg...b.g.#.b.ggg",
+"g.gg.#.b.g.#.b.ggg",
+"g.gg.#.b.g.#.b.ggg",
+"g.gg.#.b.g.#.b.ggg",
+"g................g",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/doughnut.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/doughnut.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/doughnut.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char *untitled doughnut_icon = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"ggggggg....ggggggg",
+"ggggg..gf.#..ggggg",
+"gggg.fgfg.###.gggg",
+"gggg.gf....##.gggg",
+"ggg.gf.dggd.##.ggg",
+"ggg.fg.gggg.##.ggg",
+"ggg.gf.gggg....ggg",
+"ggg.f..dggd.bc.ggg",
+"gggg.bc....bc.gggg",
+"gggg..bcbcbcb.gggg",
+"ggggg..bcbc..ggggg",
+"ggggggg....ggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/dropbar.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/dropbar.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/dropbar.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,26 @@
+/* XPM */
+static char * dropbar_xpm[] = {
+"18 18 5 1",
+" 	c None",
+".	c #000000",
+"+	c #008400",
+"@	c #FF0000",
+"#	c #FF7BFF",
+"                  ",
+"                  ",
+" .          ...   ",
+" .          .+.   ",
+" .          .+.   ",
+" .          .+.   ",
+" .          .+.   ",
+" .        ...+.   ",
+" .        . at .+.   ",
+" .    ... . at ...   ",
+" .    .#. . at .     ",
+" .  ...#. ...     ",
+" .  . at .#.         ",
+" .  . at ...         ",
+" .  ...           ",
+" ................ ",
+"                  ",
+"                  "};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/linegraph.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/linegraph.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/linegraph.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char const * const linegraph_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"g.gggggggggggggggg",
+"g.gggggggggggggggg",
+"g.ggggggbbgggg##gg",
+"g.ggggggbbgggg##gg",
+"g.gggggcggcggg#ggg",
+"g.ggggcggggcg#gggg",
+"g.gggcgggggg#ggggg",
+"g.gbbgggggg#gcgggg",
+"g.gbbggggg#gggbbgg",
+"g.ggggggg#ggggbbgg",
+"g.g##gg##ggggggggg",
+"g.g######ggggggggg",
+"g.gggggggggggggggg",
+"g................g",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/minmax.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/minmax.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/minmax.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,24 @@
+/* XPM */
+static char * minmax_xpm[] = {
+"18 18 3 1",
+" 	c None",
+".	c #000000",
+"+	c #0000C0",
+"                  ",
+"                  ",
+" .           +    ",
+" .           +    ",
+" .           +    ",
+" .           +    ",
+" .           +    ",
+" .         . +    ",
+" .         . +    ",
+" .   . +   . +    ",
+" .   . +   .      ",
+" .   . +   .      ",
+" .   . +          ",
+" .   . +          ",
+" .   .            ",
+" ................ ",
+"                  ",
+"                  "};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/pie.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/pie.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/pie.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char const * const pie_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"ggggggg....ggggggg",
+"ggggg..gf.#..ggggg",
+"gggg.fgfg.###.gggg",
+"gggg.gfgf.###.gggg",
+"ggg.gfgfg.####.ggg",
+"ggg.fgfgf.####.ggg",
+"ggg.gfgf.......ggg",
+"ggg.fgf.bcbcbc.ggg",
+"gggg.f.bcbcbc.gggg",
+"gggg..bcbcbcb.gggg",
+"ggggg..bcbc..ggggg",
+"ggggggg....ggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/polar.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/polar.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/radar.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/radar.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/radar.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char * radar_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"gggggggg.ggggggggg",
+"ggggggg##ggggggggg",
+"gggggg#####ggggggg",
+"ggggg#gg.gg##ggggg",
+"g.gg#ggbbbggg#gg.g",
+"gg##ggbgbbbbgg##gg",
+"gg##.bbg.ggbb.##gg",
+"gg#ggbbg.g.bbg#ggg",
+"gg#ggbg...ggbg#ggg",
+"gg#ggbg.g.gbgg#ggg",
+"ggg#gbbgggbbg#gggg",
+"ggg#gbbbbbb.g#gggg",
+"ggg##ggggggg##gggg",
+"ggg###########gggg",
+"gg.ggggggggggg.ggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/scatter.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/scatter.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/scatter.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char const * const scatter_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggggggggg",
+"g.gggggggggggggggg",
+"g.gggggggggg.ggggg",
+"g.gggggggggggggggg",
+"g.gggggggggggggggg",
+"g.ggggg#ggggggg.gg",
+"g.ggggggggggg#gggg",
+"g.gg.ggg.ggggggggg",
+"g.gggg.ggggggggggg",
+"g.ggggggggg.gggggg",
+"g.g#ggggg#gggggggg",
+"g.ggg.gggggggg#ggg",
+"g.gggggggg#ggggggg",
+"g.gggggggggggggggg",
+"g................g",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/stock.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/stock.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/stock.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char const * const boxplot_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggggggggg.ggggg",
+"g.gggggggggg...ggg",
+"g.gggggggggg.ggggg",
+"g.gg.ggg.ggg.ggggg",
+"g.gg.ggg...ggggggg",
+"g.gg...g.ggg...ggg",
+"g.gg.ggg.ggg.a.ggg",
+"g.gggggggggg.a.ggg",
+"g.gg...ggggg.a.ggg",
+"g.gg.a.ggggg.a.ggg",
+"g.gg.a.g...g.a.ggg",
+"g.gg.a.g.a.g.a.ggg",
+"g.gg.a.g.a.g.a.ggg",
+"g.gg.a.g.a.g.a.ggg",
+"g................g",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/surface.xpm
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/surface.xpm	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/pixmaps/surface.xpm	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* XPM */
+static char * surface_icon [] = {
+/* width height num_colors chars_per_pixel */
+"    18   18        9            1",
+/* colors */
+". c #000000",
+"# c #ff0000",
+"a c #00ffff",
+"b c #008400",
+"c c #008484",
+"d c #848484",
+"e c #c6c6c6",
+"f c #ffff00",
+"g c None",
+/* pixels */
+"gggggggggggggggggg",
+"gggggg..........gg",
+"ggggg.g.ggggggg.gg",
+"gggg.gg.ggggggg.gg",
+"ggg.ggg.....dgg.gg",
+"gg.ggg.bbb.b..g.gg",
+"g.ggg.bbb.bbb...gg",
+"g.gg.........gg.gg",
+"g.g.#bb.bbb.ggg.gg",
+"g.g.##b.b##.....gg",
+"g..###.###.gggg.gg",
+"g..###.###.ggg.ggg",
+"g.........ggg.gggg",
+"g.gggggggggg.ggggg",
+"g.ggggggggg.gggggg",
+"g..........ggggggg",
+"gggggggggggggggggg",
+"gggggggggggggggggg"
+};

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,8 @@
+SUBDIRS = \
+	plot_pie \
+	plot_barcol \
+	plot_xy \
+	plot_radar \
+	plot_surface \
+	plot_boxes \
+	reg_linear

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,524 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = \
+	plot_pie \
+	plot_barcol \
+	plot_xy \
+	plot_radar \
+	plot_surface \
+	plot_boxes \
+	reg_linear
+
+subdir = plugins
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+DIST_SUBDIRS = $(SUBDIRS)
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	else \
+	  include_option=--include; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-recursive ctags \
+	ctags-recursive distclean distclean-generic distclean-libtool \
+	distclean-recursive distclean-tags distdir dvi dvi-am \
+	dvi-recursive info info-am info-recursive install install-am \
+	install-data install-data-am install-data-recursive \
+	install-exec install-exec-am install-exec-recursive \
+	install-info install-info-am install-info-recursive install-man \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,36 @@
+goffice_graph_barcoldir = $(goffice_plugindir)/plot_barcol
+xmldir	 = $(goffice_graph_barcoldir)
+gladedir = $(goffice_graph_barcoldir)
+
+goffice_graph_barcol_LTLIBRARIES = barcol.la
+barcol_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+barcol_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+barcol_la_SOURCES = gog-1.5d.c 		\
+		    gog-1.5d.h		\
+		    gog-line.c		\
+		    gog-line.h		\
+		    gog-barcol.c 	\
+		    gog-barcol.h	\
+		    gog-barcol-prefs.c	\
+		    gog-dropbar.c	\
+		    gog-dropbar.h	\
+		    gog-minmax.c	\
+		    gog-minmax.h	
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+ at INTLTOOL_XML_RULE@
+
+dist_glade_DATA = gog-barcol-prefs.glade gog-minmax-prefs.glade
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice-plugins.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,612 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+goffice_graph_barcoldir = $(goffice_plugindir)/plot_barcol
+xmldir = $(goffice_graph_barcoldir)
+gladedir = $(goffice_graph_barcoldir)
+
+goffice_graph_barcol_LTLIBRARIES = barcol.la
+barcol_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+barcol_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+barcol_la_SOURCES = gog-1.5d.c 		\
+		    gog-1.5d.h		\
+		    gog-line.c		\
+		    gog-line.h		\
+		    gog-barcol.c 	\
+		    gog-barcol.h	\
+		    gog-barcol-prefs.c	\
+		    gog-dropbar.c	\
+		    gog-dropbar.h	\
+		    gog-minmax.c	\
+		    gog-minmax.h	
+
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+dist_glade_DATA = gog-barcol-prefs.glade gog-minmax-prefs.glade
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+AM_CPPFLAGS = \
+    -I$(top_srcdir)		\
+    -I$(top_builddir)		\
+    $(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+subdir = plugins/plot_barcol
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(goffice_graph_barcol_LTLIBRARIES)
+
+barcol_la_DEPENDENCIES =
+am_barcol_la_OBJECTS = gog-1.5d.lo gog-line.lo gog-barcol.lo \
+	gog-barcol-prefs.lo gog-dropbar.lo gog-minmax.lo
+barcol_la_OBJECTS = $(am_barcol_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-1.5d.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-barcol-prefs.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-barcol.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-dropbar.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-line.Plo ./$(DEPDIR)/gog-minmax.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(barcol_la_SOURCES)
+DATA = $(dist_glade_DATA) $(xml_DATA)
+
+DIST_COMMON = $(dist_glade_DATA) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice-plugins.mk Makefile.am
+SOURCES = $(barcol_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice-plugins.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/plot_barcol/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+goffice_graph_barcolLTLIBRARIES_INSTALL = $(INSTALL)
+install-goffice_graph_barcolLTLIBRARIES: $(goffice_graph_barcol_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_barcoldir)
+	@list='$(goffice_graph_barcol_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(goffice_graph_barcolLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_barcoldir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(goffice_graph_barcolLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_barcoldir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-goffice_graph_barcolLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(goffice_graph_barcol_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_barcoldir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_barcoldir)/$$p; \
+	done
+
+clean-goffice_graph_barcolLTLIBRARIES:
+	-test -z "$(goffice_graph_barcol_LTLIBRARIES)" || rm -f $(goffice_graph_barcol_LTLIBRARIES)
+	@list='$(goffice_graph_barcol_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+barcol.la: $(barcol_la_OBJECTS) $(barcol_la_DEPENDENCIES) 
+	$(LINK) -rpath $(goffice_graph_barcoldir) $(barcol_la_LDFLAGS) $(barcol_la_OBJECTS) $(barcol_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-1.5d.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-barcol-prefs.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-barcol.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-dropbar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-line.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-minmax.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_gladeDATA_INSTALL = $(INSTALL_DATA)
+install-dist_gladeDATA: $(dist_glade_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(gladedir)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+	  $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+	done
+
+uninstall-dist_gladeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+	  rm -f $(DESTDIR)$(gladedir)/$$f; \
+	done
+xmlDATA_INSTALL = $(INSTALL_DATA)
+install-xmlDATA: $(xml_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(xmldir)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f"; \
+	  $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+uninstall-xmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(xmldir)/$$f"; \
+	  rm -f $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_barcoldir) $(DESTDIR)$(gladedir) $(DESTDIR)$(xmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-goffice_graph_barcolLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_gladeDATA \
+	install-goffice_graph_barcolLTLIBRARIES install-xmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_barcolLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-goffice_graph_barcolLTLIBRARIES clean-libtool ctags \
+	distclean distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-dist_gladeDATA \
+	install-exec install-exec-am \
+	install-goffice_graph_barcolLTLIBRARIES install-info \
+	install-info-am install-man install-strip install-xmlDATA \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_barcolLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,664 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-1.5d.c
+ *
+ * Copyright (C) 2003-2004
+ *	Jody Goldberg (jody at gnome.org)
+ *	Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-1.5d.h"
+#include "gog-line.h"
+#include "gog-barcol.h"
+#include "gog-dropbar.h"
+#include "gog-minmax.h"
+#include <goffice/graph/gog-series-lines.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/app/module-plugin-defs.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtklabel.h>
+#include <gsf/gsf-impl-utils.h>
+
+GOFFICE_PLUGIN_MODULE_HEADER;
+
+enum {
+	GOG_1_5D_PROP_0,
+	GOG_1_5D_PROP_TYPE,
+	GOG_1_5D_PROP_IN_3D	/* place holder for XL */
+};
+
+static GogObjectClass *plot1_5d_parent_klass;
+
+static void
+gog_plot_1_5d_clear_formats (GogPlot1_5d *plot)
+{
+	if (plot->fmt != NULL) {
+		go_format_unref (plot->fmt);
+		plot->fmt = NULL;
+	}
+}
+
+static void
+gog_plot1_5d_finalize (GObject *obj)
+{
+	gog_plot_1_5d_clear_formats (GOG_PLOT1_5D (obj));
+	G_OBJECT_CLASS (plot1_5d_parent_klass)->finalize (obj);
+}
+
+static void
+gog_plot1_5d_set_property (GObject *obj, guint param_id,
+			    GValue const *value, GParamSpec *pspec)
+{
+	GogPlot1_5d *gog_1_5d = GOG_PLOT1_5D (obj);
+	gboolean tmp;
+
+	switch (param_id) {
+	case GOG_1_5D_PROP_TYPE: {
+		char const *str = g_value_get_string (value);
+		if (str == NULL)
+			return;
+		else if (!g_ascii_strcasecmp (str, "normal"))
+			gog_1_5d->type = GOG_1_5D_NORMAL;
+		else if (!g_ascii_strcasecmp (str, "stacked"))
+			gog_1_5d->type = GOG_1_5D_STACKED;
+		else if (!g_ascii_strcasecmp (str, "as_percentage"))
+			gog_1_5d->type = GOG_1_5D_AS_PERCENTAGE;
+		else
+			return;
+		break;
+	case GOG_1_5D_PROP_IN_3D :
+		tmp = g_value_get_boolean (value);
+		if ((gog_1_5d->in_3d != 0) == (tmp != 0))
+			return;
+		gog_1_5d->in_3d = tmp;
+		break;
+	}
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), TRUE);
+}
+
+static void
+gog_plot1_5d_get_property (GObject *obj, guint param_id,
+			      GValue *value, GParamSpec *pspec)
+{
+	GogPlot1_5d *gog_1_5d = GOG_PLOT1_5D (obj);
+
+	switch (param_id) {
+	case GOG_1_5D_PROP_TYPE:
+		switch (gog_1_5d->type) {
+		case GOG_1_5D_NORMAL:
+			g_value_set_static_string (value, "normal");
+			break;
+		case GOG_1_5D_STACKED:
+			g_value_set_static_string (value, "stacked");
+			break;
+		case GOG_1_5D_AS_PERCENTAGE:
+			g_value_set_static_string (value, "as_percentage");
+			break;
+		}
+		break;
+	case GOG_1_5D_PROP_IN_3D :
+		g_value_set_boolean (value, gog_1_5d->in_3d);
+		break;
+		
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static GogAxis *
+gog_plot1_5d_get_value_axis (GogPlot1_5d *model)
+{
+	GogPlot1_5dClass *klass = GOG_PLOT1_5D_GET_CLASS (model);
+	if (klass->swap_x_and_y && (*klass->swap_x_and_y ) (model))
+		return model->base.axis [GOG_AXIS_X];
+	return model->base.axis [GOG_AXIS_Y];
+}
+
+GogAxis *
+gog_plot1_5d_get_index_axis (GogPlot1_5d *model)
+{
+	GogPlot1_5dClass *klass = GOG_PLOT1_5D_GET_CLASS (model);
+	if (klass->swap_x_and_y && (*klass->swap_x_and_y ) (model))
+		return model->base.axis [GOG_AXIS_Y];
+	return model->base.axis [GOG_AXIS_X];
+}
+
+static void
+gog_plot1_5d_update (GogObject *obj)
+{
+	GogPlot1_5d *model = GOG_PLOT1_5D (obj);
+	GogPlot1_5dClass *klass = GOG_PLOT1_5D_GET_CLASS (obj);
+	GogSeries1_5d const *series;
+	unsigned i, num_elements, num_series;
+	double **vals, minima, maxima;
+	double old_minima, old_maxima;
+	unsigned *lengths;
+	GSList *ptr;
+	GOData *index_dim = NULL;
+	GogPlot *plot_that_labeled_axis;
+	GogAxis *axis;
+	GogErrorBar **errors;
+	gboolean index_changed = FALSE;
+
+	old_minima =  model->minima;
+	old_maxima =  model->maxima;
+	model->minima =  DBL_MAX;
+	model->maxima = -DBL_MAX;
+	gog_plot_1_5d_clear_formats (model);
+
+	num_elements = num_series = 0;
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		num_series++;
+
+		if (GOG_SERIES1_5D (series)->index_changed) {
+			GOG_SERIES1_5D (series)->index_changed = FALSE;
+			index_changed = TRUE;
+		}
+
+		if (num_elements < series->base.num_elements)
+			num_elements = series->base.num_elements;
+		if (GOG_1_5D_NORMAL == model->type) {
+			if (gog_error_bar_is_visible (series->errors))
+				gog_error_bar_get_minmax (series->errors, &minima, &maxima);
+			else
+				go_data_vector_get_minmax (GO_DATA_VECTOR (
+					series->base.values[1].data), &minima, &maxima);
+			if (series->base.plot->desc.series.num_dim == 3) {
+				double tmp_min, tmp_max;
+				go_data_vector_get_minmax (GO_DATA_VECTOR (
+					series->base.values[2].data), &tmp_min, &tmp_max);
+				if (minima > tmp_min )
+					minima = tmp_min;
+				if (maxima < tmp_max)
+					maxima = tmp_max;
+			}
+			if (model->minima > minima)
+				model->minima = minima;
+			if (model->maxima < maxima)
+				model->maxima = maxima;
+		}
+		if (model->fmt == NULL)
+			model->fmt = go_data_preferred_fmt (series->base.values[1].data);
+		index_dim = GOG_SERIES (series)->values[0].data;
+	}
+	axis = gog_plot1_5d_get_index_axis (model);
+	if (model->num_elements != num_elements ||
+	    model->implicit_index ^ (index_dim == NULL) ||
+	    (index_dim != gog_axis_get_labels (axis, &plot_that_labeled_axis) &&
+	     GOG_PLOT (model) == plot_that_labeled_axis)) {
+		model->num_elements = num_elements;
+		model->implicit_index = (index_dim == NULL);
+		gog_axis_bound_changed (axis, GOG_OBJECT (model));
+	} else { 
+		if (index_changed)  
+			gog_axis_bound_changed (axis, GOG_OBJECT (model));
+	}
+
+	model->num_series = num_series;
+
+	if (num_elements <= 0 || num_series <= 0)
+		model->minima = model->maxima = 0.;
+	else if (model->type != GOG_1_5D_NORMAL) {
+		vals = g_alloca (num_series * sizeof (double *));
+		errors = g_alloca (num_series * sizeof (GogErrorBar *));
+		lengths = g_alloca (num_series * sizeof (unsigned));
+		i = 0;
+		for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next, i++) {
+			series = ptr->data;
+			/* we are guaranteed that at least 1 series is valid above */
+			if (!gog_series_is_valid (GOG_SERIES (series)))
+				continue;
+			vals[i] = go_data_vector_get_values (
+				GO_DATA_VECTOR (series->base.values[1].data));
+			g_object_get (G_OBJECT (series), "errors", errors + i, NULL);
+			if (errors[i])
+				g_object_unref (errors[i]);
+			lengths[i] = go_data_vector_get_len (
+				GO_DATA_VECTOR (series->base.values[1].data));
+		}
+
+		if (klass->update_stacked_and_percentage)
+			klass->update_stacked_and_percentage (model, vals, errors, lengths);
+	}
+
+	if (old_minima != model->minima || old_maxima != model->maxima)
+		gog_axis_bound_changed (
+			gog_plot1_5d_get_value_axis (model), GOG_OBJECT (model));
+
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+	if (plot1_5d_parent_klass->update)
+		plot1_5d_parent_klass->update (obj);
+}
+
+static GOData *
+gog_plot1_5d_axis_get_bounds (GogPlot *plot, GogAxisType axis,
+			      GogPlotBoundInfo *bounds)
+{
+	GogPlot1_5d *model = GOG_PLOT1_5D (plot);
+	if (axis == gog_axis_get_atype (gog_plot1_5d_get_value_axis (model))) {
+		bounds->val.minima = model->minima;
+		bounds->val.maxima = model->maxima;
+		if (model->type == GOG_1_5D_AS_PERCENTAGE) {
+			if (model->minima >= -1.)
+				bounds->logical.minima = -1.;
+			if (model->maxima <= 1.)
+				bounds->logical.maxima =  1.;
+			if (bounds->fmt == NULL) {
+				bounds->fmt = go_format_ref (
+					go_format_default_percentage ());
+			}
+		} else if (bounds->fmt == NULL && model->fmt != NULL)
+			bounds->fmt = go_format_ref (model->fmt);
+		return NULL;
+	} else if (axis == gog_axis_get_atype (gog_plot1_5d_get_index_axis (model))) {
+		GSList *ptr;
+
+		bounds->val.minima = 1.;
+		bounds->val.maxima = model->num_elements;
+		bounds->logical.minima = 1.;
+		bounds->logical.maxima = go_nan;
+		bounds->is_discrete    = TRUE;
+
+		for (ptr = plot->series; ptr != NULL ; ptr = ptr->next)
+			if (gog_series_is_valid (GOG_SERIES (ptr->data)))
+				return GOG_SERIES (ptr->data)->values[0].data;
+		return NULL;
+	}
+
+	g_warning ("not reached");
+	return NULL;
+}
+
+static gboolean
+gog_1_5d_supports_vary_style_by_element (GogPlot const *plot)
+{
+	GogPlot1_5d *gog_1_5d = GOG_PLOT1_5D (plot);
+	return gog_1_5d->type == GOG_1_5D_NORMAL;
+}
+
+static void
+gog_plot1_5d_class_init (GogPlotClass *plot_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) plot_klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) plot_klass;
+
+	plot1_5d_parent_klass = g_type_class_peek_parent (plot_klass);
+	gobject_klass->set_property = gog_plot1_5d_set_property;
+	gobject_klass->get_property = gog_plot1_5d_get_property;
+	gobject_klass->finalize = gog_plot1_5d_finalize;
+
+	g_object_class_install_property (gobject_klass, GOG_1_5D_PROP_TYPE,
+		g_param_spec_string ("type", "type",
+			"How to group multiple series, normal, stacked, as_percentage",
+			"normal", G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GOG_1_5D_PROP_IN_3D,
+		g_param_spec_boolean ("in-3d", "in-3d",
+			"Place holder to all us to round trip pseudo 3d state",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_klass->update	= gog_plot1_5d_update;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("Labels"), GOG_SERIES_SUGGESTED, TRUE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Values"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES },
+/* Names of the error data are not translated since they are not used */
+			{ "+err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_plus1 },
+			{ "-err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_minus1 }
+		};
+		plot_klass->desc.series.dim = dimensions;
+		plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+	}
+	plot_klass->desc.num_series_min = 1;
+	plot_klass->desc.num_series_max = G_MAXINT;
+	plot_klass->series_type = gog_series1_5d_get_type ();
+	plot_klass->axis_get_bounds   	= gog_plot1_5d_axis_get_bounds;
+	plot_klass->axis_set	      	= GOG_AXIS_SET_XY;
+	plot_klass->supports_vary_style_by_element = gog_1_5d_supports_vary_style_by_element;
+}
+
+static void
+gog_plot1_5d_init (GogPlot1_5d *plot)
+{
+	plot->fmt = NULL;
+	plot->in_3d = FALSE;
+	plot->support_series_lines = FALSE;
+	plot->support_drop_lines = FALSE;
+	plot->support_lines = FALSE;
+}
+
+GSF_DYNAMIC_CLASS_ABSTRACT (GogPlot1_5d, gog_plot1_5d,
+	gog_plot1_5d_class_init, gog_plot1_5d_init,
+	GOG_PLOT_TYPE)
+
+/*****************************************************************************/
+
+static gboolean
+series_lines_can_add (GogObject const *parent)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	GogPlot1_5d *plot = GOG_PLOT1_5D (series->base.plot);
+	/* series lines are supported to implement excel series lines in barcol
+	plots and lines with dropbars and high-low lines */
+	if (GOG_IS_PLOT_BARCOL (plot) && plot->type == GOG_1_5D_NORMAL)
+		return FALSE;
+	return (plot->support_series_lines &&
+								!series->has_series_lines);
+}
+
+static void
+series_lines_post_add (GogObject *parent, GogObject *child)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	series->has_series_lines = TRUE;
+	gog_object_request_update (child);
+}
+
+static void
+series_lines_pre_remove (GogObject *parent, GogObject *child)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	series->has_series_lines = FALSE;
+}
+
+/*****************************************************************************/
+
+static gboolean
+drop_lines_can_add (GogObject const *parent)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	return (GOG_PLOT1_5D (series->base.plot)->support_drop_lines &&
+								!series->has_drop_lines);
+}
+
+static void
+drop_lines_post_add (GogObject *parent, GogObject *child)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	series->has_drop_lines = TRUE;
+	gog_object_request_update (child);
+}
+
+static void
+drop_lines_pre_remove (GogObject *parent, GogObject *child)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	series->has_drop_lines = FALSE;
+}
+
+/*****************************************************************************/
+
+static gboolean
+lines_can_add (GogObject const *parent)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	return (GOG_PLOT1_5D (series->base.plot)->support_lines &&
+		!series->has_lines);
+}
+
+static void
+lines_post_add (GogObject *parent, GogObject *child)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	series->has_lines = TRUE;
+	gog_object_request_update (child);
+}
+
+static void
+lines_pre_remove (GogObject *parent, GogObject *child)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (parent);
+	series->has_lines = FALSE;
+}
+
+/*****************************************************************************/
+
+static GogObjectClass *gog_series1_5d_parent_klass;
+
+enum {
+	SERIES_PROP_0,
+	SERIES_PROP_ERRORS
+};
+
+static void
+gog_series1_5d_dim_changed (GogSeries *series, int dim_i)
+{
+	if (dim_i == 0)
+		GOG_SERIES1_5D (series)->index_changed = TRUE;
+}
+
+static void
+gog_series1_5d_update (GogObject *obj)
+{
+	double *vals;
+	int len = 0;
+	GogSeries1_5d *series = GOG_SERIES1_5D (obj);
+	unsigned old_num = series->base.num_elements;
+
+	if (series->base.values[1].data != NULL) {
+		vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[1].data));
+		len = go_data_vector_get_len 
+			(GO_DATA_VECTOR (series->base.values[1].data));
+	}
+	series->base.num_elements = len;
+
+	if (series->base.plot->desc.series.num_dim == 3) {
+		int tmp = 0;
+		if (series->base.values[2].data != NULL) {
+			vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[2].data));
+			tmp = go_data_vector_get_len 
+				(GO_DATA_VECTOR (series->base.values[2].data));
+		}
+		if (tmp < len)
+			len = tmp;
+	}
+
+	/* queue plot for redraw */
+	gog_object_request_update (GOG_OBJECT (series->base.plot));
+	if (old_num != series->base.num_elements)
+		gog_plot_request_cardinality_update (series->base.plot);
+
+	if (gog_series1_5d_parent_klass->update)
+		gog_series1_5d_parent_klass->update (obj);
+}
+
+static void
+gog_series1_5d_set_property (GObject *obj, guint param_id,
+				GValue const *value, GParamSpec *pspec)
+{
+	GogSeries1_5d *series=  GOG_SERIES1_5D (obj);
+	GogErrorBar* bar;
+
+	switch (param_id) {
+	case SERIES_PROP_ERRORS :
+		bar = g_value_get_object (value);
+		if (series->errors == bar)
+			return;
+		if (bar) {
+			bar = gog_error_bar_dup (bar);
+			bar->series = GOG_SERIES (series);
+			bar->dim_i = 1;
+			bar->error_i = 2;
+		}
+		if (!series->base.needs_recalc) {
+			series->base.needs_recalc = TRUE;
+			gog_object_emit_changed (GOG_OBJECT (series), FALSE);
+		}
+		if (series->errors != NULL)
+			g_object_unref (series->errors);
+		series->errors = bar;
+		break;
+	}
+}
+
+static void
+gog_series1_5d_get_property (GObject *obj, guint param_id,
+			  GValue *value, GParamSpec *pspec)
+{
+	GogSeries1_5d *series=  GOG_SERIES1_5D (obj);
+
+	switch (param_id) {
+	case SERIES_PROP_ERRORS :
+		g_value_set_object (value, series->errors);
+		break;
+	}
+}
+
+static void 
+gog_series1_5d_populate_editor (GogObject *obj,
+				GogEditor *editor,
+				GogDataAllocator *dalloc,
+				GOCmdContext *cc)
+{
+	GogSeries *series = GOG_SERIES (obj);
+	GtkWidget * error_page;
+	gboolean horizontal;
+
+	(GOG_OBJECT_CLASS (gog_series1_5d_parent_klass)->populate_editor) (obj, editor, dalloc, cc);
+
+	if (series->plot->desc.series.num_dim == 3)
+		return;
+
+	if (g_object_class_find_property (G_OBJECT_GET_CLASS (series->plot), "horizontal") == NULL)
+		horizontal = FALSE;
+	else
+		g_object_get (G_OBJECT (series->plot), "horizontal", &horizontal, NULL);
+	error_page = gog_error_bar_prefs (series, "errors", horizontal, dalloc, cc);
+	gog_editor_add_page (editor, error_page, _("Error bars"));
+}
+
+static void
+gog_series1_5d_finalize (GObject *obj)
+{
+	GogSeries1_5d *series = GOG_SERIES1_5D (obj);
+	if (series->errors) {
+		g_object_unref (series->errors);
+		series->errors = NULL;
+	}
+	G_OBJECT_CLASS (gog_series1_5d_parent_klass)->finalize (obj);
+}
+
+static void
+gog_series1_5d_class_init (GogObjectClass *obj_klass)
+{
+	static GogObjectRole const roles[] = {
+		{ N_("Series lines"), "GogSeriesLines",	0,
+			GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+			series_lines_can_add,
+			NULL,
+			NULL,
+			series_lines_post_add,
+			series_lines_pre_remove, NULL },
+		{ N_("Drop lines"), "GogSeriesLines",	1,
+			GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+			drop_lines_can_add,
+			NULL,
+			NULL,
+			drop_lines_post_add,
+			drop_lines_pre_remove,
+			NULL },
+		{ N_("Lines"), "GogSeriesLines",	1,
+			GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+			lines_can_add,
+			NULL,
+			NULL,
+			lines_post_add,
+			lines_pre_remove,
+			NULL },
+	};
+
+	GObjectClass *gobject_klass = (GObjectClass *) obj_klass;
+	GogSeriesClass *gog_series_klass = (GogSeriesClass*) obj_klass;
+
+	gog_series1_5d_parent_klass = g_type_class_peek_parent (obj_klass);
+
+	gobject_klass->set_property = gog_series1_5d_set_property;
+	gobject_klass->get_property = gog_series1_5d_get_property;
+	gobject_klass->finalize 	      = gog_series1_5d_finalize;
+	obj_klass->update 	      = gog_series1_5d_update;
+	obj_klass->populate_editor    = gog_series1_5d_populate_editor;
+	gog_series_klass->dim_changed = gog_series1_5d_dim_changed;
+
+	gog_object_register_roles (obj_klass, roles, G_N_ELEMENTS (roles));
+
+	g_object_class_install_property (gobject_klass, SERIES_PROP_ERRORS,
+		g_param_spec_object ("errors", "errors",
+			"GogErrorBar *",
+			GOG_ERROR_BAR_TYPE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+}
+
+static void
+gog_series1_5d_init (GObject *obj)
+{
+	GogSeries1_5d *series=  GOG_SERIES1_5D (obj);
+
+	series->errors = NULL;
+	series->index_changed = FALSE;
+	series->has_series_lines = FALSE;
+	series->has_drop_lines = FALSE;
+	series->has_lines = FALSE;
+}
+
+GSF_DYNAMIC_CLASS (GogSeries1_5d, gog_series1_5d,
+	gog_series1_5d_class_init, gog_series1_5d_init,
+	GOG_SERIES_TYPE)
+
+/* Plugin initialization */
+
+G_MODULE_EXPORT void
+go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
+{
+	GTypeModule *module = go_plugin_get_type_module (plugin);
+	gog_plot1_5d_register_type (module);
+	gog_series1_5d_register_type (module);
+	gog_barcol_plot_register_type (module);
+	gog_barcol_view_register_type (module);
+	gog_dropbar_plot_register_type (module);
+	gog_dropbar_view_register_type (module);
+	gog_line_series_register_type (module);
+	gog_line_plot_register_type (module);
+	gog_area_plot_register_type (module);
+	gog_line_view_register_type (module);
+	gog_minmax_series_register_type (module);
+	gog_minmax_plot_register_type (module);
+	gog_minmax_view_register_type (module);
+}
+
+G_MODULE_EXPORT void
+go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
+{
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-1.5d.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,93 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-1.5d.h
+ *
+ * Copyright (C) 2003-2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_1_5D_H
+#define GOG_1_5D_H
+
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/graph/gog-error-bar.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GOG_1_5D_NORMAL,
+	GOG_1_5D_STACKED,
+	GOG_1_5D_AS_PERCENTAGE
+} GogPlot1_5dType;
+
+typedef struct {
+	GogPlot	base;
+	GogPlot1_5dType type;
+	gboolean	in_3d; /* placeholder */
+
+	/* cached content */
+	unsigned  num_series, num_elements;
+	double    maxima, minima; /* meaning varies depending on type */
+	gboolean  implicit_index;
+	int support_series_lines:1;
+	int support_drop_lines:1;
+	int support_lines:1;
+	GOFormat *fmt;
+} GogPlot1_5d;
+typedef struct {
+	GogPlotClass	base;
+
+	gboolean (*swap_x_and_y)		  (GogPlot1_5d *model);
+	void     (*update_stacked_and_percentage) (GogPlot1_5d *model,
+						   double **vals,
+						   GogErrorBar **errors,
+						   unsigned const *lengths);
+} GogPlot1_5dClass;
+
+#define GOG_PLOT1_5D_TYPE		(gog_plot1_5d_get_type ())
+#define GOG_PLOT1_5D(o)			(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PLOT1_5D_TYPE, GogPlot1_5d))
+#define IS_GOG_PLOT1_5D(o)		(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PLOT1_5D_TYPE))
+#define GOG_PLOT1_5D_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST ((k), GOG_PLOT1_5D_TYPE, GogPlot1_5dClass))
+#define GOG_PLOT1_5D_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_PLOT1_5D_TYPE, GogPlot1_5dClass))
+
+GType gog_plot1_5d_get_type (void);
+void  gog_plot1_5d_register_type (GTypeModule *module);
+
+GogAxis * gog_plot1_5d_get_index_axis (GogPlot1_5d *model);
+
+/***************************************************************************/
+
+typedef struct {
+	GogSeries base;
+	GogErrorBar *errors;
+	gboolean	index_changed; 
+	int has_series_lines:1;
+	int has_drop_lines:1;
+	int has_lines:1;
+} GogSeries1_5d;
+typedef GogSeriesClass GogSeries1_5dClass;
+
+#define GOG_SERIES1_5D_TYPE	(gog_series1_5d_get_type ())
+#define GOG_SERIES1_5D(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_SERIES1_5D_TYPE, GogSeries1_5d))
+#define IS_GOG_SERIES1_5D(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_SERIES1_5D_TYPE))
+
+GType gog_series1_5d_get_type (void);
+void  gog_series1_5d_register_type (GTypeModule *module);
+
+G_END_DECLS
+
+#endif /* GOG_1_5D_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,73 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-barcol-prefs.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-barcol.h"
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/app/go-plugin.h>
+
+#include <gtk/gtkspinbutton.h>
+
+GtkWidget *gog_barcol_plot_pref (GogBarColPlot *plot, GOCmdContext *cc);
+
+static void
+cb_gap_changed (GtkAdjustment *adj, GObject *barcal)
+{
+	g_object_set (barcal, "gap-percentage", (int)adj->value, NULL);
+}
+
+static void
+cb_overlap_changed (GtkAdjustment *adj, GObject *barcol)
+{
+	g_object_set (barcol, "overlap-percentage", (int)adj->value, NULL);
+}
+
+GtkWidget *
+gog_barcol_plot_pref (GogBarColPlot *barcol, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_barcol"));
+	char	 *path = g_build_filename (dir, "gog-barcol-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_barcol_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+
+	w = glade_xml_get_widget (gui, "gap_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), barcol->gap_percentage);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_gap_changed), barcol);
+
+	w = glade_xml_get_widget (gui, "overlap_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), barcol->overlap_percentage);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_overlap_changed), barcol);
+
+	w = glade_xml_get_widget (gui, "gog_barcol_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,176 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkTable" id="gog_barcol_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="n_rows">2</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label61">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">_Gap:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">gap_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label63">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label64">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">O_verlap:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">overlap_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label65">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="gap_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">Separation between groups as a percentage of bar/col width</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 0 500 10 10 10</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="overlap_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">How far the bars/cols overlap as a percentage of the width</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">0.1</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 -100 100 10 10 10</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,520 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-barcol.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-barcol.h"
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-series-lines.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-math.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+enum {
+	BARCOL_PROP_0,
+	BARCOL_PROP_GAP_PERCENTAGE,
+	BARCOL_PROP_OVERLAP_PERCENTAGE,
+	BARCOL_PROP_HORIZONTAL
+};
+
+static GogObjectClass *gog_barcol_parent_klass;
+
+static GType gog_barcol_view_get_type (void);
+
+static void
+gog_barcol_plot_set_property (GObject *obj, guint param_id,
+			      GValue const *value, GParamSpec *pspec)
+{
+	GogBarColPlot *barcol = GOG_BARCOL_PLOT (obj);
+
+	switch (param_id) {
+	case BARCOL_PROP_GAP_PERCENTAGE:
+		barcol->gap_percentage = g_value_get_int (value);
+		break;
+
+	case BARCOL_PROP_OVERLAP_PERCENTAGE:
+		barcol->overlap_percentage = g_value_get_int (value);
+		break;
+	case BARCOL_PROP_HORIZONTAL:
+		barcol->horizontal = g_value_get_boolean (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), TRUE);
+}
+
+static void
+gog_barcol_plot_get_property (GObject *obj, guint param_id,
+			      GValue *value, GParamSpec *pspec)
+{
+	GogBarColPlot *barcol = GOG_BARCOL_PLOT (obj);
+
+	switch (param_id) {
+	case BARCOL_PROP_GAP_PERCENTAGE:
+		g_value_set_int (value, barcol->gap_percentage);
+		break;
+	case BARCOL_PROP_OVERLAP_PERCENTAGE:
+		g_value_set_int (value, barcol->overlap_percentage);
+		break;
+	case BARCOL_PROP_HORIZONTAL:
+		g_value_set_boolean (value, barcol->horizontal);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static char const *
+gog_barcol_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name bar/col plot objects
+	 * eg The 2nd bar/col plot in a chart will be called
+	 * 	PlotBarCol2 */
+	return N_("PlotBarCol");
+}
+
+extern gpointer gog_barcol_plot_pref (GogBarColPlot *barcol, GOCmdContext *cc);
+static void
+gog_barcol_plot_populate_editor (GogObject *item,
+				 GogEditor *editor,
+			G_GNUC_UNUSED GogDataAllocator *dalloc,
+			GOCmdContext *cc)
+{
+	gog_editor_add_page (editor,
+			     gog_barcol_plot_pref (GOG_BARCOL_PLOT (item), cc),
+			     _("Properties"));
+	(GOG_OBJECT_CLASS(gog_barcol_parent_klass)->populate_editor) (item, editor, dalloc, cc);
+}
+
+static gboolean
+gog_barcol_swap_x_and_y (GogPlot1_5d *model)
+{
+	return GOG_BARCOL_PLOT (model)->horizontal;
+}
+
+static void
+gog_barcol_update_stacked_and_percentage (GogPlot1_5d *model,
+					  double **vals, GogErrorBar **errors, unsigned const *lengths)
+{
+	unsigned i, j;
+	double neg_sum, pos_sum, tmp, errplus, errminus, tmpmin, tmpmax;
+
+	for (i = model->num_elements ; i-- > 0 ; ) {
+		neg_sum = pos_sum = 0.;
+		tmpmin = DBL_MAX;
+		tmpmax = -DBL_MAX;
+		for (j = 0 ; j < model->num_series ; j++) {
+			if (i >= lengths[j])
+				continue;
+			tmp = vals[j][i];
+			if (!go_finite (tmp))
+				continue;
+			if (gog_error_bar_is_visible (errors[j])) {
+					gog_error_bar_get_bounds (errors[j], i, &errminus, &errplus);
+					errminus = errminus > 0. ? errminus : 0.;
+					errplus = errplus > 0. ? errplus : 0.;
+				} else
+					errplus = errminus = 0.;
+			if (tmp > 0.) {
+				pos_sum += tmp;
+				errminus = (pos_sum - errminus < neg_sum)? neg_sum - pos_sum + errminus: 0.;
+			} else {
+				neg_sum += tmp;
+				errplus = (neg_sum + errplus > pos_sum)? neg_sum - pos_sum + errplus: 0.;
+			}
+				if (tmpmin > neg_sum - errminus)
+					tmpmin = neg_sum - errminus;
+				if (tmpmax < pos_sum + errplus)
+					tmpmax = pos_sum + errplus;
+		}
+		if (GOG_1_5D_STACKED == model->type) {
+			if (model->minima > tmpmin)
+				model->minima = tmpmin;
+			if (model->maxima < tmpmax)
+				model->maxima = tmpmax;
+		} else {
+			if (model->minima > tmpmin / (pos_sum - neg_sum))
+				model->minima = tmpmin / (pos_sum - neg_sum);
+			if (model->maxima < tmpmax / (pos_sum - neg_sum))
+				model->maxima = tmpmax / (pos_sum - neg_sum);
+		}
+	}
+}
+
+static GOData *
+gog_barcol_axis_get_bounds (GogPlot *plot, GogAxisType axis,
+			    GogPlotBoundInfo *bounds)
+{
+	GogPlot1_5d *model = GOG_PLOT1_5D (plot);
+	GogPlot1_5dClass *plot1_5d_klass = GOG_PLOT1_5D_CLASS (gog_barcol_parent_klass);
+	GOData *data;
+
+	data = (plot1_5d_klass->base.axis_get_bounds) (plot, axis, bounds); 
+	
+	if (axis == gog_axis_get_atype (gog_plot1_5d_get_index_axis (model))) {
+		bounds->val.minima -= .5;
+		bounds->val.maxima += .5;
+		bounds->logical.minima = -.5;
+		bounds->center_on_ticks = FALSE;
+	}
+
+	return data;
+}
+
+static void
+gog_barcol_plot_class_init (GogPlot1_5dClass *gog_plot_1_5d_klass)
+{
+	GObjectClass   *gobject_klass = (GObjectClass *) gog_plot_1_5d_klass;
+	GogObjectClass *gog_object_klass = (GogObjectClass *) gog_plot_1_5d_klass;
+	GogPlotClass   *plot_klass = (GogPlotClass *) gog_plot_1_5d_klass;
+
+	gog_barcol_parent_klass = g_type_class_peek_parent (gog_plot_1_5d_klass);
+	gobject_klass->set_property = gog_barcol_plot_set_property;
+	gobject_klass->get_property = gog_barcol_plot_get_property;
+
+	g_object_class_install_property (gobject_klass, BARCOL_PROP_GAP_PERCENTAGE,
+		g_param_spec_int ("gap-percentage", "gap percentage",
+			"The padding around each group as a percentage of their width",
+			0, 500, 150, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, BARCOL_PROP_OVERLAP_PERCENTAGE,
+		g_param_spec_int ("overlap-percentage", "overlap percentage",
+			"The distance between series as a percentage of their width",
+			-100, 100, 0, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, BARCOL_PROP_HORIZONTAL,
+		g_param_spec_boolean ("horizontal", "horizontal",
+			"horizontal bars or vertical columns",
+			FALSE,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_object_klass->type_name	= gog_barcol_plot_type_name;
+	gog_object_klass->populate_editor	= gog_barcol_plot_populate_editor;
+	gog_object_klass->view_type	= gog_barcol_view_get_type ();
+
+	plot_klass->desc.series.style_fields	= GOG_STYLE_OUTLINE | GOG_STYLE_FILL;
+	plot_klass->axis_get_bounds   		= gog_barcol_axis_get_bounds;
+
+	gog_plot_1_5d_klass->swap_x_and_y = gog_barcol_swap_x_and_y;
+	gog_plot_1_5d_klass->update_stacked_and_percentage =
+		gog_barcol_update_stacked_and_percentage;
+}
+
+static void
+gog_barcol_plot_init (GogBarColPlot *model)
+{
+	model->gap_percentage = 150;
+	GOG_PLOT1_5D (model)->support_series_lines = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogBarColPlot, gog_barcol_plot,
+	gog_barcol_plot_class_init, gog_barcol_plot_init,
+	GOG_PLOT1_5D_TYPE)
+
+/*****************************************************************************/
+typedef GogPlotView		GogBarColView;
+typedef GogPlotViewClass	GogBarColViewClass;
+
+/**
+ * FIXME FIXME FIXME Wrong description
+ * barcol_draw_rect :
+ * @rend : #GogRenderer
+ * @flip :
+ * @base : #GogViewAllocation
+ * @rect : #GogViewAllocation
+ *
+ * A utility routine to build a vpath in @rect.  @rect is assumed to be in
+ * coordinates relative to @base with 0,0 as the upper left.  @flip transposes
+ * @rect and rotates it to put the origin in the bottom left.  Play fast and
+ * loose with coordinates to keep widths >= 1.  If we allow things to be less
+ * the background bleeds through.
+ **/
+static void
+barcol_draw_rect (GogRenderer *rend, gboolean flip,
+		  GogAxisMap *x_map,
+		  GogAxisMap *y_map,
+		  GogViewAllocation const *rect)
+{
+	ArtVpath path[6];
+	double x0, x1, y0, y1;
+
+	if (flip) {
+		x0 = gog_axis_map_to_view (x_map, rect->y);
+		x1 = gog_axis_map_to_view (x_map, rect->y + rect->h);
+		y0 = gog_axis_map_to_view (y_map, rect->x);
+		y1 = gog_axis_map_to_view (y_map, rect->x + rect->w);
+	} else {
+		x0 = gog_axis_map_to_view (x_map, rect->x);
+		x1 = gog_axis_map_to_view (x_map, rect->x + rect->w);
+		y0 = gog_axis_map_to_view (y_map, rect->y);
+		y1 = gog_axis_map_to_view (y_map, rect->y + rect->h);
+	}
+
+	path[0].x = path[3].x = path[4].x = x0;
+	path[1].x = path[2].x = x1;
+	path[0].y = path[1].y = path[4].y = y0;
+	path[2].y = path[3].y = y1;
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[2].code = ART_LINETO;
+	path[3].code = ART_LINETO;
+	path[4].code = ART_LINETO;
+	path[5].code = ART_END;
+	
+	gog_renderer_draw_sharp_polygon (rend, path, 
+					 fabs (x1 - x0) < 3. || fabs (y1 - y0) < 3.);
+}
+
+typedef struct {
+	double		plus;
+	double 		minus;
+	double		x;
+	double		y;
+} ErrorBarData;
+
+static void
+gog_barcol_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogBarColPlot const *model = GOG_BARCOL_PLOT (view->model);
+	GogPlot1_5d const *gog_1_5d_model = GOG_PLOT1_5D (view->model);
+	GogSeries1_5d const *series;
+	GogChart *chart = GOG_CHART (view->model->parent);
+	GogChartMap *chart_map;
+	GogViewAllocation work;
+	GogViewAllocation const *area;
+	GogRenderer *rend = view->renderer;
+	GogAxisMap *x_map, *y_map, *map;
+	gboolean is_vertical = ! (model->horizontal);
+	double **vals, sum, neg_base, pos_base, tmp;
+	double x;
+	double col_step, group_step, offset, data_scale;
+	unsigned i, j;
+	unsigned num_elements = gog_1_5d_model->num_elements;
+	unsigned num_series = gog_1_5d_model->num_series;
+	GogPlot1_5dType const type = gog_1_5d_model->type;
+	GogStyle **styles;
+	ErrorBarData **error_data;
+	GogErrorBar **errors;
+	GogSeriesLines **lines;
+	ArtVpath **paths;
+	GSList *ptr;
+	unsigned *lengths;
+	double plus, minus;
+	GogObjectRole const *role = NULL;
+
+
+	if (num_elements <= 0 || num_series <= 0)
+		return;
+
+	area = gog_chart_view_get_plot_area (view->parent);
+	chart_map = gog_chart_map_new (chart, area, 
+				       GOG_PLOT (model)->axis[GOG_AXIS_X], 
+				       GOG_PLOT (model)->axis[GOG_AXIS_Y],
+				       NULL, FALSE);
+	if (!gog_chart_map_is_valid (chart_map)) {
+		gog_chart_map_free (chart_map);
+		return;
+	}
+	
+	x_map = gog_chart_map_get_axis_map (chart_map, 0);
+	y_map = gog_chart_map_get_axis_map (chart_map, 1);
+
+	map = is_vertical ? y_map : x_map;
+
+	vals = g_alloca (num_series * sizeof (double *));
+	lengths = g_alloca (num_series * sizeof (unsigned));
+	styles = g_alloca (num_series * sizeof (GogStyle *));
+	errors = g_alloca (num_series * sizeof (GogErrorBar *));
+	error_data = g_alloca (num_series * sizeof (ErrorBarData *));
+	lines = g_alloca (num_series * sizeof (GogSeriesLines *));
+	paths = g_alloca (num_series * sizeof (ArtVpath *));
+	
+	i = 0;
+	for (ptr = gog_1_5d_model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		vals[i] = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		lengths[i] = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		styles[i] = GOG_STYLED_OBJECT (series)->style;
+		errors[i] = series->errors;
+		if (gog_error_bar_is_visible (series->errors)) 
+			error_data[i] = g_malloc (sizeof (ErrorBarData) * lengths[i]);
+		else 
+			error_data[i] = NULL;
+		if (series->has_series_lines) {
+			if (!role)
+				role = gog_object_find_role_by_name (
+							GOG_OBJECT (series), "Series lines");
+			lines[i] = GOG_SERIES_LINES (
+					gog_object_get_child_by_role (GOG_OBJECT (series), role));
+			paths[i] = g_new (ArtVpath, lengths[i] * 2 - 1);
+			for (j = 0; j < lengths[i] - 1; j++) {
+				paths[i][j * 2].code = ART_MOVETO;
+				paths[i][j * 2 + 1].code = ART_LINETO;
+			}
+			paths[i][j * 2].code = ART_END;
+		} else
+			lines[i] = NULL;
+		i++;
+	}
+
+	/* work in coordinates drawing bars from the top */
+	col_step = 1. - model->overlap_percentage / 100.;
+	group_step = model->gap_percentage / 100.;
+	work.h = 1.0 / (1. + ((num_series - 1.0) * col_step) + group_step);
+	col_step *= work.h;
+	offset = (col_step * (num_series - 1.0) + work.h) / 2.0; 
+	data_scale = 1.0;
+
+	for (i = 0 ; i < num_elements ; i++) {
+		if (type == GOG_1_5D_AS_PERCENTAGE) {
+			sum = 0.;
+			for (j = num_series ; j-- > 0 ; ) {
+				if (i >= lengths[j])
+					continue;
+				tmp = vals[j][i];
+				if (!gog_axis_map_finite (map, tmp))
+					continue;
+				if (tmp > 0.)
+					sum += tmp;
+				else
+					sum -= tmp;
+			}
+
+			data_scale = (fabs (go_sub_epsilon (sum)) > 0.0) ? 1.0 / sum : 1.0;
+		}
+
+		pos_base = neg_base = 0.0;
+		for (j = 0 ; j < num_series ; j++) {
+			
+			work.y = (double) j * col_step + (double) i - offset + 1.0;
+			
+			if (i >= lengths[j])
+				continue;
+			tmp = vals[j][i];
+			if (!gog_axis_map_finite (map, tmp))
+				continue;
+			if (gog_error_bar_is_visible (errors[j])) {
+				gog_error_bar_get_bounds (errors[j], i, &minus, &plus);
+			}
+			tmp *= data_scale;
+			if (tmp >= 0.) {
+				work.x = pos_base;
+				work.w = tmp;
+				if (GOG_1_5D_NORMAL != type)
+					pos_base += tmp;
+			} else {
+				work.x = neg_base + tmp;
+				work.w = -tmp;
+				if (GOG_1_5D_NORMAL != type)
+					neg_base += tmp;
+			}
+
+			gog_renderer_push_style (view->renderer, styles[j]);
+			barcol_draw_rect (rend, is_vertical, x_map, y_map, &work);
+			gog_renderer_pop_style (view->renderer);
+			
+			if (gog_error_bar_is_visible (errors[j])) {
+				x = tmp > 0 ? work.x + work.w: work.x;
+				error_data[j][i].plus = plus * data_scale;
+				error_data[j][i].minus = minus * data_scale;
+				if (is_vertical) {
+					error_data[j][i].x = work.y + work.h / 2.0;
+					error_data[j][i].y = x;
+				} else {
+					error_data[j][i].x = x;
+					error_data[j][i].y = work.y + work.h / 2.0;
+				}
+			}
+			if (lines[j] != NULL) {
+				x = tmp > 0 ? work.x + work.w: work.x;
+				if (is_vertical) {
+					if (i > 0) {
+						paths[j][i * 2 - 1].x = gog_axis_map_to_view (x_map, work.y);
+						paths[j][i * 2 - 1].y = gog_axis_map_to_view (y_map, x);
+					}
+					paths[j][i * 2].x = gog_axis_map_to_view (x_map, work.y + work.h);
+					paths[j][i * 2].y = gog_axis_map_to_view (y_map, x);
+				} else {
+					if (i > 0) {
+						paths[j][i * 2 - 1].x = gog_axis_map_to_view (x_map, x);
+						paths[j][i * 2 - 1].y = gog_axis_map_to_view (y_map, work.y);
+					}
+					paths[j][i].x = gog_axis_map_to_view (x_map, x);
+					paths[j][i].x = gog_axis_map_to_view (y_map, work.y + work.h);
+				}
+			}
+		}
+	}
+	/*Now draw error bars and clean*/
+	for (i = 0; i < num_series; i++)
+		if (gog_error_bar_is_visible (errors[i])) {
+			for (j = 0; j < lengths[i]; j++)
+				gog_error_bar_render (errors[i], view->renderer,
+						      x_map, y_map,
+						      error_data[i][j].x , error_data[i][j].y,
+						      error_data[i][j].minus, error_data[i][j].plus,
+						      model->horizontal);
+			g_free (error_data[i]);
+		}
+
+	/* Draw series lines if any */
+	for (i = 0; i < num_series; i++)
+		if (lines[i] != NULL) {
+			gog_series_lines_render (lines[i], view->renderer, bbox, paths[i], FALSE);
+			g_free (paths[i]);
+		}
+
+	gog_chart_map_free (chart_map);
+}
+
+static gboolean
+gog_barcol_view_info_at_point (GogView *view, double x, double y,
+			       GogObject const *cur_selection,
+			       GogObject **obj, char **name)
+{
+	if (obj != NULL)
+		*obj = view->model;
+	if (name != NULL)
+		*name = g_strdup (gog_object_get_name (GOG_OBJECT (view->model)));
+	return TRUE;
+}
+
+static void
+gog_barcol_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render	  = gog_barcol_view_render;
+	view_klass->info_at_point = gog_barcol_view_info_at_point;
+	view_klass->clip	  = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogBarColView, gog_barcol_view,
+	gog_barcol_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-barcol.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,49 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-barcol.h
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_BARCOL_H
+#define GOG_BARCOL_H
+
+#include "gog-1.5d.h"
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GogPlot1_5d	base;
+
+	gboolean horizontal;
+	int	 overlap_percentage;
+	int	 gap_percentage;
+
+} GogBarColPlot;
+typedef GogPlot1_5dClass GogBarColPlotClass;
+
+#define GOG_BARCOL_PLOT_TYPE	(gog_barcol_plot_get_type ())
+#define GOG_BARCOL_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_BARCOL_PLOT_TYPE, GogBarColPlot))
+#define GOG_IS_PLOT_BARCOL(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_BARCOL_PLOT_TYPE))
+
+GType gog_barcol_plot_get_type (void);
+void  gog_barcol_plot_register_type (GTypeModule *module);
+void  gog_barcol_view_register_type (GTypeModule *module);
+
+G_END_DECLS
+
+#endif /* GOG_BARCOL_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,293 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-dropbar.c
+ *
+ * Copyright (C) 2005
+ *	Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-dropbar.h"
+#include <goffice/graph/gog-series-lines.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/utils/go-math.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+static GogObjectClass *gog_dropbar_parent_klass;
+
+static GType gog_dropbar_view_get_type (void);
+
+static char const *
+gog_dropbar_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name drop bar/col plot objects
+	 * eg The 2nd drop bar/col plot in a chart will be called
+	 * 	PlotDropBar2 */
+	return N_("PlotDropBar");
+}
+
+static void
+gog_dropbar_plot_class_init (GogPlot1_5dClass *gog_plot_1_5d_klass)
+{
+	GogObjectClass *gog_object_klass = (GogObjectClass *) gog_plot_1_5d_klass;
+	GogPlotClass   *plot_klass = (GogPlotClass *) gog_plot_1_5d_klass;
+	gog_dropbar_parent_klass = g_type_class_peek_parent (gog_plot_1_5d_klass);
+
+	gog_object_klass->type_name	= gog_dropbar_plot_type_name;
+	gog_object_klass->view_type	= gog_dropbar_view_get_type ();
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("Labels"), GOG_SERIES_SUGGESTED, TRUE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Start"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_START },
+			{ N_("End"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_END },
+		};
+		plot_klass->desc.series.dim = dimensions;
+		plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+	}
+
+	gog_plot_1_5d_klass->update_stacked_and_percentage = NULL;
+}
+
+static void
+gog_dropbar_plot_init (GogPlot1_5d *plot)
+{
+	plot->support_series_lines = FALSE;
+	plot->support_lines = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogDropBarPlot, gog_dropbar_plot,
+	gog_dropbar_plot_class_init, gog_dropbar_plot_init,
+	GOG_BARCOL_PLOT_TYPE)
+
+/*****************************************************************************/
+typedef GogPlotView		GogDropBarView;
+typedef GogPlotViewClass	GogDropBarViewClass;
+
+/**
+ * FIXME FIXME FIXME Wrong description
+ * barcol_draw_rect :
+ * @rend : #GogRenderer
+ * @flip :
+ * @base : #GogViewAllocation
+ * @rect : #GogViewAllocation
+ *
+ * A utility routine to build a vpath in @rect.  @rect is assumed to be in
+ * coordinates relative to @base with 0,0 as the upper left.  @flip transposes
+ * @rect and rotates it to put the origin in the bottom left.  Play fast and
+ * loose with coordinates to keep widths >= 1.  If we allow things to be less
+ * the background bleeds through.
+ **/
+static void
+barcol_draw_rect (GogRenderer *rend, gboolean flip,
+		  GogAxisMap *x_map,
+		  GogAxisMap *y_map,
+		  GogViewAllocation const *rect)
+{
+	ArtVpath path[6];
+	double x0, x1, y0, y1;
+
+	if (flip) {
+		x0 = gog_axis_map_to_view (x_map, rect->y);
+		x1 = gog_axis_map_to_view (x_map, rect->y + rect->h);
+		y0 = gog_axis_map_to_view (y_map, rect->x);
+		y1 = gog_axis_map_to_view (y_map, rect->x + rect->w);
+		if (fabs (x1 - x0) < .5) {
+			x1 += .25;
+			x0 -= .25;
+		}
+	} else {
+		x0 = gog_axis_map_to_view (x_map, rect->x);
+		x1 = gog_axis_map_to_view (x_map, rect->x + rect->w);
+		y0 = gog_axis_map_to_view (y_map, rect->y);
+		y1 = gog_axis_map_to_view (y_map, rect->y + rect->h);
+		if (fabs (y1 - y0) < .5) {
+			y1 += .25;
+			y0 -= .25;
+		}
+	}
+
+	path[0].x = path[3].x = path[4].x = x0;
+	path[1].x = path[2].x = x1;
+	path[0].y = path[1].y = path[4].y = y0;
+	path[2].y = path[3].y = y1;
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[2].code = ART_LINETO;
+	path[3].code = ART_LINETO;
+	path[4].code = ART_LINETO;
+	path[5].code = ART_END;
+	
+	gog_renderer_draw_sharp_polygon (rend, path, 
+					 fabs (x1 - x0) < 3. || fabs (y1 - y0) < 3.);
+}
+
+static void
+gog_dropbar_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogBarColPlot const *model = GOG_BARCOL_PLOT (view->model);
+	GogPlot1_5d const *gog_1_5d_model = GOG_PLOT1_5D (view->model);
+	GogSeries1_5d const *series;
+	GogAxisMap *x_map, *y_map;
+	GogViewAllocation work;
+	double *start_vals, *end_vals;
+	double x;
+	double step, offset, group_step;
+	unsigned i, j;
+	unsigned num_elements = gog_1_5d_model->num_elements;
+	unsigned num_series = gog_1_5d_model->num_series;
+	GSList *ptr;
+	unsigned n, tmp;
+	GogStyle *neg_style;
+	ArtVpath **path1, **path2;
+	GogObjectRole const *role = NULL;
+	GogSeriesLines **lines;
+
+	if (num_elements <= 0 || num_series <= 0)
+		return;
+
+	x_map = gog_axis_map_new (GOG_PLOT (model)->axis[0], 
+				  view->allocation.x, view->allocation.w);
+	y_map = gog_axis_map_new (GOG_PLOT (model)->axis[1], view->allocation.y + view->allocation.h, 
+				  -view->allocation.h);
+	
+	if (!(gog_axis_map_is_valid (x_map) &&
+	      gog_axis_map_is_valid (y_map))) {
+		gog_axis_map_free (x_map);
+		gog_axis_map_free (y_map);
+		return;
+	}
+
+	/* lines, if any will be rendered after the bars, so we build the paths
+	and render them at the end */
+	path1    = g_alloca (num_series * sizeof (ArtVpath *));
+	path2    = g_alloca (num_series * sizeof (ArtVpath *));
+	lines    = g_alloca (num_series * sizeof (GogSeriesLines *));
+	j = 0;
+	step = 1. - model->overlap_percentage / 100.;
+	group_step = model->gap_percentage / 100.;
+	work.w = 1.0 / (1. + ((num_series - 1.0) * step) + group_step);
+	step *= work.w;
+	offset = - (step * (num_series - 1.0) + work.w) / 2.0; 
+
+
+	for (ptr = gog_1_5d_model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		neg_style = gog_style_dup ((GOG_STYLED_OBJECT (series))->style);
+		neg_style->outline.color ^= 0xffffff00;
+		neg_style->fill.pattern.back ^= 0xffffff00;
+		neg_style->fill.pattern.fore ^= 0xffffff00;
+		x = offset;
+		start_vals = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		n = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		end_vals = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->base.values[2].data));
+		tmp = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[2].data));
+		if (n > tmp)
+			n = tmp;
+
+		if (series->has_lines) {
+			if (!role)
+				role = gog_object_find_role_by_name (
+							GOG_OBJECT (series), "Lines");
+			lines[j] = GOG_SERIES_LINES (
+					gog_object_get_child_by_role (GOG_OBJECT (series), role));
+			path1[j] = g_new (ArtVpath, n + 1);
+			path2[j] = g_new (ArtVpath, n + 1);
+			path1[j][0].code = path2[j][0].code = ART_MOVETO;
+			for (i = 1; i < n; i++)
+				path1[j][i].code =path2[j][i].code = ART_LINETO;
+			path1[j][n].code = path2[j][n].code = ART_END;
+		} else
+			path1[j] = NULL;
+		for (i = 0; i < n; i++) {
+			work.x = x;
+			work.y = start_vals[i];
+			work.h = end_vals[i] - work.y;
+			if (series->has_lines) {
+				if (model->horizontal) {
+					path1[j][i].y = path2[j][i].y =
+						gog_axis_map_to_view (y_map, work.x + work.w / 2.);
+					path1[j][i].x = gog_axis_map_to_view (x_map, start_vals[i]);
+					path2[j][i].x = gog_axis_map_to_view (x_map, end_vals[i]);
+				} else {
+					path1[j][i].x = path2[j][i].x =
+						gog_axis_map_to_view (x_map, work.x + work.w / 2.);
+					path1[j][i].y = gog_axis_map_to_view (y_map, start_vals[i]);
+					path2[j][i].y = gog_axis_map_to_view (y_map, end_vals[i]);
+				}
+			}
+			gog_renderer_push_style (view->renderer, (start_vals[i] <= end_vals[i])?
+						GOG_STYLED_OBJECT (series)->style: neg_style);
+					barcol_draw_rect (view->renderer, model->horizontal, x_map, y_map, &work);
+			barcol_draw_rect (view->renderer, model->horizontal, x_map, y_map, &work);
+			gog_renderer_pop_style (view->renderer);
+			x += 1;
+		}
+		offset += step;
+		g_object_unref (neg_style);
+		j++;
+	}
+	for (j = 0; j < num_series; j++)
+		if (path1[j] != NULL) {
+			gog_renderer_push_style (view->renderer,
+				gog_styled_object_get_style (GOG_STYLED_OBJECT (lines[j])));
+			gog_series_lines_render (lines[j], view->renderer, bbox, path1[j], TRUE);
+			gog_series_lines_render (lines[j], view->renderer, bbox, path2[j], FALSE);
+			gog_renderer_pop_style (view->renderer);
+			g_free (path2[j]);
+			g_free (path1[j]);
+		}
+
+	gog_axis_map_free (x_map);
+	gog_axis_map_free (y_map);
+}
+
+static gboolean
+gog_dropbar_view_info_at_point (GogView *view, double x, double y,
+			       GogObject const *cur_selection,
+			       GogObject **obj, char **name)
+{
+	if (obj != NULL)
+		*obj = view->model;
+	if (name != NULL)
+		*name = g_strdup (gog_object_get_name (GOG_OBJECT (view->model)));
+	return TRUE;
+}
+
+static void
+gog_dropbar_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render	  = gog_dropbar_view_render;
+	view_klass->info_at_point = gog_dropbar_view_info_at_point;
+	view_klass->clip	  = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogDropBarView, gog_dropbar_view,
+	gog_dropbar_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-dropbar.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-dropbar.h
+ *
+ * Copyright (C) 2005
+ *	Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_DROPBAR_H
+#define GOG_DROPBAR_H
+
+#include "gog-barcol.h"
+
+G_BEGIN_DECLS
+
+
+typedef GogBarColPlot GogDropBarPlot;
+typedef GogPlot1_5dClass GogDropBarPlotClass;
+
+#define GOG_DROPBAR_PLOT_TYPE	(gog_dropbar_plot_get_type ())
+#define GOG_DROPBAR_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_DROPBAR_PLOT_TYPE, GogDropBarPlot))
+#define GOG_IS_PLOT_DROPBAR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_DROPBAR_PLOT_TYPE))
+
+GType gog_dropbar_plot_get_type (void);
+void  gog_dropbar_plot_register_type (GTypeModule *module);
+void  gog_dropbar_view_register_type (GTypeModule *module);
+
+G_END_DECLS
+
+#endif	/* GOG_DROPBAR_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,593 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-line.c
+ *
+ * Copyright (C) 2003-2004 Emmanuel Pacaud (emmanuel.pacaud at univ-poitiers.fr)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-line.h"
+#include "gog-1.5d.h"
+#include <goffice/graph/gog-series-lines.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-marker.h>
+#include <goffice/utils/go-math.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+struct _GogLinePlot {
+	GogPlot1_5d	base;
+	gboolean	default_style_has_markers;
+};
+
+static GType gog_line_view_get_type (void);
+
+enum {
+	GOG_LINE_PROP_0,
+	GOG_LINE_PROP_DEFAULT_STYLE_HAS_MARKERS
+};
+
+typedef GogSeries1_5d		GogLineSeries;
+typedef GogSeries1_5dClass	GogLineSeriesClass;
+
+static GogStyledObjectClass *series_parent_klass;
+
+static void
+gog_line_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogSeries *series = GOG_SERIES (gso);
+	GogLinePlot const *plot;
+
+	series_parent_klass->init_style (gso, style);
+	if (series->plot == NULL)
+		return;
+
+	plot = GOG_LINE_PLOT (series->plot);
+	if (!plot->default_style_has_markers) {
+		style->disable_theming |= GOG_STYLE_MARKER;
+		if (style->marker.auto_shape) {
+			GOMarker *m = go_marker_new ();
+			go_marker_set_shape (m, GO_MARKER_NONE);
+			gog_style_set_marker (style, m);
+		}
+	}
+}
+
+static void
+gog_line_series_class_init (GogStyledObjectClass *gso_klass)
+{
+	series_parent_klass = g_type_class_peek_parent (gso_klass);
+	gso_klass->init_style = gog_line_series_init_style;
+}
+
+GType gog_line_series_get_type (void);
+GSF_DYNAMIC_CLASS (GogLineSeries, gog_line_series,
+	gog_line_series_class_init, NULL,
+	GOG_SERIES1_5D_TYPE)
+
+static char const *
+gog_line_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name bar/col plot objects
+	 * eg The 2nd line plot in a chart will be called
+	 * 	PlotLine2
+	 */
+	return N_("PlotLine");
+}
+
+static void
+gog_line_update_stacked_and_percentage (GogPlot1_5d *model,
+					double **vals, GogErrorBar **errors, unsigned const *lengths)
+{
+	unsigned i, j;
+	double abs_sum, minima, maxima, sum, tmp, errplus, errminus;
+
+	for (i = model->num_elements ; i-- > 0 ; ) {
+		abs_sum = sum = 0.;
+		minima =  DBL_MAX;
+		maxima = -DBL_MAX;
+		for (j = 0 ; j < model->num_series ; j++) {
+			if (i >= lengths[j])
+				continue;
+			tmp = vals[j][i];
+			if (!go_finite (tmp))
+				continue;
+		if (gog_error_bar_is_visible (errors[j])) {
+				gog_error_bar_get_bounds (errors[j], i, &errminus, &errplus);
+				errminus = errminus > 0. ? errminus: 0.;
+				errplus = errplus > 0. ? errplus : 0.;
+			} else
+				errplus = errminus = 0.;
+			sum += tmp;
+			abs_sum += fabs (tmp);
+			if (minima > sum - errminus)
+				minima = sum - errminus;
+			if (maxima < sum + errplus)
+				maxima = sum + errplus;
+		}
+		if ((model->type == GOG_1_5D_AS_PERCENTAGE) &&
+		    (go_sub_epsilon (abs_sum) > 0.)) {
+			if (model->minima > minima / abs_sum)
+				model->minima = minima / abs_sum;
+			if (model->maxima < maxima / abs_sum)
+				model->maxima = maxima / abs_sum;
+		} else {
+			if (model->minima > minima)
+				model->minima = minima;
+			if (model->maxima < maxima)
+				model->maxima = maxima;
+		}
+	}
+}
+
+static void
+gog_line_set_property (GObject *obj, guint param_id,
+		       GValue const *value, GParamSpec *pspec)
+{
+	GogLinePlot *line = GOG_LINE_PLOT (obj);
+	switch (param_id) {
+	case GOG_LINE_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		line->default_style_has_markers = g_value_get_boolean (value);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+static void
+gog_line_get_property (GObject *obj, guint param_id,
+		       GValue *value, GParamSpec *pspec)
+{
+	GogLinePlot const *line = GOG_LINE_PLOT (obj);
+	switch (param_id) {
+	case GOG_LINE_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		g_value_set_boolean (value, line->default_style_has_markers);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_line_plot_class_init (GogPlot1_5dClass *gog_plot_1_5d_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) gog_plot_1_5d_klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) gog_plot_1_5d_klass;
+	GogPlotClass *plot_klass = (GogPlotClass *) gog_plot_1_5d_klass;
+
+	gobject_klass->set_property = gog_line_set_property;
+	gobject_klass->get_property = gog_line_get_property;
+
+	g_object_class_install_property (gobject_klass, GOG_LINE_PROP_DEFAULT_STYLE_HAS_MARKERS,
+		g_param_spec_boolean ("default-style-has-markers", NULL,
+			"Should the default style of a series include markers",
+			TRUE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_klass->type_name	= gog_line_plot_type_name;
+	gog_klass->view_type	= gog_line_view_get_type ();
+
+	plot_klass->desc.series.style_fields = GOG_STYLE_LINE | GOG_STYLE_MARKER;
+	plot_klass->series_type = gog_line_series_get_type ();
+
+	gog_plot_1_5d_klass->update_stacked_and_percentage =
+		gog_line_update_stacked_and_percentage;
+}
+
+static void
+gog_line_plot_init (GogLinePlot *plot)
+{
+	plot->default_style_has_markers = TRUE;
+	GOG_PLOT1_5D (plot)->support_drop_lines = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogLinePlot, gog_line_plot,
+	gog_line_plot_class_init, gog_line_plot_init,
+	GOG_PLOT1_5D_TYPE)
+
+/*****************************************************************************/
+
+static char const *
+gog_area_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name bar/col plot objects
+	 * eg The 2nd line plot in a chart will be called
+	 * 	PlotArea2
+	 */
+	return N_("PlotArea");
+}
+
+static void
+gog_area_plot_class_init (GogObjectClass *gog_klass)
+{
+	GogPlotClass *plot_klass = (GogPlotClass *) gog_klass;
+
+	plot_klass->desc.series.style_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL;
+	plot_klass->series_type = gog_series1_5d_get_type ();
+
+	gog_klass->type_name	= gog_area_plot_type_name;
+}
+
+static void
+gog_area_plot_init (GogPlot *plot)
+{
+	plot->render_before_axes = TRUE;
+	GOG_PLOT1_5D (plot)->support_drop_lines = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogAreaPlot, gog_area_plot,
+	gog_area_plot_class_init, gog_area_plot_init,
+	GOG_LINE_PLOT_TYPE)
+
+/*****************************************************************************/
+
+typedef struct {
+	double 		x;
+	double 		y;
+	double		plus;
+	double 		minus;
+} ErrorBarData;
+
+typedef GogPlotView		GogLineView;
+typedef GogPlotViewClass	GogLineViewClass;
+
+static void
+gog_line_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogPlot1_5d const *model = GOG_PLOT1_5D (view->model);
+	GogPlot1_5dType const type = model->type;
+	GogSeries1_5d const *series;
+	GogChart *chart = GOG_CHART (view->model->parent);
+	GogChartMap *chart_map;
+	GogViewAllocation const *area;
+	unsigned i, j, k;
+	unsigned num_elements = model->num_elements;
+	unsigned num_series = model->num_series;
+	GSList *ptr;
+	double plus, minus;
+
+	double **vals;
+	ErrorBarData **error_data;
+	GogStyle **styles;
+	unsigned *lengths;
+	ArtVpath **path, **drop_paths;
+	GogErrorBar **errors;
+	GogObjectRole const *role = NULL;
+	GogSeriesLines **lines;
+
+	double y_zero, drop_lines_y_zero;
+	double abs_sum, sum, value;
+	gboolean is_null, is_area_plot;
+
+	GogAxisMap *x_map, *y_map;
+
+	is_area_plot = GOG_IS_PLOT_AREA (model);
+
+	if (num_elements <= 0 || num_series <= 0)
+		return;
+
+	area = gog_chart_view_get_plot_area (view->parent);
+	chart_map = gog_chart_map_new (chart, area, 
+				       GOG_PLOT (model)->axis[GOG_AXIS_X], 
+				       GOG_PLOT (model)->axis[GOG_AXIS_Y],
+				       NULL, FALSE);
+	if (!gog_chart_map_is_valid (chart_map)) {
+		gog_chart_map_free (chart_map);
+		return;
+	}
+	
+	x_map = gog_chart_map_get_axis_map (chart_map, 0);
+	y_map = gog_chart_map_get_axis_map (chart_map, 1);
+	
+	/* Draw drop lines from point to axis start. See comment in
+	 * GogXYPlotView::render */
+
+	gog_axis_map_get_extents (y_map, &drop_lines_y_zero, NULL); 
+	drop_lines_y_zero = gog_axis_map_to_view (y_map, drop_lines_y_zero);
+	y_zero = gog_axis_map_get_baseline (y_map); 
+
+	vals    = g_alloca (num_series * sizeof (double *));
+	error_data = g_alloca (num_series * sizeof (ErrorBarData *));
+	lengths = g_alloca (num_series * sizeof (unsigned));
+	styles  = g_alloca (num_series * sizeof (GogStyle *));
+	path    = g_alloca (num_series * sizeof (ArtVpath *));
+	errors	= g_alloca (num_series * sizeof (GogErrorBar *));
+	lines	= g_alloca (num_series * sizeof (GogSeriesLines *));
+	drop_paths = g_alloca (num_series * sizeof (ArtVpath *));
+
+	i = 0;
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+
+		vals[i] = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		lengths[i] = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		styles[i] = GOG_STYLED_OBJECT (series)->style;
+
+		if (!is_area_plot)
+			path[i] = g_malloc (sizeof (ArtVpath) * (lengths[i] + 2));
+		else if (type == GOG_1_5D_NORMAL)
+			path[i] = g_malloc (sizeof (ArtVpath) * (lengths[i] + 5));
+		else
+			path[i] = g_malloc (sizeof (ArtVpath) * (2 * lengths[i] + 3));
+
+		errors[i] = series->errors;
+		if (gog_error_bar_is_visible (series->errors)) 
+			error_data[i] = g_malloc (sizeof (ErrorBarData) * lengths[i]);
+		else
+			error_data[i] = NULL;
+		if (series->has_drop_lines) {
+			if (!role)
+				role = gog_object_find_role_by_name (
+							GOG_OBJECT (series), "Drop lines");
+			lines[i] = GOG_SERIES_LINES (
+					gog_object_get_child_by_role (GOG_OBJECT (series), role));
+			drop_paths [i] = g_malloc (sizeof (ArtVpath) * (num_elements * 2 + 1));
+			for (j = 0; j < num_elements; j++) {
+				drop_paths[i][2 * j].code = ART_MOVETO;
+				drop_paths[i][2 * j + 1].code = ART_LINETO;
+				drop_paths[i][2 * j + 1].y = drop_lines_y_zero; 
+			}
+			drop_paths[i][2 * j].code = ART_END;
+		} else
+			lines[i] = NULL;
+		i++;
+	}
+
+	for (j = 1; j <= num_elements; j++) {
+		sum = abs_sum = 0.0;
+		if (type == GOG_1_5D_AS_PERCENTAGE) {
+			for (i = 0; i < num_series; i++)
+				if (gog_axis_map_finite (y_map, vals[i][j-1]))
+					abs_sum += fabs (vals[i][j-1]);
+			is_null = (go_sub_epsilon (abs_sum) <= 0.);
+		} else
+			is_null = TRUE;
+
+		for (i = 0; i < num_series; i++) {
+			if (j > lengths[i])
+				continue;
+
+			if (vals[i] && gog_axis_map_finite (y_map, vals[i][j-1])) {
+				value = vals[i][j-1];
+				if (gog_error_bar_is_visible (errors[i])) {
+					gog_error_bar_get_bounds (errors[i], j - 1, &minus, &plus);
+				}
+			} else {
+				value = 0.0;
+				minus = -1.0;
+				plus = -1.;
+			}
+			k = 2 * lengths[i] - j + 1;
+
+			if (is_area_plot && (type != GOG_1_5D_NORMAL)) {
+				path[i][k].x = gog_axis_map_to_view (x_map, j);
+				path[i][k].code = ART_LINETO;
+
+				if (type == GOG_1_5D_STACKED)
+					path[i][k].y = gog_axis_map_finite (y_map, sum) ?
+						gog_axis_map_to_view (y_map, sum):
+						y_zero;
+				else
+					path[i][k].y = is_null ? 
+						y_zero :
+						(gog_axis_map_finite (y_map, sum) ?
+						 gog_axis_map_to_view (y_map, sum / abs_sum) :
+						 y_zero);
+			}
+
+			path[i][j].x = gog_axis_map_to_view (x_map, j);
+			if (type == GOG_1_5D_NORMAL && !is_area_plot) 
+				if (gog_axis_map_finite (y_map, vals[i][j-1])) 
+					if (j > 1 && path[i][j-1].code == ART_MOVETO_OPEN)
+						path[i][j].code = ART_MOVETO;
+					else
+						path[i][j].code = ART_LINETO;
+				else
+					path[i][j].code = ART_MOVETO_OPEN;
+			else
+				path[i][j].code = ART_LINETO;
+
+			sum += value;
+
+			if (gog_error_bar_is_visible (errors[i])) 
+				error_data[i][j-1].x = j;
+
+			switch (type) {
+				case GOG_1_5D_NORMAL :
+					path[i][j].y = gog_axis_map_finite (y_map, value) ?
+						gog_axis_map_to_view (y_map, value) :
+						y_zero;
+					if (gog_error_bar_is_visible (errors[i])) {
+						error_data[i][j - 1].y = value;
+						error_data[i][j - 1].minus = minus;
+						error_data[i][j - 1].plus = plus;
+					}
+					break;
+
+				case GOG_1_5D_STACKED :
+					path[i][j].y = gog_axis_map_finite (y_map, sum) ?
+						gog_axis_map_to_view (y_map, sum) :
+						y_zero;
+					if (gog_error_bar_is_visible (errors[i])) {
+						error_data[i][j - 1].y = sum;
+						error_data[i][j - 1].minus = minus;
+						error_data[i][j - 1].plus = plus;
+					}
+					break;
+
+				case GOG_1_5D_AS_PERCENTAGE :
+					path[i][j].y = is_null ? 
+						y_zero :
+						(gog_axis_map_finite (y_map, sum) ?
+						 gog_axis_map_to_view (y_map, sum  / abs_sum) :
+						 y_zero);
+					if (gog_error_bar_is_visible (errors[i])) {
+						error_data[i][j - 1].y = is_null ? 0. : sum / abs_sum;
+						error_data[i][j - 1].minus = is_null ? -1. : minus / abs_sum;
+						error_data[i][j - 1].plus = is_null ? -1. : plus / abs_sum;
+					}
+					break;
+			}
+			if (lines[i]) {
+				drop_paths[i][2 * j - 2].x = drop_paths[i][2 * j - 1].x = path[i][j].x;
+				drop_paths[i][2 * j - 2].y = path[i][j].y;
+			}
+
+		}
+	}
+	
+	gog_renderer_push_clip (view->renderer, 
+				gog_renderer_get_rectangle_vpath (&view->allocation));
+
+	for (i = 0; i < num_series; i++) {
+
+		if (lengths[i] == 0)
+			continue;
+
+		gog_renderer_push_style (view->renderer, styles[i]);
+
+		path[i][0].x = path[i][1].x;
+		path[i][0].y = path[i][1].y;
+		path[i][0].code = ART_MOVETO;
+
+		if (!is_area_plot) {
+			path[i][lengths[i] +1].code = ART_END;
+
+			gog_renderer_draw_path (view->renderer, path[i]);
+		} else {
+			switch (type) {
+				case GOG_1_5D_NORMAL :
+					j = lengths[i] + 1;
+					path[i][j].x = path[i][j-1].x;
+					path[i][j].y = y_zero;
+					path[i][j].code = ART_LINETO;
+					j++;
+					path[i][j].x = path[i][0].x;
+					path[i][j].y = y_zero;
+					path[i][j].code = ART_LINETO;
+					j++;
+					path[i][j].x = path[i][0].x;
+					path[i][j].y = path[i][0].y;
+					path[i][j].code = ART_LINETO;
+					path[i][j+1].code = ART_END;
+					break;
+
+			case GOG_1_5D_STACKED :
+			case GOG_1_5D_AS_PERCENTAGE :
+				j = 2 * lengths[i] + 1;
+				path[i][j].x = path[i][0].x;
+				path[i][j].y = path[i][0].y;
+				path[i][j].code = ART_LINETO;
+				path[i][j+1].code = ART_END;
+				break;
+			}
+			gog_renderer_draw_polygon (view->renderer, path[i], FALSE);
+		}
+
+		gog_renderer_pop_style (view->renderer);
+	}
+
+	/*Now draw drop lines */
+	for (i = 0; i < num_series; i++)
+		if (lines[i] != NULL) {
+			gog_renderer_push_style (view->renderer,
+				gog_styled_object_get_style (GOG_STYLED_OBJECT (lines[i])));
+			gog_series_lines_render (lines[i], view->renderer, bbox, drop_paths[i], FALSE);
+			gog_renderer_pop_style (view->renderer);
+			g_free (drop_paths[i]);
+		}
+
+	/*Now draw error bars */
+	for (i = 0; i < num_series; i++)
+		if (gog_error_bar_is_visible (errors[i]))
+			for (j = 0; j < lengths[i]; j++)
+				gog_error_bar_render (errors[i], view->renderer, x_map, y_map,
+						      error_data[i][j].x, error_data[i][j].y,
+						      error_data[i][j].minus, error_data[i][j].plus, 
+						      FALSE);
+
+	gog_renderer_pop_clip (view->renderer);
+
+	/*Now draw markers*/
+	if (!is_area_plot) { 
+		double x, y;
+		double x_margin_min, x_margin_max, y_margin_min, y_margin_max, margin;
+
+		margin = gog_renderer_line_size (view->renderer, 1.0);
+		x_margin_min = view->allocation.x - margin;
+		x_margin_max = view->allocation.x + view->allocation.w + margin;
+		y_margin_min = view->allocation.y - margin;
+		y_margin_max = view->allocation.y + view->allocation.h + margin;
+
+		for (i = 0; i < num_series; i++) {
+			if (lengths[i] == 0)
+				continue;
+
+			gog_renderer_push_style (view->renderer, styles[i]);
+
+			for (j = 0; j < lengths[i]; j++) {
+				x = path[i][j + 1].x;
+				y = path[i][j + 1].y;
+				if (x_margin_min <= x && x <= x_margin_max &&
+				    y_margin_min <= y && y <= y_margin_max &&
+				    path[i][j + 1].code != ART_MOVETO_OPEN) 
+					gog_renderer_draw_marker (view->renderer, x, y);
+			}
+			gog_renderer_pop_style (view->renderer);
+		}
+	}
+
+	for (i = 0; i < num_series; i++) {
+		g_free (path[i]);
+		g_free (error_data[i]);
+	}
+
+	gog_chart_map_free (chart_map);
+}
+
+static gboolean
+gog_line_view_info_at_point (GogView *view, double x, double y,
+			     GogObject const *cur_selection,
+			     GogObject **obj, char **name)
+{
+	if (obj != NULL)
+		*obj = view->model;
+	if (name != NULL)
+		*name = g_strdup (gog_object_get_name (GOG_OBJECT (view->model)));
+	return TRUE;
+}
+
+static void
+gog_line_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render	  = gog_line_view_render;
+	view_klass->info_at_point = gog_line_view_info_at_point;
+}
+
+GSF_DYNAMIC_CLASS (GogLineView, gog_line_view,
+	gog_line_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-line.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,56 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-line.h
+ *
+ * Copyright (C) 2003-2004 Emmanuel Pacaud (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_LINE_H
+#define GOG_LINE_H
+
+#include "gog-1.5d.h"
+
+G_BEGIN_DECLS
+
+typedef struct _GogLinePlot	GogLinePlot;
+typedef GogPlot1_5dClass	GogLinePlotClass;
+
+#define GOG_LINE_PLOT_TYPE	(gog_line_plot_get_type ())
+#define GOG_LINE_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_LINE_PLOT_TYPE, GogLinePlot))
+#define GOG_IS_PLOT_LINE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_LINE_PLOT_TYPE))
+
+GType gog_line_plot_get_type (void);
+void  gog_line_plot_register_type (GTypeModule *module);
+
+/*************************************************************************/
+
+#define GOG_AREA_PLOT_TYPE	(gog_area_plot_get_type ())
+#define GOG_AREA_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_AREA_PLOT_TYPE, GogAreaPlot))
+#define GOG_IS_PLOT_AREA(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_AREA_PLOT_TYPE))
+
+typedef GogLinePlot		GogAreaPlot;
+typedef GogLinePlotClass	GogAreaPlotClass;
+
+GType gog_area_plot_get_type (void);
+void  gog_area_plot_register_type (GTypeModule *module);
+
+void  gog_line_series_register_type (GTypeModule *module);
+void  gog_line_view_register_type   (GTypeModule *module);
+
+G_END_DECLS
+
+#endif /* GOG_LINE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,104 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkTable" id="gog_minmax_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="n_rows">1</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label61">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">_Gap:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">gap_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label63">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+	<child>
+	<widget class="GtkSpinButton" id="gap_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">Separation between groups as a percentage of bar/col width</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 0 500 10 10 10</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,396 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-minmax.c
+ *
+ * Copyright (C) 2005
+ *	Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-minmax.h"
+#include <goffice/graph/gog-series-lines.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/utils/go-marker.h>
+#include <goffice/app/go-plugin.h>
+
+#include <gtk/gtkspinbutton.h>
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+enum {
+	MINMAX_PROP_0,
+	MINMAX_PROP_GAP_PERCENTAGE,
+	MINMAX_PROP_HORIZONTAL,
+	MINMAX_PROP_DEFAULT_STYLE_HAS_MARKERS
+};
+
+static GogObjectClass *gog_minmax_parent_klass;
+
+static GType gog_minmax_view_get_type (void);
+
+typedef GogSeries1_5d		GogMinMaxSeries;
+typedef GogSeries1_5dClass	GogMinMaxSeriesClass;
+
+static GogStyledObjectClass *series_parent_klass;
+
+static void
+gog_minmax_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogSeries *series = GOG_SERIES (gso);
+	GogMinMaxPlot const *plot;
+
+	series_parent_klass->init_style (gso, style);
+	if (series->plot == NULL)
+		return;
+
+	plot = GOG_MINMAX_PLOT (series->plot);
+	if (!plot->default_style_has_markers) {
+		style->disable_theming |= GOG_STYLE_MARKER;
+		if (style->marker.auto_shape) {
+			GOMarker *m = go_marker_new ();
+			go_marker_set_shape (m, GO_MARKER_NONE);
+			gog_style_set_marker (style, m);
+		}
+	}
+}
+
+static void
+gog_minmax_series_class_init (GogStyledObjectClass *gso_klass)
+{
+	series_parent_klass = g_type_class_peek_parent (gso_klass);
+	gso_klass->init_style = gog_minmax_series_init_style;
+}
+
+GSF_DYNAMIC_CLASS (GogMinMaxSeries, gog_minmax_series,
+	gog_minmax_series_class_init, NULL,
+	GOG_SERIES1_5D_TYPE)
+
+/*****************************************************************************/
+
+static void
+gog_minmax_plot_set_property (GObject *obj, guint param_id,
+			      GValue const *value, GParamSpec *pspec)
+{
+	GogMinMaxPlot *minmax = GOG_MINMAX_PLOT (obj);
+
+	switch (param_id) {
+	case MINMAX_PROP_GAP_PERCENTAGE:
+		minmax->gap_percentage = g_value_get_int (value);
+		break;
+
+	case MINMAX_PROP_HORIZONTAL:
+		minmax->horizontal = g_value_get_boolean (value);
+		break;
+
+	case MINMAX_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		minmax->default_style_has_markers = g_value_get_boolean (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), TRUE);
+}
+
+static void
+gog_minmax_plot_get_property (GObject *obj, guint param_id,
+			      GValue *value, GParamSpec *pspec)
+{
+	GogMinMaxPlot *minmax = GOG_MINMAX_PLOT (obj);
+
+	switch (param_id) {
+	case MINMAX_PROP_GAP_PERCENTAGE:
+		g_value_set_int (value, minmax->gap_percentage);
+		break;
+	case MINMAX_PROP_HORIZONTAL:
+		g_value_set_boolean (value, minmax->horizontal);
+		break;
+	case MINMAX_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		g_value_set_boolean (value, minmax->default_style_has_markers);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static char const *
+gog_minmax_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name min/max line plot objects
+	 * eg The 2nd min/max line plot in a chart will be called
+	 * 	PlotMinMax2 */
+	return N_("PlotMinMax");
+}
+
+static GOData *
+gog_minmax_axis_get_bounds (GogPlot *plot, GogAxisType axis,
+			    GogPlotBoundInfo *bounds)
+{
+	GogPlot1_5d *model = GOG_PLOT1_5D (plot);
+	GogPlot1_5dClass *plot1_5d_klass = GOG_PLOT1_5D_CLASS (gog_minmax_parent_klass);
+	GOData *data;
+
+	data = (plot1_5d_klass->base.axis_get_bounds) (plot, axis, bounds); 
+	
+	if (axis == gog_axis_get_atype (gog_plot1_5d_get_index_axis (model))) {
+		bounds->val.minima -= .5;
+		bounds->val.maxima += .5;
+		bounds->logical.minima = -.5;
+		bounds->center_on_ticks = FALSE;
+	}
+
+	return data;
+}
+
+static void
+cb_gap_changed (GtkAdjustment *adj, GObject *minmax)
+{
+	g_object_set (minmax, "gap-percentage", (int)adj->value, NULL);
+}
+
+static void
+gog_minmax_plot_populate_editor (GogObject *item,
+				 GogEditor *editor,
+				 G_GNUC_UNUSED GogDataAllocator *dalloc,
+				 GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	GogMinMaxPlot *minmax = GOG_MINMAX_PLOT (item);
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_barcol"));
+	char	 *path = g_build_filename (dir, "gog-minmax-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_minmax_prefs", NULL, cc);
+
+	g_free (path);
+	if (gui == NULL)
+		return;
+
+	w = glade_xml_get_widget (gui, "gap_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), minmax->gap_percentage);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_gap_changed), minmax);
+
+	w = glade_xml_get_widget (gui, "gog_minmax_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	gog_editor_add_page (editor, w, _("Properties"));
+	(GOG_OBJECT_CLASS(gog_minmax_parent_klass)->populate_editor) (item, editor, dalloc, cc);
+}
+
+static gboolean
+gog_minmax_swap_x_and_y (GogPlot1_5d *model)
+{
+	return GOG_MINMAX_PLOT (model)->horizontal;
+}
+
+static void
+gog_minmax_plot_class_init (GogPlot1_5dClass *gog_plot_1_5d_klass)
+{
+	GObjectClass   *gobject_klass = (GObjectClass *) gog_plot_1_5d_klass;
+	GogObjectClass *gog_object_klass = (GogObjectClass *) gog_plot_1_5d_klass;
+	GogPlotClass   *plot_klass = (GogPlotClass *) gog_plot_1_5d_klass;
+	gog_minmax_parent_klass = g_type_class_peek_parent (gog_plot_1_5d_klass);
+
+	gobject_klass->set_property = gog_minmax_plot_set_property;
+	gobject_klass->get_property = gog_minmax_plot_get_property;
+
+	g_object_class_install_property (gobject_klass, MINMAX_PROP_GAP_PERCENTAGE,
+		g_param_spec_int ("gap-percentage", "gap percentage",
+			"The padding around each group as a percentage of their width",
+			0, 500, 150, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, MINMAX_PROP_HORIZONTAL,
+		g_param_spec_boolean ("horizontal", "horizontal",
+			"horizontal or vertical lines",
+			FALSE,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, MINMAX_PROP_DEFAULT_STYLE_HAS_MARKERS,
+		g_param_spec_boolean ("default-style-has-markers", NULL,
+			"Should the default style of a series include markers",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_object_klass->type_name	= gog_minmax_plot_type_name;
+	gog_object_klass->view_type	= gog_minmax_view_get_type ();
+	gog_object_klass->populate_editor	= gog_minmax_plot_populate_editor;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("Labels"), GOG_SERIES_SUGGESTED, TRUE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Min"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_LOW },
+			{ N_("Max"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_HIGH },
+		};
+		plot_klass->desc.series.dim = dimensions;
+		plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+	}
+	plot_klass->desc.series.style_fields = GOG_STYLE_LINE | GOG_STYLE_MARKER;
+	plot_klass->axis_get_bounds   		= gog_minmax_axis_get_bounds;
+	plot_klass->series_type = gog_minmax_series_get_type ();
+
+	gog_plot_1_5d_klass->swap_x_and_y = gog_minmax_swap_x_and_y;
+	gog_plot_1_5d_klass->update_stacked_and_percentage = NULL;
+}
+
+static void
+gog_minmax_plot_init (GogMinMaxPlot *minmax)
+{
+	minmax->default_style_has_markers = FALSE;
+	minmax->gap_percentage = 150;
+	GOG_PLOT1_5D (minmax)->support_lines = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogMinMaxPlot, gog_minmax_plot,
+	gog_minmax_plot_class_init, gog_minmax_plot_init,
+	GOG_PLOT1_5D_TYPE)
+
+/*****************************************************************************/
+typedef GogPlotView		GogMinMaxView;
+typedef GogPlotViewClass	GogMinMaxViewClass;
+
+static void
+gog_minmax_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogMinMaxPlot const *model = GOG_MINMAX_PLOT (view->model);
+	GogPlot1_5d const *gog_1_5d_model = GOG_PLOT1_5D (view->model);
+	GogSeries1_5d const *series;
+	GogAxisMap *x_map, *y_map;
+	gboolean is_vertical = ! (model->horizontal);
+	double *max_vals, *min_vals;
+	double x;
+	double step, offset;
+	unsigned i;
+	unsigned num_elements = gog_1_5d_model->num_elements;
+	unsigned num_series = gog_1_5d_model->num_series;
+	GSList *ptr;
+	unsigned n, tmp;
+	ArtVpath path[3], *Mpath, *mpath;
+	GogObjectRole const *role = NULL;
+	GogSeriesLines *lines;
+
+	if (num_elements <= 0 || num_series <= 0)
+		return;
+
+	x_map = gog_axis_map_new (GOG_PLOT (model)->axis[0], 
+				  view->allocation.x, view->allocation.w);
+	y_map = gog_axis_map_new (GOG_PLOT (model)->axis[1], view->allocation.y + view->allocation.h, 
+				  -view->allocation.h);
+	
+	if (!(gog_axis_map_is_valid (x_map) &&
+	      gog_axis_map_is_valid (y_map))) {
+		gog_axis_map_free (x_map);
+		gog_axis_map_free (y_map);
+		return;
+	}
+
+	step = 1. / (num_series + model->gap_percentage / 100.);
+	offset = - step * (num_series - 1) / 2.;
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[2].code = ART_END;
+
+	for (ptr = gog_1_5d_model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		x = offset;
+		min_vals = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		n = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		max_vals = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->base.values[2].data));
+		tmp = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[2].data));
+		if (n > tmp)
+			n = tmp;
+		Mpath = g_new (ArtVpath, n + 1);
+		mpath = g_new (ArtVpath, n + 1);
+		gog_renderer_push_style (view->renderer, GOG_STYLED_OBJECT (series)->style);
+
+		for (i = 0; i < n; i++) {
+
+			if (is_vertical) {
+				mpath[i].x = Mpath[i].x = path[0].x = path[1].x = gog_axis_map_to_view (x_map, x);
+				mpath[i].y = path[0].y = gog_axis_map_to_view (y_map, min_vals[i]);
+				Mpath[i].y = path[1].y = gog_axis_map_to_view (y_map, max_vals[i]);
+			} else {
+				mpath[i].y = Mpath[i].y = path[0].y = path[1].y =  gog_axis_map_to_view (y_map, x);
+				mpath[i].x = path[0].x = gog_axis_map_to_view (x_map, min_vals[i]);
+				Mpath[i].x =path[1].x = gog_axis_map_to_view (x_map, max_vals[i]);
+			}
+			gog_renderer_draw_sharp_path (view->renderer, path);
+			x += 1;
+		}
+		if (series->has_lines) {
+			if (!role)
+				role = gog_object_find_role_by_name (
+							GOG_OBJECT (series), "Lines");
+			lines = GOG_SERIES_LINES (
+					gog_object_get_child_by_role (GOG_OBJECT (series), role));
+			mpath[0].code = Mpath[0].code = ART_MOVETO;
+			for (i = 1; i < n; i++)
+				mpath[i].code = Mpath[i].code = ART_LINETO;
+			mpath[n].code = Mpath[n].code = ART_END;
+			gog_renderer_push_style (view->renderer,
+				gog_styled_object_get_style (GOG_STYLED_OBJECT (lines)));
+			gog_series_lines_render (lines, view->renderer, bbox, mpath, TRUE);
+			gog_series_lines_render (lines, view->renderer, bbox, Mpath, FALSE);
+			gog_renderer_pop_style (view->renderer);
+		}
+		if (model->default_style_has_markers)
+			for (i = 0; i < n; i++) {
+				gog_renderer_draw_marker (view->renderer, mpath[i].x, mpath[i].y);
+				gog_renderer_draw_marker (view->renderer, Mpath[i].x, Mpath[i].y);
+			}
+		gog_renderer_pop_style (view->renderer);
+		g_free (Mpath);
+		g_free (mpath);
+		offset += step;
+	}
+
+	gog_axis_map_free (x_map);
+	gog_axis_map_free (y_map);
+}
+
+static gboolean
+gog_minmax_view_info_at_point (GogView *view, double x, double y,
+			       GogObject const *cur_selection,
+			       GogObject **obj, char **name)
+{
+	if (obj != NULL)
+		*obj = view->model;
+	if (name != NULL)
+		*name = g_strdup (gog_object_get_name (GOG_OBJECT (view->model)));
+	return TRUE;
+}
+
+static void
+gog_minmax_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render	  = gog_minmax_view_render;
+	view_klass->info_at_point = gog_minmax_view_info_at_point;
+	view_klass->clip	  = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogMinMaxView, gog_minmax_view,
+	gog_minmax_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/gog-minmax.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,53 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-minmax.h
+ *
+ * Copyright (C) 2005
+ *	Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_MINMAX_H
+#define GOG_MINMAX_H
+
+#include "gog-1.5d.h"
+
+G_BEGIN_DECLS
+
+
+typedef struct {
+	GogPlot1_5d	base;
+
+	gboolean horizontal;
+	int	 gap_percentage;
+	gboolean default_style_has_markers;
+
+} GogMinMaxPlot;
+typedef GogPlot1_5dClass	GogMinMaxPlotClass;
+
+#define GOG_MINMAX_PLOT_TYPE	(gog_minmax_plot_get_type ())
+#define GOG_MINMAX_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_MINMAX_PLOT_TYPE, GogMinMaxPlot))
+#define GOG_IS_PLOT_MINMAX(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_MINMAX_PLOT_TYPE))
+
+GType gog_minmax_plot_get_type (void);
+void  gog_minmax_plot_register_type (GTypeModule *module);
+void  gog_minmax_view_register_type (GTypeModule *module);
+GType gog_minmax_series_get_type (void);
+void  gog_minmax_series_register_type (GTypeModule *module);
+
+G_END_DECLS
+
+#endif	/* GOG_MINMAX_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plot-types.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plot-types.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plot-types.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns:graph="http://www.gnumeric.org/graph_v2.dtd">
+	<Family _name="Line"	sample_image_file="linegraph.xpm" axis_set="xy"/>
+	<Family _name="Area"	sample_image_file="area.xpm" axis_set="xy"/>
+	<Family _name="Bar"	sample_image_file="bar.xpm" axis_set="xy" priority="80"/>
+	<Family _name="Column"	sample_image_file="column.xpm" axis_set="xy" priority="90"/>
+	<Family _name="DropBar"	sample_image_file="dropbar.xpm" axis_set="xy"/>
+	<Family _name="MinMax"	sample_image_file="minmax.xpm" axis_set="xy"/>
+
+	<Type _name="Unmarked Lines" row="1" col="1"
+		engine="GogLinePlot" family="Line"
+		_description="Line plot."
+		sample_image_file="chart_line_1_1.png">
+		<property name="type">normal</property>
+		<property name="default-style-has-markers">FALSE</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+	<Type _name="Unmarked Stacked Lines" row="1" col="2"
+		engine="GogLinePlot" family="Line"
+		_description="Stacked line plot."
+		sample_image_file="chart_line_1_2.png">
+		<property name="type">stacked</property>
+		<property name="default-style-has-markers">FALSE</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+	<Type _name="Unmarked Percentage Lines" row="1" col="3"
+		engine="GogLinePlot" family="Line"
+		_description="Percentage line plot."
+		sample_image_file="chart_line_1_3.png">
+		<property name="type">as_percentage</property>
+		<property name="default-style-has-markers">FALSE</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Lines" row="2" col="1"
+		engine="GogLinePlot" family="Line"
+		_description="Line plot."
+		sample_image_file="chart_line_2_1.png">
+		<property name="type">normal</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+	<Type _name="Stacked Lines" row="2" col="2"
+		engine="GogLinePlot" family="Line"
+		_description="Stacked line plot."
+		sample_image_file="chart_line_2_2.png">
+		<property name="type">stacked</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+	<Type _name="Percentage Lines" row="2" col="3"
+		engine="GogLinePlot" family="Line"
+		_description="Percentage line plot."
+		sample_image_file="chart_line_2_3.png">
+		<property name="type">as_percentage</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Areas" row="1" col="1"
+		engine="GogAreaPlot" family="Area"
+		_description="Area plot."
+		sample_image_file="chart_area_1_1.png">
+		<property name="type">normal</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+	<Type _name="Stacked Areas" row="1" col="2"
+		engine="GogAreaPlot" family="Area"
+		_description="Stacked area plot."
+		sample_image_file="chart_area_1_2.png">
+		<property name="type">stacked</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Percentage Areas" row="1" col="3"
+		engine="GogAreaPlot" family="Area"
+		_description="Percentage area plot."
+		sample_image_file="chart_area_1_3.png">
+		<property name="type">as_percentage</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+	<Type _name="Adjacent Bars" row="1" col="1"
+		engine="GogBarColPlot" family="Bar"
+		_description="Adjacent horizontal bars grouped by major and minor categories."
+		sample_image_file="chart_bar_1_1.png">
+		<property name="horizontal">True</property>
+		<property name="type">normal</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Stacked Bars" row="1" col="2"
+		engine="GogBarColPlot" family="Bar"
+		_description="Minor categories stacked in horizontal bars grouped by major category."
+		sample_image_file="chart_bar_1_2.png">
+		<property name="horizontal">True</property>
+		<property name="type">stacked</property>
+		<property name="overlap_percentage">100</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Percentage Bars" row="1" col="3"
+		engine="GogBarColPlot" family="Bar"
+		_description="Minor categories stacked as percentages of the minor total, in horizontal bars, grouped by major category."
+		sample_image_file="chart_bar_1_3.png">
+		<property name="horizontal">True</property>
+		<property name="type">as_percentage</property>
+		<property name="overlap_percentage">100</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<!-- No 3d yet
+	<Type _name="3D Adjacent Bars" row="2" col="1"
+		engine="GogBarColPlot" family="Bar"
+		_description="Adjacent horizontal 3D bars grouped by major and minor categories."
+		sample_image_file="chart_bar_2_1.png">
+		<property name="horizontal">True</property>
+		<property name="type">normal</property>
+		<property name="in_3d"/>
+	</Type>
+
+	<Type _name="3D Stacked Bars" row="2" col="2"
+		engine="GogBarColPlot" family="Bar"
+		_description="Minor categories stacked in horizontal 3D bars, grouped by major category."
+		sample_image_file="chart_bar_2_2.png">
+		<property name="horizontal">True</property>
+		<property name="type">stacked</property>
+		<property name="overlap_percentage">100</property>
+		<property name="in_3d"/>
+	</Type>
+
+	<Type _name="3D Percentage Bars" row="2" col="3"
+		engine="GogBarColPlot" family="Bar"
+		_description="Minor categories stacked as percentages of the minor total, in 3D horizontal bars, grouped by major category."
+		sample_image_file="chart_bar_2_3.png">
+		<property name="horizontal">True</property>
+		<property name="type">as_percentage</property>
+		<property name="overlap_percentage">100</property>
+		<property name="in_3d"/>
+	</Type>
+	-->
+
+	<Type _name="Adjacent Columns" row="1" col="1"
+		engine="GogBarColPlot" family="Column"
+		_description="Adjacent vertical columns grouped by major and minor categories."
+		sample_image_file="chart_column_1_1.png">
+		<property name="horizontal">False</property>
+		<property name="type">normal</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Stacked Columns" row="1" col="2"
+		engine="GogBarColPlot" family="Column"
+		_description="Minor categories stacked in vertical columns grouped by major category."
+		sample_image_file="chart_column_1_2.png">
+		<property name="horizontal">False</property>
+		<property name="type">stacked</property>
+		<property name="overlap_percentage">100</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Percentage Columns" row="1" col="3"
+		engine="GogBarColPlot" family="Column"
+		_description="Minor categories stacked as percentages of the minor total, in vertical columns, grouped by major category."
+		sample_image_file="chart_column_1_3.png">
+		<property name="horizontal">False</property>
+		<property name="type">as_percentage</property>
+		<property name="overlap_percentage">100</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Vertical Drop Bars" row="1" col="1"
+		engine="GogDropBarPlot" family="DropBar"
+		_description="Vertical drop bars."
+		sample_image_file="chart_dropbar_1_1.png">
+		<property name="horizontal">False</property>
+		<property name="type">normal</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Horizontal Drop Bars" row="1" col="2"
+		engine="GogDropBarPlot" family="DropBar"
+		_description="Horizontal drop bars."
+		sample_image_file="chart_dropbar_1_2.png">
+		<property name="horizontal">True</property>
+		<property name="type">normal</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Vertical Min Max Lines" row="1" col="1"
+		engine="GogMinMaxPlot" family="MinMax"
+		_description="Vertical min max lines."
+		sample_image_file="chart_minmax_1_1.png">
+		<property name="horizontal">False</property>
+		<property name="type">normal</property>
+		<property name="default-style-has-markers">False</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Marked Vertical Min Max Lines" row="2" col="1"
+		engine="GogMinMaxPlot" family="MinMax"
+		_description="Vertical min max lines with markers."
+		sample_image_file="chart_minmax_2_1.png">
+		<property name="horizontal">False</property>
+		<property name="type">normal</property>
+		<property name="default-style-has-markers">True</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Horizontal Min Max Lines" row="1" col="2"
+		engine="GogMinMaxPlot" family="MinMax"
+		_description="Horizontal min max lines."
+		sample_image_file="chart_minmax_1_2.png">
+		<property name="horizontal">True</property>
+		<property name="type">normal</property>
+		<property name="default-style-has-markers">False</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<Type _name="Marked Horizontal Min Max Lines" row="2" col="2"
+		engine="GogMinMaxPlot" family="MinMax"
+		_description="Horizontal min max lines with markers."
+		sample_image_file="chart_minmax_2_2.png">
+		<property name="horizontal">True</property>
+		<property name="type">normal</property>
+		<property name="default-style-has-markers">True</property>
+		<property name="guru-hints">backplane</property>
+	</Type>
+
+	<!-- No 3d yet
+	<Type _name="3D Adjacent Columns" row="2" col="1"
+		engine="GogBarColPlot" family="Column"
+		_description="Adjacent vertical 3D columns grouped by major and minor categories."
+		sample_image_file="chart_column_2_1.png">
+		<property name="horizontal">False</property>
+		<property name="type">normal</property>
+		<property name="in_3d"/>
+	</Type>
+
+	<Type _name="3D Stacked Columns" row="2" col="2"
+		engine="GogBarColPlot" family="Column"
+		_description="Minor categories stacked in vertical 3D columns, grouped by major category."
+		sample_image_file="chart_column_2_2.png">
+		<property name="horizontal">False</property>
+		<property name="type">stacked</property>
+		<property name="overlap_percentage">100</property>
+		<property name="in_3d"/>
+	</Type>
+
+	<Type _name="3D Percentage Columns" row="2" col="3"
+		engine="GogBarColPlot" family="Column"
+		_description="Minor categories stacked as percentages of the minor total, in 3D vertical bars, grouped by major category."
+		sample_image_file="chart_column_2_3.png">
+		<property name="horizontal">False</property>
+		<property name="type">as_percentage</property>
+		<property name="overlap_percentage">100</property>
+		<property name="in_3d"/>
+	</Type>
+	-->
+</Types>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plugin.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plugin.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_barcol/plugin.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin id="GOffice_plot_barcol">
+	<information>
+		<_name>Charting : Bar/Col/Line/Area</_name>
+		<_description>Line, Area, Bar and Column plots</_description>
+	</information>
+	<loader type="Gnumeric_Builtin:module">
+		<attribute name="module_file" value="barcol"/>
+	</loader>
+	<services>
+		<service type="plot_engine" id="GogLinePlot">
+			<information>
+				<_description>Line plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogAreaPlot">
+			<information>
+				<_description>Area plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogBarColPlot">
+			<information>
+				<_description>Bar/Col plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogDropBarPlot">
+			<information>
+				<_description>Drop Bar/Col plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogMinMaxPlot">
+			<information>
+				<_description>Min Max plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_type" id="1.5d">
+			<file>plot-types.xml</file>
+			<information>
+				<_description>Default 1.5d plot types</_description>
+			</information>
+		</service>
+	</services>
+</plugin>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,27 @@
+goffice_graph_boxplotdir = $(goffice_plugindir)/plot_boxes
+xmldir	 = $(goffice_graph_boxplotdir)
+gladedir = $(goffice_graph_boxplotdir)
+
+goffice_graph_boxplot_LTLIBRARIES = boxplot.la
+boxplot_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+boxplot_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+boxplot_la_SOURCES = gog-boxplot.c	\
+		    gog-boxplot.h
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+ at INTLTOOL_XML_RULE@
+
+dist_glade_DATA = gog-boxplot-prefs.glade
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice-plugins.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,593 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+goffice_graph_boxplotdir = $(goffice_plugindir)/plot_boxes
+xmldir = $(goffice_graph_boxplotdir)
+gladedir = $(goffice_graph_boxplotdir)
+
+goffice_graph_boxplot_LTLIBRARIES = boxplot.la
+boxplot_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+boxplot_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+boxplot_la_SOURCES = gog-boxplot.c	\
+		    gog-boxplot.h
+
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+dist_glade_DATA = gog-boxplot-prefs.glade
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+AM_CPPFLAGS = \
+    -I$(top_srcdir)		\
+    -I$(top_builddir)		\
+    $(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+subdir = plugins/plot_boxes
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(goffice_graph_boxplot_LTLIBRARIES)
+
+boxplot_la_DEPENDENCIES =
+am_boxplot_la_OBJECTS = gog-boxplot.lo
+boxplot_la_OBJECTS = $(am_boxplot_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-boxplot.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(boxplot_la_SOURCES)
+DATA = $(dist_glade_DATA) $(xml_DATA)
+
+DIST_COMMON = $(dist_glade_DATA) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice-plugins.mk Makefile.am
+SOURCES = $(boxplot_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice-plugins.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/plot_boxes/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+goffice_graph_boxplotLTLIBRARIES_INSTALL = $(INSTALL)
+install-goffice_graph_boxplotLTLIBRARIES: $(goffice_graph_boxplot_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_boxplotdir)
+	@list='$(goffice_graph_boxplot_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(goffice_graph_boxplotLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_boxplotdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(goffice_graph_boxplotLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_boxplotdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-goffice_graph_boxplotLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(goffice_graph_boxplot_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_boxplotdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_boxplotdir)/$$p; \
+	done
+
+clean-goffice_graph_boxplotLTLIBRARIES:
+	-test -z "$(goffice_graph_boxplot_LTLIBRARIES)" || rm -f $(goffice_graph_boxplot_LTLIBRARIES)
+	@list='$(goffice_graph_boxplot_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+boxplot.la: $(boxplot_la_OBJECTS) $(boxplot_la_DEPENDENCIES) 
+	$(LINK) -rpath $(goffice_graph_boxplotdir) $(boxplot_la_LDFLAGS) $(boxplot_la_OBJECTS) $(boxplot_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-boxplot.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_gladeDATA_INSTALL = $(INSTALL_DATA)
+install-dist_gladeDATA: $(dist_glade_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(gladedir)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+	  $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+	done
+
+uninstall-dist_gladeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+	  rm -f $(DESTDIR)$(gladedir)/$$f; \
+	done
+xmlDATA_INSTALL = $(INSTALL_DATA)
+install-xmlDATA: $(xml_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(xmldir)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f"; \
+	  $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+uninstall-xmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(xmldir)/$$f"; \
+	  rm -f $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_boxplotdir) $(DESTDIR)$(gladedir) $(DESTDIR)$(xmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-goffice_graph_boxplotLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_gladeDATA \
+	install-goffice_graph_boxplotLTLIBRARIES install-xmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_boxplotLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-goffice_graph_boxplotLTLIBRARIES clean-libtool ctags \
+	distclean distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-dist_gladeDATA \
+	install-exec install-exec-am \
+	install-goffice_graph_boxplotLTLIBRARIES install-info \
+	install-info-am install-man install-strip install-xmlDATA \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_boxplotLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,104 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkTable" id="gog_box_plot_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="n_rows">1</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label1">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">_Gap:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">gap_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label2">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="gap_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">Separation between groups as a percentage of bar/col width</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 0 500 10 10 10</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,432 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-boxplot.c
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-boxplot.h"
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/app/module-plugin-defs.h>
+
+#include <glib/gi18n.h>
+#include <glade/glade-xml.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtkenums.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+GOFFICE_PLUGIN_MODULE_HEADER;
+
+static GogObjectClass *gog_box_plot_parent_klass;
+
+static GType gog_box_plot_view_get_type (void);
+
+static void
+cb_gap_changed (GtkAdjustment *adj, GObject *boxplot)
+{
+	g_object_set (boxplot, "gap-percentage", (int)adj->value, NULL);
+}
+
+static gpointer
+gog_box_plot_pref (GogObject *obj,
+		   GogDataAllocator *dalloc, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	GogBoxPlot *boxplot = GOG_BOX_PLOT (obj);
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_boxes"));
+	char	 *path = g_build_filename (dir, "gog-boxplot-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_box_plot_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+
+	w = glade_xml_get_widget (gui, "gap_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), boxplot->gap_percentage);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_gap_changed), boxplot);
+
+	w = glade_xml_get_widget (gui, "gog_box_plot_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}
+
+static void
+gog_box_plot_populate_editor (GogObject *item,
+			      GogEditor *editor,
+			      G_GNUC_UNUSED GogDataAllocator *dalloc,
+			      GOCmdContext *cc)
+{
+	gog_editor_add_page (editor, gog_box_plot_pref (item, dalloc, cc), _("Properties"));
+	
+	(GOG_OBJECT_CLASS(gog_box_plot_parent_klass)->populate_editor) (item, editor, dalloc, cc);
+}
+
+enum {
+	BOX_PLOT_PROP_0,
+	BOX_PLOT_PROP_GAP_PERCENTAGE,
+};
+
+typedef struct {
+	GogSeries base;
+	int	 gap_percentage;
+	double vals[5];
+} GogBoxPlotSeries;
+typedef GogSeriesClass GogBoxPlotSeriesClass;
+
+#define GOG_BOX_PLOT_SERIES_TYPE	(gog_box_plot_series_get_type ())
+#define GOG_BOX_PLOT_SERIES(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_BOX_PLOT_SERIES_TYPE, GogBoxPlotSeries))
+#define IS_GOG_BOX_PLOT_SERIES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_BOX_PLOT_SERIES_TYPE))
+
+GType gog_box_plot_series_get_type (void);
+
+static char const *
+gog_box_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name box-plot objects
+	 * eg The 2nd box-plot in a chart will be called
+	 * 	BoxPlot2 */
+	return N_("Box-Plot");
+}
+
+static void
+gog_box_plot_set_property (GObject *obj, guint param_id,
+			      GValue const *value, GParamSpec *pspec)
+{
+	GogBoxPlot *boxplot = GOG_BOX_PLOT (obj);
+
+	switch (param_id) {
+	case BOX_PLOT_PROP_GAP_PERCENTAGE:
+		boxplot->gap_percentage = g_value_get_int (value);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), TRUE);
+}
+
+static void
+gog_box_plot_get_property (GObject *obj, guint param_id,
+			      GValue *value, GParamSpec *pspec)
+{
+	GogBoxPlot *boxplot = GOG_BOX_PLOT (obj);
+
+	switch (param_id) {
+	case BOX_PLOT_PROP_GAP_PERCENTAGE:
+		g_value_set_int (value, boxplot->gap_percentage);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_box_plot_update (GogObject *obj)
+{
+	GogBoxPlot *model = GOG_BOX_PLOT (obj);
+	GogBoxPlotSeries *series;
+	GSList *ptr;
+	double min, max;
+	unsigned num_series = 0;
+
+	min =  DBL_MAX;
+	max = -DBL_MAX;
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = GOG_BOX_PLOT_SERIES (ptr->data);
+		if (!gog_series_is_valid (GOG_SERIES (series)) ||
+			!go_data_vector_get_len (GO_DATA_VECTOR (series->base.values[0].data)))
+			continue;
+		num_series++;
+		if (series->vals[0] < min)
+			min = series->vals[0];
+		if (series->vals[4] > max)
+			max = series->vals[4];
+	}
+	if (min == DBL_MAX)
+		min = 0.;
+	if (max == -DBL_MAX)
+		max = 1.;
+	if (model->min != min || model->max != max || model->num_series != num_series) {
+		model->min = min;
+		model->max = max;
+		model->num_series = num_series;
+		gog_axis_bound_changed (model->base.axis[0], GOG_OBJECT (model));
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static GOData *
+gog_box_plot_axis_get_bounds (GogPlot *plot, GogAxisType axis,
+			      GogPlotBoundInfo *bounds)
+{
+	GogBoxPlot *model = GOG_BOX_PLOT (plot);
+
+	bounds->val.minima = model->min;
+	bounds->val.maxima = model->max;
+	bounds->is_discrete = FALSE;
+
+	return NULL;
+}
+
+static void
+gog_box_plot_class_init (GogPlotClass *gog_plot_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) gog_plot_klass;
+	GogObjectClass *gog_object_klass = (GogObjectClass *) gog_plot_klass;
+	GogPlotClass   *plot_klass = (GogPlotClass *) gog_plot_klass;
+
+	gog_box_plot_parent_klass = g_type_class_peek_parent (gog_plot_klass);
+
+	gobject_klass->set_property = gog_box_plot_set_property;
+	gobject_klass->get_property = gog_box_plot_get_property;
+	g_object_class_install_property (gobject_klass, BOX_PLOT_PROP_GAP_PERCENTAGE,
+		g_param_spec_int ("gap-percentage", "gap percentage",
+			"The padding around each group as a percentage of their width",
+			0, 500, 150, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_object_klass->type_name	= gog_box_plot_type_name;
+	gog_object_klass->view_type	= gog_box_plot_view_get_type ();
+	gog_object_klass->update	= gog_box_plot_update;
+	gog_object_klass->populate_editor = gog_box_plot_populate_editor;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("Values"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES },
+		};
+		plot_klass->desc.series.dim = dimensions;
+		plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+	}
+	plot_klass->desc.num_series_min = 1;
+	plot_klass->desc.num_series_max = G_MAXINT;
+	plot_klass->series_type = gog_box_plot_series_get_type ();
+	plot_klass->axis_set = GOG_AXIS_SET_X;
+	plot_klass->desc.series.style_fields	= GOG_STYLE_LINE | GOG_STYLE_FILL;
+	plot_klass->axis_get_bounds   		= gog_box_plot_axis_get_bounds;
+}
+
+static void
+gog_box_plot_init (GogBoxPlot *model)
+{
+	model->gap_percentage = 150;
+}
+
+GSF_DYNAMIC_CLASS (GogBoxPlot, gog_box_plot,
+	gog_box_plot_class_init, gog_box_plot_init,
+	GOG_PLOT_TYPE)
+
+/*****************************************************************************/
+typedef GogPlotView		GogBoxPlotView;
+typedef GogPlotViewClass	GogBoxPlotViewClass;
+
+static void
+gog_box_plot_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogBoxPlot const *model = GOG_BOX_PLOT (view->model);
+	GogAxisMap *x_map;
+	GogBoxPlotSeries const *series;
+	double hrect, hser, y, hbar;
+	double min, qu1, med, qu3, max;
+	ArtVpath	path[6];
+	GogViewAllocation rect;
+	GSList *ptr;
+	double line_width;
+	GogStyle *style;
+
+	x_map = gog_axis_map_new (GOG_PLOT (model)->axis[0], 
+				  view->allocation.x, view->allocation.w);
+
+	if (!gog_axis_map_is_valid (x_map)) {
+		gog_axis_map_free (x_map);
+		return;
+	}
+
+	hser = view->allocation.h / model->num_series;
+	hrect = hser / (1. + model->gap_percentage / 100.);
+	y = view->allocation.y + view->allocation.h - hser / 2.;
+	hrect /= 2.;
+	hbar = hrect / 2.;
+	path[0].code = ART_MOVETO;
+	path[1].code = ART_LINETO;
+	path[3].code = ART_LINETO;
+	path[4].code = ART_LINETO;
+	path[5].code = ART_END;
+		
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)) ||
+			!go_data_vector_get_len (GO_DATA_VECTOR (series->base.values[0].data)))
+			continue;
+		style = GOG_STYLED_OBJECT (series)->style;
+		line_width = style->line.width / 2.;
+		gog_renderer_push_style (view->renderer, style);
+		min = gog_axis_map_to_view (x_map, series->vals[0]);
+		qu1 = gog_axis_map_to_view (x_map, series->vals[1]);
+		med = gog_axis_map_to_view (x_map, series->vals[2]);
+		qu3 = gog_axis_map_to_view (x_map, series->vals[3]);
+		max = gog_axis_map_to_view (x_map, series->vals[4]);
+		rect.x = qu1;
+		rect.w = qu3 - qu1;
+		rect.y = y - hrect;
+		rect.h = 2* hrect;
+		gog_renderer_draw_sharp_rectangle (view->renderer, &rect);
+		path[2].code = ART_END;
+		path[0].y = y + hbar;
+		path[1].y = y - hbar;
+		path[0].x = path[1].x = min;
+		gog_renderer_draw_sharp_path (view->renderer, path);
+		path[0].x = path[1].x = max;
+		gog_renderer_draw_sharp_path (view->renderer, path);
+		path[0].y = path[1].y = y;
+		path[0].x = qu3;
+		gog_renderer_draw_sharp_path (view->renderer, path);
+		path[0].x = min;
+		path[1].x = qu1;
+		gog_renderer_draw_sharp_path (view->renderer, path);
+		path[0].x = path[1].x = med;
+		path[0].y = y + hrect;
+		path[1].y = y - hrect;
+		gog_renderer_draw_sharp_path (view->renderer, path);
+		path[2].code = ART_LINETO;
+		path[0].x = path[3].x = path[4].x = qu1;
+		path[1].x = path[2].x = qu3;
+		path[0].y = path[1].y = path[4].y = y - hrect;
+		path[2].y = path[3].y = y + hrect;
+		gog_renderer_draw_sharp_path (view->renderer, path);
+		gog_renderer_pop_style (view->renderer);
+		y -= hser;
+	}
+	gog_axis_map_free (x_map);
+}
+
+static void
+gog_box_plot_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render	  = gog_box_plot_view_render;
+	view_klass->clip	  = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogBoxPlotView, gog_box_plot_view,
+	gog_box_plot_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)
+
+/*****************************************************************************/
+
+static GogObjectClass *gog_box_plot_series_parent_klass;
+
+static gint
+float_compare (const double *a, const double *b)
+{
+        if (*a < *b)
+                return -1;
+	else if (*a == *b)
+	        return 0;
+	else
+	        return 1;
+}
+
+static void
+gog_box_plot_series_update (GogObject *obj)
+{
+	double *vals = NULL;
+	int len = 0;
+	GogBoxPlotSeries *series = GOG_BOX_PLOT_SERIES (obj);
+	unsigned old_num = series->base.num_elements;
+
+	if (series->base.values[0].data != NULL) {
+		vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[0].data));
+		len = go_data_vector_get_len 
+			(GO_DATA_VECTOR (series->base.values[0].data));
+	}
+	series->base.num_elements = len;
+
+	if (len > 0) {
+		double *svals = g_new (double, len), x, fpos, residual;
+		int n, pos;
+		memcpy (svals, vals, len * sizeof (double));
+		qsort (svals, len, sizeof (double), (int (*) (const void *, const void *))&float_compare);
+		for (n = 0, x = 0.; n < 5; n++, x+= 0.25) { 
+			fpos = (len - 1) * x;
+			pos = (int) fpos;
+			residual = fpos - pos;
+
+			if (residual == 0.0 || pos + 1 >= len)
+				series->vals[n] = svals[pos];
+			else
+				series->vals[n] = (1 - residual) * svals[pos] + residual * svals[pos + 1];
+		}
+		g_free (svals);
+	}
+	/* queue plot for redraw */
+	gog_object_request_update (GOG_OBJECT (series->base.plot));
+	if (old_num != series->base.num_elements)
+		gog_plot_request_cardinality_update (series->base.plot);
+
+	if (gog_box_plot_series_parent_klass->update)
+		gog_box_plot_series_parent_klass->update (obj);
+}
+
+static void
+gog_box_plot_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	((GogStyledObjectClass*) gog_box_plot_series_parent_klass)->init_style (gso, style);
+
+	style->outline.dash_type = GO_LINE_NONE;
+}
+
+static void
+gog_box_plot_series_class_init (GogObjectClass *obj_klass)
+{
+	GogStyledObjectClass *gso_klass = (GogStyledObjectClass*) obj_klass;
+
+	gog_box_plot_series_parent_klass = g_type_class_peek_parent (obj_klass);
+	obj_klass->update = gog_box_plot_series_update;
+	gso_klass->init_style = gog_box_plot_series_init_style;
+}
+
+GSF_DYNAMIC_CLASS (GogBoxPlotSeries, gog_box_plot_series,
+	gog_box_plot_series_class_init, NULL,
+	GOG_SERIES_TYPE)
+
+/* Plugin initialization */
+
+G_MODULE_EXPORT void
+go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
+{
+	GTypeModule *module = go_plugin_get_type_module (plugin);
+	gog_box_plot_register_type (module);
+	gog_box_plot_view_register_type (module);
+	gog_box_plot_series_register_type (module);
+}
+
+G_MODULE_EXPORT void
+go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
+{
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/gog-boxplot.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,46 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-boxplot.h
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_BOX_PLOT_H
+#define GOG_BOX_PLOT_H
+
+#include <goffice/graph/gog-plot-impl.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GogPlot	base;
+
+	unsigned  num_series;
+	double min, max;
+	int gap_percentage;
+} GogBoxPlot;
+typedef GogPlotClass GogBoxPlotClass;
+
+#define GOG_BOX_PLOT_TYPE	(gog_box_plot_get_type ())
+#define GOG_BOX_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_BOX_PLOT_TYPE, GogBoxPlot))
+#define GOG_IS_BOX_PLOT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_BOX_PLOT_TYPE))
+
+GType gog_box_plot_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_BOX_PLOT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plot-types.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plot-types.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plot-types.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns:graph="http://www.gnumeric.org/graph_v2.dtd">
+	<Family _name="BoxPlot"	sample_image_file="boxplot.xpm" axis_set="x"/>
+
+	<Type _name="BoxPlots" row="1" col="1"
+		engine="GogBoxPlot" family="BoxPlot"
+		_description="Box-Plot."
+		sample_image_file="chart_boxplot_1_1.png">
+		<property name="guru-hints">backplane</property>
+	</Type>
+</Types>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plugin.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plugin.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_boxes/plugin.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin id="GOffice_plot_boxes">
+	<information>
+		<_name>Charting : Box-Plots</_name>
+		<_description>Box-Plots</_description>
+	</information>
+	<loader type="Gnumeric_Builtin:module">
+		<attribute name="module_file" value="boxplot"/>
+	</loader>
+	<services>
+		<service type="plot_engine" id="GogBoxPlot">
+			<information>
+				<_description>Box-plot plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_type" id="boxplot">
+			<file>plot-types.xml</file>
+			<information>
+				<_description>Default surface plot types</_description>
+			</information>
+		</service>
+	</services>
+</plugin>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,29 @@
+goffice_graph_piedir = $(goffice_plugindir)/plot_pie
+xmldir	 = $(goffice_graph_piedir)
+gladedir = $(goffice_graph_piedir)
+
+goffice_graph_pie_LTLIBRARIES = pie.la
+pie_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+pie_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+pie_la_SOURCES = \
+	gog-pie.c		\
+	gog-pie.h		\
+	gog-pie-prefs.c
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+ at INTLTOOL_XML_RULE@
+
+dist_glade_DATA = gog-pie-prefs.glade gog-ring-prefs.glade gog-pie-series.glade
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice-plugins.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,597 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+goffice_graph_piedir = $(goffice_plugindir)/plot_pie
+xmldir = $(goffice_graph_piedir)
+gladedir = $(goffice_graph_piedir)
+
+goffice_graph_pie_LTLIBRARIES = pie.la
+pie_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+pie_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+pie_la_SOURCES = \
+	gog-pie.c		\
+	gog-pie.h		\
+	gog-pie-prefs.c
+
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+dist_glade_DATA = gog-pie-prefs.glade gog-ring-prefs.glade gog-pie-series.glade
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+AM_CPPFLAGS = \
+    -I$(top_srcdir)		\
+    -I$(top_builddir)		\
+    $(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+subdir = plugins/plot_pie
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(goffice_graph_pie_LTLIBRARIES)
+
+pie_la_DEPENDENCIES =
+am_pie_la_OBJECTS = gog-pie.lo gog-pie-prefs.lo
+pie_la_OBJECTS = $(am_pie_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-pie-prefs.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-pie.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(pie_la_SOURCES)
+DATA = $(dist_glade_DATA) $(xml_DATA)
+
+DIST_COMMON = $(dist_glade_DATA) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice-plugins.mk Makefile.am
+SOURCES = $(pie_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice-plugins.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/plot_pie/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+goffice_graph_pieLTLIBRARIES_INSTALL = $(INSTALL)
+install-goffice_graph_pieLTLIBRARIES: $(goffice_graph_pie_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_piedir)
+	@list='$(goffice_graph_pie_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(goffice_graph_pieLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_piedir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(goffice_graph_pieLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_piedir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-goffice_graph_pieLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(goffice_graph_pie_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_piedir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_piedir)/$$p; \
+	done
+
+clean-goffice_graph_pieLTLIBRARIES:
+	-test -z "$(goffice_graph_pie_LTLIBRARIES)" || rm -f $(goffice_graph_pie_LTLIBRARIES)
+	@list='$(goffice_graph_pie_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+pie.la: $(pie_la_OBJECTS) $(pie_la_DEPENDENCIES) 
+	$(LINK) -rpath $(goffice_graph_piedir) $(pie_la_LDFLAGS) $(pie_la_OBJECTS) $(pie_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-pie-prefs.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-pie.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_gladeDATA_INSTALL = $(INSTALL_DATA)
+install-dist_gladeDATA: $(dist_glade_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(gladedir)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+	  $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+	done
+
+uninstall-dist_gladeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+	  rm -f $(DESTDIR)$(gladedir)/$$f; \
+	done
+xmlDATA_INSTALL = $(INSTALL_DATA)
+install-xmlDATA: $(xml_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(xmldir)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f"; \
+	  $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+uninstall-xmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(xmldir)/$$f"; \
+	  rm -f $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_piedir) $(DESTDIR)$(gladedir) $(DESTDIR)$(xmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-goffice_graph_pieLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_gladeDATA \
+	install-goffice_graph_pieLTLIBRARIES install-xmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_pieLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-goffice_graph_pieLTLIBRARIES clean-libtool ctags \
+	distclean distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-dist_gladeDATA \
+	install-exec install-exec-am \
+	install-goffice_graph_pieLTLIBRARIES install-info \
+	install-info-am install-man install-strip install-xmlDATA \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_pieLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,214 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-pie-prefs.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-pie.h"
+
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/app/go-plugin.h>
+#include <gtk/gtkspinbutton.h>
+#include <gtk/gtktogglebutton.h>
+
+GtkWidget *gog_pie_series_element_pref   (GogPieSeriesElement *element, GOCmdContext *cc);
+
+static void
+cb_element_separation_changed (GtkAdjustment *adj, GObject *element)
+{
+	g_object_set (element, "separation", adj->value / 100., NULL);
+}
+
+GtkWidget *
+gog_pie_series_element_pref (GogPieSeriesElement *element, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_pie"));
+	char	 *path = g_build_filename (dir, "gog-pie-series.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_pie_series_element_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+	
+	w = glade_xml_get_widget (gui, "separation_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), element->separation * 100.);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_element_separation_changed), element);
+
+	w = glade_xml_get_widget (gui, "gog_pie_series_element_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}
+
+/****************************************************************************/
+GtkWidget *gog_pie_plot_pref   (GogPiePlot *plot, GOCmdContext *cc);
+
+static void
+cb_default_separation_changed (GtkAdjustment *adj, GObject *pie)
+{
+	g_object_set (pie, "default-separation", adj->value / 100., NULL);
+}
+
+static void
+cb_rotation_changed (GtkAdjustment *adj, GObject *pie)
+{
+	g_object_set (pie, "initial-angle", adj->value, NULL);
+}
+
+
+static void
+cb_use_style_toggled (GtkToggleButton *button, GObject *series)
+{
+	g_object_set (series, "vary-style-by-element",
+		gtk_toggle_button_get_active (button), NULL);
+}
+
+static void
+gog_pie_plot_pref_signal_connect (GogPiePlot *pie, GladeXML *gui)
+{
+	GtkWidget *w;
+	
+	w = glade_xml_get_widget (gui, "rotation_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), pie->initial_angle);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_rotation_changed), pie);
+
+	w = glade_xml_get_widget (gui, "separation_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), pie->default_separation * 100.);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_default_separation_changed), pie);
+
+	w = glade_xml_get_widget (gui, "vary_style_by_element");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), pie->base.vary_style_by_element);
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_use_style_toggled), pie);
+}
+
+GtkWidget *
+gog_pie_plot_pref (GogPiePlot *pie, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_pie"));
+	char	 *path = g_build_filename (dir, "gog-pie-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_pie_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+
+	gog_pie_plot_pref_signal_connect (pie, gui);
+
+	w = glade_xml_get_widget (gui, "gog_pie_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}
+
+/****************************************************************************/
+
+GtkWidget *gog_ring_plot_pref   (GogRingPlot *ring, GOCmdContext *cc);
+
+static void
+cb_center_size_changed (GtkAdjustment *adj, GObject *ring)
+{
+	g_object_set (ring, "center-size", adj->value/100., NULL);
+}
+
+
+GtkWidget *
+gog_ring_plot_pref (GogRingPlot *ring, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_pie"));
+	char	 *path = g_build_filename (dir, "gog-ring-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_ring_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+
+	gog_pie_plot_pref_signal_connect (GOG_PIE_PLOT (ring), gui);
+
+	w = glade_xml_get_widget (gui, "center_size_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), ring->center_size * 100);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_center_size_changed), ring);
+
+	w = glade_xml_get_widget (gui, "gog_ring_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}
+
+/****************************************************************************/
+
+GtkWidget *gog_pie_series_pref (GogPieSeries *series, GOCmdContext *cc);
+
+static void
+cb_separation_changed (GtkAdjustment *adj, GObject *pie)
+{
+	g_object_set (pie, "separation", adj->value, NULL);
+}
+
+GtkWidget *
+gog_pie_series_pref (GogPieSeries *pie, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_pie"));
+	char	 *path = g_build_filename (dir, "gog-pie-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_pie_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+
+	w = glade_xml_get_widget (gui, "rotation_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), pie->initial_angle);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_rotation_changed), pie);
+
+	w = glade_xml_get_widget (gui, "separation_spinner");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), pie->separation);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_separation_changed), pie);
+
+	gtk_widget_hide (glade_xml_get_widget (gui, "vary_style_by_element"));
+
+	w = glade_xml_get_widget (gui, "gog_pie_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,198 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkTable" id="gog_pie_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="n_rows">3</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label61">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">Slices start _at:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">rotation_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label63">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">degrees</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkCheckButton" id="vary_style_by_element">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">_Vary colors by slice</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label64">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">_Slice Separation:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">separation_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label65">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="rotation_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">Degrees counter clockwise from 3 O'Clock</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">True</property>
+	  <property name="adjustment">0 0 360 10 10 10</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="separation_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">The default amount each slice is separated from the center measured as a percentage of the radius of the pie</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 0 500 10 50 50</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-series.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-series.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie-series.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,117 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkVBox" id="gog_pie_series_element_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">6</property>
+
+      <child>
+	<widget class="GtkTable" id="separation_table">
+      <property name="visible">True</property>
+      <property name="n_rows">1</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label64">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">_Separation:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">separation_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label65">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="separation_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">The amount this slice is separated from the center measured as a percentage of the radius of the pie</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 0 500 10 50 50</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,739 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-pie.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-pie.h"
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/app/module-plugin-defs.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+#include <math.h>
+
+static GObjectClass *ppe_parent_klass;
+
+typedef GogSeriesElementClass GogPieSeriesElementClass;
+enum {
+	ELEMENT_PROP_0,
+	ELEMENT_SEPARATION,
+};
+
+static void
+gog_pie_series_element_set_property (GObject *obj, guint param_id,
+				     GValue const *value, GParamSpec *pspec)
+{
+	GogPieSeriesElement *pse = GOG_PIE_SERIES_ELEMENT (obj);
+
+	switch (param_id) {
+	case ELEMENT_SEPARATION :
+		pse->separation = g_value_get_float (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_pie_series_element_get_property (GObject *obj, guint param_id,
+				     GValue *value, GParamSpec *pspec)
+{
+	GogPieSeriesElement *pse = GOG_PIE_SERIES_ELEMENT (obj);
+
+	switch (param_id) {
+	case ELEMENT_SEPARATION :
+		g_value_set_float (value, pse->separation);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+extern gpointer gog_pie_series_element_pref (GogPieSeriesElement *element, GOCmdContext *cc);
+static gpointer
+gog_pie_series_element_populate_editor (GogObject *gobj,
+					GogEditor *editor,
+			       GOCmdContext *cc)
+{
+	GtkWidget *widget = gog_pie_series_element_pref (GOG_PIE_SERIES_ELEMENT (gobj), cc);
+	gog_editor_add_page (editor, widget, _("Settings"));
+	return widget;
+}
+
+static void
+gog_pie_series_element_class_init (GogPieSeriesElementClass *klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) klass;
+
+	gobject_klass->set_property = gog_pie_series_element_set_property;
+	gobject_klass->get_property = gog_pie_series_element_get_property;
+	
+	ppe_parent_klass 	= g_type_class_peek_parent (klass);
+	klass->gse_populate_editor	= gog_pie_series_element_populate_editor;
+
+	g_object_class_install_property (gobject_klass, ELEMENT_SEPARATION,
+		g_param_spec_float ("separation", "separation",
+			"Amount a slice is extended as a percentage of the radius",
+			0, G_MAXFLOAT, 0.,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+}
+
+GSF_DYNAMIC_CLASS (GogPieSeriesElement, gog_pie_series_element,
+	gog_pie_series_element_class_init, NULL /*gog_pie_series_element_init*/,
+	GOG_SERIES_ELEMENT_TYPE)
+
+/*****************************************************************************/
+
+typedef struct {
+	GogPlotClass	base;
+} GogPiePlotClass;
+
+enum {
+	PLOT_PROP_0,
+	PLOT_PROP_INITIAL_ANGLE,
+	PLOT_PROP_DEFAULT_SEPARATION,
+	PLOT_PROP_IN_3D
+};
+
+GOFFICE_PLUGIN_MODULE_HEADER;
+
+static GObjectClass *pie_parent_klass;
+static GType gog_pie_view_get_type (void);
+
+static void
+gog_pie_plot_set_property (GObject *obj, guint param_id,
+			   GValue const *value, GParamSpec *pspec)
+{
+	GogPiePlot *pie = GOG_PIE_PLOT (obj);
+	float f;
+
+	switch (param_id) {
+	case PLOT_PROP_INITIAL_ANGLE :
+		pie->initial_angle = g_value_get_float (value);
+		break;
+	case PLOT_PROP_DEFAULT_SEPARATION :
+		f = g_value_get_float (value);
+		pie->default_separation = MIN (f, 5.);
+		break;
+	case PLOT_PROP_IN_3D :
+		pie->in_3d = g_value_get_boolean (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+
+	/* none of the attributes triggers a size change yet.
+	 * When we add data labels we'll need it */
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_pie_plot_get_property (GObject *obj, guint param_id,
+			  GValue *value, GParamSpec *pspec)
+{
+	GogPiePlot *pie = GOG_PIE_PLOT (obj);
+
+	switch (param_id) {
+	case PLOT_PROP_INITIAL_ANGLE :
+		g_value_set_float (value, pie->initial_angle);
+		break;
+	case PLOT_PROP_DEFAULT_SEPARATION :
+		g_value_set_float (value, pie->default_separation);
+		break;
+	case PLOT_PROP_IN_3D :
+		g_value_set_boolean (value, pie->in_3d);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static char const *
+gog_pie_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	return N_("PlotPie");
+}
+
+extern gpointer gog_pie_plot_pref (GogPiePlot *pie, GOCmdContext *cc);
+static void
+gog_pie_plot_populate_editor (GogObject *item, 
+			      GogEditor *editor,
+		    G_GNUC_UNUSED GogDataAllocator *dalloc,
+		    GOCmdContext *cc)
+{
+	gog_editor_add_page (editor, 
+			     gog_pie_plot_pref (GOG_PIE_PLOT (item), cc),
+			     _("Properties"));
+}
+
+static void
+gog_pie_plot_update (GogObject *obj)
+{
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_pie_plot_class_init (GogPlotClass *plot_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) plot_klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) plot_klass;
+
+	pie_parent_klass = g_type_class_peek_parent (plot_klass);
+	gobject_klass->set_property = gog_pie_plot_set_property;
+	gobject_klass->get_property = gog_pie_plot_get_property;
+
+	gog_klass->update	= gog_pie_plot_update;
+	gog_klass->type_name	= gog_pie_plot_type_name;
+	gog_klass->populate_editor = gog_pie_plot_populate_editor;
+	gog_klass->view_type	= gog_pie_view_get_type ();
+
+	g_object_class_install_property (gobject_klass, PLOT_PROP_INITIAL_ANGLE,
+		g_param_spec_float ("initial-angle", "initial-angle",
+			"Degrees clockwise from 12 O'Clock.",
+			0, G_MAXFLOAT, 0.,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, PLOT_PROP_DEFAULT_SEPARATION,
+		g_param_spec_float ("default-separation", "default-separation",
+			"Default amount a slice is extended as a percentage of the radius",
+			0, G_MAXFLOAT, 0.,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, PLOT_PROP_IN_3D,
+		g_param_spec_boolean ("in-3d", "in-3d",
+			"Draw 3d wedges",
+			FALSE,
+			G_PARAM_READWRITE));
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("Labels"), GOG_SERIES_SUGGESTED, TRUE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Values"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES }
+		};
+		plot_klass->desc.series.dim = dimensions;
+		plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+		plot_klass->desc.series.style_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL;
+	}
+	plot_klass->desc.num_series_min = 1;
+	plot_klass->desc.num_series_max = 1;
+	plot_klass->series_type  = gog_pie_series_get_type ();
+}
+
+static void
+gog_pie_plot_init (GogPiePlot *pie)
+{
+	pie->base.vary_style_by_element = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogPiePlot, gog_pie_plot,
+	gog_pie_plot_class_init, gog_pie_plot_init,
+	GOG_PLOT_TYPE)
+
+/*****************************************************************************/
+
+enum {
+	RING_PLOT_PROP_0,
+	RING_PLOT_PROP_CENTER_SIZE,
+};
+
+typedef GogPiePlotClass	GogRingPlotClass;
+static GObjectClass *ring_parent_klass;
+
+static void
+gog_ring_plot_set_property (GObject *obj, guint param_id,
+			    GValue const *value, GParamSpec *pspec)
+{
+	GogRingPlot *ring = GOG_RING_PLOT (obj);
+
+	switch (param_id) {
+	case RING_PLOT_PROP_CENTER_SIZE :
+		ring->center_size = g_value_get_float (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+
+	/* none of the attributes triggers a size change yet.
+	 * When we add data labels we'll need it */
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_ring_plot_get_property (GObject *obj, guint param_id,
+			    GValue *value, GParamSpec *pspec)
+{
+	GogRingPlot *ring = GOG_RING_PLOT (obj);
+
+	switch (param_id) {
+	case RING_PLOT_PROP_CENTER_SIZE :
+		g_value_set_float (value, ring->center_size);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static char const *
+gog_ring_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	return N_("PlotRing");
+}
+
+extern gpointer gog_ring_plot_pref (GogRingPlot *ring, GOCmdContext *cc);
+static void
+gog_ring_plot_populate_editor (GogObject *item,
+			       GogEditor *editor,
+		      G_GNUC_UNUSED GogDataAllocator *dalloc,
+		      GOCmdContext *cc)
+{
+	gog_editor_add_page (editor,
+			     gog_ring_plot_pref (GOG_RING_PLOT (item), cc),
+			     _("Properties"));
+}
+
+static void
+gog_ring_plot_class_init (GogPiePlotClass *pie_plot_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) pie_plot_klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) pie_plot_klass;
+	GogPlotClass *plot_klass = (GogPlotClass *) pie_plot_klass;
+
+	ring_parent_klass = g_type_class_peek_parent (pie_plot_klass);
+	gobject_klass->set_property = gog_ring_plot_set_property;
+	gobject_klass->get_property = gog_ring_plot_get_property;
+
+	gog_klass->type_name	= gog_ring_plot_type_name;
+	gog_klass->populate_editor = gog_ring_plot_populate_editor;
+
+	g_object_class_install_property (gobject_klass, RING_PLOT_PROP_CENTER_SIZE,
+		g_param_spec_float ("center-size", "center-size",
+			"Size of the center hole as a percentage of the radius",
+			0, 100., 0.,
+			G_PARAM_READWRITE));
+
+	plot_klass->desc.num_series_min = 1;
+	plot_klass->desc.num_series_max = G_MAXINT;
+	plot_klass->desc.series.style_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL;
+}
+
+static void
+gog_ring_plot_init (GogRingPlot *ring)
+{
+	ring->center_size = 0.5;
+}
+
+GSF_DYNAMIC_CLASS (GogRingPlot, gog_ring_plot,
+	gog_ring_plot_class_init, gog_ring_plot_init,
+	GOG_PIE_PLOT_TYPE)
+
+/*****************************************************************************/
+typedef GogPlotView		GogPieView;
+typedef GogPlotViewClass	GogPieViewClass;
+
+#define MAX_ARC_SEGMENTS 64
+
+static void
+gog_pie_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogPiePlot const *model = GOG_PIE_PLOT (view->model);
+	GogPieSeries const *series = NULL;
+	double separated_cx, separated_cy, cx, cy, r, dt, tmp, theta, len, *vals, scale;
+	double default_sep;
+	unsigned elem, j, n, k;
+	ArtVpath path [MAX_ARC_SEGMENTS*2 + 4];
+	GogTheme *theme = gog_object_get_theme (GOG_OBJECT (model));
+	GogStyle *style;
+	GSList *ptr;
+	unsigned num_series = 0;
+	unsigned index, mirror = 0; /* init mirror because gcc is silly */
+	double center_radius;
+	double center_size = 0.0;
+	double r_ext, r_int, r_tot;
+	double outline_width_max;
+	gboolean has_hole;
+	double separation_max, separation;
+	GogPieSeriesElement *gpse;
+	GList const *overrides;
+
+	/* compute number of valid series */
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+	  	if (!gog_series_is_valid (GOG_SERIES (ptr->data)))
+			continue;
+		num_series++;
+	}
+
+	if (num_series <= 0)
+		return;
+
+	separation_max = .0;
+	outline_width_max = .0;
+	if ((style = gog_styled_object_get_style (GOG_STYLED_OBJECT (series))))
+		outline_width_max = gog_renderer_line_size (view->renderer, style->outline.width);
+	for (overrides = gog_series_get_overrides (GOG_SERIES (series));
+	     overrides != NULL; 
+	     overrides = overrides->next) {
+		separation = GOG_PIE_SERIES_ELEMENT (overrides->data)->separation;
+		if (separation_max < separation)
+			separation_max = separation; 
+		style = gog_styled_object_get_style (GOG_STYLED_OBJECT (overrides->data));
+		if (outline_width_max < style->outline.width)
+			outline_width_max = style->outline.width;
+	}
+	if (separation_max < -model->default_separation)
+		separation_max = -model->default_separation;
+
+	if (GOG_IS_RING_PLOT (model))
+		center_size = GOG_RING_PLOT(model)->center_size;
+	else if (num_series > 1)
+		num_series = 1;
+
+	/* centre things */
+	cx = view->allocation.x + view->allocation.w/2.;
+	cy = view->allocation.y + view->allocation.h/2.;
+
+	r_tot = view->allocation.h;
+	if (r_tot > view->allocation.w)
+		r_tot = view->allocation.w;
+	r_tot /= 2. * (1. + model->default_separation + separation_max);
+	default_sep = r_tot * model->default_separation;
+	center_radius = r_tot * center_size;
+	r = r_tot * (1. - center_size);
+
+	elem = model->base.index_num;
+	index = 1;
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		if (index > num_series) /* people snuck extra series into a pie */
+			break;
+		
+		if (num_series == index) 
+			r -= outline_width_max / 2.0;
+		
+		has_hole = center_radius > 0. || index > 1;
+		r_int = center_radius + r * ((double)index - 1.0) / (double)num_series;
+		r_ext = center_radius + r * (double)index / (double)num_series;
+
+		theta = (model->initial_angle + series->initial_angle) * 2. * M_PI / 360. - M_PI / 2.;
+
+		scale = 2 * M_PI / series->total;
+		vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[1].data));
+
+		style = GOG_STYLED_OBJECT (series)->style;
+		if (model->base.vary_style_by_element)
+			style = gog_style_dup (style);
+		gog_renderer_push_style (view->renderer, style);
+
+		overrides = gog_series_get_overrides (GOG_SERIES (series));
+		for (k = 0 ; k < series->base.num_elements; k++) {
+			len = fabs (vals[k]) * scale;
+			if (!go_finite (len) || len < 1e-3)
+				continue;
+			
+			gpse = NULL;
+			if ((overrides != NULL) &&
+			    (GOG_SERIES_ELEMENT (overrides->data)->index == k)) {
+				gpse = GOG_PIE_SERIES_ELEMENT (overrides->data);
+				overrides = overrides->next;
+				gog_renderer_push_style (view->renderer, 
+					gog_styled_object_get_style (
+						GOG_STYLED_OBJECT (gpse)));
+			} else if (model->base.vary_style_by_element)
+				gog_theme_fillin_style (theme, style, GOG_OBJECT (series),
+							model->base.index_num + k, FALSE);
+				
+			/* only separate the outer ring */
+			separated_cx = cx;
+			separated_cy = cy;
+			if (num_series == index && (default_sep > 0. || gpse != NULL)) { 
+
+				separation = default_sep;
+
+				if (gpse != NULL) 
+					separation += gpse->separation * r_tot;
+
+				separated_cx += separation * cos (theta + len/2.);
+				separated_cy += separation * sin (theta + len/2.);
+			}
+			theta += len;
+
+			n = MAX_ARC_SEGMENTS * len / (2 * M_PI);
+			if (n < 6)
+				n = 6;
+			else if (n > MAX_ARC_SEGMENTS)
+				n = MAX_ARC_SEGMENTS;
+
+			dt = (double)-len / (double)n;
+			path[0].code = ART_MOVETO;
+			path[0].x = separated_cx;
+			path[0].y = separated_cy;
+			if (has_hole) {
+				path[0].x += r_int * cos (theta);
+				path[0].y += r_int * sin (theta);
+				mirror = 2*n + 3;
+				path[mirror].code = ART_END;
+			} else {
+				path[n+2].code = ART_LINETO;
+				path[n+2].x = separated_cx;
+				path[n+2].y = separated_cy;
+				path[n+3].code = ART_END;
+			}
+			for (tmp = theta, j = 0; j++ <= n ; tmp += dt) {
+				path[j].code = ART_LINETO;
+				path[j].x = separated_cx + r_ext * cos (tmp);
+				path[j].y = separated_cy + r_ext * sin (tmp);
+				if (has_hole) {
+					path[mirror - j].code = ART_LINETO;
+					path[mirror - j].x = separated_cx + r_int * cos (tmp);
+					path[mirror - j].y = separated_cy + r_int * sin (tmp);
+				}
+			}
+
+			gog_renderer_draw_polygon (view->renderer, path,
+						   r * len < 5 /* drop outline for thin segments */);
+
+			if (gpse != NULL)
+				gog_renderer_pop_style (view->renderer);
+		}
+
+		gog_renderer_pop_style (view->renderer);
+		if (model->base.vary_style_by_element)
+			g_object_unref (style);
+
+		index ++;
+	}
+}
+
+static gboolean
+gog_pie_view_info_at_point (GogView *view, double x, double y,
+			    GogObject const *cur_selection,
+			    GogObject **obj, char **name)
+{
+	GogPiePlot const *model = GOG_PIE_PLOT (view->model);
+	GogPieSeries const *series = NULL;
+	double *vals, scale, len = 0, theta, r = view->allocation.h;
+	GSList *ptr;
+	unsigned i;
+
+	if (r > view->allocation.w)
+		r = view->allocation.w;
+	r /= 2.;
+	x -= view->allocation.x + view->allocation.w/2.;
+	y -= view->allocation.y + view->allocation.h/2.;
+
+	if ((x*x + y*y) > (r*r))
+		return FALSE;
+
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next)
+		if (gog_series_is_valid (GOG_SERIES (series = ptr->data)))
+			break;
+	if (ptr == NULL)
+		return FALSE;
+	
+	/* TODO what follows does not work for ring plots, so exit here */
+	if (GOG_IS_RING_PLOT (view->model)) {
+		if (obj != NULL)
+			*obj = view->model;
+		if (name != NULL)
+			*name = NULL;
+		return TRUE;
+	}
+
+	theta = (atan2 (y, x) * 180 / M_PI - model->initial_angle + 90.) / 360.;
+	if (theta < 0)
+		theta += 1.;
+
+	vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[1].data));
+	scale = 1 / series->total;
+	for (i = 0 ; i < series->base.num_elements; i++) {
+		len = fabs (vals[i]) * scale;
+		if (go_finite (len) && len > 1e-3) {
+			theta -= len;
+			if (theta < 0)
+				break;
+		}
+	}
+
+	if (obj != NULL) {
+		if (cur_selection == view->model) {
+			*obj = GOG_OBJECT (gog_series_get_element (GOG_SERIES (series), i));
+			if (*obj == NULL) {
+				*obj = g_object_new (gog_pie_series_element_get_type (),
+						     "index", i, NULL);
+				gog_object_add_by_name (GOG_OBJECT (series), "Point", *obj);
+			}
+		} else
+			*obj = view->model;
+	}
+	if (name != NULL)
+		*name = g_strdup_printf (_("%s point %d\nValue %g (%g)"),
+					 gog_object_get_name (GOG_OBJECT (series)),
+					 i+1, vals[i], len);
+
+	return TRUE;
+}
+
+static void
+gog_pie_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render = gog_pie_view_render;
+	view_klass->info_at_point  = gog_pie_view_info_at_point;
+}
+
+GSF_DYNAMIC_CLASS (GogPieView, gog_pie_view,
+	gog_pie_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)
+
+/*****************************************************************************/
+
+typedef GogSeriesClass GogPieSeriesClass;
+enum {
+	SERIES_PROP_0,
+	SERIES_PROP_INITIAL_ANGLE,
+	SERIES_PROP_SEPARATION,
+};
+
+static GogObjectClass *series_parent_klass;
+static void
+gog_pie_series_set_property (GObject *obj, guint param_id,
+			     GValue const *value, GParamSpec *pspec)
+{
+	GogPieSeries *pie = GOG_PIE_SERIES (obj);
+
+	switch (param_id) {
+	case SERIES_PROP_INITIAL_ANGLE :
+		pie->initial_angle = g_value_get_float (value);
+		break;
+	case SERIES_PROP_SEPARATION :
+		pie->separation = g_value_get_float (value);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	/* none of the attributes triggers a size change yet.
+	 * When we add data labels we'll need it */
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_pie_series_get_property (GObject *obj, guint param_id,
+			  GValue *value, GParamSpec *pspec)
+{
+	GogPieSeries *pie = GOG_PIE_SERIES (obj);
+
+	switch (param_id) {
+	case SERIES_PROP_INITIAL_ANGLE :
+		g_value_set_float (value, pie->initial_angle);
+		break;
+	case SERIES_PROP_SEPARATION :
+		g_value_set_float (value, pie->separation);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_pie_series_update (GogObject *obj)
+{
+	double *vals = NULL, total;
+	int len = 0;
+	GogPieSeries *series = GOG_PIE_SERIES (obj);
+	unsigned old_num = series->base.num_elements;
+
+	if (series->base.values[1].data != NULL) {
+		vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[1].data));
+		len = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+	}
+	series->base.num_elements = len;
+
+	for (total = 0. ; len-- > 0 ;)
+		if (go_finite (vals[len]))
+			total += fabs (vals[len]);
+	series->total = total;
+
+	/* queue plot for redraw */
+	gog_object_request_update (GOG_OBJECT (series->base.plot));
+	if (old_num != series->base.num_elements)
+		gog_plot_request_cardinality_update (series->base.plot);
+
+	if (series_parent_klass->update)
+		series_parent_klass->update (obj);
+}
+
+static void
+gog_pie_series_class_init (GObjectClass *gobject_klass)
+{
+	GogObjectClass *gog_klass = (GogObjectClass *)gobject_klass;
+	GogSeriesClass *series_klass = (GogSeriesClass *)gobject_klass;
+
+	series_parent_klass = g_type_class_peek_parent (gobject_klass);
+	gog_klass->update = gog_pie_series_update;
+	series_klass->series_element_type = GOG_PIE_SERIES_ELEMENT_TYPE;
+
+	gobject_klass->set_property = gog_pie_series_set_property;
+	gobject_klass->get_property = gog_pie_series_get_property;
+
+	g_object_class_install_property (gobject_klass, SERIES_PROP_INITIAL_ANGLE,
+		g_param_spec_float ("initial-angle", "initial-angle",
+			"Degrees clockwise from 12 O'Clock.",
+			0, G_MAXFLOAT, 0.,
+			G_PARAM_READWRITE));
+	g_object_class_install_property (gobject_klass, SERIES_PROP_SEPARATION,
+		g_param_spec_float ("separation", "separation",
+			"Default amount a slice is extended as a percentage of the radius",
+			0, G_MAXFLOAT, 0.,
+			G_PARAM_READWRITE));
+}
+
+GSF_DYNAMIC_CLASS (GogPieSeries, gog_pie_series,
+	   gog_pie_series_class_init, NULL,
+	   GOG_SERIES_TYPE)
+
+G_MODULE_EXPORT void
+go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
+{
+	GTypeModule *module = go_plugin_get_type_module (plugin);
+	gog_pie_series_element_register_type (module);
+	gog_pie_plot_register_type (module);
+	gog_pie_view_register_type (module);
+	gog_pie_series_register_type (module);
+	gog_ring_plot_register_type (module);
+}
+
+G_MODULE_EXPORT void
+go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
+{
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-pie.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,86 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-pie.h
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_PIE_PLOT_H
+#define GOG_PIE_PLOT_H
+
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-series-impl.h>
+
+G_BEGIN_DECLS
+
+typedef struct  {
+	GogSeriesElement base;
+
+	double separation;
+} GogPieSeriesElement;
+
+#define GOG_PIE_SERIES_ELEMENT_TYPE	(gog_pie_series_element_get_type ())
+#define GOG_PIE_SERIES_ELEMENT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PIE_SERIES_ELEMENT_TYPE, GogPieSeriesElement))
+#define IS_GOG_PIE_SERIES_ELEMENT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PIE_SERIES_ELEMENT_TYPE))
+
+GType gog_pie_series_element_get_type (void);
+
+typedef struct {
+	GogPlot	base;
+
+	int	 initial_angle;	 	/* degrees counterclockwise from 3 o'clock */
+	float	 default_separation;	/* as a percentage of the radius */
+	gboolean in_3d;
+} GogPiePlot;
+
+#define GOG_PIE_PLOT_TYPE	(gog_pie_plot_get_type ())
+#define GOG_PIE_PLOT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PIE_PLOT_TYPE, GogPiePlot))
+#define GOG_IS_PIE_PLOT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PIE_PLOT_TYPE))
+
+GType gog_pie_plot_get_type (void);
+
+typedef struct {
+	GogPiePlot	base;
+
+	float	 center_size;
+} GogRingPlot;
+
+#define GOG_RING_PLOT_TYPE	(gog_ring_plot_get_type ())
+#define GOG_RING_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RING_PLOT_TYPE, GogRingPlot))
+#define GOG_IS_RING_PLOT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RING_PLOT_TYPE))
+
+GType gog_ring_plot_get_type (void);
+
+typedef struct {
+	GogSeries base;
+
+	float	 initial_angle;	/* degrees counterclockwise from 3 o'clock */
+	float	 separation;	/* as a percentage of the radius */
+
+	double   total;
+	float	*extensions;
+} GogPieSeries;
+
+#define GOG_PIE_SERIES_TYPE	(gog_pie_series_get_type ())
+#define GOG_PIE_SERIES(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_PIE_SERIES_TYPE, GogPieSeries))
+#define GOG_IS_PIE_SERIES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_PIE_SERIES_TYPE))
+
+GType gog_pie_series_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_PIE_SERIES_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-ring-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-ring-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/gog-ring-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,270 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkTable" id="gog_ring_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="n_rows">4</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkLabel" id="label61">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">Slices start _at:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">rotation_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label63">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">degrees</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkCheckButton" id="vary_style_by_element">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">_Vary colors by slice</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">3</property>
+	  <property name="bottom_attach">4</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label64">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">_Slice Separation:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">separation_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label65">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="rotation_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">Degrees counter clockwise from 3 O'Clock</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">True</property>
+	  <property name="adjustment">0 0 360 10 10 10</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="separation_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">The default amount each slice is separated from the center measured as a percentage of the radius of the pie</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">10</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 0 500 10 50 50</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label66">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">Cen_ter size:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">center_size_spinner</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="label67">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">%</property>
+	  <property name="use_underline">False</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkSpinButton" id="center_size_spinner">
+	  <property name="visible">True</property>
+	  <property name="tooltip" translatable="yes">The default amount each slice is separated from the center measured as a percentage of the radius of the pie</property>
+	  <property name="can_focus">True</property>
+	  <property name="climb_rate">1</property>
+	  <property name="digits">0</property>
+	  <property name="numeric">True</property>
+	  <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	  <property name="snap_to_ticks">True</property>
+	  <property name="wrap">False</property>
+	  <property name="adjustment">0 0 95 5 0.2 0.2</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plot-types.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plot-types.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plot-types.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns:graph="http://www.gnumeric.org/graph_v2.dtd">
+    <Family _name="Pie"	sample_image_file="pie.xpm" axis_set="none"/>
+    <Family _name="Ring" sample_image_file="doughnut.xpm" axis_set="none"/>
+
+    <Type _name="Pie" row="1" col="1"
+	  engine="GogPiePlot" family="Pie"
+	  _description="Percentage of each contributor."
+	  sample_image_file="chart_pie_1_1.png">
+    </Type>
+    <Type _name="Split Pie" row="1" col="2"
+	  engine="GogPiePlot" family="Pie"
+	  _description="Percentage of each contributor with wedges split apart."
+	  sample_image_file="chart_pie_2_1.png">
+	<property name="default_separation">.20</property>
+    </Type>
+    <Type _name="Ring" row="1" col="1"
+	  engine="GogRingPlot" family="Ring"
+	  _description="Percentage of each contributor displayed in ring for each serie."
+	  sample_image_file="chart_ring_1_1.png">
+    </Type>
+    <Type _name="Split Ring" row="1" col="2"
+	  engine="GogRingPlot" family="Ring"
+	  _description="Percentage of each contributor displayed in ring for each serie with wedges of the last ring split apart."
+	  sample_image_file="chart_ring_1_2.png">
+	  <property name="default_separation">.20</property>
+    </Type>
+    <!--
+    <Type _name="3D Pie" row="1" col="2"
+	  engine="GogPiePlot" family="Pie"
+	  _description="Percentage of each contributor in 3D pie."
+	  sample_image_file="chart_pie_1_2.png">
+	<property name="in_3d"/>
+    </Type>
+    <Type _name="Multi-Pie" row="1" col="3"
+	  engine="GogPiePlot" family="Pie"
+	  _description="Major totals as percentages with each wedge subdivided into secondary pies."
+	  sample_image_file="chart_pie_1_3.png">
+	<property name="in_3d"/>
+    </Type>
+    -->
+    <!--
+    <Type _name="3D Split Pie" row="2" col="2"
+	  engine="GogPiePlot" family="Pie"
+	  _description="Percentage of each contributor with 3D wedges split apart."
+	  sample_image_file="chart_pie_2_2.png">
+	<property name="default_separation">.20</property>
+	<property name="in_3d"/>
+    </Type>
+    <Type _name="Multi-pie-bars" row="2" col="3"
+	  engine="GogPiePlot" family="Pie"
+	  _description="Percentage of each contributor with 3D wedges split apart."
+	  _description="Major totals as percentages with each wedge subdivided into secondary stacked bars."
+	  sample_image_file="chart_pie_2_3.png">
+	<property name="default_separation">.20</property>
+	<property name="in_3d"/>
+    </Type>
+    -->
+</Types>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plugin.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plugin.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_pie/plugin.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin id="GOffice_plot_pie">
+	<information>
+		<_name>Charting : Pie/Ring</_name>
+		<_description>Pie and Ring plots</_description>
+	</information>
+	<loader type="Gnumeric_Builtin:module">
+		<attribute name="module_file" value="pie"/>
+	</loader>
+	<services>
+		<service type="plot_engine" id="GogRingPlot">
+			<information>
+				<_description>Ring plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogPiePlot">
+			<information>
+				<_description>Pie plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_type" id="pie">
+			<file>plot-types.xml</file>
+			<information>
+				<_description>Default pie types</_description>
+			</information>
+		</service>
+	</services>
+</plugin>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,26 @@
+goffice_graph_radardir = $(goffice_plugindir)/plot_radar
+xmldir	 = $(goffice_graph_radardir)
+gladedir = $(goffice_graph_radardir)
+
+goffice_graph_radar_LTLIBRARIES = radar.la
+radar_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+radar_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+radar_la_SOURCES = \
+	gog-radar.c		\
+	gog-radar.h		
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice-plugins.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,571 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+goffice_graph_radardir = $(goffice_plugindir)/plot_radar
+xmldir = $(goffice_graph_radardir)
+gladedir = $(goffice_graph_radardir)
+
+goffice_graph_radar_LTLIBRARIES = radar.la
+radar_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+radar_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+radar_la_SOURCES = \
+	gog-radar.c		\
+	gog-radar.h		
+
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+AM_CPPFLAGS = \
+    -I$(top_srcdir)		\
+    -I$(top_builddir)		\
+    $(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+subdir = plugins/plot_radar
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(goffice_graph_radar_LTLIBRARIES)
+
+radar_la_DEPENDENCIES =
+am_radar_la_OBJECTS = gog-radar.lo
+radar_la_OBJECTS = $(am_radar_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-radar.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(radar_la_SOURCES)
+DATA = $(xml_DATA)
+
+DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/goffice-plugins.mk \
+	Makefile.am
+SOURCES = $(radar_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice-plugins.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/plot_radar/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+goffice_graph_radarLTLIBRARIES_INSTALL = $(INSTALL)
+install-goffice_graph_radarLTLIBRARIES: $(goffice_graph_radar_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_radardir)
+	@list='$(goffice_graph_radar_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(goffice_graph_radarLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_radardir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(goffice_graph_radarLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_radardir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-goffice_graph_radarLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(goffice_graph_radar_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_radardir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_radardir)/$$p; \
+	done
+
+clean-goffice_graph_radarLTLIBRARIES:
+	-test -z "$(goffice_graph_radar_LTLIBRARIES)" || rm -f $(goffice_graph_radar_LTLIBRARIES)
+	@list='$(goffice_graph_radar_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+radar.la: $(radar_la_OBJECTS) $(radar_la_DEPENDENCIES) 
+	$(LINK) -rpath $(goffice_graph_radardir) $(radar_la_LDFLAGS) $(radar_la_OBJECTS) $(radar_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-radar.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+xmlDATA_INSTALL = $(INSTALL_DATA)
+install-xmlDATA: $(xml_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(xmldir)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f"; \
+	  $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+uninstall-xmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(xmldir)/$$f"; \
+	  rm -f $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_radardir) $(DESTDIR)$(xmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-goffice_graph_radarLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-goffice_graph_radarLTLIBRARIES install-xmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-goffice_graph_radarLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-goffice_graph_radarLTLIBRARIES clean-libtool ctags \
+	distclean distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-goffice_graph_radarLTLIBRARIES \
+	install-info install-info-am install-man install-strip \
+	install-xmlDATA installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-goffice_graph_radarLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,620 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-radar.c
+ *
+ * Copyright (C) 2004 Michael Devine (mdevine at cs.stanford.edu)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-radar.h"
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-grid-line.h>
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-marker.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/app/module-plugin-defs.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <string.h>
+
+typedef struct {
+	GogPlotClass	base;
+} GogRTPlotClass;
+
+enum {
+	PLOT_PROP_0,
+	PLOT_PROP_DEFAULT_STYLE_HAS_MARKERS
+};
+
+GOFFICE_PLUGIN_MODULE_HEADER;
+
+typedef struct {
+	GogSeries base;
+} GogRTSeries;
+typedef GogSeriesClass GogRTSeriesClass;
+
+#define GOG_RT_SERIES_TYPE	(gog_rt_series_get_type ())
+#define GOG_RT_SERIES(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RT_SERIES_TYPE, GogRTSeries))
+#define GOG_IS_RT_SERIES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RT_SERIES_TYPE))
+
+static GType gog_rt_series_get_type (void);
+static GType gog_rt_view_get_type (void);
+
+/*-----------------------------------------------------------------------------
+ *
+ *  GogRTPlot
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+/*
+ *  Accessor for setting GOGRTPlot member variables.
+ *
+ *  \param obj The rt plot as a GObject.  Must not be NULL.
+ */
+static void
+gog_rt_plot_set_property (GObject *obj, guint param_id,
+			      GValue const *value, GParamSpec *pspec)
+{
+	GogRTPlot *rt = GOG_RT_PLOT (obj);
+
+	switch (param_id) {
+	case PLOT_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		rt->default_style_has_markers = g_value_get_boolean (value);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), TRUE);
+}
+
+/*
+ *  Accessor for getting GOGRTPlot member variables.
+ */
+static void
+gog_rt_plot_get_property (GObject *obj, guint param_id,
+			      GValue *value, GParamSpec *pspec)
+{
+	GogRTPlot *rt = GOG_RT_PLOT (obj);
+
+	switch (param_id) {
+	case PLOT_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		g_value_set_boolean (value, rt->default_style_has_markers);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_rt_plot_update (GogObject *obj)
+{
+	GogRTPlot * model = GOG_RT_PLOT(obj);
+	GogRTSeries const *series;
+	unsigned num_elements = 0;
+	double val_min, val_max, tmp_min, tmp_max;
+	GSList *ptr;
+
+	val_min =  DBL_MAX;
+	val_max = -DBL_MAX;
+	for (ptr = model->base.series; ptr != NULL; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+
+		if (num_elements < series->base.num_elements)
+			num_elements = series->base.num_elements;
+		go_data_vector_get_minmax (GO_DATA_VECTOR (
+			series->base.values[1].data), &tmp_min, &tmp_max);
+		if (val_min > tmp_min) val_min = tmp_min;
+		if (val_max < tmp_max) val_max = tmp_max;
+	}
+	model->num_elements = num_elements;
+
+	if (model->r.minima != val_min || model->r.maxima != val_max) {
+		model->r.minima = val_min;
+		model->r.maxima = val_max;
+		gog_axis_bound_changed (model->base.axis [GOG_AXIS_RADIAL], GOG_OBJECT (model));
+	}
+
+	model->t.minima = 1;
+	model->t.maxima = num_elements;
+
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_rt_plot_guru_helper (GogPlot *plot, char const *hint)
+{
+	if (strcmp (hint, "circular-no-line") == 0) {
+		GogAxis *axis = gog_plot_get_axis (plot, GOG_AXIS_CIRCULAR);
+		GogStyle *style;
+
+		g_return_if_fail (GOG_AXIS (axis) != NULL);
+
+		style = gog_styled_object_get_style (GOG_STYLED_OBJECT (axis));
+		style->line.dash_type = GO_LINE_NONE;
+		style->line.auto_dash = FALSE;
+	};
+}
+
+static void
+gog_rt_plot_class_init (GogPlotClass *gog_plot_klass)
+{
+	GObjectClass   *gobject_klass = (GObjectClass *) gog_plot_klass;
+	GogObjectClass *gog_object_klass = (GogObjectClass *) gog_plot_klass;
+
+	/* Override methods of GObject */
+	gobject_klass->set_property = gog_rt_plot_set_property;
+	gobject_klass->get_property = gog_rt_plot_get_property;
+
+	/* Fill in GOGObject superclass values */
+	gog_object_klass->update	= gog_rt_plot_update;
+	gog_object_klass->view_type	= gog_rt_view_get_type ();
+
+	g_object_class_install_property (gobject_klass, 
+					 PLOT_PROP_DEFAULT_STYLE_HAS_MARKERS,
+		g_param_spec_boolean ("default-style-has-markers", NULL,
+			"Should the default style of a series include markers",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	/* Fill in GogPlotClass methods */
+	gog_plot_klass->desc.num_series_min = 1;
+	gog_plot_klass->desc.num_series_max = G_MAXINT;
+	gog_plot_klass->series_type = gog_rt_series_get_type();
+
+	gog_plot_klass->axis_set    = GOG_AXIS_SET_RADAR;
+	gog_plot_klass->guru_helper = gog_rt_plot_guru_helper;
+}
+
+static void
+gog_rt_plot_init (GogRTPlot *rt)
+{
+	rt->base.vary_style_by_element = FALSE;
+	rt->default_style_has_markers = FALSE;
+	rt->num_elements = 0;
+}
+
+GSF_DYNAMIC_CLASS (GogRTPlot, gog_rt_plot,
+	   gog_rt_plot_class_init, gog_rt_plot_init,
+	   GOG_PLOT_TYPE)
+
+/*****************************************************************************/
+
+typedef GogRTPlotClass GogRadarPlotClass;
+
+static char const *
+gog_radar_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name rt plot objects
+	 * eg The 2nd rt plot in a chart will be called
+	 * 	PlotRT2 */
+	return N_("PlotRadar");
+}
+
+static GOData *
+gog_radar_plot_axis_get_bounds (GogPlot *plot, GogAxisType axis, 
+				GogPlotBoundInfo * bounds)
+{
+	GSList *ptr;
+	GogRTPlot *rt = GOG_RT_PLOT (plot);
+
+	switch (axis) {
+	case GOG_AXIS_CIRCULAR:
+		bounds->val.minima = rt->t.minima;
+		bounds->val.maxima = rt->t.maxima;
+		bounds->logical.minima = 0.;
+		bounds->logical.maxima = go_nan;
+		bounds->is_discrete    = TRUE;
+		bounds->center_on_ticks = TRUE;
+
+		for (ptr = plot->series; ptr != NULL ; ptr = ptr->next)
+			if (gog_series_is_valid (GOG_SERIES (ptr->data)))
+				return GOG_SERIES (ptr->data)->values[0].data;
+		break;
+	case GOG_AXIS_RADIAL:
+		bounds->val.minima = rt->r.minima;
+		bounds->val.maxima = rt->r.maxima;
+		bounds->logical.maxima = bounds->logical.minima = go_nan;
+		bounds->is_discrete = FALSE;
+		break;
+	default:
+		g_warning("[GogRadarPlot::axis_set_bounds] bad axis (%i)", axis);
+		break;
+	} 
+	
+	return NULL;
+}
+
+static void
+gog_radar_plot_class_init (GogPlotClass *gog_plot_klass)
+{
+	GogObjectClass *gog_object_klass = (GogObjectClass *) gog_plot_klass;
+
+	/* Fill in GOGObject superclass values */
+	gog_object_klass->type_name	= gog_radar_plot_type_name;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("Labels"), GOG_SERIES_SUGGESTED, TRUE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Values"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES }
+		};
+		gog_plot_klass->desc.series.dim = dimensions;
+		gog_plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+		gog_plot_klass->desc.series.style_fields = GOG_STYLE_LINE | GOG_STYLE_MARKER;
+	}
+
+	gog_plot_klass->axis_get_bounds	= gog_radar_plot_axis_get_bounds;
+}
+
+GSF_DYNAMIC_CLASS (GogRadarPlot, gog_radar_plot,
+	gog_radar_plot_class_init, NULL,
+	GOG_RT_PLOT_TYPE)
+
+/*****************************************************************************/
+
+#define GOG_RADAR_AREA_PLOT_TYPE  (gog_radar_area_plot_get_type ())
+#define GOG_RADAR_AREA_PLOT(o)	  (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RADAR_AREA_PLOT_TYPE, GogRadarAreaPlot))
+#define GOG_IS_PLOT_RADAR_AREA(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RADAR_AREA_PLOT_TYPE))
+
+typedef GogRadarPlot		GogRadarAreaPlot;
+typedef GogRadarPlotClass	GogRadarAreaPlotClass;
+
+GType gog_radar_area_plot_get_type (void);
+
+static char const *
+gog_radar_area_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name bar/col plot objects
+	 * eg The 2nd line plot in a chart will be called
+	 * 	PlotRadarArea2
+	 */
+	return N_("PlotRadarArea");
+}
+static void
+gog_radar_area_plot_class_init (GogObjectClass *gog_klass)
+{
+	GogPlotClass *plot_klass = (GogPlotClass *) gog_klass;
+
+	plot_klass->desc.series.style_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL;
+
+	gog_klass->type_name	= gog_radar_area_plot_type_name;
+}
+
+static void
+gog_radar_area_plot_init (GogPlot *plot) 
+{
+	plot->render_before_axes = TRUE;
+}
+	
+GSF_DYNAMIC_CLASS (GogRadarAreaPlot, gog_radar_area_plot,
+	gog_radar_area_plot_class_init, gog_radar_area_plot_init,
+	GOG_RADAR_PLOT_TYPE)
+
+/*****************************************************************************/
+
+typedef GogRTPlotClass GogPolarPlotClass;
+
+static char const *
+gog_polar_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name rt plot objects
+	 * eg The 2nd rt plot in a chart will be called
+	 * 	PlotPolar2 */
+	return N_("PlotPolar");
+}
+
+static GOData *
+gog_polar_plot_axis_get_bounds (GogPlot *plot, GogAxisType axis, 
+				GogPlotBoundInfo * bounds)
+{
+	GogRTPlot *rt = GOG_RT_PLOT (plot);
+
+	switch (axis) {
+	case GOG_AXIS_CIRCULAR:
+		bounds->val.minima = bounds->logical.minima= 0.;
+		bounds->val.maxima = bounds->logical.maxima= 360.0;
+		bounds->is_discrete    = FALSE;
+		break;
+	case GOG_AXIS_RADIAL:
+		bounds->val.minima = bounds->logical.minima = 0.;
+		bounds->val.maxima = rt->r.maxima;
+		bounds->logical.maxima = go_nan;
+		bounds->is_discrete = FALSE;
+		break;
+	default:
+		g_warning("[GogPolarPlot::axis_set_bounds] bad axis (%i)", axis);
+		break;
+	} 
+	
+	return NULL;
+}
+
+static void
+gog_polar_plot_class_init (GogPlotClass *gog_plot_klass)
+{
+	GogObjectClass *gog_object_klass = (GogObjectClass *) gog_plot_klass;
+
+	/* Fill in GOGObject superclass values */
+	gog_object_klass->type_name	= gog_polar_plot_type_name;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("Angle"), GOG_SERIES_SUGGESTED, FALSE,
+			  GOG_DIM_INDEX, GOG_MS_DIM_CATEGORIES },
+			{ N_("Magnitude"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES }
+		};
+		gog_plot_klass->desc.series.dim = dimensions;
+		gog_plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+		gog_plot_klass->desc.series.style_fields = GOG_STYLE_LINE | GOG_STYLE_MARKER;
+	}
+
+	gog_plot_klass->axis_get_bounds	= gog_polar_plot_axis_get_bounds;
+}
+
+GSF_DYNAMIC_CLASS (GogPolarPlot, gog_polar_plot,
+	gog_polar_plot_class_init, NULL,
+	GOG_RT_PLOT_TYPE)
+
+/*****************************************************************************/
+
+typedef GogPlotView		GogRTView;
+typedef GogPlotViewClass	GogRTViewClass;
+
+static double
+fmin (double a, double b)
+{
+	return (a < b) ? a : b;
+}
+
+static void
+gog_rt_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogRTPlot const *model = GOG_RT_PLOT (view->model);
+	GogAxis *r_axis, *c_axis;
+	GogChart *chart = GOG_CHART (view->model->parent);
+	GogAxisMap *r_map, *c_map;
+	GogChartMap *chart_map;
+	GogChartMapPolarData *parms;
+	GogViewAllocation const *area;
+	GSList   *ptr;
+	ArtVpath *path, *clip_path;
+	ArtBpath *bpath;
+	double th0, theta_min, theta_max, theta;
+	double rho_min, rho_max, rho;
+	gboolean const is_area = GOG_IS_PLOT_RADAR_AREA (model);
+	gboolean const is_polar = GOG_IS_PLOT_POLAR (model);
+
+	r_axis = GOG_PLOT (model)->axis[GOG_AXIS_RADIAL];
+	c_axis = GOG_PLOT (model)->axis[GOG_AXIS_CIRCULAR];
+	g_return_if_fail (r_axis != NULL && c_axis != NULL);
+
+	area = gog_chart_view_get_plot_area (view->parent);
+	chart_map = gog_chart_map_new (chart, area, c_axis, r_axis, NULL, FALSE);
+	if (!gog_chart_map_is_valid (chart_map)) {
+		gog_chart_map_free (chart_map);
+		return;
+	}
+	c_map = gog_chart_map_get_axis_map (chart_map, 0);
+	r_map = gog_chart_map_get_axis_map (chart_map, 1);
+	parms = gog_chart_map_get_polar_parms (chart_map);
+	
+	gog_axis_map_get_bounds (c_map, &theta_min, &theta_max);
+	th0 = theta_min;
+	gog_axis_map_get_bounds (r_map, &rho_min, &rho_max);
+	/* convert theta value to radians */
+	theta_min = gog_axis_map_to_view (c_map, theta_min);
+	theta_max = gog_axis_map_to_view (c_map, theta_max);
+	if (theta_min > theta_max) {
+		/* angles may be inverted */
+		theta = theta_min;
+		theta_min = theta_max;
+		theta_max = theta;
+	}
+
+	path = g_alloca ((model->num_elements + 2) * sizeof (ArtVpath));
+	for (ptr = model->base.series; ptr != NULL; ptr = ptr->next) {
+
+		GogRTSeries *series = GOG_RT_SERIES (ptr->data);
+		GogStyle *style;
+		gboolean closed_shape;
+		unsigned count;
+		double   *r_vals, *c_vals = NULL;
+
+		if (!gog_series_is_valid (GOG_SERIES (series))) 
+			continue;
+
+		style = GOG_STYLED_OBJECT (series)->style;
+
+		gog_renderer_push_style (view->renderer, style);
+
+		closed_shape = (series->base.num_elements == model->num_elements);
+		r_vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[1].data));
+		if (is_polar)
+			c_vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[0].data));
+		for (count = 0; count < series->base.num_elements; count++) {
+
+			if (!gog_axis_map_finite (r_map, r_vals [count])) {
+				closed_shape = FALSE;
+				continue;
+			}
+			
+			path[count].code = ((count != 0 && !isnan (r_vals[count-1])) 
+					    ? ART_LINETO : ART_MOVETO);
+
+			rho = (!is_polar || (go_add_epsilon (r_vals[count] - rho_min) >= 0.0)) ?
+				r_vals[count] : rho_min;
+			gog_chart_map_2D_to_view (chart_map, 
+						  is_polar ? c_vals[count] : count + th0, rho,
+						  &path[count].x, &path[count].y);
+
+			if (is_polar) theta = gog_axis_map_to_view (c_map, c_vals[count]);
+
+			if ( !is_polar || 
+			     (go_add_epsilon (r_vals[count] - rho_min) >= 0.0 && 
+			      go_add_epsilon (rho_max - r_vals[count]) >= 0.0 &&
+			      go_add_epsilon ((theta_max - theta_min) - fmod (theta_max - theta, 2 * M_PI)) >= 0.0 &&
+			      go_add_epsilon ((theta_max - theta_min) - fmod (theta - theta_min, 2 * M_PI)) >= 0.0))
+				gog_renderer_draw_marker (view->renderer, path[count].x, path[count].y);
+		}
+
+		if (!is_polar && series->base.num_elements == model->num_elements
+		    && gog_axis_map_finite (r_map, r_vals[count-1])) {
+			path[count].code = ART_LINETO; 
+			path[count].x = path[0].x;
+			path[count].y = path[0].y;
+			count++;
+		}
+		path[count].code = ART_END;
+
+		if (is_polar) { 
+			bpath = gog_renderer_get_ring_wedge_bpath (parms->cx, parms->cy, parms->rx, parms->ry,
+								   0.0, 0.0, -parms->th0, -parms->th1);
+			clip_path = art_bez_path_to_vec (bpath, .1);
+			g_free (bpath);
+			gog_renderer_push_clip (view->renderer, clip_path);	
+		}
+
+		if (closed_shape && is_area) {
+			gog_renderer_draw_polygon (view->renderer, path, FALSE);
+		} else
+			gog_renderer_draw_path (view->renderer, path);
+
+		if (is_polar)
+			gog_renderer_pop_clip (view->renderer);
+
+		gog_renderer_pop_style (view->renderer);
+	}
+	gog_chart_map_free (chart_map);
+}
+
+static gboolean
+gog_rt_view_info_at_point (GogView *view, double x, double y,
+			      GogObject const *cur_selection,
+			      GogObject **obj, char **name)
+{
+	double radius = fmin (view->allocation.h, view->allocation.w)/2.0;
+
+	x -= view->allocation.x + view->allocation.w/2.;
+	y -= view->allocation.y + view->allocation.h/2.;
+	if ((x*x + y*y) > (radius*radius))
+		return FALSE;
+	
+	return TRUE;
+}
+
+static void
+gog_rt_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render	  = gog_rt_view_render;
+	view_klass->info_at_point = gog_rt_view_info_at_point;
+	view_klass->clip	  = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogRTView, gog_rt_view,
+	gog_rt_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)
+
+/*****************************************************************************/
+
+static GogStyledObjectClass *series_parent_klass;
+
+static void
+gog_rt_series_update (GogObject *obj)
+{
+	GogRTSeries *series = GOG_RT_SERIES (obj);
+	unsigned old_num = series->base.num_elements;
+	double *vals;
+	unsigned len = 0;
+
+	if (series->base.values[1].data != NULL) {
+		vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[1].data));
+		len = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+	}
+	series->base.num_elements = len;
+
+	/* queue plot and axis for redraw */
+	gog_object_request_update (GOG_OBJECT (series->base.plot));
+	if (old_num != len)
+		gog_object_request_update (GOG_OBJECT (series->base.plot->axis[GOG_AXIS_CIRCULAR]));
+
+	if (old_num != series->base.num_elements)
+		gog_plot_request_cardinality_update (series->base.plot);
+
+	if (((GogObjectClass *)series_parent_klass)->update)
+		((GogObjectClass *)series_parent_klass)->update(obj);
+}
+
+static void
+gog_rt_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogSeries *series = GOG_SERIES (gso);
+	GogRTPlot const *plot;
+
+	series_parent_klass->init_style (gso, style);
+	if (series->plot == NULL)
+		return;
+
+	plot = GOG_RT_PLOT (series->plot);
+
+	if (!plot->default_style_has_markers &&
+	    style->marker.auto_shape) 
+		go_marker_set_shape (style->marker.mark, GO_MARKER_NONE);
+}
+
+static void
+gog_rt_series_class_init (GogStyledObjectClass *gso_klass)
+{
+	GogObjectClass * obj_klass = (GogObjectClass *) gso_klass;
+
+	series_parent_klass = g_type_class_peek_parent (gso_klass);
+	gso_klass->init_style = gog_rt_series_init_style;
+	obj_klass->update = gog_rt_series_update;
+}
+
+GSF_DYNAMIC_CLASS (GogRTSeries, gog_rt_series,
+	gog_rt_series_class_init, NULL,
+	GOG_SERIES_TYPE)
+
+G_MODULE_EXPORT void
+go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
+{
+	GTypeModule *module = go_plugin_get_type_module (plugin);
+	gog_rt_plot_register_type (module);
+	gog_radar_plot_register_type (module);
+	gog_radar_area_plot_register_type (module);
+	gog_polar_plot_register_type (module);
+	gog_rt_view_register_type (module);
+	gog_rt_series_register_type (module);
+}
+
+G_MODULE_EXPORT void
+go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
+{
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/gog-radar.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,69 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-radar.h
+ *
+ * Copyright (C) 2004 Michael Devine (mdevine at cs.stanford.edu)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_RADAR_H
+#define GOG_RADAR_H
+
+#include <goffice/graph/gog-plot-impl.h>
+
+G_BEGIN_DECLS
+
+/*-----------------------------------------------------------------------------
+ *
+ * GogRadarPlot
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+typedef struct {
+	GogPlot	base;
+	gboolean default_style_has_markers;
+	unsigned num_elements;
+	struct {
+		double minima, maxima;
+	} r, t;
+} GogRTPlot;
+
+typedef GogRTPlot GogRadarPlot;
+
+typedef GogRTPlot GogPolarPlot;
+	
+#define GOG_RT_PLOT_TYPE	(gog_rt_plot_get_type ())
+#define GOG_RT_PLOT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RT_PLOT_TYPE, GogRTPlot))
+#define GOG_IS_PLOT_RT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RT_PLOT_TYPE))
+
+GType gog_rt_plot_get_type (void);
+
+#define GOG_RADAR_PLOT_TYPE	(gog_radar_plot_get_type ())
+#define GOG_RADAR_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_RADAR_PLOT_TYPE, GogRadarPlot))
+#define GOG_IS_PLOT_RADAR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_RADAR_PLOT_TYPE))
+
+GType gog_radar_plot_get_type (void);
+
+#define GOG_POLAR_PLOT_TYPE	(gog_polar_plot_get_type ())
+#define GOG_POLAR_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_POLAR_PLOT_TYPE, GogPolarPlot))
+#define GOG_IS_PLOT_POLAR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_POLAR_PLOT_TYPE))
+
+GType gog_polar_plot_get_type (void);
+
+G_END_DECLS
+
+#endif /* GOG_RADAR_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plot-types.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plot-types.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plot-types.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns:graph="http://www.gnumeric.org/graph_v2.dtd">
+	<Family _name="Radar"	sample_image_file="radar.xpm" axis_set="radar"/>
+	<Family _name="Polar"	sample_image_file="polar.png" axis_set="radar"/>
+
+	<Type _name="Radar" row="1" col="1"
+		engine="GogRadarPlot" family="Radar"
+		_description="Radar plot."
+		sample_image_file="chart_radar_1_1.png">
+		<property name="guru-hints">circular-no-line</property>
+	</Type>
+	<Type _name="Dotted Radar" row="1" col="2"
+		engine="GogRadarPlot" family="Radar"
+		_description="Radar plot with dots."
+		sample_image_file="chart_radar_1_2.png">
+		<property name="guru-hints">circular-no-line</property>
+		<property name="default-style-has-markers">True</property>
+	</Type>
+	<Type _name="Area Radar" row="1" col="3"
+		engine="GogRadarAreaPlot" family="Radar"
+		_description="Area radar plot."
+		sample_image_file="chart_radar_1_3.png">
+		<property name="guru-hints">circular-no-line</property>
+	</Type>
+	
+	<Type _name="Polar" row="1" col="1"
+		engine="GogPolarPlot" family="Polar"
+		_description="Polar plot."
+		sample_image_file="chart_polar_1_1.png">
+		<property name="guru-hints">major-grid;backplane</property>
+	</Type>
+</Types>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plugin.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plugin.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_radar/plugin.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin id="GOffice_plot_radar">
+	<information>
+		<_name>Charting : Polar/Radar</_name>
+		<_description>Polar and Radar plots</_description>
+	</information>
+	<loader type="Gnumeric_Builtin:module">
+		<attribute name="module_file" value="radar"/>
+	</loader>
+	<services>
+		<service type="plot_engine" id="GogRadarPlot">
+			<information>
+				<_description>Radar plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogRadarAreaPlot">
+			<information>
+				<_description>Radar Area plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogPolarPlot">
+			<information>
+				<_description>Polar plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_type" id="radar">
+			<file>plot-types.xml</file>
+			<information>
+				<_description>Default radar plot types</_description>
+			</information>
+		</service>
+	</services>
+</plugin>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,31 @@
+goffice_graph_surfacedir = $(goffice_plugindir)/plot_surface
+xmldir	 = $(goffice_graph_surfacedir)
+gladedir = $(goffice_graph_surfacedir)
+
+goffice_graph_surface_LTLIBRARIES = surface.la
+surface_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+surface_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD) 
+
+surface_la_SOURCES = \
+	gog-surface.c		\
+	gog-surface.h		\
+	xl-surface.c		\
+	xl-surface.h		\
+	gog-contour-prefs.c
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+ at INTLTOOL_XML_RULE@
+
+dist_glade_DATA = gog-contour-prefs.glade
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice-plugins.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,602 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+goffice_graph_surfacedir = $(goffice_plugindir)/plot_surface
+xmldir = $(goffice_graph_surfacedir)
+gladedir = $(goffice_graph_surfacedir)
+
+goffice_graph_surface_LTLIBRARIES = surface.la
+surface_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+surface_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD) 
+
+surface_la_SOURCES = \
+	gog-surface.c		\
+	gog-surface.h		\
+	xl-surface.c		\
+	xl-surface.h		\
+	gog-contour-prefs.c
+
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+dist_glade_DATA = gog-contour-prefs.glade
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+AM_CPPFLAGS = \
+    -I$(top_srcdir)		\
+    -I$(top_builddir)		\
+    $(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+subdir = plugins/plot_surface
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(goffice_graph_surface_LTLIBRARIES)
+
+surface_la_DEPENDENCIES =
+am_surface_la_OBJECTS = gog-surface.lo xl-surface.lo \
+	gog-contour-prefs.lo
+surface_la_OBJECTS = $(am_surface_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-contour-prefs.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-surface.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/xl-surface.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(surface_la_SOURCES)
+DATA = $(dist_glade_DATA) $(xml_DATA)
+
+DIST_COMMON = $(dist_glade_DATA) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice-plugins.mk Makefile.am
+SOURCES = $(surface_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice-plugins.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/plot_surface/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+goffice_graph_surfaceLTLIBRARIES_INSTALL = $(INSTALL)
+install-goffice_graph_surfaceLTLIBRARIES: $(goffice_graph_surface_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_surfacedir)
+	@list='$(goffice_graph_surface_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(goffice_graph_surfaceLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_surfacedir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(goffice_graph_surfaceLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_surfacedir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-goffice_graph_surfaceLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(goffice_graph_surface_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_surfacedir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_surfacedir)/$$p; \
+	done
+
+clean-goffice_graph_surfaceLTLIBRARIES:
+	-test -z "$(goffice_graph_surface_LTLIBRARIES)" || rm -f $(goffice_graph_surface_LTLIBRARIES)
+	@list='$(goffice_graph_surface_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+surface.la: $(surface_la_OBJECTS) $(surface_la_DEPENDENCIES) 
+	$(LINK) -rpath $(goffice_graph_surfacedir) $(surface_la_LDFLAGS) $(surface_la_OBJECTS) $(surface_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-contour-prefs.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-surface.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xl-surface.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_gladeDATA_INSTALL = $(INSTALL_DATA)
+install-dist_gladeDATA: $(dist_glade_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(gladedir)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+	  $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+	done
+
+uninstall-dist_gladeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+	  rm -f $(DESTDIR)$(gladedir)/$$f; \
+	done
+xmlDATA_INSTALL = $(INSTALL_DATA)
+install-xmlDATA: $(xml_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(xmldir)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f"; \
+	  $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+uninstall-xmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(xmldir)/$$f"; \
+	  rm -f $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_surfacedir) $(DESTDIR)$(gladedir) $(DESTDIR)$(xmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-goffice_graph_surfaceLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_gladeDATA \
+	install-goffice_graph_surfaceLTLIBRARIES install-xmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_surfaceLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-goffice_graph_surfaceLTLIBRARIES clean-libtool ctags \
+	distclean distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-dist_gladeDATA \
+	install-exec install-exec-am \
+	install-goffice_graph_surfaceLTLIBRARIES install-info \
+	install-info-am install-man install-strip install-xmlDATA \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_surfaceLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,64 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-bubble-prefs.c
+ *
+ * Copyright (C) 2004 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-surface.h"
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/app/go-plugin.h>
+
+#include <gtk/gtktogglebutton.h>
+
+#include <string.h>
+
+GtkWidget *gog_contour_plot_pref   (GogContourPlot *plot, GOCmdContext *cc);
+
+static void
+cb_transpose (GtkToggleButton *btn, GObject *plot)
+{
+	g_object_set (plot, "transposed", gtk_toggle_button_get_active (btn), NULL);
+}
+
+GtkWidget *
+gog_contour_plot_pref (GogContourPlot *plot, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_surface"));
+	char	 *path = g_build_filename (dir, "gog-contour-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_contour_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+
+
+	w = glade_xml_get_widget (gui, "transpose");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), plot->transposed);
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_transpose), plot);
+
+	w = glade_xml_get_widget (gui, "gog_contour_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-contour-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,54 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkTable" id="gog_contour_prefs">
+      <property name="border_width">5</property>
+      <property name="visible">True</property>
+      <property name="n_rows">1</property>
+      <property name="n_columns">1</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">5</property>
+      <property name="column_spacing">5</property>
+
+      <child>
+	<widget class="GtkCheckButton" id="transpose">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">Transpose</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1510 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-surface.c
+ *
+ * Copyright (C) 2004-2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-surface.h"
+#include "xl-surface.h"
+
+#include <goffice/data/go-data.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/app/module-plugin-defs.h>
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <locale.h>
+#include <string.h>
+
+GOFFICE_PLUGIN_MODULE_HEADER;
+
+enum {
+	CONTOUR_PROP_0,
+	CONTOUR_PROP_TRANSPOSED
+};
+
+static GogObjectClass *plot_contour_parent_klass;
+
+typedef struct {
+	GogSeries base;
+	
+	unsigned rows, columns;
+} GogSurfaceSeries;
+typedef GogSeriesClass GogSurfaceSeriesClass;
+
+#define GOG_SURFACE_SERIES_TYPE	(gog_surface_series_get_type ())
+#define GOG_SURFACE_SERIES(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_SURFACE_SERIES_TYPE, GogSurfaceSeries))
+#define GOG_IS_SURFACE_SERIES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_SURFACE_SERIES_TYPE))
+
+static GType gog_surface_series_get_type (void);
+static GType gog_contour_view_get_type (void);
+
+static gboolean
+vary_uniformly (GODataVector *vec)
+{
+	int len = go_data_vector_get_len (vec), i = 0;
+	double x, x0;
+	if (len < 2)
+		return TRUE;
+	x0 = go_data_vector_get_value (vec, 0);
+	x = go_data_vector_get_value (vec, 1);
+	if (!go_finite( x0) || !go_finite (x))
+		return FALSE;
+	if (x > x0) {
+		for (i = 2; i < len; i++) {
+			x0 = go_data_vector_get_value (vec, i);
+			if (!go_finite (x0) || (x0 <= x))
+				return FALSE;
+			x = x0;
+		}
+	} else if (x < x0) {
+		for (i = 2; i < len; i++) {
+			x0 = go_data_vector_get_value (vec, i);
+			if (!go_finite (x0) || (x0 >= x))
+				return FALSE;
+			x = x0;
+		}
+	}
+	return TRUE;
+}
+
+/*-----------------------------------------------------------------------------
+ *
+ *  GogContourPlot
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+/**
+ * gog_contour_plot_build_matrix :
+ * @plot :
+ *
+ * builds a table of normalized values: first slice = 0-1 second = 1-2,...
+ **/
+
+static double *
+gog_contour_plot_build_matrix (GogContourPlot const *plot, gboolean *cardinality_changed)
+{
+	GogContourPlotClass *klass = GOG_CONTOUR_PLOT_GET_CLASS (plot);
+	return klass->build_matrix (plot, cardinality_changed);
+}
+
+static double *
+gog_contour_plot_real_build_matrix (GogContourPlot const *plot, gboolean *cardinality_changed)
+{
+	unsigned i, j;
+	GogAxisMap *map;
+	GogAxisTick *zticks;
+	GogAxis *axis = plot->base.axis[GOG_AXIS_PSEUDO_3D];
+	unsigned nticks;
+	double x[2], val;
+	GogSeries *series = GOG_SERIES (plot->base.series->data);
+	GODataMatrix *mat = GO_DATA_MATRIX (series->values[2].data);
+	unsigned n = plot->rows * plot->columns;
+	double *data, minimum, maximum;
+	unsigned max;
+
+	if (!gog_axis_get_bounds (axis, &minimum, &maximum))
+		return NULL;
+	data = g_new (double, n);
+	nticks = gog_axis_get_ticks (axis, &zticks);
+	map = gog_axis_map_new (axis, 0, 1);
+	for (i = j = 0; i < nticks; i++)
+		if (zticks[i].type == GOG_AXIS_TICK_MAJOR) {
+			x[j++] = gog_axis_map_to_view (map, zticks[i].position);
+			if (j > 1)
+				break;
+		}
+	x[1] -= x[0];
+
+	for (i = 0; i < plot->rows; i++)
+		for (j = 0; j < plot->columns; j++) {
+			val = gog_axis_map_to_view (map,
+					go_data_matrix_get_value (mat, i, j));
+			if (fabs (val) == DBL_MAX)
+				val = go_nan;
+			else {
+				val = val/ x[1] - x[0];
+				if (val < 0)
+					val = go_nan;
+			}
+			if (plot->transposed)
+				data[j * plot->rows + i] = val;
+			else
+				data[i * plot->columns + j] = val;
+		}
+	max = (unsigned) ceil (1 / x[1]);
+	if (series->num_elements != max) {
+		series->num_elements = max;
+		*cardinality_changed = TRUE;
+	}
+	gog_axis_map_free (map);
+	return data;
+}
+
+static void
+gog_contour_plot_update_3d (GogPlot *plot)
+{
+	GogContourPlot *contour = GOG_CONTOUR_PLOT (plot);
+	gboolean cardinality_changed = FALSE;
+
+	if (plot->series == NULL)
+		return;
+
+	contour->plotted_data = gog_contour_plot_build_matrix (contour, &cardinality_changed);
+	if (cardinality_changed) {
+		/*	gog_plot_request_cardinality_update can't be called from here
+		 *  since the plot might be updating.
+		 */
+		GogChart *chart = GOG_CHART (GOG_OBJECT (plot)->parent);
+		plot->cardinality_valid = FALSE;
+		if (chart != NULL)
+			gog_chart_request_cardinality_update (chart);
+	}
+}
+
+static char const *
+gog_contour_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name contour plot objects
+	*/
+	return N_("PlotContour");
+}
+
+extern gpointer gog_contour_plot_pref (GogContourPlot *plot, GOCmdContext *cc);
+static void
+gog_contour_plot_populate_editor (GogObject *item,
+				  GogEditor *editor,
+		    G_GNUC_UNUSED GogDataAllocator *dalloc,
+		    GOCmdContext *cc)
+{
+	gog_editor_add_page (editor,
+			     gog_contour_plot_pref (GOG_CONTOUR_PLOT (item), cc),
+			     _("Properties"));
+}
+
+static void
+gog_contour_plot_clear_formats (GogContourPlot *plot)
+{
+	if (plot->x.fmt != NULL) {
+		go_format_unref (plot->x.fmt);
+		plot->x.fmt = NULL;
+	}
+	if (plot->y.fmt != NULL) {
+		go_format_unref (plot->y.fmt);
+		plot->y.fmt = NULL;
+	}
+	if (plot->z.fmt != NULL) {
+		go_format_unref (plot->z.fmt);
+		plot->z.fmt = NULL;
+	}
+}
+
+static void
+gog_contour_plot_update (GogObject *obj)
+{
+	GogContourPlot * model = GOG_CONTOUR_PLOT(obj);
+	GogSurfaceSeries * series;
+	GODataVector *vec;
+	GODataMatrix *mat;
+	double tmp_min, tmp_max;
+
+	if (model->base.series == NULL)
+		return;
+
+	series = GOG_SURFACE_SERIES (model->base.series->data);
+	if (!gog_series_is_valid (GOG_SERIES (series)))
+		return;
+
+	if ((vec = GO_DATA_VECTOR (series->base.values[0].data)) != NULL) {
+		if (model->x.fmt == NULL)
+			model->x.fmt = go_data_preferred_fmt (series->base.values[0].data);
+		if (vary_uniformly (vec))
+			go_data_vector_get_minmax (vec, &tmp_min, &tmp_max);
+		else
+			tmp_min = tmp_max = go_nan;
+	} else {
+		tmp_min = 0;
+		tmp_max = series->columns - 1;
+	}
+
+	if ((model->columns != series->columns)
+			|| (tmp_min != model->x.minima)
+			|| (tmp_max != model->x.maxima)) {
+		model->columns = series->columns;
+		model->x.minima = tmp_min;
+		model->x.maxima = tmp_max;
+		gog_axis_bound_changed (model->base.axis[(model->transposed)? GOG_AXIS_Y: GOG_AXIS_X],
+				GOG_OBJECT (model));
+	}
+
+	if ((vec = GO_DATA_VECTOR (series->base.values[1].data)) != NULL) {
+		if (model->y.fmt == NULL)
+			model->y.fmt = go_data_preferred_fmt (series->base.values[1].data);
+		if (vary_uniformly (vec))
+			go_data_vector_get_minmax (vec, &tmp_min, &tmp_max);
+		else
+			tmp_min = tmp_max = go_nan;
+	} else {
+		tmp_min = 0;
+		tmp_max = series->rows - 1;
+	}
+
+	if ((model->rows != series->rows)
+			|| (tmp_min != model->y.minima)
+			|| (tmp_max != model->y.maxima)) {
+		model->rows = series->rows;
+		model->y.minima = tmp_min;
+		model->y.maxima = tmp_max;
+		gog_axis_bound_changed (model->base.axis[(model->transposed)? GOG_AXIS_X: GOG_AXIS_Y],
+				GOG_OBJECT (model));
+	}
+
+	g_free (model->plotted_data);
+	model->plotted_data = NULL;
+	mat = GO_DATA_MATRIX (series->base.values[2].data);
+	go_data_matrix_get_minmax (mat, &tmp_min, &tmp_max);
+	if ((tmp_min != model->z.minima)
+			|| (tmp_max != model->z.maxima)) {
+		model->z.minima = tmp_min;
+		model->z.maxima = tmp_max;
+		gog_axis_bound_changed (model->base.axis[GOG_AXIS_PSEUDO_3D], GOG_OBJECT (model));
+	} else
+		gog_contour_plot_update_3d (GOG_PLOT (model));
+	
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+	if (plot_contour_parent_klass->update)
+		plot_contour_parent_klass->update (obj);
+}
+
+static GOData *
+gog_contour_plot_axis_get_bounds (GogPlot *plot, GogAxisType axis, 
+				  GogPlotBoundInfo * bounds)
+{
+	GogSurfaceSeries *series;
+	GogContourPlot *contour = GOG_CONTOUR_PLOT (plot);
+	GODataVector *vec = NULL;
+	double min, max;
+	GOFormat *fmt;
+	if (!plot->series)
+		return NULL;
+	series = GOG_SURFACE_SERIES (plot->series->data);
+	if ((axis == GOG_AXIS_Y && contour->transposed) ||
+		(axis == GOG_AXIS_X && !contour->transposed)) {
+		vec = GO_DATA_VECTOR (series->base.values[0].data);
+		fmt = contour->x.fmt;
+		min = contour->x.minima;
+		max = contour->x.maxima;
+	} else if (axis == GOG_AXIS_X || axis == GOG_AXIS_Y) {
+		vec = GO_DATA_VECTOR (series->base.values[1].data);
+		fmt = contour->y.fmt;
+		min = contour->y.minima;
+		max = contour->y.maxima;
+	} else {
+		if (bounds->fmt == NULL && contour->z.fmt != NULL)
+			bounds->fmt = go_format_ref (contour->z.fmt);
+		bounds->val.minima = contour->z.minima;
+		bounds->val.maxima = contour->z.maxima;
+		return NULL;
+	}
+	if (bounds->fmt == NULL && fmt != NULL)
+		bounds->fmt = go_format_ref (fmt);
+	if (go_finite (min)) {
+		bounds->logical.minima = bounds->val.minima = min;
+		bounds->logical.maxima = bounds->val.maxima = max;
+		bounds->is_discrete = FALSE;
+	} else {
+		bounds->val.minima = 0.;
+		bounds->logical.minima = 0.;
+		bounds->logical.maxima = go_nan;
+		bounds->is_discrete    = TRUE;
+		bounds->center_on_ticks = TRUE;
+		bounds->val.maxima = (axis == GOG_AXIS_X) ?
+			series->columns - 1.:
+			series->rows - 1.;
+	}
+	return (GOData*) vec;
+}
+
+static void 
+gog_contour_plot_foreach_elem  (GogPlot *plot, gboolean only_visible,
+				    GogEnumFunc func, gpointer data)
+{
+	unsigned i, j, nticks;
+	char *label;
+	static char separator = 0;
+	GogStyle *style = gog_style_new ();
+	GogTheme *theme = gog_object_get_theme (GOG_OBJECT (plot));
+	GogAxis *axis = plot->axis[GOG_AXIS_PSEUDO_3D];
+	GOColor *color;
+	GogAxisTick *zticks;
+	double *limits;
+	double minimum, maximum;
+
+	gog_axis_get_bounds (axis, &minimum, &maximum);
+	
+	if (separator == 0) {
+		struct lconv *lc = localeconv ();
+		separator = (strcmp (lc->decimal_point, ","))? ',': ';';
+	}
+	nticks = gog_axis_get_ticks (axis, &zticks);
+	limits = g_new (double, nticks + 1);
+	for (i = j = 0; i < nticks; i++)
+		if (zticks[i].type == GOG_AXIS_TICK_MAJOR)
+			limits[j++] = zticks[i].position;
+	j--;
+	if (maximum > limits[j])
+		limits[++j] = maximum;
+	/* build the colors table */
+	color = g_new0 (GOColor, (j > 0)? j: 1);
+	if (j < 2)
+		color[0] = RGBA_WHITE;
+	else for (i = 0; i < j; i++) {
+		gog_theme_fillin_style (theme, style, GOG_OBJECT (plot->series->data), i, FALSE);
+		color[i] = style->fill.pattern.back;
+	}
+	g_object_unref (style);
+
+	style = gog_style_new ();
+	style->interesting_fields = GOG_STYLE_FILL;
+	style->disable_theming = GOG_STYLE_ALL;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	style->fill.pattern.pattern = GO_PATTERN_SOLID;
+
+	for (i = 0; i < j; i++) {
+		style->fill.pattern.back = color[i];
+		label = g_strdup_printf ("[%g%c %g%c", limits[i], separator,
+					limits[i + 1], (i == j - 1)? ']':'[');
+		(func) (i, style, label, data);
+		g_free (label);
+	}
+	g_free (limits);
+	g_object_unref (style);
+	g_free (color);
+}
+
+static void
+gog_contour_plot_finalize (GObject *obj)
+{
+	GogContourPlot *plot = GOG_CONTOUR_PLOT (obj);
+	gog_contour_plot_clear_formats (plot);
+	if (plot->plotted_data)
+		g_free (plot->plotted_data);
+	G_OBJECT_CLASS (plot_contour_parent_klass)->finalize (obj);
+}
+
+static void
+gog_contour_plot_set_property (GObject *obj, guint param_id,
+			     GValue const *value, GParamSpec *pspec)
+{
+	GogContourPlot *plot = GOG_CONTOUR_PLOT (obj);
+
+	switch (param_id) {
+	case CONTOUR_PROP_TRANSPOSED :
+		plot->transposed = g_value_get_boolean (value);
+		gog_axis_bound_changed (plot->base.axis[GOG_AXIS_X], GOG_OBJECT (plot));
+		gog_axis_bound_changed (plot->base.axis[GOG_AXIS_Y], GOG_OBJECT (plot));
+		g_free (plot->plotted_data);
+		plot->plotted_data = NULL;
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_contour_plot_get_property (GObject *obj, guint param_id,
+			     GValue *value, GParamSpec *pspec)
+{
+	GogContourPlot *plot = GOG_CONTOUR_PLOT (obj);
+
+	switch (param_id) {
+	case CONTOUR_PROP_TRANSPOSED :
+		g_value_set_boolean (value, plot->transposed);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_contour_plot_class_init (GogContourPlotClass *klass)
+{
+	GogPlotClass *gog_plot_klass = (GogPlotClass*) klass;
+	GObjectClass   *gobject_klass = (GObjectClass *) klass;
+	GogObjectClass *gog_object_klass = (GogObjectClass *) klass;
+
+	plot_contour_parent_klass = g_type_class_peek_parent (klass);
+
+	gobject_klass->finalize     = gog_contour_plot_finalize;
+	gobject_klass->set_property = gog_contour_plot_set_property;
+	gobject_klass->get_property = gog_contour_plot_get_property;
+	g_object_class_install_property (gobject_klass, CONTOUR_PROP_TRANSPOSED,
+		g_param_spec_boolean ("transposed", "transposed",
+			"Transpose the plot",
+			FALSE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+
+	/* Fill in GOGObject superclass values */
+	gog_object_klass->update	= gog_contour_plot_update;
+	gog_object_klass->type_name	= gog_contour_plot_type_name;
+	gog_object_klass->view_type	= gog_contour_view_get_type ();
+	gog_object_klass->populate_editor	= gog_contour_plot_populate_editor;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("X"), GOG_SERIES_SUGGESTED, FALSE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Y"), GOG_SERIES_SUGGESTED, FALSE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Z"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_MATRIX, GOG_MS_DIM_VALUES },
+		};
+		gog_plot_klass->desc.series.dim = dimensions;
+		gog_plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+		gog_plot_klass->desc.series.style_fields = GOG_STYLE_LINE;
+	}
+
+	/* Fill in GogPlotClass methods */
+	gog_plot_klass->desc.num_series_min = 1;
+	gog_plot_klass->desc.num_series_max = 1;
+	gog_plot_klass->series_type = gog_surface_series_get_type();
+	gog_plot_klass->axis_set = GOG_AXIS_SET_XY_pseudo_3d;
+	gog_plot_klass->axis_get_bounds	= gog_contour_plot_axis_get_bounds;
+	gog_plot_klass->foreach_elem = gog_contour_plot_foreach_elem;
+	gog_plot_klass->update_3d = gog_contour_plot_update_3d;
+
+	klass->build_matrix = gog_contour_plot_real_build_matrix;
+}
+
+static void
+gog_contour_plot_init (GogContourPlot *contour)
+{
+	GogPlot *plot = GOG_PLOT (contour);
+
+	contour->rows = contour->columns = 0;
+	contour->transposed = FALSE;
+	contour->base.vary_style_by_element = TRUE;
+	contour->x.minima = contour->x.maxima = contour->y.minima
+		= contour->y.maxima = contour->z.minima = contour->z.maxima = go_nan;
+	contour->x.fmt = contour->y.fmt = contour->z.fmt = NULL;
+	contour->plotted_data = NULL;
+
+	plot->render_before_axes = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogContourPlot, gog_contour_plot,
+	gog_contour_plot_class_init, gog_contour_plot_init,
+	GOG_PLOT_TYPE)
+
+/*****************************************************************************/
+
+typedef GogPlotView		GogContourView;
+typedef GogPlotViewClass	GogContourViewClass;
+#define CONTOUR_EPSILON 1e-10
+
+static void
+gog_contour_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GogContourPlot const *plot = GOG_CONTOUR_PLOT (view->model);
+	GogSeries const *series = GOG_SERIES (plot->base.series->data);
+	GODataVector *x_vec = 0, *y_vec = 0;
+	GogAxisMap *x_map, *y_map;
+	double zval0, zval1, zval2 = 0., zval3, t;
+	double x[4], y[4], zval[4];
+	int z[4];
+	int z0 = 0, z1 = 0, z2 = 0, z3 = 0, zmin, zmax, nans, nan = 0;
+	int k, kmax, r = 0, s, h;
+	unsigned i, imax, j, jmax, l, lmax, p;
+	GogRenderer *rend = view->renderer;
+	GogStyle *style;
+	GogTheme *theme = gog_object_get_theme (GOG_OBJECT (plot));
+	double x0, x1, y0, y1;
+	ArtVpath *path, *lines;
+	GOColor *color;
+	gboolean cw;
+	double *data;
+	int max = series->num_elements;
+	gboolean xdiscrete, ydiscrete;
+
+	if (plot->transposed) {
+		imax = plot->columns;
+		jmax = plot->rows;
+	} else {
+		imax = plot->rows;
+		jmax = plot->columns;
+	}
+	if (imax ==0 || jmax == 0)
+		return;
+
+	x_map = gog_axis_map_new (plot->base.axis[0], 
+				  view->residual.x , view->residual.w);
+	y_map = gog_axis_map_new (plot->base.axis[1], 
+				  view->residual.y + view->residual.h, 
+				  -view->residual.h);
+
+	if (!(gog_axis_map_is_valid (x_map) &&
+	      gog_axis_map_is_valid (y_map))) {
+		gog_axis_map_free (x_map);
+		gog_axis_map_free (y_map);
+		return;
+	}
+
+	if (plot->plotted_data)
+		data = plot->plotted_data;
+	else
+		data = gog_contour_plot_build_matrix (plot, &cw);
+
+	/* Set cw to ensure that polygons will allways be drawn clockwise */
+	xdiscrete = gog_axis_is_discrete (plot->base.axis[0]) ||
+			series->values[(plot->transposed)? 1: 0].data == NULL;
+	if (xdiscrete) {
+		x0 = gog_axis_map_to_view (x_map, 0.);
+		x1 = gog_axis_map_to_view (x_map, 1.);
+	}else {
+		x_vec = GO_DATA_VECTOR (series->values[(plot->transposed)? 1: 0].data);
+		x0 = gog_axis_map_to_view (x_map, go_data_vector_get_value (x_vec, 0));
+		x1 = gog_axis_map_to_view (x_map, go_data_vector_get_value (x_vec, 1));
+	}
+	ydiscrete = gog_axis_is_discrete (plot->base.axis[1]) ||
+			series->values[(plot->transposed)? 0: 1].data == NULL;
+	if (ydiscrete) {
+		y0 = gog_axis_map_to_view (y_map, 0.);
+		y1 = gog_axis_map_to_view (y_map, 1.);
+	}else {
+		y_vec = GO_DATA_VECTOR (series->values[(plot->transposed)? 0: 1].data);
+		y0 = gog_axis_map_to_view (y_map, go_data_vector_get_value (y_vec, 0));
+		y1 = gog_axis_map_to_view (y_map, go_data_vector_get_value (y_vec, 1));
+	}
+	cw = (x1 > x0) == (y1 > y0);
+
+	style = gog_style_new ();
+	path = art_new (ArtVpath, 10);
+	/* build the colors table */
+	color = g_new0 (GOColor, max);
+	if (max < 2)
+		color[0] = RGBA_WHITE;
+	else for (i = 0; i < (unsigned) max; i++) {
+		gog_theme_fillin_style (theme, style, GOG_OBJECT (series), i, FALSE);
+		color[i] = style->fill.pattern.back;
+	}
+	g_object_unref (style);
+
+	/* clip to avoid problems with logarithmic axes */
+	gog_renderer_push_clip (rend, 
+				gog_renderer_get_rectangle_vpath (&view->residual));
+
+	style = gog_style_new ();
+	style->interesting_fields = GOG_STYLE_FILL | GOG_STYLE_OUTLINE;
+	style->disable_theming = GOG_STYLE_ALL;
+	style->fill.type = GOG_FILL_STYLE_PATTERN;
+	style->fill.pattern.pattern = GO_PATTERN_SOLID;
+	style->outline.dash_type = GO_LINE_SOLID;
+	style->outline.auto_dash = FALSE;
+	style->outline.auto_color = FALSE;
+	style->outline.width = 0.5;
+	style->outline.color = RGBA_BLACK;
+
+	lines = art_new (ArtVpath, lmax = 64);
+	l = 0;
+
+	for (j = 1; j < jmax; j++) {
+		if (xdiscrete) {
+			x0 = gog_axis_map_to_view (x_map, j - 1);
+			x1 = gog_axis_map_to_view (x_map, j);
+		}else {
+			x0 = gog_axis_map_to_view (x_map, go_data_vector_get_value (x_vec, j - 1));
+			x1 = gog_axis_map_to_view (x_map, go_data_vector_get_value (x_vec, j));
+		}
+		
+		for (i = 1; i < imax; i++) {
+			if (ydiscrete) {
+				y0 = gog_axis_map_to_view (y_map, i - 1);
+				y1 = gog_axis_map_to_view (y_map, i);
+			}else {
+				y0 = gog_axis_map_to_view (y_map, go_data_vector_get_value (y_vec, i - 1));
+				y1 = gog_axis_map_to_view (y_map, go_data_vector_get_value (y_vec, i));
+			}
+			nans = 0;
+			nan = 4;
+			zmin = max;
+			zmax = 0;
+			zval0 = data[(i - 1) * jmax + j - 1];
+			if (!isnan (zval0)) {
+				z0 = floor (zval0);
+				if (z0 > zmax)
+					zmax = z0;
+				if (z0 < zmin) {
+					zmin = z0;
+					r = 0;
+				}
+			} else {
+				nans++;
+				nan = 0;
+			}
+			zval1 = data[(i - 1) * jmax + j];
+			if (!isnan (zval1)) {
+				z1 = floor (zval1);
+				if (z1 > zmax)
+					zmax = z1;
+				if (z1 < zmin) {
+					zmin = z1;
+					r = 1;
+				}
+			} else {
+				nans++;
+				nan = 1;
+			}
+			zval2 = data[i * jmax + j];
+			if (!isnan (zval2)) {
+				z2 = floor (zval2);
+				if (z2 > zmax)
+					zmax = z2;
+				if (z2 < zmin) {
+					zmin = z2;
+					r = 2;
+				}
+			} else {
+				nans++;
+				nan = 2;
+			}
+			zval3 = data[i * jmax + j - 1];
+			if (!isnan (zval3)) {
+				z3 = floor (zval3);
+				if (z3 > zmax)
+					zmax = z3;
+				if (z3 < zmin) {
+					zmin = z3;
+					r = 3;
+				}
+			} else {
+				nans++;
+				nan = 3;
+			}
+			if (nans > 1)
+				continue;
+			/* Build the x, y and z arrays for the tile */
+			k = r;
+			s = 0;
+			do {
+				if (k != nan) {
+					switch (k) {
+					case 0:
+						x[s] = x0;
+						y[s] = y0;
+						z[s] = z0;
+						zval[s++] = zval0;
+						break;
+					case 1:
+						x[s] = x1;
+						y[s] = y0;
+						z[s] = z1;
+						zval[s++] = zval1;
+						break;
+					case 2:
+						x[s] = x1;
+						y[s] = y1;
+						z[s] = z2;
+						zval[s++] = zval2;
+						break;
+					default:
+						x[s] = x0;
+						y[s] = y1;
+						z[s] = z3;
+						zval[s++] = zval3;
+					}
+				}
+				if (cw) {
+					k++;
+					k %= 4;
+				} else {
+					if (k == 0)
+						k = 3;
+					else
+						k--;
+				}
+			} while (k != r);
+			if (zmin == zmax) {
+				/* paint everything with one color*/
+				style->outline.color = color[zmin];
+				style->fill.pattern.back = color[zmin];
+				gog_renderer_push_style (rend, style);
+				path[0].code = ART_MOVETO;
+				for (k = 0; k < s; ) {
+					path[k].x = x[k];
+					path[k].y = y[k];
+					path[++k].code = ART_LINETO;
+				}
+				path[k].x = x[0];
+				path[k].y = y[0];
+				path[k + 1].code = ART_END;
+				/* narrow parameter is TRUE below to avoid border effects */
+				gog_renderer_draw_polygon (rend, path, FALSE);
+				gog_renderer_pop_style (rend);
+			} else {
+				kmax = 3 - nans;
+				if (!nans && (((z0 < z1) && (z1 > z2) && (z2 < z3) && (z3 > z0)) ||
+					((z0 > z1) && (z1 < z2) && (z2 > z3) && (z3 < z0)))) {
+					/* we have a saddle point */
+					/* first find the most probable altitude of the saddle point */
+					int zn, zx;
+					gboolean crossing = FALSE, up = FALSE, odd;
+					double xl[8], yl[8];
+					/* crossing is TRUE if the saddle point occurs at a slices border */
+					zn = MAX (z[0], z[2]);
+					if (zval[1] > zval[3])
+						zx = (zval[3] == z[3])? z[3] - 1: z[3];
+					else
+						zx =  (zval[1] == z[1])? z[1] - 1: z[1];
+					odd = (zx - zn) % 2;
+					if (odd) {
+						if ((zx - zn) == 1) {
+							double sum = 0.;
+							sum += (z[0] == zn)? zval[0]: zn;
+							sum += (z[1] == zx)? zval[1]: zx + 1;
+							sum += (z[2] == zn)? zval[2]: zn;
+							sum += (z[3] == zx)? zval[3]: zx + 1;
+							sum /= 4.;
+							if (fabs ((sum - zx)) < DBL_EPSILON)
+								crossing = TRUE;
+							else
+								up = (sum - zx) < 0;
+						} else
+							crossing = TRUE;
+						zn = (zn + zx) / 2;
+						zx = zn + 1;
+					} else
+						zn = zx = (zn + zx) / 2;
+					/* low values slices */
+					if (z[0] < zn) {
+						k = z[0];
+						style->outline.color = color[k];
+						style->fill.pattern.back = color[k];
+						k++;
+						path[0].code = ART_MOVETO;
+						path[1].code = ART_LINETO;
+						path[2].code = ART_LINETO;
+						path[3].code = ART_LINETO;
+						path[4].code = ART_END;
+						path[0].x = path[3].x = x[0];
+						path[0].y = path[3].y = y[0];
+						if ((l + 3) >= lmax)
+							lines = art_renew (lines, ArtVpath, lmax += 64);
+						lines[l].code = ART_MOVETO_OPEN;
+						t = (k - zval[0]) / (zval[3] - zval[0]);
+						xl[7] = lines[l].x = path[1].x = x[0] + t * (x[3] - x[0]);
+						yl[7] = lines[l++].y = path[1].y = y[0] + t * (y[3] - y[0]);
+						lines[l].code = ART_LINETO;
+						t = (k - zval[0]) / (zval[1] - zval[0]);
+						xl[0] = lines[l].x = path[2].x = x[0] + t * (x[1] - x[0]);
+						yl[0] = lines[l++].y = path[2].y = y[0] + t * (y[1] - y[0]);
+						gog_renderer_push_style (rend, style);
+						gog_renderer_draw_polygon (rend, path, FALSE);
+						gog_renderer_pop_style (rend);
+						path[4].code = ART_LINETO;
+						path[5].code = ART_END;
+						while (k < zn) {
+							style->outline.color = color[k];
+							style->fill.pattern.back = color[k];
+							k++;
+							path[0].x = path[4].x = xl[7];
+							path[0].y = path[4].y = yl[7];
+							path[3].x = xl[0];
+							path[3].y = yl[0];
+							if ((l + 3) >= lmax)
+								lines = art_renew (lines, ArtVpath, lmax += 64);
+							lines[l].code = ART_MOVETO_OPEN;
+							t = (k - zval[0]) / (zval[3] - zval[0]);
+							xl[7] = lines[l].x = path[1].x = x[0] + t * (x[3] - x[0]);
+							yl[7] = lines[l++].y = path[1].y = y[0] + t * (y[3] - y[0]);
+							lines[l].code = ART_LINETO;
+							t = (k - zval[0]) / (zval[1] - zval[0]);
+							xl[0] = lines[l].x = path[2].x = x[0] + t * (x[1] - x[0]);
+							yl[0] = lines[l++].y = path[2].y = y[0] + t * (y[1] - y[0]);
+							gog_renderer_push_style (rend, style);
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							gog_renderer_pop_style (rend);
+						}
+					} else
+						xl[0] = xl[7] = -1.;
+					if (z[2] < zn) {
+						k = z[2];
+						style->outline.color = color[k];
+						style->fill.pattern.back = color[k];
+						k++;
+						path[0].code = ART_MOVETO;
+						path[1].code = ART_LINETO;
+						path[2].code = ART_LINETO;
+						path[3].code = ART_LINETO;
+						path[4].code = ART_END;
+						path[0].x = path[3].x = x[2];
+						path[0].y = path[3].y = y[2];
+						if ((l + 3) >= lmax)
+							lines = art_renew (lines, ArtVpath, lmax += 64);
+						lines[l].code = ART_MOVETO_OPEN;
+						t = (k - zval[2]) / (zval[1] - zval[2]);
+						xl[3] = lines[l].x = path[1].x = x[2] + t * (x[1] - x[2]);
+						yl[3] = lines[l++].y = path[1].y = y[2] + t * (y[1] - y[2]);
+						lines[l].code = ART_LINETO;
+						t = (k - zval[2]) / (zval[3] - zval[2]);
+						xl[4] = lines[l].x = path[2].x = x[2] + t * (x[3] - x[2]);
+						yl[4] = lines[l++].y = path[2].y = y[2] + t * (y[3] - y[2]);
+						gog_renderer_push_style (rend, style);
+						gog_renderer_draw_polygon (rend, path, FALSE);
+						gog_renderer_pop_style (rend);
+						path[4].code = ART_LINETO;
+						path[5].code = ART_END;
+						while (k < zn) {
+							style->outline.color = color[k];
+							style->fill.pattern.back = color[k];
+							k++;
+							path[0].x = path[4].x = xl[3];
+							path[0].y = path[4].y = yl[3];
+							path[3].x = xl[4];
+							path[3].y = yl[4];
+							if ((l + 3) >= lmax)
+								lines = art_renew (lines, ArtVpath, lmax += 64);
+							lines[l].code = ART_MOVETO_OPEN;
+							t = (k - zval[2]) / (zval[1] - zval[2]);
+							xl[3] = lines[l].x = path[1].x = x[2] + t * (x[1] - x[2]);
+							yl[3] = lines[l++].y = path[1].y = y[2] + t * (y[1] - y[2]);
+							lines[l].code = ART_LINETO;
+							t = (k - zval[2]) / (zval[3] - zval[2]);
+							xl[4] = lines[l].x = path[2].x = x[2] + t * (x[3] - x[2]);
+							yl[4] = lines[l++].y = path[2].y = y[2] + t * (y[3] - y[2]);
+							gog_renderer_push_style (rend, style);
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							gog_renderer_pop_style (rend);
+						}
+					} else
+						xl[3] = xl[4] = -1.;
+					/* high values slices */
+					k = z[1];
+					if (zval[1] == k)
+						k--;
+					if (k > zx) {
+						path[0].code = ART_MOVETO;
+						path[1].code = ART_LINETO;
+						path[2].code = ART_LINETO;
+						path[3].code = ART_LINETO;
+						path[4].code = ART_END;
+						path[0].x = path[3].x = x[1];
+						path[0].y = path[3].y = y[1];
+						if ((l + 3) >= lmax)
+							lines = art_renew (lines, ArtVpath, lmax += 64);
+						lines[l].code = ART_MOVETO_OPEN;
+						t = (k - zval[1]) / (zval[0] - zval[1]);
+						xl[1] = lines[l].x = path[1].x = x[1] + t * (x[0] - x[1]);
+						yl[1] = lines[l++].y = path[1].y = y[1] + t * (y[0] - y[1]);
+						lines[l].code = ART_LINETO;
+						t = (k - zval[1]) / (zval[2] - zval[1]);
+						xl[2] = lines[l].x = path[2].x = x[1] + t * (x[2] - x[1]);
+						yl[2] = lines[l++].y = path[2].y = y[1] + t * (y[2] - y[1]);
+						style->outline.color = color[k];
+						style->fill.pattern.back = color[k];
+						gog_renderer_push_style (rend, style);
+						gog_renderer_draw_polygon (rend, path, FALSE);
+						gog_renderer_pop_style (rend);
+						path[4].code = ART_LINETO;
+						path[5].code = ART_END;
+						k--;
+						while (k > zx) {
+							path[0].x = path[4].x = xl[1];
+							path[0].y = path[4].y = yl[1];
+							path[3].x = xl[2];
+							path[3].y = yl[2];
+							if ((l + 3) >= lmax)
+								lines = art_renew (lines, ArtVpath, lmax += 64);
+							lines[l].code = ART_MOVETO_OPEN;
+							t = (k - zval[1]) / (zval[0] - zval[1]);
+							xl[1] = lines[l].x = path[1].x = x[1] + t * (x[0] - x[1]);
+							yl[1] = lines[l++].y = path[1].y = y[1] + t * (y[0] - y[1]);
+							lines[l].code = ART_LINETO;
+							t = (k - zval[1]) / (zval[2] - zval[1]);
+							xl[2] = lines[l].x = path[2].x = x[1] + t * (x[2] - x[1]);
+							yl[2] = lines[l++].y = path[2].y = y[1] + t * (y[2] - y[1]);
+							style->outline.color = color[k];
+							style->fill.pattern.back = color[k];
+							gog_renderer_push_style (rend, style);
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							gog_renderer_pop_style (rend);
+							k--;
+						}
+					} else
+						xl[1] = xl[2] = -1.;
+					k = z[3];
+					if (zval[3] == k)
+						k--;
+					if (k > zx) {
+						path[0].code = ART_MOVETO;
+						path[1].code = ART_LINETO;
+						path[2].code = ART_LINETO;
+						path[3].code = ART_LINETO;
+						path[4].code = ART_END;
+						path[0].x = path[3].x = x[3];
+						path[0].y = path[3].y = y[3];
+						if ((l + 3) >= lmax)
+							lines = art_renew (lines, ArtVpath, lmax += 64);
+						lines[l].code = ART_MOVETO_OPEN;
+						t = (k - zval[3]) / (zval[2] - zval[3]);
+						xl[5] = lines[l].x = path[1].x = x[3] + t * (x[2] - x[3]);
+						yl[5] = lines[l++].y = path[1].y = y[3] + t * (y[2] - y[3]);
+						lines[l].code = ART_LINETO;
+						t = (k - zval[3]) / (zval[0] - zval[3]);
+						xl[6] = lines[l].x = path[2].x = x[3] + t * (x[0] - x[3]);
+						yl[6] = lines[l++].y = path[2].y = y[3] + t * (y[0] - y[3]);
+						style->outline.color = color[k];
+						style->fill.pattern.back = color[k];
+						gog_renderer_push_style (rend, style);
+						gog_renderer_draw_polygon (rend, path, FALSE);
+						gog_renderer_pop_style (rend);
+						path[4].code = ART_LINETO;
+						path[5].code = ART_END;
+						k--;
+						while (k > zx) {
+							path[0].x = path[4].x = xl[5];
+							path[0].y = path[4].y = yl[5];
+							path[3].x = xl[6];
+							path[3].y = yl[6];
+							if ((l + 3) >= lmax)
+								lines = art_renew (lines, ArtVpath, lmax += 64);
+							lines[l].code = ART_MOVETO_OPEN;
+							t = (k - zval[3]) / (zval[2] - zval[3]);
+							xl[5] = lines[l].x = path[1].x = x[3] + t * (x[2] - x[3]);
+							yl[5] = lines[l++].y = path[1].y = y[3] + t * (y[2] - y[3]);
+							lines[l].code = ART_LINETO;
+							t = (k - zval[3]) / (zval[0] - zval[3]);
+							xl[6] = lines[l].x = path[2].x = x[3] + t * (x[0] - x[3]);
+							yl[6] = lines[l++].y = path[2].y = y[3] + t * (y[0] - y[3]);
+							style->outline.color = color[k];
+							style->fill.pattern.back = color[k];
+							gog_renderer_push_style (rend, style);
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							gog_renderer_pop_style (rend);
+							k--;
+						}
+					} else
+						xl[5] = xl[6] = -1.;
+					/* middle values slices */
+					if (odd) {
+						if (crossing) {
+							double xb[4], yb[4], xc, yc;
+							for (k = 0; k < 4; k++) {
+								s = (k + 1) % 4;
+								t =  (zx - zval[s]) / (zval[k] - zval[s]);
+								xb[k] = x[s] + t * (x[k] - x[s]);
+								yb[k] = y[s] + t * (y[k] - y[s]);
+							}
+							if ((l + 5) >= lmax)
+								lines = art_renew (lines, ArtVpath, lmax += 64);
+							lines[l].code = ART_MOVETO_OPEN;
+							lines[l].x = xb[0];
+							lines[l++].y = yb[0];
+							lines[l].code = ART_LINETO;
+							lines[l].x = xb[2];
+							lines[l++].y = yb[2];
+							lines[l].code = ART_MOVETO_OPEN;
+							lines[l].x = xb[1];
+							lines[l++].y = yb[1];
+							lines[l].code = ART_LINETO;
+							lines[l].x = xb[3];
+							lines[l++].y = yb[3];
+							/* calculate the coordinates xc and yc of crossing point */
+							t = ((xb[1] - xb[0]) * (yb[3] - yb[1])
+								+ (xb[1] - xb[3]) * (yb[1] - yb[0])) /
+								((xb[2] - xb[0]) * (yb[3] - yb[1])
+								+ (xb[1] - xb[3]) * (yb[2] - yb[0]));
+							xc = xb[0] + t * (xb[2] - xb[0]);
+							yc = yb[0] + t * (yb[2] - yb[0]);
+							/* fill */
+							path[0].code = ART_MOVETO;
+							path[1].code = ART_LINETO;
+							path[2].code = ART_LINETO;
+							path[3].code = ART_LINETO;
+							path[4].code = ART_LINETO;
+							if (xl[0] < 0.) {
+								path[4].x = path[0].x = x[0];
+								path[4].y = path[0].y = y[0];
+								path[5].code = ART_END;
+							} else {
+								path[5].x = path[0].x = xl[7];
+								path[5].y = path[0].y = yl[7];
+								path[4].x = xl[0];
+								path[4].y = yl[0];
+								path[5].code = ART_LINETO;
+								path[6].code = ART_END;
+							}
+							path[1].x = xb[3];
+							path[1].y = yb[3];
+							path[2].x = xc;
+							path[2].y = yc;
+							path[3].x = xb[0];
+							path[3].y = yb[0];
+							style->outline.color = color[zn];
+							style->fill.pattern.back = color[zn];
+							gog_renderer_push_style (rend, style);
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							if (xl[2] < 0.) {
+								path[4].x = path[0].x = x[2];
+								path[4].y = path[0].y = y[2];
+								path[5].code = ART_END;
+							} else {
+								path[5].x = path[0].x = xl[3];
+								path[5].y = path[0].y = yl[3];
+								path[4].x = xl[4];
+								path[4].y = yl[4];
+								path[5].code = ART_LINETO;
+								path[6].code = ART_END;
+							}
+							path[1].x = xb[1];
+							path[1].y = yb[1];
+							path[3].x = xb[2];
+							path[3].y = yb[2];
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							gog_renderer_pop_style (rend);
+							if (xl[2] < 0.) {
+								path[4].x = path[0].x = x[1];
+								path[4].y = path[0].y = y[1];
+								path[5].code = ART_END;
+							} else {
+								path[5].x = path[0].x = xl[1];
+								path[5].y = path[0].y = yl[1];
+								path[4].x = xl[2];
+								path[4].y = yl[2];
+								path[5].code = ART_LINETO;
+								path[6].code = ART_END;
+							}
+							path[1].x = xb[0];
+							path[1].y = yb[0];
+							path[3].x = xb[1];
+							path[3].y = yb[1];
+							style->outline.color = color[zx];
+							style->fill.pattern.back = color[zx];
+							gog_renderer_push_style (rend, style);
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							if (xl[6] < 0.) {
+								path[4].x = path[0].x = x[3];
+								path[4].y = path[0].y = y[3];
+								path[5].code = ART_END;
+							} else {
+								path[5].x = path[0].x = xl[5];
+								path[5].y = path[0].y = yl[5];
+								path[4].x = xl[6];
+								path[4].y = yl[6];
+								path[5].code = ART_LINETO;
+								path[6].code = ART_END;
+							}
+							path[1].x = xb[2];
+							path[1].y = yb[2];
+							path[3].x = xb[3];
+							path[3].y = yb[3];
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							gog_renderer_pop_style (rend);
+						} else {
+							if (up) {
+								/* saddle point is in the lower slice */
+								/* draw the upper slices */
+								path[0].code = ART_MOVETO;
+								path[1].code = ART_LINETO;
+								path[2].code = ART_LINETO;
+								path[3].code = ART_LINETO;
+								if (xl[1] < 0.) {
+									path[4].code = ART_END;
+									path[0].x = path[3].x = x[1];
+									path[0].y = path[3].y = y[1];
+								} else {
+									path[4].code = ART_LINETO;
+									path[5].code = ART_END;
+									path[0].x = path[4].x = xl[1];
+									path[0].y = path[4].y = yl[1];
+									path[3].x = xl[2];
+									path[3].y = yl[2];
+								}
+								if ((l + 5) >= lmax)
+									lines = art_renew (lines, ArtVpath, lmax += 64);
+								lines[l].code = ART_MOVETO_OPEN;
+								t = (zx - zval[1]) / (zval[0] - zval[1]);
+								xl[1] = lines[l].x = path[1].x = x[1] + t * (x[0] - x[1]);
+								yl[1] = lines[l++].y = path[1].y = y[1] + t * (y[0] - y[1]);
+								lines[l].code = ART_LINETO;
+								t = (zx - zval[1]) / (zval[2] - zval[1]);
+								xl[2] = lines[l].x = path[2].x = x[1] + t * (x[2] - x[1]);
+								yl[2] = lines[l++].y = path[2].y = y[1] + t * (y[2] - y[1]);
+								style->outline.color = color[zx];
+								style->fill.pattern.back = color[zx];
+								gog_renderer_push_style (rend, style);
+								gog_renderer_draw_polygon (rend, path, FALSE);
+								if (xl[5] < 0.) {
+									path[4].code = ART_END;
+									path[0].x = path[3].x = x[3];
+									path[0].y = path[3].y = y[3];
+								} else {
+									path[4].code = ART_LINETO;
+									path[5].code = ART_END;
+									path[0].x = path[4].x = xl[5];
+									path[0].y = path[4].y = yl[5];
+									path[3].x = xl[6];
+									path[3].y = yl[6];
+								}
+								if ((l + 5) >= lmax)
+									lines = art_renew (lines, ArtVpath, lmax += 64);
+								lines[l].code = ART_MOVETO_OPEN;
+								t = (zx - zval[3]) / (zval[2] - zval[3]);
+								xl[5] = lines[l].x = path[1].x = x[3] + t * (x[2] - x[3]);
+								yl[5] = lines[l++].y = path[1].y = y[3] + t * (y[2] - y[3]);
+								lines[l].code = ART_LINETO;
+								t = (zx - zval[3]) / (zval[0] - zval[3]);
+								xl[6] = lines[l].x = path[2].x = x[3] + t * (x[0] - x[3]);
+								yl[6] = lines[l++].y = path[2].y = y[3] + t * (y[0] - y[3]);
+								gog_renderer_draw_polygon (rend, path, FALSE);
+								gog_renderer_pop_style (rend);
+							} else {
+								/* saddle point is in the upper slice */
+								path[0].code = ART_MOVETO;
+								path[1].code = ART_LINETO;
+								path[2].code = ART_LINETO;
+								path[3].code = ART_LINETO;
+								if (xl[0] < 0.) {
+									path[4].code = ART_END;
+									path[0].x = path[3].x = x[0];
+									path[0].y = path[3].y = y[0];
+								} else {
+									path[4].code = ART_LINETO;
+									path[5].code = ART_END;
+									path[0].x = path[4].x = xl[7];
+									path[0].y = path[4].y = yl[7];
+									path[3].x = xl[0];
+									path[3].y = yl[0];
+								}
+								if ((l + 5) >= lmax)
+									lines = art_renew (lines, ArtVpath, lmax += 64);
+								lines[l].code = ART_MOVETO_OPEN;
+								t = (k - zval[0]) / (zval[3] - zval[0]);
+								xl[7] = lines[l].x = path[1].x = x[0] + t * (x[3] - x[0]);
+								yl[7] = lines[l++].y = path[1].y = y[0] + t * (y[3] - y[0]);
+								lines[l].code = ART_LINETO;
+								t = (k - zval[0]) / (zval[1] - zval[0]);
+								xl[0] = lines[l].x = path[2].x = x[0] + t * (x[1] - x[0]);
+								yl[0] = lines[l++].y = path[2].y = y[0] + t * (y[1] - y[0]);
+								style->outline.color = color[zn];
+								style->fill.pattern.back = color[zn];
+								gog_renderer_push_style (rend, style);
+								gog_renderer_draw_polygon (rend, path, FALSE);
+								if (xl[4] < 0.) {
+									path[4].code = ART_END;
+									path[0].x = path[3].x = x[2];
+									path[0].y = path[3].y = y[2];
+								} else {
+									path[4].code = ART_LINETO;
+									path[5].code = ART_END;
+									path[0].x = path[4].x = xl[3];
+									path[0].y = path[4].y = yl[3];
+									path[3].x = xl[4];
+									path[3].y = yl[4];
+								}
+								lines[l].code = ART_MOVETO_OPEN;
+								t = (k - zval[2]) / (zval[1] - zval[2]);
+								xl[3] = lines[l].x = path[1].x = x[2] + t * (x[1] - x[2]);
+								yl[3] = lines[l++].y = path[1].y = y[2] + t * (y[1] - y[2]);
+								lines[l].code = ART_LINETO;
+								t = (k - zval[2]) / (zval[3] - zval[2]);
+								xl[4] = lines[l].x = path[2].x = x[2] + t * (x[3] - x[2]);
+								yl[4] = lines[l++].y = path[2].y = y[2] + t * (y[3] - y[2]);
+								gog_renderer_draw_polygon (rend, path, FALSE);
+								gog_renderer_pop_style (rend);
+								zn = zx;
+							}
+							/* draw the saddle containing slice */
+							k = 0;
+							for (s = 0; s < 8; s++) {
+								path[k].code = (k)? ART_LINETO: ART_MOVETO;
+								if (xl[s] < 0.) {
+									if (s == 7)
+										break;
+									else if (s > 0)
+										s++;
+									r = s / 2;
+									path[k].x = x[r];
+									path[k++].y = y[r];
+								} else {
+									path[k].x = xl[s];
+									path[k++].y = yl[s];
+								}
+							}
+							path[k].code = ART_LINETO;
+							path[k].x = path[0].x;
+							path[k++].y = path[0].y;
+							path[k].code = ART_END;
+							style->outline.color = color[zn];
+							style->fill.pattern.back = color[zn];
+							gog_renderer_push_style (rend, style);
+							gog_renderer_draw_polygon (rend, path, FALSE);
+							gog_renderer_pop_style (rend);
+						}
+					} else {
+						k = 0;
+						for (s = 0; s < 8; s++) {
+							path[k].code = (k)? ART_LINETO: ART_MOVETO;
+							if (xl[s] < 0.) {
+								if (s == 7)
+									break;
+								else if (s > 0)
+									s++;
+								r = s / 2;
+								path[k].x = x[r];
+								path[k++].y = y[r];
+							} else {
+								path[k].x = xl[s];
+								path[k++].y = yl[s];
+							}
+						}
+						path[k].code = ART_LINETO;
+						path[k].x = path[0].x;
+						path[k++].y = path[0].y;
+						path[k].code = ART_END;
+						style->outline.color = color[zx];
+						style->fill.pattern.back = color[zx];
+						gog_renderer_push_style (rend, style);
+						gog_renderer_draw_polygon (rend, path, FALSE);
+						gog_renderer_pop_style (rend);
+					}
+				} else {
+					/* no saddle point visible */
+					if ((l + (zmax - zmin) * 2 + 1) >= lmax)
+						lines = art_renew (lines, ArtVpath, lmax += 64);
+					path[0].code = ART_MOVETO;
+					path[0].x = x[0];
+					path[0].y = y[0];
+					p = 1;
+					k = 1;
+					s = 0;
+					r = kmax;
+					while (zmin < zmax) {
+						style->outline.color = color[zmin];
+						style->fill.pattern.back = color[zmin];
+						gog_renderer_push_style (rend, style);
+						while (z[k] <= zmin && k < kmax) {
+							if (fabs (path[p-1].x - x[k]) > CONTOUR_EPSILON ||
+								fabs (path[p-1].y - y[k]) > CONTOUR_EPSILON) {
+								path[p].code = ART_LINETO;
+								path[p].x = x[k];
+								path[p++].y = y[k++];
+							} else
+								k++;	
+						}
+						while (z[r] <= zmin && r > 0)
+							r--;
+						zmin++;
+						t = (zmin - zval[k - 1]) / (zval[k] - zval[k - 1]);
+						path[p].code = ART_LINETO;
+						lines[l].code = ART_MOVETO_OPEN;
+						lines[l].x = path[p].x = x[k - 1] + t * (x[k] - x[k - 1]);
+						lines[l++].y = path[p].y = y[k - 1] + t * (y[k] - y[k - 1]);
+						if (fabs (path[p-1].x - path[p].x) > CONTOUR_EPSILON ||
+							fabs (path[p-1].y - path[p].y) > CONTOUR_EPSILON)
+							p++;
+						path[p].code = ART_LINETO;
+						lines[l].code = ART_LINETO;
+						if (r < kmax) {
+							t = (zmin - zval[r]) / (zval[r + 1] - zval[r]);
+							lines[l].x = path[p].x = x[r] + t * (x[r + 1] - x[r]);
+							lines[l++].y = path[p].y = y[r] + t * (y[r + 1] - y[r]);
+						} else {
+							t = (zmin - zval[r]) / (zval[0] - zval[r]);
+							lines[l].x = path[p].x = x[r] + t * (x[0] - x[r]);
+							lines[l++].y = path[p].y = y[r] + t * (y[0] - y[r]);
+						}
+						if (fabs (path[p-1].x - path[p].x) > CONTOUR_EPSILON ||
+							fabs (path[p-1].y - path[p].y) > CONTOUR_EPSILON)
+							p++;
+						if (s == 0) {
+							for (h = r + 1; h <= kmax; h++) {
+								if (fabs (path[p-1].x - x[h]) > CONTOUR_EPSILON ||
+									fabs (path[p-1].y - y[h]) > CONTOUR_EPSILON) {
+									path[p].code = ART_LINETO;
+									path[p].x = x[h];
+									path[p++].y = y[h];
+								}
+							}
+						} else {
+							for (h = r + 1; h < s; h++) {
+								if (fabs (path[p-1].x - x[h]) > CONTOUR_EPSILON ||
+									fabs (path[p-1].y - y[h]) > CONTOUR_EPSILON) {
+									path[p].code = ART_LINETO;
+									path[p].x = x[h];
+									path[p++].y = y[h];
+								}
+							}
+						}
+						s = r + 1;
+						if (fabs (path[p-1].x - path[0].x) > CONTOUR_EPSILON ||
+							fabs (path[p-1].y -path[0].y) > CONTOUR_EPSILON) {
+							path[p].code = ART_LINETO;
+							path[p].x = path[0].x;
+							path[p++].y = path[0].y;
+						} else {
+							/* use the exact values so that the polygon is closed */
+							path[p-1].x = path[0].x;
+							path[p-1].y = path[0].y;
+						}
+						path[p].code = ART_END;
+						gog_renderer_draw_polygon (rend, path, FALSE);
+						gog_renderer_pop_style (rend);
+						path[0].x = lines[l - 1].x;
+						path[0].y = lines[l - 1].y;
+						path[1].x = lines[l - 2].x;
+						path[1].y = lines[l - 2].y;
+						p = (fabs (path[0].x - path[1].x) > CONTOUR_EPSILON ||
+							fabs (path[0].y - path[1].y) > CONTOUR_EPSILON)?
+							2: 1;
+					}
+					if (fabs (path[0].x - path[1].x) < CONTOUR_EPSILON
+						&& fabs (path[0].y - path[1].y) < CONTOUR_EPSILON)
+						continue;
+					while (k < s) {
+						path[p].code = ART_LINETO;
+						path[p].x = x[k];
+						path[p++].y = y[k++];
+					}
+					path[p].code = ART_LINETO;
+					path[p].x = path[0].x;
+					path[p++].y = path[0].y;
+					path[p].code = ART_END;
+					style->outline.color = color[zmin];
+					style->fill.pattern.back = color[zmin];
+					gog_renderer_push_style (rend, style);
+					gog_renderer_draw_polygon (rend, path, FALSE);
+					gog_renderer_pop_style (rend);
+				}
+			}
+		}
+	}
+	lines[l].code = ART_END;
+	gog_renderer_push_style (rend, GOG_STYLED_OBJECT (series)->style);
+	gog_renderer_draw_path  (rend, lines);
+	gog_renderer_pop_style (rend);
+	gog_renderer_pop_clip (rend);
+	art_free (lines);
+	art_free (path);
+	g_object_unref (style);
+	gog_axis_map_free (x_map);
+	gog_axis_map_free (y_map);
+}
+
+static void
+gog_contour_view_class_init (GogViewClass *view_klass)
+{
+	view_klass->render = gog_contour_view_render;
+}
+
+GSF_DYNAMIC_CLASS (GogContourView, gog_contour_view,
+	gog_contour_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)
+
+/*****************************************************************************/
+
+static GogStyledObjectClass *series_parent_klass;
+
+static void
+gog_surface_series_update (GogObject *obj)
+{
+	GogSurfaceSeries *series = GOG_SURFACE_SERIES (obj);
+	GODataMatrixSize size, old_size;
+	GODataMatrix *mat;
+	GODataVector *vec;
+	int length;
+	size.rows = 0;
+	size.columns = 0;
+	if (series->base.values[2].data != NULL) {
+		old_size.rows = series->rows;
+		old_size.columns = series->columns;
+		mat = GO_DATA_MATRIX (series->base.values[2].data);
+		go_data_matrix_get_values (mat);
+		size = go_data_matrix_get_size (mat);
+	}
+	if (series->base.values[0].data != NULL) {
+		vec = GO_DATA_VECTOR (series->base.values[0].data);
+		go_data_vector_get_values (vec);
+		length = go_data_vector_get_len (vec);
+		if (length < size.columns)
+			size.columns = length;
+	}
+	if (series->base.values[1].data != NULL) {
+		vec = GO_DATA_VECTOR (series->base.values[1].data);
+		go_data_vector_get_values (vec);
+		length = go_data_vector_get_len (vec);
+		if (length < size.rows)
+			size.rows = length;
+	}
+	series->rows = size.rows;
+	series->columns = size.columns;
+
+	/* queue plot for redraw */
+	gog_object_request_update (GOG_OBJECT (series->base.plot));
+/*	gog_plot_request_cardinality_update (series->base.plot);*/
+
+	if (series_parent_klass->base.update)
+		series_parent_klass->base.update (obj);
+}
+
+static void
+gog_surface_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	series_parent_klass->init_style (gso, style);
+}
+
+static void
+gog_surface_series_class_init (GogStyledObjectClass *gso_klass)
+{
+	GogObjectClass * obj_klass = (GogObjectClass *) gso_klass;
+
+	series_parent_klass = g_type_class_peek_parent (gso_klass);
+	gso_klass->init_style = gog_surface_series_init_style;
+	obj_klass->update = gog_surface_series_update;
+}
+
+
+GSF_DYNAMIC_CLASS (GogSurfaceSeries, gog_surface_series,
+	gog_surface_series_class_init, NULL,
+	GOG_SERIES_TYPE)
+
+G_MODULE_EXPORT void
+go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
+{
+	GTypeModule *module = go_plugin_get_type_module (plugin);
+	gog_contour_plot_register_type (module);
+	gog_contour_view_register_type (module);
+	gog_surface_series_register_type (module);
+	xl_contour_plot_register_type (module);
+	xl_surface_series_register_type (module);
+}
+
+G_MODULE_EXPORT void
+go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
+{
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/gog-surface.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,64 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-surface.h
+ *
+ * Copyright (C) 2004-2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_SURFACE_H
+#define GOG_SURFACE_H
+
+#include <goffice/graph/gog-plot-impl.h>
+
+G_BEGIN_DECLS
+
+/*-----------------------------------------------------------------------------
+ *
+ * GogContourPlot
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+typedef struct {
+	GogPlot	base;
+	
+	unsigned rows, columns;
+	gboolean transposed;
+	struct {
+		double minima, maxima;
+		GOFormat *fmt;
+	} x, y, z;
+	double *plotted_data;
+} GogContourPlot;
+
+#define GOG_CONTOUR_PLOT_TYPE	(gog_contour_plot_get_type ())
+#define GOG_CONTOUR_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_CONTOUR_PLOT_TYPE, GogContourPlot))
+#define GOG_IS_PLOT_CONTOUR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_CONTOUR_PLOT_TYPE))
+
+GType gog_contour_plot_get_type (void);
+
+typedef struct {
+	GogPlotClass	base;
+
+	double * (*build_matrix) (GogContourPlot const *plot, gboolean *cardinality_changed);
+} GogContourPlotClass;
+
+#define GOG_CONTOUR_PLOT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_CONTOUR_PLOT_TYPE, GogContourPlotClass))
+
+G_END_DECLS
+
+#endif /* GOG_SURFACE_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plot-types.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plot-types.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plot-types.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns:graph="http://www.gnumeric.org/graph_v2.dtd">
+	<Family _name="Surface"	sample_image_file="surface.xpm" axis_set="pseudo-3d"/>
+
+	<Type _name="Contour" row="1" col="1"
+		engine="GogContourPlot" family="Surface"
+		_description="Contour plot."
+		sample_image_file="chart_contour_1_1.png">
+	</Type>
+</Types>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plugin.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plugin.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/plugin.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin id="GOffice_plot_surface">
+	<information>
+		<_name>Surface Charts</_name>
+		<_description>Surface charts</_description>
+	</information>
+	<loader type="Gnumeric_Builtin:module">
+		<attribute name="module_file" value="surface"/>
+	</loader>
+	<services>
+		<service type="plot_engine" id="GogContourPlot">
+			<information>
+				<_description>Contour plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="XLContourPlot">
+			<information>
+				<_description>Excel compatibility contour plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_type" id="surface">
+			<file>plot-types.xml</file>
+			<information>
+				<_description>Default surface plot types</_description>
+			</information>
+		</service>
+	</services>
+</plugin>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,310 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * xl-surface.c
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "xl-surface.h"
+
+#include <glib/gi18n.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <goffice/data/go-data-simple.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-math.h>
+
+static GogObjectClass *xl_contour_parent_klass;
+typedef GogSeries XLSurfaceSeries;
+typedef GogSeriesClass XLSurfaceSeriesClass;
+
+#define XL_SURFACE_SERIES_TYPE	(xl_surface_series_get_type ())
+#define XL_SURFACE_SERIES(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), XL_SURFACE_SERIES_TYPE, XLSurfaceSeries))
+#define XL_IS_SURFACE_SERIES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), XL_SURFACE_SERIES_TYPE))
+
+static GType xl_surface_series_get_type (void);
+
+/*****************************************************************************/
+
+typedef GogContourPlotClass XLContourPlotClass;
+
+static double *
+xl_contour_plot_build_matrix (GogContourPlot const *plot,
+			gboolean *cardinality_changed)
+{
+	unsigned i, j, length;
+	GogAxisMap *map;
+	GogAxisTick *zticks;
+	GogAxis *axis = plot->base.axis[GOG_AXIS_PSEUDO_3D];
+	unsigned nticks;
+	double x[2], val;
+	GogSeries *series = NULL;
+	GODataVector *vec;
+	unsigned n = plot->rows * plot->columns;
+	double *data, minimum, maximum;
+	unsigned max;
+	GSList *ptr;
+
+	if (!gog_axis_get_bounds (axis, &minimum, &maximum))
+		return NULL;
+	data = g_new (double, n);
+	nticks = gog_axis_get_ticks (axis, &zticks);
+	map = gog_axis_map_new (axis, 0, 1);
+	for (i = j = 0; i < nticks; i++)
+		if (zticks[i].type == GOG_AXIS_TICK_MAJOR) {
+			x[j++] = gog_axis_map_to_view (map, zticks[i].position);
+			if (j > 1)
+				break;
+		}
+	x[1] -= x[0];
+
+	for (i = 0, ptr = plot->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		vec = GO_DATA_VECTOR (series->values[1].data);
+		length = go_data_vector_get_len (vec);
+		for (j = 0; j < plot->columns; j++) {
+			/* The vector might be too short, excel is so ugly ;-) */
+			val = (j < length)? gog_axis_map_to_view (map,
+					go_data_vector_get_value (vec, j)): 0.;
+			/* This is an excel compatible plot, so let's be compatible */
+			if (val == go_nan || !go_finite (val))
+				val = 0.;
+			if (fabs (val) == DBL_MAX)
+				val = go_nan;
+			else {
+				val = val/ x[1] - x[0];
+				if (val < 0) {
+					val = go_nan;
+				}
+			}
+			data[i * plot->columns + j] = val;
+		}
+		i++;
+	}
+	g_return_val_if_fail (series != NULL, NULL);
+	max = (unsigned) ceil (1 / x[1]);
+	series = plot->base.series->data;
+	if (series->num_elements != max) {
+		series->num_elements = max;
+		*cardinality_changed = TRUE;
+	}
+	gog_axis_map_free (map);
+	return data;
+}
+
+static void
+xl_contour_plot_update (GogObject *obj)
+{
+	GogContourPlot * model = GOG_CONTOUR_PLOT(obj);
+	XLSurfaceSeries * series;
+	double zmin =  DBL_MAX, zmax = -DBL_MAX, tmp_min, tmp_max;
+	GSList *ptr;
+	model->rows = 0;
+	model->columns = 0;
+
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		if (series->num_elements > model->columns)
+			model->columns = series->num_elements;
+		model->rows++;
+		go_data_vector_get_minmax (GO_DATA_VECTOR (
+			series->values[1].data), &tmp_min, &tmp_max);
+		if (zmin > tmp_min) zmin = tmp_min;
+		if (zmax < tmp_max) zmax = tmp_max;
+	}
+	g_free (model->plotted_data);
+	model->plotted_data = NULL;
+	if ((zmin != model->z.minima)
+			|| (zmax != model->z.maxima)) {
+		model->z.minima = zmin;
+		model->z.maxima = zmax;
+		gog_axis_bound_changed (model->base.axis[GOG_AXIS_PSEUDO_3D], GOG_OBJECT (model));
+	} else
+		gog_plot_update_3d (GOG_PLOT (model));
+
+	gog_axis_bound_changed (model->base.axis[GOG_AXIS_X], obj);
+	gog_axis_bound_changed (model->base.axis[GOG_AXIS_Y], obj);
+}
+
+static GODataVector *
+get_y_vector (GogPlot *plot)
+{
+	XLContourPlot *contour = XL_CONTOUR_PLOT (plot);
+	GSList *ptr;
+	int i;
+
+	if (contour->y_labels)
+		g_free (contour->y_labels);
+	contour->y_labels = g_new0 (char const *, contour->base.rows);
+
+	for (ptr = plot->series, i = 0 ; ptr != NULL ; ptr = ptr->next, i++) {
+		XLSurfaceSeries *series = ptr->data;
+
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+		contour->y_labels[i] = go_data_scalar_get_str (GO_DATA_SCALAR (
+				series->values[-1].data));
+	}
+
+	return GO_DATA_VECTOR (go_data_vector_str_new (contour->y_labels, i, NULL));
+}
+
+static GOData *
+xl_contour_plot_axis_get_bounds (GogPlot *plot, GogAxisType axis, 
+				GogPlotBoundInfo * bounds)
+{
+	XLContourPlot *contour = XL_CONTOUR_PLOT (plot);
+	GODataVector *vec = NULL;
+	GOFormat *fmt;
+
+	if (axis == GOG_AXIS_X) {
+		XLSurfaceSeries *series = XL_SURFACE_SERIES (plot->series->data);
+		vec = GO_DATA_VECTOR (series->values[0].data);
+		fmt = contour->base.x.fmt;
+	} else if (axis == GOG_AXIS_Y) {
+		if (!contour->base.rows)
+			return NULL;
+		vec = get_y_vector (plot);
+		fmt = contour->base.y.fmt;
+	} else {
+		if (bounds->fmt == NULL && contour->base.z.fmt != NULL)
+			bounds->fmt = go_format_ref (contour->base.z.fmt);
+		bounds->val.minima = contour->base.z.minima;
+		bounds->val.maxima = contour->base.z.maxima;
+		return NULL;
+	}
+	if (bounds->fmt == NULL && fmt != NULL)
+		bounds->fmt = go_format_ref (fmt);
+	bounds->val.minima = 0.;
+	bounds->logical.minima = 0.;
+	bounds->logical.maxima = go_nan;
+	bounds->is_discrete    = TRUE;
+	bounds->center_on_ticks = TRUE;
+	bounds->val.maxima = (axis == GOG_AXIS_X)? 
+		contour->base.columns - 1.: 
+		contour->base.rows - 1.;
+	return (GOData*) vec;
+}
+
+static void
+xl_contour_plot_finalize (GObject *obj)
+{
+	XLContourPlot *plot = XL_CONTOUR_PLOT (obj);
+	if (plot->y_labels)
+		g_free (plot->y_labels);
+	G_OBJECT_CLASS (xl_contour_parent_klass)->finalize (obj);
+}
+
+static void
+xl_contour_plot_class_init (GogContourPlotClass *klass)
+{
+	GogPlotClass *gog_plot_klass = (GogPlotClass*) klass;
+	GogObjectClass *gog_object_klass = (GogObjectClass *) klass;
+	GObjectClass   *gobject_klass = (GObjectClass *) klass;
+
+	xl_contour_parent_klass = g_type_class_peek_parent (klass);
+
+	gobject_klass->finalize     = xl_contour_plot_finalize;
+
+	/* Fill in GOGObject superclass values */
+	gog_object_klass->update	= xl_contour_plot_update;
+	gog_object_klass->populate_editor	= NULL;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("X"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_LABEL, GOG_MS_DIM_CATEGORIES },
+			{ N_("Z"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES },
+		};
+		gog_plot_klass->desc.series.dim = dimensions;
+		gog_plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+		gog_plot_klass->desc.series.style_fields = 0;
+	}
+	/* Fill in GogPlotClass methods */
+	gog_plot_klass->axis_get_bounds	= xl_contour_plot_axis_get_bounds;
+	gog_plot_klass->series_type = xl_surface_series_get_type();
+
+	klass->build_matrix = xl_contour_plot_build_matrix;
+}
+
+static void
+xl_contour_plot_init (XLContourPlot *contour)
+{
+	contour->y_labels = NULL;
+}
+
+GSF_DYNAMIC_CLASS (XLContourPlot, xl_contour_plot,
+	xl_contour_plot_class_init, xl_contour_plot_init,
+	GOG_CONTOUR_PLOT_TYPE)
+
+/*****************************************************************************/
+
+static GogStyledObjectClass *series_parent_klass;
+
+static void
+xl_surface_series_update (GogObject *obj)
+{
+	XLSurfaceSeries *series = XL_SURFACE_SERIES (obj);
+	int x_len = 0, z_len = 0;
+/*	unsigned old_num = series->num_elements;*/
+
+	if (series->values[1].data != NULL)
+		z_len = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->values[1].data));
+	if (series->values[0].data != NULL)
+		x_len = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->values[0].data));
+	else
+		x_len = z_len;
+	series->num_elements = MIN (x_len, z_len);
+
+	/* queue plot for redraw */
+	gog_object_request_update (GOG_OBJECT (series->plot));
+/*	if (old_num != series->base.num_elements)
+		gog_plot_request_cardinality_update (series->plot);*/
+
+	if (series_parent_klass->base.update)
+		series_parent_klass->base.update (obj);
+}
+
+static void
+xl_surface_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	series_parent_klass->init_style (gso, style);
+}
+
+static void
+xl_surface_series_class_init (GogStyledObjectClass *gso_klass)
+{
+	GogObjectClass * obj_klass = (GogObjectClass *) gso_klass;
+
+	series_parent_klass = g_type_class_peek_parent (gso_klass);
+	gso_klass->init_style = xl_surface_series_init_style;
+	obj_klass->update = xl_surface_series_update;
+}
+
+
+GSF_DYNAMIC_CLASS (XLSurfaceSeries, xl_surface_series,
+	xl_surface_series_class_init, NULL,
+	GOG_SERIES_TYPE)

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_surface/xl-surface.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,51 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * xl-contour.h
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef XL_CONTOUR_H
+#define XL_CONTOUR_H
+
+#include "gog-surface.h"
+
+G_BEGIN_DECLS
+
+/*-----------------------------------------------------------------------------
+ *
+ * XLContourPlot
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+typedef struct {
+	GogContourPlot base;
+	char const **y_labels;
+} XLContourPlot;
+
+#define XL_CONTOUR_PLOT_TYPE	(xl_contour_plot_get_type ())
+#define XL_CONTOUR_PLOT(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), XL_CONTOUR_PLOT_TYPE, XLContourPlot))
+#define XL_PLOT_CONTOUR(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), XL_CONTOUR_PLOT_TYPE))
+
+GType xl_contour_plot_get_type (void);
+void  xl_contour_plot_register_type (GTypeModule *plugin);
+void  xl_surface_series_register_type (GTypeModule *plugin);
+
+G_END_DECLS
+
+#endif /* XL_CONTOUR_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,29 @@
+goffice_graph_xydir = $(goffice_plugindir)/plot_xy
+xmldir	 = $(goffice_graph_xydir)
+gladedir = $(goffice_graph_xydir)
+
+goffice_graph_xy_LTLIBRARIES = xy.la
+xy_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+xy_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+xy_la_SOURCES = \
+	gog-xy.c		\
+	gog-xy.h		\
+	gog-bubble-prefs.c
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+ at INTLTOOL_XML_RULE@
+
+dist_glade_DATA = gog-bubble-prefs.glade
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+
+EXTRA_DIST	= $(xml_in_files)
+DISTCLEANFILES	= $(xml_in_files:.xml.in=.xml)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice-plugins.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,597 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+goffice_graph_xydir = $(goffice_plugindir)/plot_xy
+xmldir = $(goffice_graph_xydir)
+gladedir = $(goffice_graph_xydir)
+
+goffice_graph_xy_LTLIBRARIES = xy.la
+xy_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+xy_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+xy_la_SOURCES = \
+	gog-xy.c		\
+	gog-xy.h		\
+	gog-bubble-prefs.c
+
+
+xml_in_files = plugin.xml.in plot-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+dist_glade_DATA = gog-bubble-prefs.glade
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+AM_CPPFLAGS = \
+    -I$(top_srcdir)		\
+    -I$(top_builddir)		\
+    $(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+subdir = plugins/plot_xy
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(goffice_graph_xy_LTLIBRARIES)
+
+xy_la_DEPENDENCIES =
+am_xy_la_OBJECTS = gog-xy.lo gog-bubble-prefs.lo
+xy_la_OBJECTS = $(am_xy_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-bubble-prefs.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gog-xy.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(xy_la_SOURCES)
+DATA = $(dist_glade_DATA) $(xml_DATA)
+
+DIST_COMMON = $(dist_glade_DATA) $(srcdir)/Makefile.in \
+	$(top_srcdir)/goffice-plugins.mk Makefile.am
+SOURCES = $(xy_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice-plugins.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/plot_xy/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+goffice_graph_xyLTLIBRARIES_INSTALL = $(INSTALL)
+install-goffice_graph_xyLTLIBRARIES: $(goffice_graph_xy_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_xydir)
+	@list='$(goffice_graph_xy_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(goffice_graph_xyLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_xydir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(goffice_graph_xyLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_xydir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-goffice_graph_xyLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(goffice_graph_xy_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_xydir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_xydir)/$$p; \
+	done
+
+clean-goffice_graph_xyLTLIBRARIES:
+	-test -z "$(goffice_graph_xy_LTLIBRARIES)" || rm -f $(goffice_graph_xy_LTLIBRARIES)
+	@list='$(goffice_graph_xy_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+xy.la: $(xy_la_OBJECTS) $(xy_la_DEPENDENCIES) 
+	$(LINK) -rpath $(goffice_graph_xydir) $(xy_la_LDFLAGS) $(xy_la_OBJECTS) $(xy_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-bubble-prefs.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-xy.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+dist_gladeDATA_INSTALL = $(INSTALL_DATA)
+install-dist_gladeDATA: $(dist_glade_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(gladedir)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f"; \
+	  $(dist_gladeDATA_INSTALL) $$d$$p $(DESTDIR)$(gladedir)/$$f; \
+	done
+
+uninstall-dist_gladeDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_glade_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(gladedir)/$$f"; \
+	  rm -f $(DESTDIR)$(gladedir)/$$f; \
+	done
+xmlDATA_INSTALL = $(INSTALL_DATA)
+install-xmlDATA: $(xml_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(xmldir)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f"; \
+	  $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+uninstall-xmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(xmldir)/$$f"; \
+	  rm -f $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_xydir) $(DESTDIR)$(gladedir) $(DESTDIR)$(xmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-goffice_graph_xyLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_gladeDATA \
+	install-goffice_graph_xyLTLIBRARIES install-xmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_xyLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-goffice_graph_xyLTLIBRARIES clean-libtool ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-dist_gladeDATA \
+	install-exec install-exec-am \
+	install-goffice_graph_xyLTLIBRARIES install-info \
+	install-info-am install-man install-strip install-xmlDATA \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-dist_gladeDATA \
+	uninstall-goffice_graph_xyLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+plot-types.xml : plot-types.xml.in
+	cp $< $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,126 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-bubble-prefs.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-xy.h"
+#include <goffice/gtk/goffice-gtk.h>
+#include <goffice/app/go-plugin.h>
+
+#include <gtk/gtkradiobutton.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtkspinbutton.h>
+
+#include <string.h>
+
+GtkWidget *gog_bubble_plot_pref   (GogBubblePlot *bubble, GOCmdContext *cc);
+
+static void
+cb_type_changed (GtkToggleButton* button, GObject *bubble)
+{
+	if (gtk_toggle_button_get_active (button))
+		g_object_set (bubble, "size-as-area",
+			strcmp (gtk_widget_get_name ((GtkWidget*) button), "area")? FALSE: TRUE, NULL);
+}
+
+static void
+cb_style_changed (GtkToggleButton* button, GObject *bubble)
+{
+	g_object_set (bubble, "vary-style-by-element",
+		gtk_toggle_button_get_active (button), NULL);
+}
+
+static void
+cb_3d_changed (GtkToggleButton* button, GObject *bubble)
+{
+	g_object_set (bubble, "in-3d",
+		gtk_toggle_button_get_active (button), NULL);
+}
+
+static void
+cb_negatives_changed (GtkToggleButton* button, GObject *bubble)
+{
+	g_object_set (bubble, "show-negatives",
+		gtk_toggle_button_get_active (button), NULL);
+}
+
+static void
+cb_scale_changed (GtkAdjustment *adj, GObject *bubble)
+{
+	g_object_set (bubble, "bubble-scale", adj->value / 100., NULL);
+}
+
+GtkWidget *
+gog_bubble_plot_pref (GogBubblePlot *bubble, GOCmdContext *cc)
+{
+	GtkWidget  *w;
+	char const *dir = go_plugin_get_dir_name (
+		go_plugins_get_plugin_by_id ("GOffice_plot_xy"));
+	char	 *path = g_build_filename (dir, "gog-bubble-prefs.glade", NULL);
+	GladeXML *gui = go_libglade_new (path, "gog_bubble_prefs", NULL, cc);
+
+	g_free (path);
+        if (gui == NULL)
+                return NULL;
+
+	w = glade_xml_get_widget (gui, "area");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), bubble->size_as_area);
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_type_changed), bubble);
+		
+	w = glade_xml_get_widget (gui, "diameter");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), !bubble->size_as_area);
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_type_changed), bubble);
+
+	w = glade_xml_get_widget (gui, "vary_style_by_element");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), bubble->base.base.vary_style_by_element);
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_style_changed), bubble);
+
+	w = glade_xml_get_widget (gui, "3d");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), bubble->in_3d);
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_3d_changed), bubble);
+#warning "Hide 3d button while not supported"
+	gtk_widget_hide (w);
+
+	w = glade_xml_get_widget (gui, "scale");
+	gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), bubble->bubble_scale * 100.);
+	g_signal_connect (G_OBJECT (gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (w))),
+		"value_changed",
+		G_CALLBACK (cb_scale_changed), bubble);
+
+	w = glade_xml_get_widget (gui, "show_negative_values");
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), bubble->show_negatives);
+	g_signal_connect (G_OBJECT (w),
+		"toggled",
+		G_CALLBACK (cb_negatives_changed), bubble);
+
+	w = glade_xml_get_widget (gui, "gog_bubble_prefs");
+	g_object_set_data_full (G_OBJECT (w),
+		"state", gui, (GDestroyNotify)g_object_unref);
+
+	return w;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.glade
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.glade	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-bubble-prefs.glade	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,246 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+  <property name="title" translatable="yes">window1</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+  <child>
+    <widget class="GtkTable" id="gog_bubble_prefs">
+      <property name="border_width">12</property>
+      <property name="visible">True</property>
+      <property name="n_rows">5</property>
+      <property name="n_columns">3</property>
+      <property name="homogeneous">False</property>
+      <property name="row_spacing">6</property>
+      <property name="column_spacing">12</property>
+
+      <child>
+	<widget class="GtkCheckButton" id="3d">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">3_d</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">3</property>
+	  <property name="bottom_attach">4</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkRadioButton" id="area">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">Sur_face</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">1</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkRadioButton" id="diameter">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">Dia_meter</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	  <property name="group">area</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">2</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkLabel" id="size_display">
+	  <property name="visible">True</property>
+	  <property name="label" translatable="yes">_Size represented by:</property>
+	  <property name="use_underline">True</property>
+	  <property name="use_markup">False</property>
+	  <property name="justify">GTK_JUSTIFY_LEFT</property>
+	  <property name="wrap">False</property>
+	  <property name="selectable">False</property>
+	  <property name="xalign">0</property>
+	  <property name="yalign">0.5</property>
+	  <property name="xpad">0</property>
+	  <property name="ypad">0</property>
+	  <property name="mnemonic_widget">area</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">1</property>
+	  <property name="top_attach">0</property>
+	  <property name="bottom_attach">1</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkCheckButton" id="vary_style_by_element">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">_Vary colors by bubble</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">2</property>
+	  <property name="bottom_attach">3</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkCheckButton" id="show_negative_values">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="label" translatable="yes">Show _negative values</property>
+	  <property name="use_underline">True</property>
+	  <property name="relief">GTK_RELIEF_NORMAL</property>
+	  <property name="focus_on_click">True</property>
+	  <property name="active">False</property>
+	  <property name="inconsistent">False</property>
+	  <property name="draw_indicator">True</property>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">2</property>
+	  <property name="top_attach">1</property>
+	  <property name="bottom_attach">2</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkHBox" id="scale_box">
+	  <property name="visible">True</property>
+	  <property name="homogeneous">False</property>
+	  <property name="spacing">12</property>
+
+	  <child>
+	    <widget class="GtkLabel" id="scale_label">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">_Bubbles scaled to</property>
+	      <property name="use_underline">True</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	      <property name="mnemonic_widget">scale</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkSpinButton" id="scale">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="climb_rate">1</property>
+	      <property name="digits">0</property>
+	      <property name="numeric">False</property>
+	      <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+	      <property name="snap_to_ticks">False</property>
+	      <property name="wrap">False</property>
+	      <property name="adjustment">100 0 200 1 10 10</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="percent">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">% of default size</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">False</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0.5</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="left_attach">0</property>
+	  <property name="right_attach">3</property>
+	  <property name="top_attach">4</property>
+	  <property name="bottom_attach">5</property>
+	  <property name="x_options">fill</property>
+	  <property name="y_options"></property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1236 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-xy.c
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-xy.h"
+#include <goffice/graph/gog-view.h>
+#include <goffice/graph/gog-renderer.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/graph/gog-theme.h>
+#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-error-bar.h>
+#include <goffice/graph/gog-chart.h>
+#include <goffice/graph/gog-series-lines.h>
+#include <goffice/data/go-data.h>
+#include <goffice/utils/go-color.h>
+#include <goffice/utils/go-marker.h>
+#include <goffice/utils/go-format.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/utils/go-line.h>
+#include <goffice/app/module-plugin-defs.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtklabel.h>
+#include <gsf/gsf-impl-utils.h>
+#include <math.h>
+
+typedef struct {
+	GogPlotClass	base;
+	
+	void (*adjust_bounds) (Gog2DPlot *model, double *x_min, double *x_max, double *y_min, double *y_max);
+} Gog2DPlotClass;
+
+typedef Gog2DPlotClass GogXYPlotClass;
+
+typedef Gog2DPlotClass GogBubblePlotClass;
+
+GOFFICE_PLUGIN_MODULE_HEADER;
+
+static GogObjectClass *plot2d_parent_klass;
+static void gog_2d_plot_adjust_bounds (Gog2DPlot *model, double *x_min, double *x_max, double *y_min, double *y_max);
+
+#define GOG_2D_PLOT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_2D_PLOT_TYPE, Gog2DPlotClass))
+
+static void
+gog_2d_plot_clear_formats (Gog2DPlot *plot2d)
+{
+	if (plot2d->x.fmt != NULL) {
+		go_format_unref (plot2d->x.fmt);
+		plot2d->x.fmt = NULL;
+	}
+	if (plot2d->y.fmt != NULL) {
+		go_format_unref (plot2d->y.fmt);
+		plot2d->y.fmt = NULL;
+	}
+}
+
+static void
+gog_2d_plot_update (GogObject *obj)
+{
+	Gog2DPlot *model = GOG_2D_PLOT (obj);
+	GogXYSeries const *series = NULL;
+	double x_min, x_max, y_min, y_max, tmp_min, tmp_max;
+	GSList *ptr;
+	gboolean is_discrete = FALSE;
+
+	x_min = y_min =  DBL_MAX;
+	x_max = y_max = -DBL_MAX;
+	gog_2d_plot_clear_formats (model);
+	for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) {
+		series = ptr->data;
+		if (!gog_series_is_valid (GOG_SERIES (series)))
+			continue;
+
+		go_data_vector_get_minmax (GO_DATA_VECTOR (
+			series->base.values[1].data), &tmp_min, &tmp_max);
+		if (y_min > tmp_min) y_min = tmp_min;
+		if (y_max < tmp_max) y_max = tmp_max;
+		if (model->y.fmt == NULL)
+			model->y.fmt = go_data_preferred_fmt (series->base.values[1].data);
+
+		if (series->base.values[0].data != NULL) {
+			go_data_vector_get_minmax (GO_DATA_VECTOR (
+				series->base.values[0].data), &tmp_min, &tmp_max);
+
+			if (!go_finite (tmp_min) || !go_finite (tmp_max) ||
+			    tmp_min > tmp_max) {
+				tmp_min = 0;
+				tmp_max = go_data_vector_get_len (
+					GO_DATA_VECTOR (series->base.values[1].data));
+
+				is_discrete = TRUE;
+			} else if (model->x.fmt == NULL)
+				model->x.fmt = go_data_preferred_fmt (series->base.values[0].data);
+		} else {
+			tmp_min = 0;
+			tmp_max = go_data_vector_get_len (
+				GO_DATA_VECTOR (series->base.values[1].data));
+			is_discrete = TRUE;
+		}
+
+		if (x_min > tmp_min) x_min = tmp_min;
+		if (x_max < tmp_max) x_max = tmp_max;
+	}
+
+	/*adjust bounds to allow large markers or bubbles*/
+	gog_2d_plot_adjust_bounds (model, &x_min, &x_max, &y_min, &y_max);
+	/* add room for error bars */
+	if (gog_error_bar_is_visible (series->x_errors)) {
+		gog_error_bar_get_minmax (series->x_errors, &tmp_min, &tmp_max);
+		if (x_min > tmp_min)
+			x_min = tmp_min;
+		if (x_max < tmp_max)
+			x_max = tmp_max;
+	}
+	if (gog_error_bar_is_visible (series->y_errors)) {
+		gog_error_bar_get_minmax (series->y_errors, &tmp_min, &tmp_max);
+		if (y_min > tmp_min)
+			y_min = tmp_min;
+		if (y_max < tmp_max)
+			y_max = tmp_max;
+	}
+	
+	if (model->x.minima != x_min || model->x.maxima != x_max) {
+		model->x.minima = x_min;
+		model->x.maxima = x_max;
+		gog_axis_bound_changed (model->base.axis[0], GOG_OBJECT (model));
+	}
+	if (model->y.minima != y_min || model->y.maxima != y_max) {
+		model->y.minima = y_min;
+		model->y.maxima = y_max;
+		gog_axis_bound_changed (model->base.axis[1], GOG_OBJECT (model));
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+	if (plot2d_parent_klass->update)
+		plot2d_parent_klass->update (obj);
+}
+
+static void
+gog_2d_plot_real_adjust_bounds (Gog2DPlot *model, double *x_min, double *x_max, double *y_min, double *y_max)
+{
+}
+
+static void
+gog_2d_plot_adjust_bounds (Gog2DPlot *model, double *x_min, double *x_max, double *y_min, double *y_max)
+{
+	Gog2DPlotClass *klass = GOG_2D_PLOT_GET_CLASS (model);
+	klass->adjust_bounds (model, x_min, x_max, y_min, y_max);
+}
+
+static GOData *
+gog_2d_plot_axis_get_bounds (GogPlot *plot, GogAxisType axis,
+			     GogPlotBoundInfo *bounds)
+{
+	Gog2DPlot *model = GOG_2D_PLOT (plot);
+
+	if (axis == GOG_AXIS_X) {
+		GSList *ptr;
+
+		bounds->val.minima = model->x.minima;
+		bounds->val.maxima = model->x.maxima;
+		bounds->is_discrete = model->x.minima > model->x.maxima ||
+			!go_finite (model->x.minima) ||
+			!go_finite (model->x.maxima);
+		if (bounds->fmt == NULL && model->x.fmt != NULL)
+			bounds->fmt = go_format_ref (model->x.fmt);
+
+		for (ptr = plot->series; ptr != NULL ; ptr = ptr->next)
+			if (gog_series_is_valid (GOG_SERIES (ptr->data)))
+				return GOG_SERIES (ptr->data)->values[0].data;
+		return NULL;
+	} 
+	
+	if (axis == GOG_AXIS_Y) {
+		bounds->val.minima = model->y.minima;
+		bounds->val.maxima = model->y.maxima;
+		if (bounds->fmt == NULL && model->y.fmt != NULL)
+			bounds->fmt = go_format_ref (model->y.fmt);
+	}
+	return NULL;
+}
+
+static void
+gog_2d_finalize (GObject *obj)
+{
+	gog_2d_plot_clear_formats (GOG_2D_PLOT (obj));
+	G_OBJECT_CLASS (plot2d_parent_klass)->finalize (obj);
+}
+
+static GType gog_xy_view_get_type (void);
+static GType gog_xy_series_get_type (void);
+
+static void
+gog_2d_plot_class_init (GogPlotClass *plot_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) plot_klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) plot_klass;
+	Gog2DPlotClass *gog_2d_plot_klass = (Gog2DPlotClass*) plot_klass;
+
+	gog_2d_plot_klass->adjust_bounds = gog_2d_plot_real_adjust_bounds;
+
+	plot2d_parent_klass = g_type_class_peek_parent (plot_klass);
+
+	gobject_klass->finalize     = gog_2d_finalize;
+
+	gog_klass->update	= gog_2d_plot_update;
+	gog_klass->view_type	= gog_xy_view_get_type ();
+
+	plot_klass->desc.num_series_min = 1;
+	plot_klass->desc.num_series_max = G_MAXINT;
+	plot_klass->series_type  	= gog_xy_series_get_type ();
+	plot_klass->axis_set	      	= GOG_AXIS_SET_XY;
+	plot_klass->axis_get_bounds   	= gog_2d_plot_axis_get_bounds;
+}
+
+static void
+gog_2d_plot_init (Gog2DPlot *plot2d)
+{
+	plot2d->base.vary_style_by_element = FALSE;
+	plot2d->x.fmt = plot2d->y.fmt = NULL;
+}
+
+GSF_DYNAMIC_CLASS (Gog2DPlot, gog_2d_plot,
+	gog_2d_plot_class_init, gog_2d_plot_init,
+	GOG_PLOT_TYPE)
+
+enum {
+	GOG_XY_PROP_0,
+	GOG_XY_PROP_DEFAULT_STYLE_HAS_MARKERS,
+	GOG_XY_PROP_DEFAULT_STYLE_HAS_LINES,
+	GOG_XY_PROP_USE_SPLINES
+};
+
+static GogObjectClass *xy_parent_klass;
+
+#define GOG_XY_PLOT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_XY_PLOT_TYPE, GogXYPlotClass))
+
+static char const *
+gog_xy_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	/* xgettext : the base for how to name scatter plot objects
+	 * eg The 2nd plot in a chart will be called
+	 * 	PlotXY2 */
+	return N_("PlotXY");
+}
+
+static void
+gog_xy_set_property (GObject *obj, guint param_id,
+		     GValue const *value, GParamSpec *pspec)
+{
+	GogXYPlot *xy = GOG_XY_PLOT (obj);
+	switch (param_id) {
+	case GOG_XY_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		xy->default_style_has_markers = g_value_get_boolean (value);
+		break;
+	case GOG_XY_PROP_DEFAULT_STYLE_HAS_LINES:
+		xy->default_style_has_lines = g_value_get_boolean (value);
+		break;
+	case GOG_XY_PROP_USE_SPLINES:
+		xy->use_splines = g_value_get_boolean (value);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+static void
+gog_xy_get_property (GObject *obj, guint param_id,
+		     GValue *value, GParamSpec *pspec)
+{
+	GogXYPlot const *xy = GOG_XY_PLOT (obj);
+	switch (param_id) {
+	case GOG_XY_PROP_DEFAULT_STYLE_HAS_MARKERS:
+		g_value_set_boolean (value, xy->default_style_has_markers);
+		break;
+	case GOG_XY_PROP_DEFAULT_STYLE_HAS_LINES:
+		g_value_set_boolean (value, xy->default_style_has_lines);
+		break;
+	case GOG_XY_PROP_USE_SPLINES:
+		g_value_set_boolean (value, xy->use_splines);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_xy_plot_class_init (GogPlotClass *plot_klass)
+{
+	GObjectClass *gobject_klass = (GObjectClass *) plot_klass;
+	GogObjectClass *gog_klass = (GogObjectClass *) plot_klass;
+
+	xy_parent_klass = g_type_class_peek_parent (plot_klass);
+
+	gobject_klass->set_property = gog_xy_set_property;
+	gobject_klass->get_property = gog_xy_get_property;
+
+	g_object_class_install_property (gobject_klass, GOG_XY_PROP_DEFAULT_STYLE_HAS_MARKERS,
+		g_param_spec_boolean ("default-style-has-markers", NULL,
+			"Should the default style of a series include markers",
+			TRUE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GOG_XY_PROP_DEFAULT_STYLE_HAS_LINES,
+		g_param_spec_boolean ("default-style-has-lines", NULL,
+			"Should the default style of a series include lines",
+			TRUE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GOG_XY_PROP_USE_SPLINES,
+		g_param_spec_boolean ("use-splines", NULL,
+			"Should the plot use splines instead of linear interpolation",
+			FALSE, G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+
+	gog_klass->type_name	= gog_xy_plot_type_name;
+
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("X"), GOG_SERIES_SUGGESTED, FALSE,
+			  GOG_DIM_INDEX, GOG_MS_DIM_CATEGORIES },
+			{ N_("Y"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES },
+/* Names of the error data are not translated since they are not used */
+			{ "Y+err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_plus1 },
+			{ "Y-err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_minus1 },
+			{ "X+err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_plus2 },
+			{ "X-err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_minus2 }
+		};
+		plot_klass->desc.series.dim = dimensions;
+		plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+		plot_klass->desc.series.style_fields = GOG_STYLE_LINE | GOG_STYLE_MARKER;
+	}
+}
+
+static void
+gog_xy_plot_init (GogXYPlot *xy)
+{
+	xy->default_style_has_markers = TRUE;
+	xy->default_style_has_lines = TRUE;
+}
+
+GSF_DYNAMIC_CLASS (GogXYPlot, gog_xy_plot,
+	gog_xy_plot_class_init, gog_xy_plot_init,
+	GOG_2D_PLOT_TYPE)
+
+/*****************************************************************************/
+
+static GogObjectClass *bubble_parent_klass;
+
+#define GOG_BUBBLE_PLOT_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS ((o), GOG_BUBBLE_PLOT_TYPE, GogBubblePlotClass))
+
+static void gog_bubble_plot_adjust_bounds (Gog2DPlot *model, double *x_min, double *x_max, double *y_min, double *y_max);
+
+static char const *
+gog_bubble_plot_type_name (G_GNUC_UNUSED GogObject const *item)
+{
+	return N_("PlotBubble");
+}
+
+extern gpointer gog_bubble_plot_pref (GogBubblePlot *bubble, GOCmdContext *cc);
+static void
+gog_bubble_plot_populate_editor (GogObject *obj, 
+				 GogEditor *editor,
+				 G_GNUC_UNUSED GogDataAllocator *dalloc,
+			GOCmdContext *cc)
+{
+	gog_editor_add_page (editor,
+			     gog_bubble_plot_pref (GOG_BUBBLE_PLOT (obj), cc),
+			     _("Properties"));
+
+	(GOG_OBJECT_CLASS(bubble_parent_klass)->populate_editor) (obj, editor, dalloc, cc);
+}
+
+enum {
+	GOG_BUBBLE_PROP_0,
+	GOG_BUBBLE_PROP_AS_AREA,
+	GOG_BUBBLE_PROP_SHOW_NEGATIVES,
+	GOG_BUBBLE_PROP_IN_3D,
+	GOG_BUBBLE_PROP_SCALE
+};
+
+static void
+gog_bubble_plot_set_property (GObject *obj, guint param_id,
+			      GValue const *value, GParamSpec *pspec)
+{
+	GogBubblePlot *bubble = GOG_BUBBLE_PLOT (obj);
+
+	switch (param_id) {
+	case GOG_BUBBLE_PROP_AS_AREA :
+		bubble->size_as_area = g_value_get_boolean (value);
+		break;
+	case GOG_BUBBLE_PROP_SHOW_NEGATIVES :
+		bubble->show_negatives = g_value_get_boolean (value);
+		break;
+	case GOG_BUBBLE_PROP_IN_3D :
+		bubble->in_3d = g_value_get_boolean (value);
+		break;
+	case GOG_BUBBLE_PROP_SCALE :
+		bubble->bubble_scale = g_value_get_float (value);
+		break;
+
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 return; /* NOTE : RETURN */
+	}
+
+	/* none of the attributes triggers a size change yet.
+	 * When we add data labels we'll need it */
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static void
+gog_bubble_plot_get_property (GObject *obj, guint param_id,
+			  GValue *value, GParamSpec *pspec)
+{
+	GogBubblePlot *bubble = GOG_BUBBLE_PLOT (obj);
+
+	switch (param_id) {
+	case GOG_BUBBLE_PROP_AS_AREA :
+		g_value_set_boolean (value, bubble->size_as_area);
+		break;
+	case GOG_BUBBLE_PROP_SHOW_NEGATIVES :
+		g_value_set_boolean (value, bubble->show_negatives);
+		break;
+	case GOG_BUBBLE_PROP_IN_3D :
+		g_value_set_boolean (value, bubble->in_3d);
+		break;
+	case GOG_BUBBLE_PROP_SCALE :
+		g_value_set_float (value, bubble->bubble_scale);
+		break;
+	default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec);
+		 break;
+	}
+}
+
+static void
+gog_bubble_plot_class_init (GogPlotClass *plot_klass)
+{
+	GogObjectClass *gog_klass = (GogObjectClass *) plot_klass;
+	GObjectClass *gobject_klass = (GObjectClass *) plot_klass;
+	Gog2DPlotClass *gog_2d_plot_klass = (Gog2DPlotClass*) plot_klass;
+
+	bubble_parent_klass = g_type_class_peek_parent (plot_klass);
+
+	gobject_klass->set_property = gog_bubble_plot_set_property;
+	gobject_klass->get_property = gog_bubble_plot_get_property;
+
+	gog_klass->type_name	= gog_bubble_plot_type_name;
+	gog_klass->populate_editor	= gog_bubble_plot_populate_editor;
+
+	gog_2d_plot_klass->adjust_bounds = gog_bubble_plot_adjust_bounds;
+
+	g_object_class_install_property (gobject_klass, GOG_BUBBLE_PROP_AS_AREA,
+		g_param_spec_boolean ("size-as-area", "size-as-area",
+			"Display size as area instead of diameter",
+			TRUE,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GOG_BUBBLE_PROP_SHOW_NEGATIVES,
+		g_param_spec_boolean ("show-negatives", "show-negatives",
+			"Draw bubbles for negative values",
+			FALSE,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GOG_BUBBLE_PROP_IN_3D,
+		g_param_spec_boolean ("in-3d", "in-3d",
+			"Draw 3d bubbles",
+			FALSE,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, GOG_BUBBLE_PROP_SCALE,
+		g_param_spec_float ("bubble-scale", "bubble-scale",
+			"Fraction of default radius used for display.",
+			0., 2., 1.,
+			G_PARAM_READWRITE | GOG_PARAM_PERSISTENT));
+	{
+		static GogSeriesDimDesc dimensions[] = {
+			{ N_("X"), GOG_SERIES_SUGGESTED, FALSE,
+			  GOG_DIM_INDEX, GOG_MS_DIM_CATEGORIES },
+			{ N_("Y"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_VALUES },
+			{ N_("Bubble"), GOG_SERIES_REQUIRED, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_BUBBLES },
+/* Names of the error data are not translated since they are not used */
+			{ "Y+err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_plus1 },
+			{ "Y-err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_minus1 },
+			{ "X+err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_plus2 },
+			{ "X-err", GOG_SERIES_ERRORS, FALSE,
+			  GOG_DIM_VALUE, GOG_MS_DIM_ERR_minus2 }
+		};
+		plot_klass->desc.series.dim = dimensions;
+		plot_klass->desc.series.num_dim = G_N_ELEMENTS (dimensions);
+		plot_klass->desc.series.style_fields = GOG_STYLE_OUTLINE | GOG_STYLE_FILL;
+	}
+}
+
+#define BUBBLE_MAX_RADIUS_RATIO 8.
+static void
+gog_bubble_plot_adjust_bounds (Gog2DPlot *model, double *x_min, double *x_max, double *y_min, double *y_max)
+{
+	/* Add room for bubbles*/
+	double tmp;
+	double factor = BUBBLE_MAX_RADIUS_RATIO / GOG_BUBBLE_PLOT (model)->bubble_scale - 2.;
+	tmp = (*x_max - *x_min) / factor;
+	*x_min -= tmp;
+	*x_max += tmp;
+	tmp = (*y_max - *y_min) / factor;
+	*y_min -= tmp;
+	*y_max += tmp;
+}
+
+static void
+gog_bubble_plot_init (GogBubblePlot *bubble)
+{
+	bubble->size_as_area = TRUE;
+	bubble->in_3d = FALSE;
+	bubble->show_negatives = FALSE;
+	bubble->bubble_scale = 1.0;
+}
+
+GSF_DYNAMIC_CLASS (GogBubblePlot, gog_bubble_plot,
+	gog_bubble_plot_class_init, gog_bubble_plot_init,
+	GOG_2D_PLOT_TYPE)
+
+/*****************************************************************************/
+typedef GogPlotView		GogXYView;
+typedef GogPlotViewClass	GogXYViewClass;
+
+#define MAX_ARC_SEGMENTS 64
+
+static void
+bubble_draw_circle (GogView *view, double x, double y, double radius)
+{
+	double theta, dt = 2 * M_PI / MAX_ARC_SEGMENTS;
+	int i;
+	ArtVpath path[MAX_ARC_SEGMENTS + 2];
+	path[0].x = path[MAX_ARC_SEGMENTS].x = x + radius;
+	path[0].y = path[MAX_ARC_SEGMENTS].y = y;
+	path[0].code = ART_MOVETO;
+#warning what about small bubbles. With a very small radius, libart emits lot of warnings.
+	if (radius < 1.) radius = 1.;
+	for (i = 1, theta = dt; i < MAX_ARC_SEGMENTS; i++, theta += dt) {
+		path[i].x = x + radius * cos (theta);
+		/* must turn clockwise for gradients */
+		path[i].y = y - radius * sin (theta);
+		path[i].code = ART_LINETO;
+	}
+	path[MAX_ARC_SEGMENTS].code = ART_LINETO;
+	path[MAX_ARC_SEGMENTS + 1].code = ART_END;
+	gog_renderer_draw_polygon (view->renderer, path, FALSE);
+}
+
+typedef struct {
+	double x, y;
+} MarkerData;
+
+static void
+gog_xy_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	Gog2DPlot const *model = GOG_2D_PLOT (view->model);
+	unsigned num_series;
+	GogChart *chart = GOG_CHART (view->model->parent);
+	GogChartMap *chart_map;
+	GogAxisMap *x_map, *y_map;
+	GogXYSeries const *series = NULL;
+	unsigned i ,j ,k ,n, tmp;
+	GogTheme *theme = gog_object_get_theme (GOG_OBJECT (model));
+	GogStyle *neg_style = NULL;
+	GogViewAllocation const *area;
+	GSList *ptr;
+	double const *y_vals, *x_vals = NULL, *z_vals = NULL;
+	double x = 0., y = 0., z, x_canvas = 0., y_canvas = 0.;
+	double zmax, rmax = 0., x_zero, y_zero;
+	double x_margin_min, x_margin_max, y_margin_min, y_margin_max, margin;
+	double xerrmin, xerrmax, yerrmin, yerrmax;
+	GogStyle *style = NULL;
+	gboolean show_marks, show_lines, show_negatives, in_3d, size_as_area = TRUE;
+
+	MarkerData **markers;
+	unsigned *num_markers;
+
+	area = gog_chart_view_get_plot_area (view->parent);
+	chart_map = gog_chart_map_new (chart, area, 
+				       GOG_PLOT (model)->axis[GOG_AXIS_X], 
+				       GOG_PLOT (model)->axis[GOG_AXIS_Y],
+				       NULL, FALSE);
+	if (!gog_chart_map_is_valid (chart_map)) {
+		gog_chart_map_free (chart_map);
+		return;
+	}
+
+	x_map = gog_chart_map_get_axis_map (chart_map, 0);
+	y_map = gog_chart_map_get_axis_map (chart_map, 1);
+
+	/* Draw drop lines from point to axis start. To change this behaviour
+	 * and draw drop lines from point to zero, we can use gog_axis_map_get_baseline:
+	 * x_zero = gog_axis_map_get_baseline (x_map); 
+	 * What we really want is to draw drop lines from point to
+	 * a selected axis. But for this purpose, we need a GogAxisBase selector in
+	 * GogSeriesLine, which doesn't really know what it's supposed to do with it. */
+
+	gog_axis_map_get_extents (x_map, &x_zero, NULL); 
+	x_zero = gog_axis_map_to_view (x_map, x_zero);
+	gog_axis_map_get_extents (y_map, &y_zero, NULL); 
+	y_zero = gog_axis_map_to_view (y_map, y_zero);
+
+	gog_renderer_push_clip (view->renderer, 
+				gog_renderer_get_rectangle_vpath (&view->allocation));
+
+	for (num_series = 0, ptr = model->base.series ; ptr != NULL ; ptr = ptr->next, num_series++);
+	markers = g_alloca (num_series * sizeof (MarkerData *));
+	num_markers = g_alloca (num_series * sizeof (unsigned));
+
+	for (j = 0, ptr = model->base.series ; ptr != NULL ; ptr = ptr->next, j++) {
+		series = ptr->data;
+		markers[j] = NULL;
+
+		if (!gog_series_is_valid (GOG_SERIES (series))) 
+			continue;
+
+		y_vals = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		n = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+		if (series->base.values[0].data) {
+			x_vals = go_data_vector_get_values (
+				GO_DATA_VECTOR (series->base.values[0].data));
+			tmp = go_data_vector_get_len (
+				GO_DATA_VECTOR (series->base.values[0].data));
+			if (n > tmp)
+				n = tmp;
+		}
+		style = GOG_STYLED_OBJECT (series)->style;
+
+		if (n <= 0)
+			continue;
+
+		/* plot drop lines if any */
+		if (series->hdroplines) {
+			ArtVpath droppath[3];
+			droppath[0].code = ART_MOVETO;
+			droppath[1].code = ART_LINETO;
+			droppath[2].code = ART_END;
+			droppath[0].x = x_zero;
+			gog_renderer_push_style (view->renderer,
+				gog_styled_object_get_style (GOG_STYLED_OBJECT (series->hdroplines)));
+			for (i = 0; i < n; i++) {
+				if (!gog_axis_map_finite (y_map, y_vals[i]))
+					continue;
+				x = x_vals ? x_vals[i] : i + 1;
+				if (!gog_axis_map_finite (x_map, x))
+					continue;
+				droppath[1].x = gog_axis_map_to_view (x_map, x);
+				droppath[0].y = droppath[1].y = gog_axis_map_to_view (y_map, y_vals[i]);
+				gog_series_lines_render (GOG_SERIES_LINES (series->hdroplines),
+								view->renderer, bbox, droppath, FALSE);
+			}
+			gog_renderer_pop_style (view->renderer);
+		}
+		if (series->vdroplines) {
+			ArtVpath droppath[3];
+			droppath[0].code = ART_MOVETO;
+			droppath[1].code = ART_LINETO;
+			droppath[2].code = ART_END;
+			droppath[0].y = y_zero;
+			gog_renderer_push_style (view->renderer,
+				gog_styled_object_get_style (GOG_STYLED_OBJECT (series->vdroplines)));
+			for (i = 0; i < n; i++) {
+				if (!gog_axis_map_finite (y_map, y_vals[i]))
+					continue;
+				x = x_vals ? x_vals[i] : i + 1;
+				if (!gog_axis_map_finite (x_map, x))
+					continue;
+				droppath[1].y = gog_axis_map_to_view (y_map, y_vals[i]);
+				droppath[0].x = droppath[1].x = gog_axis_map_to_view (x_map, x);
+				gog_series_lines_render (GOG_SERIES_LINES (series->vdroplines),
+								view->renderer, bbox, droppath, FALSE);
+			}
+			gog_renderer_pop_style (view->renderer);
+		}
+
+		show_marks = gog_style_is_marker_visible (style);
+		show_lines = gog_style_is_line_visible (style);
+		if (!show_marks && !show_lines)
+			continue;
+
+		if (model->base.vary_style_by_element)
+			style = gog_style_dup (style);
+		gog_renderer_push_style (view->renderer, style);
+
+		if (GOG_IS_BUBBLE_PLOT (model)) {
+			double zmin;
+			go_data_vector_get_minmax (GO_DATA_VECTOR (series->base.values[2].data), &zmin, &zmax);
+			show_negatives = GOG_BUBBLE_PLOT (view->model)->show_negatives;
+			if ((! go_finite (zmax)) || (!show_negatives && (zmax <= 0))) continue;
+			rmax = MIN (view->residual.w, view->residual.h) / BUBBLE_MAX_RADIUS_RATIO
+						* GOG_BUBBLE_PLOT (view->model)->bubble_scale;
+			size_as_area = GOG_BUBBLE_PLOT (view->model)->size_as_area;
+			in_3d = GOG_BUBBLE_PLOT (view->model)->in_3d;
+			if (show_negatives) {
+				zmin = fabs (zmin);
+				if (zmin > zmax) zmax = zmin;
+				neg_style = gog_style_dup (GOG_STYLED_OBJECT (series)->style);
+				neg_style->fill.type = GOG_FILL_STYLE_PATTERN;
+				neg_style->fill.pattern.pattern = GO_PATTERN_SOLID;
+				neg_style->fill.pattern.back = RGBA_WHITE;
+			}
+	
+			z_vals = go_data_vector_get_values (
+				GO_DATA_VECTOR (series->base.values[2].data));
+			tmp = go_data_vector_get_len (
+				GO_DATA_VECTOR (series->base.values[2].data));
+			if (n > tmp)
+				n = tmp;
+		} else if (show_lines) {
+			double *x_splines = g_new (double, n), *y_splines = g_new (double, n);
+			for (i = 0; i < n; i++) {
+				x = x_vals ? x_vals[i] : i + 1;
+				x_splines[i] = gog_axis_map_finite (x_map, x) ?
+					gog_axis_map_to_view (x_map, x):
+					go_nan;
+				y_splines[i] = gog_axis_map_finite (y_map, y_vals[i]) ?
+					gog_axis_map_to_view (y_map, y_vals[i]):
+					go_nan;
+			}
+			if (GOG_XY_PLOT (view->model)->use_splines) {
+				ArtBpath *path;
+				path = go_line_build_bpath (x_splines, y_splines, n);
+				gog_renderer_draw_bezier_path (view->renderer, path);
+				art_free (path);
+			} else {
+				ArtVpath *path;
+				path = go_line_build_vpath (x_splines, y_splines, n);
+				gog_renderer_draw_path (view->renderer, path);
+				art_free (path);
+			}
+			g_free (x_splines);
+			g_free (y_splines);
+		}
+
+		if (show_marks && !GOG_IS_BUBBLE_PLOT (model))
+			markers[j] = g_new (MarkerData, n);
+
+		margin = gog_renderer_line_size (view->renderer, 1);
+		x_margin_min = view->allocation.x - margin;
+		x_margin_max = view->allocation.x + view->allocation.w + margin;
+		y_margin_min = view->allocation.y - margin;
+		y_margin_max = view->allocation.y + view->allocation.h + margin;
+
+		k = 0;
+		for (i = 1 ; i <= n ; i++) {
+			x = x_vals ? *x_vals++ : i;
+			y = *y_vals++;
+			if (isnan (y) || isnan (x))
+				continue;
+			/* We are checking with go_finite here because isinf
+			   if not available everywhere.  Note, that NANs
+			   have been ruled out.  */
+			if (!gog_axis_map_finite (y_map, y))
+				y = 0; /* excel is just sooooo consistent */
+			if (!gog_axis_map_finite (x_map, x))
+				x = i;
+			x_canvas = gog_axis_map_to_view (x_map, x);
+			y_canvas = gog_axis_map_to_view (y_map, y);
+			if (GOG_IS_BUBBLE_PLOT(model)) {
+				z = *z_vals++;
+				if (!go_finite (z)) continue;
+				if (z < 0) {
+					if (GOG_BUBBLE_PLOT(model)->show_negatives) {
+						gog_renderer_push_style (view->renderer, neg_style);
+						bubble_draw_circle (view, x_canvas, y_canvas, 
+									((size_as_area)? sqrt (- z / zmax): - z / zmax) * rmax);
+						gog_renderer_pop_style (view->renderer);
+					} else continue;
+				} else {
+					if (model->base.vary_style_by_element)
+						gog_theme_fillin_style (theme, style, GOG_OBJECT (series),
+							model->base.index_num + i - 1, FALSE);
+					bubble_draw_circle (view, x_canvas, y_canvas, ((size_as_area)? sqrt (z / zmax): z / zmax) * rmax);
+				}
+			}
+
+			/* draw error bars after line */
+			if (gog_error_bar_is_visible (series->x_errors)) {
+					GogErrorBar const *bar = series->x_errors;
+				 if (gog_error_bar_get_bounds (bar, i - 1, &xerrmin, &xerrmax)) {
+					 gog_error_bar_render (bar, view->renderer, 
+								   x_map, y_map, 
+								   x, y, 
+								   xerrmin, xerrmax, TRUE);
+				 }
+			}
+			if (gog_error_bar_is_visible (series->y_errors)) {
+				GogErrorBar const *bar = series->y_errors;
+				 if (gog_error_bar_get_bounds (bar, i - 1, &yerrmin, &yerrmax)) {
+					 gog_error_bar_render (bar, view->renderer, 
+								   x_map, y_map, x, y, 
+								   yerrmin, yerrmax, FALSE);
+				 }
+			}
+
+			/* draw marker after line */
+			if (show_marks &&
+			    x_margin_min <= x_canvas && x_canvas <= x_margin_max &&
+			    y_margin_min <= y_canvas && y_canvas <= y_margin_max) {
+				markers[j][k].x = x_canvas;
+				markers[j][k].y = y_canvas;
+				k++;
+			}
+		}
+
+		gog_renderer_pop_style (view->renderer);
+		num_markers[j] = k;
+	}
+
+	if (GOG_IS_BUBBLE_PLOT (model)) {
+		if (model->base.vary_style_by_element)
+			g_object_unref (style);
+		if (((GogBubblePlot*)model)->show_negatives)
+			g_object_unref (neg_style);
+	}
+
+	gog_renderer_pop_clip (view->renderer);
+
+	if (!GOG_IS_BUBBLE_PLOT (model))
+		for (j = 0, ptr = model->base.series ; ptr != NULL ; ptr = ptr->next, j++) {
+				if (markers[j] != NULL) {
+					series = ptr->data;
+					style = GOG_STYLED_OBJECT (series)->style;
+					gog_renderer_push_style (view->renderer, style);
+					for (k = 0; k < num_markers[j]; k++)
+						gog_renderer_draw_marker (view->renderer, 
+									  markers[j][k].x,
+									  markers[j][k].y);
+					gog_renderer_pop_style (view->renderer);
+					g_free (markers[j]);
+				}
+			}
+
+	/* Now render children, may be should come before markers? */
+	for (ptr = view->children ; ptr != NULL ; ptr = ptr->next)
+		gog_view_render	(ptr->data, bbox);
+
+	gog_chart_map_free (chart_map);
+}
+
+static gboolean
+gog_xy_view_info_at_point (GogView *view, double x, double y,
+			   GogObject const *cur_selection,
+			   GogObject **obj, char **name)
+{
+	return FALSE;
+}
+
+static GogViewClass *xy_view_parent_klass;
+
+static void
+gog_xy_view_size_allocate (GogView *view, GogViewAllocation const *allocation)
+{
+	GSList *ptr;
+	for (ptr = view->children; ptr != NULL; ptr = ptr->next)
+		gog_view_size_allocate (GOG_VIEW (ptr->data), allocation);
+	(xy_view_parent_klass->size_allocate) (view, allocation);
+}
+
+static void
+gog_xy_view_class_init (GogViewClass *view_klass)
+{
+	xy_view_parent_klass = (GogViewClass*) g_type_class_peek_parent (view_klass);
+	view_klass->render	  = gog_xy_view_render;
+	view_klass->size_allocate = gog_xy_view_size_allocate;
+	view_klass->info_at_point = gog_xy_view_info_at_point;
+	view_klass->clip	  = FALSE;
+}
+
+GSF_DYNAMIC_CLASS (GogXYView, gog_xy_view,
+	gog_xy_view_class_init, NULL,
+	GOG_PLOT_VIEW_TYPE)
+
+/*****************************************************************************/
+
+typedef GogView		GogXYSeriesView;
+typedef GogViewClass	GogXYSeriesViewClass;
+
+#define GOG_XY_SERIES_VIEW_TYPE	(gog_xy_series_view_get_type ())
+#define GOG_XY_SERIES_VIEW(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_XY_SERIES_VIEW_TYPE, GogXYSeriesView))
+#define IS_GOG_XY_SERIES_VIEW(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_XY_SERIES_VIEW_TYPE))
+
+static void
+gog_xy_series_view_render (GogView *view, GogViewAllocation const *bbox)
+{
+	GSList *ptr;
+	for (ptr = view->children ; ptr != NULL ; ptr = ptr->next)
+		gog_view_render	(ptr->data, bbox);
+}
+
+static void
+gog_xy_series_view_size_allocate (GogView *view, GogViewAllocation const *allocation)
+{
+	GSList *ptr;
+
+	for (ptr = view->children; ptr != NULL; ptr = ptr->next)
+		gog_view_size_allocate (GOG_VIEW (ptr->data), allocation);
+}
+
+static void
+gog_xy_series_view_class_init (GogXYSeriesViewClass *gview_klass)
+{
+	GogViewClass *view_klass = GOG_VIEW_CLASS (gview_klass);
+	view_klass->render = gog_xy_series_view_render;
+	view_klass->size_allocate = gog_xy_series_view_size_allocate;
+}
+
+GSF_DYNAMIC_CLASS (GogXYSeriesView, gog_xy_series_view,
+	gog_xy_series_view_class_init, NULL,
+	GOG_VIEW_TYPE)
+
+/*****************************************************************************/
+
+static gboolean
+horiz_drop_lines_can_add (GogObject const *parent)
+{
+	GogXYSeries *series = GOG_XY_SERIES (parent);
+	return (series->hdroplines == NULL);
+}
+
+static void
+horiz_drop_lines_post_add (GogObject *parent, GogObject *child)
+{
+	GogXYSeries *series = GOG_XY_SERIES (parent);
+	series->hdroplines = child;
+	gog_object_request_update (child);
+}
+
+static void
+horiz_drop_lines_pre_remove (GogObject *parent, GogObject *child)
+{
+	GogXYSeries *series = GOG_XY_SERIES (parent);
+	series->hdroplines = NULL;
+}
+
+/*****************************************************************************/
+
+static gboolean
+vert_drop_lines_can_add (GogObject const *parent)
+{
+	GogXYSeries *series = GOG_XY_SERIES (parent);
+	return (series->vdroplines == NULL);
+}
+
+static void
+vert_drop_lines_post_add (GogObject *parent, GogObject *child)
+{
+	GogXYSeries *series = GOG_XY_SERIES (parent);
+	series->vdroplines = child;
+	gog_object_request_update (child);
+}
+
+static void
+vert_drop_lines_pre_remove (GogObject *parent, GogObject *child)
+{
+	GogXYSeries *series = GOG_XY_SERIES (parent);
+	series->vdroplines = NULL;
+}
+
+/****************************************************************************/
+
+typedef GogSeriesClass GogXYSeriesClass;
+
+enum {
+	SERIES_PROP_0,
+	SERIES_PROP_XERRORS,
+	SERIES_PROP_YERRORS
+};
+
+static GogStyledObjectClass *series_parent_klass;
+
+static void
+gog_xy_series_update (GogObject *obj)
+{
+	double *x_vals = NULL, *y_vals = NULL;
+	int x_len = 0, y_len = 0;
+	GogXYSeries *series = GOG_XY_SERIES (obj);
+	unsigned old_num = series->base.num_elements;
+	GSList *ptr;
+
+	if (series->base.values[1].data != NULL) {
+		y_vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[1].data));
+		y_len = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[1].data));
+	}
+	if (GOG_IS_BUBBLE_PLOT (series->base.plot)) {
+		double *z_vals = NULL;
+		int z_len = 0;
+		if (series->base.values[2].data != NULL) {
+			z_vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[2].data));
+			z_len = go_data_vector_get_len (
+				GO_DATA_VECTOR (series->base.values[2].data));
+			if (y_len > z_len) y_len = z_len;
+		}
+	}
+	if (series->base.values[0].data != NULL) {
+		x_vals = go_data_vector_get_values (GO_DATA_VECTOR (series->base.values[0].data));
+		x_len = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->base.values[0].data));
+	} else
+		x_len = y_len;
+	series->base.num_elements = MIN (x_len, y_len);
+
+	/* update children */
+	for (ptr = obj->children; ptr != NULL; ptr = ptr->next)
+		if (!IS_GOG_SERIES_LINES (ptr->data))
+			gog_object_request_update (GOG_OBJECT (ptr->data));
+
+	/* queue plot for redraw */
+	gog_object_request_update (GOG_OBJECT (series->base.plot));
+	if (old_num != series->base.num_elements)
+		gog_plot_request_cardinality_update (series->base.plot);
+
+	if (series_parent_klass->base.update)
+		series_parent_klass->base.update (obj);
+}
+
+static void
+gog_xy_series_init (GObject *obj)
+{
+	GogXYSeries *series = GOG_XY_SERIES (obj);
+
+	series->x_errors = series->y_errors = NULL;
+	(GOG_SERIES (series))->acceptable_children =
+				GOG_SERIES_ACCEPT_REGRESSION_CURVE;
+	series->hdroplines = series->vdroplines = NULL;
+}
+
+static void
+gog_xy_series_finalize (GObject *obj)
+{
+	GogXYSeries *series = GOG_XY_SERIES (obj);
+
+	if (series->x_errors != NULL) {
+		g_object_unref (series->x_errors); 
+		series->x_errors = NULL;
+	}
+
+	if (series->y_errors != NULL) {
+		g_object_unref (series->y_errors); 
+		series->y_errors = NULL;
+	}
+
+	G_OBJECT_CLASS (series_parent_klass)->finalize (obj);
+}
+
+static void
+gog_xy_series_init_style (GogStyledObject *gso, GogStyle *style)
+{
+	GogSeries *series = GOG_SERIES (gso);
+	GogXYPlot const *plot;
+
+	series_parent_klass->init_style (gso, style);
+	if (series->plot == NULL ||
+	    GOG_IS_BUBBLE_PLOT (series->plot))
+		return;
+
+	plot = GOG_XY_PLOT (series->plot);
+
+	if (!plot->default_style_has_markers &&
+	    style->marker.auto_shape) 
+		go_marker_set_shape (style->marker.mark, GO_MARKER_NONE);
+
+	if (!plot->default_style_has_lines &&
+	    style->line.auto_dash)
+		style->line.dash_type = GO_LINE_NONE;
+}
+
+static void
+gog_xy_series_set_property (GObject *obj, guint param_id,
+			    GValue const *value, GParamSpec *pspec)
+{
+	GogXYSeries *series=  GOG_XY_SERIES (obj);
+	GogErrorBar* bar;
+
+	switch (param_id) {
+	case SERIES_PROP_XERRORS :
+		bar = g_value_get_object (value);
+		if (series->x_errors == bar)
+			return;
+		if (bar) {
+			bar = gog_error_bar_dup (bar);
+			bar->series = GOG_SERIES (series);
+			bar->dim_i = 0;
+			bar->error_i = series->base.plot->desc.series.num_dim - 2;
+		}
+		if (!series->base.needs_recalc) {
+			series->base.needs_recalc = TRUE;
+			gog_object_emit_changed (GOG_OBJECT (series), FALSE);
+		}
+		if (series->x_errors != NULL)
+			g_object_unref (series->x_errors);
+		series->x_errors = bar;
+		break;
+	case SERIES_PROP_YERRORS :
+		bar = g_value_get_object (value);
+		if (series->y_errors == bar)
+			return;
+		if (bar) {
+			bar = gog_error_bar_dup (bar);
+			bar->series = GOG_SERIES (series);
+			bar->dim_i = 1;
+			bar->error_i = series->base.plot->desc.series.num_dim - 4;
+		}
+		if (!series->base.needs_recalc) {
+			series->base.needs_recalc = TRUE;
+			gog_object_emit_changed (GOG_OBJECT (series), FALSE);
+		}
+		if (series->y_errors != NULL)
+			g_object_unref (series->y_errors);
+		series->y_errors = bar;
+		break;
+	}
+}
+
+static void
+gog_xy_series_get_property (GObject *obj, guint param_id,
+			  GValue *value, GParamSpec *pspec)
+{
+	GogXYSeries *series=  GOG_XY_SERIES (obj);
+
+	switch (param_id) {
+	case SERIES_PROP_XERRORS :
+		g_value_set_object (value, series->x_errors);
+		break;
+	case SERIES_PROP_YERRORS :
+		g_value_set_object (value, series->y_errors);
+		break;
+	}
+}
+
+static void 
+gog_xy_series_populate_editor (GogObject *obj,
+			       GogEditor *editor,
+				GogDataAllocator *dalloc,
+				GOCmdContext *cc)
+{
+	GtkWidget *error_page;
+
+	(GOG_OBJECT_CLASS(series_parent_klass)->populate_editor) (obj, editor, dalloc, cc);
+	
+	error_page = gog_error_bar_prefs (GOG_SERIES (obj), "x-errors", TRUE, dalloc, cc);
+	gog_editor_add_page (editor, error_page, _("X error bars"));
+	error_page = gog_error_bar_prefs (GOG_SERIES (obj), "y-errors", FALSE, dalloc, cc);
+	gog_editor_add_page (editor, error_page, _("Y error bars"));
+}
+
+static void
+gog_xy_series_class_init (GogStyledObjectClass *gso_klass)
+{
+	static GogObjectRole const roles[] = {
+		{ N_("Horizontal drop lines"), "GogSeriesLines", 2,
+			GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+			horiz_drop_lines_can_add,
+			NULL,
+			NULL,
+			horiz_drop_lines_post_add,
+			horiz_drop_lines_pre_remove,
+			NULL },
+		{ N_("Vertical drop lines"), "GogSeriesLines",	3,
+			GOG_POSITION_SPECIAL, GOG_POSITION_SPECIAL, GOG_OBJECT_NAME_BY_ROLE,
+			vert_drop_lines_can_add,
+			NULL,
+			NULL,
+			vert_drop_lines_post_add,
+			vert_drop_lines_pre_remove,
+			NULL },
+	};
+	GogObjectClass *gog_klass = (GogObjectClass *)gso_klass;
+	GObjectClass *gobject_klass = (GObjectClass *) gso_klass;
+
+	series_parent_klass = g_type_class_peek_parent (gso_klass);
+	gog_klass->update	= gog_xy_series_update;
+	gog_klass->view_type	= gog_xy_series_view_get_type ();
+	gso_klass->init_style	= gog_xy_series_init_style;
+
+	gobject_klass->finalize		= gog_xy_series_finalize;
+	gobject_klass->set_property = gog_xy_series_set_property;
+	gobject_klass->get_property = gog_xy_series_get_property;
+	gog_klass->update		= gog_xy_series_update;
+	gog_klass->populate_editor	= gog_xy_series_populate_editor;
+	gso_klass->init_style		= gog_xy_series_init_style;
+
+	gog_object_register_roles (gog_klass, roles, G_N_ELEMENTS (roles));
+
+	g_object_class_install_property (gobject_klass, SERIES_PROP_XERRORS,
+		g_param_spec_object ("x-errors", "x-errors",
+			"GogErrorBar *",
+			GOG_ERROR_BAR_TYPE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+	g_object_class_install_property (gobject_klass, SERIES_PROP_YERRORS,
+		g_param_spec_object ("y-errors", "y-errors",
+			"GogErrorBar *",
+			GOG_ERROR_BAR_TYPE, G_PARAM_READWRITE|GOG_PARAM_PERSISTENT));
+}
+
+GSF_DYNAMIC_CLASS (GogXYSeries, gog_xy_series,
+	gog_xy_series_class_init, gog_xy_series_init,
+	GOG_SERIES_TYPE)
+
+G_MODULE_EXPORT void
+go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
+{
+	GTypeModule *module = go_plugin_get_type_module (plugin);
+	gog_2d_plot_register_type (module);
+	gog_xy_plot_register_type (module);
+	gog_bubble_plot_register_type (module);
+	gog_xy_view_register_type (module);
+	gog_xy_series_view_register_type (module);
+	gog_xy_series_register_type (module);
+}
+
+G_MODULE_EXPORT void
+go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
+{
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/gog-xy.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,84 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * go-xy.h
+ *
+ * Copyright (C) 2003-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_XY_PLOT_H
+#define GOG_XY_PLOT_H
+
+#include <goffice/graph/gog-plot-impl.h>
+#include <goffice/graph/gog-series-impl.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GogPlot	base;
+
+	struct {
+		double minima, maxima;
+		GOFormat *fmt;
+	} x, y;
+} Gog2DPlot;
+
+typedef struct {
+	Gog2DPlot	base;
+	gboolean	default_style_has_markers;
+	gboolean	default_style_has_lines;
+	gboolean	use_splines;
+} GogXYPlot;
+
+typedef struct {
+	Gog2DPlot	base;
+	gboolean size_as_area;
+	gboolean in_3d;
+	gboolean show_negatives;
+	float bubble_scale;
+} GogBubblePlot;
+
+#define GOG_2D_PLOT_TYPE	(gog_2d_plot_get_type ())
+#define GOG_2D_PLOT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_2D_PLOT_TYPE, Gog2DPlot))
+#define GOG_IS_2D_PLOT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_2D_PLOT_TYPE))
+
+GType gog_2d_plot_get_type (void);
+
+#define GOG_XY_PLOT_TYPE	(gog_xy_plot_get_type ())
+#define GOG_XY_PLOT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_XY_PLOT_TYPE, GogXYPlot))
+#define GOG_IS_XY_PLOT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_XY_PLOT_TYPE))
+
+GType gog_xy_plot_get_type (void);
+
+#define GOG_BUBBLE_PLOT_TYPE	(gog_bubble_plot_get_type ())
+#define GOG_BUBBLE_PLOT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_BUBBLE_PLOT_TYPE, GogBubblePlot))
+#define GOG_IS_BUBBLE_PLOT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_BUBBLE_PLOT_TYPE))
+
+GType gog_bubble_plot_get_type (void);
+
+typedef struct {
+	GogSeries base;
+	GogErrorBar *x_errors, *y_errors;
+	GogObject *hdroplines, *vdroplines;
+} GogXYSeries;
+
+#define GOG_XY_SERIES_TYPE	(gog_xy_series_get_type ())
+#define GOG_XY_SERIES(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_XY_SERIES_TYPE, GogXYSeries))
+#define GOG_IS_XY_SERIES(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_XY_SERIES_TYPE))
+
+G_END_DECLS
+
+#endif /* GOG_XY_PLOT_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plot-types.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plot-types.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plot-types.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns:graph="http://www.gnumeric.org/graph_v2.dtd">
+    <Family _name="XY"		sample_image_file="scatter.xpm" axis_set="xy" priority="100"/>
+    <Family _name="Bubble"	sample_image_file="bubble.xpm" axis_set="xy"/>
+
+    <Type _name="XY Points" row="1" col="1"
+	  engine="GogXYPlot" family="XY"
+	  _description="Markers at each point."
+	  sample_image_file="chart_scatter_1_1.png">
+	  <property name="default-style-has-lines">FALSE</property>
+	  <property name="guru-hints">backplane</property>
+    </Type>
+    <!-- really 3_1 -->
+    <Type _name="XY" row="2" col="1"
+	  engine="GogXYPlot" family="XY"
+	  _description="Linearly interpolate between multi-dimensional points,with markers at each point."
+	  sample_image_file="chart_scatter_3_1.png">
+	  <property name="guru-hints">backplane</property>
+    </Type>
+    <Type _name="XY Lines" row="2" col="2"
+	  engine="GogXYPlot" family="XY"
+	  _description="Linearly interpolate between multi-dimensional points."
+	  sample_image_file="chart_scatter_3_2.png">
+	  <property name="default-style-has-markers">FALSE</property>
+	  <property name="guru-hints">backplane</property>
+    </Type>
+    <Type _name="XY Splines" row="2" col="3"
+	  engine="GogXYPlot" family="XY"
+	  _description="Interpolate between multi-dimensional points with Bezier splines."
+	  sample_image_file="chart_scatter_3_3.png">
+	  <property name="default-style-has-markers">FALSE</property>
+	  <property name="use-splines">TRUE</property>
+	  <property name="guru-hints">backplane</property>
+    </Type>
+    <Type _name="Bubble" row="1" col="1"
+	  engine="GogBubblePlot" family="Bubble"
+	  _description="Multi-dimensional points with circle at each point."
+	  sample_image_file="chart_bubble_1_1.png">
+	  <property name="guru-hints">backplane</property>
+    </Type>
+</Types>
+
+
+<!--
+    <Major>
+      <_name>Bubble</_name>
+      <sample_image_file>bubble.xpm</sample_image_file>
+      <Minor>
+        <_name>Bubble</_name>
+        <_description>Plot X, Y and bubble size.</_description>
+        <sample_image_file>chart_bubble_1_1.png</sample_image_file>
+        <position row="1" col="1" />
+	<graph:Type name="Scatter">
+	    <with_marker>true</with_marker>
+	    <auto_allocate_bubble_size>true</auto_allocate_bubble_size>
+	</graph:Type>
+      </Minor>
+    </Major>
+      -->

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plugin.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plugin.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/plot_xy/plugin.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,27 @@
+<plugin id="GOffice_plot_xy">
+	<information>
+		<_name>Charting : XY/Scatter/Bubble</_name>
+		<_description>2D plots</_description>
+	</information>
+	<loader type="Gnumeric_Builtin:module">
+		<attribute name="module_file" value="xy"/>
+	</loader>
+	<services>
+		<service type="plot_engine" id="GogXYPlot">
+			<information>
+				<_description>2D scatter plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_engine" id="GogBubblePlot">
+			<information>
+				<_description>Bubble plotting engine</_description>
+			</information>
+		</service>
+		<service type="plot_type" id="plot_xy">
+			<file>plot-types.xml</file>
+			<information>
+				<_description>Stock Scatter plot types</_description>
+			</information>
+		</service>
+	</services>
+</plugin>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,25 @@
+goffice_graph_linregdir = $(goffice_plugindir)/reg_linear
+xmldir	 = $(goffice_graph_linregdir)
+gladedir = $(goffice_graph_linregdir)
+
+goffice_graph_linreg_LTLIBRARIES = linreg.la
+linreg_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+linreg_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+linreg_la_SOURCES = gog-lin-reg.c	\
+		    gog-lin-reg.h
+
+xml_in_files = plugin.xml.in reg-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+reg-types.xml : reg-types.xml.in
+	cp $< $@
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice-plugins.mk

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,570 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+goffice_graph_linregdir = $(goffice_plugindir)/reg_linear
+xmldir = $(goffice_graph_linregdir)
+gladedir = $(goffice_graph_linregdir)
+
+goffice_graph_linreg_LTLIBRARIES = linreg.la
+linreg_la_LDFLAGS = -module $(GOFFICE_PLUGIN_FLAGS)
+linreg_la_LIBADD = $(GOFFICE_PLUGIN_LIBADD)
+
+linreg_la_SOURCES = gog-lin-reg.c	\
+		    gog-lin-reg.h
+
+
+xml_in_files = plugin.xml.in reg-types.xml.in
+xml_DATA = $(xml_in_files:.xml.in=.xml)
+
+EXTRA_DIST = $(xml_in_files)
+DISTCLEANFILES = $(xml_in_files:.xml.in=.xml)
+AM_CPPFLAGS = \
+    -I$(top_srcdir)		\
+    -I$(top_builddir)		\
+    $(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+subdir = plugins/reg_linear
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(goffice_graph_linreg_LTLIBRARIES)
+
+linreg_la_DEPENDENCIES =
+am_linreg_la_OBJECTS = gog-lin-reg.lo
+linreg_la_OBJECTS = $(am_linreg_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gog-lin-reg.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(linreg_la_SOURCES)
+DATA = $(xml_DATA)
+
+DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/goffice-plugins.mk \
+	Makefile.am
+SOURCES = $(linreg_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice-plugins.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  plugins/reg_linear/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+goffice_graph_linregLTLIBRARIES_INSTALL = $(INSTALL)
+install-goffice_graph_linregLTLIBRARIES: $(goffice_graph_linreg_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_linregdir)
+	@list='$(goffice_graph_linreg_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(goffice_graph_linregLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_linregdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(goffice_graph_linregLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(goffice_graph_linregdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-goffice_graph_linregLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(goffice_graph_linreg_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_linregdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(goffice_graph_linregdir)/$$p; \
+	done
+
+clean-goffice_graph_linregLTLIBRARIES:
+	-test -z "$(goffice_graph_linreg_LTLIBRARIES)" || rm -f $(goffice_graph_linreg_LTLIBRARIES)
+	@list='$(goffice_graph_linreg_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+linreg.la: $(linreg_la_OBJECTS) $(linreg_la_DEPENDENCIES) 
+	$(LINK) -rpath $(goffice_graph_linregdir) $(linreg_la_LDFLAGS) $(linreg_la_OBJECTS) $(linreg_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gog-lin-reg.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+xmlDATA_INSTALL = $(INSTALL_DATA)
+install-xmlDATA: $(xml_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(xmldir)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f"; \
+	  $(xmlDATA_INSTALL) $$d$$p $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+uninstall-xmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(xml_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(xmldir)/$$f"; \
+	  rm -f $(DESTDIR)$(xmldir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/../..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(goffice_graph_linregdir) $(DESTDIR)$(xmldir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-goffice_graph_linregLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-goffice_graph_linregLTLIBRARIES install-xmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-goffice_graph_linregLTLIBRARIES \
+	uninstall-info-am uninstall-xmlDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-goffice_graph_linregLTLIBRARIES clean-libtool ctags \
+	distclean distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-goffice_graph_linregLTLIBRARIES \
+	install-info install-info-am install-man install-strip \
+	install-xmlDATA installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-goffice_graph_linregLTLIBRARIES uninstall-info-am \
+	uninstall-xmlDATA
+
+
+ at INTLTOOL_XML_RULE@
+
+# do not use the intl-tool stuff to merge the text back
+# its simpler to just use gettext directly
+reg-types.xml : reg-types.xml.in
+	cp $< $@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,173 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-lin-reg.c :  
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <goffice/goffice-config.h>
+#include "gog-lin-reg.h"
+#include <goffice/app/module-plugin-defs.h>
+#include <goffice/data/go-data.h>
+#include <goffice/graph/gog-series-impl.h>
+#include <goffice/utils/go-math.h>
+#include <goffice/utils/go-regression.h>
+
+#include <gsf/gsf-impl-utils.h>
+
+GOFFICE_PLUGIN_MODULE_HEADER;
+
+static GogObjectClass *gog_lin_reg_curve_parent_klass;
+
+static void
+gog_lin_reg_curve_update (GogObject *obj)
+{
+	GogLinRegCurve *rc = GOG_LIN_REG_CURVE (obj);
+	GogSeries *series = GOG_SERIES (obj->parent);
+	double const *y_vals, *x_vals = NULL;
+	double *vx, *vy;
+	double x, y;
+	double xmin, xmax;
+	int i, used, tmp, nb;
+
+	g_return_if_fail (gog_series_is_valid (GOG_SERIES (series)));
+
+	gog_reg_curve_get_bounds (&rc->base, &xmin, &xmax);
+	y_vals = go_data_vector_get_values (
+		GO_DATA_VECTOR (series->values[1].data));
+	nb = go_data_vector_get_len (
+		GO_DATA_VECTOR (series->values[1].data));
+	if (series->values[0].data) {
+		x_vals = go_data_vector_get_values (
+			GO_DATA_VECTOR (series->values[0].data));
+		tmp = go_data_vector_get_len (
+			GO_DATA_VECTOR (series->values[0].data));
+		if (nb > tmp)
+			nb = tmp;
+	}
+	vx = g_new (double, nb);
+	vy = g_new (double, nb);
+	for (i = 0, used = 0; i < nb; i++) {
+		x = (x_vals)? x_vals[i]: i;
+		y = y_vals[i];
+		if (!go_finite (x) || !go_finite (y)) {
+			if (rc->base.skip_invalid)
+				continue;
+			used = 0;
+			break;
+		}
+		if (x < xmin || x > xmax)
+			continue;
+		vx[used] = x;
+		vy[used] = y;
+		used++;
+	}
+	rc->R2 = rc->a0 = rc->a1 = go_nan;
+	if (used > 1) {
+		double a[2];
+		regression_stat_t *stats = go_regression_stat_new ();
+		RegressionResult res = go_linear_regression (&vx, 1, vy, used,
+								TRUE, a, stats);
+		if (res == REG_ok) {
+			rc->R2 = stats->sqr_r;
+			rc->a0 = a[0];
+			rc->a1 = a[1];
+		}
+		go_regression_stat_destroy (stats);
+	}
+	g_free (vx);
+	g_free (vy);
+	if (rc->equation) {
+		g_free (rc->equation);
+		rc->equation = NULL;
+	}
+	gog_object_emit_changed (GOG_OBJECT (obj), FALSE);
+}
+
+static double
+gog_lin_reg_curve_get_value_at (GogRegCurve *curve, double x)
+{
+	GogLinRegCurve *lin = GOG_LIN_REG_CURVE (curve);
+	return lin->a0 + lin->a1 * x;
+}
+
+static gchar const*
+gog_lin_reg_curve_get_equation (GogRegCurve *curve)
+{
+	GogLinRegCurve *lin = GOG_LIN_REG_CURVE (curve);
+	if (!lin->equation)
+		lin->equation = (lin->a0 > 0.)?
+				g_strdup_printf ("y = %g x + %g", lin->a1, lin->a0):
+				g_strdup_printf ("y = %g x - %g", lin->a1, -lin->a0);
+	return lin->equation;
+}
+
+static double
+gog_lin_reg_curve_get_R2 (GogRegCurve *curve)
+{
+	return (GOG_LIN_REG_CURVE (curve))->R2;
+}
+	
+static void
+gog_lin_reg_curve_finalize (GObject *obj)
+{
+	GogLinRegCurve *model = GOG_LIN_REG_CURVE (obj);
+	if (model->equation)
+		g_free (model->equation);
+	(G_OBJECT_CLASS (gog_lin_reg_curve_parent_klass))->finalize (obj);
+}
+
+static void
+gog_lin_reg_curve_class_init (GogRegCurveClass *reg_curve_klass)
+{
+	GObjectClass *g_object_klass = (GObjectClass *) reg_curve_klass;
+	GogObjectClass *gog_object_klass = (GogObjectClass *) reg_curve_klass;
+
+	gog_lin_reg_curve_parent_klass = g_type_class_peek_parent (reg_curve_klass);
+
+	g_object_klass->finalize = gog_lin_reg_curve_finalize;
+
+	gog_object_klass->update = gog_lin_reg_curve_update;
+
+	reg_curve_klass->get_value_at = gog_lin_reg_curve_get_value_at;
+	reg_curve_klass->get_equation = gog_lin_reg_curve_get_equation;
+	reg_curve_klass->get_R2 = gog_lin_reg_curve_get_R2;
+}
+
+static void
+gog_lin_reg_curve_init (GogLinRegCurve *model)
+{
+	model->a0 = model->a1 = model->R2 = go_nan;
+	model->equation = NULL;
+}
+
+GSF_DYNAMIC_CLASS (GogLinRegCurve, gog_lin_reg_curve,
+	gog_lin_reg_curve_class_init, gog_lin_reg_curve_init,
+	GOG_REG_CURVE_TYPE)
+
+/* Plugin initialization */
+
+G_MODULE_EXPORT void
+go_plugin_init (GOPlugin *plugin, GOCmdContext *cc)
+{
+	gog_lin_reg_curve_register_type (go_plugin_get_type_module (plugin));
+}
+
+G_MODULE_EXPORT void
+go_plugin_shutdown (GOPlugin *plugin, GOCmdContext *cc)
+{
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.h
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/gog-lin-reg.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gog-lin-reg.h :  
+ *
+ * Copyright (C) 2005 Jean Brefort (jean.brefort at normalesup.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GOG_LIN_REG_H
+#define GOG_LIN_REG_H
+
+#include <goffice/graph/gog-reg-curve.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GogRegCurve	base;
+
+	double a0, a1, R2;
+	char *equation;
+} GogLinRegCurve;
+typedef GogRegCurveClass GogLinRegCurveClass;
+
+#define GOG_LIN_REG_CURVE_TYPE	(gog_lin_reg_curve_get_type ())
+#define GOG_LIN_REG_CURVE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_LIN_REG_CURVE_TYPE, GogLinRegCurve))
+#define GOG_IS_LIN_REG_CURVE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_LIN_REG_CURVE_TYPE))
+
+GType gog_lin_reg_curve_get_type (void);
+
+G_END_DECLS
+
+#endif	/* GOG_LIN_REG_H */

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/plugin.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/plugin.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/plugin.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin id="GOffice_reg_linear">
+	<information>
+		<_name>Regression curve : linear</_name>
+		<_description>Linear regression curves</_description>
+	</information>
+	<loader type="Gnumeric_Builtin:module">
+		<attribute name="module_file" value="linreg"/>
+	</loader>
+	<services>
+		<service type="regcurve_engine" id="GogLinRegCurve">
+			<information>
+				<_description>Linear regression curve engine</_description>
+			</information>
+		</service>
+		<service type="regcurve_type" id="linreg">
+			<file>reg-types.xml</file>
+			<information>
+				<_description>Linear regression curves types</_description>
+			</information>
+		</service>
+	</services>
+</plugin>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/reg-types.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/reg-types.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/plugins/reg_linear/reg-types.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Types xmlns:graph="http://www.gnumeric.org/graph_v2.dtd">
+	<Type _name="Linear"
+		engine="GogLinRegCurve"
+		_description="Linear regression curve">
+	</Type>
+</Types>

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ChangeLog
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ChangeLog	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ChangeLog	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,53 @@
+2005-09-08  Jody Goldberg <jody at gnome.org>
+
+	* Release 0.0.4
+
+2005-09-06  Jody Goldberg <jody at gnome.org>
+
+	* POTFILES.in: Add goffice/gtk/go-rotation-sel.c,
+	goffice/gtk/go-rotation-sel.glade, and goffice/gtk/go-rotation-sel.h.
+
+2005-09-01  Stepan Kasal  <kasal at ucw.cz>
+
+	* POTFILES.in: Remove goffice/utils/format.h
+
+2005-08-13  Morten Welinder <terra at gnome.org>
+
+	* Release 0.0.3
+
+2005-07-31  Ilkka Tuohela  <hile at iki.fi>
+
+	* fi.po: Bulk updates to Finnish translation
+	    for new gnome.fi website.
+
+2005-07-04  Hendrik Richter  <hendi at gnome-de.org>
+
+	* de.po: Fixed German translation by
+	Jens Seidel <jensseidel at users.sf.net>.
+
+2005-06-15  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* de.po: Minor fix. (Debian #313747)
+
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 0.0.2
+
+2005-05-09  Jody Goldberg <jody at gnome.org>
+
+	* Release 0.0.1
+
+2005-03-29  Stepan Kasal  <kasal at ucw.cz>
+
+	* POTFILES.in: Remove goffice/utils/go-locale.[ch].
+
+2005-03-07  Stepan Kasal  <kasal at ucw.cz>
+
+	* POTFILES.skip: Deleted.
+	* POTFILES.in: Delete goffice/cut-n-paste/egg-recent-files/*
+	  add goffice/app/go-app.h again.
+
+2005-03-04  Stepan Kasal  <kasal at ucw.cz>
+
+	* POTFILES.in: Move goffice/app/go-app.h ...
+	* POTFILES.skip: ... here.

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/Makefile.in.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/Makefile.in.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/Makefile.in.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,263 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper at gnu.ai.mit.edu>
+#
+# This file file be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+#
+# - Modified by Owen Taylor <otaylor at redhat.com> to use GETTEXT_PACKAGE
+#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob at ximian.com> to install
+#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey at novell.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = ..
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+localedir = $(libdir)/locale
+gnulocaledir = $(datadir)/locale
+gettextsrcdir = $(datadir)/glib-2.0/gettext/po
+subdir = po
+install_sh = @install_sh@
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+CC = @CC@
+GENCAT = @GENCAT@
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+SOURCES = 
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in \
+$(POFILES) $(SOURCES)
+EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+INSTOBJEXT = @INSTOBJEXT@
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+
+.c.o:
+	$(COMPILE) $<
+
+.po.pox:
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	$(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+	$(MSGFMT) -o $@ $<
+
+.po.gmo:
+	file=`echo $* | sed 's,.*/,,'`.gmo \
+	  && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+	sed -f ../intl/po2msg.sed < $< > $*.msg \
+	  && rm -f $@ && $(GENCAT) $@ $*.msg
+
+
+all: all- at USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+	$(GENPOT)
+
+install: install-exec install-data
+install-exec:
+install-data: install-data- at USE_NLS@
+install-data-no: all
+install-data-yes: all
+	if test -n "$(MKINSTALLDIRS)"; then \
+	  $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+	else \
+	  $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
+	fi
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  case "$$cat" in \
+	    *.gmo) destdir=$(gnulocaledir);; \
+	    *)     destdir=$(localedir);; \
+	  esac; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+	  if test -n "$(MKINSTALLDIRS)"; then \
+	    $(MKINSTALLDIRS) $$dir; \
+	  else \
+	    $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
+	  fi; \
+	  if test -r $$cat; then \
+	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+	  else \
+	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	    echo "installing $(srcdir)/$$cat as" \
+		 "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+	  fi; \
+	  if test -r $$cat.m; then \
+	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+	  else \
+	    if test -r $(srcdir)/$$cat.m ; then \
+	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
+		$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	      echo "installing $(srcdir)/$$cat as" \
+		   "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+	    else \
+	      true; \
+	    fi; \
+	  fi; \
+	done
+	if test "$(PACKAGE)" = "glib"; then \
+	  if test -n "$(MKINSTALLDIRS)"; then \
+	    $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
+	  else \
+	    $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
+	  fi; \
+	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+	else \
+	  : ; \
+	fi
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	done
+	if test "$(PACKAGE)" = "glib"; then \
+	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+	fi
+
+check: all $(GETTEXT_PACKAGE).pot
+
+dvi info tags TAGS ID:
+
+mostlyclean:
+	rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+	rm -fr *.o
+	rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile Makefile.in POTFILES
+	rm -f *.mo *.msg *.cat *.cat.m $(GMOFILES)
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+	rm -f Makefile.in.in
+
+distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+	dists="$(DISTFILES)"; \
+	extra_dists="$(EXTRA_DISTFILES)"; \
+	for file in $$extra_dists; do \
+	  test -f $$file && dists="$$dists $$file"; \
+	done; \
+	for file in $$dists; do \
+	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+	    || cp -p $(srcdir)/$$file $(distdir); \
+	done
+
+update-po: Makefile
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	tmpdir=`pwd`; \
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  echo "$$lang:"; \
+	  result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+	  if $$result; then \
+	    if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+	      rm -f $$tmpdir/$$lang.new.po; \
+            else \
+	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	        :; \
+	      else \
+	        echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	        rm -f $$tmpdir/$$lang.new.po; \
+	        exit 1; \
+	      fi; \
+	    fi; \
+	  else \
+	    echo "msgmerge for $$cat failed!"; \
+	    rm -f $$tmpdir/$$lang.new.po; \
+	  fi; \
+	done
+
+# POTFILES is created from POTFILES.in by stripping comments, empty lines
+# and Intltool tags (enclosed in square brackets), and appending a full
+# relative path to them
+POTFILES: POTFILES.in
+	( posrcprefix='$(top_srcdir)/'; \
+	  rm -f $@-t $@ \
+	    && (sed -e '/^#/d' 					\
+		    -e 's/^[[].*] *//' 				\
+		    -e '/^[ 	]*$$/d' 			\
+		    -e "s@^@	$$posrcprefix@" $(srcdir)/$@.in	\
+		| sed -e '$$!s/$$/ \\/') > $@-t \
+	    && chmod a-w $@-t \
+	    && mv $@-t $@ )
+
+Makefile: Makefile.in.in ../config.status POTFILES
+	cd .. \
+	  && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
+	       $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/POTFILES.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/POTFILES.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/POTFILES.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,280 @@
+# List of source files containing translatable strings.
+# Please keep this file sorted alphabetically.
+#
+[encoding: UTF-8]
+goffice/app/error-info.c
+goffice/app/error-info.h
+goffice/app/file.c
+goffice/app/file.h
+goffice/app/file-priv.h
+goffice/app/go-app.h
+goffice/app/go-cmd-context.c
+goffice/app/go-cmd-context.h
+goffice/app/go-cmd-context-impl.h
+goffice/app/go-doc.c
+goffice/app/go-doc-control.c
+goffice/app/go-doc-control.h
+goffice/app/go-doc-control-impl.h
+goffice/app/go-doc.h
+goffice/app/go-doc-impl.h
+goffice/app/go-error-stack.h
+goffice/app/goffice-app.h
+goffice/app/go-object.c
+goffice/app/go-object.h
+goffice/app/go-plugin.c
+goffice/app/go-plugin.h
+goffice/app/go-plugin-loader.c
+goffice/app/go-plugin-loader.h
+goffice/app/go-plugin-loader-module.c
+goffice/app/go-plugin-loader-module.h
+goffice/app/go-plugin-service.c
+goffice/app/go-plugin-service.h
+goffice/app/go-plugin-service-impl.h
+goffice/app/go-service.c
+goffice/app/go-service.h
+goffice/app/go-service-impl.h
+goffice/app/io-context.c
+goffice/app/io-context.h
+goffice/app/io-context-priv.h
+goffice/app/module-plugin-defs.h
+goffice/cut-n-paste/pcre/get.c
+goffice/cut-n-paste/pcre/internal.h
+goffice/cut-n-paste/pcre/maketables.c
+goffice/cut-n-paste/pcre/pcre.c
+goffice/cut-n-paste/pcre/pcre.h
+goffice/cut-n-paste/pcre/pcreposix.c
+goffice/cut-n-paste/pcre/pcreposix.h
+goffice/cut-n-paste/pcre/study.c
+goffice/data/go-data.c
+goffice/data/go-data.h
+goffice/data/go-data-impl.h
+goffice/data/go-data-simple.c
+goffice/data/go-data-simple.h
+goffice/data/goffice-data.h
+goffice/drawing/god-anchor.c
+goffice/drawing/god-anchor.h
+goffice/drawing/god-default-attributes.c
+goffice/drawing/god-default-attributes.h
+goffice/drawing/god-drawing.c
+goffice/drawing/god-drawing-group.c
+goffice/drawing/god-drawing-group.h
+goffice/drawing/god-drawing.h
+goffice/drawing/god-drawing-renderer-gdk.c
+goffice/drawing/god-drawing-renderer-gdk.h
+goffice/drawing/god-drawing-view.c
+goffice/drawing/god-drawing-view.h
+goffice/drawing/god-image.c
+goffice/drawing/god-image.h
+goffice/drawing/god-image-store.c
+goffice/drawing/god-image-store.h
+goffice/drawing/god-paragraph-attributes.c
+goffice/drawing/god-paragraph-attributes.h
+goffice/drawing/god-property-table.c
+goffice/drawing/god-property-table.h
+goffice/drawing/god-shape.c
+goffice/drawing/god-shape.h
+goffice/drawing/god-text-model.c
+goffice/drawing/god-text-model.h
+goffice/goffice.c
+goffice/goffice.h
+goffice/goffice-priv.h
+goffice/graph/goffice-graph.h
+goffice/graph/gog-axis.c
+goffice/graph/gog-axis.h
+goffice/graph/gog-axis-prefs.glade
+goffice/graph/gog-chart.c
+goffice/graph/gog-chart.h
+goffice/graph/gog-chart-impl.h
+goffice/graph/gog-chart-prefs.glade
+goffice/graph/gog-control-foocanvas.c
+goffice/graph/gog-control-foocanvas.h
+goffice/graph/gog-data-allocator.c
+goffice/graph/gog-data-allocator.h
+goffice/graph/gog-data-set.c
+goffice/graph/gog-data-set.h
+goffice/graph/gog-error-bar.c
+goffice/graph/gog-error-bar.h
+goffice/graph/gog-error-bar-prefs.glade
+goffice/graph/gog-graph.c
+goffice/graph/gog-graph.h
+goffice/graph/gog-graph-impl.h
+goffice/graph/gog-grid.c
+goffice/graph/gog-grid.h
+goffice/graph/gog-grid-line.c
+goffice/graph/gog-grid-line.h
+goffice/graph/gog-guru.c
+goffice/graph/gog-guru.glade
+goffice/graph/gog-guru.h
+goffice/graph/gog-guru-type-selector.glade
+goffice/graph/gog-label.c
+goffice/graph/gog-label.h
+goffice/graph/gog-legend.c
+goffice/graph/gog-legend.h
+goffice/graph/gog-object.c
+goffice/graph/gog-object.h
+goffice/graph/gog-object-xml.c
+goffice/graph/gog-object-xml.h
+goffice/graph/gog-object-prefs.glade
+goffice/graph/gog-outlined-object.c
+goffice/graph/gog-outlined-object.h
+goffice/graph/gog-plot.c
+goffice/graph/gog-plot-engine.c
+goffice/graph/gog-plot-engine.h
+goffice/graph/gog-plot.h
+goffice/graph/gog-plot-impl.h
+goffice/graph/gog-reg-curve-prefs.glade
+goffice/graph/gog-reg-eqn-prefs.glade
+goffice/graph/gog-renderer.c
+goffice/graph/gog-renderer-gnome-print.c
+goffice/graph/gog-renderer-gnome-print.h
+goffice/graph/gog-renderer.h
+goffice/graph/gog-renderer-impl.h
+goffice/graph/gog-renderer-pixbuf.c
+goffice/graph/gog-renderer-pixbuf.h
+goffice/graph/gog-renderer-svg.c
+goffice/graph/gog-renderer-svg.h
+goffice/graph/gog-series.c
+goffice/graph/gog-series.h
+goffice/graph/gog-series-impl.h
+goffice/graph/gog-style.c
+goffice/graph/gog-styled-object.c
+goffice/graph/gog-styled-object.h
+goffice/graph/gog-style.h
+goffice/graph/gog-style-prefs.glade
+goffice/graph/gog-theme.c
+goffice/graph/gog-theme.h
+goffice/graph/gog-view.c
+goffice/graph/gog-view.h
+goffice/gtk/go-action-combo-color.c
+goffice/gtk/go-action-combo-color.h
+goffice/gtk/go-action-combo-pixmaps.c
+goffice/gtk/go-action-combo-pixmaps.h
+goffice/gtk/go-action-combo-stack.c
+goffice/gtk/go-action-combo-stack.h
+goffice/gtk/go-action-combo-text.c
+goffice/gtk/go-action-combo-text.h
+goffice/gtk/go-charmap-sel.c
+goffice/gtk/go-charmap-sel.h
+goffice/gtk/go-color-group.c
+goffice/gtk/go-color-group.h
+goffice/gtk/go-color-palette.c
+goffice/gtk/go-color-palette.h
+goffice/gtk/go-combo-box.c
+goffice/gtk/go-combo-box.h
+goffice/gtk/go-combo-color.c
+goffice/gtk/go-combo-color.h
+goffice/gtk/go-combo-pixmaps.c
+goffice/gtk/go-combo-pixmaps.h
+goffice/gtk/go-combo-text.c
+goffice/gtk/go-combo-text.h
+goffice/gtk/go-dock-band.c
+goffice/gtk/go-dock-band.h
+goffice/gtk/go-dock.c
+goffice/gtk/go-dock.h
+goffice/gtk/go-dock-item.c
+goffice/gtk/go-dock-item-grip.c
+goffice/gtk/go-dock-item-grip.h
+goffice/gtk/go-dock-item.h
+goffice/gtk/go-dock-layout.c
+goffice/gtk/go-dock-layout.h
+goffice/gtk/goffice-gtk.c
+goffice/gtk/goffice-gtk.h
+goffice/gtk/go-font-sel.c
+goffice/gtk/go-font-sel.glade
+goffice/gtk/go-font-sel.h
+goffice/gtk/go-format-sel.c
+goffice/gtk/go-format-sel.glade
+goffice/gtk/go-format-sel.h
+goffice/gtk/go-rotation-sel.c
+goffice/gtk/go-rotation-sel.glade
+goffice/gtk/go-rotation-sel.h
+goffice/gtk/go-locale-sel.c
+goffice/gtk/go-locale-sel.h
+goffice/gtk/go-optionmenu.c
+goffice/gtk/go-optionmenu.h
+goffice/utils/win32-stub.c
+goffice/utils/win32-stub.h
+goffice/ms-compat/god-drawing-ms.c
+goffice/ms-compat/god-drawing-ms-client-handler.c
+goffice/ms-compat/god-drawing-ms-client-handler.h
+goffice/ms-compat/god-drawing-ms.h
+goffice/ms-compat/god-image-ms.c
+goffice/ms-compat/god-image-ms.h
+goffice/ms-compat/go-ms-parser.c
+goffice/ms-compat/go-ms-parser.h
+goffice/utils/datetime.c
+goffice/utils/datetime.h
+goffice/utils/format.c
+goffice/utils/format-impl.h
+goffice/utils/formats.c
+goffice/utils/go-color.c
+goffice/utils/go-color.h
+goffice/utils/goffice-utils.h
+goffice/utils/go-file.c
+goffice/utils/go-file.h
+goffice/utils/go-font.c
+goffice/utils/go-font.h
+goffice/utils/go-format.c
+goffice/utils/go-format.h
+goffice/utils/go-format-match.c
+goffice/utils/go-format-match.h
+goffice/utils/go-glib-extras.c
+goffice/utils/go-glib-extras.h
+goffice/utils/go-gradient.c
+goffice/utils/go-gradient.h
+goffice/utils/go-libxml-extras.c
+goffice/utils/go-libxml-extras.h
+goffice/utils/go-line.c
+goffice/utils/go-line.h
+goffice/utils/go-marker.c
+goffice/utils/go-marker.h
+goffice/utils/go-math.c
+goffice/utils/go-math.h
+goffice/utils/go-pattern.c
+goffice/utils/go-pattern.h
+goffice/utils/go-units.h
+goffice/utils/regutf8.c
+goffice/utils/regutf8.h
+plugins/plot_barcol/gog-1.5d.c
+plugins/plot_barcol/gog-1.5d.h
+plugins/plot_barcol/gog-barcol.c
+plugins/plot_barcol/gog-barcol.h
+plugins/plot_barcol/gog-barcol-prefs.c
+plugins/plot_barcol/gog-barcol-prefs.glade
+plugins/plot_barcol/gog-line.c
+plugins/plot_barcol/gog-line.h
+plugins/plot_barcol/plot-types.xml.in
+plugins/plot_barcol/plugin.xml.in
+plugins/plot_boxes/gog-boxplot.c
+plugins/plot_boxes/gog-boxplot.h
+plugins/plot_boxes/gog-boxplot-prefs.glade
+plugins/plot_boxes/plot-types.xml.in
+plugins/plot_boxes/plugin.xml.in
+plugins/plot_pie/gog-pie.c
+plugins/plot_pie/gog-pie.h
+plugins/plot_pie/gog-pie-prefs.c
+plugins/plot_pie/gog-pie-prefs.glade
+plugins/plot_pie/gog-pie-series.glade
+plugins/plot_pie/gog-ring-prefs.glade
+plugins/plot_pie/plot-types.xml.in
+plugins/plot_pie/plugin.xml.in
+plugins/plot_radar/gog-radar.c
+plugins/plot_radar/gog-radar.h
+plugins/plot_radar/plot-types.xml.in
+plugins/plot_radar/plugin.xml.in
+plugins/plot_surface/gog-contour-prefs.c
+plugins/plot_surface/gog-contour-prefs.glade
+plugins/plot_surface/gog-surface.c
+plugins/plot_surface/gog-surface.h
+plugins/plot_surface/plot-types.xml.in
+plugins/plot_surface/plugin.xml.in
+plugins/plot_xy/gog-bubble-prefs.c
+plugins/plot_xy/gog-bubble-prefs.glade
+plugins/plot_xy/gog-xy.c
+plugins/plot_xy/gog-xy.h
+plugins/plot_xy/plot-types.xml.in
+plugins/plot_xy/plugin.xml.in
+plugins/reg_linear/gog-lin-reg.c
+plugins/reg_linear/gog-lin-reg.h
+plugins/reg_linear/reg-types.xml.in
+plugins/reg_linear/plugin.xml.in

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/am.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/am.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/am.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4278 @@
+# Translations into the Amharic Language.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gnumeric package.
+# Ge'ez Frontier Foundation <locales at geez.org>, 2002.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-02-07 17:46+EDT\n"
+"Last-Translator: Ge'ez Frontier Foundation <locales at geez.org>\n"
+"Language-Team: Amharic <locales at geez.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "ፎርማት"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr ""
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr ""
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "አጠቃላይ"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "ገጾች"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "አዲስ አንቀጽ"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "ፈልግ"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "ኩልኩል"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "ያልታወቀ ዝርያ"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "መስመር"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "የተጨማሪው ፕሮግራም ዝርዝሮች"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "አውቶማቲክ"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "ምድብ"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "መደቡ"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "ዝጋ (_C)"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "ፎርማት"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "መለያ"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "ዓርብ"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "ዓርብ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "ንድፍ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "ንድፍ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "ደብቅ (_H)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "ደብቅ (_H)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "እርዝማኔ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "አስገባ (_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "አስገባ (_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "ረድፍ (_R)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "ደብቅ (_H)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "ሁሉንም አሳይ (_S)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "ዓይነት"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "ላክ"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr " አርእስት፦"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "ዓርብ"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "ነጥብ"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "እርዝማኔ"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "በ"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "ናሙና"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "ቀለም"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "መለያ"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "በ"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "የውይይት መድረክ"
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "ሰርዝ"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "ስም"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "ቀለም"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "አስገባ (_I)"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "ዓይነት"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "ወሰን"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "አቀማመጥ"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "ንድፍ"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "ናሙና"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "&መግለጫ"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "ጽሑፍ"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "ዳታ (_D)"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "ምርጫዎች... (_T)"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "ዓይነት"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "አዲስ አንቀጽ"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "ሐረግ"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "ነጥብ"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr ""
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "የፊደል ቅርጽ"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "ዘይቤ"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "ንድፍ"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "ቀለም"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "ቀለም"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "አስቀምጥ (_S)"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "መጠን፦"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "ዘይቤ"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "ዓይነት"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "መደቡ"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "ማውጫ"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "እና"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "ቀለም"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "በ"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "ፊት ለፊት"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "ንድፍ"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "ምረጥ (_S)"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "መጠን፦"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "ሁኔታ"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "ቀኝ"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "ወሰን"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "&ምርጫዎች"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "የነበረው"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "የውይይት መድረክ"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "አይታሊክ ማድረጊያ"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "አረንጓዴ"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "አዲስ አንቀጽ"
+
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "ገጾች"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "ቡልያን"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "ምዕራብ"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "ኦክተውበር"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "መለኪያ"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "ማውጫ"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "ጥቁር"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "ሰኞ"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "ደማቅ"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "ሰማያዊ"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "ቀይ"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "ቡልያን"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "ሰዓት"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "ዓርብ"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "ብጫ"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "አረንጓዴ"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "ማያያዣ ቁልፎች"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "በቀኝ ኰልኮያ"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "በቀኝ ኰልኮያ"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "በቀኝ ኰልኮያ"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "ነጭ"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "በዕሴት"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "&የተለየ፦"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "ቀለም"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "አቀማመጥ"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "ፋይል (_F)"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "ምስል... (_I)"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "ምስል አስገባ"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "ሁሉንም አስቀምጥ"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "ፋይል፦ (_F)"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "የተለመደ"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "ደማቅ"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "ደምቆ የሚታይ እና ዘመም ያለ አጻጻፍ"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "አይታሊክ ማድረጊያ"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "የፊደል ቅርጽ ዘይቤ፦"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "የፊደል ቅርጽ፦"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "መጠን፦"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "ቍጥር"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "ቀን"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "ሰዓት"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "&መረጃ"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "ጽሑፍ"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "የተለየ (_P)"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "&የተለየ፦"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "ምድብ፦"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "ፎርማት"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "ቅድመ ዕይታ"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "ምልክት"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "ፎርማት"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "ምዕራብ"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr ""
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "የዛሬው ቀን"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "nu$"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "sun"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr ""
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr ""
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr ""
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr ""
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr ""
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr ""
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "እሑድ"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "ሰኞ"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "ማክሰኞ"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "ረቡዕ"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "ሐሙስ"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "ዓርብ"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "ቅዳሜ"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr ""
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr ""
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr ""
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr ""
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "ሜይ"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr ""
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr ""
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr ""
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr ""
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr ""
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr ""
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "dec#"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "ጃንዩወሪ"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "ፌብሩወሪ"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "ማርች"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "ኤፕረል"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "ሜይ"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "ጁን"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "ጁላይ"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "ኦገስት"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "ሴፕቴምበር"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "ኦክተውበር"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "ኖቬምበር"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "ዲሴምበር"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "እውነት"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "ውሸት"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "ጥቁር"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "ሰማያዊ"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr ""
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "አረንጓዴ"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr ""
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "ቀይ"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "ነጭ"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "ብጫ"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "ምንም"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr ""
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "አውቶማቲክ"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "ምንም"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "አዲስ አንቀጽ"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr ""
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "ፋይል"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "ለጥፍ"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "ማርች"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "ዕሴቶች"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "አልፋ"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "ነጥብ"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "ነጥብ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "አድራሻ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "ቋሚ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "ዐምድ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "መስመር"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "መስመር"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "መቶኛ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "መቶኛ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "መቶኛ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "መቶኛ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "መቶኛ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "ዐምዶች አጥፉ"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "ነጥብ"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "ነጥብ"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "ነጥብ"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "ነጥብ"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "ነጥብ"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "ምንም የልም"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "መለያ"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "መለያ"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "ምድብ፦"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "ማተሚያ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "ቀኝ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "ሐረግ"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "ነጥብ"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "ነጥብ"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "መቶኛ"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "መለያ"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "ቆጠራ"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "ምንጭ"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr ""
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "ምንጭ"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "ምንጭ"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% የተለመደ መጠን (_N)"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "መሀከል"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "ምንጭ"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "ነጥብ"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "ድርብ"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "ድርብ"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "መስመር"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "ነጥቦች"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "መስመር"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/az.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/az.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/az.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4171 @@
+# gnumeric.HEAD.po faylının Azərbaycan dilinə tərcüməsi
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Mətin Əmirov <metin at karegen.com>, 2003
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-08-24 19:47+0300\n"
+"Last-Translator: Mətin Əmirov <metin at karegen.com>\n"
+"Language-Team: Azerbaijani <gnome at azitt.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.1\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Şəkilləndirmə"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr ""
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr ""
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Ãœmumi"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Fayllar"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Int"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+msgid "Space Before"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Yer"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Tərəfləmə"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+msgid "Bullet Character"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Sətir"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Təfərruatlar"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Avtomatik"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "_BaÄŸla"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Şəkilləndirmə"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etiket"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "_Gizlət"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "_Gizlət"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "Hündürlük"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "_Daxil Et"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Daxil Et"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "Alçalt"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "_Gizlət"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Növ:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Başlıq"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Kəs"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Hündürlük"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "E"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "En"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Səhifə ardıcıllığı"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Rəng:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "MÉ™'lumat"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "En"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr ""
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Diaqram"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Ad"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Daxil Et"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr ""
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Səhifə ardıcıllığı"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Åžablon"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Ä°zahat"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr ""
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Gizlət"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Qatar"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punto"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr ""
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Yazı Növü"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Tərz"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Rəng:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Rə_ng:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Qeyd Et"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Böyüklük:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Tərz:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Arxa plan:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Rə_ng:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "Ö_n plan:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Naxış:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Seç..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Böyüklük:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Əsas"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Ərəb dili"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltik dillər"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Mərkəzi Avropa dilləri"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Çin Dili"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Kiril dilləri"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Yunan dili"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Yəhudi dili"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Yapon dili"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreya dili"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Türk dili"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Yunikod"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vyetnam dili"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Qərb dilləri"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Digər"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Yunikod (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "İstifadəçi Tə'yinli"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "yaşıl"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr ""
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "xüsusi"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>İstiqamət</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Fayllar"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Rəsm"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Qeyd Et"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Qalın"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Əyik"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Yazı növü:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Ön Nümayiş"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Böyüklük:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Ədəd"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Tarix"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Vaxt"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Faiz"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fraksiya"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Mətn"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Xüsusi"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Xüsusi"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Nümayiş:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Avstraliya"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menyu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Seçimlər menyusu"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "İndikator Böyüklüyü"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Dropdown indikator böyüklüyü"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Ä°ndikator BoÅŸluÄŸu"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "İndikator ətrafındakı boşluq"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr ""
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr ""
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr ""
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr ""
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr ""
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr ""
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr ""
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr ""
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr ""
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr ""
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr ""
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr ""
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr ""
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr ""
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr ""
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr ""
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr ""
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr ""
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr ""
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr ""
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr ""
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr ""
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr ""
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr ""
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr ""
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr ""
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Yanvar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Fevral"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Mart"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Aprel"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "May"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Ä°yun"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Ä°yul"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Avqust"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Sentyabr"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktyabr"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Noyabr"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Dekabr"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr ""
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr ""
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Qara"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Mavi"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Yaşıl"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr ""
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Qırmızı"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "AÄŸ"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr ""
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Yoxdur"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr ""
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Avtomatik"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Yoxdur"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr ""
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr ""
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr ""
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Yapışdır"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "Çubuq"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "Kəs"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "Kəs"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Çubuq"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Sətir"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Sətir"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Kəs"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Hökmsüz şifrə"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Kəs"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Kəs"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Kəs"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "_Axtar:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "Kəs"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Kəs"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "inumber"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Say"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Mənbə"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr ""
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Mənbə"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Mənbə"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Tarix"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Mənbə"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "Kəs"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Mavi"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Mavi"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Sətir"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Punto"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Sətir"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/bg.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/bg.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/bg.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4256 @@
+# Bulgarian translation for gnumeric.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Borislav Aleksandrov <B.Aleksandrov at cnsys.bg>, 2002.
+# Vladimir Petkov <vpetkov at i-space.org>, small updates for standartization, 2004
+# 
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-08-03 13:19+0300\n"
+"Last-Translator: Vladimir \"Kaladan\" Petkov <vpetkov at i-space.org>\n"
+"Language-Team: Bulgarian <dict at linux.zonebg.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Запазването върху стари файлове за този тип е забранено поради безопасност."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Вие може да изключите тази възможност като редактирате съответния plugin.xml "
+"файл."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Обектен"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, fuzzy, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "Файла съдържа информация за plugin с невярно id (%s), очакваше се %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Не мога да чета информация за plugin от файл."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Неизвестно име"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Неподържан тип на програма за зареждане \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Грешка докато подготвям програмата за зареждане \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Гешка по време на четене на инфо за обслужане #%d"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Не мога да чета plugin инфо файл (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Файл \"%s\" не е валиден plugin инфо файл."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Грешки при четене на обслужвания за  plugin с id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Неизвестно име на plugin"
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Не е зададена програма за зареждане на plugin с id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin-ът няма id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Грешка при инициализиране на зареждане на plugin (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Грешка при зареждане зависимостите на plugin."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Не мога да активирам plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Не е зададена програма за зареждане на plugin с id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Грешка при зареждане зависимостите на plugin."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Грешка при активиране на plugin обслужване #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Грешка при деактивиране на plugin обслужване #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Не мога да заредя plugin."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Не е зададена програма за зареждане на plugin с id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Грешка при зареждане зависимостите на plugin."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Появи се грешка при четене на информация за plugin от файл \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Не мога да активирам plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Не мога да деактивирам plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Грешка при четене на информация за наличните plugins."
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Грешка при деактивиране на plugin обслужване #%d."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Грешка при активиране на plugins."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Грешка по време на инициализиране на plugin' система."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Обслужването не се поддържа от програмата за зареждане."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Име на модулен файл не е зададено."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Не мога да отворя модулен файл \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Модулен файл \"%s\" има грешен формат."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Файла не съдържа (\"plugin_file_struct\" символ)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Файла има грешен \"magic\" номер."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Версия на \"Plugin\" \"%s\" е различна от приложениета \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Динамично зареждане на модул не се поддържа в тази система."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Не мога да затворя модул файл \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Файла не съдържа функция \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Модула не съдържа функция \"%s\""
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Грешка по време на зареждане на plugin обслужване."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Инициализираща функция вътре в plugin върна грешка."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Функцията за чистене в plugin върна грешка."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Основни"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Файла отворен с id=\"%s\" няма описание"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Грешка по време на четене на файл."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Файа, запазен с id=\"%s\" няма описание"
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Програмата за запазване на файл няма id"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Грешка по време на запазване на файл."
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Програма за зареждане на plugin за Python "
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Обектна Стойност"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Неизвестен лист '%s'"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Гешка по време на четене на инфо за обслужане #%d"
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "страници"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Отстъп:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Търсене за"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Подравняване"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Символ на кавички:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Проблем с Размер"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Дискретно"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Дискретно"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Линия"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Логични"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Подробности"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Автоматично"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Категории"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Фон"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "М_ин"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "Максимално"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Пресичане"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Форматиране"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Етикет"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Мрежа"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Мрежа"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Шаблон"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Предварителен преглед"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Предупреждения за грешка</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Ориентация</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "В_ътре"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Отвън"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "В_исоко"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "Вът_ре"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Обръщане"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Ниско"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Отвън"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Показване на Етикетите"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Тип:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Легенда"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Заглавие"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Мрежа"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Плот"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Височина"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Ширина"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Предупреждения за грешка</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Стил</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Стил</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Цвят:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Ширина на Колона"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_С:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Диаграма"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Диаграма"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Име"
+
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Стъпка 1 от 3: Избор на тип графика"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Стъпка 3 от 3: Настройка на графика"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Настройка поле над страница"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Вмъкване"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Име на графика"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Ред"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Ориентация</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Плочка</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Стил</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Размер на Избор:"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Описание"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "Те_кст:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Данни"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Серии"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Име на графика"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Име на графика"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Отстъп:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_Низове"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Точка"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Шрифт"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Стил"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Запълване</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Предварителен преглед"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Шаблон"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Предварителен преглед"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Ц_вят:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Структури _Долу"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Форма"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Раз_мер:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Стил:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "_Тип:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "Фон:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Посока:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Край:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Цвят за запълване:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Изпълване:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "Преден план:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Плочка:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Избор..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Размер:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Начало:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_по-ярко"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "по-тъмно"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "тчк"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "По подразбиране"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Гупи"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Арабски"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Балтийски"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Централно европейски"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Гръцки"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Индийски"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Японски"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Корейски"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Турски"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Уникод"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Виетнамски"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Западен"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Друг"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Подчертава"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Локал: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Корелация на Пирсон"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "черен"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "морско синьо"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "червено-оранжево"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "златно"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "тъмно синьо"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "синьо"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "тъмно сиво"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "червено"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "оранжево"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "време"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "сиво"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "пурпурно"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "жълто"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "зелено"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "циан"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "розово"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Дясно подравняване"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Дясно подравняване"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Дясно подравняване"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "бяло"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "небесно синьо"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "Настройка"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Настройка поле под страница"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Сянка"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Ориентация</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Копира текущото избрано в буфера за обмен"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Немога да отворя файл \"%s\""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Файлове"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Изображение"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Избор на изображение"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Запазване на всичко"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Тип файл:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"е име на директория"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Вие нямате права за запазване на\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Работна книга %s вече съществува.\n"
+"Искате ли да запазя върху нея?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Нормално"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Удебелено"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Удебелен italic"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Наклонено"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Стил на Шрифт:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Шрифт:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Предварителен преглед"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Размер:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Число"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Пари"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "Отчетност"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Дата"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Време"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Проценти"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "Дробна"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Научно"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Текст"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Специално"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Настройка"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Отрицателно число:"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Числови формати"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Категория:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Десетични позиции:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "Евро"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Показва Структура"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Покзава стойността точно както е въведена"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Формат:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Отрицателно число:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Предварителен преглед:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "С_имвол:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Формат:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Използва Разделител за 1000-ни"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Западна Европа"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Източна Европа"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Азия"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Африка"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Австралия"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Южна Африка, Африкаанс (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Бахрейн (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Йордан (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Кувейт (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Либия (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Суадитска Арабия (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Тунис (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Беларус (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "България (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Бангладеш (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Чешка Република (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Люксембург/Немски (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Нова Зеландия (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Филипини (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Южна Африка/Английски (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Аржентина (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Чили (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Колумбия (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Коста Рика (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Доминиканска Република (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Еквадор (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Гватемала (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Хондурас (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Мексико (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "Салвадор (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Уругвай (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Венецуела (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Индонезия (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Холандия (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Словкия (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Словения (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Албания (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Югославия (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Таджикистан (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Тайланд (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Пакистан (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Текущ локал:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Меню"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Вътрешна ГРЕШКА"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Нед"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Пнд"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Ð’Ñ‚Ñ€"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Срд"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Чтв"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Птк"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Сбт"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Неделя"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Понеделник"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Вторник"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Сряда"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Четвъртък"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Петък"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Събота"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Янр"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Фев"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Мрт"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Апр"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Май"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Юни"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Юли"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Авг"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Сеп"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Окт"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Нов"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Дек"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Януари"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Февруари"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Март"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Април"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Май"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Юни"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Юли"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Август"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Септември"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Октомври"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Ноември"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Декември"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "ИСТИНА"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "ЛЪЖА"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Черно"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Синьо"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Циан"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Зелено"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Пурпурно"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Червено"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Бяло"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Жълто"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Афганистански, авгани"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Албански, лек"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Холандски Антилиан, гуилдер"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Ангола, кванза"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Аржентина, песо"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Австралия, долар"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Арубания, гуилдер"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Барбадос, долар"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Бангладеш, така"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "България, лев"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Бахрейн, динар"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Бурунди, франк"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Бермуди, долар"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Бруней, долар"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Боливия, боливано"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Бразилия, реал"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Бахами, долар"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Бутан, нгултрум"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Ботсвана, пула"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Беларус, рубла"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Билиз, долар"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Канада, долар"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Чили, песо"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Китай, юан"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Колумбия, песо"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Коста Рика, колон"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Куба, песо"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Капе Верде, ескудо"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Кипър, паунд"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Чехия, крона"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Джибути, франк"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Доминиканска Република, песо"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Алжир, алжирски динар"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Египет, паунд"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Етиопия, бир"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Фиджи, долар"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Фолкландски оствори, паунд"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Судан, паунд"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Гана, цеди"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Гибралтар, паунд"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Гамбия, даласи"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Гвинея, франк"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Гватемала, куетзал"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Гвиана, долар"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Хонк Конг, долар"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Хондурас, лемпира"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Хърватско, куна"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Хаити, гоуребе"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Унгария, форинт"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Индонезия, рупии"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Израел, шекел"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Индия, рупия"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Ирак, динар"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Иран, риал"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Исландия, крона"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Ямайка, долар"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Йордания, динар"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Япония, йена"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Кения, шилинг"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Коморски, франк"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Кувейт, динар"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Каймански острови, долар"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Казакстан, тенге"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Лаос, кип"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Ливан, паунд"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Шри Ланска, рупии"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Либерия, долар"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Лесото, малоти"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Либия, динар"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Мароко, дирхам"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Молдова, лея"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Мадагаскар, малагазийски франк"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Майнмар, куати"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Монголия, тунгрик"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Макао, патака"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Мавритания, оугуя"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Малта, лира"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Мавриций, рупи"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Малави, квача"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Мексико, песо"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Малайзия, рингит"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Мозамбик, метикал"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Намибия, долар"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Нигерия, ниар"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Никарагуа, златни кордоба"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Норвегия, крона"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Непал, рупи"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Нова Зеландия, долар"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Панама, балбоа"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Папуа и Нова Гвинея, кина"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Филипински острови, песо"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Пакистан, рупи"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Парагвай, гуарани"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Катар, реал"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Румъния, леа"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Русия, рубла"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Руанда, франк"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Суадитска Арабия, риал"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Соломонови острови, долар"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Сейшелски острови, рупи"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Сингапур, долар"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Св. Елена, паунд"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Словения, толар"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Словакия, коруни"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Сиера Леоне, леоне"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Сомалия, шилинг"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Суринам, гуйлдер"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Сан Томе и Принципи, добра"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "Салвадор, колон"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Сирийя, паунд"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Свазиленд, лилингжени"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Тайланд, бахт"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Таджикистан, рубла"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Тунис, динар"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Тонга, панга"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Турция, лира"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Тринидат и Тобаго, долар"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Тайван, нов долар"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Танзания, шилинг"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Украийна, гривни"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Уганда, шилинг"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Уругвай, песо"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Венецуела, боливар"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Виетнам, донг"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Ванути, вату"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Самоа, тала"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Източни Караиби, долар"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Йемен, риал"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Югославия, нов динар"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Южна Африка, ранд"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Замбия, квач"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Зимбабве, долар"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Без"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Плътен"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+#, fuzzy
+msgid "Dash dot"
+msgstr "Датска крона"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Автоматично"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "без"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "диаманд"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "обхват"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Структури в _Дясно"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "кръг"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "кръст"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "звездичка"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "лента"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Сиво"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% Сиво"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% Сиво"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Сиво"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Сиво"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Хоризонтална Щриха"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Вертикални щрихи"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Обратни Диагонални щрихи"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Диагонални Щрихи"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Диагонални Пресечени"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Дебели Диагонално-пресечени щрихи"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Тънки Хоризонтални Щрихи"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Тънки Вертикални щрихи"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Тънки обратни диагонални щрихи"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Тънки Диагонални щрихи"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Тънки Хоризонтално-пресечени"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Тънки Диагонално-пресечени щрихи"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Плътен Преден план"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Малки окръжности"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Полуокръжности"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Сламена"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Големи Кръгове"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Тухла"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Етикети"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Значения"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Грешка при обработка на ред"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Диаграма..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Вмъква Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Вмъква Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Област"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Области"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Лента"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Колона"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Линия"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Редове за импортиране"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Линии"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "Про_центи"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "Про_центи"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Изтрива Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "Про_центи"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "Про_центи"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Про_центи"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Изтрива Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Изтрива Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Изтрива Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "_Линейна мрежа"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Изтрива Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Изтрива Колони"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "_Линейна мрежа"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "Про_центи"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "_Линейна мрежа"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Дифинира имена"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Ред и _заглавия на колони"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Плот"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Грешна парола"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Плот"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Плот"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Плот"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Промяна цвета на листата"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Дифинира имена"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Начертай"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Нищо"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Разделител:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "градуси"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Разделител:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Категория:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "_Линейна мрежа"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Разделя"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Умножение"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Множество грешки\n"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Цена"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "_Диапазон"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Разделя"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Разделя"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "Плот"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Про_центи"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Изтрива Колони"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Дифинира имена"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Цели числа"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Количество"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Подръжка по Контракт"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Източник"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr ""
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Област на източник"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Област на източник"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% от мормален размер"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "сантиметър"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Източник"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Начертай"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Двойно"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Двойно"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Грешка при обработка на ред"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Грешка при обработка на ред"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Изтрива Колони"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Линия"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Точка"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Линия"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ca.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ca.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ca.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,5234 @@
+# gnumeric translation to Catalan.
+# Copyright (C) 2000,2004,2005 Free Software Foundation, Inc.
+# Softcatalà <tradgnome at softcatala.org>, 2000-2002.
+# Jordi Negrevernis i Font <jorneg at retemail.es>, 2002, 2003.
+# Xavier Conde Rueda <xaviconde at eresmas.com>, 2004,2005
+# Jordi Ivars <jordi at ultimobyte.es>, 2004,2005
+# Albert Gasset <albert.gasset at estudiant.upc.edu>, 2004,2005
+# fitxer: ca.po
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-1-5 18:34+0100\n"
+"Last-Translator: Softcatalà <tradgnome at softcatala.org>\n"
+"Language-Team: Catalan <tradgnome at softcatala.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#
+# fitxer: src.ca.po.2
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"S'ha deshabilitat l'opció per desar sobre fitxers antics per seguretat."
+
+# fitxer: src.ca.po.2
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Podeu desactivar aquesta característica de seguretat editant el fitxer "
+"plugin.xml corresponent."
+
+# fitxer: src.ca.po.5
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objectiu"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"El fitxer conté informació dels connectors amb un identificador invàlid (%"
+"s). S'esperava %s."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "No s'ha pogut llegir la informació dels connectors del fitxer."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nom desconegut"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Tipus de carregador \"%s\" no permès."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "S'ha produït un error mentre es preparava el carregador \"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "S'ha produït un error mentre s'escrivia la informació del servei #%d."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "No es pot llegir el fitxer d'informació dels connectors (\"%s\")."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "El fitxer \"%s\" no és un fitxer d'informació dels connectors vàlid."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+"S'han produït errors mentre es llegia els serveis per al connector amb "
+"l'identificador=\"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "L'id del connector conté caràcters invàlids (%s)."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nom de connector desconegut."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"No s'ha definit cap carregador o l'identificador és invàlid per al connector "
+"amb l'identificador=\"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "El connector no té cap identificador."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "S'ha produït un error en iniciar el carregador de connector (\"%s\")."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "S'han detectat dependències de connectors cícliques."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "No s'ha pogut activar el connector amb l'identificador=\"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "No s'ha pogut trobat el connectador amb l'identificador=\"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "S'ha produït un error en activar les dependències dels connectors."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "S'ha produït un error en activar el servei dels connectors #%d."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "S'ha produït un error en desactivar el servei dels connectors #%d."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "No s'ha pogut carregar el carregador dels connectors"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "No s'ha pogut carregar el connector amb l'identificador=\"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "S'ha produït un error en carregar les dependències dels connectors."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"S'han produït errors en llegir les informacions dels connectors del fitxer "
+"\"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "No s'ha pogut activar el connector \"%s\" (identificador: %s)."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "No s'ha pogut desactivar el connector \"%s\" (identificador: %s)."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+"S'han produït errors mentre es llegia la informació sobre els connectors "
+"disponibles."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+"S'ha produït un error mentre es desactivava els connectors que ja no estan "
+"en disc."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Els següents connectors ja no estan en disc però encara estan actius:\n"
+"%s.\n"
+"Hauríeu de reiniciar Gnumeric ara."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "S'han produït errors mentre s'activaven els connectors."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "S'han produït errors mentre s'iniciava el sistema de connectors"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "El carregador no té mètode set_attributes.\n"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "El carregador no té mètode load_base.\n"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "El servei '%s' no està suportat pel carregador."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "No s'ha donat el nom del fitxer del mòdul."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "No s'ha pogut obrir el fitxer del mòdul \"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "El fitxer del mòdul \"%s\" té un format invàlid."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "El fitxer no conté el símbol \"plugin_file_struct\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "El fitxer té un número màgic dolent."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "La versió del connector \"%s\" és diferent a la de l'aplicació \"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "La càrrega de mòduls dinàmicament no està suportada en aquest sistema."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "No s'ha pogut tancar el fitxer del mòdul \"%s\"."
+
+# fitxer: plugins.ca.po.10
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "El fitxer no conté la funció \"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "El mòdul no conté la funció \"%s\"."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "S'ha produït un error en carregar el servei del connector."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "La funció d'inicialització dins del connector ha tornat un error."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "La funció de neteja dins del connector ha tornat un error."
+
+# fitxer: src.ca.po.11
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "General"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "L'obridor de fitxers no té cap descripció"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Obridor de fitxers - %s"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "S'ha produït un error en llegir el fitxer."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "El desador de fitxers no té descripció"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Desador de fitxers - %s"
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "S'ha produït un error en desar el fitxer."
+
+#
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Carregador de connectors"
+
+#
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Carregador GObject "
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "No hi ha un atribut \"type\" en l'element \"service\""
+
+# src/functions/fn-information.c:317
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Tipus de servei desconegut: '%s'."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "S'ha produït un error mentre es llegia informació del servei."
+
+# fitxer: src.ca.po.4
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"S'han de carregar els serveis abans d'activar-los (PLUGIN_ALWAYS_LOAD és "
+"actiu), però la càrrega ha fallat."
+
+# fitxer: src.ca.po.4
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "pàgines"
+
+# fitxer: src.ca.po.13
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Sagna:"
+
+#
+# fitxer: src.ca.po.2
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Cerca"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+# fitxer: src.ca.po.11
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Alineació"
+
+#
+# fitxer: src.ca.po.14
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "_Caràcter de coma:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+# fitxer: src.ca.po.7
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Mida del problema"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discreta"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Correspondència discreta"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Linial"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Correspondència lineal"
+
+# src/functions/fn-logical.c:231
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Logarítmica"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Correspondència logarítmica"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detalls"
+
+# src/functions/fn-information.c:308 src/workbook-format-toolbar.c:649
+# fitxer: plugins.ca.po.4
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automàtic"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Categories entre eti_quetes"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Límits"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "Mí_n"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "Mà_x"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etiqueta"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Correspondència</b>"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Posició</b>"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nterior"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "E_xterior"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "Al_t"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Interior"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Inverteix l'eix"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Baix"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "Exteri_or"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "Mo_stra etiquetes"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tipus:"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Llegenda"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Títol"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Graella"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Eix X"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Eix Y"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Eix Z"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Eix circular"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Eix radial"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Traça"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Alçada"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Amplada"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "No es visualitza la barra d'errors"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Es visualitza la barra d'error positiva"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Es visualitza la barra d'error negativa"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Es visualitza la barra d'error sencera"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Categoria d'error</b>"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Estil</b>"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Valors</b>"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Colo_r:"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "Visualit_za:"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Cap\n"
+"Absolut\n"
+"Relatiu\n"
+"Percentatge"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "Amplada de _línia:"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "Am_plada:"
+
+# fitxer: src.ca.po.9
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Gràfic"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Gràfic"
+
+# fitxer: plugins.ca.po.8
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nom"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Pas 1 de 2: seleccioneu el tipus de gràfic"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Pas 2 de 2: personalitzeu el gràfic"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Personalitza el gràfic"
+
+# fitxer: src.ca.po.1
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Insereix"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Ti_pus de traçat"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Gràfic del GNOME Office"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "M_ou endavant"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Mou al _davant de tot"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Mou end_arrere"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Mou al darrere de _tot"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Ordena"
+
+# fitxer: src.ca.po.1
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definició</b>"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Patró</b>"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Estil</b>"
+
+# fitxer: src.ca.po.5
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Mostra"
+
+# fitxer: src.ca.po.13
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Descripció"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Text:"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Dades"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Sèries"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Motor de traçat"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Tipus de traçat"
+
+# fitxer: src.ca.po.9
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Tema de gràfic"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Índex:"
+
+#
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Paràmetres"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punt"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Tipus de lletra"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Estil"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 colors\n"
+"Brillantor"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Omple</b>"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Línia</b>"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Marcador</b>"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Contorn</b>"
+
+#
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Co_lor:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Cap\n"
+"Patró\n"
+"Gradient\n"
+"Imatge"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "C_olor del contorn:"
+
+#
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Forma:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Mida:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "_Estil:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "_Tipus:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "F_ons:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Direcció:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Final:"
+
+#
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Color de _farciment:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Adapta:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Primer pla:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Patró:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Selecciona..."
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Mida:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Principi:"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "més _brillant"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "més _fosc"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+# fitxer: src.ca.po.11
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"estirat\n"
+"empaperat"
+
+#
+# fitxer: src.ca.po.11
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Per defecte"
+
+# fitxer: src.ca.po.11
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Àrab"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Bàltic"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Centreeuropeu"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Xinès"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Ciríl·lic"
+
+#
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grec"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebreu"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indi"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japonès"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Coreà"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turc"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamita"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Occidental"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Altres"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Àrab (IBM-864)"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Àrab (IBM-864-I)"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Àrab (ISO-8859-6)"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Àrab (ISO-8859-6-E)"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Àrab (ISO-8859-6-I)"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Àrab (MacArabic)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Àrab (Windows-1256)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armeni (ARMSCII-8)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Bàltic (ISO-8859-13)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Bàltic (ISO-8859-4)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Bàltic (Windows-1257)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Cèltic (ISO-8859-14)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Centreeuropeu (IBM-852)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Centreeuropeu (ISO-8859-2)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Centreeuropeu (MacCE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Centreeuropeu (Windows-1250)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Xinès simplificat (GB18030)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Xinès simplificat (GB2312)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Xinès simplificat (GBK)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Xinès simplificat (HZ)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Xinès simplificat (Windows-936)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Xinès tradicional (Big5)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Xinès tradicional (Big5-HKSCS)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Xinès tradicional (EUC-TW)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croata (MacCroatian)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Ciríl·lic (IBM-855)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Ciríl·lic (ISO-8859-5)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Ciríl·lic (ISO-IR-111)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Ciríl·lic (KOI8-R)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Ciríl·lic (MacCyrillic)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Ciríl·lic (Windows-1251)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Rus (CP-866)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ucraïnès (KOI8-U)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ucraïnès (MacUkrainian)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Anglès (ASCII)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgià (GEOSTD8)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grec (ISO-8859-7)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grec (MacGreek)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grec (Windows-1253)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreu (IBM-862)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebreu (ISO-8859-8-E)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebreu (ISO-8859-8-I)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebreu (MacHebrew)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreu (Windows-1255)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandès (MacIcelandic)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japonès (EUC-JP)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonès (ISO-2022-JP)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonès (Shift_JIS)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Coreà (EUC-KR)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Coreà (ISO-2022-KR)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Coreà (JOHAB)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Coreà (UHC)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nòrdic (ISO-8859-10)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Romanès (MacRomanian)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Romanès (ISO-8859-16)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Europa del sud (ISO-8859-3)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tailandès (TIS-620)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turc (IBM-857)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turc (ISO-8859-9)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turc (MacTurkish)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turc (Windows-1254)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Definit per l'usuari"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamita (TCVN)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamita (VISCII)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamita (VPS)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamita (Windows-1258)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebreu visual (ISO-8859-8)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Occidental (IBM-850)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Occidental (ISO-8859-1)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Occidental (ISO-8859-15)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Occidental (MacRoman)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Occidental (Windows-1252)"
+
+# src/functions/fn-logical.c:231
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Localització: "
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Direcció de la conversió"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Aquest valor determina quin test de l'iconv es realitzarà."
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "negre"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "marró clar"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "or marró"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "verd fosc #2"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "blau marí"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "blau fosc"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "porpra #2"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "gris molt fosc"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "vermell fosc"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "vermell taronja"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "or"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "verd fosc"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "blau apagat"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blau"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "porpra apagat"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "gris fosc"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "vermell"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "taronja"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "llima"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "verd apagat"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "blau apagat #2"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "blau cel #2"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "porpra"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "gris"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "taronja brillant"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "groc"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "verd"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cian"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "blau brilant"
+
+# fitxer: src.ca.po.10
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "vermell porpra"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "gris clar"
+
+#
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "taronja clar"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "groc clar"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "verd clar"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "cian clar"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "blau clar"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "porpra clar"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "blanc"
+
+# fitxer: src.ca.po.12
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "blau porpra"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "porpra fosc"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "blau cel"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "personalitzat"
+
+#
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Color personalitzat..."
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Tipus d'ombra"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientació"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Amplada preferida"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Alçada preferida"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Enganxa la barra d'eines"
+
+# fitxer: src.ca.po.12
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Desenganxa la barra d'eines"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "No es pot obrir el fitxer '%s'"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Tots els fitxers"
+
+#
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Imatges"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Selecciona una imatge"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Anomena i desa"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Tipus de fitxer:"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"L'extensió del fitxer proporcionada no concorda amb la del tipus de fitxer "
+"escollit. Voleu utilitzar aquest nom de totes maneres?"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"és el nom d'un directori"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"No teniu els permisos necessaris per desar a\n"
+"%s"
+
+# fitxer: src.ca.po.3
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Existeix un fitxer anomenat <i>%s</i> a %s.\n"
+"\n"
+"Voleu desar-hi a sobre?"
+
+# fitxer: src.ca.po.13
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Negreta"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Negreta cursiva"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Cursiva"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+# fitxer: src.ca.po.11
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Estil del tipus de lletra:"
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Tipus de lletra:"
+
+# fitxer: src.ca.po.11
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Previsualització"
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Mida:"
+
+# fitxer: src.ca.po.14
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Nombre"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Moneda"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Financer"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Data"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Hora"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Percentatge"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fracció"
+
+# fitxer: src.ca.po.7
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Científic"
+
+#
+# fitxer: src.ca.po.14
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Text"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Especial"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Personalitzat"
+
+#
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format de nombre negatiu"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formats de nombres"
+
+#
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tegoria:"
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Nombre de deci_mals:"
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Mostra quantitats en estils tradicionals financers."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Mostra i entra valors com a cadenes sense interpretació."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Mostra quantitats monetàries."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Mostra dates i opcionalment l'hora del dia."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Mostra valors numèrics amb un nombre fixat de decimals."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Mostra les hores del dia."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Mostra valors en la millor aproximació fraccional."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Mostra els valors com a percentatges."
+
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Mostra valors en escala de potència de 10."
+
+#
+# fitxer: src.ca.po.2
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "C_odi de format:"
+
+#
+# fitxer: src.ca.po.1
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Format de nombre negatiu:"
+
+# fitxer: src.ca.po.1
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Previsualització:"
+
+# fitxer: src.ca.po.1
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "_Símbol:"
+
+# fitxer: src.ca.po.1
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Selecciona un format apropiat automàticament."
+
+# fitxer: src.ca.po.1
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Especifica un format d'estil XL directament"
+
+# fitxer: src.ca.po.1
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+# fitxer: src.ca.po.1
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Usa el separador per als milers"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Europa occidental"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Europa oriental"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Amèrica del nord"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Amèrica central i del sud"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Àsia"
+
+#
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Àfrica"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Austràlia"
+
+# fitxer: src.ca.po.8
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Estats Units/Anglès (C)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sudàfrica Africà (af_ZA)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiòpia/Amàric (am_ET)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Emirats Àrabs Units (ar_AE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algèria (ar_DZ)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egipte (ar_EG)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Índia/Aràbic (ar_IN)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraq (ar_IQ)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordània (ar_JO)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Lebanon (ar_LB)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Líbia (ar_LY)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marroc (ar_MA)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Aràbia Saudí (ar_SA)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Síria (ar_SY)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tuníssia (ar_TN)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Ièmen (ar_YE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaijan (az_AZ)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Bielorússia (be_BY)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgària (bg_BG)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Índia/Bengalí (bn_IN)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "França/Bretó (br_FR)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bòsnia i Herzegovina (bs_BA)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Espanya/Català (ca_ES)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "República txeca (cs_CZ)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Gran Bretanya/Gal·lès (cy_GB)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dinamarca (da_DK)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Àustria (de_AT)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Bèlgica/Alemany (de_BE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Suïssa/Alemany (de_CH)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Alemanya (de_DE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburg/Alemany (de_LU)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grècia (el_GR)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Austràlia (en_AU)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canadà/Anglès (en_CA)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Gran Bretanya (en_GB)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Anglès (en_HK)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlanda (en_IE)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Índia/Anglès (en_IN)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nova Zelanda (en_NZ)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipines (en_PH)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/Anglès (en_SG)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Estats Units/Anglès (en_US)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Sudafricà/Anglès (en_ZA)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolívia (es_BO)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Xile (es_CL)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colòmbia (es_CO)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "República Dominicana (es_DO)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Equador (es_EC)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Espanya (es_ES)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+# fitxer: src.ca.po.8
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Hondures (es_HN)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mèxic (es_MX)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panamà (es_PA)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Perú (es_PE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Estats Units/Espanyol (es_US)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Veneçuela (es_VE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estònia (et_EE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Espanya/Basc (eu_ES)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finlàndia/Finès (fi_FI)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Illes Faroe (fo_FO)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Bèlgica/Francès (fr_BE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canadà/Francès (fr_CA)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Suïssa/Francès (fr_CH)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "França (fr_FR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlanda/Gaèlic (ga_IE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Gran Bretanya/Escocès Gaèlic (gd_GB)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Espanya/Gallec (gl_ES)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Gran Bretanya/Manx Gaèlic (gv_GB)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Índia/Hindú (hi_IN)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croàcia (hr_HR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Hungria (hu_HU)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armènia (hy_AM)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonèsia (id_ID)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islàndia (is_IS)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Suïssa/Italià (it_CH)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Itàlia (it_IT)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebreu (iw_IL)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japó (ja_JP)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Geòrgia (ka_GE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Groenlàndia (kl_GL)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Corea (ko_KR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Gran Bretanya/Cornish (kw_GB)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lituània (lt_LT)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Letònia (lv_LV)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nova Zelanda/Maorí (mi_NZ)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedònia (mk_MK)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Índia/Marathi (mr_IN)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malàisia (ms_MY)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Bèlgica/Flamenc (nl_BE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Països Baixos (nl_NL)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Noruega/Nynorsk (nn_NO)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Noruega/Bokmal (no_NO)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "França/Occità (oc_FR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polònia (pl_PL)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasil (pt_BR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romania (ro_RO)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rússia (ru_RU)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ucraïna/Rus (ru_UA)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Noruega/Saami (se_NO)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Eslovàquia (sk_SK)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Eslovènia (sl_SI)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albània (sq_AL)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Iugoslàvia (sr_YU)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finlàndia/Suec (sv_FI)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Suècia (sv_SE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Índia/Tamil (ta_IN)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Índia/Telugu (te_IN)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tajikistan (tg_TJ)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tailàndia (th_TH)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiòpia/Tigrinya (ti_ET)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipines/Tagalog (tl_PH)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turquia (tr_TR)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rússia/Tartar (tt_RU)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ucraïna (uk_UA)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Paquistan (ur_PK)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Bèlgica/Való (wa_BE)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Estats Units/Yiddish (yi_US)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Xina (zh_CN)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Xinès (zh_HK)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/Xinès (zh_SG)"
+
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#
+# fitxer: src.ca.po.15
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Localització actual:"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menú"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "El menú d'opcions"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Mida de l'indicador"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Espaiat de l'indicador"
+
+# fitxer: src.ca.po.9
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Espai al voltant de l'indicador"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dg"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Dl"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Dt"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Dc"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Dj"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Dv"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Ds"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Diumenge"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Dilluns"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Dimarts"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Dimecres"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Dijous"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Divendres"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Dissabte"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Gen"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Març"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Abr"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Maig"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Juny"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Ago"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Set"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Oct"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Des"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Gener"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Febrer"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Març"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Abril"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Maig"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Juny"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Juliol"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Agost"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Setembre"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Octubre"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Novembre"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Desembre"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "cert"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "fals"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Negre"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blau"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cian"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Verd"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Vermell"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Blanc"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Groc"
+
+# fitxer: src.ca.po.2
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Emirats Àrabs Units, dirhams"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afganistan, afgans"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albània, leke"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armènia, drams"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Antilles Holandeses, guilders"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kwanza"
+
+#
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, pesos"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Austràlia, dòl·lars"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, guilders"
+
+# fitxer: src.ca.po.2
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaijan, manats"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bòsnia i Herzegovina, Marka Convertible"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dòl·lars"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangla Desh, taka"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgària, leva"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, dinars"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, francs"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermudes, dòl·lars"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei, dòl·lars"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolívia, bolivià"
+
+#
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasil, reial"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahames, dòl·lars"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrum"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pulas"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dòl·lars"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canadà, dòl·lars"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo/Kinshasa, francs congolenys"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Suïssa, francs"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Xile, pes"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Xina, yuan renminbi"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colòmbia, pes"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, colones"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, pes cubà"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cap Verd, escuts"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Xipre, lliura"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "República txeca, corona"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, francs"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Dinamarca, corona"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "República dominicana, pes dominicà"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algèria, dinar algerià"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estònia, corona"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egipte, lliures"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, nakfa"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiòpia, birr"
+
+# fitxer: src.ca.po.4
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Països de la zona euro, euro"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Illes Falkland (Malvines), lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Regne Unit, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Geòrgia, lari"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedis"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gàmbia, dalasi"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, francs"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, quetzals"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guaiana, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Hondures, lempires"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croàcia, kuna"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haití, gourdes"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hongria, florins"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonèsia, rúpies"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, shekels"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Illa de Man, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Índia, rúpies"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraq, dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, rials"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Islàndia, corones"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordània, dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japò, iens"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kyrgyzstan, soms"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Cambòia, riels"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comoros, francs"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Corea (Nord), wons"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Corea (Sud), wons"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Illes Caiman, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakstan, tenges"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kips"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanesa, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, rúpies"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Libèria, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, malotis"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lituània, litais"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Letònia, latis"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Líbia, dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marroc, dirhams"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldàvia, leis"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedònia, dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), kiyats"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongòlia, tugrikis"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, pataques"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritània, ouguiyas"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Maurici, rúpies"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldives (Illes Maldives), rufiyaa"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwachas"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mèxic, pesos"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malàisia, ringgits"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Moçambic, meticais"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namíbia, dòl·lar"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigèria, nairas"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaràgua, or de Còrdoba"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Noruega, corona"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, rúpia del Nepal"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nova Zelanda, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rial"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panamà, balboa"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Perú, nous sols"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nova Guinea, kina"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipines, pesos"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Paquistan, rúpies"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguai, guaraní"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatari, rials"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania, leis"
+
+#
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, francs de ruanda"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Arabia Saudí, riyals"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Illes Salomó, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seixels, rúpies"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Suècia, corones"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Sta. Helena, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Eslovènia, tòlars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Eslovàquia, corones"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, leones"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, luiginis"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, guilders"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tomé i Príncipe, dobras"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, colons"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Síria, lliures"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swazilàndia, lilangeni"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tailàndia, bahts"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tajikistan, rúpies"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manats"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tuníssia, dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pa'anga"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turquia, lires"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinitat i Tobago, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, dòl·lar de tuvalu"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, nou dòl·lar"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ucraïna, hryvnia"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Estats Units d'Amèrica, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, pes"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, sums"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Veneçolà, bolívar"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, dong"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatu"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Carib Oriental, dòl·lars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Iemen, rials"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Iugoslàvia, nous dínars"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Sudàfricà, rands"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zàmbia, kwacha"
+
+# fitxer: src.ca.po.3
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, dòl·lar de Zimbabwe"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Cap"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Sòlid"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Ratlla"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Punt"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Ratlla punt"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Ratlla punt punt"
+
+# src/functions/fn-information.c:308 src/workbook-format-toolbar.c:649
+# fitxer: src.ca.po.12
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automàtica (%s)"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "cap"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "quadrat"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamant"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triangle abaix"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triangle amunt"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triangle a la dreta"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triangle a l'esquerra"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "cercle"
+
+# fitxer: plugins.ca.po.9
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "creu"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterisc"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "barra"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "mitja barra"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "papallona"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "Gris 75%"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "Gris 50%"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "Gris 25%"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "Gris 12.5%"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "Gris 6.25%"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Línia horitzontal"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Línia vertical"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Línia diagonal invertida"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Línia diagonal"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Línies creuades en diagonal"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Línies gruixudes creuades en diagonal"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Línia horitzontal prima"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Línia vertical prima"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Línia diagonal invertida prima"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Línia diagonal prima"
+
+# fitxer: src.ca.po.12
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Línies primes creuades en horitzontal"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Línies creuades en diagonal primes"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Sòlid en primer pla"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Cercles petits"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semicercles"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+# fitxer: src.ca.po.11
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Cercles grans"
+
+# fitxer: src.ca.po.11
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Maons"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etiquetes"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valors"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Barres d'error"
+
+# fitxer: src.ca.po.11
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "Traçat bar/col"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "So_breposa:"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Separació entre grups com a percentatge de l'amplada de barra/columna"
+
+#
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Buit:"
+
+#
+# fitxer: src.ca.po.11
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "Traçat línia"
+
+#
+# fitxer: src.ca.po.11
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "Traçat àrea"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Barres adjacents en 3D"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Columnes adjacents en 3D"
+
+#
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "Barres de percentatge en 3D"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Columnes de percentatge en 3D"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Barres apilades en 3D"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Columnes apilades en 3D"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Barres adjacents"
+
+# fitxer: src.ca.po.11
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Columnes adjacents"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Barres horitzontals en 3D adjacents agrupades per categories majors i menors."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Barres horitzontals adjacents agrupades per categories majors i menors."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Columnes verticals en 3D adjacents agrupades per categories majors i menors."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Columnes verticals adjacents agrupades per categories majors i menors."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Àrea"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Traçat d'àrees."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Àrees"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Barra"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Columna"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Línia"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Traçat de línia."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Línies"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categories menors apilades com a percentatges del total menor, en barres "
+"horitzontals en 3D, agrupades per categoria major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Categories menors apilades com a percentatges del total menor, en barres "
+"verticals en 3D, agrupades per categoria major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categories menors apilades com a percentatges del total menor, en barres "
+"horitzontals, agrupades per categoria major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Categories menors apilades com a percentatges del total menor, en barres "
+"verticals, agrupades per categoria major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Categories menors apilades en barres horitzontals en 3D, agrupades per "
+"categoria major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Categories menors apilades en barres horitzontals agrupades per categoria "
+"major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Categories menors apilades en columnes verticals en 3D, agrupades per "
+"categoria major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Categories menors apilades en columnes verticals agrupades per categoria "
+"major."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Àrees de percentatge"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Barres de percentatge"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Columnes de percentatges"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Línies de percentatge"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Traçat d'àrees de percentage."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Traçat de línies de pecentatge."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Àrees apilades"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Barres apilades"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Columnes apilades"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Línies apilades"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Traçat d'àrees apilades."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Traçat de línies apilades."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Línies no marcades"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Línies de percentatge no marcades"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Línies apilades no marcades"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Motor de traçador d'àrees"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Motor de traçador de bar/col"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Gràfic : barra/columna/línia/àrea"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Tipus de traçat 1.5d per defecte"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Motor de traçador de línia"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Traçats de línia, d'àrees, de barres i de columnes."
+
+#
+# fitxer: src.ca.po.9
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Traça"
+
+# fitxer: src.ca.po.4
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "El patró de cerca és invàlid."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#
+# fitxer: src.ca.po.9
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Traça"
+
+#
+# fitxer: src.ca.po.9
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Traça"
+
+#
+# fitxer: src.ca.po.9
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Traça"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Motor de traçador de bar/col"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Gràfic: traçats radials"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Tipus de traçat de superfície per defecte"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "Traçat de pastís"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "Traçat d'anells"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s punt %d\n"
+"Valor %g (%g)"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Graus en el sentit horari des de les 3 en punt"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Els trossos comencen _a:"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"La distància que cada tros se separa del centre mesurada com a percentatge "
+"del radi del pastís"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Separació del tros:"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Varia colors segons el tros"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "graus"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"La distància que aquest tros se separa del centre mesurada com a percentatge "
+"del radi del pastís"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separació:"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Mida del cen_tre"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Pastís en 3D"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Pastís separat en 3D"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Totals majors com a percentatges amb cada tros subdividit en pastissos "
+"secundaris."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Totals majors com a percentatges amb cada tros subdividit en barres apilades "
+"secundàries."
+
+#
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Pastís múltiple"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Barres pastís múltiple"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Percentatge de cada contribuïdor mostrat en un anell per a cada sèrie amb "
+"els trossos de l'últim anell separats."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Percentatge de cada contribuïdor mostrat en un anell per a cada sèrie."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Percentatge de cada contribuïdor en un pastís en 3D."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Percentatge de cada contribuïdor amb trossos en 3D separats a part."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Percentatge de cada contribuïdor amb trossos separats a part."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Percentatge de cada contribuïdor."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Pastís"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Anell"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Pastís separat"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Anell separat"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Gràfic: pastís/anell"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Tipus de pastís per defecte"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Traçats de pastís i d'anell"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Motor de traçador de pastissos"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Motor de traçador d'anells"
+
+#
+# fitxer: src.ca.po.10
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "Traçat radar"
+
+#
+# fitxer: src.ca.po.10
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "Traçat radar d'àrees"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Radar d'àrees"
+
+#
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Traçat de radar d'àrees"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Radar de punts"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Traçat de radar amb punts"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Traçat de radar."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Gràfic: traçats radials"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Tipus de traçat de radar per defecte"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Motor de traçador d'àrees de radar"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Motor de traçador de radar"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Traçats radials/de radar"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "Nombre de tro_ssos:"
+
+# fitxer: src.ca.po.10
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "Contorn del traçat"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Contorn"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Traçat de contorn."
+
+#
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Superfície"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Motor de traçador de contorn"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Gràfics de superfície"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Gràfics de superfície"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% de la mida predeterminada"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_D"
+
+#
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dià_metre"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Mostra els valors _negatius"
+
+#
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Super_fície"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Bombolles escalades a"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "Mida repre_sentada per:"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Varia colors segons la bombolla"
+
+#
+# fitxer: src.ca.po.10
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "Traçat XY"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "Traçat bombolla"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bombolla"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Barres d'error Y"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "Barres d'error X"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+"Interpola linealment entre punts multidimensionals, amb marques a cada punt."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:3
+#, fuzzy
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Interpola linealment entre punts multidimensionals, amb marques a cada punt."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Interpola linealment entre punts multidimensionals."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Marques a cada punt."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Punts multidimensionals amb cercle a cada punt."
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Traça X, Y i mida de la bombolla."
+
+# fitxer: src.ca.po.10
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Línies XY"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Punts XY"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Línies XY"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "Traçats en 2D"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "Motor de traçador dispers en 2D"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Motor de traçador de bombolles"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Gràfic: XY/dispers/bombolla"
+
+# fitxer: src.ca.po.10
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Tipus de traçat dispers per defecte"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/cs.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/cs.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/cs.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4200 @@
+# Gnumeric Czech translation
+# Copyright (c) 1999,2000,2001,2002 The Free Software Foundation
+# Copyright (C) 2003, 2004, 2005 Miloslav Trmac <mitr at volny.cz>
+# Petr Vyhnalek <petr.vyhnalek at email.cz>, 1999.
+# David Sauer <davids at penguin.cz>, 1999.
+# Partially based on Slovak translation by Stanislav Visnovsky <visnovsky at nenya.ms.mff.cuni.cz>, 2002.
+# Michal Bukovjan <bukm at centrum.cz>, 2002,2003.
+# Miloslav Trmac <mitr at volny.cz>, 2003, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-02-22 14:20+0100\n"
+"Last-Translator: Miloslav Trmac <mitr at volny.cz>\n"
+"Language-Team: Czech <cs at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr "Není platný název souboru v UTF-8."
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "Uložení přes staré soubory tohoto typu je kvůli bezpečnosti vypnuto."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Tuto bezpečnostní funkci lze vypnout úpravou odpovídajícího souboru plugin."
+"xml."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektivní"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Soubor obsahuje informace o zásuvném modulu s neplatným id (%s), očekáváno %"
+"s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Nelze přečíst informaci o zásuvném modulu ze souboru."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Neznámý název"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Nepodporovaný typ načítače \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Chyba při přípravě načítače \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Chyba při čtení informací o službě #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Není možné přečíst soubor s informací o zásuvném modulu (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Soubor \"%s\" není platný soubor s informací o zásuvném modulu."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Chyby při čtení služeb pro zásuvný modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Id zásuvného modulu obsahuje neplatné znaky (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Neznámý název zásuvného modulu."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Pro zásuvný modul s id=\"%s\" není definovaný načítač nebo má neplatné id."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Zásuvný modul nemá id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Chyba při inicializaci načítače modulu (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Zjištěna cyklická závislost mezi zásuvnými moduly."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Nelze aktivovat zásuvný modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Nelze nalézt zásuvný modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Chyba při aktivaci závislostí zásuvného modulu."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Chyba při aktivaci služby zásuvného modulu #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Chyba při deaktivaci služby zásuvného modulu #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Nelze načíst načítač zásuvného modulu."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Nelze načíst zásuvný modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Chyba při načítání závislostí zásuvného modulu."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Nastala chyba při načítání informací o zásuvném modulu se souboru \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Nelze aktivovat zásuvný modul \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Nelze deaktivovat zásuvný modul \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Chyby při čtení informací o dostupných zásuvných modulech."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Chyba při deaktivaci zásuvných modulů, které již nejsou na disku."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Následující zásuvné moduly již nejsou na disku, ale jsou stále aktivní:\n"
+"%s.\n"
+"Měli byste nyní restartovat aplikaci Gnumeric."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Chyby při aktivaci zásuvných modulů."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Chyby při inicializaci systému zásuvných modulů."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Načítač nemá metodu set_attributes.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Načítač nemá metodu load_base.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Služba '%s' není podporována l."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nezadaný název souboru s modulem."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Soubor s modulem \"%s\" nelze otevřít."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Soubor s modulem \"%s\" má neplatný formát."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Soubor neobsahuje (symbol \"plugin_file_struct\")."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Soubor má chybné magické číslo."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Verze modulu \"%s\" je jiná než verze aplikace \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamické načítání modulů není na tomto systému podporováno."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Nelze uzavřít soubor s modulem \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Soubor neobsahuje funkci \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modul neobsahuje funkci \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Chyba při načítání služby pro zásuvné moduly."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Inicializační funkce v zásuvném modulu vrátila chybu."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Čistící funkce v zásuvném modulu vrátila chybu."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Všeobecné"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Otvírač souborů nemá popis"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Otvírač souborů - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Chyba při čtení souboru."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Ukladač souborů s nemá popis"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Ukladač souborů - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Chyba při ukládání souboru."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Načítač zásuvných modulů"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Načítač GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Chybí atribut \"type\" v elementu \"service\"."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Neznámý typ služby: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Chyba při čtení informací o službě."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Před aktivací je nutné službu načíst (je nastaven PLUGIN_ALWAYS_LOAD), ale "
+"načítání selhalo."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "stran"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Odsazení:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Hledat"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Zarovnání"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Znak u_vozovek:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Velikost problému"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskrétní"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Diskrétní mapování"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Lineární"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Lineární mapování"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Logaritmické mapování"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Podrobnosti"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatické"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Kategorie mezi _značkami"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Kategorie mezi _titulky"
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategorie"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Hranice"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "H_lavní značky"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Ve_dlejší značky"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Napříč"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formát"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Titulek"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "VedlejšíMřížka"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "HlavníMřížka"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Hlavní značky</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mapování</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Vedlejší značky</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Umístění</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "Uv_nitÅ™"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Okolo"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Vysoko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_UvnitÅ™"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Invertovat osu"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "Ní_zko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Okolo"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Zobrazit jmenovky"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Typ:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Titulek"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Mřížka"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Osa X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Osa Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Osa Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Kruhová osa"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Radiální osa"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Graf"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "V"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Výška"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "Å "
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Šířka"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Sloupec chyby nezobrazován"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Zobrazován kladný sloupec chyby"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Zobrazován záporný sloupec chyby"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Zobrazován celý sloupec chyby"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Kategorie chyby</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Styl</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Hodnoty</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "_Barva:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "Z_obrazovat:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Žádné\n"
+"Absolutní\n"
+"Relativní\n"
+"Procenta"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "Šířka _čáry:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Šířka:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graf"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Graf"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Název"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Krok 1 ze 2: Vyberte typ grafu"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Krok 2 ze 2: Upravte graf"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Upravit graf"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Vlož_it"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "_Typ grafu"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Graf GNOME Office"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Táhnout v_před"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "_Vytáhnout dopředu"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "T_lačit vzad"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "_Zatlačit dozadu"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Řád"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definice</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Vzorek</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Styl</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Zobrazit\n"
+"ukázku"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Popis"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Text:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Řady"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Kreslicí engine"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Typ grafu"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Téma grafu"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Index:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Nastavení"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Hodnota"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d × %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Písmo"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Styl"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 barvy\n"
+"Jas"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Výplň</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Čára</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Označení</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Obrys</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "_Barva:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Žádné\n"
+"Vzorek\n"
+"Přechod\n"
+"Obrázek"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Barva _okraje:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Tvar:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Velikost:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "_Styl:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "_Typ:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Pozadí"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Směr:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Konec:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Barva vyplnění:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Přizpůsobit:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Popředí:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Vzorek:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Vybrat..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Velikost:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Počátek:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_jasnější"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_tmavší"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "bodů"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"roztažený\n"
+"tapeta"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Výchozí"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabské"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltské"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Středoevropské"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Čínské"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Azbuka"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Řecké"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebrejské"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indické"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japonské"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Korejské"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turecké"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamské"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Západní"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Jiné"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabské (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabské (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabské (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabské (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabské (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabské (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabské (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Arménské (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltské (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltské (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltské (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltské (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Středoevropské (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Středoevropské (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Středoevropské (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Středoevropské (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Zjednodušené čínské (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Zjednodušené čínské (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Zjednodušené čínské (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Zjednodušené čínské (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Zjednodušené čínské (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Tradiční čínské (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Tradiční čínské (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Tradiční čínské (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Chorvatské (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Azbuka (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Azbuka (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Azbuka (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Azbuka (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Azbuka (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Azbuka (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Ruské (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrajinské (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrajinské (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Anglické (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgian (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Řecké (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Řecké (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Řecké (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrejské (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebrejské (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebrejské (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrejské (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrejské (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindské (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandské (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japonské (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonské (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonské (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Korejské (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Korejské (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Korejské (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Korejské (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Severské (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumunské (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumunské (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Jihoevropské (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thajské (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turecké (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turecké (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turecké (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turecké (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Uživatelem definované"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamské (TVCN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamské (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamské (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamské (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Vizuální hebrejské (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Západní (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Západní (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Západní (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Západní (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Západní (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Směr konverze"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Tato hodnota určuje, který test iconv provádět."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "černá"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "světle hnědá"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "zlatohnědá"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "tmavě zelená #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "námořní modř"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "tmavě modrá"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "fialová #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "velice tmavě šedá"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "tmavě červená"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "červenooranžová"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "zlatá"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "tmavě zelená"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "matně modrá"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "modrá"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "matně fialová"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "tmavě šedá"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "červená"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "oranžová"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "citrusová"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "matně zelená"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "matně modrá #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "nebesky modrá #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "fialová"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "šedá"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "jasně oranžová"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "Žlutá"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "zelená"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "modrozelená"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "jasně modrá"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "červenofialová"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "světle šedá"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "růžová"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "světle oranžová"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "světle žlutá"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "světle zelená"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "světle modrozelená"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "světle modrá"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "světle fialová"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "bílá"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "modrá do fialova"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "tmavě fialová"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "nebesky modrá"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "vlastní"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Vlastní barva..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Typ stínu"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientace"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Preferovaná šířka"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Preferovaná výška"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Zadokovat lištu nástrojů"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Oddokovat lištu nástrojů"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Soubor '%s' nelze otevřít"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "VÅ¡echny soubory"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Obrázky"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Zvolte obrázek"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Uložit jako"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Typ souboru:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Zadaná přípona souboru neodpovídá vybranému typu souboru. Chcete přesto "
+"použít tento název souboru?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"je název adresáře"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Nemáte práva pro ukládaní do\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Soubor nazvaný <i>%s</i> již v %s existuje.\n"
+"\n"
+"Chcete jej přepsat?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normální"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Tučné"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Tučná kurzíva"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kurzíva"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr "AaÁáBbCcČčDdĎd12345"
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Styl písma:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Písmo:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Náhled"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Velikost:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Číslo"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Měna"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Účetnictví"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Datum"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "ÄŒas"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Procenta"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Zlomek"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Vědecké"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Text"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Speciální"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Vlastní"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Formát záporného čísla"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formáty čísla"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "_Kategorie:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Počet desetinných _míst:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Zobrazovat částky v tradičních účetních stylech."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Zobrazovat a vkládat hodnoty jako řetězce bez interpretace."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Zobrazovat finanční částky."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Zobrazovat data a volitelně čas."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Zobrazovat číselné hodnoty s pevným počtem desetinných míst."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Zobrazovat časy."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Zobrazovat hodnoty jako nejbližší finanční aproximaci."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Zobrazovat hodnotu jako procenta."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Zobrazovat hodnoty s posunem v mocninách deseti."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "_Kód formátu:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Formát zá_porného čísla:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Náhled:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "_Symbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Automaticky vybrat vhodný formát."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Přímo určit formát stylu XL"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formát:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Po_užívat oddělovač pro tisíce"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Západní Evropa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Východní Evropa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Severní Amerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Jižní a střední Amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Ásie"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Austrálie"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Spojené státy americké/angličtina (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Jižní Afrika Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopie/amharic (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Spojené Arabské Emiráty (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrajn (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Alžírsko (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypt (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Indie/arabština (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irák (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordánsko (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuvajt (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libye (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Maroko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Omán (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Katar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saúdská Arábie (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Súdán (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Sýrie (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisko (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Ázerbájdžán (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Bělorusko (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulharsko (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladéš (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Indie/bengálština (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Francie/bretonština (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosna a Hercegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Španělsko/katalánština (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Česká republika (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Velká Británie/Velština (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dánsko (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Rakousko (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgie/němčina (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Švýcarsko/němčina (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Německo (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Lucembursko/němčina (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Řecko (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Austrálie (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/angličtina (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Velká Británie (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/angličtina (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irsko (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Indie/angličtina (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nový Zéland (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipíny (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/angličtina (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Spojené státy americké/angličtina (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Jižní Afrika/angličtina (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolívie (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "ÄŒile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbie (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Kostarika (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikánská republika (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ekvádor (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Španělsko (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexiko (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nikaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Portoriko (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Spojené státy americké/španělština (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonsko (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Španělsko/baskičtina (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Írán (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finsko/finština (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Faerské ostrovy (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgie/Francouzština (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/francouzština (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Švýcarsko/francouzština (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Francie (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irsko/galština (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Velká Británie/Skotská galština (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Španělsko/Galičtina (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Velká Británie/Manština (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Indie/Hindština (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Chorvatsko (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Maďarsko (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Arménie (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonésie (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Švýcarsko/italština (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Itálie (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Izrael/Hebrejština (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japonsko (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grónsko (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Velká Británie/cornwallština (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litva (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Lotyšsko (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nový Zéland/maorština (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedonština (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Indie/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malajsie (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgie/vlámština (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Nizozemsko (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norsko/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norsko/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Francie/occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polsko (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazílie (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugalsko (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumunsko (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rusko (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukrajina/ruština (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norsko/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovensko (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovinsko (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albánie (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslávie (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finsko/švédština (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Švédsko (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Indie/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Indie/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadžikistán (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thajsko (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopie/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipíny/tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turecko (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rusko/tataršina (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukrajina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pákistán (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistán (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgie/valonština (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Spojené státy americké/yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Čína (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/čínština (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/čínština (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Aktuální locale: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Menu možností"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Velikost indikátoru"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Velikost indikátoru rozbalení"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Výplň indikátoru"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Výplň kolem indikátoru"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Ned"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Pon"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Úte"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Str"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*ÄŒtv"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Pát"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sob"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Neděle"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Pondělí"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Úterý"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Středa"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "ÄŒtvrtek"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Pátek"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sobota"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Led"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Úno"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Bře"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Dub"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*KvÄ›"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*ÄŒen"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*ÄŒec"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Srp"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Zář"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Říj"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Lis"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Pro"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Leden"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Únor"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Březen"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Duben"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Květen"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "ÄŒerven"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "ÄŒervenec"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Srpen"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Září"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Říjen"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Listopad"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Prosinec"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Černá"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Modrá"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Modrozelená"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Zelená"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Fialová"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Červená"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Bílá"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Žlutá"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Spojené Arabské Emiráty, Dirhamy"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghánistán, Afghanis"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albánie, Lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Arménie, Dramy"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Nizozemské Antily, Guldeny"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, Peseta"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Austrálie, Dolary"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Guldeny"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Ázerbájdžán, Manaty"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosna a Hercegovina, Směnitelná marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dolary"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladéš, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulharsko, Leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrajn, Dináry"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Franky"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermudy, Dolary"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunej Darussalam, Dolary"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolívie, Bolivianos"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazílie, Brazilský real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamy, Dolary"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhútán, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, Pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Bělorusko, Rubly"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dolary"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, Dolary"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongo/Kinshasa, Konžské franky"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Švýcarsko, Franky"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "ÄŒile, Peseta"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Čína, Juan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbie, Peseta"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Kostarika, Kolony"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, Peseta"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde, Escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Kypr, Libra"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Česká republika, Koruny"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Džibuti, Franky"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Dánsko, Koruny"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikánská republika, Peseta"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Alžírsko, Alžírské dináry"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonsko, Koruny"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypt, Libry"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopie, Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Evropské členské země, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fidži, Dolary"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falklandské ostrovy, Libry"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Spojené království, Libry"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgie, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, Libry"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, Cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, Libry"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambie, Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, Franky"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, Quetzaly"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guajana, Dolary"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, Dolary"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Chorvatsko, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, Gourdy"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Maďarsko, Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonésie, Rupie"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Izrael, Nový šekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, Libry"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Indie, Rupie"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irák, Dináry"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Írán, Rialy"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, Koruny"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Libry"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamajka, Dolary"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordánsko, Dináry"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japonsko, Jeny"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Keňa, Šilinky"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kyrgyzstán, Somy"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodža, Riely"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komory, Franky"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (severní), Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (jižní), Wony"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuvajt, Dináry"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kajmanské ostrovy, Dolary"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazachstán, Tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kipy"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanon, Libry"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Srí Lanka, Rupie"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Libérie, Dolary"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, Maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litva, Litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Lotyšsko, Lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libye, Dináry"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Maroko, Dirhamy"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldávie, Lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, Franky"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedonie, Denáry"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), Kyaty"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolsko, Tugriky"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, Patacas"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauretánie, Ouguiya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, Liry"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, Rupie"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maledivy (Maledivské ostrovy), Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, Kwachas"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexiko, Peseta"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malajsie, Ringgity"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambik, Meticaly"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibie, Dolary"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigérie, Nairas"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nikaragua, Zlaté cordoby"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norsko, Koruny"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepál, Nepálské rupie"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nový Zéland, Dolary"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Omán, Rialy"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, Balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, Nuevos Soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nová Guinea, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipíny, Peseta"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pákistán, Rupie"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polsko, Zloté"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Katar, Rialy"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumunsko, Lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rusko, Rubly"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, Rwandské franky"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saúdská Arábie, Riyaly"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomonské ostrovy, Dolary"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seyšely, Rupie"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Súdán, Dináry"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Švédsko, Kronor"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, Dolary"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Ostrov sv. Heleny, Libry"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovinsko, Tolary"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovensko, Koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, Leones"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somálsko, Šilink"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, Guldeny"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome a Principe, Dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Kolony"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Sýrie, Libry"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Svahilsko, Emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thajsko, Bahty"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadžikistán, Rubly"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistán, Manaty"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisko, Dináry"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turecko, Liry"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad a Tobago, Dolary"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Tuvalské dolary"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, Nové dolary"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzanie, Å ilinky"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrajina, Hřivna"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Å ilinky"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Spojené státy americké, Dolary"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, Peseta"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistán, Sumy"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, Bolivares"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, Franky"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Stříbro, Unce"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Zlato, Unce"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Východokaribské dolary"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Zvláštní čerpací práva Mezinárodního měnového fondu (MMF)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Franky"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Paladium, Unce"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique, Franky"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platina, Unce"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen, Rialy"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslávie, Nové dináry"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Jižní Afrika, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambie, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, Zimbabwské dolary"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Nic"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Plné"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Čárka"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Tečka"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Čárka tečka"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Čárka tečka tečka"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatické (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "nic"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "čtverec"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "kosočtverec"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "trojúhelník dolů"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "trojúhelník nahoru"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "trojúhelník doprav"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "trojúhelník doleva"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "kruh"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "křížek"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "hvězdička"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "sloupec"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "poloviční sloupec"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "motýl"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "přesýpací hodiny"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% šedé"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% šedé"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% šedé"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12,5% šedé"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6,25% šedé"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horizontální pruhy"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Vertikální pruhy"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Opačné diagonální pruhy"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonální pruhy"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonální křížové šrafování"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Tučné diagonální křížové šrafování"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tenké horizontální pruhy"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tenké vertikální pruhy"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tenké opačné diagonální pruhy"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tenké diagonální pruhy"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tenké horizontální křížové šrafování"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tenké diagonální křížové šrafování"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Plná barva popředí"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Malé kruhy"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Půlkruhy"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Došky"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Velké kruhy"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Cihly"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Titulky"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Hodnoty"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Sloupce chyby"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "SloupecSloucovéhoGrafu"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Jak moc se pruhy/sloupce překrývají jako procenta šířky"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "_Překrytí:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Oddělení mezi skupinami jako procenta šířky pruhu/sloupce"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Mezera:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "ČárovýGraf"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "PlošnýGraf"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D sousedící pruhy"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3E sousedící sloupce"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D pruhy procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D sloupce procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D pruhy vedle sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D sloupce nad sebou"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Sousedící pruhy"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Sousedící sloupce"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Sousedící vodorovné 3D pruhy seskupené podle hlavních a vedlejších kategorií."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Sousedící vodorovné pruhy seskupené podle hlavních a vedlejších kategorií."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Sousedící svislé 3D sloupce seskupené podle hlavních a vedlejších kategorií."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Sousedící svislé sloupce seskupené podle hlavních a vedlejších kategorií."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Plocha"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Plošný graf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Plochy"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Pruh"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Sloupec"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Čára"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Čárový graf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Čáry"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako procenta vedlejšího součtu, v 3D vodorovných "
+"pruzích, seskupené podle hlavní kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako procenta vedlejšího součtu, v 3D svislých "
+"sloupcích, seskupené podle hlavní kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako procenta vedlejšího součtu, ve vodorovných "
+"pruzích, seskupené podle hlavní kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako procenta vedlejšího součtu, ve svislých "
+"sloupcích, seskupené podle hlavní kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako vodorovné 3D pruhy, seskupené podle hlavní "
+"kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako vodorovné pruhy, seskupené podle hlavní "
+"kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako svislé 3D sloupce, seskupené podle hlavní "
+"kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Vedlejší kategorie rovnané jako svislé sloupce, seskupené podle hlavní "
+"kategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Oblasti procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Pruhy procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Sloupce procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Čáry procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Plošný graf procent."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Čárový graf procent."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Oblasti nad sebou"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Pruhy vedle sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Sloupce nad sebou"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Čáry nad sebou"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Graf ploch nad sebou."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Graf čas nad sebou."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Neoznačené čáry"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Neoznačené čáry procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Neoznačené čáry nad sebou"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Engine kreslení oblastí"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Engine kreslení pruhů/sloupců"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Kreslení grafů: pruh/sloup/čáry/oblast"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Implicitní typy grafů 1.5d"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Engine kreslení čar"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Čárové, plošné, pruhové a sloupcové grafy"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Graf"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr "Neplatná data."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Graf"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Graf"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Graf"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Engine kreslení pruhů/sloupců"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Kreslení grafů : Kruhové grafy"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Implicitní typy radarových grafů"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "KoláčovýGraf"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "PlotRing"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s bod %d\n"
+"Hodnota %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Čítač stupňů po směru hodinových ručiček od 3 hodin"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Dílky začínají _na:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"Implicitní velikost, kterou je každý dílek oddělen od středu, měřená jako "
+"procenta poloměru koláče"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Oddělení dílů:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Měnit barvy podle dílu"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "stupňů"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Velikost, kterou je tento dílek oddělen od středu, měřená jako procenta "
+"poloměru koláče"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Oddělení:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Velikost _středu:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D rozdělený koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Hlavní součty jako procenta s každým dílem rozděleným do sekundárních koláčů."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Hlavní součty jako procenta s každým dílem rozděleným do sekundárních pruhů "
+"nad sebou."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Více-koláčů"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Více-koláčů-a-pruhů"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Procenta každého přispěvatele zobrazovaná v prstenci pro každou sérii s díly "
+"posledního prstence oddělenými."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Procenta každého přispěvatele zobrazovaná v prstenci pro každou sérii."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Procenta každého přispěvatele v 3D koláči."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Procenta každého přispěvatele v oddělených 3D dílech."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Procenta každého přispěvatele v oddělených dílech."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Procenta každého přispěvatele."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Prstenec"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Rozdělený koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Rozdělený prstenec"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Kreslení grafů : Koláč/prstenec"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Výchozí typ koláče"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Koláčové a prstencové grafy"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Engine kreslení koláčů"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Engine kreslení prstenců"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "RadarovýGraf"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "OblastRadarovéhoGrafu"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Plošný radarový"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Plošný radarový graf."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Bodový radarový"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radarový"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Radarový graf s body."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radarový graf."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Kreslení grafů : Kruhové grafy"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Implicitní typy radarových grafů"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Engine kreslení oblastí radaru"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Engine kreslení radarů"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Kruhové/radarové grafy"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "_Dílky číslo:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Počet"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Plošný graf."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Povrch"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Engine kreslení prstenců"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Z_drojové oblasti:"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Z_drojové oblasti:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% normální velikosti"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "_Průměr"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Zobrazovat _záporné hodnoty"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "_Povrch"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Měřítko bublin změněno na"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Velikost je reprezentována pomocí:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Měnit barvy podle bubliny"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "GrafXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "GrafBublina"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bublina"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Sloupce chyby Y"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "Sloupce chyby X"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpolovat mezi vícerozměrnými body Beziérovými spliny."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Lineárně interpolovat mezi vícerozměrnými body s označeními v každém bodě."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Lineárně interpolovat mezi vícerozměrnými body."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Značky v každém bodě."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Vícerozměrné body s kroužkem v každém bodě."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Kreslit X, Y a velikost bubliny."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Čáry XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Body XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+msgid "XY Splines"
+msgstr "Spliny XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D grafy"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+#, fuzzy
+msgid "2D scatter plotting engine"
+msgstr "Engine kreslení koláčů"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Engine kreslení bublin"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/da.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/da.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/da.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4594 @@
+# Danish translation of Gnumeric.
+# Copyright (C) 1999-2001 Free Software Foundation, Inc.
+# Jan Normann Nielsen <normann at diku.dk>, 1999.
+# Kenneth Christiansen <kenneth at ripen.dk>, 1999-2000.
+# Birger Langkjer <birger.langkjer at image.dk>, 1999.
+# Keld Simonsen <keld at dkuug.dk>, 2000-2002.
+# Morten Welinder <terra at diku.dk>, 2000-2001.
+# Ole Laursen <olau at hardworking.dk>, 2001.
+#
+# Kontakt dansk at klid.dk før du ændrer i denne fil.
+#
+# Læs README - vigtigt!
+#
+# BEMÆRK at tekster fra 'command.c' skal oversættes med navneord og ikke
+# - direkte fra engelsk - med verber da de indgår som
+#
+#   fortryd/gentag: 'handlingstekst'
+#
+#
+# Konventioner:
+#
+# sheet -> ark
+# workbook -> arbejdsbog
+# evaluate -> finde værdien af
+# range -> interval, (dog til tider) omfang
+# plugin -> [udvidelses]modul (indstik el. lign. bliver for kryptisk)
+# constraint -> begrænsning (fx "x < 10")
+# truncate -> afkorte (fx 2.79 -> 2)
+# validate -> gyldighedskontrol
+# array -> matrix, vektor
+# custom -> selvvalgt, brugerdefineret (afhængig af sammenhæng)
+# paste special -> avanceret indsætning
+# df (degree freedom) -> fg (frihedsgrader)
+# formulae/formulas -> formler (ikke "formularer", altså "blanketter")
+#
+# Formater og formatér er med ét 't'. Eksemplerne under tekstrutinerne
+# er danskificerede. Den mærkelige mani med at sætte et mellemrum foran
+# kolon (som i "Cell :") er ikke bevaret i oversættelserne.
+#
+# Læg mærke til de omkringstående tekster, især i forbindelse med
+# hjælpeteksterne til de indbyggede funktioner i Gnumeric, f.eks. bruges
+#
+#   equals -> er lig med
+#
+# i stedet for f.eks. blot "lig" eller "lig med" eller "er lig".
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 0.71\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2002-01-16 11:31+0100\n"
+"Last-Translator: Keld Simonsen <keld at dkuug.dk>\n"
+"Language-Team: Danish <dansk at klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.5\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Overskrivelse af gamle filer af denne type er deaktiveret af "
+"sikkerhedsgrunde."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Du kan slå denne sikkerhedsfacilitet fra ved at redigere de tilsvarende "
+"plugin.xml-filer"
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "MÃ¥l"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, fuzzy, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "Fil indeholder modelinfo med ugyldigt id (%s), forventede %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Kunne ikke læse modulinfo fra fil."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Ukendt navn"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Ikke-understøttet indlæsertype \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Fejl ved forberedelse af indlæseren \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Fejl ved læsning af oplysninger om tjeneste nr. %d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Kan ikke læse modulinfofil (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Filen \"%s\" er ikke en gyldig modulinfofil."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Fejl ved læsning af tjenester for udvidelsesmodulet med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Ukendt udvidelsesmodulnavn."
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Ingen indlæser defineret for udvidelsesmodulet med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Udvidelsesmodulet har ingen id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Fejl ved klargøring af udvidelsesmodulindlæser (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Fejl ved indlæsning af modulafhængigheder."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Kunne ikke aktivere udvidelsesmodul \"%s\" (id: %s)."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Ingen indlæser defineret for udvidelsesmodulet med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Fejl ved indlæsning af modulafhængigheder."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Fejl ved aktivering udvidelsesmodultjeneste nr. %d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Fejl ved deaktivering af udvidelsesmodultjeneste nr. %d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Kan ikke indlæse udvidelsesmodulindlæser."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Ingen indlæser defineret for udvidelsesmodulet med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Fejl ved indlæsning af modulafhængigheder."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Der opstod fejl ved læsning af udvidelsesmoduloplysninger fra filen \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikke aktivere udvidelsesmodul \"%s\" (id: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikke deaktivere udvidelsesmodul \"%s\" (id: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Fejl ved læsning af oplysninger om tilgængelige udvidelsesmoduler."
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Fejl ved deaktivering af udvidelsesmodultjeneste nr. %d."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Fejl ved aktivering af udvidelsesmoduler."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Fejl ved klargøring af udvidelsesmodulsystemet."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Tjeneste ikke understøttet af indlæser."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Navn på modulfil ikke angivet."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Kan ikke åbne modulfilen \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Modulfilen \"%s\" har et ugyldigt format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Filen indeholder ikke \"plugin_fil_struct\"-symbolet."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Filen indeholder et ugyldigt magisk tal."
+
+# passer med kildekoden
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Modulversionen \"%s\" er forskellig fra programmets \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamisk modulindlæsning er ikke understøttet på dette system."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Kan ikke lukke modulfilen \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Filen indeholder ikke en \"%s\"-funktion."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modulet indeholder ikke en \"%s\"-funktion."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Fejl ved indlæsning af udvidelsesmodultjeneste."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Klargøringsfunktionen i udvidelsesmodulet meldte en fejl."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Oprydningsfunktionen i udvidelsesmodulet meldte en fejl."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Generelt"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Filåbner med id=\"%s\" har ingen beskrivelse"
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "Filåbner har ingen id"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Fejl ved læsning af fil."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Filgemmer med id=\"%s\" har ingen beskrivelse"
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Filgemmer har ingen id"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Fejl ved gemning af fil."
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Python-udvidelsesmodulindlæser"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Værdi af mål"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Ukendt ark '%s'"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Fejl ved læsning af oplysninger om tjeneste nr. %d."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "sider"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indryk"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Søg efter"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Justering"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Anførselstegn:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Linje"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logisk"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "_Skjul detaljer"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatisk"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategori"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Baggrund"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_inimal værdi"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Maks"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "_Luk"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etiket"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "fredag"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "fredag"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Mønster"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Eksempel"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Mønster"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Eksempel"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Indvendig"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Omrids"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "Hø_jde..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Indvendig"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Indsæt"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Række"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Omrids"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Mærkater"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Faldende"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Titel"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "fredag"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "_Plot"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "Hø_jde..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "_Med:"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Fejlbesked"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Eksempel"
+
+# stikprøve kolliderer med at det bruges i betydningen "et eksempel"
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Prøve"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Farve:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Linjebredde"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Med:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "_Graf..."
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "Graf%d"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Navn"
+
+# vist graf snarere end grafik
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Trin 1 af 3: Vælg graftype"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Trin 3 af 3: Tilpas grafen"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Tilpas sidehoved"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Indsæt"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Plottenavn"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "_Omrokér..."
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Orientering"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Mønster"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Eksempel"
+
+# stikprøve kolliderer med at det bruges i betydningen "et eksempel"
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Prøve"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Beskrivelse"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "Te_kst"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_Data"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "_Serier"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Plottenavn"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Plottenavn"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Indryk"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Tekster"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Point"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dLx%dK"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Skrifttype"
+
+#: goffice/graph/gog-style.c:966
+#, fuzzy
+msgid "Style"
+msgstr "_Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Eksempel"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Eksempel"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Mønster"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Eksempel"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Farve:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Omridsfarve"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "Virkefelt: "
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Størrelse:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "_Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Baggrund"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Katalog"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "Slut"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Udfyldningsfarve"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "_Tilpas til:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Forgrund"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Mønster"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_Markér"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Størrelse:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "_Sortér"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "_Højre"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "Matrix"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pkt"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+#, fuzzy
+msgid "Default"
+msgstr "Slet"
+
+# udsagnsord
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "Gruppér"
+
+#: goffice/gtk/go-charmap-sel.c:74
+#, fuzzy
+msgid "Arabic"
+msgstr "Areal %i"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "Kursiv"
+
+#: goffice/gtk/go-charmap-sel.c:76
+#, fuzzy
+msgid "Central European"
+msgstr "Centrér på side"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "grøn"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "_Middel:"
+
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "Japanske yen"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Boolsk"
+
+#: goffice/gtk/go-charmap-sel.c:84
+#, fuzzy
+msgid "Turkish"
+msgstr "Tyrkiske lire"
+
+#: goffice/gtk/go-charmap-sel.c:85
+#, fuzzy
+msgid "Unicode"
+msgstr "_Vis igen"
+
+#: goffice/gtk/go-charmap-sel.c:86
+#, fuzzy
+msgid "Vietnamese"
+msgstr "Omdøb ark"
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "vest"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "oktober"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Understregning"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "Logisk"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Korrelation"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "sort"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "mandag"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "Interval"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "Fed"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Celleværdi"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "blå"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "Matrix"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "rød"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "Interval"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "tid"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "Matrix"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "lilla"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "gul"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "grøn"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "Redigér udtryk"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Højrejustér"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Højrejustér"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Højrejustér"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "hvid"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "Værdi"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "Tilpasset"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Tilpas sidefod"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Skygge"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Orientering"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Kopiér det markerede til klippebordet"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "kan ikke åbne filen '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "_Fil"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "_Gem..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Markér en hel kolonne"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Gem"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "_Fil"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"er navnet på et katalog"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Du har ikke rettighed til at gemme som\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Arbejdsbogen %s eksisterer allerede.\n"
+"Vil du gemme oven i den?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Fed"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Fed kursiv"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kursiv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Skriftstil:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Skrift:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Eksempel"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Størrelse:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Tal"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "_Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "_Bogføring"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Dato"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Tid"
+
+#: goffice/gtk/go-format-sel.c:80
+#, fuzzy
+msgid "Percentage"
+msgstr "_Procentdel"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "_Brøk"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "_Videnskabelig"
+
+#: goffice/gtk/go-format-sel.c:83
+#, fuzzy
+msgid "Text"
+msgstr "Te_kst"
+
+# specielle giver et forkert indtryk
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "_Andet"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Tilpasset"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Negativt tal:"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "Anvend _talformater"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Kategori:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Antal deci_maler:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "Europæisk valutaenhed"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Vis _omridsgrupper"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Vis værdien præcis som den blev indtastet"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Negativt tal:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Eksempel"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Benyt adskillelse mellem 1000'er"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "vest"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "Centrér på side"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "Generelt"
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "Areal %i"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "Australske dollar"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sydafrikanske rand"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrainske dinar"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "Jordanske dinarer"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwaitiske dinarer"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "Libyske dinarer"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi Arabiske riyal"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "Tunesiske dinarer"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Hviderussiske rubler"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgarske lev"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladeshiske taka"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tjekkiske koruna"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+#, fuzzy
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourgske franc"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealand-dollar"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "Filippinske peso"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "Sydafrikanske rand"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Argentinske peso"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Chilenske peso"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Colombianske peso"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Ricanske colon"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikanske peso"
+
+#: goffice/gtk/go-locale-sel.c:164
+#, fuzzy
+msgid "Ecuador (es_EC)"
+msgstr "Ecuadorianske sucre"
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Stikprøveudtagning"
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "Guatemalanske quetzal"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "Honduranske lempira"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "Mexicanske peso"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+#, fuzzy
+msgid "El Salvador (es_SV)"
+msgstr "El Salvadoranske colon"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "Uruguayanske peso"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "Venezuelanske bolivar"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Stikprøveudtagning"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "Indonesiske rupiah"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+#, fuzzy
+msgid "The Netherlands (nl_NL)"
+msgstr "Hollandske gylden"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "Slovenske tolar"
+
+#: goffice/gtk/go-locale-sel.c:227
+#, fuzzy
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenske tolar"
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Albanske lek"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "Ny jugoslaviske dinarer"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "Pakistanske rupier"
+
+#: goffice/gtk/go-locale-sel.c:235
+#, fuzzy
+msgid "Thailand (th_TH)"
+msgstr "Thailandske baht"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistanske rupier"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Aktuel værdi:"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "_Middel:"
+
+#: goffice/gtk/go-optionmenu.c:198
+#, fuzzy
+msgid "The menu of options"
+msgstr "OAF-indstillinger"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Intern FEJL"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*søn"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*man"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*tir"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*ons"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*tor"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*fre"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*lør"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "søndag"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "mandag"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "tirsdag"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "onsdag"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "torsdag"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "fredag"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "lørdag"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*maj"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "januar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "februar"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "marts"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "april"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "maj"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "juni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "juli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "august"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "september"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "november"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "december"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+# RETMIG: er dette rigtigt?
+#: goffice/utils/format.c:757
+#, fuzzy
+msgid "Black"
+msgstr "Slækkelse"
+
+#: goffice/utils/format.c:758
+#, fuzzy
+msgid "Blue"
+msgstr "blå"
+
+#: goffice/utils/format.c:759
+#, fuzzy
+msgid "Cyan"
+msgstr "cyan"
+
+#: goffice/utils/format.c:760
+#, fuzzy
+msgid "Green"
+msgstr "grøn"
+
+#: goffice/utils/format.c:761
+#, fuzzy
+msgid "Magenta"
+msgstr "lilla"
+
+#: goffice/utils/format.c:762
+#, fuzzy
+msgid "Red"
+msgstr "Gentag"
+
+#: goffice/utils/format.c:763
+#, fuzzy
+msgid "White"
+msgstr "hvid"
+
+#: goffice/utils/format.c:764
+#, fuzzy
+msgid "Yellow"
+msgstr "gul"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+#, fuzzy
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanske afghani"
+
+#: goffice/utils/formats.c:391
+#, fuzzy
+msgid "Albania, Leke"
+msgstr "Albanske lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+#, fuzzy
+msgid "Netherlands Antilles, Guilders"
+msgstr "Hollandsk-antilske gylden"
+
+#: goffice/utils/formats.c:394
+#, fuzzy
+msgid "Angola, Kwanza"
+msgstr "Angolanske nye kwanza"
+
+#: goffice/utils/formats.c:395
+#, fuzzy
+msgid "Argentina, Pesos"
+msgstr "Argentinske peso"
+
+#: goffice/utils/formats.c:396
+#, fuzzy
+msgid "Australia, Dollars"
+msgstr "Australske dollar"
+
+#: goffice/utils/formats.c:397
+#, fuzzy
+msgid "Aruba, Guilders"
+msgstr "Arubanske gylden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+#, fuzzy
+msgid "Barbados, Dollars"
+msgstr "Barbados-dollar"
+
+#: goffice/utils/formats.c:401
+#, fuzzy
+msgid "Bangladesh, Taka"
+msgstr "Bangladeshiske taka"
+
+#: goffice/utils/formats.c:402
+#, fuzzy
+msgid "Bulgaria, Leva"
+msgstr "Bulgarske lev"
+
+#: goffice/utils/formats.c:403
+#, fuzzy
+msgid "Bahrain, Dinars"
+msgstr "Bahrainske dinar"
+
+#: goffice/utils/formats.c:404
+#, fuzzy
+msgid "Burundi, Francs"
+msgstr "Burundi-franc"
+
+#: goffice/utils/formats.c:405
+#, fuzzy
+msgid "Bermuda, Dollars"
+msgstr "Bermuda-dollar"
+
+#: goffice/utils/formats.c:406
+#, fuzzy
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei-dollar"
+
+#: goffice/utils/formats.c:407
+#, fuzzy
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivianske boliviano"
+
+#: goffice/utils/formats.c:408
+#, fuzzy
+msgid "Brazil, Brazil Real"
+msgstr "Brasilianske real"
+
+#: goffice/utils/formats.c:409
+#, fuzzy
+msgid "Bahamas, Dollars"
+msgstr "Bahamanske dollar"
+
+#: goffice/utils/formats.c:410
+#, fuzzy
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan ngultrum"
+
+#: goffice/utils/formats.c:411
+#, fuzzy
+msgid "Botswana, Pulas"
+msgstr "Botswanske pula"
+
+#: goffice/utils/formats.c:412
+#, fuzzy
+msgid "Belarus, Rubles"
+msgstr "Hviderussiske rubler"
+
+#: goffice/utils/formats.c:413
+#, fuzzy
+msgid "Belize, Dollars"
+msgstr "Belize-dollar"
+
+#: goffice/utils/formats.c:414
+#, fuzzy
+msgid "Canada, Dollars"
+msgstr "Canadiske dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+#, fuzzy
+msgid "Chile, Pesos"
+msgstr "Chilenske peso"
+
+#: goffice/utils/formats.c:418
+#, fuzzy
+msgid "China, Yuan Renminbi"
+msgstr "Kinesiske juan renminbi"
+
+#: goffice/utils/formats.c:419
+#, fuzzy
+msgid "Colombia, Pesos"
+msgstr "Colombianske peso"
+
+#: goffice/utils/formats.c:420
+#, fuzzy
+msgid "Costa Rica, Colones"
+msgstr "Costa Ricanske colon"
+
+#: goffice/utils/formats.c:421
+#, fuzzy
+msgid "Cuba, Pesos"
+msgstr "Cubanske peso"
+
+#: goffice/utils/formats.c:422
+#, fuzzy
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde-escudo"
+
+#: goffice/utils/formats.c:423
+#, fuzzy
+msgid "Cyprus, Pounds"
+msgstr "Cypriotiske pund"
+
+#: goffice/utils/formats.c:424
+#, fuzzy
+msgid "Czech Republic, Koruny"
+msgstr "Tjekkiske koruna"
+
+#: goffice/utils/formats.c:425
+#, fuzzy
+msgid "Djibouti, Francs"
+msgstr "Djibouti-franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+#, fuzzy
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikanske peso"
+
+#: goffice/utils/formats.c:428
+#, fuzzy
+msgid "Algeria, Algeria Dinars"
+msgstr "Algeriske dinar"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+#, fuzzy
+msgid "Egypt, Pounds"
+msgstr "Egyptiske pund"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+#, fuzzy
+msgid "Ethiopia, Birr"
+msgstr "Etiopiske birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+#, fuzzy
+msgid "Fiji, Dollars"
+msgstr "Fiji dollar"
+
+#: goffice/utils/formats.c:435
+#, fuzzy
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland-øernes pund"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+#, fuzzy
+msgid "Guernsey, Pounds"
+msgstr "Sudanesiske pund"
+
+#: goffice/utils/formats.c:439
+#, fuzzy
+msgid "Ghana, Cedis"
+msgstr "Ghanesiske cedi"
+
+#: goffice/utils/formats.c:440
+#, fuzzy
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar-pund"
+
+#: goffice/utils/formats.c:441
+#, fuzzy
+msgid "Gambia, Dalasi"
+msgstr "Gambiske dalasi"
+
+#: goffice/utils/formats.c:442
+#, fuzzy
+msgid "Guinea, Francs"
+msgstr "Guinea-franc"
+
+#: goffice/utils/formats.c:443
+#, fuzzy
+msgid "Guatemala, Quetzales"
+msgstr "Guatemalanske quetzal"
+
+#: goffice/utils/formats.c:444
+#, fuzzy
+msgid "Guyana, Dollars"
+msgstr "Guyananske dollar"
+
+#: goffice/utils/formats.c:445
+#, fuzzy
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong-dollar"
+
+#: goffice/utils/formats.c:446
+#, fuzzy
+msgid "Honduras, Lempiras"
+msgstr "Honduranske lempira"
+
+#: goffice/utils/formats.c:447
+#, fuzzy
+msgid "Croatia, Kuna"
+msgstr "Kroatiske kuna"
+
+#: goffice/utils/formats.c:448
+#, fuzzy
+msgid "Haiti, Gourdes"
+msgstr "Haitianske gourde"
+
+#: goffice/utils/formats.c:449
+#, fuzzy
+msgid "Hungary, Forint"
+msgstr "Ungarske forint"
+
+#: goffice/utils/formats.c:450
+#, fuzzy
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesiske rupiah"
+
+#: goffice/utils/formats.c:451
+#, fuzzy
+msgid "Israel, New Shekels"
+msgstr "Israelske shekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+#, fuzzy
+msgid "India, Rupees"
+msgstr "Indiske rupier"
+
+#: goffice/utils/formats.c:454
+#, fuzzy
+msgid "Iraq, Dinars"
+msgstr "Irakiske dinarer"
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "Iranske rial"
+
+#: goffice/utils/formats.c:456
+#, fuzzy
+msgid "Iceland, Kronur"
+msgstr "Islandske kroner"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+#, fuzzy
+msgid "Jamaica, Dollars"
+msgstr "Jamaicanske dollar"
+
+#: goffice/utils/formats.c:459
+#, fuzzy
+msgid "Jordan, Dinars"
+msgstr "Jordanske dinarer"
+
+#: goffice/utils/formats.c:460
+#, fuzzy
+msgid "Japan, Yen"
+msgstr "Japanske yen"
+
+#: goffice/utils/formats.c:461
+#, fuzzy
+msgid "Kenya, Shillings"
+msgstr "Kenyanske shilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+#, fuzzy
+msgid "Comoros, Francs"
+msgstr "Comoros-franc"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+#, fuzzy
+msgid "Kuwait, Dinars"
+msgstr "Kuwaitiske dinarer"
+
+#: goffice/utils/formats.c:468
+#, fuzzy
+msgid "Cayman Islands, Dollars"
+msgstr "Cayman-øernes dollar"
+
+#: goffice/utils/formats.c:469
+#, fuzzy
+msgid "Kazakstan, Tenge"
+msgstr "Pakistanske rupier"
+
+#: goffice/utils/formats.c:470
+#, fuzzy
+msgid "Laos, Kips"
+msgstr "Laotiske kip"
+
+#: goffice/utils/formats.c:471
+#, fuzzy
+msgid "Lebanon, Pounds"
+msgstr "Libanesiske pund"
+
+#: goffice/utils/formats.c:472
+#, fuzzy
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lankanske rupee"
+
+#: goffice/utils/formats.c:473
+#, fuzzy
+msgid "Liberia, Dollars"
+msgstr "Liberianske dollar"
+
+#: goffice/utils/formats.c:474
+#, fuzzy
+msgid "Lesotho, Maloti"
+msgstr "Lesotho loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+#, fuzzy
+msgid "Libya, Dinars"
+msgstr "Libyske dinarer"
+
+#: goffice/utils/formats.c:478
+#, fuzzy
+msgid "Morocco, Dirhams"
+msgstr "Marokkanske dirham"
+
+#: goffice/utils/formats.c:479
+#, fuzzy
+msgid "Moldova, Lei"
+msgstr "Moldoviske leu"
+
+#: goffice/utils/formats.c:480
+#, fuzzy
+msgid "Madagascar, Malagasy Francs"
+msgstr "Malagaskiske franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+#, fuzzy
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmarske kyat"
+
+#: goffice/utils/formats.c:483
+#, fuzzy
+msgid "Mongolia, Tugriks"
+msgstr "Mongolske tugrik"
+
+#: goffice/utils/formats.c:484
+#, fuzzy
+msgid "Macau, Patacas"
+msgstr "Macau pacata"
+
+#: goffice/utils/formats.c:485
+#, fuzzy
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauretanske ouguiya"
+
+#: goffice/utils/formats.c:486
+#, fuzzy
+msgid "Malta, Liri"
+msgstr "Maltesiske lire"
+
+#: goffice/utils/formats.c:487
+#, fuzzy
+msgid "Mauritius, Rupees"
+msgstr "Mauritiske rupier"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+#, fuzzy
+msgid "Malawi, Kwachas"
+msgstr "Malawiske kwacha"
+
+#: goffice/utils/formats.c:490
+#, fuzzy
+msgid "Mexico, Pesos"
+msgstr "Mexicanske peso"
+
+#: goffice/utils/formats.c:491
+#, fuzzy
+msgid "Malaysia, Ringgits"
+msgstr "Malaysiske ringgit"
+
+#: goffice/utils/formats.c:492
+#, fuzzy
+msgid "Mozambique, Meticais"
+msgstr "Mozambisiske metical"
+
+#: goffice/utils/formats.c:493
+#, fuzzy
+msgid "Namibia, Dollars"
+msgstr "Liberianske dollar"
+
+#: goffice/utils/formats.c:494
+#, fuzzy
+msgid "Nigeria, Nairas"
+msgstr "Nigerianske naira"
+
+#: goffice/utils/formats.c:495
+#, fuzzy
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaraguanske cordoba oro"
+
+#: goffice/utils/formats.c:496
+#, fuzzy
+msgid "Norway, Krone"
+msgstr "Norske kroner"
+
+#: goffice/utils/formats.c:497
+#, fuzzy
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepalesiske rupier"
+
+#: goffice/utils/formats.c:498
+#, fuzzy
+msgid "New Zealand, Dollars"
+msgstr "New Zealand-dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+#, fuzzy
+msgid "Panama, Balboa"
+msgstr "Panamanske balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+#, fuzzy
+msgid "Papua New Guinea, Kina"
+msgstr "Papua New Guinea kina"
+
+#: goffice/utils/formats.c:503
+#, fuzzy
+msgid "Philippines, Pesos"
+msgstr "Filippinske peso"
+
+#: goffice/utils/formats.c:504
+#, fuzzy
+msgid "Pakistan, Rupees"
+msgstr "Pakistanske rupier"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+#, fuzzy
+msgid "Paraguay, Guarani"
+msgstr "Paraguayske guarani"
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "Qatari rial"
+
+#: goffice/utils/formats.c:508
+#, fuzzy
+msgid "Romania, Lei"
+msgstr "Rumænske leu"
+
+#: goffice/utils/formats.c:509
+#, fuzzy
+msgid "Russia, Rubles"
+msgstr "Russiske rubler"
+
+#: goffice/utils/formats.c:510
+#, fuzzy
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda-franc"
+
+#: goffice/utils/formats.c:511
+#, fuzzy
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi Arabiske riyal"
+
+#: goffice/utils/formats.c:512
+#, fuzzy
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon-øernes dollar"
+
+#: goffice/utils/formats.c:513
+#, fuzzy
+msgid "Seychelles, Rupees"
+msgstr "Seycheller rupier"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+#, fuzzy
+msgid "Singapore, Dollars"
+msgstr "Singapore-dollar"
+
+#: goffice/utils/formats.c:517
+#, fuzzy
+msgid "Saint Helena, Pounds"
+msgstr "St. Helena-pund"
+
+#: goffice/utils/formats.c:518
+#, fuzzy
+msgid "Slovenia, Tolars"
+msgstr "Slovenske tolar"
+
+#: goffice/utils/formats.c:519
+#, fuzzy
+msgid "Slovakia, Koruny"
+msgstr "Slovenske tolar"
+
+#: goffice/utils/formats.c:520
+#, fuzzy
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone leone"
+
+#: goffice/utils/formats.c:521
+#, fuzzy
+msgid "Somalia, Shillings"
+msgstr "Somaliske shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+#, fuzzy
+msgid "Suriname, Guilders"
+msgstr "Surinamske gylden"
+
+#: goffice/utils/formats.c:524
+#, fuzzy
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome og Principe dobra"
+
+#: goffice/utils/formats.c:525
+#, fuzzy
+msgid "El Salvador, Colones"
+msgstr "El Salvadoranske colon"
+
+#: goffice/utils/formats.c:526
+#, fuzzy
+msgid "Syria, Pounds"
+msgstr "Syriske pund"
+
+#: goffice/utils/formats.c:527
+#, fuzzy
+msgid "Swaziland, Emalangeni"
+msgstr "Swazilandske lilangeni"
+
+#: goffice/utils/formats.c:528
+#, fuzzy
+msgid "Thailand, Baht"
+msgstr "Thailandske baht"
+
+#: goffice/utils/formats.c:529
+#, fuzzy
+msgid "Tajikistan, Rubles"
+msgstr "Pakistanske rupier"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+#, fuzzy
+msgid "Tunisia, Dinars"
+msgstr "Tunesiske dinarer"
+
+#: goffice/utils/formats.c:532
+#, fuzzy
+msgid "Tonga, Pa'anga"
+msgstr "Tonganske pa'anga"
+
+#: goffice/utils/formats.c:533
+#, fuzzy
+msgid "Turkey, Liras"
+msgstr "Tyrkiske lire"
+
+#: goffice/utils/formats.c:534
+#, fuzzy
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad og Tobago-dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+#, fuzzy
+msgid "Taiwan, New Dollars"
+msgstr "Nye Taiwan-dollar"
+
+#: goffice/utils/formats.c:537
+#, fuzzy
+msgid "Tanzania, Shillings"
+msgstr "Tanzanianske shilling"
+
+#: goffice/utils/formats.c:538
+#, fuzzy
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrainske hryvnia"
+
+#: goffice/utils/formats.c:539
+#, fuzzy
+msgid "Uganda, Shillings"
+msgstr "Ugandiske shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+#, fuzzy
+msgid "Uruguay, Pesos"
+msgstr "Uruguayanske peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+#, fuzzy
+msgid "Venezuela, Bolivares"
+msgstr "Venezuelanske bolivar"
+
+#: goffice/utils/formats.c:544
+#, fuzzy
+msgid "Viet Nam, Dong"
+msgstr "Vietnamesiske dong"
+
+#: goffice/utils/formats.c:545
+#, fuzzy
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu vatu"
+
+#: goffice/utils/formats.c:546
+#, fuzzy
+msgid "Samoa, Tala"
+msgstr "Samoanske tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+#, fuzzy
+msgid "East Caribbean Dollars"
+msgstr "Østkaribiske dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+#, fuzzy
+msgid "Yemen, Rials"
+msgstr "Yemenske rial"
+
+#: goffice/utils/formats.c:557
+#, fuzzy
+msgid "Yugoslavia, New Dinars"
+msgstr "Ny jugoslaviske dinarer"
+
+#: goffice/utils/formats.c:558
+#, fuzzy
+msgid "South Africa, Rand"
+msgstr "Sydafrikanske rand"
+
+#: goffice/utils/formats.c:559
+#, fuzzy
+msgid "Zambia, Kwacha"
+msgstr "Zambiske kwacha"
+
+#: goffice/utils/formats.c:560
+#, fuzzy
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwianske dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ingen"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Fast"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+#, fuzzy
+msgid "Dash dot"
+msgstr "Danske kroner"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatisk"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Ingen"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "_Middel:"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "Interval"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Omrids til _højre"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "fixed"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "rækker"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Indsæt kæde"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*mar"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% grå"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% grå"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% grå"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% grå"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% grå"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Vandret stribe"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Lodret stribe"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Omvendt diagonal stribe"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonal stribe"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonal krydsskravering"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Tyk diagonal krydsskravering"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tynd vandret stribe"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tynd lodret stribe"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tynd omvendt diagonal stribe"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tynd diagonal stribe"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tynd vandret krydsskravering"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tynd diagonal krydsskravering"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Ensfarvet forgrund"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Små cirkler"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Halvcirkler"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Stråtag"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Store cirkler"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Mursten"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etiketter"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Værdier"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Fejl ved fortolkning af linje"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Graf..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Plot"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Plot"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "_Procentdele"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Indsæt kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Indsæt kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Area"
+msgstr "_Arealer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "_Arealer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+#, fuzzy
+msgid "Column"
+msgstr "_Kolonne"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Linjer at importere"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Linje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "_Procentdele"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "_Procentdele"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "_Procentdele"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "_Procentdele"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "_Procentdele"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "_Gitterlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Slet kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "_Gitterlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Procentdele"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "_Gitterlinjer"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Definér navne"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Række- og kolonnehoveder"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Ugyldige parametre"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Fejl ved fortolkning af linje"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Ændring af formatering af %s"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Definér navne"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Plot"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Ingenting"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Separator:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "_Slet"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Separator:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Kategori:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "_Gitterlinjer"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Opsplit"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Gang"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Gang"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Pris"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "_Interval"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Opsplit"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Opsplit"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Plot"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Plot"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "_Procentdele"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Standardafvigelse"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Slet kolonner"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Definér navne"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Fejl ved fortolkning af linje"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Hele tal"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Antal"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Linjer at importere"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Kilde"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Fejl ved fortolkning af linje"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Kildeområder"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Kildeområder"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% af normal størrelse"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "centimeter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+#, fuzzy
+msgid "Show _negative values"
+msgstr "Vis detaljer"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Kilde"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Plot"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Dobbelt"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Dobbelt"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Fejl ved fortolkning af linje"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Fejl ved fortolkning af linje"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Slet kolonner"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Linje"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Point"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Linje"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/de.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/de.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/de.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4215 @@
+# German Gnumeric translation.
+# Copyright (C) 1998-2000 Miguel de Icaza, 2001-2005 Jody Goldberg.
+# This file is distributed under the same license as the Gnumeric package.
+# Ralf Baechle <ralf at gnu.org>, 1999.
+# Karsten Weiss <karsten at addx.au.s.shuttle.de>, 1999.
+# Matthias Warkus <mawa at iname.com>, 1999-2000.
+# Karl Eichwalder <ke at suse.de>, 1999-2001.
+# Andreas J. Guelzow <aguelzow at taliesin.ca>, 2001.
+# Christian Meyer <chrisime at gnome.org>, 2001.
+# Christian Neumair <chris at gnome-de.org>, 2002, 2003, 2004.
+# Frank Arnold <frank at scirocco-5v-turbo.de>, 2005.
+# Hendrik Richter <hendi at gnome-de.org>, 2005.
+#
+# Thanks for improvements to "Andreas J. Guelzow" <aguelzow at taliesin.ca>, 2001.
+#
+# Future translators, please take care to translate error messages correctly:
+# #3D MULT? == #3D-MULT?
+# #ARG! == #ARG!
+# #DIV/0! == #DIV/0!
+# #N/A == #-/-
+# #NAME? == #NAME?
+# #NULL! == #NULL!
+# #NUM! == #ZAHL!
+# #RECALC! == #NEU-BER!
+# #REF! == #BEZUG!
+# #UNKNOWN! == #UNBEKANNT!
+# #VALUE! == #WERT!
+#
+# TODO:
+#
+# - translate all functions (the untranslated ones are translated with LATER)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-07-04 19:10+0200\n"
+"Last-Translator: Hendrik Richter <hendi at gnome-de.org>\n"
+"Language-Team: German <gnome-de at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr "Kein gültiger UTF-8-Dateiname."
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Das Speichern über alte Dateien in diesem Format ist aus Sicherheitsgründen "
+"abgeschaltet."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Sie können dieses Sicherheitsmerkmal ausschalten, indem Sie die "
+"entsprechende »plugin.xml«-Datei bearbeiten."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektiv"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Datei enthält Plugin-Information mit ungültiger Kennung (%s), %s erwartet."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Plugin-Info konnte nicht von Datei gelesen werden"
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Unbekannter Name."
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Nicht unterstützter Startertyp »%s«."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Fehler beim Vorbereiten des Starters »%s«."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Fehler beim Lesen der Info des Dienstes #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+"Es ist nicht möglich, die Datei (»%s«) mit den Plugin-Informationen zu lesen."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Die Datei »%s« ist keine gültige Datei mit Plugin-Informationen."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Fehler beim Lesen des Dienstes für Plugin mit id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Plugin-Kennung enthält ungültige Zeichen (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Unbekannter Pluginname."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Für das Plugin mit der Kennung »%s« wurde kein Starter festgelegt oder die "
+"Starterkennung ist ungültig."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin hat keine Kennung."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Fehler beim Initialisieren des Plugin-Starters (»%s«)."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+"Fehler beim Laden der Plugin-Abhängigkeiten: Zyklische Abhängigkeiten "
+"gefunden."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Plugin mit Kennung »%s« konnte nicht aktiviert werden."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Plugin mit Kennung »%s« konnte nicht gefunden werden."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Fehler beim Aktivieren der Plugin-Abhängigkeiten."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Fehler beim Aktivieren der Plugin-Dienstes #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Fehler beim Deaktivieren des Plugin-Dienstes #%d"
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Der Plugin-Starter konnte nicht geladen werden."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Plugin mit Kennung »%s« konnte nicht geladen werden."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Fehler beim Laden der Plugin-Abhängigkeiten."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Beim Lesen der Plugin-Informationen aus Datei »%s« traten Fehler auf."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Das Plugin »%s« konnte nicht aktiviert werden (Kennung: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Das Plugin »%s« konnte nicht deaktiviert werden (Kennung: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Fehler beim Lesen der Informationen zu den verfügbaren Plugins."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+"Fehler beim Deaktivieren von Plugins, die nicht mehr auf der Platte sind"
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Folgende Plugins sind nicht mehr auf der Platte aber immer noch aktiv:\n"
+"%s.\n"
+"Sie sollten Gnumeric jetzt neu starten."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Fehler beim Aktivieren der Plugins."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Fehler beim Initialisieren des Plugin-Systems."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Starter besitzt keine »set_attributes«-Methode.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Starter besitzt keine »load_base«-Methode.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Dienst »%s« wird von »l« nicht unterstützt."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Kein Dateiname des Moduls angegeben."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Die Modul-Datei »%s« kann nicht geöffnet werden."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Die Module-Datei »%s« hat ein ungültiges Format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Datei weist kein (»plugin_file_struct«-Symbol) auf."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Datei hat eine falsche Magic-Nummer"
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+"Version des Plugins »%s« unterscheidet sich von der der Anwendung »%s«."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+"Das dynamische Laden von Modulen wird von diesem System nicht unterstützt."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Es ist nicht möglich, die Modul-Datei »%s« zu schließen."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Datei weist die »%s«-Funktion nicht auf."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modul weist keine »%s«-Funktion auf."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Fehler beim Laden des Plugin-Dienstes."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Die Initialisierungsfunktion beim Plugin gab Fehler zurück."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Die Aufräumfunktion im Plugin »%s« lieferte einen Fehler."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Allgemein"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Dateiöffner hat keine Beschreibung"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Dateiöffner - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Fehler beim Lesen der Datei."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Dateispeicherer hat keine Beschreibung"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Dateispeicherer - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Fehler beim Speichern der Datei."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Plugin-Starter"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject-Starter"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Kein »Typ«-Attribut beim »Service«-Element."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Unbekannter Diensttyp: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Fehler beim Lesen Dienstinformationen."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Ein Dienst vor dem Aktivieren geladen werden (PLUGIN_ALWAYS_LOAD ist "
+"gesetzt), aber das Laden ist fehlgeschlagen."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Seiten"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Einzug:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Suchen _nach"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Ausrichtung"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Anführungs_zeichen:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Problemgröße"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Diskrete Abbildung"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Linear"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Lineare Abbildung"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Logarithmische Abbildung"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Details"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatisch"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Kategorien zwischen Skalens_trichen"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Kategorien zwischen _Beschriftungen"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr "_Kreuzen bei Kategorie Nr."
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Grenzen"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "_Hauptskalenstriche:"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Neben_skalenstriche:"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Kreuz"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Beschriftung"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "Nebengitter"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "Hauptgitter"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Hauptskalenstriche</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Abbildung</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Nebenskalenstriche</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Position</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nnen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "A_ußen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Hoch"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Innen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "Achse _invertieren"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Tief"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "Auß_en"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Beschriftungen anzeigen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Typ:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legende"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Titel"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Gitter"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-Achse"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-Achse"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-Achse"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Kreis-Achse"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Radial-Achse"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Graph"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Höhe"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "B"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Breite"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Kein Fehlerbalken angezeigt"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Positiver Fehlerbalken angezeigt"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Negativer Fehlerbalken angezeigt"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Voller Fehlerbalken angezeigt"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Fehlerkategorie</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Werte</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "_Farbe:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "Anzei_ge:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Keine\n"
+"Absolut\n"
+"Relativ\n"
+"Prozent"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Linienbreite:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Breite:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Ausgabe"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Diagramm"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Name"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Schritt 1 von 2: Diagrammtyp wählen"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Schritt 2 von 2: Diagramm anpassen"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Diagramm anpassen"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Einfügen"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "_Graphtyp"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME Office-Ausgabe"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Nach v_orn"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Nach ganz _vorn"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Nach hi_nten"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Nach ganz _hinten"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Reihenfolge"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definition</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Muster</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Vorschau"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Beschreibung"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Text:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Daten"
+
+# CHECK
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Datenreihe"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Graph-Engine"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Graphtyp"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Diagrammthema"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Index:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punkt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Schrift"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"Zweifarbig\n"
+"Helligkeit"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Füllen</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linie</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Kennzeichnung</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Rahmen</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Fa_rbe:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Nichts\n"
+"Muster\n"
+"Verlauf\n"
+"Bild"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "_Umrandungsfarbe:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Form:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "G_röße:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "St_il:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_yp:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Hintergrund:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Richtung:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Ende:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Fü_llfarbe:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Einpassen:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Vordergrund:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Muster:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "Aus_wählen..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Größe:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "A_nfang:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_heller"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_dunkler"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "Pkt"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"Gestreckt\n"
+"Tapezieren"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Vorgabe"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabisch"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltisch"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Zentraleuropäisch"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chinesisch"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Kyrillisch"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Griechisch"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebräisch"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indisch"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japanisch"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreanisch"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Türkisch"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamesisch"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Westeuropäisch"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Sonstige"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabisch (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabisch (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisch (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabisch (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabisch (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabisch (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisch (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armenisch (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisch (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisch (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisch (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltisch (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Zentraleuropäisch (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Zentraleuropäisch (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Zentraleuropäisch (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Zentraleuropäisch (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Vereinfachtes Chinesisch (GB18030)"
+
+# CHECK
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Vereinfachtes Chinesisch (GB2312)"
+
+# CHECK
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Vereinfachtes Chinesisch (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Vereinfachtes Chinesisch (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Vereinfachtes Chinesisch (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Traditionelles Chinesisch (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Traditionelles Chinesisch (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Traditionelles Chinesisch (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Kroatisch (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrillisch (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrillisch (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrillisch (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrillisch (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Kyrillisch (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrillisch (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russisch (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainisch (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainisch (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Englisch (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgisch (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Griechisch (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Griechisch (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Griechisch (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebräisch (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebräisch (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebräisch (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebräisch (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebräisch (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Isländisch (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japanisch (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanisch (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanisch (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Koreanisch (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Koreanisch (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Koreanisch (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Koreanisch (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordisch (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumänisch (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumänisch (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Südeuropäisch (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Türkisch (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Türkisch (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Türkisch (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Türkisch (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Benutzerdefiniert"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamesisch (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamesisch (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamesisch (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamesisch (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebräisch, visuell (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Westlich (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Westlich (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Westlich (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Westlich (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Westlich (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Standorteinstellungen: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Konvertierungsrichtung"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Dieser Wert legt fest, welcher iconv-Test durchgeführt werden soll."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "Schwarz"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "Hellbraun"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "Goldbraun"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "Dunkelgrün #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "Marineblau"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "Dunkelblau"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "Purpur #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "Sehr dunkles Grau"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "Dunkelrot"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "Rot-Orange"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "Gold"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "Dunkelgrün"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "Graublau"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "Blau"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "Graupurpur"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "Dunkelgrau"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "Rot"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "Orange"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "Limette"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "Graugrün"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "Graublau #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "Himmelblau #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "Purpur"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "Grau"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "Magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "Strahlendes Orange"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "Gelb"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "Grün"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "Cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "Strahlendes Blau"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "Purpurrot"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "Hellgrau"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "Pink"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "Hellorange"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "Hellgelb"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "Hellgrün"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "Hellcyan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "Hellblau"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "Hellpurpur"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "Weiß"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "Purpurblau"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "Dunkelpurpur"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "Himmelblau"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "benutzerdefiniert"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Benutzerdefinierte Farbe..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Schattentyp"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Ausrichtung"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Bevorzugte Breite"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Bevorzugte Höhe"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Die Werkzeugleiste andocken"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Die Werkzeugleiste abdocken"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Datei »%s« kann nicht geöffnet werden."
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Alle Dateien"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Bilder"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Ein Bild wählen"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Speichern unter"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Datei_typ:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Die angegebene Erweiterung des Dateinamens stimmt nicht mit dem gewählten "
+"Dateityp überein. Wollen Sie dennoch diesen Namen verwenden?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"ist ein Verzeichnisname."
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Sie haben nicht die Rechte nach\n"
+"%s zu speichern."
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Eine Datei mit dem Namen <i>%s</i> existiert bereits in %s.\n"
+"\n"
+"Soll sie beim Speichern überschrieben werden?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Fett"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Fett-kursiv"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kursiv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr "AaBbCcDdEe12345"
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Schriftstil:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Schrift:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Vorschau"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Größe:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Zahl"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Währung"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Buchhaltung"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Datum"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Zeit"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Prozentsätze"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Bruch"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Wissenschaftlich"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Text"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Besonderes"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Benutzerdefiniert"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Negatives Zahlenformat"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Zahlenformate"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "_Kategorien:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "_Dezimalstellen:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Beträge in traditionellen Buchhaltungsstilen anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Zahlen und Eingabewerte als nicht verarbeitete Zeichenketten anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Währungsbeträge anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Daten und optional Uhrzeiten anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Numerische Werte mit einer festen Anzahl von Dezimalen anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Uhrzeiten anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Werte näherungsweise als Brüche anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Werte als Prozentsätze anzeigen."
+
+# CHECK
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Werte als Zehnerpotenzen anzeigen."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Format-_Code:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Negatives Zahlen_format:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Vorschau:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Automatisch das passende Format wählen."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Direkt einen Excel-Stil angeben"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Trennzeichen für Tausender verwenden"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Westeuropäisch"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Osteuropäisch"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Nordamerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Süd- und Mittelamerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asien"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australien"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Vereinigte Staaten/Englisch (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Südafrika/Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Äthiopien/Amharisch (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Vereinigte Arab. Emirate (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algerien (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Ägypten (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Indien/Arabisch (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordanien (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libyen (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marokko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Katar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi-Arabien (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syrien (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunesien (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Aserbaidschan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Weißrussland (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgarien (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesch (bn_BG)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Indien/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Frankreich/Bretonisch (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnien-Herzigowina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spanien/Katalanisch (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tschechische Republik (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Großbritannien/Walisisch (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dänemark (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Österreich (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgien/Deutsch (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Schweiz/Deutsch (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Deutschland (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburg/Deutsch (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Griechenland (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australien (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kannada/Englisch (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Großbritannien (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Englisch (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irland (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Indien/Englisch (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Neuseeland (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Philippinen (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/Englisch (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Vereinigte Staaten/Englisch (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Südafrika/Englisch (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Simbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentinien (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivien (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbien (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikanische Republik (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Equador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spanien (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexiko (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Vereinigte Staaten/Spanisch (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estland (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spanien/Baskisch (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finnland/Finnisch (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Faröerinseln (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgien/Französisch (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kannada/Französisch (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Schweiz/Französisch (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Frankreich (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irland/Gälisch (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Großbritannien/Schottisches Gälisch (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spanien/Galizisch (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Großbritannien/Manx-Gälisch (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Indien/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Kroatien (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Ungarn (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenien (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesien (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Schweiz/Italienisch (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italien (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebräisch (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgien (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grönland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Großbritannien/Kornisch (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litauen (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Lettland (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Neuseeland/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Mazedonien (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Indien/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaysia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgien/Flämisch (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Niederlande (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norwegen/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norwegen/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Frankreich/Okzitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polen (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasilien (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumänien (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russisch (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraine/Russisch (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norwegen/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slowakei (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slowenien (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albanien (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslawien (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finnland/Schwedisch (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Schweden (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Indien/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Indien/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadschikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Äthiopien/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Philippinen/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Türkei (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Russland/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraine (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Usbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgien/Wallonisch (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Vereinigte Staaten/Jiddisch (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "China (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chinesisch (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/Chinesisch (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Derzeitige Standorteinstellungen: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menü"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Das Optionsmenü"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Indikatorgröße"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Größe des Aufklappindikators"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indikatorabstand"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Abstand um den Indikator"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*So"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Mo"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Di"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Mi"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Do"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Fr"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sa"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Sonntag"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Montag"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Dienstag"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Mittwoch"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Donnerstag"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Freitag"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Samstag"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mär"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dez"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Januar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Februar"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "März"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mai"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Juni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Juli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Dezember"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "WAHR"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSCH"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Schwarz"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blau"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Zyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Grün"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Rot"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Weiß"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Gelb"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Vereinigte Arab. Emirate-Dirham"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanischer Afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albanischer Leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenischer Dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Niederländische Antillen-Gulden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angolanischer Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentinischer Peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australischer Dollar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba-Gulden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Aserbaidschan-Manat"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnisch-Herzegowinische konvertierbare Marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados-Dollar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladeschischer Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgarischer Lew"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain-Dinar"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi-Franc"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda-Dollar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei-Dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivianischer Boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasilianischer Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahama-Dollar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutanischer Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botsuanischer Pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Weißrussischer Rubel"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize-Dollar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanadischer Dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongolesische Francs"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Schweizer Franken"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chilenischer Peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Chinesischer Renminbi Yuan"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbianischer Peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa-Rica-Colón"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kubanischer Peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Kap-Verde-Escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Zypern-Pfund"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Tschechische Krone"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Dschibuti-Franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Dänische Kronen"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikanischer Peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algerischer Dinar"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estnische Krone"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Ägyptisches Pfund"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritreische Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Äthiopischer Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fidschi-Dollar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland-Pfund"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Britisches Pfund"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georga-Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey-Pfund"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghanaischer Cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar-Pfund"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambischer Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea-Franc"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemaltekischer Quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana-Dollar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hongkong-Dollar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduranische Lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Kroatische Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haitianische Gourde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Ungarischer Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesische Rupiah"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israelischer Neuer Schekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man-Pfund"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Indische Rupie"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irakischer Dinar"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iranischer Rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Isländische Krone"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey-Pfund"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaikanischer Dollar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordanischer Dinar"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japanischer Yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenianischer Schilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirgisistan-Som"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kampodschanischer Riel"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komoren-Franc"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Südkoreanischer Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Nordkoreanischer Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwaitischer Dinar"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kaiman-Dollar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kasachischer Tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laotischer Kip"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanesisches Pfund"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri-Lanka-Rupie"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberianischer Dollar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesothischer Loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litauischer Litas"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Lettischer Lats"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libyscher Dinar"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marokkanischer Dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldawischer Leu"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar-Franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Mazedonischer Denar"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmarischer (Burmesischer) Kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolischer Tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macauische Pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauretanische Ouguiya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Maltesische Lire"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius-Rupie"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maledivische Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi-Kwacha"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexikanischer Peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysischer Ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mosambikanischer Metical"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namimbischer Dollar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigerianische Naira"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaraguanischer Gold-Córdoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norwegische Krone"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepalesische Rupie"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Neuseeländischer Dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Omanischer Rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panamaischer Balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peruanischer Sol"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua-Neuguinea-Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Philippinischer Peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistanische Rupie"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polnischer Zloty"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguayischer Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Katar-Rial"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumänischer Leu"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russischer Rubel"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda-Franc"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi Riyal"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon-Dollar "
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychellen-Rupie"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudanesischer Denar"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Schwedische Krone"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur-Dollar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "St. Helena-Pfund"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slowenischer Tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slowakische Krone"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierraleonische Leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalischer Schilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborganischer Lugigino"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname-Gulden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "São-Tomé/Príncipe-Dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El-Salvador-Colón"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syrisches Pfund"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziländischer Lilangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailändischer Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadschikischer Rubel"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan-Manat"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunesischer Dinar"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tongaische Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Türkische Lire"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad/Tobago-Dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu-Dollar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwanesischer Dollar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tansania-Schilling"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrainische Griwna"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda-Schilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "US-Dollar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguayischer Peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Usbekistan-Sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezolanischer Bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnamesischer Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu-Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoanischer Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "CFA-Francs (BEAC)"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Silber, Unze"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Gold, Unzen"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Ostkaribik-Dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "International Monetary Fund (IMF) Sonderziehungsrechte"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "CFA-Francs (BEACO)"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, Unzen"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Français du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, Unzen"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen-Rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslawischer Dinar"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Südafrikanischer Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Sambischer Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Simbabwe-Dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Keine"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Einfarbig"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Strich"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Punkt"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Strich-Punkt"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Strich-Punkt-Punkt"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatisch (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "Keine"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "Quadrat"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "Diamant"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "Dreieck nach unten"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "Dreieck nach oben"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "Dreieck nach rechts"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "Dreieck nach links"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "Kreis"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "Kreuz"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "Asterisk"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "Balken"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "halber Balken"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "Schmetterling"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "Sanduhr"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% grau"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% grau"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% grau"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12,5% grau"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6,25% grau"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horizontale Streifen"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Vertikale Streifen"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Diagonale Streifen rückwärts"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonale Streifen"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonale Schraffen"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Dicke diagonale Schraffen"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Dünne horizontale Streifen"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Dünne vertikale Streifen"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Dünne diagonale Streifen rückwärts"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Dünne diagonale Streifen"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Dünne horizontale Schraffen"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Dünne diagonale Schraffen"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Einfarbiger Vordergrund"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Kleine Kreise"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Halbkreise"
+
+# auch mgl.: Reet -fa-
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Stroh"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Große Kreise"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Backsteine"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Beschriftungen"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Werte"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Fehlerbalken"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "GraphBalSäul"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Wie weit die Balken/Säulen überlappen, als Prozentsatz der Breite"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "Ü_berlappung:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Abstand zwischen Gruppen als Prozentsatz der Balken-/Säulenbreite"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Abstand:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "GraphLinie"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "GraphFläche"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Benachbarte 3D-Balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Benachbarte 3D-Säulen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D-Prozentsatz-Balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D-Prozentsatz-Säulen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Gestapelte 3D-Balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Gestapelte 3D-Säulen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Benachbarte Balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Benachbarte Säulen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr "Benachbarte 3D-Balken, gruppiert nach Haupt- und Unterkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr "Benachbarte Balken, gruppiert nach Haupt- und Unterkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr "Benachbarte 3D-Säulen, gruppiert nach Haupt- und Unterkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Benachbarte Säulen, gruppiert nach Haupt- und Unterkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Bereich"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Flächengraph."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Bereiche"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Spalte"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linie"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Liniengraph."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linien"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"In 3D-Säulen angeordnete Unterkategorien als Prozentsätze der Gesamtsumme "
+"dieser Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"In 3D-Balken angeordnete Unterkategorien als Prozentsätze der Gesamtsumme "
+"dieser Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"In Balken angeordnete Unterkategorien als Prozentsätze der Gesamtsumme "
+"dieser Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"In Säulen angeordnete Unterkategorien als Prozentsätze der Gesamtsumme "
+"dieser Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"In 3D-Balken angeordnete Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr "In Balken angeordnete Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr "In Säulen angeordnete Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr "In Säulen angeordnete Unterkategorien, gruppiert nach Hauptkategorien."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Prozentsatz-Bereiche"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Prozentsatz-Balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Prozentsatz-Säulen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Prozentsatz-Linien"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Prozentsatz-Flächengraph."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Prozentsatz-Liniengraph."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Gestapelte Bereiche"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Gestapelte Balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Gestapelte Säulen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Gestapelte Linien"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Gestapelter Flächengraph."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Gestapelter Liniengraph."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Unmarkierte Linien"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Unmarkierte Prozentsatz-Linien"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Unmarkierte, gestapelte Linien"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Flächengraph-Engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Balken-/Säulengraph-Engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Diagrammdartellung : Balken/Säulen/Linien/Flächen"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "1.5d-Vorgabediagrammtypen"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Liniengraph-Engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Linien-, Flächen-, Balken- und Säulengraphen"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr "Kasten-Graph"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr "Ungültige Daten."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+"Kasten-Graph. An die Graph-Engine müssen fünf Variablen in dieser "
+"Reihenfolge übergeben werden: Minimum, erstes Quartil, Median, drittes "
+"Quartil und Maximum (nicht die Rohdaten)."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr "KastenGraph"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr "KastenGraphen"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr "Kasten-Graphen"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr "Kastengraph-Engine"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr "Diagrammdarstellung : Kastengraphen"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Vorgabe-Oberflächengraphtypen"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "GraphKreis"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "GraphRing"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s Punkt %d\n"
+"Wert %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Grad gegen den Uhrzeigersinn von 3 Uhr aus"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Segmente _beginnen bei:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"Der Vorgabeabstand, den die Segmente vom Zentrum haben, als Prozentsatz des "
+"Kreisradius."
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Segmentabstand:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "Farben segmentweise _variieren"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "Grad"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Der Vorgabeabstand, den dieses Segment zum Zentrum hat, als Prozentsatz vom "
+"Radius des Kreises."
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "Ab_trennung:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "_Zentrumsgröße:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Torte"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Geteilte 3D-Torte"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Hauptkategorien als Prozentsätze der Gesamtsumme, wobei jeder Keil in "
+"untergeordnete Kreise unterteilt ist."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Hauptkategorien als Prozentsätze der Gesamtsumme, wobei jeder Keil in "
+"untergeordnete, angeordnete Balken unterteilt ist."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Mehrfach-Kreis"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Mehrfach-Kreis-Balken"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Prozentsatz jedes einfließenden Wertes in jeweils in einem Ring pro "
+"Datenreihe angezeigt, wobei der letzte Ring abgetrennt ist."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+"Prozentsatz jedes einfließenden Wertes in jeweils in einem Ring pro "
+"Datenreihe angezeigt."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Prozentsatz jedes einfließenden Wertes in einer Torte."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Prozentsatz jedes einfließenden Wertes mit abgetrennten 3D-Keilen."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Prozentsatz jedes einfließenden Wertes mit abgetrennten Keilen."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Prozentsatz jedes einfließenden Wertes."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Kreis"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Geteilter Kreis"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Geteilter Ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Diagrammdarstellung : Kreis/Ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Vorgabe-Kreistypen"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Kreis- und Ringgraphen"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Kreisgraph-Engine"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Ringgraph-Engine"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "GraphRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "GraphRadarFläche"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Flächenradar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Flächenradar-Graph."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Gepunktetes Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Radargraph mit Punkten."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radargraph."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Diagrammdarstellung : Radiale Graphen"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Vorgabe-Radargraphtypen"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Radarflächengraph-Engine"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Radargraph-Engine"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Radiale/Radargraphen"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "_Scheibenanzahl:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "GraphKontur"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Kontur"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Konturgraph."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Oberfläche"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Konturgraph-Engine"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Oberflächendiagramme"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Oberflächendiagramme"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% der Vorgabegröße"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_D"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Durch_messer"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "_Negative Werte anzeigen"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Ober_fläche"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Blasen skaliert auf"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Größe dargestellt durch:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "Farben nach Blasen _variieren"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "GraphXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "GraphBlase"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Blase"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Y-Fehlerbalken"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "X-Fehlerbalken"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Zwischen mehrdimensionalen Punkten mit Bezierkurven interpolieren."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Linear zwischen mehrdimensionalen Punkten interpolieren, wobei jeder Punkt "
+"gekennzeichnet wird."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Linear zwischen mehrdimensionalen Punkten interpolieren."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Alle Punkte kennzeichnen."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Mehrdimensionale Punkte mit einem Kreis an jedem Punkt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "X-, Y- und Blasengröße ausgeben."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY-Linien"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY-Punkte"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+msgid "XY Splines"
+msgstr "XY-Kurven"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D-Graphen"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2D-Streugraph-Engine"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Blasengraph-Engine"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Diagrammdarstellung : XY/Streuung/Blasen"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Vorrätige Streugraphtypen"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/el.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/el.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/el.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4417 @@
+# translation of gnumeric.el.po to Greek
+# Gnumeric Greek translation.
+# Copyright (C) 2000,2003 Free Software Foundation, Inc.
+# #########################################################
+# Spiros initial translation 431 messages translated
+#
+# #########################################################
+# Gnumeric 1.2.x
+# jun 2003 Nikos start fixing erros and updating 557 translated
+# 14Sep2003 Nikos a small update 606 translated
+# 19Sep2003 Nikos a small update 637 translated
+# 23Sep2003 Nikos update 755 translated
+# 27Nov2003 Nikos update 827 translated
+# Dec2003 Petros update XXX translated
+#
+# Spiros Papadimitriou <spapadim+ at cs.cmu.edu>, 2000.
+# Nikos Charonitakis <charosn at her.forthnet.gr>, 2003
+# Kostas Papadimas <pkst at gmx.net>, 2003
+# Petros Velonis <velonis at freemail.gr>, 2004
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Gnumeric 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-03-24 17:03+0200\n"
+"Last-Translator: Petros Velonis <velonis at freemail.gr>\n"
+"Language-Team: Greek <nls at tux.hellug.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+# # NOTE: Help text for financial and statistical functions
+# #   is untranslated (I am not familiar with all the terminology,
+# #   nor do I know of anyone who is).  - Spiros
+#: goffice/app/file.c:510
+#, fuzzy
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "Αποθήκευση πάνω από παλία αρχεία ανενεργή για λόγους ασφαλείας"
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Αντικείμεν_ο..."
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Άγνωστο όνομα"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+#, fuzzy
+msgid "Unknown plugin name."
+msgstr "Άγνωστο σφάλμα εκτίμησης"
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+#, fuzzy
+msgid "Plugin has no id."
+msgstr "Το άρθρωμα είναι ακόμα σε χρήση.\n"
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο"
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο"
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+#, fuzzy
+msgid "Cannot load plugin loader."
+msgstr "Άγνωστο σφάλμα εκτίμησης"
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Άγνωστο σφάλμα εκτίμησης'%s'"
+
+#: goffice/app/go-plugin.c:1112
+#, fuzzy
+msgid "Error while loading plugin dependencies."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο"
+
+#: goffice/app/go-plugin.c:1288
+#, fuzzy, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο'%s'"
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο"
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+#, fuzzy
+msgid "Module file name not given."
+msgstr "Όνομα αρχείου:"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, fuzzy, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "άνοιγμα αρχείου αρθρώματος αδύνατο: '%s'"
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+#, fuzzy
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Το άρθρωμα πρέπει να περιλαμβάνει τη συνάρτηση init_plugin."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, fuzzy, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+"Άνοιγμα αρθρώματος  αδύνατο\n"
+"Η έκδοση του αρθρώματος '%s' και της εφαρμογής '%s' διαφέρουν."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, fuzzy, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "άνοιγμα αρχείου αρθρώματος αδύνατο: '%s'"
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, fuzzy, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Το άρθρωμα πρέπει να περιλαμβάνει τη συνάρτηση init_plugin.'%s'"
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+#, fuzzy
+msgid "Error while loading plugin service."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο"
+
+#: goffice/app/go-plugin-service.c:164
+#, fuzzy
+msgid "Initializing function inside plugin returned error."
+msgstr "Η init_plugin επέστρεψε σφάλμα"
+
+#: goffice/app/go-plugin-service.c:182
+#, fuzzy
+msgid "Cleanup function inside plugin returned error."
+msgstr "Η init_plugin επέστρεψε σφάλμα"
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Γενικό"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Το άρθρωμα είναι ακόμα σε χρήση.\n"
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr ""
+"Το άρθρωμα είναι ακόμα σε χρήση.\n"
+"'%s'"
+
+#: goffice/app/go-plugin-service.c:495
+#, fuzzy
+msgid "Error while reading file."
+msgstr ""
+"Σφάλμα κατά την ανάγνωση του αρχείου %s:\n"
+"%s"
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Το άρθρωμα είναι ακόμα σε χρήση.\n"
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Όνομα αρχείου: %s"
+
+#: goffice/app/go-plugin-service.c:767
+#, fuzzy
+msgid "Error while saving file."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο"
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Φορτωτής επιπρ. λειτουργίας"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Φορτωτής GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Άγνωστο σύστημα'%s'"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Σφάλμα: ανύπαρκτο φύλλο"
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Εξισώσεις"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "&Στοίχιση"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Αναζήτηση για"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Κενό"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Ευθυγράμμιση"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Άγνωστος τελεστής"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Διακριτή"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Διακριτή"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Γραμικός"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Λογικές"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Λογαριθμικό"
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Λεπτομέρειες"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Αυτόματο"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Κατηγορία"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Φόντο"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "Ελάχ_ιστο"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Μέγιστο"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Σταυρός"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "Μορφοποίηση"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Ετικέτα"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Πλέγμα"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Πλέγμα"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Μοτίβο"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Γραμμή"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Μοτίβο"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Γραμμή"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Έσωτερικό"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Περίγραμμα"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "Υψηλή"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Έσωτερικό"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "Α&ντιστροφή"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "Χαμηλή"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Περίγραμμα"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "Εμφάνιση Ε_τικετών"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Τύπος:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Λεζάντα"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Τίτλος"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "Πλέγμα"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Άξονας Χ"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Άξονας Υ"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Άξονας Ζ"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "Ταξινόμιση"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Ύψος"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "W"
+msgstr "Δ"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Πλάτος"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Βέλος"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Στυλ</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Δείγμα</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Χρώμα:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Πλάτος Γραμμής:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Με:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Γράφημα"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Διάγραμμα"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Όνομα"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Ρυθμίσεις ε_πικεφαλίδας"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Ει_σαγωγή"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Φύλλο 1"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "&Σειρά"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Προσανατολισμός</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Μοτίβο"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Στυλ</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Δείγμα"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Περιγραφή"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Κείμενο:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Δεδομένα"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "Σειρά"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Φύλλο 1"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Φύλλο 1"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "&Στοίχιση"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Ακολουθίες χαρακτήρων"
+
+#: goffice/graph/gog-series.c:452
+#, fuzzy
+msgid "Point"
+msgstr "Σημείο"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Γραμματοσειρά"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Στύλ"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Φωτεινότητα"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Γέμισμα"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Γραμμή"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Μοτίβο"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Περίγραμμα"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Χρώμα:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Περίγραμμα"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "&Μορφή"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Μέγε_θος:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Στύλ:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "Τ_ύπος:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Π_αρασκήνιο:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Κατεύθυνση"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "Τέλος"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Χρώμα γεμίσματος"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "Ταίριασμα"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Προσκήνιο"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Μοτίβο:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Επιλογή..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Μέγεθος:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "Ένα_ρξη"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "Δε_ξιά"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "Πιο σκούρο"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "Pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "Τεντωμένη"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Εξ ορισμού"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Αραβικά"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Βαλτικά"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Κεντρικής Ευρώπης"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Κινέζικα"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Κυριλλικά"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Ελληνικά"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Εβραϊκά"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Ινδιάνικα"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Ιαπωνικά"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Κορεάτικα"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Τουρκικά"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Βιετναμέζικα"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Δυτική"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Άλλη"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Αραβικά (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Αραβική (IBM-864-Ι)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Αραβικά (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Αραβικά (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Αραβικά (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Αραβική (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Αραβικά (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Αρμενική (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltic (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltic (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Βαλτικής (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Κελτική (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Κεντρικής Ευρώπης (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Κεντρικής Ευρώπης(ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Κεντρικής Ευρώπης (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Κεντρικής Ευρώπης (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Απλοποιημένη Κινέζικη (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Κινεζική απλοποιημένη (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Κινέζικα Απλοποιημένα (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Κινέζικα Απλοποιημένα (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Κινεζική παραδοσιακή  (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Κινεζική παραδοσιακή (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Κροατική (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Κυριλλικά (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Κυριλλική (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Κυριλλική (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Κυριλλική (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Κυριλλική (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Κυριλλική (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Γεωργιανή (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Ελληνική (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Ελληνική (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Ελληνική (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Εβραϊκά (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Εβραϊκά (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Εβραϊκά (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Εβραϊκή (_MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Εβραϊκή  (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Ισλανδικά (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Ιαπωνική (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Ιαπωνική (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Ιαπωνική (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Κορεατική (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Κορεάτικη (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Κορεάτικη (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Κορεάτικη (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Νορβηγική (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Ρουμανική (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Νότιας Ευρώπης (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Ταϊλανδική (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Τουρκικά (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Τουρκική (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Τουρκική (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Τουρκική (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Ορισμένο από το χρήστη"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Βιετναμέζικα (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Βιετναμική (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Βιετναμική (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Βιετναμική (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Οπτικά Εβραϊκά (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Δυτικής Ευρώπης (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Δυτική (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Δυτική (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Δυτική (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Δυτική (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "&Κωδικοποίηση"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Συσχέτιση"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "μαύρο"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "ανοιχτό καφέ"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "χρυσαφί καφέ"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "σκούρο πράσινο #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "ναυτικό μπλε"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "σκούρο μπλέ"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "μωβ #2"
+
+#: goffice/gtk/go-color-palette.c:102
+#, fuzzy
+msgid "very dark gray"
+msgstr "πολύ σκούρο γκρι"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "σκούρο κόκκινο"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "κόκκινο-πορτοκαλί"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "χρυσαφί"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "σκούρο πράσινο"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "ξεθωριασμένο μπλε"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "μπλε"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "ξεθωριασμένο μωβ"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "σκούρο γκρι"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "κόκκινο"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "πορτοκαλί"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "λεμονί"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "ξεθωριασμένο πράσινο"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "ξεθωριασμένο μπλε #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "μπλε ουρανού #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "μωβ"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "γκρι"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "Ματζέντα:"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "φωτεινό πορτοκαλί"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "κίτρινο"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "πράσινο"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "κυανό"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "φωτεινό μπλέ"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "κόκκινο-μωβ"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "ανοιχτό Γκρι"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "ροζ"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "ανοιχτό πορτοκαλί"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "ανοιχτό κίτρινο"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "ανοιχτό πράσινο"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "ανοιχτό κυανό"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "ανοιχτό μπλε"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "ανοιχτό μωβ"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "λευκό"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "μωβέ μπλέ"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "σκούρο μωβ"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "μπλε ουρανού"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "προσαρμοσμένο"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Προσαρμοσμένο Χρώμα:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Σκιά"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Προσανατολισμός</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, fuzzy, c-format
+msgid "Unable to open file '%s'"
+msgstr "Δεν είναι δυνατό το άνοιγμα του αρχείου '%1'."
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Αρχεία"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Εικόνα"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Επιλογή εικόνας"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Αποθήκευση όλων"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Τύπος αρχείου:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Κανονική"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Έντονο"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Έντονο πλάγιο"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Πλάγιο"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Στύλ γραμ/σειράς:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Γραμματοσειρά:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Προεπισκόπηση"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Μέγεθος:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Αριθμός"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Νόμισμα"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "Λογιστικά"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Ημερομηνία"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Ώρα"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Ποσοστό"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "Κλάσμα"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "Επιστημονική"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Κείμενο"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "Ειδικό"
+
+#: goffice/gtk/go-format-sel.c:85
+#, fuzzy
+msgid "Custom"
+msgstr "Παραμετροποιημένο"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Αρνητ_ικός αριθμός:"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "Αντιγραφή μορφοποίησης"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Κα_τηγορίες:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Δεκα_δικά ψηφία:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Εμφάνιση Ε_ξισώσεων"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Απεικόνιση τιμής όπως ακριβώς εισήχθη"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "Μορ_φοποίηση"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Αρνητ_ικός αριθμός:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Προεπισκόπηση:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Σύμ_βολο:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "&Μορφή:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Δια_χωρισμός 1000άδων"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "Κεντράρισμα στη σελίδα"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Ασία"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Αφρική"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Αυστραλία"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Δηνάριο Μπαχρέιν"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "Δηνάριο Ιορδανίας"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "Δηνάριο Κουβέιτ"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "Δηνάριο Λιβύης"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "Δηνάριο Τυνησίας"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Λέβ Βουλγαρίας"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "Δολλάριο Νέας Ζηλανδίας"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "Πέσος Φιλιππίνων"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Πέσος Μεξικού"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Πέσος Χιλής"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Πέσος Κολομβίας"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Πέσος Δομηνίκου"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Δειγματοληψία (%s)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "Πέσος Μεξικού"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "Πέσος Ουρουγουάης"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Δειγματοληψία (%s)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Λέκ Αλβανίας"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Τρέχον Locale (%s)"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Μενού"
+
+#: goffice/gtk/go-optionmenu.c:198
+#, fuzzy
+msgid "The menu of options"
+msgstr "Το μενού των επιλογών"
+
+#: goffice/gtk/go-optionmenu.c:204
+#, fuzzy
+msgid "Indicator Size"
+msgstr "Μέγεθος σήμανσης"
+
+#: goffice/gtk/go-optionmenu.c:205
+#, fuzzy
+msgid "Size of dropdown indicator"
+msgstr "Μέγεθος του δείκτη κύλισης προς τα κάτω"
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Διαστήματα επισήμανσης"
+
+#: goffice/gtk/go-optionmenu.c:211
+#, fuzzy
+msgid "Spacing around indicator"
+msgstr "Διάστημα γύρω από το δείκτη"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Κυ"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Δε"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Τρ"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Τε"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Πε"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Πα"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Σα"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Κυριακή"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Δευτέρα"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Τρίτη"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Τετάρτη"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Πέμπτη"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Παρασκευή"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Σάββατο"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Ιαν"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Φεβ"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Μαρ"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Απρ"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Μαι"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Ιουν"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Ιουλ"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Αυγ"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Σεπ"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Οκτ"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Νοε"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Δεκ"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Ιανουάριος"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Φεβρουάριος"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Μάρτιος"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Απρίλιος"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Μάιος"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Ιούνιος"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Ιούλιος"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Αύγουστος"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Σεπτέμβριος"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Οκτώβριος"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Νοέμβριος"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Δεκέμβριος"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "ΑΛΗΘΕΣ"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "ΨΕΥΔΕΣ"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Μαύρο"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Μπλε"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Κυανό"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Πράσινο"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Μωβ"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Κόκκινο"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Λευκό"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Κίτρινο"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+#, fuzzy
+msgid "Albania, Leke"
+msgstr "Λέκ Αλβανίας"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+#, fuzzy
+msgid "Netherlands Antilles, Guilders"
+msgstr "Ολλανδικές στερλίνες Αντίλλων"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+#, fuzzy
+msgid "Argentina, Pesos"
+msgstr "Πέσος Μεξικού"
+
+#: goffice/utils/formats.c:396
+#, fuzzy
+msgid "Australia, Dollars"
+msgstr "Δολλάριο Αυστραλίας"
+
+#: goffice/utils/formats.c:397
+#, fuzzy
+msgid "Aruba, Guilders"
+msgstr "Στερλίνες Αρούμπας"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+#, fuzzy
+msgid "Barbados, Dollars"
+msgstr "Δολλάριο Μπαρμπέιντος"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+#, fuzzy
+msgid "Bulgaria, Leva"
+msgstr "Λέβ Βουλγαρίας"
+
+#: goffice/utils/formats.c:403
+#, fuzzy
+msgid "Bahrain, Dinars"
+msgstr "Δηνάριο Μπαχρέιν"
+
+#: goffice/utils/formats.c:404
+#, fuzzy
+msgid "Burundi, Francs"
+msgstr "Φράγκο Μπουρούντι"
+
+#: goffice/utils/formats.c:405
+#, fuzzy
+msgid "Bermuda, Dollars"
+msgstr "Δολλάριο Βερμούδων"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+#, fuzzy
+msgid "Brazil, Brazil Real"
+msgstr "Ιταλική λίρα"
+
+#: goffice/utils/formats.c:409
+#, fuzzy
+msgid "Bahamas, Dollars"
+msgstr "Δολλάριο Μπαχαμών"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+#, fuzzy
+msgid "Belarus, Rubles"
+msgstr "Λέβ Βουλγαρίας"
+
+#: goffice/utils/formats.c:413
+#, fuzzy
+msgid "Belize, Dollars"
+msgstr "Δολλάριο Μπελίζ"
+
+#: goffice/utils/formats.c:414
+#, fuzzy
+msgid "Canada, Dollars"
+msgstr "Καναδικό δολλάριο"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+#, fuzzy
+msgid "Chile, Pesos"
+msgstr "Πέσος Χιλής"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+#, fuzzy
+msgid "Colombia, Pesos"
+msgstr "Πέσος Κολομβίας"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+#, fuzzy
+msgid "Cuba, Pesos"
+msgstr "Πέσος Κούβας"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+#, fuzzy
+msgid "Cyprus, Pounds"
+msgstr "Λίρα Κύπρου"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+#, fuzzy
+msgid "Djibouti, Francs"
+msgstr "Φράγκο Τζιμπούτι"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+#, fuzzy
+msgid "Dominican Republic, Pesos"
+msgstr "Πέσος Δομηνίκου"
+
+#: goffice/utils/formats.c:428
+#, fuzzy
+msgid "Algeria, Algeria Dinars"
+msgstr "Δηνάριο Αλγερίας"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+#, fuzzy
+msgid "Egypt, Pounds"
+msgstr "Λίρα Αιγύπτου"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+#, fuzzy
+msgid "Fiji, Dollars"
+msgstr "Δολλάριο Φίτζι"
+
+#: goffice/utils/formats.c:435
+#, fuzzy
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Λίρα Νήσων Φώκλαντ"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+#, fuzzy
+msgid "Guernsey, Pounds"
+msgstr "Λίρα Σουδάν"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+#, fuzzy
+msgid "Gibraltar, Pounds"
+msgstr "Λίρες Γιβραλτάρ"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+#, fuzzy
+msgid "Guinea, Francs"
+msgstr "Φράγκο Γουινέας"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+#, fuzzy
+msgid "Guyana, Dollars"
+msgstr "Δολλάριο Γουιάνας"
+
+#: goffice/utils/formats.c:445
+#, fuzzy
+msgid "Hong Kong, Dollars"
+msgstr "Δολλάριο Χόνγκ Κόνγκ"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+#, fuzzy
+msgid "India, Rupees"
+msgstr "Ινδικά ρούπια"
+
+#: goffice/utils/formats.c:454
+#, fuzzy
+msgid "Iraq, Dinars"
+msgstr "Δηνάριο Ιράκ"
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "Δημιουργία γραμμής"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+#, fuzzy
+msgid "Jamaica, Dollars"
+msgstr "Δολλάριο Τζαμάικα"
+
+#: goffice/utils/formats.c:459
+#, fuzzy
+msgid "Jordan, Dinars"
+msgstr "Δηνάριο Ιορδανίας"
+
+#: goffice/utils/formats.c:460
+#, fuzzy
+msgid "Japan, Yen"
+msgstr "Ιαπωνικό γιεν"
+
+#: goffice/utils/formats.c:461
+#, fuzzy
+msgid "Kenya, Shillings"
+msgstr "Σελίνι Κένυας"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+#, fuzzy
+msgid "Kuwait, Dinars"
+msgstr "Δηνάριο Κουβέιτ"
+
+#: goffice/utils/formats.c:468
+#, fuzzy
+msgid "Cayman Islands, Dollars"
+msgstr "Δολλάριο Νήσων Κέυμαν"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+#, fuzzy
+msgid "Lebanon, Pounds"
+msgstr "Λίρα Λιβάνου"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+#, fuzzy
+msgid "Liberia, Dollars"
+msgstr "Δολλάριο Λιβερίας"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+#, fuzzy
+msgid "Libya, Dinars"
+msgstr "Δηνάριο Λιβύης"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+#, fuzzy
+msgid "Malta, Liri"
+msgstr "Λίρα Μάλτας"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+#, fuzzy
+msgid "Mexico, Pesos"
+msgstr "Πέσος Μεξικού"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+#, fuzzy
+msgid "Namibia, Dollars"
+msgstr "Δολλάριο Λιβερίας"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+#, fuzzy
+msgid "New Zealand, Dollars"
+msgstr "Δολλάριο Νέας Ζηλανδίας"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+#, fuzzy
+msgid "Philippines, Pesos"
+msgstr "Πέσος Φιλιππίνων"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "Απρίλιος"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+#, fuzzy
+msgid "Russia, Rubles"
+msgstr "Λέβ Βουλγαρίας"
+
+#: goffice/utils/formats.c:510
+#, fuzzy
+msgid "Rwanda, Rwanda Francs"
+msgstr "Φράγκο Ρουάντας"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+#, fuzzy
+msgid "Solomon Islands, Dollars"
+msgstr "Δολλάριο Νήσων Σολομώντα"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+#, fuzzy
+msgid "Singapore, Dollars"
+msgstr "Δολλάριο Σιγκαπούρης"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+#, fuzzy
+msgid "Somalia, Shillings"
+msgstr "Σελίνι Σομαλίας"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+#, fuzzy
+msgid "Syria, Pounds"
+msgstr "Λίρα Συρίας"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+#, fuzzy
+msgid "Tunisia, Dinars"
+msgstr "Δηνάριο Τυνησίας"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+#, fuzzy
+msgid "Turkey, Liras"
+msgstr "Λίρες Τουρκίας"
+
+#: goffice/utils/formats.c:534
+#, fuzzy
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Δολλάριο Τρινιδάδ και Τομπάγκο"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+#, fuzzy
+msgid "Taiwan, New Dollars"
+msgstr "Νέο δολλάριο Ταϊβάν"
+
+#: goffice/utils/formats.c:537
+#, fuzzy
+msgid "Tanzania, Shillings"
+msgstr "Σελίνι Τανζανίας"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+#, fuzzy
+msgid "Uganda, Shillings"
+msgstr "Σελίνι Ουγκάντας"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+#, fuzzy
+msgid "Uruguay, Pesos"
+msgstr "Πέσος Ουρουγουάης"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+#, fuzzy
+msgid "Silver, Ounces"
+msgstr "Επιλογές Επίλυσης"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+#, fuzzy
+msgid "East Caribbean Dollars"
+msgstr "Δολλάριο Αν. Καραϊβικής"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+#, fuzzy
+msgid "Yugoslavia, New Dinars"
+msgstr "Νέο δηνάριο Γιουγκοσλαβίας"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+#, fuzzy
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Δολλάριο Ζιμπάμπουε"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Καμία"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Στερεό"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Αυτόματο"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "κανένα"
+
+#: goffice/utils/go-marker.c:221
+#, fuzzy
+msgid "square"
+msgstr "Τετράγωνο"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "διαμάντι"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "διάστημα"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Δε_ξιά"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "κύκλος"
+
+#: goffice/utils/go-marker.c:228
+#, fuzzy
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "Σταυρός"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "αστερίσκος"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "Ραβδόγραμμα"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "πεταλούδα"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Γκρι"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% γκρι"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% γκρι"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% γκρι"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% γκρι"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Οριζόντιες Ρίγες"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Κατακόρυφες Ρίγες"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Ανάποδες Διαγώνιες Ρίγες"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Διαγώνιες Ρίγες"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Διαγώνια Ψάθα"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Παχειά Διαγώνια Ψάθα"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Λεπτές Οριζόντιες Ρίγες"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Λεπτές Κατακόρυφες Ρίγες"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Λεπτές Ανάποδες Διαγώνιες Ρίγες"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Λεπτές Διαγώνιες Ρίγες"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Λεπτή Οριζόντια Ψάθα"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Λεπτή Διαγώνια Ψάθα"
+
+#: goffice/utils/go-pattern.c:113
+#, fuzzy
+msgid "Foreground Solid"
+msgstr "Φόντος"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+#, fuzzy
+msgid "Bricks"
+msgstr "Τούβλα"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+#, fuzzy
+msgid "Labels"
+msgstr "Ετικέτες"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Τιμές"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "σφάλμα συντακτικής ανάλυσης\n"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "Επικάλυψη"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "σειρές"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "Ταξινόμιση"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "_Ποσοστό"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Παρεμβολή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Παρεμβολή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Περιοχή"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Περιοχές"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Bar"
+msgstr "Ραβδόγραμμα"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Στήλη"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Γραμμή"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Τίτλοι προς εκτύπωση"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Γραμμές"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "_Ποσοστό"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "_Ποσοστό"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "_Ποσοστό"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "_Ποσοστό"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Ποσοστό"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Ορισμός Ονόματος"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Τίτλοι σειρών και στη_λών"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Μη έγκυρο συνθηματικό"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "σφάλμα συντακτικής ανάλυσης\n"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Ορισμός Ονόματος"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Αλφαριθμ."
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Περιγραφή:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "βαθμοί"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Διαχωριστικό:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Κατηγορία:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "Πίτα 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Δειγματοληψία"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Πολ/μος"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Πολ/μος"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Κυκλικό"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Δακτυλίδι"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Δειγματοληψία"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Δειγματοληψία"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "Ταξινόμιση"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "_Ποσοστό"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "κανονικό-σφάλμα"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Ορισμός Ονόματος"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "σφάλμα συντακτικής ανάλυσης\n"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Ακέραιοι Αριθμοί"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "Χ"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Ψ"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Πλήθος"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Τίτλοι προς εκτύπωση"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Πηγή"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "σφάλμα συντακτικής ανάλυσης\n"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "Κανο&νικό μέγεθος"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Παράμετροι"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Πηγή"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "Ταξινόμιση"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Διπλή"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Διπλή"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "σφάλμα συντακτικής ανάλυσης\n"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "σφάλμα συντακτικής ανάλυσης\n"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Διαγραφή στη_λών"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "ΧΨ"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Γραμμές"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Εκτύπωση"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Γραμμές"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_CA.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_CA.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_CA.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4171 @@
+# English/Canada translation of gnumeric.
+# Copyright (C) 2004-2005 Adam Weinberger and the GNOME Foundation
+# This file is distributed under the same licence as the gnumeric package.
+# Andreas J. Guelzow <aguelzow at italiesin.ca>, 2003.
+# Adam Weinberger <adamw at gnome.org>, 2004, 2005.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-02-16 11:36-0400\n"
+"Last-Translator: Adam Weinberger <adamw at gnome.org>\n"
+"Language-Team: English/Canada <adamw at FreeBSD.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr "Not a valid UTF-8 filename."
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "Saving over old files of this type is disabled for safety."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objective"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "File contains plugin info with invalid id (%s), expected %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Couldn't read plugin info from file."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Unknown name"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Unsupported loader type \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Error while preparing loader \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Error while reading service #%d info."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Can't read plugin info file (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "File \"%s\" is not valid plugin info file."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Errors while reading services for plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Plugin id contains invalid characters (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Unknown plugin name."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "No loader defined or loader id invalid for plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin has no id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Error initializing plugin loader (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Detected cyclic plugin dependencies."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Couldn't activate plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Couldn't find plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Error while activating plugin dependencies."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Error while activating plugin service #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Error while deactivating plugin service #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Cannot load plugin loader."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Couldn't load plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Error while loading plugin dependencies."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Errors occurred while reading plugin informations from file \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Couldn't activate plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Couldn't deactivate plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Errors while reading info about available plugins."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Errors while deactivating plugins that are no longer on disk."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Errors while activating plugins."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Errors while initializing plugin system."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Loader has no set_attributes method.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Loader has no load_base method.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Service '%s' not supported by l."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Module file name not given."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Unable to open module file \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Module file \"%s\" has invalid format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "File doesn't contain (\"plugin_file_struct\" symbol)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "File has a bad magic number."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Plugin version \"%s\" is different from application \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamic module loading is not supported in this system."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Unable to close module file \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "File doesn't contain \"%s\" function."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Module doesn't contain \"%s\" function."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Error while loading plugin service."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Initializing function inside plugin returned error."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Cleanup function inside plugin returned error."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "General"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "File opener has no description"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "File opener - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Error while reading file."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "File saver has no description"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "File saver - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Error while saving file."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Plugin loader"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject loader"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "No \"type\" attribute on \"service\" element."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Unknown service type: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Error reading service information."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "pages"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indent:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Search for"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Alignment"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Quote _character:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Problem Size"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discrete"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Discrete mapping"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Linear"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Linear mapping"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Logarithm mapping"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Details"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatic"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Categories between _ticks"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Categories between _labels"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr "_Cross at category #"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Bounds"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Ma_jor Ticks"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Mi_nor Ticks"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Cross"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Label"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "MinorGrid"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "MajorGrid"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Major ticks</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mapping</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Minor ticks</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Position</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "O_utside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_High"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Inside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Invert axis"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Low"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Outside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Show Labels"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legend"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Title"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Grid"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-Axis"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-Axis"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-Axis"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Circular-Axis"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Radial-Axis"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Plot"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Height"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Width"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "No error bar displayed"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Positive error bar displayed"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Negative error bar displayed"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Full error bar displayed"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Error category</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Style</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Values</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Colo_ur:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "Dis_play:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Line width:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Width:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graph"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Chart"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Name"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Step 1 of 2: Select Chart Type"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Step 2 of 2: Customize Chart"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Customize Chart"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Insert"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "_Plot Type"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME Office Graph"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Pull f_orward"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Pull to _front"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Push b_ackward"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Push to _back"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Order"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definition</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Pattern</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Style</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Sample"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Description"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Text:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Series"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Plot Engine"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Plot Type"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Chart Theme"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Index:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Settings"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Point"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Font"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Style"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 Colours\n"
+"Brightness"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Fill</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Line</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Marker</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Outline</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Co_lour:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "O_utline colour:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "Sha_pe:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Si_ze:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "St_yle:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ype:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Background:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Direction:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_End:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Fill colour:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Fit:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Foreground:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Pattern:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Select..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Size:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Start:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_brighter"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_darker"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"stretched\n"
+"wallpaper"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Default"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabic"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltic"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Central European"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chinese"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Greek"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebrew"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indian"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japanese"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Korean"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turkish"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamese"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Western"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Other"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabic (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabic (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabic (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabic (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabic (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabic (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabic (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armenian (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltic (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltic (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltic (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtic (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Central European (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Central European (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Central European (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Central European (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinese Simplified (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinese Simplified (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chinese Simplified (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chinese Simplified (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chinese Simplified (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinese Traditional (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinese Traditional (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chinese Traditional (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croatian (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrillic (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrillic (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrillic (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrillic (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cyrillic (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrillic (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russian (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainian (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainian (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "English (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgian (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Greek (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Greek (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Greek (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrew (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebrew (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebrew (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrew (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrew (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Icelandic (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japanese (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanese (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanese (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Korean (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Korean (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Korean (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Korean (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordic (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Romanian (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Romanian (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "South European (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turkish (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turkish (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turkish (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turkish (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "User Defined"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamese (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamese (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamese (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamese (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visual Hebrew (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Western (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Western (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Western (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Western (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Western (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Conversion Direction"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "This value determines which iconv test to perform."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "black"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "light brown"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "brown gold"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "dark green #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "navy"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "dark blue"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "purple #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "very dark grey"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "dark red"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "red-orange"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "gold"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "dark green"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "dull blue"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blue"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "dull purple"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "dark grey"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "red"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "orange"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "lime"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "dull green"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "dull blue #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "sky blue #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "purple"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grey"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "bright orange"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "yellow"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "green"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "bright blue"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "red purple"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "light grey"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "pink"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "light orange"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "light yellow"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "light green"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "light cyan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "light blue"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "light purple"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "white"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "purplish blue"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "dark purple"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "sky blue"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "custom"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Custom Colour..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Shadow type"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientation"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Preferred width"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Preferred height"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Dock the toolbar"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Un-dock the toolbar"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Unable to open file '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "All Files"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Images"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Select an Image"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Save as"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "File _type:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"is a directory name"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"You do not have permission to save to\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"A file named <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to overwrite it?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Bold"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Bold italic"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Italic"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr "AaBbCcDdEe12345"
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Font style:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Font:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Preview"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Size:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Number"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Currency"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Accounting"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Date"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Time"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Percentage"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fraction"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Scientific"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Text"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Special"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Custom"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Negative Number Format"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Number Formats"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tegories:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Deci_mal places:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Display amounts in traditional accounting styles."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Display and input values as strings with no interpretation."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Display currency amounts."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Display dates and optionally times of day."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Display numeric values with a fixed number of decimals."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Display times of day."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Display values as closest fractional approximation."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Display values as percentages."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Display values with power-of-ten scaling."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Format c_ode:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Negative number _format:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Preview:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Select an appropriate format automatically."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Specify an XL-style format directly"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Use Separator for 1000's"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Western Europe"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Eastern Europe"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "North America"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "South & Central America"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Africa"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "United States/English (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "South Africa Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Ethiopia/Amharic (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "United Arab Emirates (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algeria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypt (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/Arabic (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraq (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordan (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Lebanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libya (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Morocco (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi Arabia (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaijan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Belarus (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "France/Breton (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia and Herzegowina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spain/Catalan (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Czech Republic (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Great Britain/Welsh (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Denmark (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austria (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgium/German (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Switzerland/German (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Germany (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourg/German (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Greece (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canada/English (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Great Britain (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/English (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Ireland (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/English (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealand (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Philippines (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/English (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "United States/English (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "South Africa/English (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominican Republic (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spain (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexico (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "United States/Spanish (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonia (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spain/Basque (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finland/Finnish (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Faroe Islands (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgium/French (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canada/French (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Switzerland/French (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "France (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Ireland/Gaelic (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Great Britain/Scottish Gaelic (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spain/Galician (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Great Britain/Manx Gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croatia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Hungary (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Iceland (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Switzerland/Italian (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italy (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebrew (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Greenland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Great Britain/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lithuania (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Latvia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "New Zealand/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaysia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgium/Flemish (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "The Netherlands (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norway/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norway/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "France/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Poland (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romania (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russia (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraine/Russian (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norway/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Yugoslavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finland/Swedish (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Sweden (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tajikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Ethiopia/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Philippines/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turkey (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Russia/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraine (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgium/Walloon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "United States/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "China (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chinese (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/Chinese (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Current Locale: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "The menu of options"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Indicator Size"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Size of dropdown indicator"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indicator Spacing"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Spacing around indicator"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Sun"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Mon"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Tue"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Wed"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Thu"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Fri"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sat"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Sunday"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Monday"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Tuesday"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Wednesday"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Thursday"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Friday"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Saturday"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*May"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Oct"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "January"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "February"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "March"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "May"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "June"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "July"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "October"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "December"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Black"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blue"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Green"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Red"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "White"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Yellow"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "United Arab Emirates, Dirhams"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, Afghanis"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, Leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, Drams"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Netherlands Antilles, Guilders"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, Pesos"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, Dollars"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Guilders"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaijan, Manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnia and Herzegovina, Convertible Marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dollars"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria, Leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, Dinars"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Francs"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, Dollars"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, Dollars"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, Bolivianos"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazil, Brazil Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, Dollars"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, Pulas"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Belarus, Rubles"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dollars"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, Dollars"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo/Kinshasa, Congolese Francs"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Switzerland, Francs"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, Pesos"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "China, Yuan Renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, Pesos"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, Colones"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, Pesos"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde, Escudos"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cyprus, Pounds"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Czech Republic, Koruny"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, Francs"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Denmark, Kroner"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominican Republic, Pesos"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algeria, Algeria Dinars"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia, Krooni"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypt, Pounds"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Ethiopia, Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro Member Countries, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, Dollars"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland Islands (Malvinas), Pounds"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "United Kingdom, Pounds"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgia, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, Pounds"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, Cedis"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, Pounds"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, Francs"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, Quetzales"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, Dollars"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, Dollars"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempiras"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croatia, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, Gourdes"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hungary, Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia, Rupiahs"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, New Shekels"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, Pounds"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, Rupees"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraq, Dinars"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, Rials"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Iceland, Kronur"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Pounds"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, Dollars"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan, Dinars"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, Yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, Shillings"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kyrgyzstan, Soms"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Cambodia, Riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comoros, Francs"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (North), Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (South), Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, Dinars"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Cayman Islands, Dollars"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakstan, Tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kips"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Lebanon, Pounds"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, Rupees"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, Dollars"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, Maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lithuania, Litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvia, Lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libya, Dinars"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Morocco, Dirhams"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldova, Lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagascar, Malagasy Francs"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedonia, Denars"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), Kyats"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia, Tugriks"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, Patacas"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritania, Ouguiyas"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, Liri"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, Rupees"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldives (Maldive Islands), Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, Kwachas"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexico, Pesos"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysia, Ringgits"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambique, Meticais"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, Dollars"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, Nairas"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, Gold Cordobas"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norway, Krone"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, Nepal Rupees"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "New Zealand, Dollars"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, Rials"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, Balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, Nuevos Soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua New Guinea, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Philippines, Pesos"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, Rupees"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Poland, Zlotys"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, Rials"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania, Lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russia, Rubles"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, Rwanda Francs"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi Arabia, Riyals"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon Islands, Dollars"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychelles, Rupees"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, Dinars"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Sweden, Kronor"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore, Dollars"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Saint Helena, Pounds"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenia, Tolars"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakia, Koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, Leones"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, Shillings"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname, Guilders"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome and Principe, Dobras"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Colones"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syria, Pounds"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, Emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand, Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tajikistan, Rubles"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, Manats"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisia, Dinars"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turkey, Liras"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad and Tobago, Dollars"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Tuvalu Dollars"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, New Dollars"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, Shillings"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraine, Hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Shillings"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "United States of America, Dollars"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, Pesos"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, Sums"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, Bolivares"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Viet Nam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, Francs"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Silver, Ounces"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Gold, Ounces"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "East Caribbean Dollars"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "International Monetary Fund (IMF) Special Drawing Rights"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Francs"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, Ounces"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, Ounces"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, Rials"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Yugoslavia, New Dinars"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "South Africa, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, Zimbabwe Dollars"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "None"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Solid"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Dash"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Dot"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Dash dot"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Dash dot dot"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatic (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "none"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "square"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamond"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triangle down"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triangle up"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triangle right"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triangle left"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "circle"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "cross"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterisk"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "bar"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "half bar"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "butterfly"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "hourglass"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% Grey"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% Grey"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% Grey"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Grey"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Grey"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horizontal Stripe"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Vertical Stripe"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Reverse Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonal Crosshatch"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Thick Diagonal Crosshatch"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Thin Horizontal Stripe"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Thin Vertical Stripe"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Thin Reverse Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Thin Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Thin Horizontal Crosshatch"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Thin Diagonal Crosshatch"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Foreground Solid"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Small Circles"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semi Circles"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Thatch"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Large Circles"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Bricks"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Labels"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Values"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Error bars"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "PlotBarCol"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "How far the bars/cols overlap as a percentage of the width"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "O_verlap:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Separation between groups as a percentage of bar/col width"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Gap:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "PlotLine"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "PlotArea"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D Adjacent Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D Adjacent Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D Percentage Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D Percentage Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D Stacked Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D Stacked Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Adjacent Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Adjacent Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr "Adjacent horizontal 3D bars grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr "Adjacent horizontal bars grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr "Adjacent vertical 3D columns grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Adjacent vertical columns grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Area"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Area plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Areas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Bar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Column"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Line"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Line plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr "Minor categories stacked in horizontal bars grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Minor categories stacked in vertical columns grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Percentage Areas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Percentage Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Percentage Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Percentage Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Percentage area plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Percentage line plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Stacked Areas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Stacked Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Stacked Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Stacked Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Stacked area plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Stacked line plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Unmarked Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Unmarked Percentage Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Unmarked Stacked Lines"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Area plotting engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Bar/Col plotting engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Charting : Bar/Col/Line/Area"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Default 1.5d plot types"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Line plotting engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Line, Area, Bar and Column plots"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr "Box-Plot"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr "Invalid data."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr "BoxPlot"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr "BoxPlots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr "Box-Plots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr "Box-plot plotting engine"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr "Charting : Box-Plots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Default surface plot types"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "PlotPie"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "PlotRing"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s point %d\n"
+"Value %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Degrees counter clockwise from 3 O'Clock"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Slices start _at:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"The default amount each slice is separated from the centre measured as a "
+"percentage of the radius of the pie"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Slice Separation:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Vary colours by slice"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "degrees"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"The amount this slice is separated from the centre measured as a percentage "
+"of the radius of the pie"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separation:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Cen_tre size:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D Split Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Multi-Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Multi-pie-bars"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Percentage of each contributor displayed in ring for each serie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Percentage of each contributor in 3D pie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Percentage of each contributor with 3D wedges split apart."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Percentage of each contributor with wedges split apart."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Percentage of each contributor."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Split Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Split Ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Charting : Pie/Ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Default pie types"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Pie and Ring plots"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Pie plotting engine"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Ring plotting engine"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "PlotRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "PlotRadarArea"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Area Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Area radar plot."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Dotted Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Radar plot with dots."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radar plot."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Charting : Radial plots"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Default radar plot types"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Radar Area plotting engine"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Radar plotting engine"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Radial/Radar plots"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "_Slices number:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "PlotContour"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Contour"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Contour plot."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Surface"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Contour plotting engine"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Surface Charts"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Surface charts"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% of default size"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dia_meter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Show _negative values"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Sur_face"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Bubbles scaled to"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Size represented by:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Vary colours by bubble"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "PlotXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "PlotBubble"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bubble"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Y Error bars"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "X Error bars"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpolate between multi-dimensional points with Bezier splines."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Linearly interpolate between multi-dimensional points."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Markers at each point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Multi-dimensional points with circle at each point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Plot X, Y and bubble size."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY Lines"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY Points"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+msgid "XY Splines"
+msgstr "XY Splines"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D plots"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2D scatter plotting engine"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Bubble plotting engine"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Charting : XY/Scatter/Bubble"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Stock Scatter plot types"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_GB.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_GB.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/en_GB.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4171 @@
+# gnumeric en_GB.po
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Karl Eichwalder <ke at suse.de>, 2001.
+# Robert Brady <rwb197 at zepler.org>, 2001.
+# 
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-02-15 22:58+0100\n"
+"Last-Translator: David Lodge <dave at cirt.net>\n"
+"Language-Team: English/GB <en_GB at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr "Not a valid UTF-8 filename."
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "Saving over old files of this type is disabled for safety."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objective"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "File contains plugin info with invalid id (%s), expected %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Couldn't read plugin info from file."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Unknown name"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Unsupported loader type \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Error while preparing loader \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Error while reading service #%d info."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Can't read plugin info file (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "File \"%s\" is not valid plugin info file."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Errors while reading services for plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Plugin id contains invalid characters (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Unknown plugin name."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "No loader defined or loader id invalid for plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin has no id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Error initialising plugin loader (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Detected cyclic plugin dependencies."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Couldn't activate plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Couldn't find plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Error while activating plugin dependencies."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Error while activating plugin service #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Error while deactivating plugin service #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Cannot load plugin loader."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Couldn't load plugin with id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Error while loading plugin dependencies."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Errors occurred while reading plugin informations from file \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Couldn't activate plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Couldn't deactivate plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Errors while reading info about available plugins."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Errors while deactivating plugins that are no longer on disk."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Errors while activating plugins."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Errors while initialising plugin system."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Loader has no set_attributes method.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Loader has no load_base method.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Service '%s' not supported by l."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Module file name not given."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Unable to open module file \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Module file \"%s\" has invalid format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "File doesn't contain (\"plugin_file_struct\" symbol)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "File has a bad magic number."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Plugin version \"%s\" is different from application \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamic module loading is not supported in this system."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Unable to close module file \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "File doesn't contain \"%s\" function."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Module doesn't contain \"%s\" function."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Error while loading plugin service."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Initialising function inside plugin returned error."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Cleanup function inside plugin returned error."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "General"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "File opener has no description"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "File opener - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Error while reading file."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "File saver has no description"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "File saver - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Error while saving file."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Plugin loader"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject loader"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "No \"type\" attribute on \"service\" element."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Unknown service type: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Error reading service information."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "pages"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indent:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Search for"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Alignment"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Quote _character:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Problem Size"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discrete"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Discrete mapping"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Linear"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Linear mapping"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Logarithm mapping"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Details"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatic"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Categories between _ticks"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Categories between _labels"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr "_Cross at category #"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Bounds"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Ma_jor Ticks"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Mi_nor Ticks"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Cross"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Label"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "MinorGrid"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "MajorGrid"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Major ticks</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mapping</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Minor ticks</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Position</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "O_utside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_High"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Inside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Invert axis"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Low"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Outside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Show Labels"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legend"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Title"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Grid"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-Axis"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-Axis"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-Axis"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Circular-Axis"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Radial-Axis"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Plot"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Height"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Width"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "No error bar displayed"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Positive error bar displayed"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Negative error bar displayed"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Full error bar displayed"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Error category</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Style</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Values</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Colo_ur:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "Dis_play:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Line width:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Width:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graph"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Chart"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Name"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Step 1 of 2: Select Chart Type"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Step 2 of 2: Customise Chart"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Customise Chart"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Insert"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "_Plot Type"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME Office Graph"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Pull f_orward"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Pull to _front"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Push b_ackward"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Push to _back"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Order"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definition</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Pattern</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Style</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Sample"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Description"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Text:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Series"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Plot Engine"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Plot Type"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Chart Theme"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Index:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Settings"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Point"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Font"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Style"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 Colours\n"
+"Brightness"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Fill</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Line</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Marker</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Outline</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Co_lour:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "O_utline colour:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "Sha_pe:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Si_ze:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "St_yle:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ype:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Background:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Direction:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_End:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Fill colour:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Fit:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Foreground:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Pattern:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Select..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Size:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Start:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_brighter"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_darker"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"stretched\n"
+"wallpaper"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Default"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabic"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltic"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Central European"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chinese"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Greek"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebrew"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indian"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japanese"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Korean"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turkish"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamese"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Western"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Other"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabic (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabic (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabic (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabic (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabic (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabic (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabic (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armenian (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltic (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltic (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltic (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtic (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Central European (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Central European (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Central European (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Central European (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinese Simplified (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinese Simplified (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chinese Simplified (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chinese Simplified (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chinese Simplified (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinese Traditional (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinese Traditional (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chinese Traditional (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croatian (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrillic (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrillic (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrillic (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrillic (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cyrillic (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrillic (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russian (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainian (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainian (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "English (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgian (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Greek (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Greek (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Greek (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrew (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebrew (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebrew (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrew (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrew (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Icelandic (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japanese (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanese (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanese (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Korean (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Korean (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Korean (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Korean (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordic (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Romanian (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Romanian (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "South European (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turkish (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turkish (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turkish (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turkish (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "User Defined"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamese (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamese (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamese (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamese (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visual Hebrew (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Western (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Western (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Western (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Western (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Western (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Conversion Direction"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "This value determines which iconv test to perform."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "black"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "light brown"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "brown gold"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "dark green #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "navy"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "dark blue"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "purple #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "very dark grey"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "dark red"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "red-orange"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "gold"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "dark green"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "dull blue"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blue"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "dull purple"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "dark grey"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "red"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "orange"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "lime"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "dull green"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "dull blue #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "sky blue #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "purple"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grey"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "bright orange"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "yellow"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "green"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "bright blue"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "red purple"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "light grey"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "pink"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "light orange"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "light yellow"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "light green"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "light cyan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "light blue"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "light purple"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "white"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "purplish blue"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "dark purple"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "sky blue"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "custom"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Custom Colour..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Shadow type"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientation"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Preferred width"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Preferred height"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Dock the toolbar"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Un dock the toolbar"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Unable to open file '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "All Files"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Images"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Select an Image"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Save as"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "File _type:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"is a directory name"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"You do not have permission to save to\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Bold"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Bold italic"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Italic"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr "AaBbCcDdEe12345"
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Font style:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Font:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Preview"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Size:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Number"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Currency"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Accounting"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Date"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Time"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Percentage"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fraction"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Scientific"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Text"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Special"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Custom"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Negative Number Format"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Number Formats"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tegories:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Deci_mal places:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Display amounts in traditional accounting styles."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Display and input values as strings with no interpretation."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Display currency amounts."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Display dates and optionally times of day."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Display numeric values with a fixed number of decimals."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Display times of day."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Display values as closest fractional approximation."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Display values as percentages."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Display values with power-of-ten scaling."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Format c_ode:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Negative number _format:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Preview:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Select an appropriate format automatically."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Specify an XL-style format directly"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Use Separator for 1000's"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Western Europe"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Eastern Europe"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "North America"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "South & Central America"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Africa"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "United States/English (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "South Africa Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Ethiopia/Amharic (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "United Arab Emirates (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algeria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypt (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/Arabic (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraq (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordan (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Lebanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libya (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Morocco (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi Arabia (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaijan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Belarus (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "France/Breton (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia and Herzegowina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spain/Catalan (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Czech Republic (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Great Britain/Welsh (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Denmark (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austria (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgium/German (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Switzerland/German (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Germany (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourg/German (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Greece (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canada/English (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Great Britain (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/English (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Ireland (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/English (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealand (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Philippines (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/English (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "United States/English (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "South Africa/English (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominican Republic (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spain (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexico (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "United States/Spanish (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonia (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spain/Basque (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finland/Finnish (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Faroe Islands (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgium/French (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canada/French (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Switzerland/French (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "France (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Ireland/Gaelic (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Great Britain/Scottish Gaelic (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spain/Galician (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Great Britain/Manx Gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croatia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Hungary (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Iceland (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Switzerland/Italian (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italy (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebrew (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Greenland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Great Britain/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lithuania (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Latvia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "New Zealand/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaysia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgium/Flemish (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "The Netherlands (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norway/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norway/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "France/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Poland (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romania (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russia (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraine/Russian (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norway/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Yugoslavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finland/Swedish (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Sweden (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tajikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Ethiopia/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Philippines/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turkey (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Russia/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraine (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgium/Walloon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "United States/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "China (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chinese (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/Chinese (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Current Locale: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "The menu of options"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Indicator Size"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Size of dropdown indicator"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indicator Spacing"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Spacing around indicator"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Sun"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Mon"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Tue"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Wed"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Thu"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Fri"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sat"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Sunday"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Monday"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Tuesday"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Wednesday"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Thursday"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Friday"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Saturday"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*May"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Oct"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "January"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "February"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "March"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "May"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "June"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "July"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "October"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "December"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Black"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blue"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Green"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Red"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "White"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Yellow"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "United Arab Emirates, Dirhams"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, Afghanis"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, Leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, Drams"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Netherlands Antilles, Guilders"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, Pesos"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, Dollars"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Guilders"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaijan, Manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnia and Herzegovina, Convertible Marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dollars"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria, Leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, Dinars"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Francs"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, Dollars"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, Dollars"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, Bolivianos"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazil, Brazil Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, Dollars"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, Pulas"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Belarus, Rubles"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dollars"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, Dollars"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo/Kinshasa, Congolese Francs"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Switzerland, Francs"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, Pesos"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "China, Yuan Renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, Pesos"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, Colones"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, Pesos"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde, Escudos"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cyprus, Pounds"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Czech Republic, Koruny"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, Francs"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Denmark, Kroner"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominican Republic, Pesos"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algeria, Algeria Dinars"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia, Krooni"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypt, Pounds"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Ethiopia, Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro Member Countries, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, Dollars"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland Islands (Malvinas), Pounds"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "United Kingdom, Pounds"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgia, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, Pounds"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, Cedis"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, Pounds"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, Francs"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, Quetzales"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, Dollars"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, Dollars"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempiras"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croatia, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, Gourdes"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hungary, Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia, Rupiahs"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, New Shekels"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, Pounds"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, Rupees"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraq, Dinars"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, Rials"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Iceland, Kronur"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Pounds"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, Dollars"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan, Dinars"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, Yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, Shillings"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kyrgyzstan, Soms"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Cambodia, Riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comoros, Francs"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (North), Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (South), Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, Dinars"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Cayman Islands, Dollars"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakstan, Tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kips"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Lebanon, Pounds"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, Rupees"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, Dollars"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, Maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lithuania, Litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvia, Lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libya, Dinars"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Morocco, Dirhams"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldova, Lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagascar, Malagasy Francs"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedonia, Denars"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), Kyats"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia, Tugriks"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, Patacas"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritania, Ouguiyas"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, Liri"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, Rupees"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldives (Maldive Islands), Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, Kwachas"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexico, Pesos"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysia, Ringgits"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambique, Meticais"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, Dollars"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, Nairas"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, Gold Cordobas"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norway, Krone"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, Nepal Rupees"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "New Zealand, Dollars"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, Rials"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, Balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, Nuevos Soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua New Guinea, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Philippines, Pesos"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, Rupees"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Poland, Zlotys"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, Rials"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania, Lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russia, Rubles"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, Rwanda Francs"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi Arabia, Riyals"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon Islands, Dollars"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychelles, Rupees"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, Dinars"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Sweden, Kronor"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore, Dollars"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Saint Helena, Pounds"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenia, Tolars"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakia, Koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, Leones"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, Shillings"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname, Guilders"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome and Principe, Dobras"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Colones"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syria, Pounds"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, Emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand, Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tajikistan, Rubles"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, Manats"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisia, Dinars"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turkey, Liras"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad and Tobago, Dollars"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Tuvalu Dollars"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, New Dollars"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, Shillings"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraine, Hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Shillings"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "United States of America, Dollars"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, Pesos"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, Sums"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, Bolivares"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Viet Nam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, Francs"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Silver, Ounces"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Gold, Ounces"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "East Caribbean Dollars"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "International Monetary Fund (IMF) Special Drawing Rights"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Francs"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, Ounces"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, Ounces"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, Rials"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Yugoslavia, New Dinars"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "South Africa, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, Zimbabwe Dollars"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "None"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Solid"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Dash"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Dot"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Dash dot"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Dash dot dot"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatic (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "none"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "square"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamond"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triangle down"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triangle up"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triangle right"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triangle left"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "circle"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "cross"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterisk"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "bar"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "half bar"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "butterfly"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "hourglass"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% Grey"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% Grey"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% Grey"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Grey"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Grey"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horizontal Stripe"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Vertical Stripe"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Reverse Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonal Crosshatch"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Thick Diagonal Crosshatch"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Thin Horizontal Stripe"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Thin Vertical Stripe"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Thin Reverse Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Thin Diagonal Stripe"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Thin Horizontal Crosshatch"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Thin Diagonal Crosshatch"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Foreground Solid"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Small Circles"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semi Circles"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Thatch"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Large Circles"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Bricks"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Labels"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Values"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Error bars"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "PlotBarCol"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "How far the bars/cols overlap as a percentage of the width"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "O_verlap:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Separation between groups as a percentage of bar/col width"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Gap:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "PlotLine"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "PlotArea"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D Adjacent Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D Adjacent Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D Percentage Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D Percentage Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D Stacked Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D Stacked Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Adjacent Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Adjacent Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr "Adjacent horizontal 3D bars grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr "Adjacent horizontal bars grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr "Adjacent vertical 3D columns grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Adjacent vertical columns grouped by major and minor categories."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Area"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Area plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Areas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Bar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Column"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Line"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Line plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr "Minor categories stacked in horizontal bars grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Minor categories stacked in vertical columns grouped by major category."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Percentage Areas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Percentage Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Percentage Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Percentage Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Percentage area plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Percentage line plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Stacked Areas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Stacked Bars"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Stacked Columns"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Stacked Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Stacked area plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Stacked line plot."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Unmarked Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Unmarked Percentage Lines"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Unmarked Stacked Lines"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Area plotting engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Bar/Col plotting engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Charting : Bar/Col/Line/Area"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Default 1.5d plot types"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Line plotting engine"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Line, Area, Bar and Column plots"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr "Box-Plot"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr "Invalid data."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr "BoxPlot"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr "BoxPlots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr "Box-Plots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr "Box-plot plotting engine"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr "Charting : Box-Plots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Default surface plot types"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "PlotPie"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "PlotRing"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s point %d\n"
+"Value %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Degrees anti-clockwise from 3 O'Clock"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Slices start _at:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"The default amount each slice is separated from the centre measured as a "
+"percentage of the radius of the pie"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Slice Separation:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Vary colours by slice"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "degrees"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"The amount this slice is separated from the centre measured as a percentage "
+"of the radius of the pie"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separation:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Cen_tre size:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D Split Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Multi-Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Multi-pie-bars"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Percentage of each contributor displayed in ring for each series with wedges "
+"of the last ring split apart."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Percentage of each contributor displayed in ring for each serie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Percentage of each contributor in 3D pie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Percentage of each contributor with 3D wedges split apart."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Percentage of each contributor with wedges split apart."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Percentage of each contributor."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Split Pie"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Split Ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Charting : Pie/Ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Default pie types"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Pie and Ring plots"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Pie plotting engine"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Ring plotting engine"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "PlotRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "PlotRadarArea"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Area Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Area radar plot."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Dotted Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Radar plot with dots."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radar plot."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Charting: Radial plots"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Default radar plot types"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Radar Area plotting engine"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Radar plotting engine"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Radial/Radar plots"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "_Slices number:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "PlotContour"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Contour"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Contour plot."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Surface"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Contour plotting engine"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Surface Charts"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Surface charts"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% of default size"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dia_meter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Show _negative values"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Sur_face"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Bubbles scaled to"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Size represented by:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Vary colours by bubble"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "PlotXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "PlotBubble"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bubble"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Y Error bars"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "X Error bars"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpolate between multi-dimensional points with Bezier splines."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Linearly interpolate between multi-dimensional points."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Markers at each point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Multi-dimensional points with circle at each point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Plot X, Y and bubble size."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY Lines"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY Points"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+msgid "XY Splines"
+msgstr "XY Splines"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D plots"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2D scatter plotting engine"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Bubble plotting engine"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Charting : XY/Scatter/Bubble"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Stock Scatter plot types"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/es.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/es.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/es.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4217 @@
+# Spanish translation of gnumeric
+# Copyright © 1998,2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gnumeric package.
+# Alfonso  Pedereño García-LaPuya, 2002.
+# Federico Mena Quintero,Pregonero <federico at casiopea.quartic.org>, 1998.
+# Pablo Saratxaga <pablo at mandrakesoft.com>, 1999-2000.
+# Germán Poo Caamaño <gpoo at ubiobio.cl>, 2001.
+# Juan Manuel García Molina <juanma_gm at wanadoo.es>, 2002.
+# Francisco Javier F. Serrador <serrador at cvs.gnome.org>, 2004, 2005.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-01-11 02:27+0100\n"
+"Last-Translator: Francisco Javier F. Serrador <serrador at cvs.gnome.org>\n"
+"Language-Team: Spanish <traductores at es.gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Por seguridad, se ha deshabilitado la opción de guardar sobre un archivo "
+"antiguo de este tipo."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Puede desactivar esta característica en forma segura, editando el archivo "
+"plugin.xml apropiado."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objetivo"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"El archivo contiene información del complemento con un identificador "
+"inválido (%s). Se esperaba %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "No se puede leer la información del complemento del archivo."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nombre desconocido"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "No hay soporte para el tipo de cargador «%s»."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Error al intentar cargar «%s»."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Ha ocurrido un error al leer la información del servicio #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "No se puede leer el archivo de información del complemento («%s»)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+"El archivo «%s» no es un archivo válido de información de complementos."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+"Han ocurrido errores al leer los servicios del complemento con "
+"identificador=«%s»."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "El identificador del complemento contiene caracteres inválidos (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nombre desconocido del complemento."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"No se encuentra definido un cargador para el complemento con identificador=«%"
+"s»."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "El complemento no tiene identificador."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Error inicializando el cargador del complemento («%s» )."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Se han detectado dependencias cíclicas del complemento."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "No se puede activar el complemento con identificador=«%s»."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "No se encuentra el complemento con identificador=«%s»."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Error al activar las dependencias del complemento."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Ha ocurrido un error al activar el servicio de complementos #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Ha ocurrido un error al desactivar el servicio de complementos #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "No se puede cargar el cargador de complementos."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "No se pudo cargar el complemento con identificador=«%s»."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Error al intentar cargar las dependencias del complemento."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Han ocurrido errores al leer la información del complemento desde el archivo "
+"«%s»."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "No se puede activar el complemento «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "No se puede desactivar el complemento «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+"Ha ocurrido un error al leer la información sobre los complementos "
+"disponibles."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+"Ha ocurrido un error al desactivar el complementos que ya no están en el "
+"disco."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Los siguientes complementos no están más en el disco pero están todavía "
+"activos:\n"
+"%s\n"
+"Debería reiniciar Gnumeric ahora."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Han ocurrido errores al activar los complementos."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Han ocurrido errores al inicializar el sistema de complementos."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "El cargador no tiene el método set_attributes.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "El cargado no tiene el método load_base.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "El servicio «%s» no está soportado por el cargador."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "No se dado el nombre del archivo."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Es imposible abrir el archivo del módulo «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "El archivo del módulo «%s» no tiene un formato válido."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "El archivo no contiene el símbolo ·\"plugin_file_struct\"."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "El archivo tiene un número mágico erróneo."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "La versión del complemento «%s» es diferente de la aplicación «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "El módulo de carga dinámica no se encuentra soportado en el sistema."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Es imposible cerrar el archivo del módulo «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "El archivo no contiene la función «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "El módulo no contiene la función «%s»."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Ha ocurrido un error al cargar el servicio de complementos."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "La función de inicialización del complemento ha devuelto un error."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "La función de limpieza interna del complemento ha devuelto un error."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "General"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "El abridor de archivos no tiene descripción"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Abridor de archivos - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Error al leer archivo."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "El guardador de archivos no tiene descripción"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Guardador de archivos %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Error al guardar archivo."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Cargador de complementos"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Cargador GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "No hay atributo «tipo» en el elemento «servicio»."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "El tipo de servicio es desconocido: «%s»."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Ha ocurrido un error al leer la información del servicio."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Se debe cargar un servicio antes de activarlo (PLUGIN_ALWAYS_LOAD está "
+"establecido) pero la carga ha fallado."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "páginas"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Sangrado:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Buscar"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Alineación"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "_Carácter de cita:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Tamaño del problema"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discreto"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Mapeo discreto"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Lineal"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Mapeado lineal"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Mapeo logarítmico"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detalles"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automático"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Categorías entre _tics"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Categorías entre _etiquetas"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr "_Cruzar en la categoría #"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Bordes"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "Mí_n"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_áx"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Tics ma_yores"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Tics me_nores"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Cruzar"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formato"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etiqueta"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "RejillaMenor"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "RejillaMayor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Tics mayores</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mapeo</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Tics menores</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Posición</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nterior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Exterior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Alto"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Interior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Invertir eje"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Bajo"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Exterior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "Mo_strar etiquetas"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tipo:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Leyenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Título"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Rejilla"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Eje-X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Eje-Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Eje-Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Eje circular"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Eje radial"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Gráfico"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Altura"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "O"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Anchura"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Ninguna barra de error mostrada"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Barra de error positiva mostrada"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Barra de error negativa mostrada"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Barra de error completa mostrada"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Categoría del  error</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Estilo</b>"
+
+# Muestra o ejemplo? serrador at arrakis.es
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Valores</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "_Color:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "_Pantalla:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Ninguno\n"
+"Absoluto\n"
+"Relativo\n"
+"Porcentaje"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "Anchura de la _línea:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Anchura:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Gráfico"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Diagrama"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nombre"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Paso 1 de 2: Seleccione el tipo de diagrama"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Paso 2 de 2: Personalice su diagrama"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Personalizar diagrama"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Insertar"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Tipo de _gráfico"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Diagrama de GNOME Office"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Tirar hacia _adelante"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Tirar hasta el _frente"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Empujar _atrás"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Empujar hasta el fon_do"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Orden"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definición</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Patrón</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Estilo</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Ejemplo"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Descripción"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Texto:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Datos"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Series"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Motor de gráficos"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Tipo de gráfico"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Tema de diagrama"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Índice:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Configuración"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punto"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Tipografía"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Estilo"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 colores\n"
+"Brillo"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Relleno</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Línea</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Marcador</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Línea exterior</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Co_lor:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Ninguno\n"
+"Patrón\n"
+"Degradado\n"
+"Imagen"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Color del _borde exterior:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Forma:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Tamaño:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "_Estilo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ipo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Fondo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Dirección:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Fin:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Color de _relleno:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Ajuste:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Primer plano:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Patrón:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Seleccionar..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Tamaño:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Principio:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "más _brillante"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "más _oscuro"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "puntos"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"tapiz\n"
+"estirado"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Predeterminado"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Árabe"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Báltico"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Centroeuropeo"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chino"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cirílico"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Griego"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebreo"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indio"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japonés"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Coreano"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turco"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamita"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Occidental"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Otro"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Árabe (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Árabe (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Árabe (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Árabe (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Árabe (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Árabe (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Árabe (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armenio (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Báltico (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Báltico (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Báltico (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celta (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Centroeuropeo (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Centroeuropeo (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Centroeuropeo (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Centroeuropeo (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chino simplificado (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chino simplificado (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chino simplificado (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chino simplificado (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chino simplificado (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chino tradicional (Big 5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chino tradicional (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chino tradicional (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croata (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirílico (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirílico (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirílico (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirílico (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cirílico (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirílico (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Ruso (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ucraniano (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ucraniano (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Inglés (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgiano (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Griego (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Griego (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Griego (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreo (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebreo (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebreo (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebreo (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreo (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandés (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japonés (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonés (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonés (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Coreano (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Coreano (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Coreano (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Coreano (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nórdico (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumano (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumano (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Sur de Europa (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tailandés (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turco (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turco (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turco (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turco (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Definido por el usuario"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamita (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamita (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamita (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamita (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebreo visual (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Occidental (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Occidental (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Occidental (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Occidental (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Occidental (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Localización: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Dirección de conversión"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Esta variable determina qué test de iconv realizar."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "negro"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "marrón pálido"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "marrón dorado"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "verde oscuro nº2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "azul marino"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "azul oscuro"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "púrpura nº2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "gris muy oscuro"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "rojo oscuro"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "rojo anaranjado"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "dorado"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "verde oscuro"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "azul mate"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "azul"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "púrpura mate"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "gris oscuro"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "rojo"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "naranja"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "lima"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "verde mate"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "azul mate #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "azul cielo #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "púrpura"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "gris"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "naranja brillante"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "amarillo"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "verde"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "océano"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "azul brillante"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "rojo púrpura"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "gris pálido"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "naranja pálido"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "amarillo pálido"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "verde pálido"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "océano pálido"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "azul pálido"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "púrpura pálido"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "blanco"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "azul purpúreo"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "púrpura oscuro"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "azul cielo"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "personalizado"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Color personalizado..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Tipo de sombra"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientación"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Anchura preferida"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Altura preferida"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Acoplar la barra de herramientas"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Desacoplar la barra de herramientas"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Es imposible abrir el archivo «%s»"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Todos los archivos"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Imágenes"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Seleccione una imagen"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Guardar como"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Tipo de archivo:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"La extensión de archivo dada no coincide con el tipo de archivo elegido. "
+"¿Quiere usar este nombre de todas formas?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"es un nombre de directorio"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"No tiene permisos para guardar a\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Un archivo llamado <i>%s</i> ya existe en %s.\n"
+"\n"
+"¿Desea sobreescribirlo?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Negrita"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Negritas cursivas"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Cursiva"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Estilo de tipografía:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Tipografía:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Vista previa"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Tamaño:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Número"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Divisa"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Financiero"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Fecha"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Hora"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Porcentaje"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fracción"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Científico"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Texto"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Especial"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Personalizado"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Formato del número negativo"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formatos numéricos"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tegorías:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Lugares deci_males:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Mostrar cantidades en estilos de cuenta tradicionales."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Mostrar y entrar valores como cadenas sin interpretación."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Mostrar cantidades monetarias."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Mostrar fechas y opcionalmente horas del día."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Mostrar los valores numéricos con un número fijo de decimales."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Mostrar horas del día."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Mostrar valores como la aproximación fraccional más cercana."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Mostrar valores como porcentajes."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Mostrar valores con escala en potencia de diez."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Formato del _código:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Formato del número negativo:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Vista previa:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "_Símbolo:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Seleccionar un formato apropiado automáticamente."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Especificar un estilo XL de formato directamente"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formato:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Usar separador de miles"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Europa occidental"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Europa oriental"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Norteamérica"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Centroamérica y sudamérica"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "África"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Estados Unidos/Inglés (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sudáfrica/Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopía/Amharico (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Emiratos Árabes Unidos/Árabe (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Baharein/Árabe (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Argelia/Árabe (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egipto/Árabe (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/Árabe (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraq/Árabe (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordania/Árabe (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait/Árabe (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Líbano/Árabe (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libia/Árabe (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marruecos/Árabe (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Omán/Árabe (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar/Árabe (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Arabia Saudí/Árabe (ar_SA) "
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudán/Árabe (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Siria/Árabe (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Túnez/Árabe (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen/Árabe (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaiján/Árabe (ar_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Bielorrusia/Bielorruso (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria/Búlgaro (bg_GB)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh/Bangladesí (bn_BN)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/Bengalí (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Francia/Bretón (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia y Herzegovina/Bosnio (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "España/Catalán (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "República Checa/Checo (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Gran Bretaña/Galés (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dinamarca/Danés (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austria/Alemán (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Bélgica/Alemán (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Suiza/Alemán (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Alemania/Alemán (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburgo/Alemán (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grecia/Griego (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia/Inglés (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana/Inglés (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canadá/Inglés (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Gran Bretaña/Inglés (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Inglés (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlanda/Ingles (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/Inglés /en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nueva Zelanda/Inglés (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipinas/Inglés (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/Inglés (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Estados Unidos/Inglés (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Sudáfrica/Inglés (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe/Inglés (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina/Español (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia/Español (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile/Español (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia/Español (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica/Español (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "República Dominicana/Español (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador/Español (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "España/Español (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala/Español (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras/Español (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "México/Español (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua/Español (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panamá/Español (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Perú/Español (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico/Español (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay/Español (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador/Español (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Estados Unidos/Español (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay/Español (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela/Español (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonia/Estonio (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "España/Vasco (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Irán (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finlandia/Finlandés (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Islas Faroe (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Bélgica/Francés (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canadá/Francés (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Suiza/Francés (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Francia/Francés (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlanda/Gaélico (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Gran Bretaña/Escocés gaélico (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "España/Gallego (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Gran Bretaña/Gaélico Manx (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/Hindú (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croacia/Croata (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Hungría/Húngaro (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia/Indonesio (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islandia/Islandés (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Suiza/Italiano (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italia/Italiano (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebreo (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japón/Japonés (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia/Georgiano (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Groenlandia (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Corea/Coreano (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Gran Bretaña/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lithuania/Lituano (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Latvia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nueva Zelanda/Maorí (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malasia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Bélgica/Flamenco (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Holanda/Holandés (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Noruega/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Noruega/Bokmaal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Francia/Occitano (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polonia/Polaco (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasil/Portugués (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal/Portugués (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumanía (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rusia/Ruso (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ucraniano/Ruso (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Noruega/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Eslovaquia/Eslovaco (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Eslovenia/Esloveno (sl_SL)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Yugoslavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finlandia/Sueco (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Suecia/Sueco (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tajikistán (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tailandia (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopía/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipinas/Tagalo (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turquía (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rusia/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ucrania (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistán (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistán (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Bélgica/Balón (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Estados Unidos/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "China (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chino (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/Chino (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwán (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Localización actual (i18n): "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menú"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "El menú de opciones"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Tamaño del indicador"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Tamaño del indicador de despliegue"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indicador de espaciado"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Espaciado alrededor del indicador"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dom"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Lun"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Mié"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Jue"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Vie"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sáb"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Domingo"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Lunes"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Martes"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Miércoles"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Jueves"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Viernes"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sábado"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Ene"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Abr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*May"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Ago"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Oct"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dic"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Enero"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Febrero"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Marzo"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Abril"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mayo"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Junio"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Julio"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Agosto"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Septiembre"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Octubre"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Noviembre"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Diciembre"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "VERDADERO"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSO"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Negro"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Azul"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Océano"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Verde"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Rosa"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Rojo"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Blanco"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Amarillo"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Emiratos Árabes Unidos, Dirhams"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afganistán, afganí"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Antillas holandesas, florín"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, pesos"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, dólares"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, florín"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaiyán, manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnia y Herzegovina, marco convertible"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dólares"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria, lev"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahráin, dinares"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, francos"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermudas, dólares"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei, dólares"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasil, reales"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, dólares"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bután, ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Bostwana, pulas"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Bielorrusia, rublos"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dólares"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canadá, dólares"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo/Kinshasa, francos"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Suiza, francos"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, pesos"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "China, yuan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, pesos"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, colones"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, pesos"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cabo Verde, escudos"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Chipre, libras"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "República Checa, coronas"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Dijibouti, francos"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Dinamarca, coronas"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "República Dominicana, pesos"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Argelia, dinares"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia, coronas"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egipto, libras"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopía, birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Países zona Euro, euros"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, dólares"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Islas Malvinas, libras"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Reino Unido, libras"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgia, lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, libras"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedis"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, libras"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, francos"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, quetzales"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, dólares"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, dólares"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempiras"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croacia, kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haití, gourde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hungría, forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia, rupias"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, nuevo sheqel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isla de Man, libras"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, rupias"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraq, dinares"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Irán, rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Islandia, coronas"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, libras"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, dólares"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordania, dinares"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japón, yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, chelines"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirguizistán, soms"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Camboya, riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comoras, francos"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Corea (Norte), Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Corea (Sur), Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, dinares"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Islas Caimán, dólares"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazajistán, tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kips"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Líbano, libras"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, rupias"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, dólares"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesoto, maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lituania, litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Letonia, lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libia, dinares"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marruecos, dirhams"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldavia, leu"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagascar, franco malgache"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedonia, denars"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), kyats"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia, tugriks"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macao, patacas"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritania, ouguiyas"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, lira"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauricio, rupia mauriciana"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldivas (Islas Maldivas), rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwachas"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "México, pesos"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malasia, ringgits"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambique, metical"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, dólares"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, nairas"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, córdoba de oro"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Noruega, corona"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, rupia nepalesa"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nueva Zelanda, dólares"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Omán, Riel omaní"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panamá, balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Perú, nuevos soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papúa Nueva Guinea, kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipinas, pesos"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistán, rupias"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polonia, zlotys"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, guaraní"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, riels"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumanía, leu"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rusia, rublos"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, franco ruandés"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Arabia Saudí, rials "
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Islas Solomón, dólares"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychelles, rupias"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudán, dinares"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Suecia, coronas"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, dólares"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Sta. Helena, libras"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Eslovenia, tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Eslovaquia, coronas"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leona, leones"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, chelines"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, florínes"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Santo Tomé y Príncipe, dobras"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El salvador, colones"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Siria, libras"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swazilandia, emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tailandia, baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tajikistán, rublos"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistán, manats"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Túnez, dinares"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turquía, liras"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad y Tobago, dólares"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, dólares de Tuvalu"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwán, nuevo dólar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, chelines"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ucrania, hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, chelines"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Estados Unidos de América, dólares"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, pesos"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbequistán, Sums"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, bolívares"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, francos"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Plata, onzas"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Oro, onzas"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Dólares del Caribe oriental"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Derechos especiales de cobro del Fondo Monetario Internacional (FMI)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Comunidad Financiera Africana (BCEAO), francos"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Paladio, onzas"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Francos de las Comores francesas del Pacífico"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platino, onzas"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Yugoslavia, nuevo dinar"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Sudáfrica, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, dólar de Zimbabwe"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ninguno"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Sólido"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Dash"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Dot"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Guión punto"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Guión punto punto"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automático (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ninguno"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "cuadrado"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamante"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triángulo hacia abajo"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triángulo hacia arriba"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triángulo a la derecha"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triángulo a la izquierda"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "círculo"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "cruz"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterisco"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "barra"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "media barra"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "mariposa"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "reloj de arena"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "Gris 75% "
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "Gris 50%"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "Gris 25%"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "Gris 12.5%"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "Gris 6.25%"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Línea horizontal"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Línea vertical"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Línea diagonal inversa"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Línea diagonal"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Línea sombreada diagonal"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Línea sombreada diagonal gruesa"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Línea horizontal fina"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Línea vertical fina"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Línea diagonal inversa fina"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Línea diagonal fina"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Línea sombreada horizontal fina"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Línea diagonal sombreada fina"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Primer plano sólido"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Pequeños círculos"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semicírculos"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Techo"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Grandes círculos"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Ladrillos"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etiquetas"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valores"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Barras de error"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "GráficoBarCol"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+"Hasta donde las barras/columnas se superponen como un porcentaje del ancho"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "_Solapar:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Separación entre grupos como un porcentaje del ancho de  barra/columna"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Hueco:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "GráficoLínea"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "GráficoÁrea"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Barras adyacentes 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Columnas 3D adyacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "Barras 3D de porcentaje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Columnas 3D de porcentaje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Barras 3D apiladas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Columnas 3D apiladas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Barras adyacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Columnas adyacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Barras 3D horizontales adyacentes agrupadas por categorías mayores y menores."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Barras horizontales adyacentes agrupadas por categorías mayores y menores."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr "Columnas 3D adyacentes agrupadas por categorías mayores y menores."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Columnas verticales adyacentes agrupadas por categorías mayores y menores."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Área"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Gráfico de áreas."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Áreas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Barra"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Línea"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Gráfico de líneas."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Líneas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categorías menores apiladas como porcentajes del total menor, en barras "
+"horizontales 3D, agrupadas por categoría mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Categorías menores apiladas como porcentajes del total menor, en barras "
+"verticales 3D, agrupadas por categoría mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categorías menores apiladas como porcentajes del total menor, en barras "
+"horizontales, agrupadas por categoría mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Categorías menores apiladas como porcentajes del menor total, en columnas "
+"verticales, agrupadas por categoría mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Categorías menores apiladas en barras 3D horizontales, agrupadas por "
+"categoría mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Categorías menores apiladas en barras horizontales agrupadas por categoría "
+"mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Categorías menores apiladas en columnas 3D verticales, agrupadas por "
+"categoría mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Categorías menores apiladas en columnas verticales agrupadas por la "
+"categoría mayor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Áreas de porcentaje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Barras de porcentaje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Columnas de porcentaje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Líneas de porcentajes"
+
+# Sobra el punto final
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Gráfico de área de porcentual."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Gráfica de líneas porcentuales."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Áreas apiladas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Barras apiladas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Columnas apiladas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Líneas apiladas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Gráfico de áreas apiladas."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Gráfica de líneas apiladas."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Líneas no marcadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Líneas de porcentajes no marcadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Líneas apiladas no marcadas"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Motor de dibujo de áreas"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Motor de dibujo de barras/columnas"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Diagrama: Bar/Col/Linea/Área"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Tipos de gráficas preestablecidas para 1.5d"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Motor de dibujo de líneas"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Diagramas de línea, área, barras y columnas"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "El patrón de búsqueda no es válido."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Motor de dibujo de barras/columnas"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Gráficas: Diagramas radiales"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Tipos de gráficas de superficie predeterminadas"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "GráficoTarta"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "GráficoAnillo"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s punto %d\n"
+"Valor %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+"Grados contando en el sentido de las agujas del reloj desde las 3 en punto"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Las rodajas _empiezan en:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"La cantidad preestablecida que cada rodaja está separada del centro, medido "
+"como un porcentaje del radio de la tarta"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Separación de rodajas:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Variar colores por rodaja"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "grados"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"La cantidad preestablecida que cada rodaja está separada del centro, medido "
+"como un porcentaje del radio de la tarta"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separación:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Tamaño cen_tral:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Tarta 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Tarta partida 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Totales mayores como porcentajes con cada cuña subdividida en tartas "
+"secundarias."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Totales mayores como porcentajes con cada cuña subdividida en barras "
+"secundarias apiladas."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Tarta múltiple"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Barras multi-tarta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Porcentaje de cada contribuyente mostrado en anillo para cada serie con "
+"cuñas del último anillo a parte."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+"Porcentaje de cada contribuyente mostrado en un anillo para cada serie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "El porcentaje de cada contribuyente en una tarta 3D."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Porcentaje de cada contribuyente con cuñas 3D aparte."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Porcentaje de cada contribuyente con cuñas divididas a parte."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Porcentaje de cada contribuyente."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Tarta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Anillo"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Dividir tarta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Dividir anillo"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Diagrama: Tarta/Anillo"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Tipos de tarta predeterminados"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Diag de tartas y anillos"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Motor de dibujo de tartas"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Motor de dibujo de anillos"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "GráficoRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "GráficoÁreaRadar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Área de radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Gráfico de áreas de radar."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Radar de puntos"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Gráfico de radar con puntos."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Gráfica de radar."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Gráficas: Diagramas radiales"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Tipos de gráficas de radar preestablecidas"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Motor de dibujo de áreas de radar"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Motor de dibujo de radares"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Gráficas radiales/radar"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "Número de _rodajas:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "Contorno de ploteo"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Contorno"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Gráfico de contorno."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Superficie"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Motor de dibujo de contornos"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Diagramas de superficie"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Diagramas de superficie"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% del tamaño original"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Diá_metro"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Mostrar valores _negativos"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "_Superficie"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Burbujas escaladas a"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Tamaño representado por:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Variar colores por burbuja"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "GráficoXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "GráficoBurbuja"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Burbuja"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Barras de error de Y"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "Barras de error de X"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+"Interpolar linealmente entre puntos multidimensionales, con marcadores en "
+"cada punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Interpolar linealmente entre puntos multidimensionales, con marcadores en "
+"cada punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Interpolar linealmente entre puntos multidimensionales."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Marcas en cada punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Puntos multidimensionales con un círculo en cada punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Gráfico X, Y y tamaño burbuja."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Líneas XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Puntos XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Líneas XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "Gráficos 2D"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "Motor de dibujo de diagramas de dispersión 2D"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Motor de dibujo de burbujas"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Gráficas: XY/Dispersión/Burbuja"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Inventario de tipos de gráficas de dispersión"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/et.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/et.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/et.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4248 @@
+# translation of gnumeric.po to Estonian
+# Gnumericu eestikeelne tõlge.
+# Copyright (C) 2001-2003 Free Software Foundation, Inc.
+# Ain Vagula <ain at riiska.ee>, 2000-2004.
+# Priit Laes <amd at tt.ee>, 2003, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.1.20CVS\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-01-06 16:06+0300\n"
+"Last-Translator: Priit Laes <amd at tt.ee>\n"
+"Language-Team: Estonian <gnome-et at linux.ee>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Seda tüüpi vanade failide ülekirjutamine ei ole ohutuskaalutlustel toetatud."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Sa saad selle ettevaatusabinõu välja lülitada muutes vastavat plugin.xml "
+"faili."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektiivne"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, fuzzy, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "Fail sisaldab plugina infot, mille id (%s) on vigane, oodati %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Failist ei suudetud lugeda plugina infot."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Tundmatu nimi"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Toetamata laadija tüüp \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Viga laadija \"%s\" ettevalmistamisel."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Viga teenuse #%d info lugemisel."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Ei suuda lugeda plugina info faili (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Fail \"%s\" ei ole sobiv plugina info fail."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Viga plugina, mille id=\"%s\" jaoks teenuste lugemisel."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Tundmatu plugina nimi."
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Plugina, mille id=\"%s\", jaoks pole laadijat määratud."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Pluginal ei ole id-d."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Viga plugina laadija (\"%s\") initsialiseerimisel."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Viga plugina sõltuvuste laadimisel."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Ei suudetud aktiveerida pluginat \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Plugina, mille id=\"%s\", jaoks pole laadijat määratud."
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Viga plugina sõltuvuste laadimisel."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Viga plugina teenuse #%d aktiveerimisel."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Viga plugina teenuse #%d deaktiveerimisel."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Ei suuda laadida plugina laadijat."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Plugina, mille id=\"%s\", jaoks pole laadijat määratud."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Viga plugina sõltuvuste laadimisel."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Failist \"%s\" plugina infot lugedes tekkisid vead."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Ei suudetud aktiveerida pluginat \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Ei suudetud deaktiveerida pluginat \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Vead saadaolevate pluginate kohta info lugemisel."
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Viga plugina teenuse #%d deaktiveerimisel."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Vead pluginate aktiveerimisel."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Vead pluginate süsteemi initsialiseerimisel."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Teenus ei ole laadija poolt toetatud."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Mooduli nimi andmata"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Ei saa avada mooduli faili \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Moodulifaili \"%s\" formaat on sobimatu."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Fail ei sisalda (\"plugin_file_struct\" sümbolit)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Failil pole õige maagiline arv."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Plugina versioon \"%s\" erineb rakendusest \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dünaamiliste mooduliste laadimine ei ole süsteemi poolt toetatud."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Ei saa sulgeda mooduli faili \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Fail ei sisalda funktsiooni \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Moodul ei sisalda \"%s\" funktsiooni."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Viga plugina teenuse laadimisel."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Pluginasisese funktsiooni laadimisel tekkis viga."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Pluginasisene puhastusfunktsioon andis veateate."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Ãœldine"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Faili avaja, mille id=\"%s\", ei ole kirjeldatud."
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "Faili avajal pole id-d"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Viga faili lugemisel."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Faili salvestaja, mille id=\"%s\", ei ole kirjeldatud."
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Faili salvestajal pole id-d"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Viga faili salvestamisel."
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Ei suuda laadida plugina laadijat."
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Objektiivne väärtus"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Tundmatu leht '%s'"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Viga teenuse #%d info lugemisel."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "lehti"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Taandus"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Otsi"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Joondus"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Kvootimissümbol:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Probleemi suurus"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskreetne"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Diskreetne mäppimine"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Lineaarne"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Lineaarne mäppimine"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Logaritmiline mäppimine"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Ãœksikasjad"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automaatne"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategooria"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Sidemed"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Sul_ge"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Vorming"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Pealdis"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Reede"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Reede"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Muster"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mäppimine</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Muster"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Paigutus</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Sisemine"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Esiletoodud"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Kõrge"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Sisemine"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Lisa"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Madal"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Esiletoodud"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Pealdised"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tüüp:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legend"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Tiitel"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Alusvõrk"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X telg"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y telg"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z telg"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Radiaaltelg"
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "_Trüki"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Kõrgus"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Laius"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Vea kategooria</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stiil</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Väärtused</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Vä_rv:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Joone laius:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Laius:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Diagramm"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Diagramm"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nimi"
+
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Samm 1 3-st: Vali diagrammi tüüp"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Samm 3 3-st: Kohanda diagrammi"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Kohanda diagrammi"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Sisesta"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Trüki nimi"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Või"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definitsioon</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Muster"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stiil</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Valim"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Kirjeldus"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Andmed"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Jadad"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Trüki nimi"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Trüki nimi"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Indeks:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Sätted"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punkt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Font"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stiil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "erkoranž"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Täidis</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Joon</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Marker</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Eelvaade"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Vä_rv:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Äärejoone värv"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "Ku_ju:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Suurus:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "S_tiil:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "Tüü_p:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "T_aust:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "S_uund:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Lõpp:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Täitmise värv"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Mahuta:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Esiplaan"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Muster:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Vali..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Suurus:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Algus:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_heledam"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_tumedam"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Vaikimisi"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Araabia"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Balti"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Kesk-Euroopa"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Hiina"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Kirillitsa"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Kreeka"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Heebrea"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "India"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Jaapani"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Korea"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Türgi"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "vietnami"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Lääne"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Teised"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Araabia (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Araabia (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Araabia (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Araabia (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Araabia (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Araabia (Macintosh-araabia)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Araabia (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armeenia (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Balti (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltic (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltic (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keldi (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Kesk-Euroopa (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Kesk-Euroopa (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Kesk-Euroopa (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Kesk-Euroopa (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Lihtsustatud hiina (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Lihtsustatud hiina (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Lihtsustatud hiina (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Lihtsustatud hiina (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Lihtsustatud hiina (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Tavaline hiina (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Tavaline hiina (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Tavaline hiina (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Horvaatia (Macintosh-Horvaatia)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Kirillitsa (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kirillitsa (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kirillitsa (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kirillitsa (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Kirillitsa (Macintosh-kirillitsa)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kirillitsa (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Vene (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukraina (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukraina (Macintosh-ukraina)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Inglise (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (Macintosh-farsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Gruusia (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Kreeka (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Kreeka (Macintosh-kreeka)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Kreeka (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (Macintosh-gujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmuki (Macintosh-gurmuki)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Heebrea (IBM-862"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Heebrea (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Heebrea (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Heebrea (Macintosh-heebrea)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Heebrea (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (Macintosh-devanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandi (Macintos-islandi)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Jaapani (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Jaapani (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Jaapani (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Korea (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Korea (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Korea (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Korea (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Skandinaavia (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumeenia (Macintosh-rumeenia)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumeenia (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Lõuna-Euroopa (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Türgi (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Türgi (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Türgi (Macintosh-türgi)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Türgi (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Kasutaja määratletud"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnami (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnami (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnami (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnami (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visuaalne heebrea (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Lääne (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Lääne (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Lääne (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Lääne (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Lääne (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Lokaat: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Teisendamise suund"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "must"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "helepruun"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "kuldpruun"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "tumeroheline #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "tumesinine"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "tumesinine"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "purpurne #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "väga tume hall"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "tumepunane"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "punakasoranž"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "kuldne"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "tumeroheline"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "tuhmsinine"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "sinine"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "tuhmpurpurne"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "tumehall"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "punane"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "oranž"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "erkvalge"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "tuhmroheline"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "tuhmsinine #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "taevasinine #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "purpur"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "hall"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "fuksiin"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "erkoranž"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "kollane"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "roheline"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "tsüaan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "erksinine"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "purpurpunane"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "helehall"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "roosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "heleoranž"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "helekollane"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "heleroheline"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "heletsüaan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "helesinine"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "helepurpurne"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "valge"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "purpurne sinine"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "tumelilla"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "taevasinine"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "kohandatud"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Kohandatud värv:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Varju tüüp"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Suund"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Eelistatud laius"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Eelistatud kõrgus"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Kopeeri valik lõikepuhvrisse"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Ei saa avada faili '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Kõik failid"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Pildid"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Vali pilt"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Salvesta kui"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Faili _tüüp:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"on kataloogi nimi"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Sul ei ole lubatud salvestada\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Fail nimega <i>%s</i> on kataloogis %s juba olemas.\n"
+"\n"
+"Tahad sa selle üle kirjutada?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normaalne"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Rasvane"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Rasvane kaldkiri"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kaldkiri"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Fondi stiil:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Font:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Eelvaade"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Suurus:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Arv"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "_Raha"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "_Bilanss"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Kuupäev"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Aeg"
+
+#: goffice/gtk/go-format-sel.c:80
+#, fuzzy
+msgid "Percentage"
+msgstr "_Protsent"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Murd"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "Teaduslik"
+
+#: goffice/gtk/go-format-sel.c:83
+#, fuzzy
+msgid "Text"
+msgstr "Tekst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Eri"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Kohandatud"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Negatiivse arvu vorming"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Arvude vorming"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Kategooria:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Kümnend_kohti:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "Euroopa rahaühik"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Näita _gruppe"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Näita väärtust täpselt nagu see sisestati"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Vorming :"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Negat_iivne arv"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Eelvaade:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Sü_mbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "_Vorming :"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Kasuta tuhandete eraldajat"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Lääne-Euroopa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Ida-Euroopa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Põhja-Ameerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Lõuna- ja Kesk-Ameerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Aasia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Aafrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Austraalia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Ãœhendriigid/inglise (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Lõuna-Aafrika afrikaani (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etioopia/amhaara (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Araabia Ãœhendemiraadid (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrein (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Alžeeria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egiptus (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/araabia (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordaania (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuveit (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Liibanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Liibüa (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Maroko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Omaan (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Katar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi Araabia (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudaan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Süüria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tuneesia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jeemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Aserbaidžaan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Valgevene (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Prantsusmaa/bretooni (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia ja Hertsegoviina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Hispaania/kataloonia (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "TÅ¡hehhi (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Suurbritannia/kõmri (cy_GB"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Taani (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austria (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgia/saksa (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Å veits/saksa (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Saksamaa (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luksemburg/saksa (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Kreeka (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Austraalia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/inglise (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Suurbritannia (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/inglise (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Iirimaa (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/inglise (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Uus-Meremaa (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipiinid (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/inglise (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Ãœhendriigid/inglise (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Lõuna-Aafrika/inglise (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentiina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Boliivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "TÅ¡iili (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikaani vabariik (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ekuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Hispaania (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduuras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mehhiko (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nikaraagua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peruu (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puertoriiko (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguai (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Ãœhendriigid/hispaania (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguai (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venetsueela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Eesti (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Hispaania/baski (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iraan (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Soome/soome (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Fääri saared (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgia/prantsuse (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/prantsuse (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Å veits/prantsuse (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Prantsusmaa (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Iirimaa/gaeli (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Suurbritannia/Å oti gaeli (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Hispaania/galiitsia (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Suurbritannia/mänksi gaeli (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/hindi (hi_IN"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Horvaatia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Ungari (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armeenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indoneesia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Sveitš/itaalia (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Itaalia (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Iisrael/heebrea (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Jaapan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Gruusia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Gröönimaa (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Suurbritannia/korni (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Leedu (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Läti (lv_LV"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Uus Meremaa/maoori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedoonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaisia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgia/flaami (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Holland (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norra/uusnorra (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norra/bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Prantsusmaa/oksitaani (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Poola (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasiilia (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumeenia (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Venemaa (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraina/vene (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norra/saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakkia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Sloveenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albaania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslaavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Soome/rootsi (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Rootsi (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/tamili (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadžikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tai (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etioopia/tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipiinid/tagali (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Türgi (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Venemaa/tatari (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Usbekistan, (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgia/vallooni (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Ãœhendriigid/juudi (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Hiina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/hiina (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/hiina (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Praegune lokaat: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menüü"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Valikuvõimaluste menüü"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Indikaatori suurus"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Rippindikaatori suurus"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indikaatori asetsus"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Asetus indikaatori ümbruses"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*P"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*E"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*T"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*K"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*N"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*R"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*L"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Pühapäev"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Esmaspäev"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Teisipäev"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Kolmapäev"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Neljapäev"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Reede"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Laupäev"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jaan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Veebr"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Märts"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Juuni"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Juuli"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sept"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dets"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Jaanuar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "veebruar"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Märts"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Aprill"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mai"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Juuni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Juuli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktoober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Detsember"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "must"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "sinine"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Tsüaan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "roheline"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Lilla"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "punane"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "valge"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "kollane"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Araabia Ãœhendemiraadid, dirhamid"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afganistan, afgaanid"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albaania, lekid"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armeenia, dramid"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Hollandi Antillid, guldenid"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kwanzad"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentiina, peesod"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Austraalia, dollarid"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, guldenid"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Aserbaidæaan, manatid"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnia ja Hertsegoviina, konverteeritavad margad"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dollarid"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, takad"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaaria, levid"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrein, dinaarid"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, frangid"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuuda, dollarid"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei, dollarid"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Boliivia, bolivianod"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasiilia, brasiilia reaalid"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahama, dollarid"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrumid"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pulad"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Valgevene, rublad"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dollarid"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, dollarid"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongo/Kinshasa, kongo frangid"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Å veits, frangid"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "TÅ¡iili, peesod"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Hiina, Renminbi jüaanid"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbia, peesod"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, Colones"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuuba, peesod"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Roheneemesaared, eskuudod"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Küpros, naelad"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "TÅ¡ehhi Vabariik, kroonid"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, frangid"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Taani, kroonid"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikaani vabariik, peesod"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Alžeeria, Alžeeria dinaarid"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Eesti, kroonid"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egiptus, naelad"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, nakfad"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etioopia, birrid"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euroliidu liikmesmaad, eurod"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fidži, dollarid"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falklandi Saared, naelad"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Ãœhendatud Kuningriik, naelad"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Gruusia, larid"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, naelad"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedid"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, naelad"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, dalasid"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, frangid"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, quetzalid"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, dollarid"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hongkong, dollarid"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempirad"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Horvaatia, kunad"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gourde'id"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Ungari, forindid"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indoneesia, ruupiad"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Iisrael, uusseeklid"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Mani saar, naelad"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, ruupiad"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraak, dinaarid"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iraan, riaalid"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, kroonid"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, naelad"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, dollarid"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordaania, dinaarid"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Jaapan, jeenid"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Keenia, Å¡illingid"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kõrgõstan, somid"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodža, rieelid"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komoorid, frangid"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Põhja Korea, wonid"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Lõuna Korea, wonid"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuveit, dinaarid"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kaimani Saared, dollarid"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kasahstan, tenged"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kipid"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Liibanon, naelad"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, ruupiad"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Libeeria, dollar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, malotid"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Leedu, litid"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Läti, latid"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Liibüa, dinaarid"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Maroko, dirhamid"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldaavia, leud"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, malagassi frangid"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedoonia, dinaarid"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Birma), kyatid"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongoolia, tugrikud"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macao, patacad"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritaania, ouguiyad"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, liirid"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, ruupiad"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Malediivid, rufiyaad"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwachad"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mehhiko, peesod"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaisia, ringgitid"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mosambiik, meticalid"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namiibia, dollarid"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeeria, nairad"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, kuldkordobad"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norra, kroonid"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepaal, nepaali ruupiad"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Uus-Meremaa, dollarid"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Omaan, riaalid"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboad"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peruu, uued solid"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Paapua - Uus-Ginea, kinad"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipiinid, peesod"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, ruupiad"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Poola, zlotid"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguai, guaranid"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Katar, riaalid"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumeenia, leud"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Venemaa, rublad"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, ruanda frangid"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi Araabia, riaalid"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Saalomoni Saared, dollarid"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seishellid, ruupiad"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudaan, dinaarid"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Rootsi, kroonid"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, dollarid"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Saint Helena, naelad"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Sloveenia, tolaarid"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakkia, kroonid"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, leoned"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somaalia, Å¡illingid"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, luiginid"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname, guldenid"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sćo Tomé ja Prķncipe, dobrad"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, kolonid"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Süüria, naelad"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Svaasimaa, emalangenid"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tai, bahtid"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadžikistan, rublad"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Türkmenistan, manatid"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tuneesia, dinaarid"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pa'angad"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Türgi, liirid"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad ja Tobago, dollarid"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Tuvalu dollarid"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, uued dollarid"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tansaania, Å¡illingid"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraina, grivnad"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Å¡illingid"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Ameerika Ãœhendriigid, dollarid"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguai, peesod"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Usbekistan, sumid"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venetsueela, bolivarid"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, dongid"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatud"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Hõbe, untsid"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Kuld, untsid"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Ida-Kariibi dollarid"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Pallaadium, untsid"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Plaatina, untsid"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jeemen, riaalid"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslaavia, uusdinaarid"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Lõuna-Aafrika, randid"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Sambia, kwachad"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, zimbabwe dollarid"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Puudub"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Ãœhtlane"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Kriips"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Punkt"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Kriips-punkt"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Kriips-punkt-punkt"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automaatne (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "puudub"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "ruut"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "briljant"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "Vahemik"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Grupid paremal"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "ring"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "rist"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "tärn"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*Märts"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "liblikas"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "liivakell"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% hall"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% hall"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% hall"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% hall"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% hall"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Rõhttriip"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Püsttriip"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Pööratud kaldtriibud"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Kaldtriibud"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Kaldviirutus"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Jäme kaldu ristviirutus"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Peened rõhtsad triibud"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Peened püsttriibud"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Peened pööratud kaldtriibud"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Peened kaldtriibud"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Peen rõhtne ristviirutus"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Peen kaldu ristviirutus"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Esiplaani värv"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Väikesed ringid"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Poolringid"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Tähnid"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Suured ringid"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Tellised"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Pealdised"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Väärtused"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Viga rea analüüsil"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Diagramm"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Trüki"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Trüki"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "_Protsent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Lisa veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Lisa veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Ala"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Alad"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Veerg"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Joon"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Imporditavad read"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Read"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "_Protsent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "_Protsent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "_Protsent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "_Protsent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "_Protsent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "_Alusvõrk"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Kustuta veerud"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "_Alusvõrk"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Protsent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "_Alusvõrk"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Vaikimisi fondi nimi"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Rea ja ve_eru päised"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "_Trüki"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Vigane otsingumuster"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Trüki"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "_Trüki"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "_Trüki"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Viga rea analüüsil"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Muudetakse %s formaati"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Vaikimisi fondi nimi"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Trüki"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Eimiski"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Eraldaja :"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "_Kustuta"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Eraldamine:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Kategooria:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Ruumiline sektor"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Lahuta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Korruta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Korruta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Sektor"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Lahuta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Lahuta"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Trüki"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Trüki"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "_Protsent"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "_Standardhälbed"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Kustuta veerud"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Vaikimisi fondi nimi"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Viga rea analüüsil"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Täisarvud"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Kontuur"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Imporditavad read"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Pind"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Viga rea analüüsil"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Lähtealad"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Lähtealad"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% normaalsuurusest"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "sentimeeter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+#, fuzzy
+msgid "Show _negative values"
+msgstr "Näita üksikasju"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Lähtealad"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Trüki"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Topelt"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Topelt"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Viga rea analüüsil"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Viga rea analüüsil"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Kustuta veerud"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Joon"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Punkt"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Joon"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fi.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fi.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fi.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4189 @@
+# Gnumeric Finnish translation.
+# Suomennos: http://gnome.fi/
+# Copyright (C) 1998-2001,2003-2004 Free Software Foundation, Inc.
+# Sami Kuhmonen <sami at iqs.fi>, 1999.
+# Jarkko Ranta <jjranta at cc.joensuu.fi>, 2001.
+# Pauli Virtanen <pauli.virtanen at hut.fi>, 2003.
+# Tommi Vainikainen <Tommi.Vainikainen at iki.fi>, 2003-2004.
+#
+#
+# workbook = työkirja
+# spreadsheet = sheet = taulukko
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric gnumeric-1-2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-09-08 15:04+0300\n"
+"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen at iki.fi>\n"
+"Language-Team: Finnish <gnome-fi-laatu at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Tämän tyyppisten vanhojen tiedostojen päälle tallentaminen kielletty "
+"turvallisuuden takia."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Tavoite"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Tuntematon nimi"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Tuntematon liitännäisen nimi."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+#, fuzzy
+msgid "Cannot load plugin loader."
+msgstr "Tuntematon laskentavirhe"
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Tiedosto ei sisällä funktiota \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, fuzzy, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Lisiössä pitää olla init_plugin-funktio."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Yleistä"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Virhe tallennettaessa tiedostoa."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Liitännäislaturi"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject-laturi"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Kaavat"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Sisennä:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Aseta reunukset"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Välilyönti"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Tasaus"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Lainausmerkki:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Ongelman koko"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskreetti"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Diskreetti"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Lineaarinen"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logiikka"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "logaritminen"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Yksityiskohdat"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automaattinen"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategoria"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Raja-arvot"
+
+#: goffice/graph/gog-axis.c:1475
+#, fuzzy
+msgid "M_in"
+msgstr "Minimi"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Maksimi"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "_Sulje"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Muotoile"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Nimiö"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Ruudukko"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Ruudukko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Virheilmoitukset</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Viiva</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Virheilmoitukset</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Suunta</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Sisällä"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Ulkoviiva"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "_Korkeus..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Sisällä"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Käännä"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Rivi"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Ulkoviiva"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Näytä nimiöt"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tyyppi:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Nimi"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Ruudukko"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-akseli"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-akseli"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-akseli"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "K"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Korkeus"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "L"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Leveys"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Virheilmoitukset</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Tyyli</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Otos</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Väri:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "_Päivä"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Viivanleveys:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_tekstillä:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr ""
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Kaavio"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nimi"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Vaihe 1/2: Valitse kaavion tyyppi"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Vaihe 2/2: Muokkaa kaaviota"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Muokkaa kaaviota"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Lisää"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Reunaviiva"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Suunta</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Tyyli</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Tyyli</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Näytä\n"
+"otos"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Kuvaus"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Teksti:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Tieto"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "_Taulu"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "_Taulu"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Sisennä:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Varoitus"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Piste"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d × %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Kirjasin"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Tyyli"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Täyttö</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Viiva</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "_Väri:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Oikea"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "K_oko:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Tyyli:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_yyppi:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Tausta:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Suunta:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Väri:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Sovita:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Edustaväri:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Kuvio:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Valitse..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Koko:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pist"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Oletus"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "arabia"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "balttilainen"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "keskieurooppalainen"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "kiina"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "kyrillinen"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "kreikka"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "heprea"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "intialainen"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "japani"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "korea"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "turkki"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "vietnam"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "läntinen"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Muu"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabialainen (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabialainen (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabialainen (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabialainen (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabialainen (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabialainen (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabialainen (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armenialainen (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltian maiden (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltian maiden (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltian maiden (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Kelttiläinen (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Keskieurooppalainen (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Keskieurooppalainen (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Keskieurooppalainen (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Keskieurooppalainen (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Yksinkertaistettu kiinalainen (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Yksinkertaistettu kiinalainen (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Yksinkertaistettu kiinalainen (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Yksinkertaistettu kiinalainen (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Yksinkertaistettu kiinalainen (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Perinteinen kiinalainen (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Perinteinen kiinalainen (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Perinteinen kiinalainen (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Kroatialainen (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrillinen (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrillinen (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrillinen (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrillinen (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Kyrillinen (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrillinen (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Venäläinen (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainalainen (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainalainen (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Englanti (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgialainen (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Kreikkalainen (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Kreikkalainen (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Kreikkalainen (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Heprealainen (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Heprealainen (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Heprealainen (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Heprealainen (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Heprealainen (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islantilainen (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japanilainen (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanilainen (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanilainen (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Korealainen (EUC_KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Korealainen (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Korealainen (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Korealainen (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Pohjoismainen (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Romanialainen (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Romanialainen (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Eteläeurooppalainen (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turkkilainen (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turkkilainen (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turkkilainen (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turkkilainen (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Käyttäjän määrittelemä"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamilainen (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamilainen (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamilainen (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamilainen (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Kuvallinen heprea (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Läntinen (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Läntinen (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Läntinen (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Läntinen (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Läntinen (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Maa-asetusto: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Muunnossuunta"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Tämä arvo määrittää mitkä iconv-testit ajetaan."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "musta"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "vaalean ruskea"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "ruskean kultainen"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "tumman vihreä #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "laivasto"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "tumman sininen"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "purppurainen #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "erittäin tumman harmaa"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "tumman punainen"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "punaoranssi"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "kulta"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "tumman vihreä"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "mattasininen"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "sininen"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "mattapurppura"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "tumman harmaa"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "punainen"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "oranssi"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "limetti"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "mattavihreä"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "mattasininen #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "taivaan sininen #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "purppura"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "harmaa"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "kirkkaan oranssi"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "keltainen"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "vihreä"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "sinivihreä"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "kirkkaan sininen"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "punapurppurainen"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "vaalean harmaa"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "pinkki"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "vaalean oranssi"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "vaalean keltainen"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "vaalean vihreä"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "vaalean sinivihreä"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "vaalean sininen"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "vaalean purppurainen"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "valkoinen"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "purppurainen sininen"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "tumman purppurainen"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "taivaan sininen"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "muu"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Mukautettu väri..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Varjotyyppi"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Asento"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Tiedoston avaaminen epäonnistui: '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Kuva"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Tallenna kaikki"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Tiedoston _tyyppi:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"on hakemistonimi"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Työkirja %s on jo olemassa.\n"
+"Haluatko tallentaa sen päälle?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normaali"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Lihavointi"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Lihava kursiivi"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kursivointi"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "×"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Kirjasintyyli:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Kirjasin:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Esikatselu"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Koko:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Luku"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuutta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Kirjanpito"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Päiväys"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Aika"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Prosentti"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Murtoluku"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Tieteellinen"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Teksti"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Erityinen"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Muu"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Negatiivisen luvun muoto"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Lukumuodot"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "_Luokat:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "_Desimaaleja:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Esikatselu:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymboli:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Muotoilut:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Käytä tuhaterotinta"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Länsi-Eurooppa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Itä-Eurooppa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Pohjoisamerikka"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Etelä- ja Keski-Amerikka"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Aasia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrikka"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Yhdysvallat/englanti (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Etelä-Afrikka/afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopia/Amhara (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Arabiemiirikuntien liitto (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algeria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypti (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Intia/arabia (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordania (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libya (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marokko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi-Arabia (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syyria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaidžan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Valko-Venäjä (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Intia/bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Ranska/bretoni (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia ja Hertsegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Espanja/katalaani (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "TÅ¡ekin tasavalta (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Iso-Britannia/wales (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Tanska (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Itävalta (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgia/saksa (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Sveitsi/saksa (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Saksa (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburg/saksa (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Kreikka (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/englanti (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Iso-Britannia (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/englanti (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlanti (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Intia/englanti (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Uusi-Seelanti (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filippiinit (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/englanti (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Yhdysvallat/englanti (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Etelä-Afrikka/englanti (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentiina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikaaninen tasavalta (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Espanja (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Meksiko (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Yhdysvallat/espanja (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Viro (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Espanja/baski (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Suomi/suomi (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Färsaaret (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgia/ranska (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/ranska (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Sveitsi/ranska (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Ranska (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlanti/gaeli (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Iso-Britannia/skotti (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Espanja/galicia (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Iso-Britannia/manx (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Intia/hindi (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Kroatia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Unkari (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islanti (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Sveitsi/italia (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italia (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/heprea (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japani (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grönlanti (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Iso-Britannia/korni (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Liettua (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Latvia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Uusi-Seelanti/maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Intia/marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malesia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgia/flaami (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Alankomaat (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norja/uusnorja (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norja/kirjanorja (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Ranska/oksitaani (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Puola (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasilia (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugali (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romania (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Venäjä (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraina/venäjä (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norja/saame (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Suomi/ruotsi (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Ruotsi (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Intia/tamili (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Intia/telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadžikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thaimaa (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopia/tigrinja (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filippiinit/tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turkki (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Venäjä/tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgia/wallon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Yhdysvallat/jiddiš (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Kiina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/kiina (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/kiina (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Tämänhetkinen maa-asetusto: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Valikko"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Vaihtoehtojen valikko"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Su"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Ma"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Ti"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Ke"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*To"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Pe"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*La"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Sunnuntai"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Maanantai"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Tiistai"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Keskiviikko"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Torstai"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Perjantai"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Lauantai"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Tammi"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Helmi"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Maalis"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Huhti"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Touko"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Kesä"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Heinä"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Elo"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Syys"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Loka"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Marras"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Joulu"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Tammikuu"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Helmikuu"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Maaliskuu"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Huhtikuu"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Toukokuu"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Kesäkuu"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Heinäkuu"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Elokuu"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Syyskuu"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Lokakuu"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Marraskuu"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Joulukuu"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TOSI"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "EPÄTOSI"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "musta"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "sininen"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "syaani"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "vihreä"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "punainen"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "valkoinen"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "keltainen"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentiina, peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, dollari"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, dinari"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, dollari"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahama, dollari"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Valko-Venäjä, rupla"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, dollari"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbia, peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuuba, peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Kypros, punta"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Tanska, kruunu"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikaaninen tasavalta, peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Viro, kruunu"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypti, punta"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro-jäsenmaat, euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, dollari"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Yhdistynyt kuningaskunta, punta"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, punta"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, dollari"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Unkari, florintti"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, dinari"
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "Liitännäisluettelo"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Islanti, kruunu"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, punta"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, dollari"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordania, dinari"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japani, jeni"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenia, Å¡illinki"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, dinari"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanon, punta"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvia, lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libya, dinari"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Meksiko, peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, dollari"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norja, kruunu"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Uusi-Seelanti, dollari"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filippiinit, peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Puola, sloti"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "Huhtikuu"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Venäjä, rupla"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+#, fuzzy
+msgid "Seychelles, Rupees"
+msgstr "Siirrä soluja ylöspäin"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Ruotsi, kruunu"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore, dollari"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, Å¡illinki"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisia, dinari"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turkki, liira"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tansania, Å¡illinki"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Å¡illinki"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Yhdysvallat, dollari"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Hopea, unssi"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Kulta, unssi"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ei mikään"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Yhtenäinen"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automaattinen (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ei mikään"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "neliö"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr ""
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr ""
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr ""
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr ""
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75 % harmaa"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50 % harmaa"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25 % harmaa"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12,5 % harmaa"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6,25 % harmaa"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Vaakaraita"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Pystyviiva"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Käänteinen vinoraita"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Vinoraita"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Vinot ristiviivat"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Paksut vinot ristiviivat"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Ohut vaakaraita"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Ohut vaakaraita"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Ohut käänteinen vinoraita"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Ohut vinoraita"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Ohuet vaakasuuntaiset ristiviivat"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Ohuet vinot ristiviivat"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Yhtenäinen edustaväri"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Pienet ympyrät"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Puoliympyrät"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Suuret ympyrät"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Tiilet"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Nimiöt"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Arvot"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Virhe jäsennettäessä riviä"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr " %"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Alueet"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Sarake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Viiva"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Viivoja"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Prosenttialueet"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr ""
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Virheelliset parametrit"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Virhe jäsennettäessä riviä"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Muutetaan välilehtien värejä"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Oletuskirjasimen nimi"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "astetta"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Erotin:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D-piirakka"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Piirakka"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Virhe jäsennettäessä riviä"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Koko luvut"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Määrä"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Lähde"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Virhe jäsennettäessä riviä"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "_Lähdealueet:"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "_Lähdealueet:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% normaalista koosta"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "_Halkaisija"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Näytä _negatiiviset arvot"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "kupla"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Virhe jäsennettäessä riviä"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Virhe jäsennettäessä riviä"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY-viivat"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY-pisteet"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XY-viivat"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fr.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fr.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/fr.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4287 @@
+# French translation of gnumeric.
+# Copyright (C) 1998-2004 Free Software Foundation, Inc.
+# This file is under the same license as the gnumeric package.
+#
+# Vincent Renardias <vincent at ldsol.com>, 1998-2000.
+# Fabrice Bellet <Fabrice.Bellet at imag.fr>, 1999.
+# Christophe Merlet (RedFox) <redfox at redfoxcenter.org>, 2000-2004.
+# maintainer: Olivier Jousselin <oj at marylou.fr>, 2001-2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.3.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-12-16 09:27-0500\n"
+"Last-Translator: Christophe Merlet (RedFox) <redfox at redfoxcenter.org>\n"
+"Language-Team: GNOME French Team <gnomefr at traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"La sauvegarde en écrasant des anciens fichiers de ce type est désactivée "
+"pour raison de sécurité"
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Vous pouvez désactiver cette sécurité en modifiant le fichier plugin.xml "
+"approprié."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objectif"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Le fichier contient des infos sur un greffon avec un identifiant non valide "
+"(%s), %s attendu."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Impossible de lire les infos du greffon dans le fichier."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nom inconnu"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Type de chargeur « %s » non supporté."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Erreur lors de la préparation du chargeur « %s »."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Erreur lors de la lecture des infos sur le service #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Impossible de lire le fichier d'infos sur le greffon (« %s »)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Le fichier « %s » n'est pas un fichier valide d'infos sur un greffon."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+"Erreur lors de la lecture des services pour le greffon d'identifiant \"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "L'identifiant de greffon contient des caractères invalides (%s)"
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nom de greffon inconnu."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Aucun chargeur défini ou identifiant de chargeur invalide pour le greffon "
+"d'identifiant \"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Le greffon n'a pas d'identifiant."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Erreur d'initialisation du chargeur de greffon (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Un cycle a été détecté dans les dépendances des greffons."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Impossible d'activer le greffon \"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Impossible de trouver le greffon d'identifiant \"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Erreur lors de l'activation des dépendances du greffon."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Erreur lors de l'activation du service de greffon #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Erreur lors de la désactivation du service de greffon #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Impossible de charger le chargeur de greffon."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Impossible de charger le greffon d'identifiant « %s »."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Erreur lors du chargement des dépendances du greffon."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Erreur lors de la lecture des infos de greffon dans le fichier « %s »."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Impossible d'activer le greffon « %s » (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Impossible de désactiver le greffon « %s » (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Erreurs lors de la lecture des infos sur les greffons disponibles."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Erreur lors de la désactivation des greffons supprimés du disque."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Les greffons suivants ne sont plus disponibles sur le disque, mais sont "
+"toujours activés :\n"
+"%s\n"
+"Vous devez redémarrer Gnumeric maintenant."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Erreurs lors de l'activation des greffons."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Erreurs lors de l'initialisation du système de greffons."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Service « %s » non supporté par le chargeur."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nom du fichier module non fourni."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Impossible d'ouvrir le fichier module « %s »."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Le format du fichier module « %s » n'est pas valide."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Le fichier ne contient pas le symbole « plugin_file_struct »."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Le nombre magique du fichier est incorrect."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "La version du greffon « %s » est différente de l'application « %s »"
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Le chargement dynamique de modules n'est pas supporté par ce système."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Impossible de fermer le fichier module « %s »."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Le fichier ne contient pas la fonction « %s »."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Le fichier ne contient pas la fonction « %s »."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Erreur de chargement du service de greffon."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "La fonction d'initialisation du greffon a renvoyé une erreur."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "La fonction de nettoyage du greffon a renvoyé une erreur."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Général"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "L'ouvreur de fichier n'a pas de description"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Ouvreur de fichier - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Erreur lors de la lecture du fichier."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "L'enregistreur de fichier n'a pas de description"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Enregistreur de fichier - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Erreur lors de l'enregistrement du fichier."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Chargeur de greffon"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Changeur de GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Pas d'attribut \"type\" pour l'élément \"service\"."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Type de service inconnu : %s"
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Erreur lors de la lecture des infos de service."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Il faut charger le service avant de l'activer (PLUGIN_ALWAYS_LOAD est "
+"positionné), mais le chargement a échoué."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "pages"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indenter :"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Rechercher"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Alignement"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Caractères de citation :"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Taille du problème"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discrète"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Discrète"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Linéaire"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logique"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logarithmique"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Détails"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatique"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Catégorie"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Arrière-plan"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "_Fermer"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Titre"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Grille"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Grille"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Motif</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Ligne</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Motif</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Ligne</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "À l'_intérieur"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "À l'_extérieur"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "Hauteur"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Intérieur"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Insertion"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Ligne"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Extérieur"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Afficher les étiquettes"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type :"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Légende"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Titre"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Grille"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Axe X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Axe Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Axe Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Tracé"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Hauteur"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "L"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Largeur"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Alertes</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Style</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Exemple</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Couleur :"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "_Jour"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Largeur de ligne :"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Avec :"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graphe"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Graphique"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nom"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Étape 1 sur 2 : choisissez le type de graphique"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Étape 2 sur 2 : personnalisez le graphique"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Personnaliser le graphique"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Insertion"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Type de _tracé"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Graphique de bureau GNOME"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Trier"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Orientation</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Motif</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Style</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Afficher\n"
+"Exemple"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Description"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Texte:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Données"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Série"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Moteur de tracé"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Type de tracé"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Thème du tracé"
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Indenter :"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_Réglages"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Point"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Police"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Style"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Luminosité"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Remplir</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Ligne</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "<b>Motif</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "<b>Ligne</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Cou_leur :"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Couleur du conto_ur :"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Forme :"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Taille :"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Style :"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ype :"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Arrière-plan :"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Direction :"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Fin :"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Couleur de _remplissage :"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "A_juster à :"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Premier plan :"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Motif :"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Sélectionner..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Taille :"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Début :"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "plus _lumineux"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "plus _foncé"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "étiré"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Défaut"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabe"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltique"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Europe centrale"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chinois"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cyrillique"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grec"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hébreu"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indien"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japonais"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Coréen"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turc"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamien"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Occidental"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Autre"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabe (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabe (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabe (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabe (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabe (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabe (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabe (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Arménien (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltique (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltique (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltique (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtique (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Europe centrale (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Europe centrale (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Europe centrale (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Europe centrale (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinois simplifié (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinois simplifié (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chinois simplifié (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chinois simplifié (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chinois simplifié (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinois traditionnel (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinois traditionnel (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chinois traditionnel (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croate (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrillique (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrillique (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrillique (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrillique (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cyrillique (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrillique (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russe (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainien (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainien (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Anglais (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Géorgien (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grec (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grec (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grec (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hébreu (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hébreu (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hébreu (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hébreu (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hébreu (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandais (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japonais (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonais (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonais (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Coréen (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Coréen (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Coréen (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Coréen (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordique (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Roumain (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Roumain (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Europe du Sud (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turc (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turc (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turc (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turc (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Défini par l'utilisateur"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamien (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamien (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamien (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamien (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hébreu visuel (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Occidental (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Occidental (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Occidental (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Occidental (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Occidental (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale :"
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Direction de conversion"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Cette valeur indique quel test iconv réaliser."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "noir"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "marron clair"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "marron doré"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "vert foncé n°2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "bleu marine"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "bleu foncé"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "violet n°2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "anthracite"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "rouge foncé"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "rouge orangé"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "jaune d'or"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "vert foncé"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "bleu pâle"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "bleu"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "violet pâle"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "gris foncé"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "rouge"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "orange"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "jaune-vert"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "vert pâle"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "bleu pâle n°2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "bleu ciel n°2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "violet"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "gris"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "orange vif"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "jaune"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "vert"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "bleu vif"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "violet-rouge"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "gris clair"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rose"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "orange clair"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "jaune clair"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "vert clair"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "cyan clair"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "bleu clair"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "violet clair"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "blanc"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "bleu violacé"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "bleu foncé"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "bleu ciel"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "personnalisé"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Couleur personnalisée :"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Type d'ombre"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Orientation</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+#, fuzzy
+msgid "Dock the toolbar"
+msgstr "Comment dessiner la barre d'outils"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Comment dessiner la barre d'outils"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Impossible d'ouvrir le fichier « %s »"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Tous les fichiers"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Images"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Sélectionner une image"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Enregistrer sous"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Type de fichier :"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"L'extension fournie ne correspond pas au type de fichier choisi. Voulez-vous "
+"utiliser ce nom quand même ?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"est un nom de répertoire"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Vous n'avez pas la permission d'enregistrer vers\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Le classeur <i>%s</i> existe déjà dans %s.\n"
+"Êtes-vous sur de vouloir l'écraser ?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Gras"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Gras italique"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Italique"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Style de la police :"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Police :"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Aperçu"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Taille :"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Nombre"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Devise"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Comptabilité"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Date"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Heure"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Pourcentage"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fraction"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Scientifique"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Texte"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Spécial"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Personnalisé"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format des nombres négatifs"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Format des nombres"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tégories :"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Chiffres après la _virgule :"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Affiche des montants dans le style habituel de la comptabilité"
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Affiche et saisit les valeurs comme des chaînes, sans interprétation"
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Affiche des montants en devises"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Affiche des dates et éventuellement des heures"
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Affiche des valeurs numériques avec un nombre de décimales fixé."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Affiche des heures"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Affiche les valeurs sous forme de la fraction la plus proche"
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Affiche les valeurs sous forme d'un pourcentage"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Affiche les valeurs en notation scientifique"
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "C_ode de format :"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Format des nombres négatifs :"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Aperçu :"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol :"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Choisit le format approprié automatiquement"
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Spécifie un format XL directement"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format :"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Utiliser un séparateur pour les miliers"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Europe de l'Ouest"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Europe de l'Est"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Amérique du Nord"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Amérique Centrale et du Sud"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asie"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrique"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australie"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "États-Unis/Anglais (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Afrique du Sud, Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Éthiopie/Amharic (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Émirats Arabes Unis (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahreïn (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algérie (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Égypte (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Inde/Arabe (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordanie (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Koweït (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Liban (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libye (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Maroc (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Arabie Saoudite (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Soudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syrie (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisie (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaidjan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Belarus (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgarie (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Inde/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "France/Breton (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnie Herzégovine (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Espagne/Catalan (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tchèquie (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Grande Bretagne/Gallois (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Danemark (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Autriche (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgique/Allemand (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Suisse/Allemand (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Allemagne (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourg/Allemand (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grèce (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australie (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canada/Anglais (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Grande Bretagne (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Anglais (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlande (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Inde/Anglais (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nouvelle Zélande (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Philippines (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapour/Anglais (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "États-Unis/Anglais (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Afrique du Sud (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentine (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivie (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chili (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombie (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "République dominicaine (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Équateur (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Espagne (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatémala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexique (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Pérou (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "États-Unis/Espagnol (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Vénézuéla (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonie (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Espagne/Basque (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finlande/Finnois (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Îles Féroé (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgique/Français (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canada/Français (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Suisse/Français (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "France (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlande/Gaëlique (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Grande Bretagne/Gaëlique Écossais (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Espagne/Galicien (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Grande Bretagne/Gaëlique Manx (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Inde/Hindou (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croatie (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Hongrie (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Arménie (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonésie (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islande (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Suisse/Italien (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italie (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israël/Hébreu (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japon (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Géorgie (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Groënland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Corée (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Grande Bretagne/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lithuanie (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Latvie (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nouvelle Zélande/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macédoine (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Inde/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaisie (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malte (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgique/Flamand (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Pays-Bas (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norvège/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norvège/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "France/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Pologne (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brésil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Roumanie (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russie (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraine/Russe (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norvège/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovaquie (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovènie (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albanie (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Yougoslavie (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finlande/Suédois (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Suède (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Inde/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Inde/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadjikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thaïlande (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Erythrée (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Éthiopie/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Philippines/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turquie (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Russie/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraine (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Ouzbékistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgique/Wallon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "États-Unis/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Chine (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chinois (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapour/Chinois (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Localisation courante :"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Menu des options"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Taille de l'indicateur"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Taille de l'indicateur de liste déroulante"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Espacement de l'indicateur"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Espacement autour de l'indicateur"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*dim"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*lun"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*mar"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*mer"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*jeu"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*ven"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*sam"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "dimanche"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "lundi"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "mardi"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "mercredi"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "jeudi"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "vendredi"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "samedi"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*fév"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*avr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*juin"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*juil"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*aoû"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*oct"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "janvier"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "février"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "mars"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "avril"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "mai"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "juin"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "juillet"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "août"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "septembre"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "octobre"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "novembre"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "décembre"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "VRAI"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FAUX"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Noir"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Bleu"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Vert"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Rouge"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Blanc"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Jaune"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Émirats Arabes Unis, Dirham"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, Afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albanie, Lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Arménie, Drams"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Antilles néerlandaises, Florin"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentine, Peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australie, Dollar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Florin"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaidjan, Manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnie Herzégovine, Mark convertible"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "La Barbade, Dollar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgarie, Lev"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahreïn, Dinar"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Franc"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Les Bermudes, Dollar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei, Dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivie, Boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brésil, Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Les Bahamas, Dollar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhoutan, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, Pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Belarus, Rouble"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dollar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, Dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo/Kinshasa, Franc Congolais"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Suisse, Francs"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chili, Peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Chine, Yuan renmimbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombie, Peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, Colon"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, Peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cap Vert, Escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Chypre, Livre"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Koruna, Tchèquie"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, Franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danemark, Couronne"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "République dominicaine, Peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algérie, Dinar"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonie, Krooni"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Égypte, Livre"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Erythrée, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Éthiopie, Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Communauté Européenne, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fidji, Dollar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "ÃŽles Falkland (Malouines), Livre"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Royaume Uni, Livre"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Géorgie, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernesey, Livres"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, Cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, Livre"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambie, Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinée, Franc"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatémala, Quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyane, Dollar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong-Kong, Dollar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croatie, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haïti, Gourde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hongrie, Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonésie, Roupie"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, Shekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "ÃŽle de Man, Livre"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Inde, Roupie"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, Dinar"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, Rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Islande, Couronne"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Livre"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaïque, Dollar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordanie, Dinar"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japon, Yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, Shilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirghizistan, Soms"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Cambodge, Riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Les Comores, Franc"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Corée du Nord, Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Corée du Sud, Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Koweït, Dinar"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Îles Caïman, Dollar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakhstan, Tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kip"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Liban, Livre"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri-Lanka, Roupie"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, Dollar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, Loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lithuanie, Litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvie, Lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libye, Dinar"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Maroc, Dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldavie, Leu"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagascar, Franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macédoine, Denars"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar, Kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolie, Tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, Pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritanie, Ouguiya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malte, Livre"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Maurice, Roupie"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "ÃŽles Maldives, Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, Kwacha"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexique, Peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaisie, Ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambique, Metical"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibie, Dollar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigéria, Naira"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, Cordoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norvège, Couronne"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Népal, Roupie"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nouvelle Zélande, Dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, Rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, Balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Pérou, Nuevos Soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papouasie-Nouvelle-Guinée, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Philippines, Peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, Roupie"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Pologne, Zloti"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, Riyal"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Roumanie, Leu"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russie, Rouble"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, Franc"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Arabie Saoudite, Riyal"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "ÃŽles Salomon, Dollar"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychelles, Roupie"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Soudan, Dinar"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Suède, Couronne"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapour, Dollar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Sainte-Hélène, Livre"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovènie, Tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovaquie, Koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, Leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalie, Shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, Guinée"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome et Principe, Dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Colon"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syrie, Livre"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, Lilangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thaïlande, Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadjikistan, Rouble"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkménistan, Manat"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisie, Dinar"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turquie, Livre"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinité-et-Tobago, Dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Dollar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taïwain, Dollar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzanie, Shilling"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraine, Grivna"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Ouganda, Shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Etats-Unis d'Amérique, Dollar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, Peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Ouzbékistan, Sums"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Vénézuéla, Bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communauté Financière Africaine BEAC, Francs"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Argent, Once"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Or, Once"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Caraïbes orientales, Dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Fonds Monétaire International (FMI), Droits Spéciaux"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communauté Financière Africaine BCEAO, Francs"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, Once"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Français du Pacifique, Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platine, Once"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, Rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Yougoslavie, Dinar"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Afrique du Sud, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambie, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, Dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Aucun"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Solide"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatique"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "aucun"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "carré"
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Médian"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "intervalle"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Contours à _droite"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "cercle"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "croix"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "astérisque"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "barre"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "demi-barre"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "papillon"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "Gris 75%"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "Gris 50%"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "Gris 25%"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "Gris 12.5%"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "Gris 6.25%"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Rayures horizontales"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Rayures verticales"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Rayures diagonales inversées"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Rayures diagonales"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Trame diagonale"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Trame diagonale épaisse"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Rayures horizontales fines"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Rayures verticales fines"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Rayures diagonales fines inversées"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Rayure diagonale fine"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Trame horizontale fine"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Trame diagonale fine"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Premier plan uni"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Petits cercles"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Demi cercles"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Maille"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Grand cercles"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Briques"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Titres"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valeurs"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Erreur d'analyse de la ligne"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "PlotBarCol"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Recouvrement des barres/colonnes, en pourcentage de la largeur"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "_Recouvrement :"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+"Séparation entre les groupes, en pourcentage de la largeur des barres/"
+"colonnes"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Espacement :"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "Tracé"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "Tracé"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Barres 3D adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Colonnes 3D adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "Barres de pourcentage 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Colonnes de pourcentage 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Barres 3D empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Colonnes 3D empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Barres adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Colonnes adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Barres 3D horizontales, adjacentes, groupées par catégories majeures et "
+"mineures."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Barres horizontales, adjacentes, groupées par catégories majeures et "
+"mineures."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Colonnes 3D verticales, adjacentes, groupées par catégories majeures et "
+"mineures."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Colonnes verticales, adjacentes, groupées par catégories majeures et "
+"mineures."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Zone"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Zones"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Barre"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Colonne"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Ligne"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Lignes à imprimer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Lignes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Catégories mineures empilées sous forme de pourcentages des totaux mineurs, "
+"en barres 3D horizontales, groupées par catégorie majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Catégories mineures empilées sous forme de pourcentages des totaux mineurs, "
+"en barres 3D verticales, groupées par catégorie majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Catégories mineures empilées sous forme de pourcentages des totaux mineurs, "
+"en barres horizontales, groupées par catégorie majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Catégories mineures empilées sous forme de pourcentages des totaux mineurs, "
+"en colonnes verticales, groupées par catégorie majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Catégories mineures empilées en barres 3D horizontales, groupées par "
+"catégorie majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Catégories mineures empilées en barres horizontales, groupées par catégorie "
+"majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Catégories mineures empilées en colonnes 3D verticales, groupées par "
+"catégorie majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Catégories mineures empilées en colonnes verticales, groupées par catégorie "
+"majeure."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "Barres de pourcentages"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Barres de pourcentages"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Colonnes de pourcentages"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Lignes de pourcentage"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "Barres de pourcentages"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Lignes de pourcentages"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Barres empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Barres empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Colonnes empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Lignes empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Barres empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Lignes empilées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Lignes marquées"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "Lignes de pourcentages"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Lignes empilées"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+#, fuzzy
+msgid "Area plotting engine"
+msgstr "Moteur de dessin de camembert"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Moteur de dessin barres/colonnes"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Type de dessin barres/colonnes par défaut"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+#, fuzzy
+msgid "Line plotting engine"
+msgstr "Moteur de dessin de camembert"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Barres et colonnes"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Tracé"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Chaîne cherchée invalide"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Tracé"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Tracé"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Tracé"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Moteur de dessin barres/colonnes"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Changement des couleurs des onglets"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Type de dessin barres/colonnes par défaut"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "Tracé"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Rien"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+"Compteur de degrés, dans le sens des aiguilles d'une montre à partir de 3 "
+"heures"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Les tr_anches commencent à :"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr "La distance entre chaque tranche et le centre, en pourcentage du rayon"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Séparation des tranches :"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Changer les couleurs à chaque tranche"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "Degrés"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+#, fuzzy
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr "La distance entre chaque tranche et le centre, en pourcentage du rayon"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Séparateur :"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Taille du cen_tre :"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Camembert 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Camembert partagé 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Totaux principaux sous forme de pourcentages, chaque tranche étant "
+"subdivisée en un autre camembert."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Totaux principaux sous forme de pourcentages, chaque tranche étant "
+"subdivisée en barres empilées."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Multi-camembert"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Multi-camembert et barres"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Pourcentage de chaque contribution affiché sous forme d'anneau pour chaque "
+"série, avec les tranches du dernier anneau séparées."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+"Pourcentage de chaque contribution affiché sous forme d'anneau pour chaque "
+"série."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Pourcentage de chaque contribution au camembert 3D."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+"Pourcentage de chaque contribution, avec les tranches 3D partagées "
+"séparément."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+"Pourcentage de chaque contribution, avec les tranches partagées séparément."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Pourcentage de chaque contribution."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Camembert"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Anneau"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Camembert partagé"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Anneau partagé"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Types de camemberts par défaut"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Moteur de dessin de camembert"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Moteur de dessin d'anneau"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "PlotBarCol"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Tracé"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Barres de pourcentages"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Barres empilées"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Type de dessin barres/colonnes par défaut"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Moteur de dessin de camembert"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Moteur de dessin d'anneau"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Nombre complexe"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Compte"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Lignes à imprimer"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Source"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Moteur de dessin d'anneau"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Zones _sources :"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Zones _sources :"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% de la taille _normale"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "centimètre"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+#, fuzzy
+msgid "Show _negative values"
+msgstr "Afficher les détails"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Source"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+#, fuzzy
+msgid "_Vary colors by bubble"
+msgstr "_Changer les couleurs à chaque tranche"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "Tracé"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Bulle"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bulle"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Erreur d'analyse de la ligne"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Erreur d'analyse de la ligne"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+"Interpolation linéaire entre des points multi-dimensionnels, avec des "
+"marqueurs à chaque point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+#, fuzzy
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Interpolation linéaire entre des points multi-dimensionnels, avec des "
+"marqueurs à chaque point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Interpolation linéaire entre des points multi-dimensionnels."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Points interpolés marqués"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+"Interpolation entre des points multi-dimensionnels, avec des marqueurs à "
+"chaque point."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Tracer X, Y et la taille de la bulle."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Lignes XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Points XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Lignes XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+#, fuzzy
+msgid "2D scatter plotting engine"
+msgstr "Moteur de dessin de camembert"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+#, fuzzy
+msgid "Bubble plotting engine"
+msgstr "Moteur de dessin de camembert"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ga.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ga.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ga.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4144 @@
+# Irish (gaeilge) translation for gnumeric.pot (Gnome)
+# Copyright (C) 1998,2004 Free Software Foundation, Inc.
+# Alastair McKinstry <mckinstry at computer.org>, 1998.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-01-02 21:38:13-0500\n"
+"Last-Translator: Alastair McKinstry <mckinstry at computer.org>\n"
+"Language-Team: Gaeilge <ga at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Formóid"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr ""
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr ""
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Gnáth"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Foirmlaí"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Int"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+msgid "Space Before"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Spás"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Ailíniú"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+msgid "Bullet Character"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Líne"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr ""
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "_Íosta"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "Uasta"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr ""
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formóid"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Líne</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Líne</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Líne</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Líne</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Airde"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Saghas:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Tideál"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "A"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Airde"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "L"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Leitheid"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Líne</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stíl</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Sampla</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Dath:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "_Lá"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "_Lucht"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "Leitheid"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graif"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Ainm"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Cairt féindheanamh"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr ""
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Treoshuíomh</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Patrún</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stíl</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Sampla"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+msgid "Test de description"
+msgstr ""
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Teacs:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Dáta"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr ":"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr ""
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Ag sortáil %s"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Pointe"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Clófhoireann"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stíl"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Líne</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Dath:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Méid:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Méid:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Stíl:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "_Saghas:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Dúlra:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Treoshuiomh:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Deireadh:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Cúlra:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Patrún:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Tóg..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Méid:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Gnáth"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicód"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Eile"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicód (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicód (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicód (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicód (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicód (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicód (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "dubh"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "gorm"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "dearg"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "óraiste"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "corcra"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "liath"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "buí"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "glas"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cian"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "bándearg"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "bán"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "féindheanamh"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Dath féindheanamh:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Treoshuíomh</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Comhaid"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "leathanaigh"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Sabháil gach rud"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Saghas Comhad:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Gnáth"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Trom"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Trom Iodálach"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Iodálach"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stíl Clófhoireann:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Clófhoireann:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Réamhthaispeántas"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Méid:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Uimhir"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "_Dáta"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Am"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Teacs"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Speisialta"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "_Féindheanamh"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Réamhthaispeántas:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formóid:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr ""
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Clár"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dom"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Lua"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "Mai"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Cea"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Dea"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Aoi"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sat"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Domhnaigh"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Luain"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Mairt"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Ceádaoin"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Deárdaoin"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Áoine"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sathairn"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Ean"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Fea"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Aib"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Bea"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Mei"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Iúl"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Lún"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*MFó"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*DFó"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Sam"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Nol"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Éanair"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Feabhra"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Marta"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Aibreáin"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Bealtaine"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Meitheamh"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Íuil"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Lúnasa"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Méan Fomhair"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Deireadh Fomhair"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Samhain"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Nollag"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr ""
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr ""
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Dubh"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Gorm"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cian"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Glas"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr ""
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Daearg"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Bán"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Buí"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Tada"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Trom"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr ""
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "tada"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "cearnóg"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr ""
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr ""
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "ciorcáil"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr ""
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Liath"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% Liath"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% Liath"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Liath"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Liath"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Luachaí"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Líne"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Líní"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr ""
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Pasfhocal míchumasach"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Ainm chlófhoireann gnáth"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "_Lucht"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Fáinne"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Earriadh caighdeánach"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "uimhir-i"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Áirigh"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "_Spás"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr ""
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "_Spás"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "_Spás"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "_Dáta"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "_Spás"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Líní XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Pointí XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Líní XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/gl.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/gl.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/gl.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4496 @@
+# Galician translation of gnumeric.
+# Copyright (C) 2000 Jesús Bravo Álvarez.
+# Jesús Bravo Álvarez <jba at pobox.com>, 2000.
+#
+# Proxecto Trasno - Adaptación do software libre á lingua galega:  Se desexas
+# colaborar connosco, podes atopar máis información en http://trasno.gpul.org
+#
+# First Version: Not finished yet!!!
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2000-05-16 23:20+0200\n"
+"Last-Translator: Jesús Bravo Álvarez <jba at pobox.com>\n"
+"Language-Team: Galician <gpul-traduccion at ceu.fi.udc.es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "_Obxecto..."
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+#, fuzzy
+msgid "Unknown name"
+msgstr "Erro de evaluación descoñecido"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, fuzzy, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Erro ó pecha-lo ficheiro, erro : %s"
+
+#: goffice/app/go-plugin.c:636
+#, fuzzy, c-format
+msgid "Error while reading service #%d info."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+#, fuzzy
+msgid "Unknown plugin name."
+msgstr "Erro de evaluación descoñecido"
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+#, fuzzy
+msgid "Plugin has no id."
+msgstr "O plugin aínda está a se usar."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+#, fuzzy
+msgid "Cannot load plugin loader."
+msgstr "Erro de evaluación descoñecido"
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Erro de evaluación descoñecido"
+
+#: goffice/app/go-plugin.c:1112
+#, fuzzy
+msgid "Error while loading plugin dependencies."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin.c:1288
+#, fuzzy, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+#, fuzzy
+msgid "Module file name not given."
+msgstr "Nome de ficheiro:"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, fuzzy, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "non se puido abri-lo ficheiro de módulo: "
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+#, fuzzy
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "O plugin ten que conte-la función init_plugin."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, fuzzy, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+"Non se puido abri-lo plugin '%s'\n"
+"A versión '%s' do plugin é diferente da versión '%s' da aplicación."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, fuzzy, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "non se puido abri-lo ficheiro de módulo: "
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, fuzzy, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "O plugin ten que conte-la función init_plugin."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, fuzzy, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "O plugin ten que conte-la función init_plugin."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+#, fuzzy
+msgid "Error while loading plugin service."
+msgstr "Erro ó tentar preconverte-lo ficheiro"
+
+#: goffice/app/go-plugin-service.c:164
+#, fuzzy
+msgid "Initializing function inside plugin returned error."
+msgstr "init_plugin devolveu un erro"
+
+#: goffice/app/go-plugin-service.c:182
+#, fuzzy
+msgid "Cleanup function inside plugin returned error."
+msgstr "init_plugin devolveu un erro"
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "O plugin aínda está a se usar."
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "O plugin aínda está a se usar."
+
+#: goffice/app/go-plugin-service.c:495
+#, fuzzy
+msgid "Error while reading file."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "O plugin aínda está a se usar."
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Nome de ficheiro: %s"
+
+#: goffice/app/go-plugin-service.c:767
+#, fuzzy
+msgid "Error while saving file."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Erro de evaluación descoñecido"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "_Obxecto..."
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Sistema descoñecido"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Erro ó tentar escribi-lo ficheiro csv"
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "páxinas"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Inserir"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Separadores"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Aliñamento"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Operador descoñecido"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Liña"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Detalles do _Ficheiro"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Categoría"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Fondo"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "Mí_n"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Máx"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Cor"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Fo"
+
+#: goffice/graph/gog-axis.c:1536
+#, fuzzy
+msgid "Label"
+msgstr "_Etiquetas"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Venres"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Venres"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Patrón"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Patrón"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Inserir"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "_Dereita"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "_Altura..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Inserir"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Inserir"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Ringleira"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "_Dereita"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Etiquetas"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tipo:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Ordenar Descendentemente"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Título"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "Venres"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "_Ordenar..."
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "_Altura..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "_Con:"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Erro"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Cor"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Anchura da columna"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Con:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "_Arriba"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nome"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "_Dereita"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Inserir"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Nome da folla"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Bordo"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Orientación"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Patrón"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Número de Mostras:"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "_Descrición"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "Te_xto"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_Datos"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "_Subliñado:"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Nome da folla"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Nome da folla"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Inserir"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Cadea"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr ""
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr ""
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Fonte"
+
+#: goffice/graph/gog-style.c:966
+#, fuzzy
+msgid "Style"
+msgstr "_Estilo"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Patrón"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Previsualización da impresión"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Cor"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "_Dereita"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "copiar"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Tamaño:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "_Estilo"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "_Tipo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Fondo"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Descrición :"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "_Engadir"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Cor"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "_Axustar a:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Cor do Fondo"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Patrón"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_Folla"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Tamaño:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "_Ordenar..."
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "_Dereita"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "Array"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+#, fuzzy
+msgid "Default"
+msgstr "Borrar"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "_Arriba"
+
+#: goffice/gtk/go-charmap-sel.c:74
+#, fuzzy
+msgid "Arabic"
+msgstr "_Subliñado:"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "Cursiva"
+
+#: goffice/gtk/go-charmap-sel.c:76
+#, fuzzy
+msgid "Central European"
+msgstr "Centrar na páxina"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "verde"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "Mín"
+
+# ¿Yen ou Ien?
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "Yen xaponés"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Booléano"
+
+#: goffice/gtk/go-charmap-sel.c:84
+#, fuzzy
+msgid "Turkish"
+msgstr "Lira turca"
+
+#: goffice/gtk/go-charmap-sel.c:85
+#, fuzzy
+msgid "Unicode"
+msgstr "Inserir"
+
+#: goffice/gtk/go-charmap-sel.c:86
+#, fuzzy
+msgid "Vietnamese"
+msgstr "Renomear folla"
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "Cadea"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "Outubro"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Subliñar"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "Escala"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Correlación"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "negro"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "Luns"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "Crea un novo libro"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "Negriña"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Valor da Cela"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "azul"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "Array"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "vermello"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "Crea un novo libro"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "hora"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "Array"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "Valor da Cela"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "amarelo"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "verde"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "ciano"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "Aumentar"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Aliñar á dereita"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Aliñar á dereita"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Aliñar á dereita"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "branco"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "Valor"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "cortar"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "_Dereita"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Orientación"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Copia a selección ó cartafol"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Non se puido abri-lo ficheiro '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "_Encher"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Gardar"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Seleccionar unha columna completa"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Gardar"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "_Encher"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"é un nome dun directorio"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Non ten permisos para gardar en\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"O libro %s xa existe.\n"
+"¿Quere sobrescribilo?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Negriña"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Negriña cursiva"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Cursiva"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Estilo de fonte:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Fonte:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+#, fuzzy
+msgid "Preview"
+msgstr "Previsualización da impresión"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Tamaño:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Número"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "_Divisa"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "Comentarios"
+
+#: goffice/gtk/go-format-sel.c:78
+#, fuzzy
+msgid "Date"
+msgstr "_Data"
+
+#: goffice/gtk/go-format-sel.c:79
+#, fuzzy
+msgid "Time"
+msgstr "_Hora"
+
+#: goffice/gtk/go-format-sel.c:80
+#, fuzzy
+msgid "Percentage"
+msgstr "_Porcentaxe"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "_Fracción"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "_Porcentaxe"
+
+#: goffice/gtk/go-format-sel.c:83
+#, fuzzy
+msgid "Text"
+msgstr "Te_xto"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "Engadir decimais"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Número Negat_ivo:"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "Aplicar _Fontes"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Categoría :"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+#, fuzzy
+msgid "Deci_mal places:"
+msgstr "Rem_prazar:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "Unidade de divisa europea"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Amosar _Fórmulas"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "Fo"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Número Negat_ivo:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Previsualización da impresión"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Sí_mbolo:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "Fo"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Usar Separadores para os milleiros"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "Cadea"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "Centrar na páxina"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "_Porcentaxe"
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "_Subliñado:"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "Dólar de Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Rand de Sudáfrica"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Dinar de Bahrain"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "Dinar xordano"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "Dinar kuwaití"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "Dinar libio"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Rial de Arabia Saudí"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "Dinar tuniciano"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "Lev búlgaro"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "Taka de Bangladesh"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "Won da República de Corea"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+#, fuzzy
+msgid "Luxembourg/German (de_LU)"
+msgstr "Franco luxemburgués"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "Dólar de Nova Celandia"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "Rand de Sudáfrica"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Austral arxentino"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Peso chileno"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Peso colombiano"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Peso dominicano"
+
+#: goffice/gtk/go-locale-sel.c:164
+#, fuzzy
+msgid "Ecuador (es_EC)"
+msgstr "Sucre de Ecuador"
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Ordenando %s"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "Peso mexicano"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "Peso de Uruguai"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "Bolívar de Venezuela"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Ordenando %s"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Lek de Albania"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "Dinar de Iugoslavia"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "_Data actual"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "Mín"
+
+#: goffice/gtk/go-optionmenu.c:198
+#, fuzzy
+msgid "The menu of options"
+msgstr "Opcións de Oaf"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "ERRO interno"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dom"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Lun"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Mér"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Xov"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Ven"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sáb"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Domingo"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Luns"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Martes"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Mércores"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Xoves"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Venres"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sábado"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Xan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Abr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Xuñ"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Xul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Ago"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Set"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Out"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Xaneiro"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Febreiro"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Marzo"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Abril"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Maio"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Xuño"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Xullo"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Agosto"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Setembro"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Outubro"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Novembro"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Decembro"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr ""
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr ""
+
+#: goffice/utils/format.c:757
+#, fuzzy
+msgid "Black"
+msgstr "negro"
+
+#: goffice/utils/format.c:758
+#, fuzzy
+msgid "Blue"
+msgstr "azul"
+
+#: goffice/utils/format.c:759
+#, fuzzy
+msgid "Cyan"
+msgstr "ciano"
+
+#: goffice/utils/format.c:760
+#, fuzzy
+msgid "Green"
+msgstr "verde"
+
+#: goffice/utils/format.c:761
+#, fuzzy
+msgid "Magenta"
+msgstr "Valor da Cela"
+
+#: goffice/utils/format.c:762
+#, fuzzy
+msgid "Red"
+msgstr "Refacer"
+
+#: goffice/utils/format.c:763
+#, fuzzy
+msgid "White"
+msgstr "branco"
+
+#: goffice/utils/format.c:764
+#, fuzzy
+msgid "Yellow"
+msgstr "amarelo"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+#, fuzzy
+msgid "Afghanistan, Afghanis"
+msgstr "Afghani de Afghanistán"
+
+#: goffice/utils/formats.c:391
+#, fuzzy
+msgid "Albania, Leke"
+msgstr "Lek de Albania"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+#, fuzzy
+msgid "Netherlands Antilles, Guilders"
+msgstr "Guilder das Antillas Holandesas"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+#, fuzzy
+msgid "Argentina, Pesos"
+msgstr "Austral arxentino"
+
+#: goffice/utils/formats.c:396
+#, fuzzy
+msgid "Australia, Dollars"
+msgstr "Dólar de Australia"
+
+#: goffice/utils/formats.c:397
+#, fuzzy
+msgid "Aruba, Guilders"
+msgstr "Guilder de Aruba"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+#, fuzzy
+msgid "Barbados, Dollars"
+msgstr "Dólar das Barbados"
+
+#: goffice/utils/formats.c:401
+#, fuzzy
+msgid "Bangladesh, Taka"
+msgstr "Taka de Bangladesh"
+
+#: goffice/utils/formats.c:402
+#, fuzzy
+msgid "Bulgaria, Leva"
+msgstr "Lev búlgaro"
+
+#: goffice/utils/formats.c:403
+#, fuzzy
+msgid "Bahrain, Dinars"
+msgstr "Dinar de Bahrain"
+
+#: goffice/utils/formats.c:404
+#, fuzzy
+msgid "Burundi, Francs"
+msgstr "Franco de Burundi"
+
+#: goffice/utils/formats.c:405
+#, fuzzy
+msgid "Bermuda, Dollars"
+msgstr "Dólar das Bermudas"
+
+#: goffice/utils/formats.c:406
+#, fuzzy
+msgid "Brunei Darussalam, Dollars"
+msgstr "Dólar de Brunei"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+#, fuzzy
+msgid "Brazil, Brazil Real"
+msgstr "Cruceiro brasileiro"
+
+#: goffice/utils/formats.c:409
+#, fuzzy
+msgid "Bahamas, Dollars"
+msgstr "Dólar das Bahamas"
+
+#: goffice/utils/formats.c:410
+#, fuzzy
+msgid "Bhutan, Ngultrum"
+msgstr "Ngultrum de Bután"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+#, fuzzy
+msgid "Belize, Dollars"
+msgstr "Dólar de Belice"
+
+#: goffice/utils/formats.c:414
+#, fuzzy
+msgid "Canada, Dollars"
+msgstr "Dólar canadiano"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+#, fuzzy
+msgid "Chile, Pesos"
+msgstr "Peso chileno"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+#, fuzzy
+msgid "Colombia, Pesos"
+msgstr "Peso colombiano"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+#, fuzzy
+msgid "Cuba, Pesos"
+msgstr "Peso cubano"
+
+#: goffice/utils/formats.c:422
+#, fuzzy
+msgid "Cape Verde, Escudos"
+msgstr "Escudo de Cabo Verde"
+
+#: goffice/utils/formats.c:423
+#, fuzzy
+msgid "Cyprus, Pounds"
+msgstr "Libra de Chipre"
+
+#: goffice/utils/formats.c:424
+#, fuzzy
+msgid "Czech Republic, Koruny"
+msgstr "Won da República de Corea"
+
+#: goffice/utils/formats.c:425
+#, fuzzy
+msgid "Djibouti, Francs"
+msgstr "Franco de Djibouti"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+#, fuzzy
+msgid "Dominican Republic, Pesos"
+msgstr "Peso dominicano"
+
+#: goffice/utils/formats.c:428
+#, fuzzy
+msgid "Algeria, Algeria Dinars"
+msgstr "Dinar alxeriano"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+#, fuzzy
+msgid "Egypt, Pounds"
+msgstr "Libra exipcia"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+#, fuzzy
+msgid "Fiji, Dollars"
+msgstr "Dólar das fiji"
+
+#: goffice/utils/formats.c:435
+#, fuzzy
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Libra das Illas Falkland"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+#, fuzzy
+msgid "Gibraltar, Pounds"
+msgstr "Libra de Xibraltar"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+#, fuzzy
+msgid "Guinea, Francs"
+msgstr "Franco guineano"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+#, fuzzy
+msgid "Guyana, Dollars"
+msgstr "Dólar da Güiana"
+
+#: goffice/utils/formats.c:445
+#, fuzzy
+msgid "Hong Kong, Dollars"
+msgstr "Dólar de Hong Kong"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+#, fuzzy
+msgid "India, Rupees"
+msgstr "Rupia india"
+
+#: goffice/utils/formats.c:454
+#, fuzzy
+msgid "Iraq, Dinars"
+msgstr "Dinar iraquí"
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "Rial iraniano"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+#, fuzzy
+msgid "Jamaica, Dollars"
+msgstr "Dólar canadiano"
+
+#: goffice/utils/formats.c:459
+#, fuzzy
+msgid "Jordan, Dinars"
+msgstr "Dinar xordano"
+
+# ¿Yen ou Ien?
+#: goffice/utils/formats.c:460
+#, fuzzy
+msgid "Japan, Yen"
+msgstr "Yen xaponés"
+
+#: goffice/utils/formats.c:461
+#, fuzzy
+msgid "Kenya, Shillings"
+msgstr "Shilling queniano"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+#, fuzzy
+msgid "Kuwait, Dinars"
+msgstr "Dinar kuwaití"
+
+#: goffice/utils/formats.c:468
+#, fuzzy
+msgid "Cayman Islands, Dollars"
+msgstr "Dolar das illas caimán"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+#, fuzzy
+msgid "Liberia, Dollars"
+msgstr "Dólar liberiano"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+#, fuzzy
+msgid "Libya, Dinars"
+msgstr "Dinar libio"
+
+#: goffice/utils/formats.c:478
+#, fuzzy
+msgid "Morocco, Dirhams"
+msgstr "Dirham marroquí"
+
+#: goffice/utils/formats.c:479
+#, fuzzy
+msgid "Moldova, Lei"
+msgstr "Leu moldavo"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+#, fuzzy
+msgid "Malta, Liri"
+msgstr "Lira de Malta"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+#, fuzzy
+msgid "Malawi, Kwachas"
+msgstr "Kwacha de Malawi"
+
+#: goffice/utils/formats.c:490
+#, fuzzy
+msgid "Mexico, Pesos"
+msgstr "Peso mexicano"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+#, fuzzy
+msgid "Namibia, Dollars"
+msgstr "Dólar liberiano"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+#, fuzzy
+msgid "New Zealand, Dollars"
+msgstr "Dólar de Nova Celandia"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+#, fuzzy
+msgid "Paraguay, Guarani"
+msgstr "Guaraní de Paraguai"
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "Rial de Qatar"
+
+#: goffice/utils/formats.c:508
+#, fuzzy
+msgid "Romania, Lei"
+msgstr "Leu romanés"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+#, fuzzy
+msgid "Rwanda, Rwanda Francs"
+msgstr "Franco ruandés"
+
+#: goffice/utils/formats.c:511
+#, fuzzy
+msgid "Saudi Arabia, Riyals"
+msgstr "Rial de Arabia Saudí"
+
+#: goffice/utils/formats.c:512
+#, fuzzy
+msgid "Solomon Islands, Dollars"
+msgstr "Dólar das Illas Salomón"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+#, fuzzy
+msgid "Singapore, Dollars"
+msgstr "Dólar de Singapur"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+#, fuzzy
+msgid "Somalia, Shillings"
+msgstr "Shilling de Tanzania"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+#, fuzzy
+msgid "Syria, Pounds"
+msgstr "Libra siria"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+#, fuzzy
+msgid "Tunisia, Dinars"
+msgstr "Dinar tuniciano"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+#, fuzzy
+msgid "Turkey, Liras"
+msgstr "Lira turca"
+
+#: goffice/utils/formats.c:534
+#, fuzzy
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Dólar de Trinidad e Tobago"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+#, fuzzy
+msgid "Tanzania, Shillings"
+msgstr "Shilling de Tanzania"
+
+#: goffice/utils/formats.c:538
+#, fuzzy
+msgid "Ukraine, Hryvnia"
+msgstr "Hryvnia de Ucraína"
+
+#: goffice/utils/formats.c:539
+#, fuzzy
+msgid "Uganda, Shillings"
+msgstr "Shilling de Uganda"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+#, fuzzy
+msgid "Uruguay, Pesos"
+msgstr "Peso de Uruguai"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+#, fuzzy
+msgid "Venezuela, Bolivares"
+msgstr "Bolívar de Venezuela"
+
+#: goffice/utils/formats.c:544
+#, fuzzy
+msgid "Viet Nam, Dong"
+msgstr "Dong de Vietnám"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+#, fuzzy
+msgid "Samoa, Tala"
+msgstr "Tala de Samoa"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+#, fuzzy
+msgid "East Caribbean Dollars"
+msgstr "Dólar do Caribe Oriental"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+#, fuzzy
+msgid "Yemen, Rials"
+msgstr "Rial iemení"
+
+#: goffice/utils/formats.c:557
+#, fuzzy
+msgid "Yugoslavia, New Dinars"
+msgstr "Dinar de Iugoslavia"
+
+#: goffice/utils/formats.c:558
+#, fuzzy
+msgid "South Africa, Rand"
+msgstr "Rand de Sudáfrica"
+
+#: goffice/utils/formats.c:559
+#, fuzzy
+msgid "Zambia, Kwacha"
+msgstr "Kwacha de Zambia"
+
+#: goffice/utils/formats.c:560
+#, fuzzy
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Dólar de Cimbabue"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr ""
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+#, fuzzy
+msgid "Solid"
+msgstr "Negriña"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Auto Corrixir"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Luns"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Mín"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "Crea un novo libro"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "_Dereita"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "Escala"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "ringleiras"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Follas"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*Mar"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% gris"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% gris"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% gris"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% gris"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% gris"
+
+#: goffice/utils/go-pattern.c:101
+#, fuzzy
+msgid "Horizontal Stripe"
+msgstr "Horizontal"
+
+#: goffice/utils/go-pattern.c:102
+#, fuzzy
+msgid "Vertical Stripe"
+msgstr "Aliñamento Vertical"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+#, fuzzy
+msgid "Diagonal Stripe"
+msgstr "Diagonal"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+#, fuzzy
+msgid "Thin Horizontal Stripe"
+msgstr "Horizontal"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+#, fuzzy
+msgid "Foreground Solid"
+msgstr "Cor do Fondo"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+#, fuzzy
+msgid "Labels"
+msgstr "_Etiquetas"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valores"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "erro analizando a liña\n"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "%"
+msgstr "0%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Arriba"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Ordenar..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Ordenar..."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "_Porcentaxe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Inserir Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Inserir Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Area"
+msgstr "_Subliñado:"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "_Subliñado:"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+#, fuzzy
+msgid "Column"
+msgstr "C_olumna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Liña"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Liñas para importar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Liña"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "_Porcentaxe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "_Porcentaxe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "_Porcentaxe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "_Porcentaxe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "_Porcentaxe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Liñas do _enreixado"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Borrar Columna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Liñas do _enreixado"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Porcentaxe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Liñas do _enreixado"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Nome de ficheiro:"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "_Ordenar..."
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Aumentar"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Ordenar..."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "_Ordenar..."
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "_Ordenar..."
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "erro analizando a liña\n"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Non se pode crear o ficheiro %s\n"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Nome de ficheiro:"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Ordenar..."
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Liñas do _enreixado"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Separador :"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "Borrar"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Separador :"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Categoría :"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "Liñas do _enreixado"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Liñas do _enreixado"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Multiplicar"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Multiplicar"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Previsualización da impresión"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "Rango de _Entrada:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Liñas do _enreixado"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Ordenar..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Ordenar..."
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "_Porcentaxe"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Erro Estándar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Borrar Columna"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Nome de ficheiro:"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "erro analizando a liña\n"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Número"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Centrar"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Liñas para importar"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Modo"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "erro analizando a liña\n"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Modo"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Modo"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% do tamaño normal"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "centímetro"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+#, fuzzy
+msgid "Show _negative values"
+msgstr "Detalles do _Ficheiro"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Modo"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Ordenar..."
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "azul"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "azul"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "erro analizando a liña\n"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "erro analizando a liña\n"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Borrar Columna"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Liña"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "puntos"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Liña"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/he.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/he.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/he.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4243 @@
+# translation of gnumeric.HEAD.he.po to Hebrew
+# translation of gnumeric.po to Hebrew
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# Gil 'Dolfin' Osher <dolfin at rpg.org.il>, 2003
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric.HEAD.he\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-06-01 10:26+0300\n"
+"Last-Translator: Gil 'Dolfin' Osher <dolfin at rpg.org.il>\n"
+"Language-Team: Hebrew <he at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.1\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "מ_בנה"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr ""
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr ""
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "השרות '%s' לא נתמך על-ידי הטוען."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "לא יכול לסגור את קובץ המודול \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "המודול לא מכיל פונקציית \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "שגיאה בזמן טעינת שירות התוסף."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "כללי"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "_קובץ"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "×”_×–×—×”:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "קבע גבולות"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "רווח"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "תווים לא מוכרים:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_ליניארי"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "לוגי"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "הסתר פרטים"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "רקע"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "מקסימום:"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "_סגור"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "מ_בנה"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "תווית"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "שישי"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "שישי"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "ה_סתר"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "ה_סתר"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "גובה"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "_הכנס"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_הכנס"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_שורה"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "ה_סתר"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "ה_צג פרטים"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "כותרת:"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "שישי"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "גובה"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "רוחב"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "דוגמה"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "צבע:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "רוחב הקו:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "רוחב"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "_גרף..."
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "טבלה"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "שם"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "צבע קו _חיצוני:"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_הכנס"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "_או"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "דוגמה"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "תיאור"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "טקסט"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_מידע"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "סדרה"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "×”_×–×—×”:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "מחרוזת"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr ""
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dR x %dC"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "גופן"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "סגנון"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "תצוגה מקדימה"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "צבע:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "צבע קו _חיצוני:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "מ_שותף"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "גודל:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "סגנון"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "סוג"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "רקע"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "כיוון:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "_וגם"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "צבע _מילוי:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "מ_סנן"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "חזית"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "ה_דבק"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_בחר"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "גודל:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "_צבע:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "_ימין"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "מערך"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "אפשרויות"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "ברירת מחדל"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "גופי"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "ערבית"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "בלטי"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "מרכז אירופאי"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "סינית"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "סירלית"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "יוונית"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "עברית"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "הודית"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "יפנית"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "קוריאנית"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "טורקית"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "יוניקוד"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "ויאטנמית"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "מערבי"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "אחר"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "ערבית (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "ערבית (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "ערבית (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "ערבית (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "ערבית (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "ערבית (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "ערבית (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "ארמנית (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "בלטית (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "בלטית (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "בלטית (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "קלטית (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "מרכז אירופאי (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "מרכז אירופאי (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "מרכז אירופאי (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "מרכז אירופאי (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "רוסית (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "אנגלית (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "עברית (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "עברית (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "עברית (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "עברית (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "עברית (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "יוניקוד (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "יוניקוד (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "יוניקוד (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "יוניקוד (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "יוניקוד (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "יוניקוד (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "מוגדר אישית"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "עברית ויזואלית (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "שני"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "מודגש"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "ערך"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "מערך"
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "מ_שותף"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "קוריאנית"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "זמן"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "מערך"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "מטרה"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "תא"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "יוונית"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "היפר קישור"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "יישור לימין"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "יישור לימין"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "יישור לימין"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr ""
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "_מותאם אישית"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "צבע קו _חיצוני:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "תצוגה מקדימה"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "_קובץ"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "_תמונה..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "הכנס תמונה"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "שמור הכול"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "רגיל"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "מודגש"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "נטוי"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "גופן:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "תצוגה מקדימה"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "גודל:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "מספר"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "מ_טבע"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "תאריך"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "זמן"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "פונקציה"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "טקסט"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "_מיוחד"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "קטגוריה:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "מ_בנה"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "תצוגה מקדימה"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "מערבי"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "מרכז אירופאי"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "ערבית"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr ""
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+#, fuzzy
+msgid "India/English (en_IN)"
+msgstr "אנגלית (ASCII)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+#, fuzzy
+msgid "Armenia (hy_AM)"
+msgstr "ארמנית (ARMSCII-8)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+#, fuzzy
+msgid "Russia (ru_RU)"
+msgstr "רוסית (CP-866)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "_תאריך נוכחי"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*א'"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*ב'"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*×’'"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*ד'"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*×”'"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*ו'"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*ש'"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "ראשון"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "שני"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "שלישי"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "רביעי"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "חמישי"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "שישי"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "שבת"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*יאנ"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*פבר"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*מרץ"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*אפר"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*מאי"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*יונ"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*יול"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*אוג"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*ספט"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*אוק"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*נוב"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*דצמ"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "ינואר"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "פברואר"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "מרץ"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "אפריל"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "מאי"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "יוני"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "יולי"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "אוגוסט"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "ספטמבר"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "אוקטובר"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "נובמבר"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "דצמבר"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "אמת"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "שקר"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr ""
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr ""
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr ""
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr ""
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr ""
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr ""
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr ""
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr ""
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "ישראל, שקלים חדשים"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "ללא"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "מלא"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr ""
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "ללא"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "הודית"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr ""
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr ""
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "הדבק"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*מרץ"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% אפור"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% אפור"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% אפור"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% אפור"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% אפור"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "עיגולים קטנים"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "חצאי עיגולים"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "כלום"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "כתובות"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "כתובות"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "קו"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "קו"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "אחוזים"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "אחוזים"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "אחוזים"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "אחוזים"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "אחוזים"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "אחוזים"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr ""
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "כלום"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "מפרידים"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "קטגוריה:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "טבעת"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "פצל"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "כתובות"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "אחוזים"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "מספרים שלמים"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "מרכז"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "מקור"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr ""
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "טבלה"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "מבנה המקור"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "תאריך"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "מקור"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "כפול"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "כפול"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "קו"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "קו"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hr.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hr.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hr.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4245 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+# Translation of gnumeric to Croatiann
+# Copyright (C) Croatiann team
+# Translators: Antun Krasic <butch at gawab.com>,Automatski Prijevod <>,Danijel Studen <dstuden at vuka.hr>,Denis Lackovic <delacko at fly.srk.fer.hr>,Diana Ćorluka <dina at iskrameco.hr>,Igor Jagec <igorm5 at yahoo.com>,Ivan Jankovic <rbrrneck at gmx.net>,Ivan Knežević <kn3z at lycos.com>,Jerko Bakotin <jere_b at lycos.com>,Ljubomir Božić <ljubo108 at vip.hr>,Mato Kutlić <mate at iskraemeco.hr>,pr pr <delacko at 192.168.0.1>,Robert Avilov <ravilov at linux.hr>,Robert Sedak <robert.sedak at sk.tel.hr>,Tanja Minarik <tanja at finte.net>,Vedran Vyroubal <vedran.vyroubal at inet.hr>,
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-02-09 15:30+CET\n"
+"Last-Translator: Robert Sedak <robert.sedak at sk.tel.hr>\n"
+"Language-Team: Croatian <lokalizacija at linux.hr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: TransDict server\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Spremanje preko starih datoteka ove vrste je onemogućeno zbog sigurnosnih "
+"razloga."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Možete isključiti ovu zaštitu uređivanjem odgovarajuće plugin.xml datoteke."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Stvaran"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Datoteka sadrži opis umetka s netočnom identifikacijom (%s), očekivao sam %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Ne može pročitati opis dodatka iz datoteke."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nepoznato ime"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Nepodržana vrsta za sustav za učitavanje „%s“."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Greška prilikom pripremanja punioca „%s“"
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Greška prilikom čitanja podataka o servisu #%d"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Ne mogu pročitati datoteku sa opisom dodatka („%s“)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Datoteka „%s“ nije ispravna datoteka opisa umetka."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Greška pri učitavanju servisa za dodatak sa id=„%s“."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "ID umetka sadrži nedozvoljene znakove (%s)"
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nepoznato ime dodatka."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Nije definiran sustav za učitavanje ili je ID sustava pogrešan za umetak s "
+"ID=„%s“."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Umetak nema identifikacijski broj."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+"Greška u postavljanju početnih vrijednosti za učitavanje umetka (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Pronađene su kružne zavisnosti dodataka."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Ne može pokrenuti dodatak sa identifikacijskim id=„%s“."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Ne može pronaći dodatak sa identifikacijom id=„%s“."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Greška tijkom pokretanja ovisnosti dodataka."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Greška prilikom pokretanja servisa umetka #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Greška prilikom zaustavljanja servisa dodatka #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Ne mogu učitati pokretač dodataka."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Ne mogu pročitati plugin s brojem \"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Greška prilikom učitavanja zavisnosti umetka."
+
+#: goffice/app/go-plugin.c:1288
+#, fuzzy, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Trenutni _datum"
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Ne može pokrenuti dodatak „%s“ (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Ne može prekinuti rad dodatka „%s“ (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Greška prilikom čitanja informacija o dostupnim umetcima"
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Greška prilikom zaustavljanja umetaka koji se više ne nalaze na disku."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Sledeći dodaci se više ne nalaze na disku ali su još uvijek pokrenuti:\n"
+"%s.\n"
+"Trebalo bi da sada ponovo pokrenete Gnumerik."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Greške prilikom pokretanja umetaka."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Greške prilikom pokretanja sustava umetaka."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Sustav za učitavanje ne podržava servis „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nije upisano modularno ime datoteke."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, fuzzy, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Ne mogu stvoriti datoteku %s\n"
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Datoteka modula „%s“ ima neispravan format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Datoteka ne sadrži („plugin_file_struct“ simbol)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Datoteka ima pogrešan magični broj."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Verzija umetka „%s“ je različita od programa „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Ovaj sustav ne podržava dinamičko učitavanje modula."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, fuzzy, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Ne mogu stvoriti datoteku %s\n"
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Datoteka ne sadrži „%s“ funkciju."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modul ne sadrži „%s“ funkciju."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Greška tijekom učitavanja servisa dodataka."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+"Funkcija unutar umetka koja postavlja početne vrijednosti je vratila grešku."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Cleanup funkcija unutar plugin-a  je vratila grešku."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Općenito"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Sustav za otvaranje datoteka nema opis"
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "Ime datoteke: %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Greška tijekom čitanja datoteke."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Sustav za spremanje datoteka nema opis"
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Ime datoteke: %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Greška tijekom spremanja datoteke."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Pokretač dodataka"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Pokretač Gobjekta"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Ne postoji „vrsta“ atribut za element „servis“."
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Nepoznata funkcija"
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Greška kod čitanja servisnih informacija."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Moramo učitati servis prije njegova pokretanja (PLUGIN_ALWAYS_LOAD je "
+"postavljen) ali učitavanje nije uspjelo."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formule"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Uvlaka:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Razmak"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Razmak"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Poravnanje"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Znak citata:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Veličina problema"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskretan"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Diskretan"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Linearni"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logički"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logaritamski"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detalji"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatski"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategorija"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Ocjene"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "_Maks"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Gla_vne crtice"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Sp_oredne crtice"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Križ"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Oblikovanje"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Oznaka"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Mreža"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Mreža"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Glavne oznake:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Linija</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Sporedne oznake:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Linija</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "U_nutra"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Vanjsko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Visok"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Unutra"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Inverzno"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Nisko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Vanjsko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Prikaži oznake"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tip:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Naslov"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Mreža"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Osi"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Osi"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-os"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Crtanje"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Visina"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Å irina"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Dojava greške</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Uzorak</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Boja:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "_Dan"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Å irina linije:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Sa:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graf"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Graf"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Ime"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Korak 1 od 2: Odaberite tip grafikona"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Korak 2 od 2: Prilagodite grafikon"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Prilagodi dijagram"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Ubaci"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Vrsta _ispisa"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME Office grafikon"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Redoslijed"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Orijentacija</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Uzorak</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Prikaži\n"
+"Uzorak"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Opis"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Podatak"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Serija"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Program za crtanje"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Vrsta crtanja"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Motiv grafika"
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Uvlaka:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_String"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Točka"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Pismo"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Svjetlina"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Popuni</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linija</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Oznaka</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Kontura</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Boja:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "_Konturna boja:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Oblik:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Veličina:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Stil:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "Vrh"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Pozadina:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Smjer:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "Dodaj"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Boja _ispunjavanja:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Prilagodi:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Prvi plan:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Uzorak:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Odaberi..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Veličina:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Započni:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_svijetlije"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "tamnije"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "toč."
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "rastegnuto"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Uobičajeno"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arapski"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltik"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Srednjeeuropski"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Kineski"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Ćirilica"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grčki"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebrejski"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Min"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japanski"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Korejski"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turski"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vijetnamska"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Zapadni"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Ostalo"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arapski (IBM"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arapski (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arapski (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arapski (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arapski (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arapski (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arapski (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armenijska (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltic (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltički (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltički (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltska (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Srednjeeuropski (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Srednje-europska (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Srednjeeuropski (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Srednjeeuropski (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Kineski pojednostavljeni (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Kineska pojednostavljena (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Pojednostavljeni kineski (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Pojednostavljeni kineski (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Kineski pojednostavljeni (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Kineska tradicionalna (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Kineski Tradicionalni (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Tradicionalni kineski (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Hrvatski (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Ćirilični (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Čirilićni (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Ćirilični (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Čirilićno (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Ćirilični (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "ÄŒirilica (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Ruski (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrajinski (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrajinski (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Engleski (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgijski (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grčki (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grčki (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grčki (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrejski (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "hebrejski (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebrejski (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrejski (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrejski (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindu (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandski (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japanski (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanski (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanski (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Korejski (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Korejski (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Korejski (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Korejski (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordijska (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumunski (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumunjski (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Južno-europska (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tajlandska (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turski (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turski (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turski (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turski (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Korisnički definirano"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vijetnamski (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vijetnamska (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vijetnamski (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vijetnamski (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Vizualni hebrejski (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Zapadni (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Zapadna (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Zapadna (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Zapadni (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Zapadni (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Lokali: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Smjer pretvorbe"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Ova vrijednost odlučuje koji iconv test će se izvesti."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "crna"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "svjetlo smeđa"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "zlatno smeđa"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "tamno zelena #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "Nedjelja"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "tamno plava"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "ljubičasta #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "tamno siva"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "tamno crvena"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "crveno-naranđasta"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "zlatna"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "tamno zelena"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "plava"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "plava"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "ljubičasta"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "tamno siva"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "crvena"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "narančasta"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "Vrijeme"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "zelena"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "plava"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "plava"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "ljubičasta"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "siva"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "svjetlo narandžasta"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "žuta"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "zelena"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cijan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "svjetlo plava"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "ljubičasta"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "svjetlo siva"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "Operacija"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "Desno poravnano"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "žuta"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "svijetlo zelena"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "Desno poravnano"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "svjetlo plava"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "svijetlo ljubičasta"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "bijela"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "svjetlo plava"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "tamno crvena"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "plava"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "prilagođeno"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Prilagođena boja:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Sjena"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Orijentacija</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Ne mogu otvoriti datoteku '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Datoteke"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Slika"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Označi sliku"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Spremi"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Vrsta datoteke:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Navedeni nastavak datoteke ne odgovara odabranoj vrsti datoteke. Želite li "
+"svejedno koristiti ovo ime?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"je ime direktorija"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Ne posjedujete privilegije za spremanje u\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Radna knjiga %s već postoji.\n"
+"Želite li je prebrisati?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Obično"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Masno"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Podebljano nakošeno"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Nakošeno"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stil pisma:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Pismo:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Pregled"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Veličina:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Broj"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Rad s računima"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Datum"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Vrijeme"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Postotak"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Razlomak"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Znanstvena"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Tekst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Posebno"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Prilagođeno"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Oblik negativnog broja"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Oblici brojeva"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegorije:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Deci_malna mjesta:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Prikaz vrijednosti u klasičnom računovodstvenom stilu."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Prikaži ulazne vrijednosti kao tekst bez obrade."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Prikaži novčane vrijednosti."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Prikaži datume i po želji vremena."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Prikaži brojevne vrijednosti sa fiksnim brojem decimala."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Prikaži vrijeme dana."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Prikaži vrijednosti kao najbližu razlomljenu vrijednost."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Prikaži vrijednost kao postotke."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Prikaži vrijednosti kao potencije broja 10."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Oblikuj _kod:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Oblik negativnog broja:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Pregled:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "_Simbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Sam odaberi odgovarajuće formatiranje."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Navedite neposredno formatiranje u XL stilu"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Koristi razdvojnik tisućica"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Tekst"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Istočna Europa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Sjeverna Amerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Južna i središnja Amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Azija"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australija"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "SAD/engleski (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Južna Afrika/Afrikans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopija/Amharski (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Ujedinjeni Arapski Emirati (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Alžir (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egipat (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Indija/arapski (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordan (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuvajt (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Lebanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libija (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Maroko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Kvatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudijska Arabija (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Sirija (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunis (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbejdžan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Bjelorusija (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bugarska (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Indija/bengalski (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Francuska/bretanjski (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosna i Hercegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Å panjolska/katalonski (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Češka republika (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Velika Britanija/velški (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Danska (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austrija (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgija/njemački (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Švicarska/njemački (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Njemačka (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luksemburg/njemački (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grčka (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australija (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/engleski (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Velika Britanija (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/engleski (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irska (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Indija/engleski (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Novi Zeland (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipini (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/engleski (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "SAD/engleski (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Južna Afrika/engleski (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabve (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivija (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "ÄŒile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbija (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikanska republika (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Å panjolska (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Gvatamala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Meksiko (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nikaragva (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Portoriko (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paragvaj (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "SAD/Å¡panjolski (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Urugvaj (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venecuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonija (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Å panjolska/Baskija (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finska/finski (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Farsko otočje (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgija/francuski (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/francuski (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Å vicarska/francuski (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Francuska (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irska/irski (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Velika Britanija/Å¡kotski (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Å panolska/galicijski (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Velika Britanija/Manx Gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Indija/hindi (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Hrvatska (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Mađarska (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonezija (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Å vicarska/talijanski (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italija (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Izrael/hebrejski (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Gruzija (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grenland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Koreja (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Velika Britanija/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litva (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Letonija (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Novi Zeland/maorski (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedonija (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Indija/marati (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malezija (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgija/flamanski (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Nizozemska (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norveška/ninorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norveška/bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Francuska/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Poljska (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumunjska (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rusija (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukrajina/ruski (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norveška/sami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovačka (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenija (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albanija (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Srbija i Crna Gora (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finska/Å¡vedski (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Å vedska (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Indija/tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Indija/telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadžikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tajland (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritreja (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopija/tigrinja (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipini/tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turska (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rusija/tatarski (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukrajina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vijetnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgija/valun (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "SAD/jidiš (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Kina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/kineski (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/kineski (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Tajvan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Trenutne lokalne postavke:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Izbornik"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Operacija"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Veličina pokazatelja"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Veličina padajućeg pokazatelja"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Greška u sintaksi"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Razmak oko pokazatelja"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Ned"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Pon"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Uto"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Sri"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*ÄŒet"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Pet"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sub"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Nedjelja"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Ponedjeljak"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Utorak"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Srijeda"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "ÄŒetvrtak"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Petak"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Subota"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Sij"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Vel"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Ožu"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Tra"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Svi"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Lip"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Srp"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Kol"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Ruj"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Lis"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Stu"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Pro"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Siječanj"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Veljača"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Ožujak"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Travanj"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Svibanj"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Lipanj"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Srpanj"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Kolovoz"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Rujan"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Listopad"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Studeni"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Prosinac"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TOÄŒNO"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "NETOÄŒNO"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Crna"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Plava"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cijan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Zelena"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Crvena"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Bijela"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "žuta"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Ujedinjeni Arapski Emirati"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afganistan, Afganci"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albanija, Leka"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, Drams"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Nizozemski Antili, guldeni"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, pesosi"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australija, dolari"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, guldeni"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaijan, Manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosna i Hercegovina, konvertibilna marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dollars"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bugarska, leve"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, Dinars"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, franci"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, dolari"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, dolari"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivija, bolivijanosi"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazil, brazilski real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, Dollars"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrumi"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pule"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Bjelorusija, rublji"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dolari"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, dolari"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongo/Kinshasa, kongonski franci"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Å vicarska, franak"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "ÄŒile, pesosi"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Kina, Yuan Renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbija, pesosi"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, koloni"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, Pesos"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Zelenortski Otoci, eskudosi"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cipar, funte"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Češka Republika, krune"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, franak"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danska, krune"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikanska Republika, pesosi"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Alžir , alžirski dinari"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonija, krune"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egipat, funte"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritreja, nakfe"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopija, birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Zemlje europske unije, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, dolari"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Foklandsko otočje (Malvinas), funte"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Velika Britanija, funte"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Gruzija, lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, funte"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Gana, cedis"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, funte"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambija, dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Gvineja, franci"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Gvatamala, quetzales"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Gujana, dolari"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, dolari"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempire"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Hrvatska, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gurde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Mađarska, forinte"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonezija, rupiji"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Izrael, novi Å¡ekeli"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, funte"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Indija, rupiji"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, dinar"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, Rials"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, krune"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, funte"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamajka, dolari"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan, dinari"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, jeni"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenija, Å¡iling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirgistan, somi"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodža, rile"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komori, franak"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Sjeverna Koreja, voni"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Južna Koreja, voni"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuvajt, dinari"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kajmanski Otoci, dolari"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazahstan, tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kipe"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Liban, funte"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Å ri Lanka, rupiji"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberija, dolari"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesoto, maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litva, litaje"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Letonija, lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libija, dinar"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Maroko, drahme"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldavija, lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, malagaski franci"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedonija, denari"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Mianmar (Burma), kjate"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolija, tugrike"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Makau, patake"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritanija, ougije"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, lire"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauricijus, rupje"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldivi (Maldivska otočja), Rufija"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malavi, kwachas"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Meksiko, pezosi"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malezija, ringici"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambik, metikaje"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibija, dolari"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigerija, naire"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nikaragva, zlatne kordobe"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norveška, krune"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, nepalski rupiji"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Novi Zeland, dolari"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rijale"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboe"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, nove sole"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nova Gvineja, kine"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipini, pezosi"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, rupiji"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Poljska, zloti"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paragvaj, gvarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, Rials"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumunjska, leje"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rusija, rublje"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, ruandski franci"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudijska Arabija, rijale"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomonsko otočje, dolari"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seješeli, Rupees"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dinari"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Å vedska, krune"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, dolari"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Sv. Helena, funte"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenija, tolari"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovačka, krune"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Siera Leone, leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalija, Å¡ilinzi"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luiđini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surine, guldeni"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome i Principe, dobre"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Colonesi"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Sirija, funte"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Svazilend, emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tajland, bati"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadžikistan, rublje"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manati"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunis, dinari"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pange"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turska, lire"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad i Tobago, dolari"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, tuvalski dolari"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Tajvan, novi dolari"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzanija, Å¡ilinzi"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrajina, hrivne"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Å¡ilinzi"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Amerika, dolari"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Urugvaj, pezosi"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, sume"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venecuela, bolivare"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vijetnam, donge"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tale"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, Franci"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Srebro, Unca"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Zlato, unce"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Istočnokaripski dolari"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Posebna prava povlačenja Međunarodnog monetarnog fonda (MMF)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Franci"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Paladijum, unce"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platina, unce"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen, rijale"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Srbija i Crna Gora, dinari"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Južna Afrika, randi"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambija, kvače"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabve, dolari"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Nijedan"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Puno"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatski"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ništa"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "kvadrat"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "dijamant"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "donji trokut"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "trokut gore"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "trokut desno"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "lijevi trokut"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "kružnica"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "unakrsno"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "zvjezdica"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "traka"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "polutraka"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "leptir"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "pješčani sat"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "25%"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "25%"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25%"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "25%"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "25%"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Vodoravne trake"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Okomite linije"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Traka obrnute dijagonale"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Dijagonalna traka"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Dijagonalna Crosshatch"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Debeli dijagonalni Crosshatch"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tanke vodoravne linije"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tanke okomite linije"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Obrnute tanke dijagonalne linije"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tanka dijagonalna linije"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tanki vodoravni Crosshatch"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tanki dijagonalni Crosshatch"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Prvi plan"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Mali krugovi"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Polukrugovi"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Pokrov"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Veliki krugovi"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Cigle"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Oznake"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Vrijednosti"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Greška pri obradi linije"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "TrakaStupaca"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Koliko se trake/stupci preklapaju kao postotak Å¡irine"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "_Preklapanje:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Razmak među grupama kao postotak širine trake/stupci"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Praznina:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "Crtaj Liniju"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "Crtaj područje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D susjedne trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D susjedni stupci"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D postotne trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D postotni stupci"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D sljepljene trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D sljepljeni stupci"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Susjedne trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Susjedni stupaci"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Susjedne vodoravne 3D trake grupirane prema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Susjedne vodoravne trake grupirane prema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Susjedni uspravni 3D stupci grupiraniprema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Susjedni uspravni stupci grupiraniprema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Područje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Crtanje područja."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Područja"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Položeni stup."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Stupac"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Crta"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Crtanje linije."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene prema postotku ukupnog sporednog, u vodoravnim "
+"3D trakama, grupirane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene prema postotku ukupnog sporednog, u uspravnim "
+"3D trakama, grupirane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene prema postotku ukupnog sporednog, u vodoravnim "
+"trakama, grupirane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene prema postotku ukupnog sporednog, u uspravnim "
+"trakama, grupirane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene u vodoravnim 3D trakama, grupirane prema "
+"glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene u vodoravnim trakama, grupirane prema glavnoj "
+"kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene u uspravnim 3D stupcima, grupirane prema "
+"glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Sporedne kategorije posložene u uspravnim stupcima, grupirane prema glavnoj "
+"kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Postotno područke"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Postne trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Postotni stupci"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Postotne linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Ispis postotnog područja."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Ispis postotnih linija."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Spojena polja"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Spojene trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Spojen stupci"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Spojene linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Iscrtavanje spojenih polja."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Iscrtavanje spojenih linija."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Sistem za iscrtavanje područja."
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Sistem za iscrtavanje traka/kolona"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Vrste uobičajenog 1.5d crtanja"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Sustav za iscrtavanje linija"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Gragovi za linije, područja, trake i stupce"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Crtanje"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Neispravna lozinka"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Crtanje"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Crtanje"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Crtanje"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Sistem za iscrtavanje traka/kolona"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Mijenjam boju tabova"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Vrste uobičajenog 1.5d crtanja"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "Crtaj tortu"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "Crtaj prsten"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Stupnjevi, u smjeru suprotnog kazaljke na satu, od položaja 03:00"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Dijelovi počinju na:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"Uobičajena vrijednost za koju je svaki dio odvojen od središta mjereno u "
+"postotcima polumjera pite"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Rastavljanje:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Mijenjaj boje po kriškama:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "stupnjeva"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+#, fuzzy
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Uobičajena vrijednost za koju je svaki dio odvojen od središta mjereno u "
+"postotcima polumjera pite"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Razdjelnik:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Veličina cen_tra:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D torta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D odvojena torta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Značajniji zbrojevi kao postoci sa svakim dijelom podijeljenim u sekundarne "
+"pite."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Značajniji zbrojevi kao postoci sa svakim dijelom podijeljenim u sekundarne "
+"pite"
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Više-torti"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Više-tortnih-traka"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Postotak svakog učesnika prikazanog u prstenu za svaki red s izdvojenim "
+"rubovima posljednjeg prstena."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Postotak svakog sudionika prikazan u prstenu za svaki slijed."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Postotak svakog sudionika u 3D piti."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Postotak svakog sudionika s izdvojenim 3D rubovima."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Postotak svakog sudionika s izdvojenim rubovima."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Postotak svakog sudionika."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Torta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Zvoni"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Razdjeljena torta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Razdjeljeni prsten"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Uobičajeni tip pite"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Sustav za iscrtavanje pita"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Sustav za iscrtavanje prstena"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "TrakaStupaca"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Crtaj područje"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Crtanje područja."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Stadardna greška"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Iscrtavanje spojenih polja."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Vrste uobičajenog 1.5d crtanja"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Sistem za iscrtavanje područja."
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Sustav za iscrtavanje prstena"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Cijeli brojevi"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Brojanje"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Crtanje područja."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Izvor"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Sustav za iscrtavanje prstena"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Pita grafikoni"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Pita grafikoni"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% od _normale veličine"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Parametri"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Izvor"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+#, fuzzy
+msgid "_Vary colors by bubble"
+msgstr "_Mijenjaj boje po kriškama:"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "Crtaj XY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Mjehurić"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Greška pri obradi linije"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Greška pri obradi linije"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpoliraj između višedimenzionalnih točaka."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Linearno interpoliraj između višedimenzionalnih tačaka, sa oznakama nasvakoj "
+"točki."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Linearno interpoliraj između višedimenzionalnih točaka."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Iscrtaj X, Y i veličinu mjehurića."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+msgid "XY Splines"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2D sustav raspršenog ispisivanja"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Vrste razbacanog iscrtavanja"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hu.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hu.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/hu.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4692 @@
+# gnumeric.gnumeric-1-2.po fordítása Hungarianra
+# Gnumeric Hungarian translations
+# Copyright (C) 1998-2000, 2004 Free Software Foundation, Inc.
+# Emese Kovacs <emese at gnome.hu>, 2000.
+# Andras TIMAR <timar at gnome.hu>, 2000.
+# Gabor Kelemen <kg0021 at stud.unideb.hu>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric.gnumeric-1-2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-04-09 11:10+0200\n"
+"Last-Translator: Gabor Kelemen <kg0021 at stud.unideb.hu>\n"
+"Language-Team: Hungarian <hu at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms:  nplurals=1; plural=0;\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+#, fuzzy
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "A régi fájlok felülírását biztonsági okokból kikapcsoltam"
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Célfüggvény"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Ismeretlen név"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Nem támogatott betöltőtípus: \"%s\""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Hiba történt \"%s\" betöltő előkészítésekor."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Hiba történt %d. szolgáltatás információjának olvasása közben."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Ismeretlen bővítménynév"
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Nincs megadva betöltő a \"%s\" azonosítójú bővítményhez."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "A bővítménynek nincs azonosítója."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Hiba a bővítmények függőségeinek betöltése közben."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Nincs megadva betöltő a \"%s\" azonosítójú bővítményhez."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Nincs megadva betöltő a \"%s\" azonosítójú bővítményhez."
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Hiba a bővítmények függőségeinek betöltése közben."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Hiba történt a bővítmény %d. szolgáltatásának aktiválása közben."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Hiba történt a bővítmény %d. szolgáltatásának deaktiválása közben."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Nem sikerült betölteni a bővítménzbetöltőt."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Nincs megadva betöltő a \"%s\" azonosítójú bővítményhez."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Hiba a bővítmények függőségeinek betöltése közben."
+
+#: goffice/app/go-plugin.c:1288
+#, fuzzy, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Hibák történtek a \"%s\" azonosítójú bővítmény betöltőjének lekérdezése "
+"közben."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Hiba történt a bővítmény %d. szolgáltatásának deaktiválása közben."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "A betöltő nem támogatja ezt a szolgáltatást."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nincs megadva a modulfájl neve."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, fuzzy, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Nem sikerült megnyitni a \"%s\" modulfájlt: %s"
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "\"%s\" modulfájl formátuma érvénytelen."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "A fájl nem tartalmaz \"plugin_file_struct\" szimbólumot."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "A fájlnak rossz a mágikus száma."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "A bővítmény verziója (%s) különbözik az alkalmazás verziójától (%s)."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "A dinamikus modulbetöltés nem támogatott ezen a rendszeren"
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, fuzzy, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "nem sikerült bezárni \"%s\" modulfájlt: %s"
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "A fájl nem tartalmaz \"%s\" függvényt."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "A modul nem tartalmaz \"%s\" függvényt."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+#, fuzzy
+msgid "Error while loading plugin service."
+msgstr "Hiba a bővítmény betöltése közben."
+
+#: goffice/app/go-plugin-service.c:164
+#, fuzzy
+msgid "Initializing function inside plugin returned error."
+msgstr "\"%s\" init_plugin függvénye hibát jelez."
+
+#: goffice/app/go-plugin-service.c:182
+#, fuzzy
+msgid "Cleanup function inside plugin returned error."
+msgstr "\"%s\" init_plugin függvénye hibát jelez."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Általános"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "A bővítménynek nincs azonosítója."
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "A bővítménynek nincs azonosítója."
+
+#: goffice/app/go-plugin-service.c:495
+#, fuzzy
+msgid "Error while reading file."
+msgstr "Hiba történt a DIF fájl beolvasása közben."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "A bővítménynek nincs azonosítója."
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Fájlnév: %s"
+
+#: goffice/app/go-plugin-service.c:767
+#, fuzzy
+msgid "Error while saving file."
+msgstr "Hiba történt a DIF fájl mentése közben."
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Nem sikerült betölteni a bővítménzbetöltőt."
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Célfüggvény"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Ismeretlem rendszer"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Hiba történt %d. szolgáltatás információjának olvasása közben."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Képletek"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Behúzás:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Keresés"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Szóköz"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Igazítás"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Idézőjel karakter :"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diszkrét"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Diszkrét"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Vonal"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logikai"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logaritmikus"
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "_Részletek elrejtése"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatikus"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "K_ategória:"
+
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# src/file-manager/nautilus-directory-view-ui.xml.h:30
+# src/nautilus-sidebar.c:490
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Háttér"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_inimum"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Maximum"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Költség"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formátum"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Címke"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Péntek"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Péntek"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Minta</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Minta"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Minta</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Minta"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Belül"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Körvonal"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "Magasság"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Belül"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Beszúrás"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "So_r"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Körvonal"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Címkék"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Típus:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Jelmagyarázat"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:325
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:325
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Cím"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "Péntek"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X tengely"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y tengely"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z tengely"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "_Rendezés"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "M"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Magasság"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "Sz"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Szélesség"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Hiba _figyelmeztetés:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stílus</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Minta</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Szín:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Fi_x szélesség"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Jó szöveg:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "Csoportosítás"
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "K-adik legnagyobb:"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Név"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "_Egyéni fejléc"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Beszúrás"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Valamilyen név"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Á_trendezés"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Irány"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Minta</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stílus</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Minta"
+
+# #-#-#-#-#  gnome-system-tools.HEAD.hu.po-new.po (gnome-system-tools CVS)  #-#-#-#-#
+# interfaces/nameresolution.glade.h:25
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Leírás"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "Szö_veg:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Adat"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Sorozat"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Valamilyen név"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Valamilyen név"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Behúzás:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Karakterláncok"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Pont"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr ""
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Betűkészlet"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stílus"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "élénknarancs"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Minta"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Minta"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "<b>Minta</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Minta"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Szín:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Körvonal"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "Tartomány :"
+
+# #-#-#-#-#  gnome-system-tools.HEAD.hu.po-new.po (gnome-system-tools CVS)  #-#-#-#-#
+# interfaces/memory.glade.h:18 interfaces/memory.glade.h:29
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# src/file-manager/fm-properties-window.c:1502
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Méret:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Stílus:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "_Típus:"
+
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# src/file-manager/nautilus-directory-view-ui.xml.h:30
+# src/nautilus-sidebar.c:490
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Háttér"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Irány:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "Vég"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Szín :"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "Legye_n:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Előtér"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Minta"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Kijelölés..."
+
+# #-#-#-#-#  gnome-system-tools.HEAD.hu.po-new.po (gnome-system-tools CVS)  #-#-#-#-#
+# interfaces/memory.glade.h:18 interfaces/memory.glade.h:29
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# src/file-manager/fm-properties-window.c:1502
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Méret:"
+
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# libnautilus-private/nautilus-program-chooser.c:1189
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "Állapot"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "élénkkék"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_sötétebb"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "Kimutatások:"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+# #-#-#-#-#  gnome-system-tools.HEAD.hu.po-new.po (gnome-system-tools CVS)  #-#-#-#-#
+# interfaces/users.glade.h:63
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Alapértelmezett"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:283
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:283
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arab"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Balti"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:239
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:239
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Közép-európai"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:220
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:220
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Kínai"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:243
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:243
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cirill"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:299
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:299
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Görög"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Héber"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indiai"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:222
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:222
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japán"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:223
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:223
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreai"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:316
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:316
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Török"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:266
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:266
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:270
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:270
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnami"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Nyugati"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Egyéb"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:283
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arab (IBM-864)"
+
+# src/trans.h:283
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arab (IBM-864-I)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:230
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arab (ISO-8859-6)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:230
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arab (ISO-8859-6-E)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:230
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arab (ISO-8859-6-I)"
+
+# src/trans.h:283
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arab (MacArabic)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:231
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arab (Windows-1256)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:228 src/trans.h:279
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Örmény (ARMSCII-8)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:229
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Balti (ISO-8859-13)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:230
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Balti (ISO-8859-4)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:231
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Balti (Windows-1257)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:232
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Kelta (ISO-8859-14)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:233
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Közép-európai (IBM-852)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:234
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Közép-európai (ISO-8859-2)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:235
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Közép-európai (MacCE)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:236
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Közép-európai (Windows-1250)"
+
+# src/trans.h:238
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Egyszerűsített kínai (GB18030)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:237
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Egyszerűsített kínai (GB2312)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:238
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Egyszerűsített kínai (GBK)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:238
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Egyszerűsített kínai (HZ)"
+
+# src/trans.h:238
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Egyszerűsített kínai (Windows-936)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:240
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Hagyományos kínai (Big5)"
+
+# src/trans.h:240
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Hagyományos kínai (Big5-HKSCS)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:241
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Hagyományos kínai (EUC-TW)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:242
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Horvát (MacCroatian)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:243
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirill (IBM-855)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:244
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirill (ISO-8859-5)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:245
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirill (ISO-IR-111)"
+
+# src/trans.h:243
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirill (KOI8-R)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:249
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cirill (MacCyrillic)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:246
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirill (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Orosz (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrán (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrán (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Angol (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Grúz (GEOSTD8)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:250
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Görög (ISO-8859-7)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:251
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Görög (MacGreek)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:252
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Görög (Windows-1253)"
+
+# src/trans.h:242
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+# src/trans.h:264
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:274
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Héber (IBM-862)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:272
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Héber (ISO-8859-8-E)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:272
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Héber (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrew (MacHebrew)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:252
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Héber (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:253
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Izlandi (MacIcelandic)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:254
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japán (EUC-JP)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:255
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japán (ISO-2022-JP)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:256
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japán (Shift_JIS)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:257
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Koreai (EUC-KR)"
+
+# src/trans.h:257
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Koreai (ISO-2022-KR)"
+
+# src/trans.h:304
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Koreai (JOHAB)"
+
+# src/trans.h:257
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Koreai (UHC)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:258
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Skandináv (ISO-8859-10)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:259
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Román (MacRomanian)"
+
+# src/trans.h:230
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Román (ISO-8859-16)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:260
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Dél-európai (ISO-8859-3)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:261
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:262
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Török (IBM-857)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:263
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Török (ISO-8859-9)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:264
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Török (MacTurkish)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:265
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Török (Windows-1254)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:266
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:267
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+# src/trans.h:266
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+# src/trans.h:266
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+# src/trans.h:266
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+# src/trans.h:266
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/prefs.c:378
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Felhasználó által megadott"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:268
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnami (TCVN)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:269
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnami (VISCII)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:270
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnami (VPS)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:271
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnami (Windows-1258)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:272
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Vizuális héber (ISO-8859-8)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:274
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Nyugati (IBM-850)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:275
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Nyugati (ISO-8859-1)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:276
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Nyugati (ISO-8859-15)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:277
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Nyugati (MacRoman)"
+
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:278
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Nyugati (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Pearson-korreláció"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "fekete"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "világosbarna"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "aranybarna"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "sötétzöld #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "tengerészkék"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "sötétkék"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "bíbor #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "szürkésfekete"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "sötétvörös"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "sötétnarancs"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "arany"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "sötétzöld"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "fakókék"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "kék"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "fakó bíbor"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "sötétszürke"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "vörös"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "narancssárga"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "sárgászöld"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "fakózöld"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "fakókék #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "égszínkék #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "bíbor"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "szürke"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "lila"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "élénknarancs"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "sárga"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "zöld"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "ciánkék"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "élénkkék"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "bíborvörös"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "világosszürke"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rózsaszín"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "világos-narancssárga"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "világossárga"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "világoszöld"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "világoscián"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "világoskék"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "világosbíbor"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "fehér"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "kékeslila"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "sötétbíbor"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "égszínkék"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "egyéni"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Egyéni szín:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Árnyék"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Irány"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Nem sikerült megnyitni a fájlt: %s"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Fájlok"
+
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# src/nautilus-property-browser.c:957
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Kép"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Egy teljes oszlop kijelölése"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Mentés"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "_Fájl"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"egy könyvtárnév"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Nincsen jogosultságod a %s\n"
+"mentéséhez."
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Már létezik %s nevű munkafüzet.\n"
+"Szeretnéd felülírni?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normál"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Félkövér"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Félkövér dőlt"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "DÅ‘lt"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Betűstílus:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Betűkészlet:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Előnézet"
+
+# #-#-#-#-#  gnome-system-tools.HEAD.hu.po-new.po (gnome-system-tools CVS)  #-#-#-#-#
+# interfaces/memory.glade.h:18 interfaces/memory.glade.h:29
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# src/file-manager/fm-properties-window.c:1502
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Méret:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Szám"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Pénznem"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Könyvvitel"
+
+# #-#-#-#-#  gnome-system-tools.HEAD.hu.po-new.po (gnome-system-tools CVS)  #-#-#-#-#
+# interfaces/time.glade.h:9
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Dátum"
+
+# #-#-#-#-#  gnome-system-tools.HEAD.hu.po-new.po (gnome-system-tools CVS)  #-#-#-#-#
+# interfaces/time.glade.h:10
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Idő"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Százalék"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Tört"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Tudományos"
+
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# components/text/Nautilus_View_text.oaf.in.h:2
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Szöveg"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Speciális"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Egyéni"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Nega_tív szám:"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "_Számok formázása"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegóriák:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Tize_desjegyek:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "euro"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "_Képlet megjelenítése"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Az érték pontosan úgy jelenik meg, ahogy beírtad"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "Cellák formázása"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Nega_tív szám:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Előnézet:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Pénzne_m:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "_Formátum :"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Ezres elválasztó használata"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Nyugat-Európa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Kelet-Európa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Észak-Amerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Dél- és Közép-Amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Ázsia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Ausztrália"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Egyesült Államok/Angol (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "dél-afrikai rand"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "bahraini dínár"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "jordániai dínár"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "kuvaiti dínár"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "líbiai dínár"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "szaud-arábiai rial"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "tunéziai dínár"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "belarusz rubel"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "bolgár leva"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "bangladesi taka"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "cseh korona"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+#, fuzzy
+msgid "Luxembourg/German (de_LU)"
+msgstr "luxemburgi frank"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "új-zélandi dollár"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "Fülöp-szigeteki peso"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "dél-afrikai rand"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "argentin austral"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "chilei peso"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "kolumbiai peso"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica-i colon"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "dominikai peso"
+
+#: goffice/gtk/go-locale-sel.c:164
+#, fuzzy
+msgid "Ecuador (es_EC)"
+msgstr "equadori sucre"
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Mintavételezés"
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "guatemalai quetzal"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "hondurasi lempira"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "mexikói peso"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+#, fuzzy
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador-i colon"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "uruguay-i peso"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "venezuelai bolivar"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Mintavételezés"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "indonéziai rúpia"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+#, fuzzy
+msgid "The Netherlands (nl_NL)"
+msgstr "Holland forint"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "Szlovén tolár"
+
+#: goffice/gtk/go-locale-sel.c:227
+#, fuzzy
+msgid "Slovenia (sl_SI)"
+msgstr "Szlovén tolár"
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "albán lek"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "új jugoszláv dínár"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "pakisztáni rúpia"
+
+#: goffice/gtk/go-locale-sel.c:235
+#, fuzzy
+msgid "Thailand (th_TH)"
+msgstr "thai baht"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "pakisztáni rúpia"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Jelenlegi _dátum"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menü"
+
+#: goffice/gtk/go-optionmenu.c:198
+#, fuzzy
+msgid "The menu of options"
+msgstr "Oaf beállítások"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Belső HIBA"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*V"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*H"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*K"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Sze"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Cs"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*P"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Szo"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Vasárnap"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Hétfő"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Kedd"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Szerda"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Csütörtök"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Péntek"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Szombat"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*jan."
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*febr."
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*márc."
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*ápr."
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*máj."
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*jún."
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*júl."
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*aug."
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*szept."
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*okt."
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*nov."
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*dec."
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "január"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "február"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "március"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "április"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "május"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "június"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "július"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "augusztus"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "szeptember"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "október"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "november"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "december"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "IGAZ"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "HAMIS"
+
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# data/browser.xml.h:3
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Fekete"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Kék"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Ciánkék"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Zöld"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Lila"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Vörös"
+
+# #-#-#-#-#  nautilus.HEAD.hu.po-new.po (nautilus CVS-HEAD)  #-#-#-#-#
+# data/browser.xml.h:82
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Fehér"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Sárga"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "afgán afgani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "albán lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "örmény dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "holland antilláki guilder"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "angolai kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "argentin peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "ausztrál dollár"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "arubai guilder"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "azerbajdzsáni manat"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+#, fuzzy
+msgid "Barbados, Dollars"
+msgstr "barbadosi dollár"
+
+#: goffice/utils/formats.c:401
+#, fuzzy
+msgid "Bangladesh, Taka"
+msgstr "bangladesi taka"
+
+#: goffice/utils/formats.c:402
+#, fuzzy
+msgid "Bulgaria, Leva"
+msgstr "bolgár leva"
+
+#: goffice/utils/formats.c:403
+#, fuzzy
+msgid "Bahrain, Dinars"
+msgstr "bahraini dínár"
+
+#: goffice/utils/formats.c:404
+#, fuzzy
+msgid "Burundi, Francs"
+msgstr "burundi frank"
+
+#: goffice/utils/formats.c:405
+#, fuzzy
+msgid "Bermuda, Dollars"
+msgstr "bermudai dollár"
+
+#: goffice/utils/formats.c:406
+#, fuzzy
+msgid "Brunei Darussalam, Dollars"
+msgstr "brunei dollár"
+
+#: goffice/utils/formats.c:407
+#, fuzzy
+msgid "Bolivia, Bolivianos"
+msgstr "bolíviai boliviano"
+
+#: goffice/utils/formats.c:408
+#, fuzzy
+msgid "Brazil, Brazil Real"
+msgstr "brazil cruzeiro"
+
+#: goffice/utils/formats.c:409
+#, fuzzy
+msgid "Bahamas, Dollars"
+msgstr "bahamai dollár"
+
+#: goffice/utils/formats.c:410
+#, fuzzy
+msgid "Bhutan, Ngultrum"
+msgstr "butáni ngultrum"
+
+#: goffice/utils/formats.c:411
+#, fuzzy
+msgid "Botswana, Pulas"
+msgstr "botswanai pula"
+
+#: goffice/utils/formats.c:412
+#, fuzzy
+msgid "Belarus, Rubles"
+msgstr "belarusz rubel"
+
+#: goffice/utils/formats.c:413
+#, fuzzy
+msgid "Belize, Dollars"
+msgstr "Belize-i dollár"
+
+#: goffice/utils/formats.c:414
+#, fuzzy
+msgid "Canada, Dollars"
+msgstr "kanadai dollár"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+#, fuzzy
+msgid "Chile, Pesos"
+msgstr "chilei peso"
+
+#: goffice/utils/formats.c:418
+#, fuzzy
+msgid "China, Yuan Renminbi"
+msgstr "kínai jüan"
+
+#: goffice/utils/formats.c:419
+#, fuzzy
+msgid "Colombia, Pesos"
+msgstr "kolumbiai peso"
+
+#: goffice/utils/formats.c:420
+#, fuzzy
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica-i colon"
+
+#: goffice/utils/formats.c:421
+#, fuzzy
+msgid "Cuba, Pesos"
+msgstr "kubai peso"
+
+#: goffice/utils/formats.c:422
+#, fuzzy
+msgid "Cape Verde, Escudos"
+msgstr "zöldfoki escudo"
+
+#: goffice/utils/formats.c:423
+#, fuzzy
+msgid "Cyprus, Pounds"
+msgstr "ciprusi font"
+
+#: goffice/utils/formats.c:424
+#, fuzzy
+msgid "Czech Republic, Koruny"
+msgstr "cseh korona"
+
+#: goffice/utils/formats.c:425
+#, fuzzy
+msgid "Djibouti, Francs"
+msgstr "dzsibuti frank"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+#, fuzzy
+msgid "Dominican Republic, Pesos"
+msgstr "dominikai peso"
+
+#: goffice/utils/formats.c:428
+#, fuzzy
+msgid "Algeria, Algeria Dinars"
+msgstr "algériai dínár"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+#, fuzzy
+msgid "Egypt, Pounds"
+msgstr "egyiptomi font"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+#, fuzzy
+msgid "Ethiopia, Birr"
+msgstr "etiópiai birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+#, fuzzy
+msgid "Fiji, Dollars"
+msgstr "fiji dollár"
+
+#: goffice/utils/formats.c:435
+#, fuzzy
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland-szigeteki font"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+#, fuzzy
+msgid "Guernsey, Pounds"
+msgstr "szudáni font"
+
+#: goffice/utils/formats.c:439
+#, fuzzy
+msgid "Ghana, Cedis"
+msgstr "ghánai cedi"
+
+#: goffice/utils/formats.c:440
+#, fuzzy
+msgid "Gibraltar, Pounds"
+msgstr "gibraltári font"
+
+#: goffice/utils/formats.c:441
+#, fuzzy
+msgid "Gambia, Dalasi"
+msgstr "gambiai dalasi"
+
+#: goffice/utils/formats.c:442
+#, fuzzy
+msgid "Guinea, Francs"
+msgstr "guineai frank"
+
+#: goffice/utils/formats.c:443
+#, fuzzy
+msgid "Guatemala, Quetzales"
+msgstr "guatemalai quetzal"
+
+#: goffice/utils/formats.c:444
+#, fuzzy
+msgid "Guyana, Dollars"
+msgstr "guyanai dollár"
+
+#: goffice/utils/formats.c:445
+#, fuzzy
+msgid "Hong Kong, Dollars"
+msgstr "hongkongi dollár"
+
+#: goffice/utils/formats.c:446
+#, fuzzy
+msgid "Honduras, Lempiras"
+msgstr "hondurasi lempira"
+
+#: goffice/utils/formats.c:447
+#, fuzzy
+msgid "Croatia, Kuna"
+msgstr "horvát kuna"
+
+#: goffice/utils/formats.c:448
+#, fuzzy
+msgid "Haiti, Gourdes"
+msgstr "haiti gourde"
+
+#: goffice/utils/formats.c:449
+#, fuzzy
+msgid "Hungary, Forint"
+msgstr "magyar forint"
+
+#: goffice/utils/formats.c:450
+#, fuzzy
+msgid "Indonesia, Rupiahs"
+msgstr "indonéziai rúpia"
+
+#: goffice/utils/formats.c:451
+#, fuzzy
+msgid "Israel, New Shekels"
+msgstr "izraeli sékel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+#, fuzzy
+msgid "India, Rupees"
+msgstr "indiai rúpia"
+
+#: goffice/utils/formats.c:454
+#, fuzzy
+msgid "Iraq, Dinars"
+msgstr "iraki dínár"
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "iráni rial"
+
+#: goffice/utils/formats.c:456
+#, fuzzy
+msgid "Iceland, Kronur"
+msgstr "izlandi korona"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+#, fuzzy
+msgid "Jamaica, Dollars"
+msgstr "jamaikai dollár"
+
+#: goffice/utils/formats.c:459
+#, fuzzy
+msgid "Jordan, Dinars"
+msgstr "jordániai dínár"
+
+#: goffice/utils/formats.c:460
+#, fuzzy
+msgid "Japan, Yen"
+msgstr "japán jen"
+
+#: goffice/utils/formats.c:461
+#, fuzzy
+msgid "Kenya, Shillings"
+msgstr "kenyai shilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+#, fuzzy
+msgid "Comoros, Francs"
+msgstr "Comore-szigeteki frank"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+#, fuzzy
+msgid "Kuwait, Dinars"
+msgstr "kuvaiti dínár"
+
+#: goffice/utils/formats.c:468
+#, fuzzy
+msgid "Cayman Islands, Dollars"
+msgstr "Kajmán-szigeteki dollár"
+
+#: goffice/utils/formats.c:469
+#, fuzzy
+msgid "Kazakstan, Tenge"
+msgstr "pakisztáni rúpia"
+
+#: goffice/utils/formats.c:470
+#, fuzzy
+msgid "Laos, Kips"
+msgstr "laoszi kip"
+
+#: goffice/utils/formats.c:471
+#, fuzzy
+msgid "Lebanon, Pounds"
+msgstr "libanoni font"
+
+#: goffice/utils/formats.c:472
+#, fuzzy
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka-i rúpia"
+
+#: goffice/utils/formats.c:473
+#, fuzzy
+msgid "Liberia, Dollars"
+msgstr "libériai dolllár"
+
+#: goffice/utils/formats.c:474
+#, fuzzy
+msgid "Lesotho, Maloti"
+msgstr "lesothoi loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+#, fuzzy
+msgid "Libya, Dinars"
+msgstr "líbiai dínár"
+
+#: goffice/utils/formats.c:478
+#, fuzzy
+msgid "Morocco, Dirhams"
+msgstr "marokkói dirham"
+
+#: goffice/utils/formats.c:479
+#, fuzzy
+msgid "Moldova, Lei"
+msgstr "moldovai lej"
+
+#: goffice/utils/formats.c:480
+#, fuzzy
+msgid "Madagascar, Malagasy Francs"
+msgstr "madagaszkári frank"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+#, fuzzy
+msgid "Myanmar (Burma), Kyats"
+msgstr "myanmari kyat"
+
+#: goffice/utils/formats.c:483
+#, fuzzy
+msgid "Mongolia, Tugriks"
+msgstr "mongol tugrik"
+
+#: goffice/utils/formats.c:484
+#, fuzzy
+msgid "Macau, Patacas"
+msgstr "makaói pataca"
+
+#: goffice/utils/formats.c:485
+#, fuzzy
+msgid "Mauritania, Ouguiyas"
+msgstr "mauritániai ouguiya"
+
+#: goffice/utils/formats.c:486
+#, fuzzy
+msgid "Malta, Liri"
+msgstr "máltai líra"
+
+#: goffice/utils/formats.c:487
+#, fuzzy
+msgid "Mauritius, Rupees"
+msgstr "mauritiusi rúpia"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+#, fuzzy
+msgid "Malawi, Kwachas"
+msgstr "malawi kwacha"
+
+#: goffice/utils/formats.c:490
+#, fuzzy
+msgid "Mexico, Pesos"
+msgstr "mexikói peso"
+
+#: goffice/utils/formats.c:491
+#, fuzzy
+msgid "Malaysia, Ringgits"
+msgstr "malajziai ringgit"
+
+#: goffice/utils/formats.c:492
+#, fuzzy
+msgid "Mozambique, Meticais"
+msgstr "mozambiki metical"
+
+#: goffice/utils/formats.c:493
+#, fuzzy
+msgid "Namibia, Dollars"
+msgstr "libériai dolllár"
+
+#: goffice/utils/formats.c:494
+#, fuzzy
+msgid "Nigeria, Nairas"
+msgstr "nigériai naira"
+
+#: goffice/utils/formats.c:495
+#, fuzzy
+msgid "Nicaragua, Gold Cordobas"
+msgstr "nicaraguai arany cordoba"
+
+#: goffice/utils/formats.c:496
+#, fuzzy
+msgid "Norway, Krone"
+msgstr "norvég korona"
+
+#: goffice/utils/formats.c:497
+#, fuzzy
+msgid "Nepal, Nepal Rupees"
+msgstr "nepáli rúpia"
+
+#: goffice/utils/formats.c:498
+#, fuzzy
+msgid "New Zealand, Dollars"
+msgstr "új-zélandi dollár"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+#, fuzzy
+msgid "Panama, Balboa"
+msgstr "panamai balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+#, fuzzy
+msgid "Papua New Guinea, Kina"
+msgstr "pápua új-guineai kina"
+
+#: goffice/utils/formats.c:503
+#, fuzzy
+msgid "Philippines, Pesos"
+msgstr "Fülöp-szigeteki peso"
+
+#: goffice/utils/formats.c:504
+#, fuzzy
+msgid "Pakistan, Rupees"
+msgstr "pakisztáni rúpia"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+#, fuzzy
+msgid "Paraguay, Guarani"
+msgstr "paraguay-i guarani"
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "katari rial"
+
+#: goffice/utils/formats.c:508
+#, fuzzy
+msgid "Romania, Lei"
+msgstr "román lej"
+
+#: goffice/utils/formats.c:509
+#, fuzzy
+msgid "Russia, Rubles"
+msgstr "belarusz rubel"
+
+#: goffice/utils/formats.c:510
+#, fuzzy
+msgid "Rwanda, Rwanda Francs"
+msgstr "ruandai frank"
+
+#: goffice/utils/formats.c:511
+#, fuzzy
+msgid "Saudi Arabia, Riyals"
+msgstr "szaud-arábiai rial"
+
+#: goffice/utils/formats.c:512
+#, fuzzy
+msgid "Solomon Islands, Dollars"
+msgstr "Salamon-szigeteki dollár"
+
+#: goffice/utils/formats.c:513
+#, fuzzy
+msgid "Seychelles, Rupees"
+msgstr "Seychelles-i rúpia"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+#, fuzzy
+msgid "Singapore, Dollars"
+msgstr "szingapúri dollár"
+
+#: goffice/utils/formats.c:517
+#, fuzzy
+msgid "Saint Helena, Pounds"
+msgstr "St. Helena-i font"
+
+#: goffice/utils/formats.c:518
+#, fuzzy
+msgid "Slovenia, Tolars"
+msgstr "Szlovén tolár"
+
+#: goffice/utils/formats.c:519
+#, fuzzy
+msgid "Slovakia, Koruny"
+msgstr "Szlovén tolár"
+
+#: goffice/utils/formats.c:520
+#, fuzzy
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone-i leone"
+
+#: goffice/utils/formats.c:521
+#, fuzzy
+msgid "Somalia, Shillings"
+msgstr "szomáliai shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+#, fuzzy
+msgid "Suriname, Guilders"
+msgstr "szurinámi guilder"
+
+#: goffice/utils/formats.c:524
+#, fuzzy
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome és Principe-i dobra"
+
+#: goffice/utils/formats.c:525
+#, fuzzy
+msgid "El Salvador, Colones"
+msgstr "El Salvador-i colon"
+
+#: goffice/utils/formats.c:526
+#, fuzzy
+msgid "Syria, Pounds"
+msgstr "szíriai font"
+
+#: goffice/utils/formats.c:527
+#, fuzzy
+msgid "Swaziland, Emalangeni"
+msgstr "szváziföldi lilangeni"
+
+#: goffice/utils/formats.c:528
+#, fuzzy
+msgid "Thailand, Baht"
+msgstr "thai baht"
+
+#: goffice/utils/formats.c:529
+#, fuzzy
+msgid "Tajikistan, Rubles"
+msgstr "pakisztáni rúpia"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+#, fuzzy
+msgid "Tunisia, Dinars"
+msgstr "tunéziai dínár"
+
+#: goffice/utils/formats.c:532
+#, fuzzy
+msgid "Tonga, Pa'anga"
+msgstr "tongai pa'anga"
+
+#: goffice/utils/formats.c:533
+#, fuzzy
+msgid "Turkey, Liras"
+msgstr "török líra"
+
+#: goffice/utils/formats.c:534
+#, fuzzy
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad és Tobago-i dollár"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+#, fuzzy
+msgid "Taiwan, New Dollars"
+msgstr "új tajvani dollár"
+
+#: goffice/utils/formats.c:537
+#, fuzzy
+msgid "Tanzania, Shillings"
+msgstr "tanzániai shilling"
+
+#: goffice/utils/formats.c:538
+#, fuzzy
+msgid "Ukraine, Hryvnia"
+msgstr "ukrán hrivnya"
+
+#: goffice/utils/formats.c:539
+#, fuzzy
+msgid "Uganda, Shillings"
+msgstr "ugangai shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+#, fuzzy
+msgid "Uruguay, Pesos"
+msgstr "uruguay-i peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+#, fuzzy
+msgid "Venezuela, Bolivares"
+msgstr "venezuelai bolivar"
+
+#: goffice/utils/formats.c:544
+#, fuzzy
+msgid "Viet Nam, Dong"
+msgstr "vietnámi dong"
+
+#: goffice/utils/formats.c:545
+#, fuzzy
+msgid "Vanuatu, Vatu"
+msgstr "vanuatui vatu"
+
+#: goffice/utils/formats.c:546
+#, fuzzy
+msgid "Samoa, Tala"
+msgstr "szamoai tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+#, fuzzy
+msgid "Silver, Ounces"
+msgstr "A Megoldó beállításai"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+#, fuzzy
+msgid "East Caribbean Dollars"
+msgstr "kelet-karib dollár"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+#, fuzzy
+msgid "Yemen, Rials"
+msgstr "jemeni rial"
+
+#: goffice/utils/formats.c:557
+#, fuzzy
+msgid "Yugoslavia, New Dinars"
+msgstr "új jugoszláv dínár"
+
+#: goffice/utils/formats.c:558
+#, fuzzy
+msgid "South Africa, Rand"
+msgstr "dél-afrikai rand"
+
+#: goffice/utils/formats.c:559
+#, fuzzy
+msgid "Zambia, Kwacha"
+msgstr "zambiai kwacha"
+
+#: goffice/utils/formats.c:560
+#, fuzzy
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "zimbabwei dollár"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Nincs"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Tömör"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatikus"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Nincs"
+
+#: goffice/utils/go-marker.c:221
+#, fuzzy
+msgid "square"
+msgstr "Forrás"
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Átlós"
+
+#: goffice/utils/go-marker.c:223
+#, fuzzy
+msgid "triangle down"
+msgstr "Tartomány"
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "Tartomány"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Tartomány"
+
+#: goffice/utils/go-marker.c:226
+#, fuzzy
+msgid "triangle left"
+msgstr "Tartomány"
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "Félkörök"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "Költség"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Link beillesztése"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*márc."
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Szürke"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% Szürke"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% Szürke"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12,5% Szürke"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6,25% Szürke"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Vízszintes csíkos"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Függőleges csíkos"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Fordított átlósan csíkos"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Átlósan csíkos"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Átlós keresztmintás"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Vastag átlós keresztmintás"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Vékony vízszintes csíkos"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Vékony függőleges csíkos"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Vékony fordított átlósan csíkos"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Vékony átlósan csíkos"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Vékony vízszintes keresztmintás"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Vékony átlós keresztmintás"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Tömör előtér"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Kis körök"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Félkörök"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Zsúp"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Nagy körök"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Téglák"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Címkék"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Értékek"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Hiba a sor értelmezésénél"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+# #-#-#-#-#  epiphany.HEAD.hu.po-new.po (Epiphany CVS)  #-#-#-#-#
+# src/trans.h:122
+# #-#-#-#-#  galeon.HEAD.hu.po-new.po (Galeon 1.2)  #-#-#-#-#
+# src/trans.h:122
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Grafikon"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Rendezés"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Rendezés"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "S_zázalék"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Oszlopok beszúrása"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Oszlopok beszúrása"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Area"
+msgstr "_Aláhúzás:"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "_Aláhúzás:"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Oszlop"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Vonal"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Sorok importálása"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Vonal"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "S_zázalék"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "S_zázalék"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "S_zázalék"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "S_zázalék"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "S_zázalék"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Nevek definiálása"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Sor- és oszlopa_zonosítókkal"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "_Rendezés"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Érvénytelen keresőminta"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Rendezés"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "_Rendezés"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "_Rendezés"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Hiba a sor értelmezésénél"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Nem sikerült a fájl létrehozása: %s\n"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Nevek definiálása"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Rendezés"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Semmi"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Elválasztó :"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "fok"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Elválasztó :"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Kategória :"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "_Cellarácsokkal"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Felosztás"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Szorzás"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Szorzás"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Ár"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "Tartomány"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Felosztás"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Felosztás"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Rendezés"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Rendezés"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "S_zázalék"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Nevek definiálása"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Hiba a sor értelmezésénél"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Egész számok"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Darabszám"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Sorok importálása"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Forrás"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Hiba a sor értelmezésénél"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Tortadiagram"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Tortadiagram"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "%-a a normál méretnek"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Paraméterek"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Forrás"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Rendezés"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Kétszeres"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Kétszeres"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Hiba a sor értelmezésénél"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Hiba a sor értelmezésénél"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Oszlopok törlése"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Vonal"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Pont"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Vonal"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/it.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/it.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/it.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4409 @@
+# Italian translation for GNUMERIC
+# Copyright (C) 1999-2004 Free Software Foundation, Inc.
+# Leandro Noferini <lnoferin at cybervalley.org> 2002, 2203
+# Luca Ferretti <elle.uca at infinito.it>, 2003, 2004
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.3.9x\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-12-14 22:30+0100\n"
+"Last-Translator: Luca Ferretti <elle.uca at infinito.it>\n"
+"Language-Team: Italian <tp at list.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Il salvataggio sopra vecchi file di questo tipo è disabilitato per sicurezza."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"È possibile disattivare questa caratteristica di sicurezza editando il file "
+"plugin.xml appropriato."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Oggettivo"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Il file contiene informazione plugin con id (%s) non valido, era atteso %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Impossibile leggere informazione plugin dal file."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nome sconosciuto"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Tipo di caricatore «%s» non supportato."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Errore durante la preparazione del caricatore «%s»."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Errore durante la lettura informazione servizio #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Impossibile leggere il file informazioni del plugin (%s)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Il file «%s» non è un file di informazioni plugin valido."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Errore durante la lettura dei servizi per il plugin con id=«%s»."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Carattere non valido (%s) nell'id del plugin"
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nome di plugin sconosciuto."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Nessun caricatore definito o id del caricatore non valido per il plugin con "
+"id=«%s»."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Il plugin non ha id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Errore nell'inizializzare il caricatore di plugin («%s»)."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Rilevate dipendenze cicliche del plugin."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Impossibile attivare il plugin con id=«%s»."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Impossibile trovare il plugin con id=«%s»."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Errore durante l'attivazione delle dipendenze del plugin."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Errore durante l'attivazione del servizio di plugin #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Errore durante la disattivazione del servizio di plugin #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Impossibile caricare il caricatore di plugin."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Impossibile caricare il plugin con id=«%s»."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Errore durante il caricamento delle dipendenze del plugin."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Si è verificato un errore durante la lettura delle informazioni del plugin "
+"dal file «%s»."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Impossibile attivare il plugin «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Impossibile disattivare il plugin «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Errore durante la lettura delle informazioni sui plugin disponibili."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Errore durante la disattivazione dei plugin che non sono più su disco."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"I seguenti plugin non sono più su disco, ma sono ancora attivi:\n"
+"%s.\n"
+"Si dovrebbe riavviare Gnumeric adesso."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Errore dutante l'applicazione dei plugin."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Errore durante l'inizializzazione del sistema di plugin"
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Il caricatore non alcun metodo \"set_attribute\".\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Il caricatore non ha alcun metodo \"load_base\".\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Il servizio «%s» non è supportato dal caricatore."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nome del file modulo non fornito."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Impossibile aprire il file modulo «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Formato non valido nel file modulo «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Il file non contiene il simbolo «plugin_file_struct»."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Il file ha un magic number errato."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "La versione del plugin «%s» differisce dall'applicazione «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Il caricamento dinamico dei moduli non è supportato su questo sistema."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Impossibile chiudere il file del modulo «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Il file non contiene la funzione «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Il modulo non contien la funzione «%s»."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Errore durante il caricamento del servizio di plugin."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+"Inizializzazione di funzione all'interno del plugin ha ritornato un errore."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Pulizia di funzione all'interno del plugin ha ritornato un errore."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Generale"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Il file opener non ha descrizione"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "File opener - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Errore durante la lettura del file."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Il file saver non ha descrizione"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "File saver - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Errore durante il salvataggio del file."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Caricatore plugin"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Caricatore GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Nessun attributo «type» nell'elemento «service»."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Tipo di servizio sconosciuto: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Errore nella lettura delle informazioni del servizio."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"È necessario caricare il servizio prima di attivarlo (è impostato "
+"PLUGIN_ALWAYS_LOAD), ma il caricamento è fallito."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "pagine"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "R_ientro:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "C_erca"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Allineamento"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+msgid "Bullet Character"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Dimensione problema"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discreta"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Mappatura discreta"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Lineare"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Mappatura lineare"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Logaritmico"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Mappatura logaritmica"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Dettagli"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatico"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Categorie tra le tacc_he"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Categorie tra le _etichette"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Estremi"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "_Min"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "Ma_x"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Tacche p_rincipali"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Tacche _secondarie"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Incrociato"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formato"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etichetta"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "GrigliaSecondaria"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "GrigliaPrincipale"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Tacche principali</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mappatura</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Tacche secondarie</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Posizione</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "All'i_nterno"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "All'e_sterno"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "In a_lto"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "All'intern_o"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "Assi in_vertiti"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "In _basso"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "All'_esterno"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "Mo_strare etichette"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tipo:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Titolo"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Griglia"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Asse x"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Asse y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Asse z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Assi circolari"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Assi radiali"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Tracciato"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "A"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Altezza"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "L"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Larghezza"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Nessuna barra d'errore mostrata"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Mostrata barra d'errori positivi"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Mostrata barra d'errori negativi"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Mostrata barra d'errori piena"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Categoria di errore</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stile</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Valori</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Colo_re:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "_Mostra:"
+
+# dovrebbe essere categoria d'errore
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Nessuna\n"
+"Assoluta\n"
+"Relativa\n"
+"Percentuale"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Larghezza della linea:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "Lar_ghezza:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Grafico"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Diagramma"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nome"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Passo 1 di 2 - Selezione tipo diagramma"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Passo 2 di 2 - Personalizzazione diagramma"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Personalizzazione diagramma"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "I_nserisci"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Tipo di _tracciato"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Grafico GNOME Office"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Porta in _alto"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Porta _sopra a tutto"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Spingi in _basso"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Spingi in _fondo a tutto"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Ordina"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definizione</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Motivo</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stile</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Campione"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Descrizione"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "Te_sto:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Dati"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Serie"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Motore tracciati"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Tipo tracciato"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Tema diagramma"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Indice:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Impostazioni"
+
+# Mmmmhhh questo termine è usato in due luoghi,per i grafici, dove è corretto
+# e per lo strumento statistico "ranghi e percentili", nel creare l'output.
+#
+# Excello traduce l'ananogo termine con "Dato".
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punto"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Tipo di carattere"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stile"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 colori\n"
+"Luminosità"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Riempimento</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linea</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "<b>Segnaposto</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Contorno</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Co_lore:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Nessuno\n"
+"Modello\n"
+"Gradiente\n"
+"Immagine"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Colore co_rnice:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Figura:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Dimen_sione:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "S_tile:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "_Tipo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "S_fondo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "Dire_zione:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "Fi_ne:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Colore _riempimento:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "A_datta:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "Pri_mo piano:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Motivo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Seleziona..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "D_imensione:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "Ini_zio:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "c_hiaro"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "sc_uro"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "punti"
+
+# non è la traduzione letterale, ma è quello che succede
+# scegliendo una immagine come sfondo di uno dei vari elementi
+# del grafico
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"stirata\n"
+"ripetuta"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Predefinito"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabo"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltico"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Centro europeo"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Cinese"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cirillico"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Greco"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Ebraico"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indiano"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Giapponese"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Coreano"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turco"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamita"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Occidentale"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Altro"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabo (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabo (ISO-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabo (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabo (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabo (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabo (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabo (Windows-12-56)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armeno (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltico (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltico (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltico (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtico (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Centro europeo (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Centro europeo (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Centro europeo (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Centro europeo (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Cinese semplificato (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Cinese semplificato (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Cinese semplificato (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Cinese semplificato (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Cinese semplificato (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Cinese tradizionale (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Cinese tradizionale (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Cinese tradizionale (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croato (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirillico (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirillico (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirillico (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirillico (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cirillico (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirillico (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russo (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ucraino (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ucraino (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Inglese (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgiano (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Greco (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Greco (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Greco (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Ebraico (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Ebraico (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Ebraico (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Ebreo (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Ebreo (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Indi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandese (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Giapponese (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Giapponese (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Giapponese (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Coreano (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Coreano (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Coreano (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Coreano (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordico (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumeno (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumeno (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Sud europeo (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tailandese (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turco (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turco (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turco (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turco (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Definito dall'utente"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamita (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamita (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamita (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamita (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Ebraico visuale (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Occidentale (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Occidentale (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Occidentale (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Occidentale (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Occidentale (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Localizzazione: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Direzione di conversione"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Questo valore determina quale test iconv eseguire."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "nero"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "marrone chiaro"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "marrone dorato"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "verde scuro n.2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "navy"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "blu scuro"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "viola n.2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "grigio molto scuro"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "rosso scuro"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "rosso arancio"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "oro"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "verde scuro"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "blu spento"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blu"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "viola spento"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "grigio scuro"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "rosso"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "arancione"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "limone"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "verde spento"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "verde spento n.2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "blu cielo n.2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "viola"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grigio"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "arancione vivace"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "giallo"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "verde"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "ciano"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "blue spento"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "rosso porpora"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "grigio chiaro"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "arancione chiaro"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "giallo chiaro"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "verde chiaro"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "ciano chiaro"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "blu chiaro"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "viola chiaro"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "bianco"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "blu porpora"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "viola scuro"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "blu cielo"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "personalizzato"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Colore personalizzato..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Tipo di ombra"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientamento"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Larghezza preferita"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Altezza preferita"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Impossibile aprire il file «%s»"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Tutti i file"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Immagini"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Selezionare un'immagine"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Salva come"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Tipo di file:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"L'estensione fornita per il file non corrisponde col tipo di file scelto. "
+"Usare comunque questo nome?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"è un nome di directory"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Permessi non sufficienti per salvare in\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Un file di nome <i>%s</i> esiste già in %s?\n"
+"\n"
+"Sovrascriverlo?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normale"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Grassetto"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Grassetto corsivo"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Corsivo"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stile del carattere:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Tipo di carattere:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Anteprima"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Dimensione:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Numero"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Contabilità"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Data"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Ora"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Percentuale"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Frazione"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Scientifico"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Testo"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Speciale"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Personalizzato"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Formato numeri negativi"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formato numerico"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tegorie:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Cifre deci_mali:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Mostra importi negli stili tradizionali di contabilità."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Mostra ed inserisce valori come stringhe senza alcuna interpretazione."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Mostra importi monetari."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Mostra date ed opzionalmente ore del giorno."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Mostra valori numerici con un numero fissato di cifre decimali."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Mostra ore del giorno."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+#, fuzzy
+msgid "Display values as closest fractional approximation."
+msgstr "Mostra valori come approssimazione frazionaria più vicina."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Mostra valori come percentuali."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Mostra valori scalando in potenze di dieci."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Co_dice formato:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Formato numeri negativi:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Anteprima:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_imbolo:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Seleziona automaticamente il formato appropriato."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Specifica direttamente un formato in stile XL"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formato:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Usa il separatore per le migliaia"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Europa occidentale"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Europa orientale"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Nord America"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Sud e Centro America"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Africa"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Stati Uniti/Inglese (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sud Africa/Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopia/Aramaico (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Emirati Arabi Uniti (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algeria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egitto (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/Arabo (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraq (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Giordania (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libano (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libia (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marocco (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Arabia Saudita (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Siria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaijan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Bielorussia (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Francia/Bretone (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia ed Erzegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spagna/Catalano (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Repubblica Ceca (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Gran Bretagna/Gallese (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Danimarca (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austria (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgio/Tedesco (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Svizzera/Tedesco (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Germania (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Lussemburgo/Tedesco (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grecia (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canada/Inglese (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Gran Bretagna (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Inglese (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlanda (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/Inglese (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nuova Zelanda (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filippine (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/Inglese (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Stati Uniti/Inglese (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Sud Africa/Inglese (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Cile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Repubblica Dominicana (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spagna (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Messico (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Perù (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Porto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Stati Uniti/Spagnolo (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonia (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spagna/Basco (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finlandia/Finlandese (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Isole Faroe (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgio/Francese (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canada/Francese (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Svizzera/Francese (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Francia (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlanda/Gaelico (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Gran Bretagna/Gaelico scozzese (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spagna/Galiziano (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Gran Bretagna/Gaelico Manx (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croazia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Ungheria (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia (id_IS)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islanda (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Svizzera/Italiano (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italia (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israele/Ebreo (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Giappone (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Groenlandia (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Gran Bretagna/Cornico (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lituania (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Lettonia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nuova Zelanda/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malesia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgio/Fiammingo (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Paesi Bassi (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norvegia/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norvegia/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Francia/Occitano (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polonia (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasile (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portogallo (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romania (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russia (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ucraina/Russo (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norvegia/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovacchia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finlandia/Svedese (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Svezia (sw_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tagikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailandia (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopia/Tigrino (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filippine/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turchia (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Russia/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ucraina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgio/Vallone (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Stati Uniti/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Cina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Cinese (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/Cinese (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Localizzazione attuale: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menù"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Il menù delle opzioni"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Dimensione indicatore"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Dimensione dell'indicatore a discesa"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Spaziatura indicatore"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Spaziatura intorno all'indicatore"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dom"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Lun"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Mer"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Gio"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Ven"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sab"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Domenica"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Lunedì"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Martedì"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Mercoledì"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Giovedì"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Venerdì"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sabato"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Gen"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mag"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Giu"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Lug"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Ago"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Set"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Ott"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dic"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Gennaio"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Febbraio"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Marzo"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Aprile"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mag"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Giugno"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Luglio"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Agosto"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Settembre"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Ottobre"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Novembre"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Dicembre"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "VERO"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSO"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Nero"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blu"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Ciano"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Verde"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Rosso"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Bianco"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Giallo"
+
+# UE
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Emirati arabi uniti, dirham degli EAU"
+
+# UE
+#
+# Le traduzioni italiane di stati e monete che presentano 'UE'
+# nel commento sono state prese da 
+# http://europa.eu.int/comm/translation/currencies/ittable1.htm
+#
+# Un grazie ad Andrea Celli per il prezioso suggerimento
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, afghani"
+
+# UE
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, lek"
+
+# UE
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, dram"
+
+# UE
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Antille olandesi, fiorino delle Antille olandesi"
+
+# UE
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kuanza"
+
+# UE
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, peso argentino"
+
+# UE
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, dollaro australiano"
+
+# UE
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, fiorino arubano"
+
+# UE
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaigian, manat azero"
+
+# UE
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnia-Erzegovina, marco bosniaco convertibile"
+
+# UE
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dollaro delle Barbados"
+
+# UE
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, taka"
+
+# UE
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria, ev"
+
+# UE
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrein, dinaro del Bahrein"
+
+# UE
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, franco burundese"
+
+# UE
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, dollaro delle Bermuda"
+
+# UE
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, dollaro del Brunei"
+
+# UE
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, boliviano"
+
+# UE
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasile, real brasiliano"
+
+# UE
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, dollaro delle Bahamas"
+
+# UE
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrum"
+
+# UE
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pula"
+
+# UE
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Bielorussia, rublo bielorusso"
+
+# UE
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dollaro belizeano"
+
+# UE
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, dollaro canadere"
+
+# UE
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo (ex Zaire), franco congolese"
+
+# UE
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Svizzera, franco svizzero"
+
+# UE
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Cile, peso cileno"
+
+# UE
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Cina, yuan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, peso colombiano"
+
+# UE
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, colón costaricano"
+
+# UE
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, peso cubano"
+
+# UE
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Capo Verde, escudo del Capo Verde"
+
+# UE
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cipro, sterlina cipriota"
+
+# UE
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Repubblica ceca, corona ceca"
+
+# UE
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Gibuti, franco gibutiano"
+
+# UE
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danimarca, corona danese"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Repubblica Dominicana, peso dominicano"
+
+# UE
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algeria, dinaro algerino"
+
+# UE
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia, corona estone"
+
+# UE
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egitto, sterlina egiziana"
+
+# UE
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, nafka"
+
+# UE
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopia, birr etiopico"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Stati dell'area euro, euro"
+
+# UE
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Figi, dollaro figiano"
+
+# UE
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Isole Falkland (Malvine), sterlina delle Falkland"
+
+# La UE dice che la moneta è "lira sterlina" .... ???
+#: goffice/utils/formats.c:436
+#, fuzzy
+msgid "United Kingdom, Pounds"
+msgstr "Regno Unito, sterlina"
+
+# UE
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgia, lari"
+
+# Anche questo appare intradotto nel mio vocabolario...
+#: goffice/utils/formats.c:438
+#, fuzzy
+msgid "Guernsey, Pounds"
+msgstr "Sterlina sudanese"
+
+# UE
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedi"
+
+# UE
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibilterra, sterlina di Gibilterra"
+
+# UE
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, dalasi"
+
+# UE
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, franco guineano"
+
+# UE
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, quetzal"
+
+# UE
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, dollaro guianese"
+
+# UE
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, dollaro di Hong Kong"
+
+# UE
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempira"
+
+# UE
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croazia, kuna"
+
+# UE
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gourde"
+
+# UE
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Ungheria, forint"
+
+# UE
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia, rupia indonesiana"
+
+# UE
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israele, nuovo sheqel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isola di Man, sterlina"
+
+# UE
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, rupia indiana"
+
+# UE
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraq, dinaro iracheno"
+
+# UE
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, rial iraniano"
+
+# UE
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Islansa, corona islandese"
+
+# Il mio dizionario riporta 
+#    Jersey: Jersey (isola della Manica)
+# ma mi sa che non è quella...
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+# UE
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Giamaica, dollaro giamaicano"
+
+# UE
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Giordania, dinaro giordano"
+
+# UE
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Giappone, yen"
+
+# UE
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, scellino keniota"
+
+# UE
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirghizistan, som"
+
+# UE
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Cambogia, riel"
+
+# UE
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comore, franco comoriano"
+
+# UE
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Corea del Nord, won nordcoreano"
+
+# UE
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Corea del Sud, won sudcoreano"
+
+# UE
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, dinaro kuwaitiano"
+
+# UE
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Isole Cayman, dollaro delle Isole Cayman"
+
+# UE
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakistan, tenge"
+
+# UE
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kip"
+
+# UE
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libano, sterlina libanese"
+
+# UE
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, rupia singalese"
+
+# UE
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, dollaro liberiano"
+
+# UE
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, loti"
+
+# UE
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lituania, lita"
+
+# UE
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Lettonia, lat"
+
+# UE
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libia, dinaro libico"
+
+# UE
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marocco, dirham marocchino"
+
+# UE
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldavia, leu moldavo"
+
+# UE
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagascar, franco malgascio"
+
+# UE
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedonia, dinaro macedone"
+
+# UE
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Birmania), kyat"
+
+# UE
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia, tughrik"
+
+# UE
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macao, pataca"
+
+# UE
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritania, ouguiya"
+
+# UE
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, lira maltese"
+
+# UE
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, rupia mauriziana"
+
+# UE
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldive (Isole Maldive), rufiya"
+
+# UE
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwacha malawiano"
+
+# UE
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Messico, peso messicano"
+
+# UE
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malesia, ringgit"
+
+# UE
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambico, metical"
+
+# UE
+#
+# in realtà ha anche il rand sudafricano come valuta valida
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, dollaro namibiano"
+
+# UE
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, naira"
+
+# UE
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, córdoba"
+
+# UE
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norvegia, corona norvegese"
+
+# UE
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, rupia nepalese"
+
+# UE
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nuova Zelanda, dollaro neozelandese"
+
+# UE
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rial omani"
+
+# UE
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboa"
+
+# UE
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Perù, nuovo sol"
+
+# UE
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nuova Guinea, kina"
+
+# UE
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filippine, peso filippino"
+
+# UE
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, rupia pakistana"
+
+# UE
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polonia, zloty"
+
+# UE
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, guaranì"
+
+# UE
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, rial qatariano"
+
+# UE
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania, leu rumeno"
+
+# UE
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russia, rublo"
+
+# UE
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, franco ruandese"
+
+# UE
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Arabia Saudita, rial saudita"
+
+# UE
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Isole Salomone, dollaro delle Salomone"
+
+# UE
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seicelle, rupia seicellese"
+
+# UE
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dinaro sudanese"
+
+# UE
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Svezia, corona svedere"
+
+# UE
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore, dollaro di singapore"
+
+# UE
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Sant'Elena, sterlina di Sant'Elena"
+
+# UE
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenia, tallero sloveno"
+
+# UE
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovacchia, corona slovacca"
+
+# UE
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, leone"
+
+# UE
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, scellino somalo"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+# UE
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname, fiorino surinamese"
+
+# UE
+#
+# Cambiare la &iacute; in &igrave;
+#: goffice/utils/formats.c:524
+#, fuzzy
+msgid "Sao Tome and Principe, Dobras"
+msgstr "São Tomé e  Prìncipe, dobra"
+
+# UE
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, colon salvadoregno"
+
+# UE
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Siria, sterlina siriana"
+
+# UE
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, lilageni"
+
+# UE
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailandia, bath"
+
+# UE
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tagikistan, somoni"
+
+# UE
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manat turkmeno"
+
+# UE
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisia, dinaro tunisino"
+
+# UE
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, paanga"
+
+# UE
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turchia, lira turca"
+
+# UE
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad e Tobago, dollaro di Trinidad e Tobago"
+
+# UE
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, dollaro australiano"
+
+# UE
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, nuovo dollaro"
+
+# UE
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, scellino tanzaniano"
+
+# UE
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ucraina, grivna"
+
+# UE
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, scellino ugandese"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "USA, dollaro"
+
+# UE
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, peso uruguaiano"
+
+# UE
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, sum uzbeko"
+
+# UE
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, bolivar"
+
+# UE
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, dong"
+
+# UE
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanatu, vatu"
+
+# UE
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Argento, Once"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Oro, Once"
+
+# Sarebbe usato da Anguilla, Antigua e Barbuda, Dominica, Grenada,
+# Monserrat, Saint Christopher e Nevis, Saint Lucia, Saint Vincent e Grenadine.
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Dollaro dei Caraibi orientali"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladio, once"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platino, once"
+
+# UE
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, rial yemenita"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslavia, nuovo dinaro"
+
+# UE
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Sudafrica, rand"
+
+# UE
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, kwacha zambiano"
+
+# UE
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, dollaro zimbabwano"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Nessuno"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Pieno"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Tratto"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Punto"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Tratto punto"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Tratto punto punto"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatico (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "nessuno"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "quadrato"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamante"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triangolo giu"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triangolo su"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triangolo destra"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triangolo sinistra"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "cerchio"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "croce"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterisco"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "barra"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "mezza barra"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "farfalla"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "clessidra"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "Grigio 75%"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "Grigio 50%"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "Grigio 25%"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "Grigio 12,5%"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "Grigio 6,25%"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Bande orizzontali"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Bande verticali"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Bande diagonali inverse"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Bande diagonali"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Croci diagonali"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Croci diagonali spesse"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Bande orizzontali sottili"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Bande verticali sottili"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Bande diagonali inverse sottili"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Bande diagonali sottili"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Croci orizzontali sottili"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Croci diagonali sottili"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Primo piano pieno"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Cerchi piccoli"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semicerchi"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Intrecciato"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Cerchi grandi"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Mattoncini"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etichette"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valori"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Barre d'errore"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "TracciatoBarraColon"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+"Quantità di sovrapposizione di barre/colonne come percentuale della larghezza"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "So_vrapposizione:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+"Separazione tra i gruppi come percentuale della larghezza di barre/colonne"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Gap:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "TracciatoLinea"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "TracciatoArea"
+
+# Come gnumeric descrive i tracciati.
+#
+# Ogni file .xml di nome plot-types.xml definisce i tipi base/standard di
+# tracciati che si possono avere con gnumeric. In ognino di questi file vi è
+# definita:
+# 	* la o le famiglie di grafico fornito (Line, Area, Bar, Column
+# 	* i vari tipi di grafico identificati da
+# 		 - Nome "Unmarked Lines" "Adjacent Columns"
+# 		 - descrizioe "Line plot." "Adjacent vertical columns grouped by major and minor categories."
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Barre 3D adiacenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Colonne 3D adiacenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "Barre 3D percentuale"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Colonne 3D percentuale"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Barre 3D in pila"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Colonne 3D in pila"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Barre adiacenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Colonne adiacenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Barre 3D orizzontali adiacenti raggruppate per categorie principali e "
+"secondarie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Barre orizzontali adiacenti raggruppate per categorie principali e "
+"secondarie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Colonne 3D verticali adiacenti raggruppate per categorie principali e "
+"secondarie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Colonne verticali adiacenti raggruppate per categorie principali e "
+"secondarie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Area"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Tracciato area."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Aree"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Barra"
+
+# Excello lo definisce 'Istogramma'
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Colonna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linea"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Tracciato linea."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linee"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categorie secondarie in pila come percentuali del totale delle secondarie, "
+"su bare 3D orizzontali, raggruppate per categoria principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Categorie secondarie in pila come percentuale del totale delle secondarie, "
+"su barre verticali, raggruppate per categora principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categorie secondarie in pila come percentuali del totale delle secondarie, "
+"su barre orizzontali, raggrupate per categoria principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Categorie secondarie in pila come percentuali del totale delle secondarie, "
+"su colonne verticali, raggruppate per categoria principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Categorie secondarie in pila su barre 3D orizzontali, raggruppate per "
+"categoria principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Categorie secondarie in pila su barre orizzontali raggruppate per categoria "
+"principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Categoria secondaria in pila su colonne 3D verticali, raggruppate per "
+"categoria principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Categorie secondarie in pila su colonne verticali raggruppate per categoria "
+"principale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Aree percentuali"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Barre percentuali"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Colonne percentuali"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Linee percentuali"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Tracciato area percentuale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Tracciato linea percentuale."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Aree in pila"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Barre in pila"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Colonne in pila"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Linee in pila"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Tracciato area in pila."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Tracciato linea in pila."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Linee senza indicatori"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Linee percentuali senza indicatori"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Linee in pila senza indicatori"
+
+# Tutto è un plugin. 
+#
+# Ogni plugin ha un 
+#      * nome "Charting : Bar/Col/Line/Area"
+#      * descrizione "Line, Area, Bar and Column plots"
+# fornendo dei service di tipo engine
+# 	   - "Line plotting engine"
+# 	   - "Area plotting engine"
+# 	   - "Bar/Col plotting engine"
+# ed un service di tipo type (definiti nel file plot-types.xml
+# 	   - "Default 1.5d plot type" 
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Motore tracciati area"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Motore tracciati barra/colonna"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Grafici a barra/colonna/linea/area"
+
+# che cacchio vuol dire 1.5d ?? 1/2 di 3D ??
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Tipi predefiniti di tracciati 1.5d"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Motore tracciati linea"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Tracciati di tipo linea, area, barra e colonna"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Tracciato"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Modello di ricerca non valido."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Tracciato"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Tracciato"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Tracciato"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Motore tracciati barra/colonna"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Grafici: rete"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Tipi di tracciati di superfice predefiniti"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "TracciatoTorta"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "TracciatoAnello"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Gradi in senso antiorario a partire da ore 3"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Le fe_tte cominciano a:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"L'ammontare predefinito di quanto ciascuana fetta è separata dal cento "
+"misurato come una percentuale del raggio della torta"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Separazione delle fette:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "Colori _diversi per fetta"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "gradi"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Di quanto questa fetta è separata dal centro, misurato come percentuale del "
+"raggio della torta"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separazione:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "_Dimensione centro:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Torta 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Torta 3D a fette"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+#, fuzzy
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Totali principali come percentuale di ciascun cuneo suddiviso in torte "
+"secondarie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+#, fuzzy
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Totali principali come percentuale di ciascun cuneo suddiviso in barre in "
+"pila."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Multi-torta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Multi-torta-barre"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Percentuale di ciascun contributore mostrata in anello per ciascuna serie "
+"con le fette dell'ultimo anello staccate."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+"Percentuale di ciascun contributore mostrata in anello per ciascuna serie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Percentuale di ogni contributore in una torta tridimensionale."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+"Percentuale di ciascun contributore con cunei tridimensionali staccati."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Percentuale di ciascun contributore con fette staccate."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Percentuale di ogni contributore."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Torta"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Anello"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Torta a fette"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Anello a fette"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Grafici: torta/anello"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Tipi di torta predefiniti"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Tracciati a torta ed anello"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Motore tracciati a torta"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Motore tracciati ad anello"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "TracciatoRete"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "TracciatoReteArea"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Area rete"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Tracciato tipo radar ad area."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Rete a punti"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Rete"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Tracciato tipo rete con punti."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Tracciato tipo rete."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Grafici: rete"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Tipi predefiniti grafici rete"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Motore traciati rete area"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Motore tracciati rete"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Tracciati rete/radiali"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "Numero di _fette:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "ContornoTracciato"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Contorno"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Tracciato contorno."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Superfice"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Motore tracciati contorno"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Grafici superficie"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Grafici superficie"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% della dimensione predefinita"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dia_metro"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Mostra valori _negativi"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Super_fice"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Bolle scalate al"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Dimensione rappresentatata per;"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Varia colori per bolla"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "TracciatoXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "TracciatoBolla"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bolla"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Barre errore Y"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "Barre errore X"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+"Interpolazione lineare tra punti multi-dimensionali, con segnaposto su "
+"ciascun punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Interpolazione lineare tra punti multi-dimensionali, con segnaposto su "
+"ciascun punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Interpolazione lineare tra punti multi dimensionali."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Segnaposto su ciascun punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Punti multi-dimensionali con un cerchi a ciascun punto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Tracciato X, Y e dimensione bolla."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Linee XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Punti XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Linee XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "Tracciati 2D"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "Motore tracciati scatter 2D"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Motore tracciati bolle"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Grafici: XY/Scatter/Bolle"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Tipi predefiniti tracciati scatter"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ja.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ja.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ja.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4206 @@
+# gnumeric ja.po.
+# Copyright (C) 1998-2004 Free Software Foundation, Inc.
+# Mitsuru Oka <95i44 at is.kochi-u.ac.jp>, 1998.
+# Mitsuru Oka <mitsu-o at is.aist-nara.ac.jp>, 1999-2000.
+# Mitsuo Hamada <mhamada at redhat.com>, 2000.
+# Yukihiro Nakai <nakai at gnome.gr.jp>, 2000-2001,2003-2004.
+# Takeshi Aihana <aihana at gnome.gr.jp>, 2000-2002.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-10-28 18:30+0900\n"
+"Last-Translator: Yukihiro Nakai <nakai at gnome.gr.jp>\n"
+"Language-Team: Japanese <gnome-translation at gnome.gr.jp>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "この形式の古いファイルを保存してしまうと、安全性が損なわれます。"
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"適切なプラグインファイル (plugin.xml) を修正すると、この安全機能を OFF にする"
+"ことが可能です。"
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "オブジェクティブ"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"不正な ID (%s) のプラグイン情報が含まれています。%sが期待されています。"
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "ファイルからプラグイン情報が読み込めませんでした。"
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "名前が不明です"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "サポートしていないローダー型 \"%s\" です。"
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "ローダー \"%s\" の準備中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "サービス #%d 情報の読み込み中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "プラグイン情報ファイル (\"%s\") が読めません。"
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "ファイル \"%s\" は正しいプラグイン情報ファイルではありません。"
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "プラグイン (ID=\"%s\") のサービスの読み込み中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "プラグイン名が不明です。"
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"IDが\"%s\"のプラグインのローダが定義されていないか、IDが間違っています。"
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "プラグインに ID がありません。"
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "プラグインローダー (\"%s\") の初期化中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "プラグインの巡回依存を検出しました。"
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "IDが\"%s\"のプラグインを有効にすることができませんでした。"
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "IDが\"%s\"のプラグインが見つかりませんでした。"
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "依存するプラグインを有効にする際にエラー"
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "プラグイン・サービス #%d の有効中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "プラグイン・サービス #%d の無効中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "プラグイン・ローダーが読み込めません。"
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "IDが\"%s\"のプラグインをロードできませんでした。"
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "プラグイン依存関係の読み込み中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "ファイル \"%s\" からプラグイン情報を取得中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "プラグイン \"%s\" (ID: %s) を有効にすることが出来ませんでした。"
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "プラグイン \"%s\" (ID: %s) を無効にすることが出来ませんでした。"
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "有効なプラグインの情報の読み込み中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "ディスク上にないプラグインの無効化中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"次のプラグインはディスク上にありませんがまだ有効になっています:\n"
+"%s\n"
+"Gnumericをすぐに再起動するべきです。"
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "プラグインの有効化中にエラーが発生しました。"
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "プラグインシステムの初期化中にエラーが発生しました。"
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "サービス '%s' は、ローダーはサポートしていません。"
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "モジュール名が指定されていません。"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "モジュールファイル \"%s\" が開けません。"
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "モジュールファイル \"%s\" のフォーマットが正しくありません。"
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "ファイルには (\"plugin_file_struct\" シンボル) が含まれていません。"
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "おかしなマジック番号をもったファイルです。"
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+"プラグイン・バージョン \"%s\" はアプリケーション \"%s\" に対応していません。"
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+"このシステムではダイナミック・モジュールの読み込みはサポートしてません。"
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "モジュールファイル \"%s\" を閉じれません。"
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "ファイルには関数 \"%s\" が含まれていません。"
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "モジュールには関数 \"%s\" が含まれていません。"
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "プラグイン・サービスの読み込み中にエラーが発生しました。"
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "プラグイン内の関数の初期化でエラーが返されました。"
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "プラグイン無いの関数のクリンナップでエラーが返されました。"
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "標準"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "ファイルオープナーには説明がありません"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "ファイルオープナー - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "ファイルの読み込み中にエラーが発生しました。"
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "ファイルセーバーには説明がありません"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "ファイルセーバー - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "ファイルセーバーに ID がありません。"
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "プラグイン・ローダー"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObjectローダー"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "\"type\"属性が\"service\"要素ありません。"
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "不明なサービスタイプです: %s"
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "サービス情報の読み込みでエラーが発生しました。"
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"サービスを有効にする前にロードしなければならない(PLUGIN_ALWAYS_LOADがセットさ"
+"れている)のですが、ロードに失敗しました。"
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "公式"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "インデント(_I):"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "検索対象(_S)"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "スペース"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "配置"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "引用符文字(_C):"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "問題のサイズ"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "離散"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "離散写像"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "ç·šå½¢"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "線型写像"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "対数"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "対数写像"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "詳細"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "自動"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "カテゴリ(_C):"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "背景"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "最小(_I)"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "最大(_A)"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "閉じる(_C)"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "書式"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "ラベル"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "マイナーグリッド"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "メジャーグリッド"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>パターン</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>行</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>パターン</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>位置</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "内側(_N)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "外側(_U)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "高(_H)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "内側(_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "挿入(_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "低(_L)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "外側(_O)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "ラベルの表示(_S)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "åž‹(_T):"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "凡例"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "題名"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "グリッド"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X軸"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y軸"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z軸"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "プロット"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "高さ"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "å¹…"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>エラーカテゴリ</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>スタイル</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>値</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "色(_R):"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "表示(_P):"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"なし\n"
+"絶対\n"
+"相対\n"
+"パーセント"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "線の幅(_L):"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "å¹…(_W):"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "グラフ"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "図表"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "名前"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "ステップ 1/2: 図表タイプの選択"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "ステップ 2/2: 図表のカスタマイズ"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "図表のカスタマイズ"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "挿入(_I)"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "プロットタイプ(_P)"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOMEオフィス グラフ"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "1つ前面に送る(_O)"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "最前面に送る(_F)"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "1つ背面に送る(_A)"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "最背面に送る(_B)"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "順序(_O)"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>定義</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>パターン</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>スタイル</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"表示\n"
+"サンプル"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "説明"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "テキスト(_T)"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "データ"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "連続(_S)"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "プロットエンジン"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "プロットタイプ"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "グラフのテーマ"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "インデックス:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "設定(_S)"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "点"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "フォント"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "スタイル"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2色\n"
+"明るさ"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>フィル</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>行</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>マーカー</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>アウトライン</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "色(_L):"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"なし\n"
+"パターン\n"
+"グラデーション\n"
+"画像"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "アウトラインカラー(_U):"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "å½¢(_P):"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "サイズ(_Z):"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "スタイル:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "タイプ(_Y):"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "背景(_B):"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "方向(_D):"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "終了(_E):"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "塗りつぶし(_F):"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "合わせる(_F):"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "文字色(_F):"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "パターン(_P):"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "選択(_S)..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "サイズ(_S):"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "開始(_S):"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "明るくする(_B)"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "暗くする(_D)"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "壁紙"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "デフォルト"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "アラブ語"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "バルト諸語"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "中欧"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "中国語"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "キリル文字"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "ギリシャ語"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "ヘブライ語"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "インド語"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "日本語"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "韓国語"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "トルコ語"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "ユニコード"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "ベトナム語"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "西欧"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "その他"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "アラビア語 (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "アラビア語 (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "アラビア語 (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "アラビア語 (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "アラビア語 (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "アラビア語 (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "アラビア語 (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "アルメニア語 (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "バルト語 (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "バルト語 (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "バルト語 (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "ケルト語 (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "中欧 (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "中欧 (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "中欧 (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "中欧 (Windwos-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "簡体字中国語 (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "簡体字中国語 (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "簡体字中国語 (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "簡体字中国語 (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "簡体字中国語 (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "繁体字中国語 (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "繁体字中国語 (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "繁体字中国語 (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "クロアチア語 (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "キリル文字 (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "キリル文字 (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "キリル文字 (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "キリル文字 (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "キリル文字 (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "キリル文字 (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "ロシア語 (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "ウクライナ語 (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "ウクライナ語 (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "英語 (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "ペルシア語 (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "グルジア語 (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "ギリシア語 (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "ギリシア語 (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "ギリシア語 (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "グジャラート語 (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "グルムキー文字 (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "ヘブライ語 (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "ヘブライ語 (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "ヘブライ語 (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "ヘブライ語 (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "ヘブライ語 (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "ヒンディー語 (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "アイスランド語 (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "日本語 (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "日本語 (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "日本語 (シフトJIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "韓国語 (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "韓国語 (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "韓国語 (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "韓国語 (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "北欧 (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "ルーマニア語 (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "ルーマニア語 (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "南欧 (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "タイ語 (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "トルコ語 (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "トルコ語 (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "トルコ語 (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "トルコ語 (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "ユニコード (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "ユニコード (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "ユニコード (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "ユニコード (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "ユニコード (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "ユニコード (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "ユーザ定義"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "ベトナム語 (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "ベトナム語 (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "ベトナム語 (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "ベトナム語 (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "ヘブライ語 (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "西欧 (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "西欧 (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "西欧 (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "西欧 (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "西欧 (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "ロケール: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "変換方向"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "この値は実行するiconvテストを決定します。"
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "é»’"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "淡い茶色"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "茶金色"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "暗い緑 #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "濃紺"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "暗い青"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "ç´« #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "赤橙"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "金"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "深緑"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "セル値"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "青"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "ダークグレー"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "赤"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "æ©™"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "ライム"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "スカイブルー #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "ç´«"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "グレー"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "マゼンタ"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "明るいオレンジ"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "黄"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "ç·‘"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "シアン"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "明るい青"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "赤紫"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "淡い灰色"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "ピンク"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "淡いオレンジ"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "淡い黄"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "淡い緑"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "淡いシアン"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "淡い青"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "淡い紫"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "白"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "紫青"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "暗い紫"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "スカイブルー"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "カスタム"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "カスタムカラー..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "影のタイプ"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "方向"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "指定する幅"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "指定する高さ"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "ツールバーを結合する"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "ツールバーの結合を解除"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "ファイル'%s'を開けません"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "すべてのファイル"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "画像"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "画像の選択"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "名前を付けて保存"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "ファイルタイプ(_T):"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"指定されたファイルの拡張子は選択したファイルタイプと一致していません。この名"
+"前をとにかく使用しますか?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"はディレクトリ名です"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr "%s に保存するためのパーミッションがありません"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"ファイル <i>%s</i> はすでに %s に存在します。\n"
+"\n"
+"上書き保存しますか?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "標準"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "ボールド"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "ボールドイタリック"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "イタリック"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "フォントスタイル:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "フォント:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "プレビュー"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "サイズ:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "数値"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "通貨"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "会計"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "日付"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "時間"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "パーセンテージ"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "分数"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "科学技術"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "テキスト"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "特別"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "カスタム"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "負の数のフォーマット"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "数字フォーマット"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "カテゴリ(_T):"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "小数の位(_M):"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "量を伝統的な会計スタイルで表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "入力した値を、文字列としてそのまま表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "通貨の量を表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "日付(とオプションで時刻)を表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "数値を桁固定した10進数で表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "日付と時刻を表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "値を最も近い分数で近似します。"
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "値をパーセンテージで表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "値を精度つきで表示します。"
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "書式コード(_O):"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "負の数の書式(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "プレビュー:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "記号(_Y):"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "適切なフォーマットを自動的に選択します。"
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "エクセルスタイルのフォーマットを直接指定します"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "書式(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "1000単位でセパレータを使用する(_U)"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "西欧"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "東欧"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "北米"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "中南米"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "アジア"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "アフリカ"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "オーストラリア"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "アメリカ合衆国/英語 (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "南アフリカ アフリカーンス (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "エチオピア/アムハリク語 (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "アラブ首長国連邦 (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "バーレーン (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "アルジェリア (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "エジプト (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "インド/アラブ語 (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "イラク (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "ヨルダン (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "クウェート (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "レバノン (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "リビア (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "モロッコ (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "オマーン (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "カタール (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "サウジアラビア (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "スーダン (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "シリア (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "チュニジア (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "イエメン (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "アゼルバイジャン (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "ベラルーシ (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "ブルガリア (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "バングラデシュ (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "インド/ベンガリ語 (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "フランス/ブルトン語 (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "ボスニア・ヘルツェゴビナ (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "スペイン/カタラン語 (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "チェコ共和国 (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "グレートブリテン/ウェルシュ語 (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "デンマーク (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "オーストリア (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "ベルギー/ドイツ語 (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "スイス/ドイツ語 (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "ドイツ (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "ルクセンブルグ/ドイツ語 (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "ギリシャ (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "オーストラリア (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "ボスニア (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "カナダ/英語 (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "イギリス (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "香港/英語 (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "アイルランド (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "インド/英語 (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "ニュージーランド (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "フィリピン (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "シンガポール/英語 (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "アメリカ合衆国/英語 (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "南アフリカ/英語 (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "ジンバブエ (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "エスペラント (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "アルゼンチン (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "ボリビア (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "チリ (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "コロンビア (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "コスタリカ (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "ドミニカ共和国 (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "エクアドル (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "スペイン (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "グアテマラ (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "ホンジュラス (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "メキシコ (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "ニカラグア (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "パナマ (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "ペルー (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "プエルトリコ (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "パラグアイ (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "エルサルバドル (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "アメリカ合衆国/スペイン語 (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "ウルグアイ (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "ベネズエラ (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "エストニア (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "スペイン/バスク語 (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "イラン (fa_UR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "フィンランド/フィン語 (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "フェロー諸島 (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "ベルギー/フランス語 (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "カナダ/フランス語 (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "スイス/フランス語 (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "フランス (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "アイルランド/ゲール語 (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "イギリス/スコットランド・ゲール語 (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "スペイン/ガリシア語 (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "イギリス/マン島語 (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "インド/ヒンズー語 (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "クロアチア (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "ハンガリー (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "アルメニア (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "インドネシア (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "アイスランド (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "スイス/イタリア語 (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "イタリア(it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "イスラエル/ヘブライ (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "日本 (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "ジョージア (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "グリーンランド (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "韓国 (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "イギリス/コーンウォール語 (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "リトアニア (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "ラトビア (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "ニュージーランド/マオリ語 (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "マケドニア (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "インド/マラーティー語 (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "マレーシア (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "マルタ (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "ベルギー/フレミッシュ語 (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "オランダ (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "ノルウェー/ニーノシュク語 (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "ノルウェー/ボクモール語 (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "フランス/オック語 (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "ポーランド (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "ブラジル (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "ポルトガル (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "ルーマニア (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "ロシア (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "ウクラニア/ロシア語 (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "ノルウェー/サーミ語 (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "スロバキア (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "スロベニア (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "アルバニア (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "ユーゴスラビア (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "フィンランド/スウェーデン語 (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "スウェーデン (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "インド/タミル語 (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "インド/テルグ語 (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "タジキスタン (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "タイ (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "エリトリア (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "エチオピア/チグリニア語 (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "フィリピン/タガログ語 (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "トルコ語 (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "ロシア/タタール語 (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "ウクラニア (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "パキスタン (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "ウズベキスタン (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "ベトナム (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "ベルギー/ワロン語 (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "アメリカ合衆国/イディッシュ語 (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "中国 (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "香港/中国語 (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "シンガポール/中国語 (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "台湾 (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "現在のロケール: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "メニュー"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "オプションメニュー"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "インジケータのサイズ"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "ドロップダウンインジケータのサイズ"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "インジケータスペーシング"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "インジケータのまわりのスペーシング"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*æ—¥"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*月"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*火"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*æ°´"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*木"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*金"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*土"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "日曜日"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "月曜日"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "火曜日"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "水曜日"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "木曜日"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "金曜日"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "土曜日"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*1"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*2"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*3"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*4"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*5"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*6"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*7"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*8"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*9"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*10"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*11"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*12"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "1月"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "2月"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "3月"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "4月"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "5月"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "6月"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "7月"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "8月"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "9月"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "10月"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "11月"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "12月"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "é»’"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "青"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "シアン"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "ç·‘"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "マゼンタ"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "赤"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "白"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "黄"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "アラブ首長国連邦, ディルハム"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "アフガニスタン, アフガニ"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "アルバニア, レク"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "アルメニア, ドラム"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "オランダ領アンティル, ギルダー"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "アンゴラ, クワンザ"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "アルゼンチン, ペソ"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "オーストラリア, ドル"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "アルバ, ギルダー"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "アゼルバイジャン, マナト"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "ボスニア・ヘルツェゴビナ, 兌換マルカ"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "バルバドス, ドル"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "バングラデシュ, タカ"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "ブルガリア, レフ"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "バーレーン, ディナール"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "ブルンジ, フラン"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "バーミューダ, ドル"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "ブルネイ=ダルサラーム, ドル"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "ボリビア, ボリビアーノ"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "ブラジル, ブラジルレアル"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "バハマ, ドル"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "ブータン, ヌルタム"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "ボツワナ, プラ"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "ベラルーシ, ルーブル"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "ベリーズ, ドル"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "カナダ, ドル"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "コンゴ/キンシャサ, コンゴフラン"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "スイス, フラン"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "チリ, ペソ"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "中国, 元人民幣"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "コロンビア, ペソ"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "コスタリカ, コロン"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "キューバ, ペソ"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "カーボベルデ, エスクード"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "キプロス, ポンド"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "チェコ共和国, コルナ"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "ジブチ, フラン"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "デンマーク, クローネ"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "ドミニカ共和国, ペソ"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "アルジェリア, アルジェリア・ディナール"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "エストニア, クローン"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "エジプト, ポンド"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "エリトリア, ナクファ"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "エチオピア, ブル"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "ユーロ加盟国, ユーロ"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "フィジー, ドル"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "フォークランド諸島(マルビナス), ポンド"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "イギリス連合王国, ポンド"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "グルジア, ラリ"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "ガーンジー, ポンド"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "ガーナ, セディ"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "ジブラルタル, ポンド"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "ガンビア, ダラシ"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "ギニア, フラン"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "グアテマラ, ケツァル"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "ガイアナ, ドル"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "香港, ドル"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "ホンジュラス, レンピラ"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "クロアチア, クーナ"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "ハイチ, グールド"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "ハンガリー, フォリント"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "インドネシア, ルピア"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "イスラエル, 新シェケル"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "マン島, ポンド"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "インド, ルピー"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "イラク, ディナール"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "イラン, リアル"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "アイスランド, クローナ"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "ジャージー, ポンド"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "ジャマイカ, ドル"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "ヨルダン, ディナール"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "日本, 円"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "ケニア, シリング"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "キルギスタン, ソム"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "カンボジア, リエル"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "コモロ, フラン"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "北朝鮮, ウォン"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "韓国, ウォン"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "クウェート, ディナール"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "ケイマン諸島, ドル"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "カザフスタン, テンゲ"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "ラオス, キップ"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "レバノン, ポンド"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "スリランカ, ルピー"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "リベリア, ドル"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "レソト, ロティ"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "リトアニア, リタス"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "ラトビア, ラト"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "リビア, ディナール"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "モロッコ, ディルハム"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "モルドバ, レイ"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "マダガスカル, マラガシー・フラン"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "マケドニア, デナール"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "ミャンマー(ビルマ), チャット"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "モンゴル, ツグリク"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "マカオ, パタカ"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "モーリタニア, ウギア"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "マルタ, リラ"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "モーリシャス, ルピー"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "モルジブ(モルジブ諸島), ルフィヤ"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "マラウィ, クワチャ"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "メキシコ, ペソ"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "マレーシア, リンギット"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "モザンビーク, メティカル"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "ナミビア, ドル"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "ナイジェリア, ナイラ"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "ニカラグア, コルドバ"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "ノルウェー, クローネ"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "ネパール, ネパール・ルピー"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "ニュージーランド, ドル"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "オマーン, リアル"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "パナマ, バルボア"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "ペルー, 新ソル"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "パプアニューギニア, キナ"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "フィリピン, ペソ"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "パキスタン, ルピー"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "ポーランド, ズロチ"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "パラグアイ, グアラニ"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "カタール, リヤル"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "ルーマニア, レイ"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "ロシア, ルーブル"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "ルワンダ, ルワンダ・フラン"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "サウジアラビア, リヤル"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "ソロモン諸島, ドル"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "セイシェル, ルピー"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "スーダン, ディナール"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "スウェーデン, クローナ"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "シンガポール, ドル"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "セントヘレナ, ポンド"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "スロベニア, トラー"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "スロバキア, コルナ"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "シエラレオネ, レオン"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "ソマリア, シリング"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "セボルガ, ルイジーニ"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "スリナム, ギルダー"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "サントメ=プリンチペ, ドブラ"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "エルサルバドル, コロン"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "シリア, ポンド"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "スワジランド, リランゲニ"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "タイ, バーツ"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "タジキスタン, ルーブル"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "トルクメニスタン, マナト"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "チュニジア, ディナール"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "トンガ, パアンガ"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "トルコ, リラ"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "トリニダード=トバゴ, ドル"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "ツバル, ツバルドル"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "台湾, 新ドル"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "タンザニア, シリング"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "ウクライナ, グリブナ"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "ウガンダ, シリング"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "アメリカ合衆国, ドル"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "ウルグアイ, ペソ"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "ウズベキスタン, スム"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "ベネズエラ, ボリバル"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "ベトナム, ドン"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "バヌアツ, バツ"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "サモア, タラ"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "アフリカ財政協同体(CFA) BEAC, フラン"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "銀, オンス"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "金, オンス"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "東カリブ・ドル"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "国際通貨基金(IMF) 特別引き出し権(SDR)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "アフリカ財政協同体(CFA) BCEAO, フラン"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "パラジウム, オンス"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "プラチナ, オンス"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "イエメン, リアル"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "ユーゴスラビア, ニューディナール"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "南アフリカ, ランド"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "ザンビア, クワチャ"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "ジンバブエ, ジンバブエ・ドル"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "なし"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "色なし"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "自動"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "なし"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "正方形"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "ダイヤモンド"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "範囲(_N)"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "右のアウトライン(_R)"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "円形"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "行"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "アスタリスク"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "3月"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% グレー"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% グレー"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% グレー"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% グレー"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% グレー"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "横縞"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "縦縞"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "右下がり斜線の縞"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "左下がり斜線の縞"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "斜線の格子"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "太い斜線の格子"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "細い横縞"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "細い縦縞"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "細い右下がり斜線の縞"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "細い左下がり斜線の縞"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "細い横線の格子"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "細い斜線の格子"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "前景色で塗りつぶし"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "小円"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "半円"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "わらふき"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "大きな円"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "レンガ"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "ラベル"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "値"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "エラーバー"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "棒/列でのプロット"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "グラフ(_G)..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "線でプロット"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "エリアでプロット"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "列を削除"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "列を削除"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "パーセント(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "列を削除"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "列を削除"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "列を削除"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "列を挿入"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "列を挿入"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "エリア"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "エリアでプロットします。"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "エリア"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "棒"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "ç·š"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "線でプロットします。"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "ç·š"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "パーセンテージエリア"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "パーセンテージバー"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "パーセンテージ列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "パーセント線"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "パーセンテージエリアプロット。"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "パーセント線プロット。"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "スタックエリア"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "スタックバー"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "スタック列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "スタック線"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "スタックエリアプロット。"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "スタック線プロット。"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "マークされていない線"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "マークされていないパーセンテージ線"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "マークされていないスタック線"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "エリアプロットエンジン"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "棒/列プロットエンジン"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "グラフ: 棒/列/行/エリア"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "デフォルト 1.5d プロットタイプ"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "線プロットエンジン"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "線、エリア、棒、列でプロットします"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "プロット"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "検索パターンが正しくありません。"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "プロット"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "プロット"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "プロット"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "棒/列プロットエンジン"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "グラフ: 放射状プロット"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "デフォルト円グラフタイプ"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "パイのプロット"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "円のプロット"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s は %d を指しています\n"
+"値は %g (%g) です"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "セパレータ"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "度"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "セパレータ"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "中心サイズ(_T):"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3次元パイグラフ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3次元分割円グラフ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "複数パイグラフ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "複数パイ/棒グラフ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "それぞれのコントリビュータのパーセンテージです。"
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "パイ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "円"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "分割パイ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "分割円"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "グラフ: パイ/円"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "デフォルトパイグラフタイプ"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "パイと円でプロットします。"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "パイグラフプロットエンジン"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "円グラフプロットエンジン"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "レーダープロット"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "レーダーエリアプロット"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "エリアレーダー"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "パーセンテージバー"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "レーダー"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "列を削除"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "グラフ: 放射状プロット"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "デフォルト円グラフタイプ"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "円グラフプロットエンジン"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "リンググラフプロットエンジン"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "すべての番号"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "回数"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "インポートする行"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "ソース"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "リンググラフプロットエンジン"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "円グラフ"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "円グラフ"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% (標準サイズに対する比率)"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "センチメートル"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "ソース"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "プロット"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "二重"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "バブル"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "行の構文解析中にエラーが発生しました"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "行の構文解析中にエラーが発生しました"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "列を削除"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XYç›´ç·š"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY点"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XYç›´ç·š"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2次元プロット"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2次元散布図プロットエンジン"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "バブルプロットエンジン"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "グラフ: XY/散布図/バブル"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ko.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ko.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ko.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4352 @@
+# gnumeric ko. encoding="UTF-8"po
+# Sung-Hyun Nam <namsh at lgic.co.kr>, 1998-2000
+# Jae-kyun Lee <kida at power.yeungnam.ac.kr>, 2002
+# Changwoo Ryu <cwryu at debian.org>, 2003
+msgid ""
+msgstr ""
+"Project-Id-Version: AC_PACKAGE_NAME AC_PACKAGE_VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-08-12 22:15+0900\n"
+"Last-Translator: Changwoo Ryu <cwryu at debian.org>\n"
+"Language-Team: GTP Korean <gnome-kr-translation at gnome.or.kr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+#, fuzzy
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "안전을 위해 이전 파일에 덮어쓰기가 허용않됨."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "객체(_O)..."
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "파일에서 플러그인 이름을 읽을 수 없습니다."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "알 수 없는 이름"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, fuzzy, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "알 수 없는 플러그인 이름."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "플러그인에 id가 없습니다."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+#, fuzzy
+msgid "Cannot load plugin loader."
+msgstr "모르는 계산 에러"
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "모르는 계산 에러"
+
+#: goffice/app/go-plugin.c:1112
+#, fuzzy
+msgid "Error while loading plugin dependencies."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "사용가능한 플러그인의 정보를 읽은중 에러"
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "플러그인 시스템을 초기화 하는 중 오류."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+#, fuzzy
+msgid "Module file name not given."
+msgstr "파일 이름:"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, fuzzy, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "모듈 파일 열 수 없음: "
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+#, fuzzy
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "플러그인은 반드시 init_plugin 함수를 포함해야 합니다."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "파일이 잘못된 매직넘버를 가지고 있습니다."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "이 시스템은 동적 모듈로딩이 지원되지 않습니다."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, fuzzy, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "모듈 파일 열 수 없음: "
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "파일에 \"%s\" 함수가 없습니다."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, fuzzy, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "플러그인은 반드시 init_plugin 함수를 포함해야 합니다."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+#, fuzzy
+msgid "Error while loading plugin service."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin-service.c:164
+#, fuzzy
+msgid "Initializing function inside plugin returned error."
+msgstr "init_plugin이 에러 되돌림"
+
+#: goffice/app/go-plugin-service.c:182
+#, fuzzy
+msgid "Cleanup function inside plugin returned error."
+msgstr "init_plugin이 에러 되돌림"
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "일반"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "플러그인이 아직 사용중입니다."
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "플러그인이 아직 사용중입니다."
+
+#: goffice/app/go-plugin-service.c:495
+#, fuzzy
+msgid "Error while reading file."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "플러그인이 아직 사용중입니다."
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+#, fuzzy
+msgid "Error while saving file."
+msgstr "파일 닫기 에러, 에러: %s"
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "모르는 계산 에러"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "객체(_O)..."
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "모르는 시스템"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "현재 날짜(_d)"
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "식"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "내어쓰기(_I):"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "찾기"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "공백"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "ì •ë ¬"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "인용 문자:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "문제 크기"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "불연속"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "불연속"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "ì„ "
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "논리"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "로그 함수"
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "파일 상세설명(_F)"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "자동"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "범주(_C):"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "바탕색"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "최소(_I)"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "최대값"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "닫기(_C)"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "형식"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "꼬리표"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "금요일"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "금요일"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>무늬</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "미리보기"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>무늬</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "미리보기"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "삽입"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "외곽선"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "높이"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "삽입"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "넣기(_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "í–‰(_R)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "외곽선"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "꼬리표(_L)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "형식(_T):"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "보냄"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "제목"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "금요일"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X축"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y축"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z축"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "플롯 모드"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "높이"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "너비"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>오류 알림</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "미리보기"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>샘플</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "색:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "열 너비"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "무엇으로(_W):"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "그래프"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "도표"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "이름"
+
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "3단계중 1단계: 그래프 형식 선택"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "3단계중 3단계: 그래프 고침"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "머릿글 고침"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "넣기(_I)"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "플롯 모드"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "그놈 오피스 그래프"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "가장자리"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>ë°©í–¥</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>무늬</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "미리보기"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"샘플\n"
+"보기"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "설명"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "텍스트(_T):"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "데이터"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "문자열"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "플롯 모드"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "플롯 모드"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "내어쓰기(_I):"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "문자열(_S)"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr ""
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dí–‰ x %dì—´"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "글꼴"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "모양"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "미리보기"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "미리보기"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "<b>무늬</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "미리보기"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "색:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "색(_C):"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "범위(_S):"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "크기:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "모양(_S):"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "형식:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "바탕색"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "디렉토리"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "더하기(_A)"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "색(_C):"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "최소"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "글자색"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "무늬"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "선택(_S)"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "크기:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "상태"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "오른쪽(_R)"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "ë°°ì—´"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "읽어들이기"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "벽지"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "기본값"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "묶음"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "아랍어"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "기울임"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "중앙 유럽어"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "중국어"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "그리스어"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "히브리어"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "인도어"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "일본어"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "한국어"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "터키어"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "유니코드"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "베트남어"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "서양어"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "기타"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "아랍어 (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "아랍어 (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "아랍어 (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "아랍어 (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "아랍어 (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "아랍어 (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "아랍어 (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "발트어 (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "발트어 (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "발트어 (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "중앙 유럽 (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "중앙 유럽 (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "중앙 유럽 (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "중앙 유럽 (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "중국어 간체 (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "중국어 간체 (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "중국어 간체 (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "중국어 간체 (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "중국어 간체 (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "중국어 번체 (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "중국어 번체 (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "중국어 번체 (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "키릴어 (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "키릴어 (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "키릴어 (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "키릴어 (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "키릴어 (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "키릴어 (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "영어 (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "그리스어 (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "그리스어 (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "그리스어 (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "히브리어 (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "히브리어 (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "히브리어 (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "히브리어 (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "히브리어 (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "일본어 (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "일본어 (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "일본어 (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "한국어 (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "한국어 (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "한국어 (조합)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "한국어 (통합 한글)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "터키어 (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "터키어 (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "터키어 (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "터키어 (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "유니코드 (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "유니코드 (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "유니코드 (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "유니코드 (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "유니코드 (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "유니코드 (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "사용자 정의"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "베트남어 (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "베트남어 (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "베트남어 (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "베트남어 (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "서양어 (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "서양어 (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "서양어 (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "서양어 (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "서양어 (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "로케일: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Pearson Correlation"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "검정색"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "월요일"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "범위"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "ê°•ì¡°"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "ì…€ ê°’"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "청색"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "ë°°ì—´"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "적색"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "범위"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "시간"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "ë°°ì—´"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "진홍색"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "황색"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "녹색"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "청록색"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "하이퍼링크(_H)"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "오른쪽 정렬"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "오른쪽 정렬"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "오른쪽 정렬"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "흰색"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "ê°’"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "사용자"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "꼬리글 고침"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>ë°©í–¥</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "파일 '%s'을(를) 열 수 없습니다"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "파일"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "그림"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "전체 열 선택"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "모두 저장"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "파일(_F)"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"는 디렉토리 이름입니다"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"%s에\n"
+"저장할 권한이 없습니다."
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Workbook %s이(가) 이미 존재합니다.\n"
+"덮어쓰시겠습니까?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "일반"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "ê°•ì¡°"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "굵고 기울임"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "기울임"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "글꼴 형식:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "글꼴:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "미리보기"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "크기:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "숫자"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "통화"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "화폐(_A)"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "날짜"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "시간"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "퍼센트"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "분수(_F)"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "과학(_S)"
+
+#: goffice/gtk/go-format-sel.c:83
+#, fuzzy
+msgid "Text"
+msgstr "텍스트(_x)"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "특별한 기능(_P)"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "사용자"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "음수(_i):"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "형식 복사"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "범주"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "소수점 자리(_M):"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "테두리 보이기(_O)"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "형식(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "음수(_i):"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "미리보기"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "기호(_Y):"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "형식(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "1000자리 마다 분리기호 넣기(_U)"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "서유럽"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "동유럽"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "북미"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "중남미"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "아시아"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "아프리카"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "오스트레일리아"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "미국/영어 (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "남아프리카 공화국 (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "에티오피아/암하라어 (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "아랍 에미리트 (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "바레인 (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "알제리아 (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "이집트 (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "인도/아랍어 (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "이라크 (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "요르단 (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "쿠웨이트 (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "레바논 (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "리비아 (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "모로코 (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "오만 (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "카타르 (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "사우디 아라비아 (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "수단 (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "시리아 (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "튀니지 (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "예멘 (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "아제르바이잔 (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "벨라루스 (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "불가리아 (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "방글라데시 (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "인도/벵골어 (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "프랑스/브르타뉴어 (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "보스니아 헤르체고비나 (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "스페인/카탈로니아어 (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "ì²´ì½” (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "영국/웨일즈어 (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "덴마크 (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "오스트리아 (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "벨기에/독일어 (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "스위스/독일어 (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "독일 (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "룩셈부르크/독일어 (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "그리스 (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "오스트레일리아 (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "보츠와나 (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "캐나다/영어 (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "영국 (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "홍콩/영어 (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "아일랜드 (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "인도/영어 (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "뉴질랜드 (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "필리핀 (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "싱가포르/영어 (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "미국/영어 (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "남아프리카공화국/영어 (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "짐바브웨 (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "에스페란토 (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "아르헨티나 (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "볼리비아 (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "ì¹ ë ˆ (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "콜로비아 (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "코스타리카 (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "도미니카 공화국 (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "에콰도르 (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "스페인 (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "과테말라 (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "온두라스 (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "멕시코 (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "니카라과 (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "파나마 (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "페루 (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "푸에르토 리코 (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "파라과이 (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "엘살바도르 (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "미국/스페인어 (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "우루과이 (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "베네수엘라 (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "에스토니아 (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "스페인/바스크어 (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "이란 (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "핀란드/핀란드어 (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "페로스 제도 (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "벨기에/프랑스어 (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "캐나다/프랑스어 (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "스위스/프랑스어 (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "프랑스 (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "아일랜드/갈리시아어 (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "영국/스코틀랜드 갈리시아어 (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "스페인/갈리시아어 (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "영국/Man 갈리시아어 (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "인도/힌두어 (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "크로아티아 (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "헝가리 (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "아르메니아 (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "인도네시아 (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "아이슬란드 (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "스위스/이탈리아어 (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "이탈리아 (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "이스라엘/히브리어 (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "일본 (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "그루지아 (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "그린랜드 (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "한국 (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "영국/코니쉬 (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "리투아니아 (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "라트비아 (lt_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "뉴질랜드/마오리 (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "마케도니아 (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "인도/마라티어 (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "말레이지아 (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "몰타 (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "벨기에/플라망어 (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "네덜란드 (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "노르웨이/뉘노르스크 (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "노르웨이/부크몰 (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "프랑스/오크어 (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "폴란드 (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "브라질 (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "포르투갈 (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "루마니아 (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "러시아 (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "우크라이나/러시아어 (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "노르웨이/사미 (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "슬로바키아 (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "슬로베니아 (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "알바니아 (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "유고슬라비아 (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "핀란드/스웨덴어 (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "스웨덴 (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "인도/타밀어 (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "인도/텔루그어 (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "타지키스탄 (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "타이 (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "에리트레아 (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "에디오피아/티그리냐어 (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "필리핀/타갈로그어 (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "터키 (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "러시아/타타르어 (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "우크라이나 (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "파키스탄 (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "우즈베키스탄 (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "베트남 (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "벨기에/왈론어 (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "미국/이디시 (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "중국 (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "홍콩/중국어 (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "싱가포르/중국어 (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "타이완 (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "현재 로케일: "
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "평균(_M):"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*일"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*ì›”"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*í™”"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*수"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*목"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*금"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*토"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "일요일"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "월요일"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "화요일"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "수요일"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "목요일"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "금요일"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "토요일"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*1ì›”"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*2ì›”"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*3ì›”"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*4ì›”"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*5ì›”"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*6ì›”"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*7ì›”"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*8ì›”"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*9ì›”"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*10ì›”"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*11ì›”"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*12ì›”"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "1ì›”"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "2ì›”"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "3ì›”"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "4ì›”"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "5ì›”"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "6ì›”"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "7ì›”"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "8ì›”"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "9ì›”"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "10ì›”"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "11ì›”"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "12ì›”"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "ì°¸"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "거짓"
+
+#: goffice/utils/format.c:757
+#, fuzzy
+msgid "Black"
+msgstr "검정색"
+
+#: goffice/utils/format.c:758
+#, fuzzy
+msgid "Blue"
+msgstr "청색"
+
+#: goffice/utils/format.c:759
+#, fuzzy
+msgid "Cyan"
+msgstr "청록색"
+
+#: goffice/utils/format.c:760
+#, fuzzy
+msgid "Green"
+msgstr "녹색"
+
+#: goffice/utils/format.c:761
+#, fuzzy
+msgid "Magenta"
+msgstr "진홍색"
+
+#: goffice/utils/format.c:762
+#, fuzzy
+msgid "Red"
+msgstr "취소 복구"
+
+#: goffice/utils/format.c:763
+#, fuzzy
+msgid "White"
+msgstr "흰색"
+
+#: goffice/utils/format.c:764
+#, fuzzy
+msgid "Yellow"
+msgstr "황색"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "아랍 에미리트 연합, 더히람"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "아프가니스탄, 아프가니"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "알바니아, 레크"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "아르메니아, 드램"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "네델란드령 앤틸리스 열도, 길더"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "앙골라, 콴자"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "아르헨티나, 페소"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "오스트레일리아, 달러"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "아루바, 길더"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "아제르바이잔, 마나트"
+
+#: goffice/utils/formats.c:399
+#, fuzzy
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "보스니아 헤르체고비아, "
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "바베이도스, 달러"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "방글라데시, 타카"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "불가리아, 렛"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "바레인, 디나르"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "부룬디, 프랑크"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "버무다, 달러"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "브루나이 다루살람, 달러"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "볼리비아, 볼리비아노"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "브라질, 브라질 레알"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "바하마, 달러"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "부탄, 눌트눔"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "보츠와나, 풀라"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "벨라루스, 루블"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "벨리즈, 달러"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "캐나다, 달러"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "콩고/킨샤사, 콩고프랑"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "스위스, 프랑크"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "칠레, 페소"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "중국, 위엔 인민폐"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "콜로비아, 페소"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "코스타리카, 콜론"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "쿠바, 페소"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "카보 베르드, 에스쿠도"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "사이프러스, 파운드"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "체코, 코루나"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "지부티, 프랑크"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "텐마크, 크로네"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "도미니카 공화국, 페소"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "알제리, 알제리 디나르"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "데스토니아, 크룬"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "이집트, 파운드"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "에리트리아, 나크파"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "에티오피아, 비르"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "유럽 공동체 회원국, 유로"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "피지, 달러"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "포클랜드 섬(말비나스), 파운드"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "영국, 파운드"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "그루지아, 라리"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "건지, 파운드"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "가나, 세디"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "지브롤터, 파운드"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "감비아, 달라시"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "기니, 프랑크"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "과테말라, 케트살"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "가이아나, 달러"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "홍콩, 달러"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "온두라스, 렘피라"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "크로아티아, 쿠나"
+
+#: goffice/utils/formats.c:448
+#, fuzzy
+msgid "Haiti, Gourdes"
+msgstr "하이티, "
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "헝가리, 포린"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "인도네시아, 루피아"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "이스라엘, 뉴 쇄켈"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "만섬, 파운드"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "인도, 루피"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "이라크, 디나르"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "이란, 리얄"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "아이슬란드, 크로나"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "져지, 파운드"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "자메이카, 달러"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "요르단, 디나르"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "일본, 엔"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "케냐, 실링"
+
+#: goffice/utils/formats.c:462
+#, fuzzy
+msgid "Kyrgyzstan, Soms"
+msgstr "키르지스탄, "
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "캄보디아, 리엘"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "코모로스, 프랑크"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "한국 (북한), 원"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "한국 (남한), 원"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "쿠웨이트, 디나르"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "케이만 섬, 달러"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "카자흐스탄, 텐지"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "라오스, 낍"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "레바논, 파운드"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "스리랑카, 루피"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "라이베리아, 달러"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "레소토, 몰로티"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "리투아니아, 리타스"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "라트비아, 라츠"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "리비아, 디나르"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "모로코, 더히람"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "몰도바, 레우"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "마다가스카르, 말라가시 프랑"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "마케도니아, 데나르"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "미얀마 (버마), 차트"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "몽골, 투그릭"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "마카오, 파타가"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "모리타니, 우기야"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "몰타, 리라"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "모리셔스, 루피"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "몰디브 (몰디브 섬), 루피아"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "말라위, 과쳐"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "멕시코, 페소"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "말레이시아, 링기트"
+
+#: goffice/utils/formats.c:492
+#, fuzzy
+msgid "Mozambique, Meticais"
+msgstr "모잠비크, "
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "나미비아, 달러"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "나이지리아, 나이라"
+
+#: goffice/utils/formats.c:495
+#, fuzzy
+msgid "Nicaragua, Gold Cordobas"
+msgstr "니카라과, "
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "노르웨이, 크로네"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "네팔, 네팔 루피"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "뉴질랜드, 달러"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "오만, 리얄"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "바나마, 발보아"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "페루, 누에보솔"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "파푸아 뉴기니, 키나"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "필리핀, 페소"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "파키스탄, 루피"
+
+#: goffice/utils/formats.c:505
+#, fuzzy
+msgid "Poland, Zlotys"
+msgstr "폴란드, "
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "파라과이, 구아라니"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "카타르, 리얄"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "루마니아, 레우"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "러시아, 루블"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "르완다, 르완다 프랑크"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "사우디 아라비아, 리얄"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "솔로몬 제도, 달러"
+
+#: goffice/utils/formats.c:513
+#, fuzzy
+msgid "Seychelles, Rupees"
+msgstr "세이첼스, 루피"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "수단, 디나르"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "스웨덴, 크로나"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "싱가폴, 달러"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "세인트 헬레나, 파운드"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "슬로베니아, 토라르"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "슬로바키아, 코루나"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "시에라리온, 리온"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "소말리아, 실링"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "수리남, 길더"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "상투메프린시페, 도브라"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "엘살바도르, 콜론"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "시리아, 파운드"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "스와질랜드, 리랑기니"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "타이, 바트"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "타지키스탄, 루블"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "투르크메니스탄, 마나트"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "튀니지, 디나르"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "통가, 파앙가"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "터키, 리라"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "트리니나드토바고, 달러"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "투발루, 투발루 달러"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "대만, 대만 달러"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "탄자니아, 실링"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "우크라니아, 린비아"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "우간다, 실링"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "미국, 달러"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "우루과이, 페소"
+
+#: goffice/utils/formats.c:542
+#, fuzzy
+msgid "Uzbekistan, Sums"
+msgstr "우즈베키스탄, "
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "베네수엘라, 볼리바"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "베트남, 동"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "바투아누, 바투"
+
+#: goffice/utils/formats.c:546
+#, fuzzy
+msgid "Samoa, Tala"
+msgstr "사모아, "
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "은화, 온스"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "금화, 온스"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "동캐리비안 달러"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "국제 통화 기금 (IMF) 특수 발행권"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+#, fuzzy
+msgid "Palladium, Ounces"
+msgstr "팔라듐 온스"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "백금화, 온스"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "예멘, 리얄"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "유고슬라비아, 뉴 디나르"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "남아프리카 공화국, 랜드"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "잠비아, 과쳐"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "짐바브웨, 짐바브웨 달러"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "없음"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "채움"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "자동"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "없음"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "최소값"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "범위"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "파일/"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "첨도"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "링크 붙여 넣기"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "3ì›”"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% 회색"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% 회색"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% 회색"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% 회색"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% 회색"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "수평선"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "수직선"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "역대각선"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "대각선"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "대각 직교평행선"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "굵은 대각 직교평행선"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "가는 수평선"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "가는 수직선"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "가는 역대각선"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "가는 대각선"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "가는 수평 직교평행선"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "가는 역대각 직교평행선"
+
+#: goffice/utils/go-pattern.c:113
+#, fuzzy
+msgid "Foreground Solid"
+msgstr "배경 색"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "작은 원"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "반원"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "큰 원"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "벽돌"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "꼬리표"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "ê°’"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "줄 분석 오류"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "그래프(_G)..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "플롯 모드"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "플롯 모드"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "퍼센트(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3차원 누적 막대형"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Area"
+msgstr "더하기"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "더하기"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "막대형"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "ì—´"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "ì„ "
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "인쇄할 제목"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "ì„ "
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "퍼센트(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "퍼센트(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "퍼센트(_P)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "퍼센트(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "누적 막대형"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "누적 막대형"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "누적 막대형"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "누적 막대형"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "열 지움"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "누적 막대형"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "퍼센트(_P)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "누적 막대형"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "기본 해석기"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "플롯 모드"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "열쇠글이 틀렸습니다"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "플롯 모드"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "플롯 모드"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "플롯 모드"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "줄 분석 오류"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "%s 파일을 생성할 수 없습니다\n"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "기본 해석기"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "플롯 모드"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "없음"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "구분자:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "지움(_D)"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "구분자:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "범주"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3차원 원형"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3차원 쪼개진 원형"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "곱하기"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "다중 원통형"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+#, fuzzy
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr "쪼개진 원형 각각의 비율"
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "3차원 원형 각각의 비율"
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "3차원 원형 각각의 비율"
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "3차원 쪼개진 원형 각각의 비율"
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "쪼개진 원형 각각의 비율"
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "각각의 비율"
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "파이"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "범위"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "나누기"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "나누기"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default pie types"
+msgstr "기본 해석기"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "플롯 모드"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "플롯 모드"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "퍼센트(_C)"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "표준 에러"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "누적 막대형"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "기본 해석기"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "줄 분석 오류"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "모든 숫자"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "개수"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "인쇄할 제목"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "ì •ë ¬"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "줄 분석 오류"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "ì •ë ¬"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "ì •ë ¬"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "매개변수"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "ì •ë ¬"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "플롯 모드"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "청색"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "청색"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "줄 분석 오류"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "줄 분석 오류"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "누적 막대형"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "ì„ "
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "ì„ "
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/lv.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/lv.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/lv.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4263 @@
+# SOME DESCRIPTIVE TITL encoding="UTF-8"E.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.#: plugins/fn-random/functions.c:1127
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2002-08-13 05:20GMT+0020\n"
+"Last-Translator: Pēteris Krišjānis <peteris.krisjanis at os.lv>\n"
+"Language-Team: Latvian <ll10nt at os.lv>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 0.9.5\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "F_ormāts"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr ""
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr ""
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Python iespraudņa ielādētajs"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Objektīva Vērtība"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Izlikt"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+msgid "Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Uzstādīt Robežas"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Nezināma versija"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Drukāt"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Slēpt Detaļas"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automātisks"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Fons"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Matrica"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "rindas"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "F_ormāts"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Fons"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Fons"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Fons"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Loģiskās Funkcijas"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Ievietot..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "Rādīt Detaļas"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Sūtīt"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Izlikt"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "Tips"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Loģiskās Funkcijas"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Fons"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Kombo"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Iekšēja KĻŪDA"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "Izlikt"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "Grupēt"
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "Grafiks%d"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nosaukums"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Tips"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Robežas"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Fons"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Tips"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Fons"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Skaitļu Teorija"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+msgid "Test de description"
+msgstr ""
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "teksts"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "Datubāze"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "Apvienot..."
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Tips"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Tips"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr ""
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Virkne"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr ""
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dR x %dC"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Fonts"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Fons"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Kombo"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Kombo"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "Ä’na"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Apvienot..."
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Uzstādīt Fona Krāsu"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "Tips"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Fons"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Funkcija"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "Kombo"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Kombo"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "Izlikt"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_Rekvizīti..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Apvienot..."
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "Statuss"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "Drukāt"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "virkne"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "Pāratsaukt"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr ""
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "Grupēt"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "Slīpraksts"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Vairāk"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "virkne"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "Vērtība"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "virkne"
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "Pāratsaukt"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "Vairāk"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "virkne"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "Å¡Å«na"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "Noņemt robežas"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Novietojums pa labi"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Novietojums pa labi"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Novietojums pa labi"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr ""
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Ä’na"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Funkcija"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Izlikt"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Izlikt"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Ievietot attēlu"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Saglabāt Visu"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "Izlikt"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Paresnināts slīpraksts"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Slīpraksts"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:80
+#, fuzzy
+msgid "Percentage"
+msgstr "Procenti"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "Funkcija"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:83
+#, fuzzy
+msgid "Text"
+msgstr "teksts"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "Lietotājs"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "Skaitļu Teorija"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "Formāts kā Nauda"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Skaitļu Teorija"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Drukāšanas pirmsapskate"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "virkne"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "Lietotājs"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr ""
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Pašreizējais _datums"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Iekšēja KĻŪDA"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr ""
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr ""
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr ""
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr ""
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr ""
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr ""
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr ""
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr ""
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr ""
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr ""
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr ""
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr ""
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr ""
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr ""
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr ""
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr ""
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr ""
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr ""
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr ""
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr ""
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr ""
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr ""
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr ""
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr ""
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr ""
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr ""
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr ""
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr ""
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr ""
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr ""
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr ""
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr ""
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr ""
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr ""
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr ""
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr ""
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr ""
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr ""
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr ""
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr ""
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr ""
+
+#: goffice/utils/format.c:758
+#, fuzzy
+msgid "Blue"
+msgstr "Vērtība"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr ""
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr ""
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr ""
+
+#: goffice/utils/format.c:762
+#, fuzzy
+msgid "Red"
+msgstr "Pāratsaukt"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr ""
+
+#: goffice/utils/format.c:764
+#, fuzzy
+msgid "Yellow"
+msgstr "Å¡Å«na"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr ""
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr ""
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automātisks"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Nauda"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr ""
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr ""
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "Izlikt"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "rindas"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Izlikt"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "Matrica"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Kļūda parsējot līniju"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "Tips"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "Tips"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "Procenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "Adrese"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Drukāt"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "Procenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "Procenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "Izveidot līniju"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "Procenti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Izveidot līniju"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "Izveidot līniju"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "_Ievietot Kolonnu(as)"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Uzstādīt Fontu Izmēru"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Tips"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Nepareiza parole"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Tips"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Tips"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Tips"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Kļūda parsējot līniju"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Uzstādīt Fontu Izmēru"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "Tips"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Nekas"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Meklē kādu tekstu"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Fonta Izmērs"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "Cena"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Cena"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "Virkne"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Virkne"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "Tips"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Tips"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Procenti"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Uzstādīt Fontu Izmēru"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Kļūda parsējot līniju"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Gnumeric "
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Centrēt"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Statuss"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Kļūda parsējot līniju"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Skaitļu Teorija"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Skaitļu Teorija"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "Tips"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Vērtība"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Vērtība"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Kļūda parsējot līniju"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Kļūda parsējot līniju"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Drukāt"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Drukāt"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Drukāt"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ml.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ml.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ml.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4321 @@
+# SOME DESCRIPTIVE TITL encoding="UTF-8"E.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FSF-India <locale at gnu.org.in>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version:gnumeric.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-07-05 10:29+0530\n"
+"Last-Translator: FSF-India <locale at gnu.org.in>\n"
+"Language-Team: Malayalam <locale at gnu.org.in>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "വസ്തു..."
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "രചനയില് നിന്ന് സംയോജനി വിവരങ്ങള് വായിക്കാന് കഴിയുന്നില്ല."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "അറിയാത്ത പേ‌‌ര‌്"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "പിന്തുണ‌യ‌്ക്കപ്പെടാത്ത ലോഡ‌ര് തരം \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "(\"%s\") സംയോജിനി വിവരരചന വായിക്കാന് കഴിയുന്നില്ല."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "രചന \"%s\" സാധുതയുള്ള ഒരു സംയോജിനി വിവരരചനയല്ല."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "അറിയാത്ത സംയോജിനിനാമം"
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "സംയോജിനി ലോഡ‌ര് നിറയ‌്ക്കാന്‌ കഴിയുന്നില്ല"
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "ഖണ്ഡരചന നാമം നല്കിയിട്ടില്ല."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "ഖണ്ഡരചന \"%s\" തുറക്കാന് കഴിയുന്നില്ല."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "ഖണ്ഡരചന \"%s\" സാധുതയില്ലാത്ത ക്രമീകരണമാണ‌്‌."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "\"%s\"‌ ഖണ‌്ഡരചന അടയ‌്ക്കാന്‌ കഴിയുന്നില്ല."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "രചനയില് \"%s\" എന്ന പ്രവ‌ര്ത്തനം ഉള്‌ക്കൊള്ളുന്നില്ല."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "രചനയില് \"%s\" എന്ന പ്രവ‌ര്ത്തനം ഉള്‌ക്കൊള്ളുന്നില്ല."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "സാര്‍വത്രികമായ"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "രചന വായിക്കുമ്പോള്‌ തെറ്റുന്നു."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "രചനാനാമം: %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "രചന സംരക്ഷിക്കുമ്പോള് തെറ്റുന്നു."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "സംയോജനി പാലകന്‌"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "അറിയാത്ത സേവന തരം: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "രചനാ സൂചിക വായിക്കുന്നതില്‌ പരാജയം"
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "സൂത്രവാക്യങ്ങള്‌"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "പൂ‌‌ര്ണസംഖ്യ"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "തെരയുക"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "സ്ഥലശൈലി"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "ക്രമീകരണം"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "അക്ഷരങ്ങള്"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "വിയുക്തമാക്കുക"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "വിയുക്തമാക്കുക"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "വരി‌"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "യുക്തിയുക്തമായ"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "ലോഗരിതം"
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "വിശദാംശങ്ങള് കാണിക്കുക"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "തനിയെയുള്ള"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "വിഭാഗം"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "പശ്ചാത്തലം"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "ഏറ്റവും കുറഞ്ഞ"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "പരമാവധി"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "അടയ്‍ക്കുക"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "ക്രമീകരണം"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "ലിഖിതം"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "വെള്ളിയാഴ്ച"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "വെള്ളിയാഴ്ച"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "സ്ഥാന നിര്ണ്ണയം"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "ഉള്‌തലം"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "ബാഹ്യരേഖ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "ഉയരം"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "ഉള്‌തലം"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "ഇടയ്ക്ക് ചേര്ക്കുക"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "വരി"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "ബാഹ്യരേഖ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "ലിഖിതങ്ങള്"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "തരം:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "തലക്കെട്ട്:"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "വെള്ളിയാഴ്ച"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "ഉയരം"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "വീതി"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "പിശക് സൂചനാധ്വനി "
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "നിറം:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "സ്ഥിരവീതി"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "ഒപ്പം:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "ഗ്രാഫ് ഗുരു"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "പേര‍്"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "തലക്കുറിപ്പ് യഥേഷ്ടമാക്കുക"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "ഇടയ്ക്ക് ചേര്ക്കുക"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr " തരം"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "അരിക്‌"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "സ്ഥാന നിര്ണ്ണയം"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"കാണിക്കുക\n"
+"മാതൃക"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "വിവരണം"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "വാചകം"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "വസ്തുത"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr " തരം"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "ഉള്‌തലം"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "വാക്യങ്ങള്"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "ബിന്ദു"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr ""
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "അക്ഷരരൂപം"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "രീതി"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "സ്ഥാന നിര്ണ്ണയം"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "നിറം:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "താഴെയുള്ള പുറംവരകള്‌"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "ഉദ്ദേശ്യം:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "വലിപ്പം:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "രീതി"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "തരം:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "പശ്ചാത്തലം"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "ദിശ:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "ഉം"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "വ‍ര്ണ്ണ‍ങ്ങള്‌:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "ചേര്ച്ച:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "പുരോതലം"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "മാതൃക"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "തെരഞ്ഞെടുക്കുക"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "വലിപ്പം:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "അവസ്ഥ"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "വലത്"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "ശ്രേണി"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "അറിയിക്കല്:"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "സ്വതേ"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "അറബിക്"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "ബാള്ട്ടിക്"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "മധ്യ യൂറോപ്യന്"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "ചൈനീസ്‌"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "സിറിലിക്"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "ഗ്രീക്ക്"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "ഹീബ്ര‍ു"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "ഇന്‌ഡ്യന്‌"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "ജാപ്പനിസ്"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "കൊറിയന്"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "തുര്ക്കിഷ്"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "യുണികോഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "വിയറ്ര്നാമിസ്"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "പടിഞ്ഞാറന്‌"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "മറ്റുള്ളവ"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "അറബിക്(IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "അറബിക്(IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "അറബിക്(ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "അറബിക്(ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "അറബിക്(ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "അറബിക്(മാക് അരബിക്)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "അറബിക്(Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "അര്‌മേനിയന്‌(ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "ബാല്‌ട്രിക്(ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "ബാല്‌ട്രിക്(ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "ബാല്‌ട്രിക്(Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "സെല്‌ടിക്(ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "സെന്‌ട്രല് യൂറോപ്പിയന്(IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "സെന്‌ട്രല് യൂറോപ്പിയന്(ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "സെന്‌ട്രല് യൂറോപ്പിയന്"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "സെന്‌ട്രല് യൂറോപ്പിയന്"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "ചൈനീസ് ലളിതം/സിംപ്ളിഫൈഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "ചൈനീസ് ലളിതം/സിംപ്ളിഫൈഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "ചൈനീസ് ലളിതം/സിംപ്ളിഫൈഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "ചൈനീസ് ലളിതം/സിംപ്ളിഫൈഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "ചൈനീസ് ലളിതം/സിംപ്ളിഫൈഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "ചൈനീസ് ട്റഡിഷണല്‌/പരന്പരാഗതം"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "ചൈനീസ് ട്റഡിഷണല്‌/പരന്പരാഗതം"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "ചൈനീസ് ട്റഡിഷണല്‌/പരന്പരാഗതം"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "സിറിലിക്"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "സിറിലിക്"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "ജോര്‌ജ്ജിയന്"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "ഗ്രീക്ക്(ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "ഗ്രീക്ക് (മാക് ഗ്രീക്ക്)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "ഗ്രീക്ക് (ജാലകം-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "ഗുജറാത്തി(മാക് ഗുജറാത്തി)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "ഗുരുമുഖി (മാക് ഗുരുമുഖി)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "ഹീബ്രു(IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "ഹീബ്രു(ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "ഹീബ്രു(ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "ഹീബ്രു (മാക് ഹീബ്രു)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "ഹീബ്രൂ (ജാലകം-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "ഹിന്ദി (മാക് ദേവനാഗിരി)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "ജാപ്പനിസ്(EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "ജാപ്പനിസ്(ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "ജാപ്പനിസ്(Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "കൊറിയന്‌(EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "കൊറിയന്‌(ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "കൊറിയന്‌(JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "കൊറിയന്"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "നോര്‌ഡിക്(ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "റൊമേനിയന്‌(മാക് റൊമേനിയന്‌)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "റൊമേനിയന്(ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "ദക്ഷിണ/സൌത്ത് യൂറോപ്യന്‌"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "തായ്(TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "ടര്‌ക്കിഷ്(IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "ടര്‌ക്കിഷ്(ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "ടര്‌ക്കിഷ്(MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "ടര്‌ിഷ്(ജാലകം-1245)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "യുണികോഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "യുണികോഡ്"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "ഉപയോക്തൃ നാമം"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "വിയറ്ര്നാമിസ്"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "വിയറ്ര്നാമിസ്"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "വിയറ്ര്നാമിസ്"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "പടിഞ്ഞാറന് (മാക്‌റോമന്‌)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "അയഞ്ഞ"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "തിങ്കളാഴ്ച"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "പരിധി"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "സ്ഥൂലം"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "നീല"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "ശ്രേണി"
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "ചെമപ്പ്"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "പരിധി"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "സമയം"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "ശ്രേണി"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "മജന്ത"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "മഞ്ഞ"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "പച്ച"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "സിയന്"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "ഹൈപ്പ‌ര്ലിംഗ്"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "വലത് ക്രമീകരണം"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "വലത് ക്രമീകരണം"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "വലത് ക്രമീകരണം"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "ധവളം"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "മൂല്യമനുസരിച്ച്"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "യഥേഷ്ടം"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "പാദക്കുറിപ്പ് യഥേഷ്ടമാക്കുക"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "പ്രതിബിംബതരം"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "സ്ഥാന നിര്ണ്ണയം"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+#, fuzzy
+msgid "Dock the toolbar"
+msgstr "എങ്ങനെ ഉപകരണപ്പട്ട വരയ‌്ക്കാം"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "എങ്ങനെ ഉപകരണപ്പട്ട വരയ‌്ക്കാം"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "'%s'രചന തുറ‍ക്കാന്‌ കഴിയുന്നില്ല."
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "ശേഖരം"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "ചിത്രം..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "മുഴുവന്‌ നിരകളും തെരഞ്ഞെടുക്കുക"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "സംരംക്ഷിക്കുക"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"പ്രവ‌ര്ത്തിപുസ്തകം %s നിലനില്‌ക്കുന്നുണ്ട്.\n"
+" മാറ്റിയെഴുതണോ?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "സാധാരണ"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "സ്ഥൂലം"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "ചരിഞ്ഞ"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "അക്ഷരശൈലി:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "അക്ഷരരൂപം:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "തിരനോട്ടം"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "വലിപ്പം:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "സംഖ്യകള്‌"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "നാണയം"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "കണക്കെഴുത്ത്"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "തിയ്യതി"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "സമയം"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "ശതമാനം"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "ചെറുഭാഗം"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "ശാസ്ത്രീയമായ"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "വാചകം"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "സവിശേഷം"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "യഥേഷ്ടം"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "ഋണ സംഖ്യാരീതി"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "സംഖ്യാരീതികള്‌"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "വിഭാഗം:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "ദശാംശ സ്ഥാനങ്ങള്‌:‌"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "ബാഹ്യ‌രേഖകള്‌ പ്രദര്‌ശിപ്പിക്കുക"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "ക്രമീകരണം:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "ഋണ സംഖ്യാരീതി"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "തിരനോട്ടം"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "അടയാളം:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "ക്രമീകരണം:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "1000ങ്ങള്‌ക്ക് വേ‌‌ര്തിരിവ് ഉപയോഗിക്കുക"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "പടിഞ്ഞാറന്‌"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "മധ്യ യൂറോപ്യന്"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "സിഗ്മ"
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "അറബിക്"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "ഓസ്‌ട്രേലിയ, ഡോളേഴ്സ്"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+#, fuzzy
+msgid "United Arab Emirates (ar_AE)"
+msgstr "യുണൈറ്റഡ് അറബ് എമിറൈറ്റ്സ്, ദിറം"
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "ബഹറിന്, ദിനാഴ്സ്"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "ജോ‌ര്ദാന്, ഡിനാര്‌സ്"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "കുവൈറ്റ്, ദിനാര്സ്"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "ലിബിയ, ദിനാര്സ്"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "സൌദി അറേബ്യ, റിയാല്സ്"
+
+#: goffice/gtk/go-locale-sel.c:123
+#, fuzzy
+msgid "Sudan (ar_SD)"
+msgstr "സുഡാന്, ദിനാര്സ്"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "ടുണീഷ്യ, ദിനാര്സ്"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+#, fuzzy
+msgid "Azerbaijan (az_AZ)"
+msgstr "അസ‌ര്‌ബൈജാന്, മണറ്റ്സ്"
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "ബെലാറസ്, റൂബിള്സ്‌"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "ബള്‌ഗേറിയ, ലവ"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "ബംഗ്ളാദേശ്, ധാക്ക"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+#, fuzzy
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "ബോസ്നിയ ആന്ഡ് ഹെ‌ര്സിഗോവിന, കണ്‌വ‌ര്ട്ടിബിള് മാ‌ര്ക്ക"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "ചെക്ക് റിപ്പബ്ളിക്ക്, കൊറൂണി"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+#, fuzzy
+msgid "Denmark (da_DK)"
+msgstr "ഡെന്മാര്ക്ക്, റോണര്"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+#, fuzzy
+msgid "Switzerland/German (de_CH)"
+msgstr "സ്വിറ്റ്സ‌ര്ലാന്ഡ്, ഫ്രാങ്ക്സ്"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "ന്യ‌ൂസിലാന്റ്, ഡോളേഴ്സ്"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "ഫിലിപ്പൈന്‌സ്, പെസോസ്"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "അര്‍ജന്റീന, പെസോസ്"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "ചിലി, പെസോസ്"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "കൊളംബിയ, പെസോസ്‌"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "കൊസ്റ്ററിക്ക, കോളോണ്സ്"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "ഡൊമിനിയ്‌ക്കന് റിപ്പബ്ളിക്ക്, പെസോസ്"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "ഗോട്ടിമാല"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "ഹോണ്‌ഡൂറാസ്, ലംപിരാസ്"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "മെക്സിക്കോ, പെസോസ്"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+#, fuzzy
+msgid "El Salvador (es_SV)"
+msgstr "എല്‌ സാല്‌വഡോര്, കോളോണ്സ്‌"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+#, fuzzy
+msgid "Switzerland/French (fr_CH)"
+msgstr "സ്വിറ്റ്സ‌ര്ലാന്ഡ്, ഫ്രാങ്ക്സ്"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+#, fuzzy
+msgid "Armenia (hy_AM)"
+msgstr "അര്‌മേനിയന്‌(ARMSCII-8)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "ഇന്‌ഡോനേഷ്യ"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+#, fuzzy
+msgid "Japan (ja_JP)"
+msgstr "ജാപ്പനിസ്(EUC-JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+#, fuzzy
+msgid "Georgia (ka_GE)"
+msgstr "ജോര്‌ജ്ജിയന്"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+#, fuzzy
+msgid "Korea (ko_KR)"
+msgstr "കൊറിയന്‌(EUC-KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+#, fuzzy
+msgid "Lithuania (lt_LT)"
+msgstr "ലിത്വാനിയ, ലിറ്റായ്"
+
+#: goffice/gtk/go-locale-sel.c:208
+#, fuzzy
+msgid "Latvia (lv_LV)"
+msgstr "ലാത്‌വിയ,ലാറ്റി"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "സ്ളോവാക്കിയ, കൊറൂണി"
+
+#: goffice/gtk/go-locale-sel.c:227
+#, fuzzy
+msgid "Slovenia (sl_SI)"
+msgstr "സ്ലോവീനിയ, ഡോളേഴ്സ്"
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "അല്‌ബേനിയ. ലേക്ക്"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "താജ്കിസ്ഥാന്, റൂബിള്സ്‌"
+
+#: goffice/gtk/go-locale-sel.c:235
+#, fuzzy
+msgid "Thailand (th_TH)"
+msgstr "തായ്‌ലന്റ്, ബാഹ്ട്ട്"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "പാകിസ്ഥാന്, റുപ്പീസ്‌"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+#, fuzzy
+msgid "Vietnam (vi_VN)"
+msgstr "വിയറ്ര്നാമിസ്"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "സജീവ മൂല്യം:‌"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "നമ്പര്‌"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "ആന്തരിക വിടവ്"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*ഞായര്‍"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*തിങ്കള്"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*ചൊവ്വ"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*ബുധന്"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*വ്യാഴം"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*വെള്ളി"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*ശനി"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "ഞായറാഴ്ച"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "തിങ്കളാഴ്ച"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "ചൊവ്വാഴ്ച"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "ബുധനാഴ്ച"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "വ്യാഴാഴ്ച"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "വെള്ളിയാഴ്ച"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "ശനിയാഴ്ച"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*ജനുവരി‌"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*ഫെബ്ര‌ുവരി"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*മാ‌ര്ച്ച്"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*ഏപ്രില്"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*മെയ്"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*ജൂണ്"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*ജൂലൈ"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*ആഗസ്റ്റ്"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*സെപ്തംബ‌ര്"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*ഒക്ടോബ‌ര്"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*നവംബ‌ര്"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*ഡിസംബ‌ര്"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "ജനുവരി"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "ഫെബ്രുവരി"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "മാ‌ര്ച്ച്"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "ഏപ്രില്"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "മെയ്"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "ജൂണ്"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "ജൂലൈ"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "ആഗസ്ത്"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "സെപ്തംബ‌ര്"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "ഒക്‌ടോബ‌ര്"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "നവംബ‌ര്‌"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "ഡിസംബ‌ര്"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "സത്യം"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "അസത്യം"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "കറുപ്പ്"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "നീല"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "സിയന്"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "പച്ച"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "മജന്ത"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "ചെമപ്പ്"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "ധവളം"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "മഞ്ഞ"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "യുണൈറ്റഡ് അറബ് എമിറൈറ്റ്സ്, ദിറം"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "അഫ്ഘാനിസ്ഥാന്, അഫ്ഗാനിസ്"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "അല്‌ബേനിയ. ലേക്ക്"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "അര്‍മേനിയ, ഡ്രാംസ്"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "നെത‌ര്ലന്ഡ്സ് ആന്ഡില്സ്, ഗ്വില്ഡേഴ്സ്"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "അംഗോള, വാന്സ"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "അര്‍ജന്റീന, പെസോസ്"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "ഓസ്‌ട്രേലിയ, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "അറുബ, ഗ്വില്ഡേഴ്സ്"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "അസ‌ര്‌ബൈജാന്, മണറ്റ്സ്"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "ബോസ്നിയ ആന്ഡ് ഹെ‌ര്സിഗോവിന, കണ്‌വ‌ര്ട്ടിബിള് മാ‌ര്ക്ക"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "ബാര്ബഡോസ്, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "ബംഗ്ളാദേശ്, ധാക്ക"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "ബള്‌ഗേറിയ, ലവ"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "ബഹറിന്, ദിനാഴ്സ്"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "ബറുന്ഡി, ഫര്ാങ്ക്സ്"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "ബെ‌ര്മുഡ, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "ബ്ര‌ൂണയ് ഡാറുസ്സലാം, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "ബൊളീവിയ, ബൊളിവീയന്സ്"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "ബ്രസീല്, ബ്രസീല് റീല്"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "ബഹാമാസ്, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "ഭൂട്ടാന്, ഗുല്‌ട്രം"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "ബോട്സ്വാന"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "ബെലാറസ്, റൂബിള്സ്‌"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "ബെലിസ്, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "ക്യാനഡ, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "സ്വിറ്റ്സ‌ര്ലാന്ഡ്, ഫ്രാങ്ക്സ്"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "ചിലി, പെസോസ്"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "ചൈന, യുവാന് റെന്മിന്ബി"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "കൊളംബിയ, പെസോസ്‌"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "കൊസ്റ്ററിക്ക, കോളോണ്സ്"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "ക്യൂബ, പെസോസ്"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "കേപ് വെ‌ര്‌ഡെ, സിഡോസ്"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "സൈപ്രസ്, പൌണ്സ്"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "ചെക്ക് റിപ്പബ്ളിക്ക്, കൊറൂണി"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "ജിബൂട്ടി, ഫ്രാങ്ക്സ്"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "ഡെന്മാര്ക്ക്, റോണര്"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "ഡൊമിനിയ്‌ക്കന് റിപ്പബ്ളിക്ക്, പെസോസ്"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "അല്‌ജീരിയ, അല്‌ജീരിയ ഡിനാര്സ്"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "ഇസ്റ്റോനിയ, റൂണി"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "ഈജിപ്റ്റ്, പൌണ്സ്"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "എറിട്രിയ, നാക്ഫ"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "എത്യോപ്യ, ബിര്"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "ഫിജി, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "ഫാക്ക്‌ലാന്റ് ഐലന്റ്സ് (മാല്‌വിനാസ്), പൌണ്സ്"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "യുണൈറ്റഡ് കിംഗ്ഡം, പൌണ്സ്"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "ജോര്‍ജ്ജിയ, ലാരി"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "ഘാന, സെഡിസ്"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "ജിബ്രാള്‌ട്ടര്, പൌണ്സ്‌"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "ഗാമ്പിയ, ഡലാസി"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "ഗിനിയ, ഫ്രാങ്ക്സ്"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "ഗോട്ടിമാല"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "ഗയാന, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "ഹോംകോംഗ്, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "ഹോണ്‌ഡൂറാസ്, ലംപിരാസ്"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "ക്രൊയോഷ്യസ ക്യൂണ"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "ഹെയ‌്തി, ഗോര്ഡ്സ്"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "ഹംഗേറി, ഫോറിന്റ്"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "ഇന്‌ഡോനേഷ്യ"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "ഇസ്രായേല്, പുതിയ ഷെക്കല്സ്"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "ഐല് ഓഫ് മാന്, പൌണ്സ്"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "ഇന്ഡ്യ, റുപ്പീസ്"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "ഇറാഖ്, ഡിനാര്സ്"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "ഇറാന്, റിയാല്സ്"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "ഐസ്‍ലാന്റ്, റൊണൂ‌ര്"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "ജെ‌ര്സി, പൌണ്സ്"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "ജമേയ്‌ക്ക, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "ജോ‌ര്ദാന്, ഡിനാര്‌സ്"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "ജാപ്പാന്, യെന്"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "കെനിയ, ഷില്ലിംഗ്സ്"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "കിര്‌ഗിസ്ഥാന്, സോംസ്‌"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "കമ്പോഡിയ, റിയാല്സ്"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "കൊമറോസ്, ഫ്രാങ്ക്സ്"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "വടക്കന് കൊറിയ, ഓണ്"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "തെക്കന് കൊറിയ, ഓണ്"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "കുവൈറ്റ്, ദിനാര്സ്"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "ക്യാമന്‌ ഐലന്റ്സ്, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "ഖസാക്കിസ്ഥാന്, ടെഞ്ച്‌"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "ലാവോസ്, കിപ്സ്"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "ലെബനന്, പൌണ്സ്‌"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "ശ്രീലങ്ക, റുപ്പീസ്"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "ലൈബീരിയ, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "ലെസോത്തോ, മാലോട്ടി"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "ലിത്വാനിയ, ലിറ്റായ്"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "ലാത്‌വിയ,ലാറ്റി"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "ലിബിയ, ദിനാര്സ്"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "മൊറോക്കോ, ദിറംസ്"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "മോള്‌ഡോവാ, ലയി"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "മഡഗാസ്ക‌‌ര്, മലഗാസി ഫ്രാങ്ക്സ്"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "മാസിഡോണിയ ദിനാര്സ്"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "മ്യാന്മ‌ര് (ബ‌ര്മ്മ), ക്യാറ്റ്സ്"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "മംഗോളിയ, തുഗ്രിക്സ്"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "മക്കാവു, പറ്റക്കാസ്"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "മൌരിട്ടാനിയ,"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "മാള്‌ട്ട, ലിറി"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "മൌറീഷ്യസ്, റുപ്പീസ്"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "മാലിദ്വീപ്സ് (മാലി ദ്വീപുകള്), റുഫിയാ"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "മലാവി, ക്വാച്ചസ്"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "മെക്സിക്കോ, പെസോസ്"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "മലേഷ്യ, റിങ്കിറ്റ്സ്"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "മൊസാംബിക്, മെറ്റിഷ്യാസ്"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "നമീബിയ, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "നൈജീരിയ, നൈറാസ്"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "നിക്കരാഗ്വ, ഗോള്ഡ് കോ‌ര്ഡബസ്"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "നോ‌‌ര്‌വ്വേ, ക്രോണ്"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "നേപ്പാള്, നേപ്പാള് റുപ്പീസ്"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "ന്യ‌ൂസിലാന്റ്, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "ഒമാന്, റിയാല്സ്"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "പനാമ, ബാല്‌ബോ"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "പെറു, ന്യൂവോസ് സോള്സ്"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "പപ്വാ ന്യ‌ു ഗിനി, കിനാ"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "ഫിലിപ്പൈന്‌സ്, പെസോസ്"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "പാകിസ്ഥാന്, റുപ്പീസ്‌"
+
+#: goffice/utils/formats.c:505
+#, fuzzy
+msgid "Poland, Zlotys"
+msgstr "പോളണ്ട്, ലോട്ടിക്"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "പരാഗ്വേ, ഗുറാനി"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "ഖത്തര്, റിയാല്സ്"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "റൊമേനിയ, ലി"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "റഷ്യ, റൂബിള്സ്"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "റുവാണ്ട, റുവാണ്ട ഫ്രാങ്ക്സ്"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "സൌദി അറേബ്യ, റിയാല്സ്"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "സോളമന്‌ ഐലന്റ്സ്, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "സീഷെല്‌സ്, റുപ്പീസ്"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "സുഡാന്, ദിനാര്സ്"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "സ്വീഡന്, ക്രോണോര്"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "സിങ്കപ്പൂര്, ഡോളേഴ്സ്‌"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "സെന്റ് ഹെലേന, പൌണ്സ്"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "സ്ലോവീനിയ, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "സ്ളോവാക്കിയ, കൊറൂണി"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "സിയറ ലിയോണ്‌, ലിയോണ്സ്"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "സോമാലിയ, ഷില്ലിംഗ്സ്"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "സെബോര്ഗ, ല്വിഗിനി"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "സുരിനാം, ഗ്വില്‌ഡേഴ്സ്"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "സാവോ ടോം ആന്റ് പ്രിന്‌സിപ്പി, ദോബ്രാസ്"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "എല്‌ സാല്‌വഡോര്, കോളോണ്സ്‌"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "സിറിയ, പൌണ്സ്"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "സ്വാസിലാന്റ്, എമലാഞ്ചനി"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "തായ്‌ലന്റ്, ബാഹ്ട്ട്"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "താജ്കിസ്ഥാന്, റൂബിള്സ്‌"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "തുര്ക്‌മെനിസ്ഥാന്, മണാട്ട്സ്‌"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "ടുണീഷ്യ, ദിനാര്സ്"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "ടോംഗ, പാംഗ"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "തുര്ക്കി, ലിറാസ്"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "ട്രിനിഡാഡ് ആന്റ് ടോബാഗോ, ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "തുവാലു, തുവാലു ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "തൈവാന്, ന്യ‌ൂ ഡോളേഴ്സ്"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "ടാന്സാനിയ, ഷില്ലിംഗ്സ്"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "ഉക്രയിന്"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "ഒന്നുമില്ല"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "ദൃഢമായ"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "തനിയെയുള്ള"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "ഒന്നുമില്ല"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "ഇന്‌ഡ്യന്‌"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "പരിധി"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "വലതുവശത്തുള്ള പുറംവരകള്‌"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr ""
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "ഒട്ടിപ്പ് ബന്ധം"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*മാ‌ര്ച്ച്"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% ചാരനിറം"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% ചാരനിറം"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% ചാരനിറം"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% ചാരനിറം"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% ചാരനിറം"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "തിരശ്ചീന പട്ട"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "ലംബപ്പട്ട"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "വിപരീത വിക‌‌‌‌ര്ണപ്പട്ട"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "വിക‌‌ര്ണ പട്ട"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "വിക‌‌ര്ണ രേഖാഖണ‌്ഡം"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "കട്ടിയുള്ള വിക‌ര്ണ രേഖാഖണ‌്ഡം"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "നേ‌ര്ത്ത തിരശ്ചീനപ്പട്ട"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "നേ‌ര്ത്ത ലംബപ്പട്ട"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "നേ‌‌ര്ത്ത വിപരീത വിക‌ര്ണപ്പട്ട"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "നേ‌ര്ത്ത വിക‌ര്ണപ്പട്ട"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "നേ‌ര്ത്ത തിരശ്ചീന രേഖാഖണ‌്ഡം"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "നേ‌ര്ത്ത വിക‌ര്ണ രേഖാഖണ‌്ഡം"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "പുരോതല ദാ‌‌ര്ഢ്യം"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "ചെറിയ വൃത്തങ്ങള്"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "അ‌ര്ദ്ധ വൃത്തങ്ങള്"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "പിണയുക"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "വലിയ വൃത്തങ്ങള്"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "കട്ട"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "ലിഖിതങ്ങള്‌"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "മൂല്യങ്ങള്‌"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "വരി ഖണ‌്ഡനംചെയ്യ‌ുന്നതില്‌ പിശക്"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr " തരം"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr " തരം"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "വിസ്തീര്ണ്ണം"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "സ്ഥലങ്ങളില്‌"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "നിര"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "വരി‌"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "വരികള്‌ കൊണ്ടുവരിക"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "വരി‌"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "ശതമാനങ്ങള്"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "ശതമാനങ്ങള്"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "ശതമാനം"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "ശതമാനം"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "നി‌ര്മ്മാണ കേന്ദ്രം"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "ശതമാനങ്ങള്"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "ശതമാനങ്ങള്"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr ""
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "സാധുതയില്ലാത്ത അടയാളവാക്ക്"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr " തരം"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "വരി ഖണ‌്ഡനംചെയ്യ‌ുന്നതില്‌ പിശക്"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "ചെറുജാലകത്തിന്റെ നിറം മാറ്റുന്നു"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "സ്വതേയുള്ള വ്യാഖ്യാതാവ്"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr " തരം"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "പ്രതിദ‌ര്ശകം"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "വേ‍ര്തിരി:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "ചിഹ്ന വലിപ്പം"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "പ്രതിദ‌ര്ശകം"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default pie types"
+msgstr "സ്വതേയുള്ള വ്യാഖ്യാതാവ്"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr " തരം"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "ശതമാനം"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "പ്രാമാണിക വീതി"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "സ്വതേയുള്ള വ്യാഖ്യാതാവ്"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "വരി ഖണ‌്ഡനംചെയ്യ‌ുന്നതില്‌ പിശക്"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "അഖണ‌്ഡസംഖ്യകള്‌"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "എണ്ണുക"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "വരികള്‌ കൊണ്ടുവരിക"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "ഉറവിടം"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "വരി ഖണ‌്ഡനംചെയ്യ‌ുന്നതില്‌ പിശക്"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "നി‌ര്മ്മാണ കേന്ദ്രം"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "നി‌ര്മ്മാണ കേന്ദ്രം"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% സാധാരണ വലിപ്പം"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "പ്രാചലങ്ങള്"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "ഉറവിടം"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr " തരം"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "ഡബിള്"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "ഡബിള്"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "വരി ഖണ‌്ഡനംചെയ്യ‌ുന്നതില്‌ പിശക്"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "വരി ഖണ‌്ഡനംചെയ്യ‌ുന്നതില്‌ പിശക്"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "വരി‌"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "ബിന്ദു"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "വരി‌"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/mr.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/mr.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/mr.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4302 @@
+# Marathi Translation of gnumeric.po
+# This file is released under GPL
+# Copyright (C) 2004, HBCSE&IndicTrans
+# FIRST AUTHOR: Terna L10n Team <terna2 at hbcse.tifr.res.in>
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-03-03 20:40--530\n"
+"Last-Translator: terna2 <terna2 at hbcse.tifr.res.in>\n"
+"Language-Team: terna localization Team <hbcse.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "कार्यरत"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+#, fuzzy
+msgid "Unknown name"
+msgstr "अज्ञात"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, fuzzy, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "\"%s\" प्लगिन बंद करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:636
+#, fuzzy, c-format
+msgid "Error while reading service #%d info."
+msgstr "अॅपलिक्स फाईल वाचताना त्रुटी आली"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, fuzzy, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "\"%s\" प्लगिन बंद करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+#, fuzzy
+msgid "Unknown plugin name."
+msgstr "अज्ञात प्लगिन"
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr ""
+
+#: goffice/app/go-plugin.c:871
+#, fuzzy, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "\"%s\" प्लगिन सुरू करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "प्लगिन आधार"
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "id=\"%s\"  अज्ञात प्लगिन बरोबर\n"
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "id=\"%s\"  अज्ञात प्लगिन बरोबर\n"
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "\"%s\" प्लगिन सुरू करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:953
+#, fuzzy, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "\"%s\" प्लगिन सुरू करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:1006
+#, fuzzy, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "\"%s\" प्लगिन बंद करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "id=\"%s\"  अज्ञात प्लगिन बरोबर\n"
+
+#: goffice/app/go-plugin.c:1112
+#, fuzzy
+msgid "Error while loading plugin dependencies."
+msgstr "\"%s\" प्लगिन सुरू करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:1288
+#, fuzzy, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "वर्ग सूची वाचताना चूक झाली आहे"
+
+#: goffice/app/go-plugin.c:1407
+#, fuzzy, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "\"%s\" प्लगिन सुरू करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:1442
+#, fuzzy, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "\"%s\" प्लगिन बंद करताना त्रुटी"
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+#, fuzzy
+msgid "Errors while reading info about available plugins."
+msgstr "प्लगिन्स बंद करताना त्रुटी आल्या"
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "प्लगिन्स बंद करताना त्रुटी आल्या"
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+#, fuzzy
+msgid "Errors while activating plugins."
+msgstr "प्लगिन्स सुरू करताना त्रुटी आल्या"
+
+#: goffice/app/go-plugin.c:1740
+#, fuzzy
+msgid "Errors while initializing plugin system."
+msgstr "प्लगिन्स सुरू करताना त्रुटी आल्या"
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+#, fuzzy
+msgid "Error while loading plugin service."
+msgstr "\"%s\" प्लगिन सुरू करताना त्रुटी"
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "सामान्य"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+#, fuzzy
+msgid "Error while reading file."
+msgstr "अॅपलिक्स फाईल वाचताना त्रुटी आली"
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+#, fuzzy
+msgid "Error while saving file."
+msgstr "प्लगिन्स सुरू करताना त्रुटी आल्या"
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "प्लगिनचे नाव"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "विस्तारित माहिती संपादित करा"
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "सूत्र"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "समाविष्ट करा"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "शोधा"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "रिकाम्या जागेचा (स्पेस) प्रकार"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "क्रम बदलणे"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+msgid "Bullet Character"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "लोगॅरिथमिक"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "ओळ"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "तर्कशुद्ध"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "लोगॅरिथमिक"
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "विस्तारपूर्वक दाखवा"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "स्वयंचलित"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "वर्ग"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "पार्श्वभुमी"
+
+#: goffice/graph/gog-axis.c:1475
+#, fuzzy
+msgid "M_in"
+msgstr "कमीत कमी"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "कमाल"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "बंद करा"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "नमुना"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "लेबल"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "शुक्रवार"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "शुक्रवार"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "चूक सावधान"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "दिशा"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "चूक सावधान"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "दिशा"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "आत"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "रूपरेषा"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "उजवे"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "आत"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "समाविष्ट करा"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "ओळ"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "रूपरेषा"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "लेबल्स"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "प्रकार:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "पाठवा"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "शिर्षक"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "शुक्रवार"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "पॉइंट"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "उंची"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "बरोबर"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "चूक सावधान"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "नमुना"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "रंग:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "रकान्याची रूंदी"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "बरोबर"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "ग्राफ गुरू"
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "साफ"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "नाव"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "हेडरला व्यवहारित करा"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "समाविष्ट करा"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "प्लॉट प्रकार"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "किंवा"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "दिशा"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "नमुना"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "नमुना"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"दाखवा\n"
+"नमुना"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "वर्णन"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "विषय"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "डाटा"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "प्लॉट प्रकार"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "प्लॉट प्रकार"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "आत"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "ओळ"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "पॉइंट"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr ""
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "फॉन्ट"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "स्टाइल (प्रकार)"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "रूपरेषा"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "रंग"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "रूपरेषा_खाली"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "नमुना"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "आकार"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "स्टाइल (प्रकार)"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "प्रकार:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "पार्श्वभुमी"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "भाग"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "आणि"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "रंग"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "बरोबर"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "फॉरग्राउंड"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "नमुना"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "निवड करा (_S)"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "आकार"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "दर्जा"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "उजवे"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "विकल्प"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "डिफॉल्ट"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "इटालिक"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:77
+#, fuzzy
+msgid "Chinese"
+msgstr "चिस्क"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "हिरवा"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "बूलियन"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:85
+#, fuzzy
+msgid "Unicode"
+msgstr "दाखवा"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "पश्चिम"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "ऑक्टोबर"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "अधोरेखन वापरा"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "तर्कशुद्ध"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "पिअरसन सहसंबंधी"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "काळा"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "रविवार"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "श्रेणी"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "मोठे"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "निळा"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "लाल"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "श्रेणी"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "वेळ"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "शुक्रवार"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "पिवळे"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "हिरवा"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "हायपरलिंक"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "उजवीप्रमाणे क्रमाने लावा"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "उजवीप्रमाणे क्रमाने लावा"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "उजवीप्रमाणे क्रमाने लावा"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "शुभ्र"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "मूल्या प्रमाणे"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "रिती"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "फूटरला  व्यवहारित करा"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "सावलीचा प्रकार"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "दिशा"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+#, fuzzy
+msgid "Dock the toolbar"
+msgstr "टूलबार कसा तयार करायचा"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "टूलबार कसा तयार करायचा"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, fuzzy, c-format
+msgid "Unable to open file '%s'"
+msgstr "चिकटवता आले नाही"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "छोटी वर्तुळे"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "चित्र...(I)"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "चित्राला समाविष्ट करा"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "संग्रहित करा"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "सूचना_प्रकार"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "सामान्य"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "मोठे"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "इटालिक"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+#, fuzzy
+msgid "Font style:"
+msgstr "फॉन्टचा आकार"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+#, fuzzy
+msgid "Font:"
+msgstr "फॉन्ट"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "पूर्वावलोकन"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "आकार"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "संख्या"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "मुद्रा"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "हिशोब"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "दिनांक"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "वेळ"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "टक्के"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "भाग"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "वैज्ञानिक"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "विषय"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "विशेष"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "रिती"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "अस्विकारित संख्या रूपरेषा"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "संख्या रूपरेषा"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "वर्ग"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "दशांश स्थान"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "दाखवा"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "मूल्याला जसे पाठवलेले तसे दाखवा"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "रकान्यांना बदला"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "अस्विकारित संख्या रूपरेषा"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "पूर्वावलोकन"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "रूपरेषा"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "1000's साठी विभाजक वापरा"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr ""
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "सध्याचे नाव"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "आंतरिक रिकामी जाग़ा"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*रवि"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*सोम"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*मंगळ"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*बुध"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*गुरू"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*शुक्र"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*शनि"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "रविवार"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "सोमवार"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "मंगळवार"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "बुधवार"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "गुरुवार"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "शुक्रवार"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "शनिवार"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*जाने"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*फ़ेब्रु "
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*मार्च"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*एप्रि "
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*मे"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*जून"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*जुलै"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*ऑग"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "* सप्टें "
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*ऑक्टो"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*नोव्हें"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*डिसें"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "जानेवारी"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "फेब्रुवारी"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "मार्च"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "एप्रिल"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "मे"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "जून"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "जुलै"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "ऑगस्ट"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "सप्टेंबर"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "ऑक्टोबर"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "नोव्हेंबर"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "डिसेंबर"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "बरोबर"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "चुक"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "काळा"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "निळा"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr ""
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "हिरवा"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr ""
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "लाल"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "शुभ्र"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "पिवळे"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "यादित"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "कधीच नाही"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "पक्के"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "स्वयंचलित"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "कधीच नाही"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr ""
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "श्रेणी"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "रूपरेषा_डावीकडे"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr ""
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "लिंक चिकटवा"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% राखाडी"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% राखाडी"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% राखाडी"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% राखाडी"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% राखाडी"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "आडवी रेषा"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "उभी पट्टी"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "ऊलटी कोणीय रेषा"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "कोणीय पट्टी"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "कोणीय क्रॉसहॅच"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "जाड कोणीय क्राॅसहॅच"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "बारिक उभी ओळ"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "बारिक उभी पट्टी"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "बारिका उलटी कोणीय पट्टी"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "बारिक कोणीय पट्टी"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "बारिक आडवी क्रॉसहॅच"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "बारिक कोणीय क्रॉसहॅच"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "फॉरग्राउंड पक्के"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "छोटी वर्तुळे"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "अर्धवर्तुळ"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "छप्पर"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "मोठे वर्तूळ"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "लेबल्स"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "मूल्य"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "चूक सावधान"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_अल्फा:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "ओळ"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "रकाने वगळा"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "टक्के"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "रकाने वगळा"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "रकाने वगळा"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "रकाने वगळा"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Area"
+msgstr "प्रांत"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "प्रांत"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+#, fuzzy
+msgid "Column"
+msgstr "रकाना"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "ओळ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "ओळ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "टक्के"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "टक्के"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "रकाने वगळा"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "टक्के"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "टक्के"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "टक्के"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "स्त्रोत भाग"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "रकाने वगळा"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "पॉइंट"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "पॉइंट"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "पॉइंट"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "पॉइंट"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "टॅबचे रंग बदलणे"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "प्लॉट प्रकार"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "क्रमबद्ध करा"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "डिग्रीस"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "हजारांचा विभाजक"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "फॉन्टचा आकार"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "पूर्वावलोकन"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "उजवे"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "वेगळे करा"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "वेगळे करा"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "पॉइंट"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "टक्के"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "प्रमाणित रूंदी"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "पुर्ण संख्या"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "मोजा"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "स्त्रोत"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr ""
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "स्त्रोत भाग"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "स्त्रोत भाग"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "ंमध्यभागी"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "स्त्रोत"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "दुप्पट"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "दुप्पट"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "चूक सावधान"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "चूक सावधान"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "ओळ"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "पॉइंट"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "ओळ"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ms.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ms.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ms.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4307 @@
+# Galeon Bahasa Melayu (m encoding="UTF-8"s)
+# Jika takut risiko, Jangan bicara tentang Perjuangan
+# Hasbullah Bin Pit (sebol) <sebol at ikhlas.com>, 2001
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Gnumeric HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-07-23 23:51+0800\n"
+"Last-Translator: Hasbullah Bin Pit <sebol at ikhlas.com>\n"
+"Language-Team: Projek Gabai <gabai-penyumbang at lists.sourceforge.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "_Objek..."
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "nama tidak diketahui"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr ""
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "nama plugin tidak diketahui."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin tidak mempunyai no id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Ralat bila mengaktifkan kebergantungan plugin."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nama fail modul tidak diberi"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Tak dapat membuka fail modul \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Fail module \"%s\" mempunyai format tidak sah."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Fail tidak mengandungi simbol (\"plugin_file_struct\" )."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Tak dapat menutup fail modul \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Fail tidak mengandungi fungsi \"%s\". "
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Umum"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Pembuka fail - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Ralat berlaku bila membaca fail."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Ralat berlaku ketika menyimpan fail ."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Pemuat plugin"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Pemuat GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Ralat membaca maklumat servis."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formula"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Inden"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Cari "
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Ruang"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Jajaran"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Operator tidak diketahui"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Saiz Masalah"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Linear"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logik"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Sorok Perincian"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatik"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategori:"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "LatarBelakang"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Max"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "_Tutup"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Label"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Jumaat"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Jumaat"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Corak"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Corak"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Tak selamat"
+
+# ui/galeon.glade.h:134
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "_Fail"
+
+# ui/galeon.glade.h:268
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "_Tinggi..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Tak selamat"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "Sel_it"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "Ba_ris"
+
+# ui/galeon.glade.h:134
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "_Fail"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Label"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Jenis:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Kirim"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Tajuk:"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "Jumaat"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "_Plot"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+# ui/galeon.glade.h:268
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "_Tinggi..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "_Dengan:"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Sampel"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Warna:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Lebar Garisan"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Dengan:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "_Graf..."
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "Carta%d"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nama"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Personalisasi pengepala"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Sel_it"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Jenis Plot"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Sempadan"
+
+# ui/galeon.glade.h:247
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Opsyen"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Corak"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Papar\n"
+"Samel"
+
+# ui/galeon.glade.h:247
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Huraian"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "Teks alt"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_Data"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "_Siri"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Nama plot"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Jenis Plot"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Inden"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_Rentetan"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Titik"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dR x %dC"
+
+# src/prefs.c:618
+# ui/galeon.glade.h:140
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Font"
+
+#: goffice/graph/gog-style.c:966
+#, fuzzy
+msgid "Style"
+msgstr "_Gaya"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Corak"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Pralihat cetakan"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Warna:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "_Warna:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "Ter_kongsi"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Saiz:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Gaya:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "Jenis:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "LatarBelakang"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Direktori"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "_Dan"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Warna _Isian:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "_Muatkan ke:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Latar Depan"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Corak"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_Pilih"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Saiz:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "Status"
+
+# ui/galeon.glade.h:268
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "Ka_nan"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "kelabu gelap"
+
+# src/prefs.c:618
+# ui/galeon.glade.h:140
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "Laporan"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr ""
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arab"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltik"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Eropah Tengah"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Greek"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "India"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Jepun"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Korea"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turki"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnam"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Barat"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Lain-lain"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Ditakrif Pengguna"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Lokaliti:"
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Hala Pertukaran"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "hitam"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "Isnin"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "jingga kemerahan"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "emas"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Nilai Sel"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "biru"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "kelabu gelap"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "merah"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "jingga"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "masa"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "kelabu"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "kuning"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "hijau"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "merahjambu"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "jingga cair"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "hijau cair"
+
+# ui/galeon.glade.h:268
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "cyan cair"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "putih"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "Nilai"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "tersendiri"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Warna Tersendiri:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Bayang"
+
+# ui/galeon.glade.h:247
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Opsyen"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Tak dapat membuka fail '%s'"
+
+# ui/galeon.glade.h:134
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Fail"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "_Imej..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Pilih satu fail imej"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Simpan Semua"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Jenis fail:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"adalah nama direktori"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Anda tidak mempunyai keizinan untuk menyimpan ke\n"
+"%s."
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Bukukerja %s sudah ada.\n"
+"Adakah anda ingin menyimpan ke atasnya?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Bold"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Italik"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Gaya font:"
+
+# src/prefs.c:618
+# ui/galeon.glade.h:140
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Font:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+#, fuzzy
+msgid "Preview"
+msgstr "Pralihat cetakan"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Saiz:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Nombor"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Matawang"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Perakaunan"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Tarikh"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Masa"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Peratus"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Pecahan"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Saintifik"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Teks"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Istimewa"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Tersendiri"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format Nombor Negatif"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Format Nombor"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Kategori:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Te_mpat perpuluhan:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Borang"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Terap Format _Nombor"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Prebiu:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_imbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Eropah Barat"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Eropah Timur"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr ""
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Afrikaan Afrika Selatan (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Emeriah Arab Bersatu (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Belarus (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealand (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filifina (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Inggeris Afrika Selatan (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Sepanyol (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Sepanyol/Basque (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Lokaliti Semasa:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Jarak Ruang Penunjuk"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Ahd"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Isn"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Sel"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Rab"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Kha"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Jum"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sab"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Ahad"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Isnin"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Selasa"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Rabu"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Khamis"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Jumaat"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sabtu"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mac"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mei"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Ogo"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dis"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Januari"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Febuari"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Mac"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mei"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Jun"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Julai"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Ogos"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Disember"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "BENAR"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "PALSU"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Hitam"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Biru"
+
+#: goffice/utils/format.c:759
+#, fuzzy
+msgid "Cyan"
+msgstr "cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Hijau"
+
+# ui/galeon.glade.h:176
+#: goffice/utils/format.c:761
+#, fuzzy
+msgid "Magenta"
+msgstr "magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Merah"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Putih"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Kuning"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Emeriah Arab Bersatu, Dirham"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, Leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria, Leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, Dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Belarus, Ruble"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, Peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croatia, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hungary, Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia, Rupiah"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, Rupee"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, Rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, Yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (Utara), Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (Selatan), Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, Rupee"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysia, Ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, Dollar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norway, Krone"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "New Zealand, Dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, Rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua New Guinea, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Philippines, Peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, Rial"
+
+# ui/galeon.glade.h:272
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania, Lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russia, Ruble"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychelles, Rupee"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, Dinar"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Saint Helena, Pound"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenia, Tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakia, Koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, Shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syria, Pound"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, Emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand, Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turkey, Liras"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraine, Hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Viet Nam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+#, fuzzy
+msgid "Palladium, Ounces"
+msgstr "Palladium Ounces"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, Ounce"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, Rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "South Africa, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Tiada"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Tegar"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatik"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Tiada"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Median"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "julat"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "fail"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Tepek Pautan"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "Mac"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Kelabu"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Kelabu"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Kelabu"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+#, fuzzy
+msgid "Foreground Solid"
+msgstr "Latar Depan"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Label"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Nilai"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Ralat menghantar baris"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+# ui/galeon.glade.h:3
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "Jumlah"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Plot"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Plot"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Sembunyi kolum"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "_Kolum"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Sembunyi kolum"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Sembunyi kolum"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Kawasan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "_Kawasan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolum"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Garisan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Garisan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "Bar Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Bar Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Kolum Peratusan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "_Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "Bar Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Kolum Peratusan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Bar Bertindan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Bar Bertindan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "_Kolum"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Bar Bertindan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Bar Bertindan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "_Kolum"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Bar Bertindan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Peratus"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Bar Bertindan"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Nama font default"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Pengepala baris dan ko_lum"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Katalaluan tidak sah"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "_Plot"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Ralat menghantar baris"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Menukar Warna Tab"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Nama font default"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Plot"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Tiada"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "darjah"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "_Cari :"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Kategori:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Pai 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Tapak"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Banyak ralat"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Banyak ralat"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Pai"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "Range"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Tapak"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Tapak"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Plot"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Plot"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Bar Peratus"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "_Lebar Piawai"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Bar Bertindan"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Nama font default"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Ralat menghantar baris"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "nombor"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Kira"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Sumber"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Ralat menghantar baris"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Sumber"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Sumber"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% drpd saiz _normal"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Tarikh"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Sumber"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Plot"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Selesai"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Selesai"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Ralat menghantar baris"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Ralat menghantar baris"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Bar Bertindan"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Garisan"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Titik"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Garisan"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nb.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nb.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nb.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4172 @@
+# Norwegian (bokmål dialect) translation of gnumeric.
+# Copyright (C) 1998-2004 Free Software Foundation, Inc.
+# Kjartan Maraas <kmaraas at gnome.org>, 1998-2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-02-15 00:04+0100\n"
+"Last-Translator: Kjartan Maraas <kmaraas at gnome.org>\n"
+"Language-Team: Norwegian <i18n-nb at lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Lagring over gamle filer av denne typen er deaktivert for sikkerhets skyld."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Du kan slå av dette sikkerhetstiltaket ved å redigere den relevante .xml-"
+"filen."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektiv"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Filen inneholder informasjon om tillegg med ugyldig id (%s), forventet %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Kan ikke lese informasjon om tillegg fra fil."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Ukjent navn"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Ikke-støttet lastertype «%s»."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Feil under forberedelse av laster «%s»."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Feil under lesing info om tjeneste #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Kan ikke lese informasjonsfil for tillegg («%s»)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Filen «%s» er ikke en gyldig informasjonsfil for tillegg."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Feil under lesing av tjenester for tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Tilleggs-ID inneholder ugyldige tegn (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Ukjent navn på tillegg."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Ingen laster definert, eller ugyldig id, for tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Tillegget har ingen id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Feil under initiering av tilleggslaster («%s»)."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Fant løkke i tilleggsavhengigheter."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Kunne ikke aktivere tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Kunne ikke finne tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Feil ved aktivering av tilleggsavhengigheter."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Feil under aktivisering av tilleggstjeneste #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Feil under deaktivering av tileggstjeneste #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Kan ikke laste tilleggslaster."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Kunne ikke laste tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Feil under lasting av tilleggsavhengigheter."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Det oppsto feil under lesing av informasjon om tillegg fra filen «%s»."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikke aktivere tillegg «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikke deaktivere tillegg «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Feil under lesing av info om tilgjengelige tillegg."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Feil ved deaktivering av tillegg som ikke lenger finnes på disk."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Følgende tillegg er ikke på disk lenger, men er fremdeles aktive:\n"
+"%s.\n"
+"Du bør starte Gnumeric på nytt nå."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Feil under aktivisering av tillegg."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Feil under initiering av systemet for tillegg."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Tjeneste «%s» er ikke støttet av laster."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Modulens filnavn er ikke oppgitt."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Kunne ikke åpne modulfil «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Modulfil «%s» har ugyldig format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Filen inneholder ikke («plugin_file_struct» symbolet)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Filen har et ugyldig magisk nummer."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Tillegg versjon «%s» er forskjellig fra applikasjonen «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamisk lasting av moduler er ikke støttet i dette systemet."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Kunne ikke lukke modulfil «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Filen inneholder ikke «%s»-funksjonen."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modulen inneholder ikke «%s»-funksjonen."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Feil under lasting av tilleggstjeneste."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Initiering av funksjon i tillegg returnerte en feil."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Oppryddingsfunksjon  i tillegg returnerte en feil."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Generelt"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Filåpner har ingen beskrivelse"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Filåpner - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Feil under lesing av fil."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Fillagrer har ingen beskrivelse"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Fillagrer - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Feil under lagring av fil."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Tilleggslaster"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject-kaster"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Ingen «type»-attributt på «service»-element."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Ukjent tjenestetype: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Feil ved innlesing av beskrivelse av tjeneste."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Vi må laste tjenesten før den aktiveres (PLUGIN_ALWAYS_LOAD er satt) men "
+"lasting feilet."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formler"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Rykk _inn:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Søk etter"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Mellomrom"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Justering"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Sitatte_gn:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Problemstørrelse"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Lineær"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detaljer"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatisk"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Grenser"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_aks"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Kryss"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etikett"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Markør</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Linje</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Skriv ut</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Posisjon</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nnenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Utenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Høy"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Innenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Vend akse"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Lav"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Utenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Vis etiketter"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Bakgrunn"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Tittel"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Rutenett"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-akse"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-akse"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-akse"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Plott"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Høyde"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Bredde"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Feilkategori</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Verdier</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Fa_rge:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "S_kjerm:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Ingen\n"
+"Absolutt\n"
+"Relativ\n"
+"Prosent"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Linjebredde:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Bredde:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graf"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Plott"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Navn"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Steg 1 av 2: Velg type graf"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Steg 2 av 2: tilpass graf"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Tilpass graf"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Sett _inn"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Type _plott"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME Office graf"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Rekkefølge"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definisjon</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Mønster</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Vis\n"
+"Eksempel"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Beskrivelse"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Rekker"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Plottemotor"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Type plott"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Indeks:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Innstillinger"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punkt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Skrift"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 farger\n"
+"lyststyrke"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Fyll</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linje</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Markør</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Omriss</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "_Farge:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Ingen\n"
+"Mønster\n"
+"Gradient\n"
+"Bilde"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Farge for _omriss:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Form:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "St_ørrelse:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "St_il:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ype:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Bakgrunn:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "Re_tning:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "Sl_utt:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Fyllfarge:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Tilpass:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Forgrunn:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Mønster:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Velg..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Størrelse:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Start:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_lysere"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_mørkere"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "punkter"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"strukket\n"
+"bakgrunn"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Forvalg"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltisk"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Sentral-europeisk"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Kinesisk"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Kyrillisk"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Gresk"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebraisk"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indisk"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japansk"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreansk"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Tyrkisk"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamesisk"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Vestlig"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Annet"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabisk (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabisk (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisk (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabisk (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabisk (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabisk (MacArabian)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisk (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armensk (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisk (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisk (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisk (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltisk (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Sentraleuropeisk (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Sentraleuropeisk (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Sentraleuropeisk (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Sentraleuropeisk (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Kinesisk, forenklet (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Kinesisk, forenklet (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Kinesisk, forenklet (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Kinesisk, forenklet (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Kinesisk, forenklet (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Kinesisk, tradisjonell (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Kinesisk, tradisjonell (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Kinesisk, tradisjonell (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Kroatisk (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrillisk (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrillisk (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrillisk (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrillisk (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Kyrillisk (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrillisk (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russisk (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainsk (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainsk (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Engelsk (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgisk (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Gresk (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Gresk (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Gresk (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebraisk (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebraisk (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebraisk (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebraisk (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebraisk (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevangari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandsk (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japansk (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japansk (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japansk (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Koreansk (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Koreansk (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Koreansk (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Koreansk (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordisk (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumensk (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumensk (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Syd-europeisk (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Tyrkisk (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Tyrkisk (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Tyrkisk (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Tyrkisk (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Brukerdefinert"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamesisk (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamesisk (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamesisk (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamesisk (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Vestlig (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Vestlig (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Vestlig (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Vestlig (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Vestlig (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Konverteringsretning"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Denne verdien bestemmer hvilke iconv-tester som skal utføres."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "sort"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "lys brun"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "gullbrun"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "mørk grønn #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "marine"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "mørk blå"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "purpur #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "meget mørk grå"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "mørk rød"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "rød-oransje"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "gull"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "mørk grønn"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "rund blå"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blå"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "rund purpur"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "mørk grå"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "rød"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "oransje"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "lime"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "rund grønn"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "rund blå #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "himmelblå #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "purpur"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grå"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "lys oransje"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "gul"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "grønn"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "lys blå"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "rød-purpur"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "lys grå"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "lys oransje"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "lys gul"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "lys grønn"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "lys cyan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "lys blå"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "lys purpur"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "hvit"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "purpuraktig blå"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "mørk purpur"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "himmelblå"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "egendefinert"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Egendefinert farge..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Skyggetype"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientering"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Foretrukket bredde"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Foretrukket høyde"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Kunne ikke åpne fil '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Alle filer"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Bilder"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Velg et bilde"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Lagre som"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Fil_type:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Filnavnet er ikke riktig for denne filtypen. Vil du bruke dette navnet "
+"likevel?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"er et katalognavn"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Du har ikke rettigheter til å lagre til\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"En fil med navn <i>%s</i> eksisterer allerede i %s.\n"
+"\n"
+"Vil du overskrive den?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Uthevet"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Fet kursiv"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kursiv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stil for skrift:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Skrift:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Forhåndsvisning"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Størrelse:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Tall"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Regnskap"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Dato"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Tid"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Prosent"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Brøk"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Vitenskapelig"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Tekst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Spesiell"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Egendefinert"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format for negativt tall"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Tallformater"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegorier:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Desi_malplasser:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Vis tid på dagen."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Vis verdier i prosent."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Formatteringsk_ode:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Format for negative tall:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Forhåndsvisning:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Br_uk separator for tusener"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Vest-europa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Øst-europa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Nordamerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Syd- og sentral-amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "USA/engelsk (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sør-Afrika Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopia/Ahmarisk (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "De forente arabiske emirater (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Baharain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algerie (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypt (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/arabisk (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordan (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libya (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marokko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi-Arabia (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Aserbajdsjan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Hviterussland (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Frankrike/breton (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia-Hercegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spania/katalansk (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tjekkia (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Storbritannia/walisisk (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Danmark (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Østerrike (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgia/tysk (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Sveits/tysk (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Tyskland (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourg/tysk (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Hellas (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/engelsk (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Storbritannia (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/engelsk (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irland (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/engelsk (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealand (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filippinene (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/engelsk (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "USA/engelsk (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Sør-Afrika/engelsk (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Den dominikanske republikk (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ekvador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spaia (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexico (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "USA/spansk (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estland (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spaia/baskisk (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finnlandsk/finsk (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Færøyene (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgia/fransk (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/fransk (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Sveits/fransk (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Frankrike (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irland/gælisk (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Storbritannia/skotsk gaelisk (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spania/galisisk (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Storbritannia/manx gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Kroatia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Ungarn (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Sveits/italiensk (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italia (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/hebraisk (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grønnland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Storbritannia/kornsk (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litauen (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Latvia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Ny Zealand/maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaysia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgia/flamsk (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Nederland (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norge/nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norge/bokmål (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Frankrike/occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polen (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romania (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russland (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraina (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norge/samisk (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finnland/svensk (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Sverige (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadsjikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopia/tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filippinene/tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Tyrkia (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Russland/tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Usbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgia/walloon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "USA/yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Kina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/kinesisk (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/kinesisk (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Aktivt locale: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Meny"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Søn"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Man"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Tir"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Ons"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Tor"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Fre"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Lør"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Søndag"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Mandag"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Tirsdag"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Onsdag"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Torsdag"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Fredag"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Lørdag"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Des"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Januar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Februar"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Mars"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mai"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Juni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Juli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Desember"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "SANN"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "USANN"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Sort"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blå"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Grønn"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Rød"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Hvit"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Gul"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "De forente arabiske emirater, dirham"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "De nederlandske antillene, gylden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, dollar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, gylden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Aserbajdsjan, manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnia-Hercegovina, marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dollar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria, leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Baharain, dinarer"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, franc"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, dollar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei-Darussalam, dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasil, real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, dollar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Hviterussland, rubler"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dollar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Sveits, francs"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Kina, yuan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, pesos"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, colones"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, pesos"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Kapp Verde, escudos"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Kypros, pund"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Tjekkia, koruny"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danmark, kroner"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Den dominikanske republikk, pesos"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Aleria, dinarer"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia, krooni"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypt, pund"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, nafka"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopia, birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro-medlemsland, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, dollar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falklandsøyenes, pund"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Storbritannia, pund"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgia, lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, pund"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedis"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, pund"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, francs"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, quetzales"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, dollar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hongkong, dollar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempiras"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Kroatia, kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gourdes"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Ungarn, forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia, rupiahs"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, shekels"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, pund"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, rupi"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, dinarer"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, kroner"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, pund"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, dollar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan, dinarer"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, shilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirgisistan, som"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodsja, riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komorene, franc"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Nord-Korea, won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Sør-Korea, Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, dinarer"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Caymanøyene, dollar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kasakhstan, tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kips"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanon, pund"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri lanka, rupi"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, dollar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litauen, litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvia, lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libya, dinarer"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marokko, dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldova, lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedonia, denars"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar, kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia, tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritania, ouguiya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, liri"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, rupi"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldivene, Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwacha"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexico, peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysia, ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mosambik, meticais"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, dollar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, naira"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, gull-cordoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norge, krone"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, rupi"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "New Zealand, dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, nuevos soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Ny-Guinea, kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filippinene, peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, rupi"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polen, sloty"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, rial"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania, lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russland, rubel"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, franc"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi-Arabia, riyal"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Salomonøyene, dollar"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychellene, rupi"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dinarer"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Sverige, kroner"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore, dollar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Saint Helena, pund"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenia, tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakia, koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, gylden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome og Principe, dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, colon"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syria, pund"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand, baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadsjikistan, rubler"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manater"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisia, dinarer"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Tyrkia, lire"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad og Tobago, dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Tuvalu dollar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, nye dollar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, shilling"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraina, hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "USA, dollar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Usbekistan, sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Sølv, unser"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Gull, unser"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Øst-Karribia, dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, unser"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, unser"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen, rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslavia, nye dinarer"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Sør-Afrika, rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ingen"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Helfylt"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatisk (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ingen"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "firkant"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamant"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "trekant ned"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "trekant opp"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "trekant høyre"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "trekant venstre"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "sirkel"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "kryss"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterisk"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "søyle"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "halvlinje"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "sommerfugl"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "timeglass"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% grå"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% grå"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% grå"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% grå"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% grå"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horisontal stripe "
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Vertikal stripe"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Omvendt diagonal stripe"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonal stripe"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonal krysslinje"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Tykk diagonal krysskravering"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tynn horisontal stripe"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tynn vertikal stripe"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tynn omvendt diagonal stripe"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tynn diagonal stripe"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tynn horisontal krysskravering"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tynn diagonal krysskravering"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Helfylt forgrunn"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Små sirkler"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Halvsirkler"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Thatch"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Store sirkler"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Murstein"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etiketter"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Verdier"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Feillinjer"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "O_verlapp:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Mellomrom:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "Plottlinje"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "Plottområde"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Sidestilte søyler i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Sidestilte 3D-kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D prosentsøyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Prosentkolonner i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Stablede søyler i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Stablede kolonner i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Sidestilte søyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Sidestilte kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Område"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Områder"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Søyle"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolonne"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Linjeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Prosentområder"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Prosentsøyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Prosentkolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Prosentlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Prosentområdeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Prosentlinjeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Stablede områder"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Stablede søyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Stablede kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Stablede linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Stablet områdeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Stablet linjeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Ikke-merkede linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Ikke-merkede prosentlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Ikke-merkede stablede linjer"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Forvalgte typer 1.5d plott"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Linje-, område-, søyle- og kolonneplott"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Plott"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Ugyldig passord"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Plott"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Plott"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Plott"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Motor for bobleplott"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Endrer farge på faner"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Forvalgte typer 1.5d plott"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "grader"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separasjon:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D delt kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Delt kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Delt sirkel"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Forvalgte kaketyper"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "PlottRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "PlottRadarOmråde"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "OmrådeRadar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Prosentområdeplott."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radarplott."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Forvalgte typer 1.5d plott"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Hele tall"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Kontur"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Linjeplott."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Overflate"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "_Kildeområder:"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "_Kildeområder:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% av forvalgt størrelse"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dia_meter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Vis _negative verdier"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Over_flate"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "PlottXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "PlottBoble"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Boble"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Feil under lesing av linje"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Feil under lesing av linje"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Markører ved hvert punkt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY-linjer"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY-punkter"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XY-linjer"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D-plott"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Motor for bobleplott"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nl.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nl.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nl.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4361 @@
+# De bestandderlandse vertaling van gnumeric CVS-vers encoding="UTF-8"ie
+# Copyright (C) 1999-2002 Free Software Foundation, Inc.
+# M.Meij <M.Meij at wbmt.tudelft.nl>
+# Almer S. Tigelaar <almer1 at dds.nl>, 2001
+# Tino Meinen <a.t.meinen at chello.nl>, 2001, 2002, 2003, 2004, 2005.
+# Reinout van Schouwen <reinout at cs.vu.nl>, 2004 (kleine verbeteringen)
+#
+# TODO:
+# sneltoetsen controleren, aanvullen, completeren.
+# consistentie van functiebeschrijvingen controleren.
+# woordsamenstellingen
+# Niet Elk Woord Een Hoofdletter (hoeft niet overal worden aangepast)
+# De Nederlandse MS-Excel equivalenten voor de functienamen
+# vermelden in de beschrijving (dit zal in toekomstige versies van gnumeric
+# vanzelf worden aangepast; functienamen zullen dan vertaalbaar worden)
+#
+# ------------
+# Woordenlijst
+# ------------
+#                         LIN.AFSCHR
+#                         PRIJS.NOM
+# ACCRINT                 SAMENG.RENTE
+# ACCRINTM                SAMENG.RENTE.V
+# ADDRESS                 ADRES
+# COUPDAYS                COUP.DAGEN
+# COUPDAYSNC              COUP.DAGEN.VV
+# DB                      DB
+# DDB                     DDB
+# FV                      TW
+# INTRATE                 RENTEPERCENTAGE
+# IPMT                    ISBET
+# IRR                     IR
+# MIRR                    GIR
+# NOMINAL                 NOMINALE.RENTE
+# NPER                    NPER
+# NPV                     NHW
+# ODDFPRICE               AFW.ET.PRIJS
+# ODDFYIELD               AFW.ET.REND
+# ODDLPRICE               AFW.LT.PRIJS
+# ODDLYIELD               AFW.LT.REND
+# PMT                     BET
+# PPMT                    IBET
+# PPMT                    PBET
+# PRICEDISC               PRIJS.DISCONTO
+# PRICEMAT                PRIJS.VERVALDAG
+# PV                      HW
+# RATE                    RENTE
+# SYD                     SYD
+# TBILLYIELD              SCHATK.REND
+# VDB                     VDB
+# YIELDDISC               REND.DISCONTO
+# YIELDMAT                REND.VERVAL
+# -------------------------------------------
+# accrued interest        opgelopen rente
+# asset                   activa
+# basis                   soort_jaar
+# bond                    obligatie
+# call_put_flag           call_put_keuze
+# commodity		
+# cost                    kosten/prijs
+# cost_of_carry           
+# coupon                  coupon
+# coupon payments         coupon-uitbetalingen
+# coupon period           coupon-termijn
+# coupon rate             coupon-rente
+# deposit                 storting
+# deprication             afschrijving
+# duration                
+# expiry			expiratie
+# face value              nominale waarde
+# finance_rate            financieringsrente
+# first_period            eerste_termijn
+# first_interest          eerste_rente
+# fully vested            volgestord
+# interest rate           rentepercentage
+# internal rate of return interne rentabiliteit
+# investment              investering
+# issue                   uitgifte
+# life                    duur
+# loan                    lening
+# maturity                vervaldatum
+# modified                gewijzigde
+# net present value       netto huidige waarde
+# option                  optie
+# par value               nominale waarde
+# period                  termijn
+# periodic interest rate  discontopercentage
+# price                   prijs
+# purchase_date           aankoopdatum
+# rate                    rente
+# redemption              aflossingsprijs
+# reinvest_rate           herinvesteringsrente
+# salvage                 restwaarde
+# security                waardepapier
+# security bond           verdisconteerd waardepapier
+# settlement              stortingsdatum
+# spot                    prijs
+# strike                  koers
+# time                    resterende_looptijd
+# treasury bill           schatkistpapier
+# underlying asset        onderliggende waarde
+# values                  waarden
+# volatility              volatiliteit
+# yield                   rendement
+#
+# --------------------------------------------
+# workbook                werkmap
+# worksheet               werkblad
+# encrypted               beveiligd
+# --------------------------------------------
+# chart			grafiek (staaf-grafiek, taartgrafiek cirkelgrafiek)
+# graph			diagram  (of net andersom?)
+# mapping			schaalverdeling
+# plot			plot-tekening?
+# In Gnumeric kan een 'graph' uit meerdere gedeelten bestaan.
+# Elk gedeelte is een 'chart', en elke 'chart' kan een of
+# meerdere 'plots' bevatten.
+# tick marks		verdeling?/streepjes
+# major ticks		hoofdverdeling
+# minor ticks		onderverdeling
+#
+# locked		beveiligd-geblokkeerd? (excel gebruikt beveiligd)
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric CVS\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-01-09 02:01+0100\n"
+"Last-Translator: Tino Meinen <a.t.meinen at chello.nl>\n"
+"Language-Team: Dutch <vertaling at vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Veiligheidshalve is het opslaan over oude bestanden van dit type uitgezet."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"U kunt deze beveiliging uitzetten door het betreffende plugin.xml bestand te "
+"bewerken."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objectief"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Bestand bevat plugin-informatie met ongeldige id. (%s), %s was verwacht."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Kon de plugin informatie niet uit het bestand lezen"
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Onbekende naam"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Niet ondersteund ladertype \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Fout bij voorbereiden lader \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Fout bij lezen #%d service informatie."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Kan het info bestand (\"%s\") voor plugin niet lezen."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Bestand \"%s\" is geen geldig plugin infobestand."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Fouten bij lezen van services voor plugin met id=\"%s\"/"
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Plugin id. bevat ongeldige tekens (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Onbekende pluginnaam."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Geen lader gedefinieerd, if ongeldig id voor plugin met id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin heeft geen id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Fout bij initialiseren pluginlader (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Cyclische plugin-afhankelijkheid gedetecteerd."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Kon plugin met id=\"%s\" niet activeren."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Kon plugin met id=\"%s\" niet vinden."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Fout tijdens activeren van plugin-afhankelijkheden."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Fout bij activeren plugin service #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Fout bij deactiveren plugin service #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Kan pluginlader niet laden"
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Kon plugin met id=\"%s\" niet laden."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Fout bij het activeren van plugin afhankelijkheden."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Fouten bij lezen van plugininformatie van bestand \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Kon plugin \"%s\" (ID: %s) niet activeren."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Kon plugin \"%s\" (ID: %s) niet deactiveren."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Fouten bij lezen van informatie over beschikbare plugins."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+"Fouten tijdens deactiveren plugin die niet langer op de harde schijf staan."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"De volgende plugins staan niet langer op harde-schijf maar zijn nog wel "
+"actief:\n"
+"%s\n"
+"U moet Gnumeric nu opnieuw opstarten."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Fouten bij activeren plugins."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Fouten bij initialiseren pluginsysteem."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Lader heeft geen methode set_attributes.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Lader heeft geen methode load_base.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Service '%s' wordt niet ondersteund door lader."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Geen module-bestandsnaam gegeven."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Niet in staat om module bestand \"%s\" te openen"
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Module bestand \"%s\" heeft een ongeldig formaat."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Bestand bevat geen (\"plugin_file_struct\" symbool)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Bestand heeft een verkeerd magisch getal."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Pluginversie \"%s\" is anders dan die van programma \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamisch laden van modules wordt in dit systeem niet ondersteund."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Niet in staat om module bestand \"%s\" te sluiten."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Bestand bevat geen \"%s\" functie"
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Module bevat \"%s\" functie niet."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Fout bij activeren plugin"
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Initialiseren van functie binnen plugin gaf een foutmelding."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Schoonmaak functie binnen plugin gaf een foutmelding."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Algemeen"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Bestandsopener heeft geen beschrijving"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Bestandsopener - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Fout bij lezen bestand."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Bestandsopslag heeft geen beschrijving"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Bestandsopslag - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Fout bij opslaan bestand."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Python pluginlader"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject-lader"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Geen \"type\"-attribuut op \"service\"-element."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Onbekend servicetype: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Fout bij lezen service-informatie."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"We moeten de service laden voordat we het activeren (PLUGIN_ALWAYS_LOAD is "
+"ingesteld) maar het laden is mislukt."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "pagina's"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Inspringen:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Zoek _naar"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Scheiders-stijl"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Uitlijning"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Aanhalings_teken:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Probleem Grootte"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discreet"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Discrete schaalverdeling"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Lineair"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Lineaire schaalverdeling"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Logaritmische schaalverdeling"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Details"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatisch"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Categorieën tussen _streepjes"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Categorieën tussen _labels"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr "_Kruis bij categorie #"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Grenzen"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "_Hoofdverdeling"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "_Onderverdeling"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Kruis"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Opmaak"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Label"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "HoofdRooster"
+
+# onder-rooster
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "TussenRooster"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Hoofdverdeling</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Schaalverdeling</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Onderverdeling</b>"
+
+# was orientatie
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Positie</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "Bi_nnen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "B_uiten"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Hoog"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "B_innen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_As omkeren"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Laag"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Buiten"
+
+# de labels zijn hier getallen op de as
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Getallen tonen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Titel"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Rooster"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-as"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-as"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-as"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Circelvormige as"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Radiale as"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Tekenen"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Hoogte"
+
+# Width-Breedte
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Breedte"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Geen foutbalken weergegeven"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Positieve foutbalk weergegeven"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Negatieve foutbalk weergegeven"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Volledige foutbalk weergegeven"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Foutcategorie</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stijl</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Waarden</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "_Kleur:"
+
+# type/weergave/soort
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "_Weergave:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Geen\n"
+"Absoluut\n"
+"Relatief\n"
+"Percentage"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Lijnbreedte:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Breedte:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Diagram"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Grafiek"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Naam"
+
+# Dit zijn titels van de dialoogvensters, vandaar gebiedende wijs
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Stap 1 van 2: Kies het soort grafiek"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Stap 2 van 2: Pas de grafiek aan"
+
+# Venstertitel
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Grafiek aanpassen"
+
+# de I is een kleine letter voor de sneltoets
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Invoegen"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "_Plot type"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME-Office diagram"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "Volg_orde"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definitie</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Patroon</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stijl</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Voorbeeld"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Beschrijving"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+# Data
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Gegevens"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Series"
+
+# grafiekmotor
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Plotmotor"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Plot-type"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Grafiekthema"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Index:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Instellingen"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Lettertype"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stijl"
+
+# helheid?
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 kleuren\n"
+"Helderheid"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Vultype</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Lijn</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Markering</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Omtrek</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "K_leur:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Geen\n"
+"Patroon\n"
+"Kleurverloop\n"
+"Afbeelding"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Kleur o_mtrek:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Vorm:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Gr_ootte:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "_Stijl:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ype:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Achtergrond:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Richting:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Einde:"
+
+# vulkleur/opvulkleur
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Vulkleur:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Passen:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Voorgrond:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Patroon:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Selecteren..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Grootte:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Begin:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_lichter"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_donkerder"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "ptn"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"achtergrond\n"
+"uitgerekt"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Standaard"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabisch"
+
+# oost europees?
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltisch"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Centraal-Europees"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chinees"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cyrillisch"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grieks"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebreeuws"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indisch"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japans"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreaans"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turks"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+# trema?
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamees"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Westers"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Overige"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabisch (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabisch (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisch (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabisch (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabisch (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabisch (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisch (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armeens (ARMSCII-8)"
+
+# oost europees?
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisch (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisch (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisch (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltisch (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Centraal Europees (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Centraal Europees (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Centraal Europees (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Centraal Europees (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinees Vereenvoudigd (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinees Vereenvoudigd (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chinees Vereenvoudigd (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chinees Vereenvoudigd (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chinees Vereenvoudigd (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinees Traditioneel (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinees Traditioneel (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chinees Traditioneel (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Kroatisch (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrillisch (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrillisch (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrillisch (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrillisch (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cyrillisch (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrillisch (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russisch (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukraïns (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukraïns (MacUkraïns)<"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Engels (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgisch (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grieks (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grieks (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grieks (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreeuws (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebreeuws (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebreeuws (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebreeuws (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreeuws (Windows-1255)"
+
+# Hindoestaans?
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "IJslands (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japans (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japans (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japans (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Koreaans (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Koreaans (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Koreaans (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Koreaans (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Noors (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Roemeens (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Roemeens (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Zuid Europees (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thais (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turks (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turks (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turks (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turks (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Gebruikersbepaald"
+
+# trema?
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamees (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamees (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamees (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamees (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visueel Hebreews (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Westers (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Westers (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Westers (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Westers (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Westers (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Taalinstelling: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Conversierichting"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Deze waarde bepaalt welke iconf-test wordt uitgevoerd."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "zwart"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "lichtbruin"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "goudbruin"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "donkergroen #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "marineblauw"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "donkerblauw"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "paars #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "zeer donkergrijs"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "donkerrood"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "rood-oranje"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "goud"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "donkergroen"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "dofblauw"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blauw"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "dofpaars"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "donkergrijs"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "rood"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "orange"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "citroen"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "dofgroen"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "dofblauw #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "hemelsblauw #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "paars"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grijs"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "heloranje"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "geel"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "groen"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cyaan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "helblauw"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "rood-paars"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "lichtgrijs"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "roze"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "lichtoranje"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "lichtgeel"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "lichtgroen"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "licht cyaan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "lichtblauw"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "lichtpaars"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "wit"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "paars-blauw"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "donkerpaars"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "hemelsblauw"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "aangepast"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Aangepaste kleur..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Shaduwtype"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Oriëntatie"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Voorkeursbreedte"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Voorkeurshoogte"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Werkbalk vastmaken"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Werkbalk losmaken"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Niet in staat om bestand '%s' te openen"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Alle bestanden"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Afbeeldingen"
+
+# Kies een afbeelding/Een afbeelding selecteren
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Een afbeelding selecteren"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Opslaan als"
+
+# bestandtype?
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Bestands_type:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"De opgegeven bestandsextensie komt niet overeen met het gekozen "
+"bestandstype. Wilt u evengoed deze naam gebruiken?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"is een mapnaam"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"U heeft geen toestemming om op te slaan naar\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Een bestand <i>%s</i> bestaat al in %s.\n"
+"\n"
+"Wilt u het vervangen?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normaal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Vet"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Vet cursief"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Cursief"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Lettertypestijl:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Lettertype:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Voorbeeld"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Grootte:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Getal"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+# Financieel
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Boekhouden"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Datum"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Tijd"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Percentage"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Breuk"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Wetenschappelijk"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Tekst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Speciaal"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Aangepast"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Opmaak negatieve getallen"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Getallen opmaak"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "_Categorieën:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "_Decimalen:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Hoeveelheden weergeven in traditionele boekhoudstijl"
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Waarden weergeven en invoeren als tekenreeksen zonder interpretatie."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Geldbedragen weergeven."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Datums en optioneel ook tijden weergeven."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Numerieke waarden met een vast aantal decimalen weergeven."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Tijd weergeven."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Waarden als breuk-benadering weergeven"
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Waarden weergevan als percentages."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Waarden weergeven in machten van tien."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Opmaak_code:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Opmaak _negatieve getallen"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Voorbeeld:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbool:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Automatisch een geschikte opmaak kiezen."
+
+# BUG: wat betekent XL hier? moet dat Excel zijn? 
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Zelf een opmaak in XL-stijl opgeven "
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formaat:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Dui_zentallen scheiden door punten"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "West-Europa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Oost-Europa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Noord-Amerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Zuid & Centraal-Amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asië"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australië"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Verenigde staten/Engels (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Zuid Afrika Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Ethiopië/Amharisch (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Verenigde Arabische Emiraten (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bagrein (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algerije (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypte (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/Arabisch (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraq (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordanië (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Koeweit (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libië (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marokko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi-Arabië (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Soedan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syrië (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunesië (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbeijan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Belarus (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgarije (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/Bengaals (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Frankrijk/Bretons (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnië-Herzegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spanje/Catalaans (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tsjechische Republiek (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Groot Britanië/Welsh (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Denemarken (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Oostenrijk (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "België/Duits (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Zwitserland/Duits (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Duitsland (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburg/Duits (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Griekenland (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australië (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canada/Engels (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Groot-Brittanië (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Engels (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Ierland (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/Engels (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nieuw Zeeland (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Philippijnen (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/Engels (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Verenigde staten/Engels (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Zuid Afrika/Engels (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentinië (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chili (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominicaanse Republiek (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spanje (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexico (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Verenigde Staten/Spaans (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estland (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spanje/Baskisch (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finland/Fins (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Farör eilanden (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "België/Frans (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canada/Frans (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Zwitserland/Frans (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Frankrijk (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Ierland/Gaelic (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Groot Britannië/Scottish Gaelic (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spanje/Galicië (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Groot Britannië/Manx Gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Kroatië (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Hongarije (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenië (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesië (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "IJsland (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Zwitserland/Italiaans (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italië (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebreews (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgië (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Groenland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Groot Britannië/Cornisch (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litouwen (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Letland (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nieuw Zeeland/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedonië (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Maleisië (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "België/Vlaams (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Nederland (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Noorwegen/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Noorwegen/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Frankrijk/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polen (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazilië (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Roemenië (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rusland (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraïne/Russisch (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Noorwegen/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slowakije (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenië  (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albanië (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Joegoslavië (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finland/Zweeds (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Zweden (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadjikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Ethiopië/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Philippijnen/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turkije (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rusland/Tataars (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraïne (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Oezbekistan (uz_UZ)"
+
+# trema?
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnamees (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "België/Waals (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Verenigde Staten/Yiddisch (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "China (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chinees (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/Chinees (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Huidige taalinstelling: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Het menu met opties"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Indicatorgrootte"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Grootte van de dropdown-indicator"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indicator opvulling"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Spatiëring rondom de indicator"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Zon"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Maa"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Din"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Woe"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Don"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Vry"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Zat"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Zondag"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Maandag"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Dinsdag"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Woensdag"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Donderdag"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Vrijdag"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Zaterdag"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mei"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Januari"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Februari"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Maart"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mei"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Juni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Juli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Augustus"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "December"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "WAAR"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "ONWAAR"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Zwart"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blauw"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyaan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Groen"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Rood"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Wit"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Geel"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Verenigde Arabische Emiraten, Dirhams"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afganistan, Afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albanië, Lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenië, Drams"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Nederlandse Antillen, Gulden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentinië, Peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australië, Dollar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Gulden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbeijan, Manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnië-Herzegovina, converteerbare Marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dollar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgarije, Lev"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bagrein, Dinar"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Frank"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, Dollar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, Dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, Boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazilië, Braziliaanse Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahama, Dollar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Boetan, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswanië, Pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Belarus, Roebel"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dollar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, Dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo/Kinshasa, Congolese Frank"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Zwitserland, Frank"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chili, Peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "China, Yuan Renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, Peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Ricaanse, Colon"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, Peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Kaap Verdië, Escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cyprus, Pond"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Tsjechische Republiek, Koruna"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djiboeti, Franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Denemarken, Kroon"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominicaanse Republiek, Peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algerije, Alegerijnse dinar"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estland, Krooni"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypte, Pond"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Ethiopië, Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro Lidstaten, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, Dollar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland eilanden (Malvinas), Pond"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Verenigd Koninkrijk, Pond"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgia, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, Pond"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, Cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, Pond"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, Frank"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, Quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, Dollar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong-Kong, Dollar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Kroatië, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, Gourde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hongarije, Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesië, Roepie"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, Shekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, Pond"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, Roepie"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, Dinar"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, Rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "IJsland, Kroon"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Pond"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaika, Dollar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordanië, Dinar"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, Yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenia, Shilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kyrgyzstan, Soms"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Cambodja, Riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comoren, Frank"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (Noord), Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (Zuid), Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Koeweit, Dinar"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kaaiman eilanden, Dollar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazachstan, Tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kip"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanon, Pond"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, Rupies"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, Dollar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesoto, Maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litouwen, Litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Litouwen, Lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libië, Dinar"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marokko, Dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldavië, Lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagascar, Malagese Franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedonië, Denars"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), Kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolië, Tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, Pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritanië, Ouguiya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, Lire"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, Roepie"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maledieven, Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, Kwachas"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexico, Peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Maleisië, Ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambique, Metical"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibië, Dollar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, Nairas"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, Gouden Cordoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Noorwegen, Kroon"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, Nepalese Roepie"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nieuw Zeeland, Dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Omaan, Rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, Balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, Nuevos Soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua New Guinea, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Philippijnen, Peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, Roepie"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polen, Zlotys"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, Rial"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Roemenië, Lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rusland, Roebel"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, Rwandese Frank"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi-Arabië, Riyal"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon Eilanden, Dollar"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychellen, Roepie"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Soedan, Dinar"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Zweden, Kronen"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapor, Dollar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "St.Helena, Pond"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenië, Tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slowakije, Koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, Leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalië, Shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname, Gulden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome en Principe, Dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Colone"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syrië, Pound"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, Emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand, Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadjikistan, Roebel"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, Manats"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunesië, Dinar"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turkije, Lire"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad en Tobago, Dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Tuvalu Dollar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, Nieuwe Dollar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, Shilling"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Oekraïne, Hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Oeganda, Shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Verenigde staten van America, Dollar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, Peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Oesbekistan, Sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, Bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, Francs"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Zilver, Ons"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Goud, Ons"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Oost Caribbië, Dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Internationaal Monetair Fonds (IMF) Special Drawing Rights"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Francs"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, Ons"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, Ons"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, Riaal"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Joegoslavië, Nieuwe Dinar"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Zuid Afrika, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, Zimbabwe dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Geen"
+
+# was eerst: effen
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Egaal"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Streep"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Punt"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Streep punt"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Streep punt punt"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatisch (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "geen"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "vierkant"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "ruit"
+
+# neerwaarts
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "driehoek neer"
+
+# opwaarts
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "driehoek op"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "driehoek rechts"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "driehoek links"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "cirkel"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "kruis"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "sterretje"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "balk"
+
+# Type markering voor punten in een grafiek
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "halve balk"
+
+# diabolo
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "vlindertje"
+
+# Type markering voor punten in een grafiek
+# Diabolo?
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "zandloper"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% Grijs"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% Grijs"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% Grijs"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Grijs"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Grijs"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horizontaal gestreept"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Verticaal Gestreept"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Omgekeerd diagonaal gestreept"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonaal gestreept"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonaal gearceerd"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Dik diagonaal gearceerd"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Dun horizontaal gestreept"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Dun verticaal gestreept"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Dun omgekeerd diagonaal gestreept"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Dun diagonaal gestreept"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Dun horizontaal gearceerd"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Dun diagonaal gearceerd"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Voorgrond egaal"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Kleine cirkels"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Halve Cirkels"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Riet"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Grote cirkels"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Stenen"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Labels"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Waarden"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Foutbalken"
+
+# besloten om overal 'plot' weg te laten in de vertaling
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "BalkKolom"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+"Hoeveel de balken/kolommen overlappen als een percentage van de breedte"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "_Overlap:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Scheiding tussen groepen als een percentage van de balk/kolom-breedte"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Scheiding:"
+
+# dit is het basiswoord waar getallen achter komen.
+# het is mooier om plot weg te laten bij deze dingen:
+# dus ipv Taartplot1 enz.: Taart1
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "Lijn"
+
+# dit is het basiswoord waar getallen achter komen.
+# het is mooier om plot weg te laten bij deze dingen:
+# dus ipv Taartplot1 enz.: Taart1
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "Gebied"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D Aanliggende balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D Aanliggende kolommen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D Percentage balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D Percentage kolommen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D Gestapelde balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D Gestapelde kolommen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Aanliggende balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Aanliggende kolommen"
+
+# CHECK is dit begrijpelijk? klopt het?
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Aanliggende horizontale 3D-balken gegroepeerd per hoofd- en subcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr "Aanliggende horizontale balken gegroepeerd per hoofd- en subcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Aanliggende verticale 3D-kolommen gegroepeerd per hoofd- en subcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Aanliggende verticale kolommen gegroepeerd per hoofd- en subcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Gebied"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Gebiedgrafiek."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Gebieden"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Balk"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolom"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Lijn"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Lijngrafiek."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Lijnen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld als percentages van het subtotaal, in horizontale "
+"3D-balken, gegroepeerd naar hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld als percentages van het subtotaal, in verticale 3D-"
+"balken, gegroepeerd naar hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld als percentages van het subtotaal, in horizontale "
+"balken, gegroepeerd naar hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld als percentages van het subtotaal, in verticale "
+"balken, gegroepeerd naar hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld in horizontale 3D-balken, gegroepeerd naar "
+"hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld in horizontale balken, gegroepeerd naar "
+"hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld in verticale 3D-kolommen, gegroepeerd naar "
+"hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Subcategorieën gestapeld in verticale kolommen, gegroepeerd naar "
+"hoofdcategorie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Percentagegebieden"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Percentagebalken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Percentagekolommen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Percentagelijnen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Percentage-gebiedsgrafiek."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Percentage-lijngrafiek."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Gestapelde gebieden"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Gestapelde balken"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Gestapelde kolommen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Gestapelde lijnen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Gestapelde gebiedsgrafiek."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Gestapelde lijngrafiek."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Ongemarkeerde lijnen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Ongemarkeerde percentagelijnen"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Ongemarkeerde gestapelde lijnen"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Gebiedsplot-module"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Balk/kolom plotmodule"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Grafiek maken: balk/kolom/lijn/gebied"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Standaard 1.5d plot-types"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Lijn plotmodule"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Lijn, gebied, balk en kolom-diagrammen"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Tekenen"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Ongeldig wachtwoord"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Tekenen"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Tekenen"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Tekenen"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Balk/kolom plotmodule"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Grafiek maken : Radiale grafiek"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Standaard oppervlakgrafiek-types"
+
+# dit is het basiswoord waar getallen achter komen.
+# het is mooier om plot weg te laten bij deze dingen:
+# dus ipv Taartplot1 enz.: Taart1
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "Taart"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "Ring"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s punt %d\n"
+"Waarde %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Aantal graden kloksgewijs vanaf 3 uur"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Punten beginnen _bij:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"De standaardafstand die punten van het centrum zijn verwijderd gemeten als "
+"een percentage van de straal van de cirkel."
+
+# de schijf van vijf!
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Scheiding punten:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "Elke punt een andere _kleur"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "graden"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"De afstand waarmee deze punt van het centrum is verwijderd gemeten als een "
+"percentage van de straal van de cirkel."
+
+# afstand
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Scheiding:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Grootte cen_trum"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D Taart"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D Taart gesplitst"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Hoofdtotalen als percentages met elke punt onderverdeeld in secundaire "
+"taarten."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Hoofdtotalen als percentages met elke punt onderverdeeld in secundaire "
+"gestapelde balken."
+
+# wat is dit nu weer?
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Multi-taart"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Multi-taart-balken"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Percentage van elk deel in de ring voor elke serie met de delen van de "
+"laatste ring gesplitst."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Percentage van elk deel behorend bij de ring van de serie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Percentage van elk deel in een 3D-cirkel."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Percentage van elk deel met de 3D-punten van elkaar gescheiden."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Percentage van elk deel met de punten van elkaar gescheiden."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Percentage van elk deel."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Taart"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Taart gesplitst"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Ring gesplitst"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Grafiek maken : Taart/Ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Standaard taarttypen"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Taart en Ring grafieken"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Taart plot-motor"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Ring plot-motor"
+
+# besloten om overal 'plot' weg te laten in de vertaling
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "Radar"
+
+# dit is het basiswoord waar getallen achter komen.
+# het is mooier om plot weg te laten bij deze dingen:
+# dus ipv Taartplot1 enz.: Taart1
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "Radargebied"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Radargebied"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Radargebiedgrafiek."
+
+# met punten/markeringen
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Radar met punten"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Radargrafiek met puntjes."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radargrafiek."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Grafiek maken : Radiale grafiek"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Standaard radargrafiek-types"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Radargebied plot-motor"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Radar plot-motor"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Radiale/Radar grafiek"
+
+# aantal punten
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "_Aantal punten:"
+
+# plot niet meevertalen!
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "Contour"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Contour"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Contourgrafiek."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Oppervlak"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Contourgrafiek-module"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Oppervlakgrafieken"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Oppervlakgrafieken"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% van normale grootte"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dia_meter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "_Negatieve waarden tonen"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Opper_vlak"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Ballonnen geschaald op"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Grootte gegeven door:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "Kleuren _wisselen per ballon"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "XY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "Ballonnen"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Ballonnen"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Y foutbalken"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "X foutbalken"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpoleren tussen mulitdimensionale punten."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Lineair interpoleren tussen multi-dimensionale punten, met markeringen bij "
+"elk punt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Lineair interpoleren tussen multi-dimensionale punten."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Markeringen bij elk punt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Multidimensionale punten met een cirkel bij elke punt."
+
+# ballonnen ipv bellen
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "X, Y en ballonnen tekenen."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY-lijnen"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY-punten"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XY-lijnen"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D plots"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2D punten plot-motor"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Ballonnen plot-motor"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Grafiek maken : XY/Punten/Balonnen"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Standaard punten-grafiektypen"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nn.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nn.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/nn.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4443 @@
+# Norwegian (nynorsk) translation of gnumeric.
+# Copyright (C) 2001-2002 Roy-Magne Mo
+# Roy-Magne Mo <rmo at sunnmore.net>, 2001-2002
+# Kjartan Maraas  <kmaraas at gnome.org>, 2001.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 0.99.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-01-19 18:06+0100\n"
+"Last-Translator: Roy-Magne Mo <rmo at sunnmore.net>\n"
+"Language-Team: Norwegian/Nynorsk <no at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Lagring over gamle filer av denne typa er ikkje mogleg av tryggleiksgrunnar."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Du kan slå av denne tryggleiksfunksjonen ved å redigere rett plugin.xml fil."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektiv"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, fuzzy, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Fila inneheld tilleggsmodul-informasjon med ugyldig id (%s), forventa %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Kunne ikkje laste tilleggsmodul-info frå fil."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Ukjend namn"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Ustøtta laster-type «%s»."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Feil ved klargjering av lastar «%s»."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Feil ved lesing av info for teneste #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Kan ikkje lese tilleggsmodulinfo frå («%s»)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Fila «%s» er ikkje ei gyldig tilleggsmodul-fil."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Feil ved lesing av tenester for tilleggsmodul med id=«%s»."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Ukjent tilleggsmodulnamn."
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Ingen lastar defingert for tilleggsmodul med id=«%s»."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Tilleggsmodul har ikkje noken id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Feil ved initialisering av tilleggsmodullastar («%s»)."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Feil ved lasting av tilleggsmodul-avhengigheiter."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Kunne ikkje kople inn tilleggsmodul «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Ingen lastar defingert for tilleggsmodul med id=«%s»."
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Feil ved lasting av tilleggsmodul-avhengigheiter."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Feil ved aktivisering av tilleggsmodul-teneste #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Feil ved deaktivering av tilleggsmodul-teneste #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Kan ikkje laste tilleggsmodul lastar."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Ingen lastar defingert for tilleggsmodul med id=«%s»."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Feil ved lasting av tilleggsmodul-avhengigheiter."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Ein feil oppstod ved lesing av tilleggsmodul-informasjon frå fil \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikkje kople inn tilleggsmodul «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikkje kople ut tilleggsmodul «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Feil ved lesing av informasjon om tilgjengeleg tilleggsmodular."
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Feil ved deaktivering av tilleggsmodul-teneste #%d."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Feil ved aktivering av tilleggsmodular."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Feil ved initisialisering av tilleggsmodulsystemet."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Teneste ikkje støtta av lastar."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Modulfilnamn ikkje gitt."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Ikkje i stand til å opne modul fila «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Modulfila «%s» har ugyldig format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Fila inneheld ikkje («plugin_file_struct» symbolet)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Fila har feil magisk nummer."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Tilleggsmodul versjon «%s» er forskjellig frå programmet «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamisk modullasting er ikkje støtta på dette systemet."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Ikkje i stand til å lukke modulfil «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Fila inneheld ikkje «%s» funksjon."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modulen inneheld ikkje «%s» funksjonen."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Feil ved lasting av pluggin teneste."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Initialiseringsfunksjon i pluggin-modul returnerte feil."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Opprenskingsfunksjon i pluggin-modul returnerte feil."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Allment"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Filopnar med id=«%s» har ikkje nokon skildring"
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "Filopnar har ikkje nokon id"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Feil ved lesing av fil."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Fillagrar med id=«%s» has ikkje nokon skildring."
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Fillagrar har ikkje nokon id"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Feil ved lagring av fil."
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Python tilleggsmodullastar"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Objektiv verdi"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Ukjent ark «%s»"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Feil ved lesing av info for teneste #%d."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formlar"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Rykk _inn:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Søk etter"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Mellomrom"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Justering"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Siterin_gsteikn:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Linje"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detaljar"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatisk"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategori"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Grenser"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_inimum"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_aks"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "L_ukk"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etikett"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Fredag"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Fredag"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Mønster"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Førehandsvisning"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Mønster"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Førehandsvisning"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "I_nnside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Oversikt"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Høg"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Innside"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "Set _inn"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_LÃ¥g"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Oversikt"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Etikettar"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Forklaring"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Tittel"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Rutenett"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-akse"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-akse"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-akse"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Høgd"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "B"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Breidd"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Feilmelding"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Førehandsvisning"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Verdiar</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Fa_rge:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Linjebreidd:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Breidd:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graf"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Diagram"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Namn"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Steg 1 av 2: Vel graftype"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Steg 2 av 2: Tilpass graf"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Tilpass graf"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Set _inn"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Plott namn"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "_Omsorter ..."
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definisjonar</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Mønster</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Førehandsvisning"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Prøve"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Skildring"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "Seriar"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Plott namn"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Plott namn"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Innrykk"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Innstillingar"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punkt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Skrifttype"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Førehandsvisning"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Line</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Mønster"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Førehandsvisning"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "_Farge:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Farge _på omriss:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "Område :"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Storle_ik:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "St_il:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ype:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Bakgrunn:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Slutt:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Fyllfarge:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Tilpass til:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Framgrunn:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Mønster:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Vel..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Storleik:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Start:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "Høg_re"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "Tabell"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "punkt"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+#, fuzzy
+msgid "Default"
+msgstr "Slett"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltisk"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Sentraleuropeisk"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Kinesisk"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Kyrillisk"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Gresk"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebraisk"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indisk"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japansk"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreansk"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Tyrkisk"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamesisk"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Vestlig"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Annan"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Brukjardefinert"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale:"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Pearson korrelasjon"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "svart"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "MÃ¥ndag"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "Område"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "gull"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Celleverdi"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blå"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "Tabell"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "raud"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "oransje"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grå"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "gul"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "grøn"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Høgrejustering"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Høgrejustering"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Høgrejustering"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "kvit"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "Vilkårleg verdi"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "eigendefinert"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Tilpass botntekst"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Skugge"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Retning"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Kopier vald område til klippebord"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Kan ikkje opne fila «%s»"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Alle filer"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Bilete"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Vel eit bilete"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Lagre som"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Fil_type:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"er eit katalognamn"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Du har ikkje skriveløyve til fila:\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Arbeidsboka %s finnast allereide.\n"
+"Vil du skrive over den?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Vanleg"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Feit"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Feit kursiv"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kursiv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Skriftstil:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Skrifttype:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Førehandsvisning"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Storleik:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Nummer"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Rekneskap"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Dato"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Tid"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Prosent"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Brøk"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Vitskapleg"
+
+#: goffice/gtk/go-format-sel.c:83
+#, fuzzy
+msgid "Text"
+msgstr "Te_kst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Spesial"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Eigendefinert"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Negativt tal:"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "Bruk _nummerformat"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegoriar:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Desi_malteikn:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "Europesk valutaeining"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Vis _omriss"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Vis verdien eksakt som den vart skriven inn"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Negativt tal:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Førehandsvisning:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Bruk skiljelinje for tusnenar"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "Vest"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "Sentrer på side"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sør-Afrikansk rand"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Bahraini dinar"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "Jordansk dinar"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwaiti dinar"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "Libysk dinar"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi Arabisk riyal"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisisk dinar"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Kviterussisk ruble"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgarsk lev"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladeshi taka"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tjekkisk Koruna"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+#, fuzzy
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourg franc"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealandsk dollar"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "Filipinsk peso"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "Sør-Afrikansk rand"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Argentinsk peso"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Chilensk peso"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Colombiansk peso"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rican colon"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikansk peso"
+
+#: goffice/gtk/go-locale-sel.c:164
+#, fuzzy
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador sucre"
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Prøving"
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "Guatemalan quetzal"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "Honduran lempira"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "Meksikansk peso"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+#, fuzzy
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador colon"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "Uruguansk peso"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "Venezuleansk bolivar"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Prøving"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "Indonesisk rupiah"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+#, fuzzy
+msgid "The Netherlands (nl_NL)"
+msgstr "Nederlandsk guilder"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "Slovensk tolar"
+
+#: goffice/gtk/go-locale-sel.c:227
+#, fuzzy
+msgid "Slovenia (sl_SI)"
+msgstr "Slovensk tolar"
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Albansk lek"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslavisk dinar"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "Pakistansk rupee"
+
+#: goffice/gtk/go-locale-sel.c:235
+#, fuzzy
+msgid "Thailand (th_TH)"
+msgstr "Thai baht"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistansk rupee"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Noverande verdi:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Meny"
+
+#: goffice/gtk/go-optionmenu.c:198
+#, fuzzy
+msgid "The menu of options"
+msgstr "Val for Oaf"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Intern feil"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Sun"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*MÃ¥n"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Tys"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Ons"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Tor"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Fre"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Lau"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Søndag"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "MÃ¥ndag"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Tysdag"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Onsdag"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Torsdag"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Fredag"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Laurdag"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Des"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Januar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Februar"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Mars"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mai"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Juni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Juli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Desember"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Svart"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blå"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Grøn"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Raud"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Kvit"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Gul"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+#, fuzzy
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistansk afghani"
+
+#: goffice/utils/formats.c:391
+#, fuzzy
+msgid "Albania, Leke"
+msgstr "Albansk lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+#, fuzzy
+msgid "Netherlands Antilles, Guilders"
+msgstr "Netherlands Antillian guilder"
+
+#: goffice/utils/formats.c:394
+#, fuzzy
+msgid "Angola, Kwanza"
+msgstr "Angolsk ny kwanza"
+
+#: goffice/utils/formats.c:395
+#, fuzzy
+msgid "Argentina, Pesos"
+msgstr "Argentinsk peso"
+
+#: goffice/utils/formats.c:396
+#, fuzzy
+msgid "Australia, Dollars"
+msgstr "Australsk dollar"
+
+#: goffice/utils/formats.c:397
+#, fuzzy
+msgid "Aruba, Guilders"
+msgstr "Arubisk guilder"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+#, fuzzy
+msgid "Barbados, Dollars"
+msgstr "Barbados dollar"
+
+#: goffice/utils/formats.c:401
+#, fuzzy
+msgid "Bangladesh, Taka"
+msgstr "Bangladeshi taka"
+
+#: goffice/utils/formats.c:402
+#, fuzzy
+msgid "Bulgaria, Leva"
+msgstr "Bulgarsk lev"
+
+#: goffice/utils/formats.c:403
+#, fuzzy
+msgid "Bahrain, Dinars"
+msgstr "Bahraini dinar"
+
+#: goffice/utils/formats.c:404
+#, fuzzy
+msgid "Burundi, Francs"
+msgstr "Burundisk franc"
+
+#: goffice/utils/formats.c:405
+#, fuzzy
+msgid "Bermuda, Dollars"
+msgstr "Bermudian dollar"
+
+#: goffice/utils/formats.c:406
+#, fuzzy
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei dollar"
+
+#: goffice/utils/formats.c:407
+#, fuzzy
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivisk boliviano"
+
+#: goffice/utils/formats.c:408
+#, fuzzy
+msgid "Brazil, Brazil Real"
+msgstr "Brasiliansk real"
+
+#: goffice/utils/formats.c:409
+#, fuzzy
+msgid "Bahamas, Dollars"
+msgstr "Bahamian dollar"
+
+#: goffice/utils/formats.c:410
+#, fuzzy
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan ngultrum"
+
+#: goffice/utils/formats.c:411
+#, fuzzy
+msgid "Botswana, Pulas"
+msgstr "Botswansk pula"
+
+#: goffice/utils/formats.c:412
+#, fuzzy
+msgid "Belarus, Rubles"
+msgstr "Kviterussisk ruble"
+
+#: goffice/utils/formats.c:413
+#, fuzzy
+msgid "Belize, Dollars"
+msgstr "Belisisk dollar"
+
+#: goffice/utils/formats.c:414
+#, fuzzy
+msgid "Canada, Dollars"
+msgstr "Kanadisk dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+#, fuzzy
+msgid "Chile, Pesos"
+msgstr "Chilensk peso"
+
+#: goffice/utils/formats.c:418
+#, fuzzy
+msgid "China, Yuan Renminbi"
+msgstr "Kinesisk yuan renminbi"
+
+#: goffice/utils/formats.c:419
+#, fuzzy
+msgid "Colombia, Pesos"
+msgstr "Colombiansk peso"
+
+#: goffice/utils/formats.c:420
+#, fuzzy
+msgid "Costa Rica, Colones"
+msgstr "Costa Rican colon"
+
+#: goffice/utils/formats.c:421
+#, fuzzy
+msgid "Cuba, Pesos"
+msgstr "Cubansk peso"
+
+#: goffice/utils/formats.c:422
+#, fuzzy
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde escudo"
+
+#: goffice/utils/formats.c:423
+#, fuzzy
+msgid "Cyprus, Pounds"
+msgstr "Kypriotisk pound"
+
+#: goffice/utils/formats.c:424
+#, fuzzy
+msgid "Czech Republic, Koruny"
+msgstr "Tjekkisk Koruna"
+
+#: goffice/utils/formats.c:425
+#, fuzzy
+msgid "Djibouti, Francs"
+msgstr "Djibouti franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+#, fuzzy
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikansk peso"
+
+#: goffice/utils/formats.c:428
+#, fuzzy
+msgid "Algeria, Algeria Dinars"
+msgstr "Algerisk dinar"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+#, fuzzy
+msgid "Egypt, Pounds"
+msgstr "Egyptisk pund"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+#, fuzzy
+msgid "Ethiopia, Birr"
+msgstr "Etiopisk birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+#, fuzzy
+msgid "Fiji, Dollars"
+msgstr "Fiji dollar"
+
+#: goffice/utils/formats.c:435
+#, fuzzy
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland Islands pund"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+#, fuzzy
+msgid "Guernsey, Pounds"
+msgstr "Sudanesisk pund"
+
+#: goffice/utils/formats.c:439
+#, fuzzy
+msgid "Ghana, Cedis"
+msgstr "Ghanesisk cedi"
+
+#: goffice/utils/formats.c:440
+#, fuzzy
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar pund"
+
+#: goffice/utils/formats.c:441
+#, fuzzy
+msgid "Gambia, Dalasi"
+msgstr "Gambisk dalasi"
+
+#: goffice/utils/formats.c:442
+#, fuzzy
+msgid "Guinea, Francs"
+msgstr "Guinea franc"
+
+#: goffice/utils/formats.c:443
+#, fuzzy
+msgid "Guatemala, Quetzales"
+msgstr "Guatemalan quetzal"
+
+#: goffice/utils/formats.c:444
+#, fuzzy
+msgid "Guyana, Dollars"
+msgstr "Guyanan dollar"
+
+#: goffice/utils/formats.c:445
+#, fuzzy
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong dollar"
+
+#: goffice/utils/formats.c:446
+#, fuzzy
+msgid "Honduras, Lempiras"
+msgstr "Honduran lempira"
+
+#: goffice/utils/formats.c:447
+#, fuzzy
+msgid "Croatia, Kuna"
+msgstr "Kroatisk kuna"
+
+#: goffice/utils/formats.c:448
+#, fuzzy
+msgid "Haiti, Gourdes"
+msgstr "Haitisk gourde"
+
+#: goffice/utils/formats.c:449
+#, fuzzy
+msgid "Hungary, Forint"
+msgstr "Ungarsk forint"
+
+#: goffice/utils/formats.c:450
+#, fuzzy
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesisk rupiah"
+
+#: goffice/utils/formats.c:451
+#, fuzzy
+msgid "Israel, New Shekels"
+msgstr "Israelsk shekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+#, fuzzy
+msgid "India, Rupees"
+msgstr "Indisk rupee"
+
+#: goffice/utils/formats.c:454
+#, fuzzy
+msgid "Iraq, Dinars"
+msgstr "Irakisk dinar"
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "Iransk rial"
+
+#: goffice/utils/formats.c:456
+#, fuzzy
+msgid "Iceland, Kronur"
+msgstr "Islandsk krone"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+#, fuzzy
+msgid "Jamaica, Dollars"
+msgstr "Jamaican dollar"
+
+#: goffice/utils/formats.c:459
+#, fuzzy
+msgid "Jordan, Dinars"
+msgstr "Jordansk dinar"
+
+#: goffice/utils/formats.c:460
+#, fuzzy
+msgid "Japan, Yen"
+msgstr "Japansk yen"
+
+#: goffice/utils/formats.c:461
+#, fuzzy
+msgid "Kenya, Shillings"
+msgstr "Kenyansk shilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+#, fuzzy
+msgid "Comoros, Francs"
+msgstr "Comoros franc"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+#, fuzzy
+msgid "Kuwait, Dinars"
+msgstr "Kuwaiti dinar"
+
+#: goffice/utils/formats.c:468
+#, fuzzy
+msgid "Cayman Islands, Dollars"
+msgstr "Cayman Islands dollar"
+
+#: goffice/utils/formats.c:469
+#, fuzzy
+msgid "Kazakstan, Tenge"
+msgstr "Pakistansk rupee"
+
+#: goffice/utils/formats.c:470
+#, fuzzy
+msgid "Laos, Kips"
+msgstr "Lao kip"
+
+#: goffice/utils/formats.c:471
+#, fuzzy
+msgid "Lebanon, Pounds"
+msgstr "Lbanesisk pund"
+
+#: goffice/utils/formats.c:472
+#, fuzzy
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka rupee"
+
+#: goffice/utils/formats.c:473
+#, fuzzy
+msgid "Liberia, Dollars"
+msgstr "Liberian dollar"
+
+#: goffice/utils/formats.c:474
+#, fuzzy
+msgid "Lesotho, Maloti"
+msgstr "Lesotho loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+#, fuzzy
+msgid "Libya, Dinars"
+msgstr "Libysk dinar"
+
+#: goffice/utils/formats.c:478
+#, fuzzy
+msgid "Morocco, Dirhams"
+msgstr "Marokkanske dirham"
+
+#: goffice/utils/formats.c:479
+#, fuzzy
+msgid "Moldova, Lei"
+msgstr "Moldoviske leu"
+
+#: goffice/utils/formats.c:480
+#, fuzzy
+msgid "Madagascar, Malagasy Francs"
+msgstr "Malagasy franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+#, fuzzy
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar kyat"
+
+#: goffice/utils/formats.c:483
+#, fuzzy
+msgid "Mongolia, Tugriks"
+msgstr "Mongolsk tugrik"
+
+#: goffice/utils/formats.c:484
+#, fuzzy
+msgid "Macau, Patacas"
+msgstr "Macau pataca"
+
+#: goffice/utils/formats.c:485
+#, fuzzy
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritanian ouguiya"
+
+#: goffice/utils/formats.c:486
+#, fuzzy
+msgid "Malta, Liri"
+msgstr "Maltesisk lira"
+
+#: goffice/utils/formats.c:487
+#, fuzzy
+msgid "Mauritius, Rupees"
+msgstr "Mauritius rupee"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+#, fuzzy
+msgid "Malawi, Kwachas"
+msgstr "Malawi kwacha"
+
+#: goffice/utils/formats.c:490
+#, fuzzy
+msgid "Mexico, Pesos"
+msgstr "Meksikansk peso"
+
+#: goffice/utils/formats.c:491
+#, fuzzy
+msgid "Malaysia, Ringgits"
+msgstr "Malaysian ringgit"
+
+#: goffice/utils/formats.c:492
+#, fuzzy
+msgid "Mozambique, Meticais"
+msgstr "Mozambique metical"
+
+#: goffice/utils/formats.c:493
+#, fuzzy
+msgid "Namibia, Dollars"
+msgstr "Liberian dollar"
+
+#: goffice/utils/formats.c:494
+#, fuzzy
+msgid "Nigeria, Nairas"
+msgstr "Nigeriansk naira"
+
+#: goffice/utils/formats.c:495
+#, fuzzy
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nikuragiansk cordoba oro"
+
+#: goffice/utils/formats.c:496
+#, fuzzy
+msgid "Norway, Krone"
+msgstr "Norsk krone"
+
+#: goffice/utils/formats.c:497
+#, fuzzy
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepalsk rupee"
+
+#: goffice/utils/formats.c:498
+#, fuzzy
+msgid "New Zealand, Dollars"
+msgstr "New Zealandsk dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+#, fuzzy
+msgid "Panama, Balboa"
+msgstr "Panamanian balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+#, fuzzy
+msgid "Papua New Guinea, Kina"
+msgstr "Papua New Guinea kina"
+
+#: goffice/utils/formats.c:503
+#, fuzzy
+msgid "Philippines, Pesos"
+msgstr "Filipinsk peso"
+
+#: goffice/utils/formats.c:504
+#, fuzzy
+msgid "Pakistan, Rupees"
+msgstr "Pakistansk rupee"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+#, fuzzy
+msgid "Paraguay, Guarani"
+msgstr "Paraguay guarani"
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "Qatarsk rial"
+
+#: goffice/utils/formats.c:508
+#, fuzzy
+msgid "Romania, Lei"
+msgstr "Rumensk leu"
+
+#: goffice/utils/formats.c:509
+#, fuzzy
+msgid "Russia, Rubles"
+msgstr "Russisk rubel"
+
+#: goffice/utils/formats.c:510
+#, fuzzy
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwandisk franc"
+
+#: goffice/utils/formats.c:511
+#, fuzzy
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi Arabisk riyal"
+
+#: goffice/utils/formats.c:512
+#, fuzzy
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon Islands dollar"
+
+#: goffice/utils/formats.c:513
+#, fuzzy
+msgid "Seychelles, Rupees"
+msgstr "Seychelles rupee"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+#, fuzzy
+msgid "Singapore, Dollars"
+msgstr "Singapore dollar"
+
+#: goffice/utils/formats.c:517
+#, fuzzy
+msgid "Saint Helena, Pounds"
+msgstr "St.Helena pund"
+
+#: goffice/utils/formats.c:518
+#, fuzzy
+msgid "Slovenia, Tolars"
+msgstr "Slovensk tolar"
+
+#: goffice/utils/formats.c:519
+#, fuzzy
+msgid "Slovakia, Koruny"
+msgstr "Slovensk tolar"
+
+#: goffice/utils/formats.c:520
+#, fuzzy
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone leone"
+
+#: goffice/utils/formats.c:521
+#, fuzzy
+msgid "Somalia, Shillings"
+msgstr "Somali shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+#, fuzzy
+msgid "Suriname, Guilders"
+msgstr "Suriname guilder"
+
+#: goffice/utils/formats.c:524
+#, fuzzy
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome and Principe dobra"
+
+#: goffice/utils/formats.c:525
+#, fuzzy
+msgid "El Salvador, Colones"
+msgstr "El Salvador colon"
+
+#: goffice/utils/formats.c:526
+#, fuzzy
+msgid "Syria, Pounds"
+msgstr "Syrian pound"
+
+#: goffice/utils/formats.c:527
+#, fuzzy
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland lilangeni"
+
+#: goffice/utils/formats.c:528
+#, fuzzy
+msgid "Thailand, Baht"
+msgstr "Thai baht"
+
+#: goffice/utils/formats.c:529
+#, fuzzy
+msgid "Tajikistan, Rubles"
+msgstr "Pakistansk rupee"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+#, fuzzy
+msgid "Tunisia, Dinars"
+msgstr "Tunisisk dinar"
+
+#: goffice/utils/formats.c:532
+#, fuzzy
+msgid "Tonga, Pa'anga"
+msgstr "Tongisk pa'anga"
+
+#: goffice/utils/formats.c:533
+#, fuzzy
+msgid "Turkey, Liras"
+msgstr "Tyrkisk lira"
+
+#: goffice/utils/formats.c:534
+#, fuzzy
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad og Tobago dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+#, fuzzy
+msgid "Taiwan, New Dollars"
+msgstr "New Taiwan dollar"
+
+#: goffice/utils/formats.c:537
+#, fuzzy
+msgid "Tanzania, Shillings"
+msgstr "Tanzanisk shilling"
+
+#: goffice/utils/formats.c:538
+#, fuzzy
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrainsk hryvnia"
+
+#: goffice/utils/formats.c:539
+#, fuzzy
+msgid "Uganda, Shillings"
+msgstr "Ugandisk shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+#, fuzzy
+msgid "Uruguay, Pesos"
+msgstr "Uruguansk peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+#, fuzzy
+msgid "Venezuela, Bolivares"
+msgstr "Venezuleansk bolivar"
+
+#: goffice/utils/formats.c:544
+#, fuzzy
+msgid "Viet Nam, Dong"
+msgstr "Vietnamese dong"
+
+#: goffice/utils/formats.c:545
+#, fuzzy
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu vatu"
+
+#: goffice/utils/formats.c:546
+#, fuzzy
+msgid "Samoa, Tala"
+msgstr "Samoansk tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+#, fuzzy
+msgid "Silver, Ounces"
+msgstr "Val for problemløysar"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+#, fuzzy
+msgid "East Caribbean Dollars"
+msgstr "Aust-karibisk dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+#, fuzzy
+msgid "Yemen, Rials"
+msgstr "Yemeni rial"
+
+#: goffice/utils/formats.c:557
+#, fuzzy
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslavisk dinar"
+
+#: goffice/utils/formats.c:558
+#, fuzzy
+msgid "South Africa, Rand"
+msgstr "Sør-Afrikansk rand"
+
+#: goffice/utils/formats.c:559
+#, fuzzy
+msgid "Zambia, Kwacha"
+msgstr "Zambian kwacha"
+
+#: goffice/utils/formats.c:560
+#, fuzzy
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ingen"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Einsfarga"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+#, fuzzy
+msgid "Dash dot"
+msgstr "Dansk krone"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatisk (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ingen"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamant"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "Område"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Disponer til høg_re"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "sirkel"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "rader"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Lim inn lenke"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*Mar"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% grå"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% grå"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% grå"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12,5% grå"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6,25% grå"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Vassrett stripe"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Loddrett stripe"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Omvendt diagonal stripe"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonal stripe"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Skrått rutenett"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Tjukk diagonal krysslinje"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tynn vassrett stripe"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tynn loddrett stripe"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tynn omvendt diagonal stripe"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tynn diagonal stripe"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tynn loddrett krysslinje"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tynn diagonal krysslinje"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Heilfyld forgrunn"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Små sirklar"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Halvsirklar"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Fletta"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Store sirklar"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Murstein"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etikettar"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Verdiar"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Feil ved lesing av linje"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Graf ..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Teikn"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Teikn"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "_Prosentar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Set inn kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Set inn kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Område"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Områder"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolonne"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Linjer som importerast:"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "_Prosentar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "_Prosentar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "_Prosentar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "_Prosentar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "_Prosentar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "_Rutenett"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Slett kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "_Rutenett"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Prosentar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "_Rutenett"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Definer namn"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Rad og kolonne overskrifter"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr ""
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Ugyldig(e) argument"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Teikn"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Feil ved lesing av linje"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Endrar formatet på %s"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Definer namn"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Teikn"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Ingenting"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Delingslinje :"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "grader"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Delingslinje :"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Kategori:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "Delelinjer"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Del opp"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Multipliser"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Multipliser"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Pris"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "_Område"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Del opp"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Del opp"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Teikn"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Teikn"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "_Prosentar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Standard feil"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Slett kolonner"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Definer namn"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Feil ved lesing av linje"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Heile tal"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Tal på"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Linjer som importerast:"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Overflate"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Feil ved lesing av linje"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Kjeldeområde"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Kjeldeområde"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% av normal storleik"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "centimeter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+#, fuzzy
+msgid "Show _negative values"
+msgstr "Vis detaljar"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Kjeldeområde"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Teikn"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Dobbel"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Dobbel"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Feil ved lesing av linje"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Feil ved lesing av linje"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Slett kolonner"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Linje"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Punkt"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Linje"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/no.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/no.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/no.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4172 @@
+# Norwegian (bokmål dialect) translation of gnumeric.
+# Copyright (C) 1998-2004 Free Software Foundation, Inc.
+# Kjartan Maraas <kmaraas at gnome.org>, 1998-2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-02-15 00:04+0100\n"
+"Last-Translator: Kjartan Maraas <kmaraas at gnome.org>\n"
+"Language-Team: Norwegian <i18n-nb at lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Lagring over gamle filer av denne typen er deaktivert for sikkerhets skyld."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Du kan slå av dette sikkerhetstiltaket ved å redigere den relevante .xml-"
+"filen."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektiv"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Filen inneholder informasjon om tillegg med ugyldig id (%s), forventet %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Kan ikke lese informasjon om tillegg fra fil."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Ukjent navn"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Ikke-støttet lastertype «%s»."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Feil under forberedelse av laster «%s»."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Feil under lesing info om tjeneste #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Kan ikke lese informasjonsfil for tillegg («%s»)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Filen «%s» er ikke en gyldig informasjonsfil for tillegg."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Feil under lesing av tjenester for tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Tilleggs-ID inneholder ugyldige tegn (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Ukjent navn på tillegg."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Ingen laster definert, eller ugyldig id, for tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Tillegget har ingen id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Feil under initiering av tilleggslaster («%s»)."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Fant løkke i tilleggsavhengigheter."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Kunne ikke aktivere tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Kunne ikke finne tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Feil ved aktivering av tilleggsavhengigheter."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Feil under aktivisering av tilleggstjeneste #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Feil under deaktivering av tileggstjeneste #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Kan ikke laste tilleggslaster."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Kunne ikke laste tillegg med id=«%s»."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Feil under lasting av tilleggsavhengigheter."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Det oppsto feil under lesing av informasjon om tillegg fra filen «%s»."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikke aktivere tillegg «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Kunne ikke deaktivere tillegg «%s» (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Feil under lesing av info om tilgjengelige tillegg."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Feil ved deaktivering av tillegg som ikke lenger finnes på disk."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Følgende tillegg er ikke på disk lenger, men er fremdeles aktive:\n"
+"%s.\n"
+"Du bør starte Gnumeric på nytt nå."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Feil under aktivisering av tillegg."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Feil under initiering av systemet for tillegg."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Tjeneste «%s» er ikke støttet av laster."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Modulens filnavn er ikke oppgitt."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Kunne ikke åpne modulfil «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Modulfil «%s» har ugyldig format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Filen inneholder ikke («plugin_file_struct» symbolet)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Filen har et ugyldig magisk nummer."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Tillegg versjon «%s» er forskjellig fra applikasjonen «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamisk lasting av moduler er ikke støttet i dette systemet."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Kunne ikke lukke modulfil «%s»."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Filen inneholder ikke «%s»-funksjonen."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modulen inneholder ikke «%s»-funksjonen."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Feil under lasting av tilleggstjeneste."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Initiering av funksjon i tillegg returnerte en feil."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Oppryddingsfunksjon  i tillegg returnerte en feil."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Generelt"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Filåpner har ingen beskrivelse"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Filåpner - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Feil under lesing av fil."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Fillagrer har ingen beskrivelse"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Fillagrer - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Feil under lagring av fil."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Tilleggslaster"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject-kaster"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Ingen «type»-attributt på «service»-element."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Ukjent tjenestetype: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Feil ved innlesing av beskrivelse av tjeneste."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Vi må laste tjenesten før den aktiveres (PLUGIN_ALWAYS_LOAD er satt) men "
+"lasting feilet."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formler"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Rykk _inn:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Søk etter"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Mellomrom"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Justering"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Sitatte_gn:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Problemstørrelse"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Lineær"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detaljer"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatisk"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Grenser"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_aks"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Kryss"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etikett"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr ""
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Markør</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Linje</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Skriv ut</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Posisjon</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nnenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Utenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Høy"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Innenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Vend akse"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Lav"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Utenfor"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Vis etiketter"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Type:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Bakgrunn"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Tittel"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Rutenett"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-akse"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-akse"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-akse"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Plott"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Høyde"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Bredde"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Feilkategori</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Verdier</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Fa_rge:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "S_kjerm:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Ingen\n"
+"Absolutt\n"
+"Relativ\n"
+"Prosent"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Linjebredde:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Bredde:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graf"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Plott"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Navn"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Steg 1 av 2: Velg type graf"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Steg 2 av 2: tilpass graf"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Tilpass graf"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Sett _inn"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Type _plott"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME Office graf"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Rekkefølge"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definisjon</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Mønster</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Vis\n"
+"Eksempel"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Beskrivelse"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Rekker"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Plottemotor"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Type plott"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Indeks:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Innstillinger"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punkt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Skrift"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 farger\n"
+"lyststyrke"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Fyll</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linje</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Markør</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Omriss</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "_Farge:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Ingen\n"
+"Mønster\n"
+"Gradient\n"
+"Bilde"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Farge for _omriss:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Form:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "St_ørrelse:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "St_il:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ype:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Bakgrunn:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "Re_tning:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "Sl_utt:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Fyllfarge:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Tilpass:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Forgrunn:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Mønster:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Velg..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Størrelse:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Start:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_lysere"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_mørkere"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "punkter"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"strukket\n"
+"bakgrunn"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Forvalg"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltisk"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Sentral-europeisk"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Kinesisk"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Kyrillisk"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Gresk"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebraisk"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indisk"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japansk"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreansk"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Tyrkisk"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamesisk"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Vestlig"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Annet"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabisk (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabisk (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabisk (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabisk (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabisk (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabisk (MacArabian)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabisk (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armensk (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltisk (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltisk (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltisk (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltisk (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Sentraleuropeisk (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Sentraleuropeisk (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Sentraleuropeisk (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Sentraleuropeisk (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Kinesisk, forenklet (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Kinesisk, forenklet (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Kinesisk, forenklet (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Kinesisk, forenklet (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Kinesisk, forenklet (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Kinesisk, tradisjonell (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Kinesisk, tradisjonell (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Kinesisk, tradisjonell (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Kroatisk (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrillisk (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrillisk (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrillisk (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrillisk (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Kyrillisk (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrillisk (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russisk (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainsk (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainsk (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Engelsk (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgisk (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Gresk (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Gresk (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Gresk (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebraisk (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebraisk (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebraisk (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebraisk (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebraisk (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevangari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandsk (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japansk (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japansk (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japansk (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Koreansk (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Koreansk (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Koreansk (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Koreansk (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordisk (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumensk (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumensk (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Syd-europeisk (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Tyrkisk (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Tyrkisk (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Tyrkisk (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Tyrkisk (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Brukerdefinert"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamesisk (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamesisk (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamesisk (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamesisk (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Vestlig (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Vestlig (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Vestlig (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Vestlig (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Vestlig (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Locale: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Konverteringsretning"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Denne verdien bestemmer hvilke iconv-tester som skal utføres."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "sort"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "lys brun"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "gullbrun"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "mørk grønn #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "marine"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "mørk blå"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "purpur #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "meget mørk grå"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "mørk rød"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "rød-oransje"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "gull"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "mørk grønn"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "rund blå"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blå"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "rund purpur"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "mørk grå"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "rød"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "oransje"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "lime"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "rund grønn"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "rund blå #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "himmelblå #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "purpur"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grå"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "lys oransje"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "gul"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "grønn"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "lys blå"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "rød-purpur"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "lys grå"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "lys oransje"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "lys gul"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "lys grønn"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "lys cyan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "lys blå"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "lys purpur"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "hvit"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "purpuraktig blå"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "mørk purpur"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "himmelblå"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "egendefinert"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Egendefinert farge..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Skyggetype"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientering"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Foretrukket bredde"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Foretrukket høyde"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Kunne ikke åpne fil '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Alle filer"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Bilder"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Velg et bilde"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Lagre som"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Fil_type:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Filnavnet er ikke riktig for denne filtypen. Vil du bruke dette navnet "
+"likevel?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"er et katalognavn"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Du har ikke rettigheter til å lagre til\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"En fil med navn <i>%s</i> eksisterer allerede i %s.\n"
+"\n"
+"Vil du overskrive den?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Uthevet"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Fet kursiv"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kursiv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stil for skrift:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Skrift:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Forhåndsvisning"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Størrelse:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Tall"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Regnskap"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Dato"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Tid"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Prosent"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Brøk"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Vitenskapelig"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Tekst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Spesiell"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Egendefinert"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format for negativt tall"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Tallformater"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegorier:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Desi_malplasser:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Vis tid på dagen."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Vis verdier i prosent."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Formatteringsk_ode:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Format for negative tall:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Forhåndsvisning:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Br_uk separator for tusener"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Vest-europa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Øst-europa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Nordamerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Syd- og sentral-amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "USA/engelsk (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sør-Afrika Afrikaans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopia/Ahmarisk (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "De forente arabiske emirater (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Baharain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algerie (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypt (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/arabisk (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordan (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libya (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marokko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi-Arabia (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Aserbajdsjan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Hviterussland (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Frankrike/breton (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia-Hercegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spania/katalansk (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tjekkia (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Storbritannia/walisisk (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Danmark (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Østerrike (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgia/tysk (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Sveits/tysk (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Tyskland (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourg/tysk (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Hellas (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/engelsk (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Storbritannia (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/engelsk (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irland (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/engelsk (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealand (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filippinene (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/engelsk (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "USA/engelsk (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Sør-Afrika/engelsk (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Den dominikanske republikk (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ekvador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spaia (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexico (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "USA/spansk (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estland (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spaia/baskisk (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finnlandsk/finsk (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Færøyene (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgia/fransk (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/fransk (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Sveits/fransk (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Frankrike (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irland/gælisk (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Storbritannia/skotsk gaelisk (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spania/galisisk (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Storbritannia/manx gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Kroatia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Ungarn (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Sveits/italiensk (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italia (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/hebraisk (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grønnland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Storbritannia/kornsk (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litauen (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Latvia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Ny Zealand/maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaysia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgia/flamsk (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Nederland (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norge/nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norge/bokmål (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Frankrike/occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polen (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romania (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russland (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraina (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norge/samisk (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslavia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finnland/svensk (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Sverige (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadsjikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopia/tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filippinene/tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Tyrkia (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Russland/tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Usbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgia/walloon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "USA/yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Kina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/kinesisk (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/kinesisk (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Aktivt locale: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Meny"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Søn"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Man"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Tir"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Ons"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Tor"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Fre"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Lør"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Søndag"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Mandag"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Tirsdag"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Onsdag"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Torsdag"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Fredag"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Lørdag"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Des"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Januar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Februar"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Mars"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mai"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Juni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Juli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Desember"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "SANN"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "USANN"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Sort"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blå"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Grønn"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Rød"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Hvit"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Gul"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "De forente arabiske emirater, dirham"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "De nederlandske antillene, gylden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, dollar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, gylden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Aserbajdsjan, manats"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnia-Hercegovina, marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dollar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria, leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Baharain, dinarer"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, franc"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, dollar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei-Darussalam, dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasil, real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, dollar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Hviterussland, rubler"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dollar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Sveits, francs"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Kina, yuan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, pesos"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, colones"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, pesos"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Kapp Verde, escudos"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Kypros, pund"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Tjekkia, koruny"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danmark, kroner"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Den dominikanske republikk, pesos"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Aleria, dinarer"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia, krooni"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypt, pund"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, nafka"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopia, birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro-medlemsland, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, dollar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falklandsøyenes, pund"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Storbritannia, pund"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgia, lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, pund"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedis"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, pund"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, francs"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, quetzales"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, dollar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hongkong, dollar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempiras"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Kroatia, kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gourdes"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Ungarn, forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia, rupiahs"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, shekels"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, pund"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, rupi"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, dinarer"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, kroner"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, pund"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, dollar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan, dinarer"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, shilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirgisistan, som"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodsja, riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komorene, franc"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Nord-Korea, won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Sør-Korea, Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, dinarer"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Caymanøyene, dollar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kasakhstan, tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kips"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanon, pund"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri lanka, rupi"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, dollar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litauen, litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvia, lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libya, dinarer"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marokko, dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldova, lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedonia, denars"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar, kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia, tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritania, ouguiya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, liri"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, rupi"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldivene, Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwacha"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexico, peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysia, ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mosambik, meticais"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, dollar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, naira"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, gull-cordoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norge, krone"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, rupi"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "New Zealand, dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, nuevos soles"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Ny-Guinea, kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filippinene, peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, rupi"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polen, sloty"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, rial"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania, lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russland, rubel"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, franc"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi-Arabia, riyal"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Salomonøyene, dollar"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychellene, rupi"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dinarer"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Sverige, kroner"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore, dollar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Saint Helena, pund"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenia, tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakia, koruny"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, gylden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome og Principe, dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, colon"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syria, pund"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand, baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadsjikistan, rubler"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manater"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisia, dinarer"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Tyrkia, lire"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad og Tobago, dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Tuvalu dollar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, nye dollar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, shilling"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraina, hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "USA, dollar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Usbekistan, sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Sølv, unser"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Gull, unser"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Øst-Karribia, dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, unser"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, unser"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen, rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslavia, nye dinarer"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Sør-Afrika, rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ingen"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Helfylt"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatisk (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ingen"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "firkant"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamant"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "trekant ned"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "trekant opp"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "trekant høyre"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "trekant venstre"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "sirkel"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "kryss"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterisk"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "søyle"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "halvlinje"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "sommerfugl"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "timeglass"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% grå"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% grå"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% grå"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% grå"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% grå"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horisontal stripe "
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Vertikal stripe"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Omvendt diagonal stripe"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonal stripe"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonal krysslinje"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Tykk diagonal krysskravering"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tynn horisontal stripe"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tynn vertikal stripe"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tynn omvendt diagonal stripe"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tynn diagonal stripe"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tynn horisontal krysskravering"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tynn diagonal krysskravering"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Helfylt forgrunn"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Små sirkler"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Halvsirkler"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Thatch"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Store sirkler"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Murstein"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etiketter"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Verdier"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Feillinjer"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "O_verlapp:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Mellomrom:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "Plottlinje"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "Plottområde"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Sidestilte søyler i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Sidestilte 3D-kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D prosentsøyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Prosentkolonner i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Stablede søyler i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Stablede kolonner i 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Sidestilte søyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Sidestilte kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Område"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Områder"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Søyle"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolonne"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Linjeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Prosentområder"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Prosentsøyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Prosentkolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Prosentlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Prosentområdeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Prosentlinjeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Stablede områder"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Stablede søyler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Stablede kolonner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Stablede linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Stablet områdeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Stablet linjeplott."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Ikke-merkede linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Ikke-merkede prosentlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Ikke-merkede stablede linjer"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Forvalgte typer 1.5d plott"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Linje-, område-, søyle- og kolonneplott"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Plott"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Ugyldig passord"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Plott"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Plott"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Plott"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Motor for bobleplott"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Endrer farge på faner"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Forvalgte typer 1.5d plott"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "grader"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separasjon:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D delt kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Delt kake"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Delt sirkel"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Forvalgte kaketyper"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "PlottRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "PlottRadarOmråde"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "OmrådeRadar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Prosentområdeplott."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radarplott."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Forvalgte typer 1.5d plott"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Hele tall"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Kontur"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Linjeplott."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Overflate"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Motor for områdeplott"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "_Kildeområder:"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "_Kildeområder:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% av forvalgt størrelse"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dia_meter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Vis _negative verdier"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Over_flate"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "PlottXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "PlottBoble"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Boble"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Feil under lesing av linje"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Feil under lesing av linje"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Markører ved hvert punkt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY-linjer"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY-punkter"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XY-linjer"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D-plott"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Motor for bobleplott"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pl.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pl.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pl.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4294 @@
+# Copyright (C) 2001-2002 Free Software Foundation, Inc.
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+# Aktualną wersję tego pliku możesz odnaleźć w repozytorium cvs.gnome.pl
+# (:pserver:anonymous at cvs.gnome.pl:/gnomepl, puste hasło)
+# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
+# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas na adres:
+# translators at gnome.pl
+# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-09-05 11:50+0100\n"
+"Last-Translator: GNOME PL Team <translators at gnome.pl>\n"
+"Language-Team: Polish <translation-team-pl at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Nadpisywanie istniejących plików tego typu zostało dla bezpieczeństwa "
+"zablokowane."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Możesz zrezygnować z tego zabezpieczenia, modyfikując odpowiedni plik plugin."
+"xml."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "czas"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Plik zawiera informacje o wtyczce z niewłaściwym id (%s), oczekiwano %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Nie można odczytać pliku z informacjami wtyczce."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nieznana nazwa"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Nieobsługiwany typ ładowarki \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Podczas przygotowywania ładowarki \"%s\" wystąpił błąd."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Wystąpił błąd przy odczycie informacji o %d. usłudze."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Nie można odczytać pliku informacjami o wtyczce (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Plik \"%s\" nie jest poprawnym plikiem z informacjami o wtyczce."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Wystąpił błąd podczas odczytu usług wtyczki o id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Identyfikator wtyczki zawiera niepoprawne znaki (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nieznana nazwa wtyczki."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Nie zdefiniowano Å‚adowarki lub posiada ona niepoprawny id dla wtyczki z id="
+"\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Wtyczka nie posiada identyfikatora."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Podczas inicjowania ładowarki (\"%s\") wystąpił błąd."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Wykryto cykliczne zależności wtyczki."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Nie można uaktywnić wtyczki z id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Nie można znaleźć wtyczki z id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Wystąpił błęd podczas uaktywniania zależności wtyczki."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Podczas uaktywniania %d. usługi wtyczki wystąpił błąd."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Podczas unieaktywniania %d. usługi wtyczki wystąpił błąd."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Nie można załadować ładowarki."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Nie można załadować wtyczki z id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Wystąpiły błędy podczas ładowania zależności wtyczki."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Podczas odczytu informacji o wtyczce z pliku \"%s\" wystąpiły błędy."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Nie można wyłączyć wtyczki \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Nie można wyłączyć wtyczki \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Błędy podczas odczytu informacji o dostępnych wtyczkach."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+"Podczas wyłączania wtyczek, które nie są już obecne na dysku wystąpił błąd."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Poniższe wtyczki nie są już obecne na dysku lecz są wciąż aktywne:\n"
+"%s.\n"
+"Należy teraz uruchomić ponownie Gnumerica."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Błędy podczas uaktywniania wtyczek."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Błędy podczas inicjowania systemu wtyczek."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Usługa \"%s\" nie jest obsługiwana przez podprogram ładujący."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nie podano nazwy pliku z modułem."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Nie można otworzyć pliku z modułem \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Plik z modułem \"%s\" jest w niewłaściwym formacie."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Plik nie zawiera symbolu \"plugin_file_struct\"."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Sygnatura pliku jest niewłaściwa."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Wersja wtyczki (\"%s\") nie odpowiada wersji aplikacji (\"%s\")."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "System ten nie obsługuje dynamicznego ładowania modułów."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Nie można zamknąć pliku z modułem \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Plik nie zawiera funkcji \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Moduł nie zawiera funkcji \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Podczas ładowania usługi wtyczki wystąpił błąd."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Funkcja inicjująca umieszczona we wtyczce zwróciła błąd."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Funkcja finalizująca umieszczona we wtyczce zwróciła błąd."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Ogólne"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Brak opisu importera plików z identyfikatorem \"%s\"."
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "Importer plików nie posiada identyfikatora."
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Wystąpił błąd przy odczycie pliku."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Brak opisu eksportera plików z identyfikatorem \"%s\"."
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Eksporter plików nie posiada identyfikatora."
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Wystąpił błąd przy zapisie pliku."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Podprogram Å‚adujÄ…cy wtyczki"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Ładowarka GOBject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Brak atrybutu \"type\" elementu \"service\"."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Nieznany typ usługi: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Wystąpił błąd przy odczycie informacji o usłudze."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Należy załadować usługę przed jej uaktywnieniem (zmienna PLUGIN_ALWAYS_LOAD "
+"jest ustawiona) lecz próba wczytania nie powiodła się."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formuły"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Wc_ięcie:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Wyszukiwany napis"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Odstęp"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Wyrównanie"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Znak cytowania:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Rozmiar problemu"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Dyskretny"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Dyskretny"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Linia"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logiczne"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logarytmiczny"
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Ukryj szczegóły"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatyczny"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategoria:"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "TÅ‚o"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_inimum"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Maksimum"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Krzyż"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etykieta"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "PiÄ…tek"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "PiÄ…tek"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Znacznik</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Linia</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Znacznik</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Linia</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Wewnętrzne"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Ustawia obwódkę"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "Wysokość"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Wewnętrzne"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "W_staw"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Wiersz"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Ustawia obwódkę"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Etykiety"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Typ:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Tytuł"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "PiÄ…tek"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "OÅ› X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "OÅ› Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "OÅ› Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Wykres"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Wysokość"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "S"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Szerokość"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Komunikaty o błędach</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Styl</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Próbka</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Kolor :"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "D_zień"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Szerokość linii:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "N_a:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr ""
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Wykres"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nazwa"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Krok 1 z 3: Wybór typu wykresu"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Krok 3 z 3: Dopasowanie wykresu"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Zmień główkę"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "W_staw"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Typ _wykresu"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Wykres GNOME Office"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Kolejność"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Ułożenie</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Deseń</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Styl</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Wyświetl\n"
+"przykład"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Opis"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Dane"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Serie"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Mechanizm wykresu"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Typ wykresu"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "Wc_ięcie:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Łań_cuchy znakowe"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punkt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Czcionka"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Styl"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Jasność"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Wypełnienie</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linia</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Znacznik</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "<b>Linia</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Kolor :"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Kolor _obwódki:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Kształt:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Roz_miar:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Styl:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "_Typ:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "TÅ‚_o:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Kierunek:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "Ko_niec"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Kolor _wypełnienia:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "Dop_asowanie do:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Kolor główny:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Deseń:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Wybierz..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Rozmiar:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_PoczÄ…tek:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "jaskrawoniebieski"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "ciemnoczerwony"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "Opcje"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+#, fuzzy
+msgid "Default"
+msgstr "Usuń"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+#, fuzzy
+msgid "Arabic"
+msgstr "Obszar %i"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "Italic"
+
+#: goffice/gtk/go-charmap-sel.c:76
+#, fuzzy
+msgid "Central European"
+msgstr "Wyśrodkowanie na stronie"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "zielony"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "Åš_rednia:"
+
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "Japoński jen"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Boolowska"
+
+#: goffice/gtk/go-charmap-sel.c:84
+#, fuzzy
+msgid "Turkish"
+msgstr "Turecki lir"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+#, fuzzy
+msgid "Vietnamese"
+msgstr "Zmiana nazwy arkusza"
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "Zach."
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Inny"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabskie (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabskie (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabskie (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabskie (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabskie (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabskie (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabskie (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armeńskie (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Bałtyckie (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Bałtyckie (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Bałtyckie (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celtyckie (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Åšrodkowoerupejskie (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Åšrodkowoeuropejskie (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Åšrodkowoeuropejskie (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Åšrodkowoeuropejskie (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chińskie uproszczone (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chińskie uproszczone (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chińskie uproszczone (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chińskie uproszczone (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chińskie uproszczone (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chińskie tradycyjne (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chińskie tradycyjne (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chińskie tradycyjne (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Chorwackie (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cyrylica (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cyrylica (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cyrylica (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cyrylica (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cyrylica (MacCyrylic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cyrylica (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Rosyjskie (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukraińskie (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukraińskie (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Angielskie (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Gruzińskie (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Greckie (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Greckie (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Greckie (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrajskie (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebrajskie (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebrajskie (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrajskie (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrajskie (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevenagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandzkie (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japońskie (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japońskie (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japońskie (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Koreańskie (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Koreańskie (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Koreańskie (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Koreańskie (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordyckie (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumuńskie (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumuńskie (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Południowoafrykańskie (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tajskie (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Tureckie (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Tureckie (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Tureckie (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Tureckie (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Zdefiniowane przez użytkownika"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Wietnamskie (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Wietnamskie (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Wietnamskie (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Wietnamskie (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebrajskie wizualne (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Zachodnie (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Zachodnie (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Zachodnie (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Zachodnie (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Zachodnie (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Ustawienia regionalne:"
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Kierunek konwersji"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Ta wartość określa, jaki test iconv zostanie przeprowadzony."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "czarny"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "jasnobrÄ…zowy"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "brązowozłoty"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "ciemnozielony #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "granatowy"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "ciemnoniebieski"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "fioletowy #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "bardzo ciemnoszary"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "ciemnoczerwony"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "czerwonopomarańczowy"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "złoty"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "ciemnozielony"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "niebieski"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "ciemnoszary"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "czerwony"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "pomarańczowy"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "jasnozielony"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "błękitny #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "fioletowy"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "szary"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "karmazynowy"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "jaskrawopomarańczowy"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "żółty"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "zielony"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "niebieskozielony"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "jaskrawoniebieski"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "czerwonofioletowy"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "jasnoszary"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "różowy"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "jasnopomarańczowy"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "jasnożółty"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "jasnobrÄ…zowy"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "bladoniebieski"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "jasnoniebieski"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "jasnofioletowy"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "biały"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "niebieskofioletowy"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "ciemnopurpurowy"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "błękitny"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "dowolny"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Dowolny kolor:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Cień"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Ułożenie</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Nie można otworzyć pliku \"%s\""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Pliki"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Obraz"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Zaznacza całą kolumnę"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Zapisz wszystko"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Typ pliku:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Podane rozszerzenie pliku nie odpowiada wybranemu typowi pliku. Czy mimo to "
+"chcesz użyć tej nazwy?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"jest nazwÄ… katalogu"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Brak uprawnień do zapisu w\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Zeszyt %s już istnieje.\n"
+"Czy chcesz go nadpisać?"
+
+# AL: chodzi o rozkład liczb losowych i czcionkę... jak to pogodzić
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normalny/a"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Wytłuszczenie"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Pogrubiony italic"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Pochylenie"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Styl czcionki:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Czcionka:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "PodglÄ…d"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Rozmiar:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Liczba"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Waluta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Rachunkowe"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Data"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Czas"
+
+#: goffice/gtk/go-format-sel.c:80
+#, fuzzy
+msgid "Percentage"
+msgstr "_Procentowe"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "UÅ‚amek"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Naukowe"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Tekst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Specjalne"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Dowolne"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format liczby ujemnej"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formaty liczb"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegorie:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "_Miejsca dziesiętne:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Wyświetlanie kwot w tradycyjnym stylu księgowania."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Wyświetlanie i wprowadzanie wartości jako nieinterpretowanych napisów."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Wyświetlanie kwot walut."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Wyświetlanie dat i opcjonalnie czasu dnia."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+"Wyświetlanie wartości numerycznych ze zmienną liczbą miejsc dziesiętnych."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Wyświetlanie czasu dnia."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Wyświetlanie wartości do najbliższego przybliżenia ułamka."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Wyświetlanie wartości jako wartości procentowych."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Wyświetlanie wartości w skali potęgi z dziesięciu."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "_Kod formatu:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Format liczby _ujemnej:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "PodglÄ…d:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Sym_bol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Automatyczny wybór odpowiedniego formatu."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Bezpośrednie określenie formatu w stylu XL"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Separatory _tysięcy"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Europa Zachodnia"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Europa Wschodnia"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Ameryka Północna"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Ameryka Środkowa i Południowa"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Azja"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afryka"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australia"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Stany Zjednoczone/Angielski (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Afryka Południowa/Afrykanerski (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopia/Amharic (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Zjednoczone Emiraty Arabskie (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrajn (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algieria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egipt (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Indie/Arabski (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordania (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwejt (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libia (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libia (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Maroko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Katat (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Arabia Saudyjska (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunezja (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbejdżan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Białoruś (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bułgaria (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesz (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Indie/Bengalski (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Francja/Bretoński (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bośnia i Hercegowina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Hiszpania/Kataloński (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Republika Czeska (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Wielka Brytania/Walijski (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dania (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austria (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgia/Niemiecki (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Szwajcaria/Niemiecki (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Niemcy (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luksemburg/Niemiecki (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grecja (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australia (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Bostwana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/Angielski (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Wielka Brytania (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Angielski (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlandia (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Indie/Angielski (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nowa Zelandia (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipiny (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/Angielski (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Stany Zjednoczone/Angielski (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Afryka Południowa/Angielski (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentyna (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Boliwia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Kostaryka (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Republika Dominikany (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ekwador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Hiszpania (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Gwatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Meksyk (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nikaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paragwaj (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "Salwador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Stany Zjednoczone/Hiszpański (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Urugwaj (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Wenezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonia (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Hiszpania/Baskijski (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finlandia/Fiński (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Wyspy Faroe (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgia/Francuski (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/Francuski (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Szwajcaria/Francuski (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Francja (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlandia/Galijski (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Wielka Brytania/Szkocki Galijski (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Hiszpania/Galijski (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Wielka Brytania/Galijski Manx (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Indie/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Chorwacja (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Węgry (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armenia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonezja (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islandia (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_tl)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Szwajcaria/WÅ‚oski (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "WÅ‚ochy (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Izrael/Hebrajski (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japonia (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Gruzja (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grenlandia (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Wielka Brytania/Kornijski (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litwa (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Łotwa (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nowa Zelandia/Maoryski (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedonia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Indie/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malezja (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgia/Flamandzki (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Holandia (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norwegia/Nyorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norwegia/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Francja/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polska (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazylia (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugalia (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumunia (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rosja (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraina/Rosyjski (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norwegia/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "SÅ‚owacja (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "SÅ‚owenia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albania (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugosławia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finlandia/Szwedzki (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Szwecja (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Indie/Tamilski (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Indie/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadżykistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tajlandia (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Erytrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopia/Tigtinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipiny/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turcja (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rosja/Tatarski (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Wietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgia/Walloon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Stany Zjednoczone/Jidisz (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Chiny (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chiny (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/Chiny (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Tajwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Bieżące ustawienia reg.:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Menu opcji"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Rozmiar wskaźnika"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Błąd wewnętrzny"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Nie"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Pon"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Wto"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Åšro"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Czw"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*PiÄ…"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sob"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Niedziela"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Poniedziałek"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Wtorek"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Åšroda"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Czwartek"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "PiÄ…tek"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sobota"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Sty"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Lut"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Kwi"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Maj"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Cze"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Lip"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Sie"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Wrz"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Paź"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Lis"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Gru"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Styczeń"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Luty"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Marzec"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Kwiecień"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Maj"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Czerwiec"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Lipiec"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Sierpień"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Wrzesień"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Październik"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Listopad"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Grudzień"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "PRAWDA"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FAŁSZ"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Czarny"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Niebieski"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Niebieskozielony"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Zielony"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Purpurowy"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Czerwony"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Biały"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Żółty"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Zjednoczone Emiraty Arabskie, Dirhama"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afganistan, afgani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Antyle Holenderskie, gulden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentyna, peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia, dolar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, gulden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbejdżan, manat"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bośnia i Hercegowina, marka wymienialna"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dolar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesz, taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bułgaria, lew"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrajn, dinar"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, frank"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermudy, dolar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Księstwo Brunei, dolar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Boliwia, boliwiano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazylia, real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Wyspy Bahama, dolar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Białoruś, rubel"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dolar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, dolar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongo/Kinszasa, frank kongijski"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Szwajcaria, frank"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Chiny, yuan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbia, peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Kostaryka, colon"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde, escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cypr, funt"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Republika czeska, korona"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Dżibti, frank"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Dania, korona duńska"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Republika Dominikany, peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algieria, dinar"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia, korona estońska"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egipt, funt"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Erytrea, nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopia, birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Członkowie strefy euro, euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fidżi, dolar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Wyspy falklandzkie (Malwiny), funt"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Wielka Brytania, funt"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Gruzja, lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, funt"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, funt"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Gwinea, frank"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Gwatemala, quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Gujana, dolar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, dolar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Chorwacja, kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gourde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Węgry, forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonezja, rupia"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Izrael, nowy szekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Wyspy Człowiecze, funt"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Indie, rupia"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, dinar"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Islandia, korona"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, funt"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamajka, dolar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordania, dinar"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japonia, jen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenia, szyling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirgistan, som"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodża, riel"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komory, frank"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (Północna), won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (Południowa), won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwejt, dinar"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kajmany, dolar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazachstan, tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laostańska kipa"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libia, funt"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, rupia"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, dolar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litwa, lit"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Łotwa, łat"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libia, dinar"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Maroko, dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Mołdowa, lej"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, malaski frank"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedonia, denar"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), kiat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia, tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Makau, pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauretania, ouguia"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, lir"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, rupia"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldiwy (Wyspy), Rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwacha"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Meksyk, peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malezja, ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambik, metical"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, dolar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, naira"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nikaragua, kordoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norwegia, korona"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, rupia"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nowa Zelandia, dolar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, nowy sol"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nowa Gwinea, kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipiny, peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, rupia"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polska, złoty"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paragwaj, guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Katar, rial"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumunia, lew"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rosja, rubel"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, frank"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Arabia Saudyjska, rial"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Wyspy Salomona, dolar"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seszele, rupia"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dinar"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Szwecja, korona"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, dolar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Wyspy Åšw. Heleny, funt"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "SÅ‚owenia, tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "SÅ‚owacja, korona"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, szyling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, gulden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome i Principe, dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "Salwator, colon"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syria, funt"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tajlandia, bat"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadżykistan, rubel"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manat"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunezja, dinar"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turcja, lir"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trynidad i Tobago. dolar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, dolar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Tajwan, dolar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, szyling"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraina, hrywna"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, szyling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Stany Zjednoczone Ameryki, dolar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Urugwaj, peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Wenezuela, boliwar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Wietnam, dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Afrykańskie Stowarzyszenie Finansowe BEAC, frank"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Srebro, uncja"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "ZÅ‚oto, uncja"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Dolar wschodniokaraibski"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Afrykańskie Stowarzyszenie Finansowe BCEAO, frank"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Pallad, uncja"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platyna, uncja"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen, rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugosłowia, nowy dinar"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Afryka Południowa, rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, dolar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Brak"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Jednolity"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatyczny"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Brak"
+
+#: goffice/utils/go-marker.c:221
+#, fuzzy
+msgid "square"
+msgstr "Źródło"
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Mediana"
+
+#: goffice/utils/go-marker.c:223
+#, fuzzy
+msgid "triangle down"
+msgstr "zakres"
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "zakres"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "zakres"
+
+#: goffice/utils/go-marker.c:226
+#, fuzzy
+msgid "triangle left"
+msgstr "zakres"
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "OkrÄ…g"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "Krzyż"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Wklej odnośnik"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+#, fuzzy
+msgid "butterfly"
+msgstr "Motyl"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% szarości"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% szarości"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% szarości"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12,5% szarości"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6,25% szarości"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Poziome prążki"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Pionowe prążki"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Odwrócone ukośne prążki"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Ukośne prążki"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Ukośnie skrzyżowane prążki"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Grube ukośnie skrzyżowane prążki"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Cienkie poziome prążki"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Cienkie pionowe prążki"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Cienkie odwrócone ukośne prążki"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Cienkie ukośne prążki"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Cienkie skrzyżowane poziomo prążki"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Cienkie skrzyżowane ukośnie prążki"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Wypełnienie kolorem"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Małe okręgi"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Półokręgi"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "SÅ‚oma"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Duże okręgi"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Cegły"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etykiety"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Wartości"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Wystąpił błąd przy analizie wiersza"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "Wyk_res..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Wykres"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Wykres"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "_Procenty"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Wstaw kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Wstaw kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Obszar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Wykres obszarowy."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Obszary"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Pasek"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolumna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linia"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Wykres liniowy."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linie"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "_Procenty"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "_Procenty"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "_Procenty"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Procenty"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Usuń kolumny"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Domyślne typy wykresu 1.5d"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Mechanizm rysowania linii"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Wykresy liniowe, obszarowe, słupkowe i kolumnowe"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Wykres"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Niepoprawne hasło"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Wykres"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Wykres"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Wykres"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Mechanizm rysowania linii"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Zmiana kolorów zakładek"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Domyślne typy wykresu 1.5d"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Wykres"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Nic"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Separator :"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "stopni(e)"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Separator:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Kategoria :"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "_Linie siatki"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Rozdziel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Przemnóż"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Przemnóż"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Koło"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Pierścień"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Rozdziel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Rozdziel"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "Wykres"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Wykres"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Wykres obszarowy."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "BÅ‚Ä…d standardowy"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Usuń kolumny"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Domyślne typy wykresu 1.5d"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Mechanizm rysowania linii"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Mechanizm rysowania linii"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Liczby całkowite"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Liczba"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Wykres obszarowy."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Źródło"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Mechanizm rysowania linii"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Obszary źródłowe:"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Obszary źródłowe:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% z_wykłego rozmiaru"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Parametry"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Źródło"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Wykres"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Podwójne"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Podwójne"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Wystąpił błąd przy analizie wiersza"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Wystąpił błąd przy analizie wiersza"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Usuń kolumny"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Linie"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Punkt"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Linie"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+#, fuzzy
+msgid "Bubble plotting engine"
+msgstr "Mechanizm rysowania linii"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4235 @@
+# gnumeric's Portuguese Translation
+# Copyright © 2001, 2002, 2003, 2004, 2005 gnumeric
+# Distributed under the same licence as the gnumeric package
+# Duarte Loreto <happyguy_pt at hotmail.com>, 2001, 2002, 2003, 2004, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 2.10\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-01-10 01:50+0000\n"
+"Last-Translator: Duarte Loreto <happyguy_pt at hotmail.com>\n"
+"Language-Team: Portuguese <gnome_pt at yahoogroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Gravar sobre ficheiros antigos deste tipo não é permitido por questões de "
+"segurança."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Pode desligar esta medida de segurança editando o ficheiro plugin.xml "
+"apropriado."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objectivo"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Ficheiro contém informação de plugin com id inválido (%s), esperado %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Incapaz de ler a informação de plugin do ficheiro."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nome desconhecido"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Tipo de carregador não suportado \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Erro ao preparar o carregador \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Erro ao ler a informação de serviço #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Incapaz de ler o ficheiro de informação de plugin (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "\"%s\" não é um ficheiro de informação de plugin válido."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Erros ao ler serviços do plugin com o id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "ID plugin contém caracteres inválidos (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nome de plugin desconhecido."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Nenhum leitor definido ou id de leitor inválido para plugin com o id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin não tem id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Erro ao inicializar o carregardor de plugins (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Detectadas dependências cíclicas de plugin."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Incapaz de activar plugin com o id =\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Incapaz de encontrar o plugin com o id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Erro ao activar dependências do plugin."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Erro ao activar o serviço de plugin #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Erro ao desactivar o serviço de plugin #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Incapaz de carregar o leitor de plugins."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Incapaz de ler plugin com o id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Erro ao ler dependências do plugin."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Ocorreram erros ao ler do ficheiro a informação de plugins \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Incapaz de activar plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Incapaz de desactivar plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Erros ao ler informação sobre os plugins disponíveis."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Erro ao desactivar plugins que já não se encontram em disco."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Os seguintes plugins já não se encontram no disco mas ainda estão activos:\n"
+"%s.\n"
+"Deverá reiniciar o Gnumeric agora."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Erros ao activar plugins."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Erros ao inicializar o sistema de plugins."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Carregador não possui nenhum método set_attributes.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Carregador não possui nenhum método load_base.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Serviço '%s' não suportado pelo carregador."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nome de ficheiro de módulo não indicado."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Incapaz de abrir ficheiro de módulo \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Ficheiro de módulo \"%s\" tem formato inválido."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Ficheiro não contém (símbolo \"plugin_file_struct\")."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Ficheiro tem número mágico incorrecto."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Versão do plugin \"%s\" é diferente da aplicação \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Carregamento dinâmico de módulos não é suportado neste sistema."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Incapaz de fechar ficheiro de módulo \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Ficheiro não contém função \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Módulo não contém função \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Erro ao carregar o serviço de plugin."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Função de inicialização dentro do plugin retornou erro."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Função de limpeza dentro do plugin devolveu erro."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Geral"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Abre ficheiros não tem descrição"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Abre ficheiros - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Erro ao ler ficheiro."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Gravador de ficheiros não tem descrição"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Gravador de ficheiros - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Erro ao gravar ficheiro."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Leitor plugin"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Leitor GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Nenhum atributo \"tipo\" no elemento \"serviço\"."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Tipo de serviço desconhecido: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Erro ao ler informação de serviço."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"O serviço tem de ser lido antes de ser activado (PLUGIN_ALWAYS_LOAD está "
+"definida) mas a leitura falhou."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Fórmulas"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indentar:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Pr_ocurar por"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Espaço"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Alinhamento"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Caracter de _citação:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Tamanho Problema"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discreto"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Discreto"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Linear"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Lógico"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logarítmico"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detalhes"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automático"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Categoria:"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Limites"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "Má_x"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "_Escala Principal"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Escala Secu_ndária"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Cruz"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formatação"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etiqueta"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Grelha"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Grelha"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Escala Principal:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Linha</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Escala Secundária:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Orientação</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "De_ntro"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Fora"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Alta"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Dentro"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Inverter"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Baixa"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "F_ora"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "Mo_strar Etiquetas"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tipo:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Título"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Grelha"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Eixo-X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Eixo-Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Eixo-Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Gráfico"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "A"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Altura"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "L"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Largura"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Alertas de Erro</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Estilo</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Amostra</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Cor:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "Di_a"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Largura de Linha:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "Co_m:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Gráfico"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Gráfico"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nome"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Passo 1 de 2: Seleccionar Tipo de Gráfico"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Passo 2 de 2: Personalizar Gráfico"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Personalizar Gráfico"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Inserir"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Tipo Gráfico _Pontos"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Gráfico Office GNOME"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Ordenar"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definição</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Padrão</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Estilo</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Apresentar\n"
+"Amostra"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Descrição"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Texto:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Dados"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Séries"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Motor Gráfico"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Tipo Gráfico Pontos"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Tema Gráfico"
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Indentar:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_Expressões"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Ponto"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Fonte"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Estilo"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Brilho"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Encher</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linha</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Marcador</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Realçar</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Cor:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "C_or delimitação:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Forma:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Taman_ho:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Estilo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ipo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Fundo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Direcção:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Fim:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Cor _enchimento:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Redimensionar:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_1º Plano:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Padrão:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Seleccionar..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Tamanho:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Início"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "mais _brilhante"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "mais _escuro"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "esticado"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Omissão"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Árabe"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Báltico"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Europa Central"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chinês"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cirílico"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grego"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebreu"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indiano"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japonês"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Coreano"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turco"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamita"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Ocidental"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Outra"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Árabe (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Árabe (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Árabe (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Árabe (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Árabe (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Árabe (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Árabe (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Arménio (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Báltico (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Báltico (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Báltico (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celta (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Europa Central (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Europa Central (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Europa Central (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Europa Central (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinês Simplificado (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinês Simplificado (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chinês Simplificado (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chinês Simplificado (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chinês Simplificado (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinês Tradicional (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinês Tradicional (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chinês Tradicional (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croata (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirílico (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirílico (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirílico (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirílico (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cirílico (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirílico (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russo (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ucraniano (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ucraniano (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Inglês (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgiano (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grego (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grego (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grego (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreu (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebreu (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebreu (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebreu (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreu (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandês (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japonês (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonês (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonês (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Coreano (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Coreano (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Coreano (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Coreano (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nórdico (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Romeno (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Romeno (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Sul Europeu (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tailandês (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turco (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turco (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turco (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turco (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Definido Utilizador"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamita (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamita (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamita (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamita (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebreu Visual (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Ocidental (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Ocidental (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Ocidental (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Ocidental (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Ocidental (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Local: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Direcção da Conversão"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Este valor determina que teste iconv realizar."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "preto"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "castanho claro"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "castanho dourado"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "verde escuro nº2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "azul marinho"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "azul escuro"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "púrpura nº2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "cinzento muito escuro"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "vermelho escuro"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "vermelho alaranjado"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "dourado"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "verde escuro"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "azul mate"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "azul"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "púrpura mate"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "cinzento escuro"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "vermelho"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "laranja"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "lima"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "verde mate"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "azul mate nº2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "azul céu nº2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "púrpura"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "cinzento"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "laranja brilhante"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "amarelo"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "verde"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cian"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "azul brilhante"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "vermelho púrpura"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "cinzento claro"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "laranja claro"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "amarelo claro"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "verde claro"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "cian claro"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "zaul claro"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "púrpura claro"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "branco"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "azul púrpura"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "púrpura escuro"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "azul céu"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "personalizada"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Cor Personalizada:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Sombra"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Orientação</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Incapaz de abrir ficheiro '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Todos os Ficheiros"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Imagens"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Seleccionar uma Imagem"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Gravar como"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Tipo ficheiro:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"A extensão de ficheiro indicada não coincide com o tipo de ficheiro "
+"seleccionado. Ainda assim deseja utilizar este nome?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"é um nome de directório"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Não tem permissões para gravar para\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Já existe um ficheiro chamado <i>%s</i> em %s.\n"
+"\n"
+"Deseja sobrepo-lo?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Negrito"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Negrito itálico"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Itálico"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Estilo fonte:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Fonte:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Antever"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Tamanho:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Número"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Moeda"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Contabilidade"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Data"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Hora"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Percentagem"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fracção"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Científico"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Texto"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Especial"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Personalizado"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Formato Número negativo"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formatos Números"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tegorias:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Casas deci_mais:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Apresentar montantes nos estilos contabilísticos tradicionais."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+"Apresentar e dar entrada de valores como expressões sem qualquer "
+"interpretação."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Apresentar montantes em moeda."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Apresentar datas e opcionalmente horas do dia."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Apresentar valores numéricos com um número fixo de casas decimais."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Apresentar horas do dia."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Apresentar valores como a mais aproximada fracção."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Apresentar valores como percentagens."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Apresentar valores como potências de 10."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Código f_ormatação:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Formato número negativo:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Antever:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ímbolo:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Seleccionar automaticamente um formato apropriado."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Especificar directamente um formato estilo XL"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formato:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Utilizar Separador para 1000s"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Europeu Ocidental"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Europa Oriental"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "América do Norte"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "América Sul & Centro"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Ásia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "África"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Austrália"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Estados Unidos/Inglês (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Afrikaans África do Sul (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Amharic/Etiópia (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Emirados Árabes Unidos (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algéria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egipto (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Índia/Árabe (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraque (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordania (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Líbano (ar_LI)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Líbia (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marrocos (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Quatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Arábia Saudita (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudão (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Síria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunísia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Yemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbeijão (ar_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Bielorussia (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgária (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Índia/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "França/Bretanha (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnia e Herzegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Espanha/Catalão (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "República Checa (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Grã-Bretanha/Galês (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dinamarca (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Áustria (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Bélgica/Alemão (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Suiça/Alemão (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Alemanha (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburgo/Alemão (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grécia (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Austrália (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canadá/Inglês (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Grã-Bretanha (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Inglês (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlanda (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Índia/Inglês (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nova-Zelândia (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipinas (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapura/Inglês (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Estados Unidos/Inglês (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "África do Sul/Inglês (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolívia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colômbia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "República Dominicana (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Equador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Espanha (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "México (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicarágua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panamá (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Perú (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Porto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguai (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Estados Unidos/Espanhol (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguai (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estónia (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Espanha/Basco (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Irão (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finlândia/Finlandês (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Ilhas Farao (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Bélgica/Francês (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canadá/Francês (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Suiça/Francês (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "França (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlanda/Gaélico (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Grã-Bretanha/Gaélico Escocês (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Espanha/Galego (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Grã-Bretanha/Gaélico Manx (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Índia/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croácia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Hungria (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Arména (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonésia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islândia (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Suiça/Italiano (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Itália (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebreu (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japão (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Geórgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Gronolândia (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Coreia (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Grã-Bretanha/Cornualho (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lituânia (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Letónia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nova Zelândia/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedónia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Índia/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malásia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Bélgica/Flamengo (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Holanda (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Noruega/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Noruega/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "França/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polónia (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Roménia (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Russia (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ucrania/Russo (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Noruega/Saami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Eslováquia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Eslovénia (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albânia (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslávia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finlândia/Suéco (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Suécia (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Índia/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Índia/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadjaquistão (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tailândia (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritreia (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiópia/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipinas/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turquia (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rússia/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ucrania (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Paquistão (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbequistão (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietname (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Bélgica/Walloon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Estados Unidos/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "China (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chinês (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapura/Chinês (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Ilha Formosa (Taiwan) (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Local Actual: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "O menu de opções"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Tamanho Indicador"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Tamanho do indicador de queda"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Espaçamento Indicador"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Espaçamento em torno do indicador"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dom"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Seg"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Ter"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Qua"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Qui"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Sex"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sab"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Domingo"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Segunda"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Terça"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Quarta"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Quinta"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Sexta"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sábado"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Fev"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Abr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Ago"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Set"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Out"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dez"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Janeiro"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Fevereiro"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Março"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Abril"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Maio"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Junho"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Julho"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Agosto"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Setembro"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Outubro"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Novembro"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Dezembro"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "VERDADE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSO"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Preto"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Azul"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cian"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Verde"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Vermelho"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Branco"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Amarelo"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Dirhams, Emirados Árabes Unidos"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghani, Afganistão"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Leke, Albania"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Drams, Arménia"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Guilders, Antilhas Holandesas"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Kwanza, Angola"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Peso, Argentina"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Dolar, Austrália"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Guilders, Aruba"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Manats, Azerbeijão"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Marka Conversível, Bosnia e Herzegovina"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Dolar, Barbados"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Taka, Bangladesh"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Leva, Bulgária"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Dinar, Bahrain"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Franco, Burundi"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Dolar, Bermudas"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Dolar, Brunei Darussalam"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Boliviano, Bolivia"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Real Brasileiro, Brasil"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Dolar, Bahamas"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Ngultrum, Butão"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Pula, Bostwana"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Rublo, Bielorussia"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Dolar, Belize"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Dolar, Canadá"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Franco Congolês, Congo/Kinshasa"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Franco, Suiça"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Peso, Chile"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Yuan Renminbi, China"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Peso, Colombia"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Colones, Costa Rica"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Peso, Cuba"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Escudos, Cabo-Verde"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Libra, Chipre"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Koruny, República Checa"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Franco, Djibouti"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Coroa, Dinamarca"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Peso, República Dominicana"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Dinar Argelino, Algéria"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Krooni, Estónia"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Libra, Egípto"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Nakfa, Eritreia"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Birr, Etiópia"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro, Paises Membros Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Dolar, Fiji"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Libra, Ilhas Malvinas (Falkland)"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Libra, Reino Unido"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Lari, Geórgia"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Libra, Guernsey"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Cedis, Ghana"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Libra, Gibraltar"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Dalasi, Gambia"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Franco, Guiné"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Quetzales, Guatemala"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Dolar, Guiana"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Dolar, Hong-Kong"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Lempira, Honduras"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Kuna, Croácia"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Gourde, Haiti"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Florin, Hungria"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Rupia, Indonésia"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Novo Shekel, Israel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Libra, Ilha de Man"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Rupia, India"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Dinar, Iraque"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Rial, Irão"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Kronur, Islândia"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Libra, Jersey"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Dolar, Jamaica"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Dinar, Jordania"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Yen, Japão"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Shilling, Quénia"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Soms, Quirgistão"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Riels, Cambodja"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Franco, Comoros"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Won, Coreia (Norte)"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Won, Coreia (Sul)"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Dinar, Kuwait"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Dolar, Ilhas Caimão"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Tenge, Casaquistão"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Kip, Laos"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libra, Líbano"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Rupia, Sri-Lanka"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Dolar, Libéria"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Maloti, Lesoto"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litai, Lituânia"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Lati, Letónia"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Dinar, Líbia"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Dirham, Marrocos"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Lei, Moldávia"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Franco Malagáso, Madagáscar"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Dinar, Macedónia"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Kyat, Myanmar (Burma)"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Tugrik, Mongólia"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Patacas, Macau"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Ouguiya, Mauritânia"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Lira, Malta"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Rupia, Ilhas Maurícias"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Rufiyaa, Maldivas (Ilhas Maldivas)"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Kwacha, Malawi"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Peso, México"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Ringgit, Malásia"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Metical, Moçambique"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Dolar, Namíbia"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Naira, Nigéria"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Cordoba Ouro, Niquerágua"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Coroa, Noruega"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Rupia Nepalesa, Nepal"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Dolar, Nova-Zelândia"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Rial, Oman"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Balboa, Panamá"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Novos Sois, Peru"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Kina, Papua Nova-Guiné"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Peso, Filipinas"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Rupia, Paquistão"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Zlotych, Polónia"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Guarani, Paraguai"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Rial, Quatar"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Lei, Roménia"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rublo, Rússia"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Franco Ruandês, Ruanda"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Riyal, Arábia Saudita"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Dolar, Ilhas Salomão"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Rupia, Seicheles"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Dinar, Sudão"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Coroa, Suécia"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Dolar, Singapura"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Libra, Santa Helena"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Tolar, Eslovénia"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Koruny, Eslováquia"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Leone, Serra Leoa"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Shilling, Somália"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Luigini, Seborga"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Guilder, Suriname"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Dobra, São Tomé e Príncipe"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "Colones, El Salvador"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Libra, Síria"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Emalangeni, Swazilândia"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Baht, Tailândia"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Rublo, Tadjaquistão"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Manats, Turquemenistão"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Dinar, Tunísia"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Pa'anga, Tongan"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Lira, Turquia"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Dolar, Trinidade e Tobago"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Dolar Tuvalu, Tuvalu"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Novo Dolar, Ilha Formosa (Taiwan)"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Shilling, Tanzânia"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Hryvnia, Ucrânia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Shilling, Uganda"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Dolar, Estados Unidos da América"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Peso, Uruguai"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Sums, Uzbequistão"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Bolivar, Venezuela"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Dong, Vietname"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vatu, Vanuatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Tala, Samoa"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Francos, Comunidade Financeira Africana BEAC"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Onças, Prata"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Onças, Ouro"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Dolar, Caraibas Leste"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+"Direitos Especiais de Levantamento, Fundo Monetário Internacional (FMI)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Francos, Comunidade Financeira Africana BCEAO"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Onças, Palladium"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Francos, Consórcio Francês do Pacífico"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Onças, Platina"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Rial, Yemen"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Novo Dinar, Jugoslávia"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Rand, África do Sul"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Kwacha, Zâmbia"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Dolar do Zimbabue, Zimbabue"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Nenhum"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Sólido"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automático"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "nenhum"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "quadrado"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamante"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triângulo abaixo"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triângulo acima"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triângulo à direita"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triângulo à esquerda"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "círculo"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "cruz"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterísco"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "barra"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "meia barra"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "borboleta"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "ampulheta"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Cinzento"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% Cinzento"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% Cinzento"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Cinzento"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Cinzento"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Risca Horizontal"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Risca Vertical"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Risca Diagonal Revertida"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Riscas Diagonais"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Linhas Cruzadas Diagonais"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Linhas Cruzadas Diagonais Grossas"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Riscas Horizontais Finas"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Riscas Verticais Finas"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Riscas Diagonais Finas Revertidas"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Riscas Diagonais Finas"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Linhas Cruzadas Horizontais Finas"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Linhas Cruzadas Diagonais Finas"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Primeiro Plano Sólido"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Círculos Pequenos"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semi-Círculo"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Palha"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Círculos Grandes"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Tijolos"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etiquetas"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valores"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Erro ao parsear linha"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "ColBarPontos"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Até onde as barras/colunas se sobrepôem em percentagem da largura"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "S_obreposição:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Separação entre grupos como uma percentagem da largura barra/coluna"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Intervalo:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "Linha de Pontos"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "Área de Pontos"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Barras Adjacentes 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Colunas Adjacentes 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "Barras Percentagem 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Colunas Percentagem 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Barras Empilhadas 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Colunas Empilhadas 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Barras Adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Colunas Adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Barras adjacentes 3D horizontais agrupadas por categorias maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr "Barras adjacentes horizontais agrupadas por categorias maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Colunas adjacentes 3D verticais agrupadas por categorias maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Colunas adjacentes verticais agrupadas por categorias maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Área"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Gráfico pontos área."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Áreas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Barra"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Coluna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linha"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Gráfico de linhas."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linhas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categorias menores empilhadas como percentagens do total menor, em barras 3D "
+"horizontais, agrupadas pela categoria maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Categorias menores empilhadas como percentagens do total menor, em barras 3D "
+"verticais, agrupadas pela categoria maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categorias menores empilhadas como percentagens do total menor, em barras "
+"horizontais, agrupadas pela categoria maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Categorias menores empilhadas como percentagens do total menor, em colunas "
+"verticais, agrupadas pela categoria maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Categorias menores empilhadas em barras 3D horizontais, agrupadas pela "
+"categoria maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Categorias menores empilhadas em barras horizontais, agrupadas pela "
+"categoria maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Categorias menores empilhadas em colunas 3D verticais, agrupadas pela "
+"categoria maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Categorias menores empilhadas em colunas verticais agrupadas pela categoria "
+"maior."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Áreas Percentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Barras Percentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Colunas Percentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Linhas Percentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Gráfico pontos percentagem."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Gráfico linhas percentagem."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Áreas Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Barras Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Colunas Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Linhas Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Gráfico área empilhada."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Gráfico linha empilhada."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Linhas Por Marcar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Linhas Percentagem Por Marcar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Linhas Empilhadas Por Marcar"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Motor gráficos área"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Motor de gráficos Barras/Colunas"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Tipos de gráficos 1.5d por omissão"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Motor gráficos linhas"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Gráficos de Linhas, Áreas, Barras e Colunas"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Padrão de procura inválido."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Gráfico"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Motor de gráficos Barras/Colunas"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "A Alterar Cores Separadores"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Tipos de gráficos 1.5d por omissão"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "Queijo de Pontos"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "AnelPontos"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Graus contra ponteiros relógio das 3 horas"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "F_atias começam em:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"A quantidade por omissão que cada fatia está separada do centro medido como "
+"uma percentagem do raio do gráfico circular"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Separação Fatia:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Variar cores por fatia"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "graus"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+#, fuzzy
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"A quantidade por omissão que cada fatia está separada do centro medido como "
+"uma percentagem do raio do gráfico circular"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Separador:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Cen_trar tamanho:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Queijo 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Queijo Separado 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Totais principais como percentagens com cada extremo subdividido em queijos "
+"secundários."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Totais principais como percentagens com cada extremo subdividido em barras "
+"empilhadas secundárias."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Múlti-Queijo"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Múlti-queijo-barras"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Percentagem de cada contribuinte disposto em círculo para cada série com "
+"extremos do círculo anterior separados."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+"Percentagem de cada contribuinte apresentado no círculo para cada série."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Percentagem de cada contribuinte no queijo 3D."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Percentagem de cada contribuinte com extremos 3D separados."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Percentagem de cada contribuinte com extremos separados."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Percentagem de cada contribuinte."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Queijo"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Círculo"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Dividir Queijo"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Dividir Cículo"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Tipos de queijo por omissão"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Motor desenho queijos"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Motor desenho círculos"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "ColBarPontos"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Área de Pontos"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Gráfico pontos área."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Gráfico área empilhada."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Tipos de gráficos 1.5d por omissão"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Motor gráficos área"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Motor desenho círculos"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Números inteiros"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Contagem"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Gráfico pontos área."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Super_fície"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Motor desenho círculos"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Gráficos Queijo"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Gráficos queijo"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% do tamanho por omissão"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Diâ_metro"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Mostrar valores _negativos"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Super_fície"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Bolhas escaladas para"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Tamanho representado por:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Variar as cores por bolha"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "GráficoXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "GráficoBolha"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bolha"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Erro ao parsear linha"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Erro ao parsear linha"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+"Interpolar linearmente entre pontos multi-dimensionais, com marcadores em "
+"cada ponto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Interpolar linearmente entre pontos multi-dimensionais, com marcadores em "
+"cada ponto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Interpolar linearmente entre pontos multi-dimensionais."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Marcadores em cada ponto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Pontos multi-dimensionais com círculos em cada ponto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Ponto X, Y e tamanho bolha."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Linhas XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Pontos XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Linhas XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "Motor de gráficos de dispersão 2D"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Motor de desenho de bolhas"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Tipos de dispersão de pontos padrão"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt_BR.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt_BR.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/pt_BR.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4200 @@
+# translation of gnumeric.HEAD.pt_BR.po to Português/Brasil
+# translation of gnumeric.HEAD.po to Português/Brasil
+# Brazilian Portuguese translation of gnumeric.
+# Copyright (C) 2000-2004, 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gnumeric package.
+# E. A. Tacão <tacao at conectiva.com.br>, 2000.
+# Juan Carlos Castro y Castro <jcastro at vialink.com.br>, 2001.
+# Johnny Birnfeld <akiractb at icqmail.com>, 2003.
+# Afonso Celso Medina <medina at maua.br>, 2004, 2005.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric.HEAD.pt_BR\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-02-18 00:26-0200\n"
+"Last-Translator: Afonso Celso Medina <medina at maua.br>\n"
+"Language-Team: Portuguese/Brazil <gnome-l10n-br at listas.cipsga.org.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr "Não é um nome de arquivo UTF-8 válido."
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Sobrescrever arquivos antigos deste tipo está desabilitado por segurança."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Você pode desabilitar esta opção de segurança editando o arquivo plugin.xml "
+"apropriado."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Coeficiente na"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"O arquivo contém informação de plugin com id inválido (%s), era esperado %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Impossível ler informação de plugin do arquivo."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nome desconhecido"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Tipo de carregador não suportado \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Erro ao preparar carregador \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Erro ao ler informação do serviço #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Impossível ler arquivo de informações de plugin (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Arquivo \"%s\" não é um arquivo de informações de plugin válido."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Erro ao ler serviços para o plugin cujo id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "O Plugin id contém caracteres inválidos (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nome de plugin desconhecido."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Não há carregador definido ou id inválido para o plugin com id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin não tem id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Erro ao inicializar carregador do plugin (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Detectada dependências cíclicas do plugin."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Impossível ativar plugin com id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Não encontrado o plugin com id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Erro ao ativar dependências do plugin."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Erro ao ativar serviço do plugin #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Erro ao desativar serviço do plugin #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Impossível carregar carregador do plugin."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Não posso carregar o plugin com id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Erro ao carregar dependências do plugin."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Ocorreram erros na leitura das informações de plugin do arquivo \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Impossível ativar plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Impossível desativar plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Erros ao ler informações sobre plugins disponíveis."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Erro ao desativar serviço do plugin que não está mais no disco."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Os seguinte plugins não estão mais no disco mas continuam ativos:\n"
+"%s.\n"
+"Você deveria reiniciar o Gnumeric agora."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Erros ao ativar plugins."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Erros ao inicializar sistema de plugins."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "O carregador não possui o método set_attributes.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "O carregador não tem o método load_base.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr "O serviço '%s' não suportado por I."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nome do arquivo de módulo não fornecido."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Impossível abrir arquivo de módulo \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Arquivo de módulo \"%s\" tem formato inválido."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Arquivo não contém símbolo \"plugin_file_struct\"."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "O arquivo tem um número mágico inválido."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "A versão do plugin \"%s\" é diferente da aplicação \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Este sistema não suporta carga dinâmica de módulos."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Impossível fechar arquivo de módulo \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "O arquivo não contém a função \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "O módulo não contém a função \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Erro ao carregar serviço do plugin."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Função de inicialização do plugin retornou erro."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Função de fechamento do plugin retornou erro."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Geral"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "O aquivo aberto não tem descrição"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Carregador de arquivo - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Erro ao ler arquivo."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "O gravador de arquivo não tem descrição"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Gravador de arquivo - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Erro ao salvar arquivo."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Carregador do plugin"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Carregador GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Nenhum atributo \"tipo\" no elemento \"serviço\"."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Serviço desconhecido: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Erro ao ler informação do serviço."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Nós devemos carregar o serviço antes de ativá-lo (PLUGIN_ALWAYS_LOAD está "
+"ativado) mas o carregamento falhou."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "páginas"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indentar:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Proc_urar por"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Alinhamento"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "_Caracter de aspas:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Tamanho do Problema"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discreta"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Mapeamento discreto"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Linear"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Mapeamento linear"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Mapeamento logarítmico"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detalhes"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automático"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Categorias entre _marcas"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Categorias entre _rótulos"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr "_Cruzar na categoria #"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Limites"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Mar_cadores Principais"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Marca_dores Secundários"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Cruzar"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formato"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Rótulo"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "GradeSecundária"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "GradePrincipal"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Marcas principais:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mapeamento</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Marcas Secundárias:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Posição</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nternos"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "E_xternos"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Superior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Internos"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Inverter eixos"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "In_ferior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Externos"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Mostrar Rótulos"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Tipo:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Título"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Grade"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Eixo-X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Eixo-Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Eixo-Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Eixo-Circular"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Eixo-Radial"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Plot"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "A"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Altura"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "L"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Largura"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Nenhuma barra de erro apresentada"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Barra de erro positiva apresentada"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Barra de erro negativa apresentada"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Barra de erro completa apresentada"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Categoria de erro</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Estilo</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Valores</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Co_r:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "T_ela:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Nenhum\n"
+"Absoluto\n"
+"Relativo\n"
+"Porcentagem"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "Espessura da _linha:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Largura:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Gráfico"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Gráfico"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nome"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Passo 1 de 2: Escolha o tipo de Gráfico"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Passo 2 de 2: Personalize o Gráfico"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Personalizar o Gráfico"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Inserir"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Tipo de _Gráfico"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Gráfico do GNOME Office"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Puxar para _frente"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Puxar para _frente"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Empurrar para _Trás"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Em_purrar para trás"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Ordenar"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definição</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Padrão</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Estilo</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Amostra"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Descrição"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Texto:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Dados"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Séries"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Engine do Gráfico"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Tipo de Gráfico"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Tema do Gráfico"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Índice:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Opções"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Ponto"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Fonte"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Estilo"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"Duas Cores\n"
+"Brilho"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Preencher</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linha</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Marcador</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Borda</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Co_r:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Nenhum\n"
+"Padrão\n"
+"Gradiente\n"
+"Imagem"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "C_or do contorno:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Forma:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Taman_ho:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "Es_tilo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_ipo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Segundo Plano:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Direção:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Fim:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Cor de _preenchimento:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Ajuste:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Primeiro plano:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Modelo:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Selecionar..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Tamanho:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Início:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_mais brilhante"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_mais escuro"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"esticado\n"
+"papel de parede"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Padrão"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arábico"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Báltico"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Europa Central"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Chinês"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Cirílico"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grego"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebráico"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indiano"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japonês"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Coreano"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turco"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietinamita"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Ocidental"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Outro"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arábico (IBM 864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arábico (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arábico (ISO-8856-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arábico (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arábico (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arábico (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arábico (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armênico (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Báltico (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Báltico (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Báltico (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Celta (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Europa Central (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Europa Central (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Europa Central (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Europa Central (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Chinês Simplificado (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Chinês Simplificado (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Chinês Simplificado (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Chinês Simplificado (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Chinês Simplificado (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Chinês Tradicional (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Chinês Tradicional (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Chinês Tradicional (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croata (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Cirílico (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Cirílico (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Cirílico (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Cirílico (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Cirílico (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Cirílico (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Russo (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ucraniano (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ucraniano (MacUcraniano)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Inglês (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgiano (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grego (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grego (MacGrego)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grego (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebráico (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebráico (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebráico (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebráico (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebráico (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandês (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japonês (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonês (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonês (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Coreano (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Coreano (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Coreano (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Coreano (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nórdico (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Romeno (MacRomeno)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Romeno (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Sul Europeu (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turco (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turco (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turco (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turco (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Definido pelo usuário"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietinamita (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietinamita (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietinamita (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietinamita (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Hebráico Visual (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Ocidental (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Ocidental (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Ocidental (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Ocidental (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Ocidental (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Local: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Direção de Conversão"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Este valor determina qual teste iconv deve ser realizado."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "preto"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "marrom claro"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "marrom dourado"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "verde escuro #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "navy"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "azul escuro"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "púrpura #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "cinza muito escuro"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "vermelho escuro"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "vermelho alaranjado"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "ouro"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "verde escuro"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "azul profundo"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "azul"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "púrpura dull"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "cinza escuro"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "vermelho"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "laranja"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "limão"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "verde sombrio"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "azul sombrio #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "azul do céu #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "púrpura"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "cinza"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "laranja brilhante"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "amarelo"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "verde"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "ciano"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "azul brilhante"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "púrpura avermelhado"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "cinza claro"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "laranja claro"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "amarelo claro"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "verde claro"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "ciano claro"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "azul claro"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "púrpura claro"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "branco"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "azul purpúreo"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "púrpura escuro"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "azul do céu"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "personalizar"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Cor Personalizada..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Tipo de sombra"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientação"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Largura preferida"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Altura preferida"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Docar a barra de ferramentas"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Desdocar a barra de ferramentas"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Impossível abrir o arquivo '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Todos os Arquivos"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Imagens"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Seleciona uma Imagem"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Salva como"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Tipo de Arquivo:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"A extensão fornecida para o arquivo não combina com o tipo de arquivo "
+"escolhido. Você deseja utilizar este nome mesmo assim?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"é o nome de um diretório"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Você não tem permissão para salvar em\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Um arquivo chamado <i>%s<;i> já existe em %s.\n"
+"\n"
+"Deseja sobrescrevê-lo?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Negrito"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Itálico negrito"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Itálico"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr "AaBbCcDdEe12345"
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Estilo da fonte:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Fonte:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Visualização"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Tamanho:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Número"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Moeda"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Contabilidade"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Data"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Tempo"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Porcentagem"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Fração"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Científico"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Texto"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Especial"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Personalizar"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Formato de Número negativo"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formatos de Números"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ca_tegorias:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Casas deci_mais:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+"Mostra valores monetários em estilos tradicionais do mercado financeiro."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+"Mostra e introduz valores nas células como texto sem alguma outra "
+"interpretação."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Mostra valores monetários."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Mostra data e opcionalmente horas do dia."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Mostra valores numéricos com um número fixo de casas decimais."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Mostra horas do dia."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+"Mostra valores o mais próximo possível de suas representações fracionárias."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Mostra valores como porcentagens."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Mostra valores em um escala na potência de 10."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Códig_o de Formato:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Formato de número negativo:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Visualização:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Sím_bolo:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Seleciona, automaticamente, um formato apropriado."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Especifica diretamente um formato no estilo Excel"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formato:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Usar separador de milhares"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Europa Ocidental"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Europa Oriental"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "América do Norte"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Américas do Sul e Central"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Ásia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "África"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Austrália"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Estados Unidos/Inglês (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "África do Sul (af_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiópia/Amárico (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Emirados Árabes Unidos (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Barém (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algéria (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egito (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Índia/Arábico (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Iraq (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordânia (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Líbano (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Líbia (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marrocos (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Omã (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Quatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Arábia Saudita (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudão (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Síria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunísia (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Iêmen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaidjão (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Bielorrúsia (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgária (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Índia/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "França/Bretão (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bósnia e Herzegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Espanha/Catalão (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tchecoslováquia (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Grã Bretanha/Galês do país de Gales (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dinamarca (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Áustria (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Bélgica/Alemão (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Suíça/Alemão (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Alemanha (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburgo/Alemão (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grécia (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Austrália (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Canadá/Inglês (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Grã-Bretanha (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Inglês (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irlanda (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Índia/Inglês (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nova Zelândia (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipinas (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Cingapura/Inglês (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Estados Unidos/Inglês (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "África do Sul/Inglês (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbábue (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolívia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colômbia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "República Dominicana (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Equador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Espanha (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "México (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicarágua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panamá (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Porto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguai (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Estados Unidos/Espanhol (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguai (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estônia (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Espanha/Basco (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Irã (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finlândia/Finlandês (fi_Fl)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Ilhas Faroé (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Bélgica/Francês (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Canadá/Francês (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Suiça/Francês (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "França (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irlanda/Galês (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Grã Bretanha/Escocês Gálico (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Espanha/Galícia (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Grã Bretanha/Galês da Ilha de Manx (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Índia/Hindu (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Croácia (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Húngaro (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armênia (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonésia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Islândia (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Suíça/Italiano (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Itália (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebráico (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japão (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Geórgia (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Groenlândia (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Coréia (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Grã Bretanha/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Lituânia (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Letônia (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nova Zelândia/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Macedônia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Índia/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malásia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Bélgica/Flamengo (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Holanda (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Noruega/Norueguês Novo - Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Noruega/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "França/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Polônia (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brasil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Romênia (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rússia (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ucrânia/Russo (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Noruega/Sámi (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Eslováquia (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Eslovenia (sl_SL)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albânia (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Iugoslávia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finlândia/Sueco (sv_Fl)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Suécia (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Índia/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Índia/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tajiquistão (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tailândia (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritréia (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiópia/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipinas/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turquia (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rússia/Tatar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ucrânia (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Paquistão (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbequistão (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Bélgica/Walloon (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Estados Unidos/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "China (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Chinês (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapura/Chinês (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Valor Local: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Menu de opções"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Tamanho do Indicador"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Tamanho do indicador da lista de dropdown"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indicador de Espaçamento"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Indicador de espaço ao redor"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dom"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Seg"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Ter"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Qua"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Qui"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Sex"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sáb"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Domingo"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Segunda"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Terça"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Quarta"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Quinta"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Sexta"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sábado"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Fev"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Abr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Ago"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Set"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Out"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dez"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Janeiro"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Fevereiro"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Março"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Abril"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Maio"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Junho"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Julho"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Agosto"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Setembro"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Outubro"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Novembro"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Dezembro"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "VERDADEIRO"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSO"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Preto"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Azul"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Ciano"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Verde"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Vermelho"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Branco"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Amarelo"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Emirados Árabes Unidos, Dirrã"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afeganistão, Afganos"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albânia, Leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armênia, Dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Antilhas Holandesas, Florim das Antilhas Holandesas"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza Novo de Angola"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, Pesos"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Austrália, Dólar Australiano"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Florim de Aruba"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaidjão, Manat azerbaidjano"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bósnia-Herzegóvina, Marco Conversível"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dólar Barbadiano"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, Taca de Bangladesh"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgária, Lev Búlgaro"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrein, Dinar do Bahrein"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Franco do Burundi"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, Dólar das Bermudas"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei, Dólar de Brunei"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolívia, Peso Boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasil, Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, Dólar das Bahamas"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Butão, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, Pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Bielorrússia, Rublos"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dólares de Belize"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canadá, Dólares Canadenses"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Congo, Franco CFA"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Suiça, Franco Suiço"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, Pesos Chilenos"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "China, Yuan"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colômbia, Pesos Colombianos"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, Cólon da Costa Rica"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, Pesos"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cabo Verde, Escudos"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Chipre, Libra Cipriota"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "República Tcheca, Coroas Tchecas"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibuti, Francos do Djibuti"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Dinamarca, Coroa Dinamarquesa"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "República Dominicana, Pesos"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Argélia, Dinares"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estônia, Coroa"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egito, Libras Egípcias"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritréia, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiópia, Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Países Membros do Euro, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, Dólares de Fiji"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Ilhas Malvinas, Libras"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Reino Unido, Libra Esterlina"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Geórgia, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Sudão, Libras Sudanesas"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Gana, Cedi Novo"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibaltrar, Libras de Gibraltar"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gâmbia, Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guiné, Francos"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Gualtemala, Quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guiana, Dólares Guianense"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, Dólares de Hong Kong"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempiras"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croácia, Kunas"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, Gourdes"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hungria, Florim Húngaro"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonésia, Rúpias da Indonésia"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, Shekel Novo"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Ilha Man, Libras"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Índia, Rúpias Indianas"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraq, Dinares Iraquianos"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Irã, Rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Islândia, Nova Coroa"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Libras"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, Dólar Jamaicano"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordânia, Dinar Jordaniano"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japão, Ienes"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Quênia, Xelim Queniano"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Quirguistão, Soms"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Camboja, Riels"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comores, Francos Comorenses"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Coréia do Norte, Won norte-coreano"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Coréia do Sul, Won sul-coreano"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kwait, Dinar Kuwaitiano"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Ilhas Cayman, Dólares das Ilhas Cayman"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Paquistão, Rúpias Paquistanesas"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kips"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Líbano, Libras Libanesas"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanca, Rúpia do Sri Lanca"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Libéria, Dólares Liberianos"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesoto, Lotis"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lituânia, Litas"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Letônia, Lats"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Líbia, Dinar Líbio"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marrocos, Dirrã"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldávia, Leu"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagáscar, Francos Malgaxe"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedônia, Dinares"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Mianmar, Kiat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongólia, Tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau, Pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritânia, Uguia"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, Lira"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Maurício, Rúpias Mauricianas"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldivas (Ilhas Maldivas), Rúfia"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malauí, Quachas Malauianas"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "México, Pesos Mexicanos"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malasia, Ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Moçambique, Meticais"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namíbia, Dólares da Namíbia"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigéria, Nairas"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicarágua, Córdobas Ouro"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Noruega, Coroas Norueguesas"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, Rúpias Nepalesas"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nova Zelândia, Dólares Neozelandêses"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Omã, Rials"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panamá, Balboas"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Perú, Sol"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nova Guiné, Kinas"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipinas, Pesos Filipinos"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Paquistão, Rúpias Paquistanesas"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polônia, Zlotys"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguai, Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Catar, Rials de Qatar"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romênia, Leu"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rússia, Rublos"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, Francos de Ruanda"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Arábia Saudita, Rial Saudita"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Ilhas Salomão, Dólares das Ilhas Salomão"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seicheles, Rúpias das Seicheles"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudão, Dinar"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Suécia, Coroa Sueca"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Cingapura, Dólares de Cingapura"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Santa Helena, Libras de Santa Helena"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Eslovênia, Tolares"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Eslovênia, Tolares Eslovenos"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Serra Leoa, Leones"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somália, Xelim Somaliano"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname, Florim do Suriname"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "São Tomé e Príncipe, Dobras"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Cólon Salvadorenho"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Síria, Libra Síria"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Suazilândia, Lilangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tailândia, Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadjiquistão, Somoni"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turcomenistão, Manat Turcomano "
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunísia, Dinares"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turquia, Liras"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad e Tobago, Dólar de Trinidad e Tobago"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Dólar Australiano"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, Novo Dólar de Taiwan"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzânia, Xelim Tanzâniano"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ucrânia, Hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Novo Xelim de Uganda"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Estados Unidos da América, Dólares"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguai, Peso Uruguaio"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbequistão, Sums"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, Bolívar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnã, Dongue Novo"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, Francos"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Prata, Onças"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Ouro, Onças"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Dominica, Dólar do Caribe do Leste"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Fundo Monetário Internacional (FMI), Direitos Especiais de Saque (DES)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Francos"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Paládio, Onças"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique, Francos"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platina, Onças"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Iêmen, Rial Iemenita"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Iugoslávia, Dinares Iugoslávos"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "África do Sul, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zâmbia, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbábue, Dólares Zimbabuanos"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Nenhum"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Sólido"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Traço"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Ponto"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Traço ponto"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Traço ponto ponto"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automático (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "nenhum"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "quadrado"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamante"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triângulo para baixo"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triângulo para cima"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triângulo para a direita"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triângulo para a esquerda"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "círculo"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "cruz"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "asterísco"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "barra"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "meia barra"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "borboleta"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "ampulheta"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "Cinza 75%"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "Cinza 50%"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "Cinza 25%"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "Cinza 12,5%"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "Cinza 6,25%"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Listra Horizontal"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Listra Vertical"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Listra Diagonal Invertida"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Listra Diagonal"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Hachuras Diagonais"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Hachuras Diagonais Finas"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Listra Horizontal Final"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Listra Vertical Fina"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Listra Diagonal Invertida Fina"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Listra Diagonal Fina"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Hachuras Horizontais Finas"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Hachuras Diagonais Finas"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Sólido de Primeiro Plano"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Círculos Pequenos"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semi-círculos"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Palha"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Círculos Grandes"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Tijolos"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Rótulos"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valores"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Barras de erro"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "PlotBarCol"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+"O quanto as barras/colunas se sobrepõem como uma porcentagem do comprimento"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "_Sobrepor:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+"Separação entre grupos como uma porcentagem da largura das barras/colunas"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Brecha:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "PlotLine"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "PlotArea"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "Barras 3D Adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "Colunas 3D Adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "Barras de Porcentagem 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Colunas de Porcentagem 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Barras 3D Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Colunas 3D Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Barras Adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Colunas Adjacentes"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Barras 3D horizontais adjacentes e agrupadas por categorias de maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Barras horizontais adjacentes e agrupadas por categorias de maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Barras 3D verticais adjacentes e agrupadas por categorias de maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Barras verticais adjacentes e agrupadas por categorias de maior e menor."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Área"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Gráfico de Área."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Áreas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Barra"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Coluna"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linha"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Gráfico de Linha."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linhas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Categorias menores empilhadas como porcentagens do total menor, em barras 3D "
+"horizontais, pela categoria principal."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"As categorias secundárias empilhadas como porcentagens do total secundário, "
+"em barras verticais 3D, agrupadas por categorias principais."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"As categorias secundárias empilhadas como porcentagens do total secundário, "
+"em barras horizontais, agrupadas pelas categorias principais."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"As categorias secundárias empilhadas como porcentagens do total secundário, "
+"em colunas verticais, agrupadas pelas categorias principais."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"As categorias secundárias empilhadas como barras horizontais 3D, agrupadas "
+"pelas categorias principais."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"As categorias secundárias empilhadas como barras horizontais agrupadas pelas "
+"categorias principais."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"As categorias secundárias empilhadas como colunas verticais, agrupadas pelas "
+"categorias principais."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"As categorias secundáriasempilhadas como colunas verticais agrupadas pelas "
+"categorias principais."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Áres de Porcentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Barras de Porcentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Colunas de Porcentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Linhas de Porcentagem"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Gráfico de área de porcentagem."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Gráfico de linha de porcentagem."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Áreas empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Barras Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Colunas Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Linhas Empilhadas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Gráfico de áreas empilhadas."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Gráfico de linhas empilhadas."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Linhas sem Marcas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Linhas de Porcentagem sem Marcas"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Linhas Empilhadas sem Marcas"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Ferramenta de plotagem de área"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Ferramenta de plotagem de Bar/Col"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Gráficos: Barra/Col/Linha/Área"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Tipos de Gráficos de 1.5d padrão"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Ferramenta de plotagem de linha"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Gráficos de Linha, Área, Barra e Coluna"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr "Box-Plot"
+
+# plugins/guile/plugin.c:241 src/expr.c:489 src/fn-math.c:1177
+#: plugins/plot_boxes/gog-boxplot.c:340
+msgid "Invalid data."
+msgstr "Dado inválido."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+"Box-Plot. Você dever prover cinco valores para a ferramenta de plotagem, na "
+"seguinte ordem: mínimo, primeiro quartil, mediana, terceiro quartil e máximo "
+"- não o conjunto completo de dados."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr "BoxPlot"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr "BoxPlots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr "Box-Plots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+msgid "Box-plot plotting engine"
+msgstr "Ferramenta de plotagem de Box-Plot"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr "Gráficos: Box-Plots"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Tipos padrão de gráfico de superfície"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "PlotPie"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "PlotRing"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s ponto %d\n"
+"Valor %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Os graus são contados no sentido horário a partir das 3 horas"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "_As fatias começam em:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"A quantidade reservada para cada fatia é separada a partir do centro e "
+"medida como uma porcentagem do raio da pizza"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Separação de Fatias:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "Altera as _cores por fatia"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "graus"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"A quantidade reservada para cada fatia é separada a partir do centro e "
+"medida como uma porcentagem do raio da pizza"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Separador:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Tamanho do Cen_tro:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Pizza 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Pizza 3D Separada"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Os totais principais como porcentagens com cada fatia subdividida em pizzas "
+"secundárias."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Os totais principais como porcentagens com cada fatia subdividida em barras "
+"secundárias empilhadas."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Pizza-Múltipla"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Multi-barras-pizzas"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Porcentagem de cada contribuição representada no anel para\n"
+"cada série como fatias separadas do último anel."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Porcentagem de cada contribuição representada no anel para cada série."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+"Porcentagem de cada contribuidor representada como uma fatia de uma pizza 3D."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Porcentagem de cada contribuição como fatias 3D separadas da pizza."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Porcentagem de cada contribuição como fatias separadas da pizza."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Porcentagem de cada contribuidor."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Pizza"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Anel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Pizza Separada"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Anel Separado"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Gráficos: Pizza/Anel"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Tipos padrão de pizza"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Gráficos do tipo Pizza e Anel"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Mecanismo de plotar Pizzas"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Mecanismo de plotar Anéis"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "PlotRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "PlotRadarArea"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Área de Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Gráfico de Área de radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Radar com pontos"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Gráfico de Radar com pontos."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Gráfico de Radar."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Gráficos: plotagens Radiais"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Tipos padrão de gráfico de radar"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Mecanismo de plotagem de gráficos de Radar de Área"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Mecanismo de plotar gráficos de Radar"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Gráficos Radial/Radar"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "Número de _Fatias:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "PlotContour"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Contorno"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Gráfico de contorno."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Superfície"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Mecanismo de plotar contornos"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Gráficos de Superfície"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Gráficos de superfície"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% do tamanho normal"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Diâ_metro"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Mostras valores _negativos"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Super_fície"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Bolhas escalonadas para"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Tamanho representado por:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "Altera as _cores por bolha"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "GráficoXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "Bolha"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bolha"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Barras de Erro Y"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "Barras de Erro X"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+"Interpola linearmente entre pontos multi-dimensionais, utilizando curvas de "
+"Bézier."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Interpola linearmente entre pontos multi-dimensionais, com marcas em cada "
+"ponto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Imterpola linearmente entre pontos multi-dimensionais."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Marcadores em cada ponto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Interpola entre pontos multi-dimensionais, com círculos em cada ponto."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Plota X,Y e o tamanho da bolha."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "Dispersão XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Linhas XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Ponto XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+msgid "XY Splines"
+msgstr "Curvas XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "Gráficos 2D"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "Ferramenta de construção de gráficos de Dispersão 2D"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Mecanismo de plotar Bolhas"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Gráficos: XY/Dispersão/Bolhas"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Gráficos de Dispersão de Ações"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ro.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ro.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ro.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4380 @@
+# Romanian translation of gnumeric.
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# Dan Damian <dand at softhome.net>, 2001.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2001-12-31 08:21+0200\n"
+"Last-Translator: Dan Damian <dand at softhome.net>\n"
+"Language-Team: Romanian <gnomero-list at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Salvarea peste fişiere vechi de acest tip este dezactivată din precauţie."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Puteţi dezactiva această măsură de precauţie prin editarea fişierului plugin."
+"xml corespunzător."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Obiectiv"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, fuzzy, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Fişierul conţine informaţii despre extensie cu un id invalid (%s), aşteptam %"
+"s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Nu am putut citi informaţiile despre extensie din fişier."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nume necunoscut"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Tip încărcător nesuportat \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Eroare la pregătirea încărcătorului \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Eroare la citirea informaţiilor despre serviciul #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Nu pot citi fişierul cu informaţii despre extensii (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Fişierul \"%s\" nu este un fişier valid cu informaţii despre extensii."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Erori la citirea serviciilor pentru extensia cu id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nume necunoscut de extensie."
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Nici un încărcător nu a fost definit pentru extensia cu id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Extensia nu are id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Eroare la iniţializarea încărcătorului extensiei (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Eroare la încărcarea dependinţelor extensiei."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Nu am putut activa extensia \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Nici un încărcător nu a fost definit pentru extensia cu id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Eroare la încărcarea dependinţelor extensiei."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Eroare la activarea serviciului #%d al extensiei."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Eroare la dezactivarea serviciului #%d al extensiei."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Nu pot încărca încărcătorul extensiei."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Nici un încărcător nu a fost definit pentru extensia cu id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Eroare la încărcarea dependinţelor extensiei."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Au apărut erori la citirea informaţiilor despre extensii din fişierul \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Nu am putut activa extensia \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Nu am putut dezactiva extensia \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Erori la citirea informaţiilor despre extensiile disponibile."
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Eroare la dezactivarea serviciului #%d al extensiei."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Erori la activarea extensiilor."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Erori la iniţializarea sistemului de extensii."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Serviciul nu este suportat de încărcător."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nu s-a furnizat numele de fiÅŸier al modulului"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Nu pot deschide fiÅŸierul modul \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "FiÅŸierul modul \"%s\" are un format invalid."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Fişierul nu conţine (simbolul \"plugin_file_struct\")."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Fişierul are un număr \"magic\" incorect."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Versiunea extensiei \"%s\" este diferită de cea a aplicaţiei \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Încărcarea dinamică a modulelor nu este suportată pe acest sistem."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Nu am putut închide fişierul modul \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Fişierul nu conţine funcţia \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modulul nu conţine funcţia \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Eroare la încărcarea serviciului extensiei."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Funcţia de iniţializare din interiorul extensiei a returnat o eroare."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Funcţia de finisare din interiorul extensiei a returnat o eroare."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "General"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Modulul de deschidere fiÅŸiere cu id-ul=\"%s\" nu are descriere"
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "Modulul de deschidere fiÅŸiere nu are un id"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Eroare la citirea fiÅŸierului."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Modulul de salvare fiÅŸiere cu id-ul=\"%s\" nu are descriere"
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Modulul de salvare fiÅŸiere nu are id"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Eroare la salvarea fiÅŸierului"
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Extensie încărcare Python"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Valoare obiectiv"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Foaia '%s' este necunoscută"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Eroare la citirea informaţiilor despre serviciul #%d."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formule"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indent"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Caută după"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Spaţiu"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Aliniere"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Caracter citare:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Discretă"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Discretă"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Linie"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Listă"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "A_scunde detaliile"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automată"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Categorie"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Fundal"
+
+#: goffice/graph/gog-axis.c:1475
+#, fuzzy
+msgid "M_in"
+msgstr "Min"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Max"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "ÃŽ_nchide"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etichetă"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Vineri"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Vineri"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Model"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Previzualizare"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Model"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Previzualizare"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Interior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Schemă"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "Î_nălţime..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Interior"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Inserare"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Rând"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Schemă"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Etichete"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+#, fuzzy
+msgid "_Type:"
+msgstr "_Tip"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Descendentă"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Titlu"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "Vineri"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "_Grafic"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "Î_nălţime..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "_Cu:"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Alertă eroare"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Previzualizare"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Exemplu"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Culoare:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Lăţime linie"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Cu:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "_Diagramă"
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "Diagramă%d"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Nume"
+
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Pasul 1 din 3: Selectaţi tipul diagramei"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Pasul 3 din 3: Personalizaţi diagrama"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Personalizează antet"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Inserare"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Nume grafic"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Re-_aranjează..."
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Orientare"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Model"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Previzualizare"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Exemplu"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Descriere"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "Te_xt"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_Date"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "_Serii"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Nume grafic"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Nume grafic"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Indent"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Åžiruri"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr ""
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dR x %dC"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Font"
+
+#: goffice/graph/gog-style.c:966
+#, fuzzy
+msgid "Style"
+msgstr "_Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Previzualizare"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Previzualizare"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Model"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Previzualizare"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Culoare:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Culoare contur"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "Impact:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Dimensiune:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "_Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "_Tip"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Fundal"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Director"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "Sfârşit"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Culoare umplere"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "_PotriveÅŸte la:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Prim-plan"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Model"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_Selectare"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Dimensiune:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "_Sortează"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "La _dreapta"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "Åžir"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pct"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+#, fuzzy
+msgid "Default"
+msgstr "Åžterge"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "Grupează"
+
+#: goffice/gtk/go-charmap-sel.c:74
+#, fuzzy
+msgid "Arabic"
+msgstr "Zona %i"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "Cursiv"
+
+#: goffice/gtk/go-charmap-sel.c:76
+#, fuzzy
+msgid "Central European"
+msgstr "Centrare în pagină"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "verde"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "Min"
+
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "pagini"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Boolean"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:85
+#, fuzzy
+msgid "Unicode"
+msgstr "_Reafişează"
+
+#: goffice/gtk/go-charmap-sel.c:86
+#, fuzzy
+msgid "Vietnamese"
+msgstr "RedenumeÅŸte foaia"
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "Vest"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "Octombrie"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Subliniază"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "Rezultat căutat:"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Corelare"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "negru"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "Luni"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "Zona"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "Aldin"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Valoare celulă"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "albastru"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "Åžir"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "roÅŸu"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "Zona"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "ora"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "Åžir"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "galben"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "verde"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "Editează expresia"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Aliniază la dreapta"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Aliniază la dreapta"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Aliniază la dreapta"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "alb"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "Valoare"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "Personalizat"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Personalizează subsolul"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Umbră"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Orientare"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Copiază selecţia curentă în clipboard"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Nu am putut deschide fiÅŸierul '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "_FiÅŸier"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "_Salvează..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Selectează o coloană întreagă"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Salvează"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "_FiÅŸier"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"este un nume de director"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Nu aveţi drepturi să salvaţi în\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Registrul %s există deja.\n"
+"Doriţi să-l suprascrieţi?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Aldin"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Aldin cursiv"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Cursiv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stil font:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Font:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Previzualizare"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Dimensiune:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Număr"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "_Simbol monetar"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "_Contabil"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Dată"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Oră"
+
+#: goffice/gtk/go-format-sel.c:80
+#, fuzzy
+msgid "Percentage"
+msgstr "_Procent"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "_Fracţie"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "Ş_tiinţific"
+
+#: goffice/gtk/go-format-sel.c:83
+#, fuzzy
+msgid "Text"
+msgstr "Te_xt"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "S_pecială"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Personalizat"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Număr negat_iv:"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "Aplică formatare _numere"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Categorie:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Zeci_male:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Afişează _schemele"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Afişează valoarea exact cum a fost introdusă"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Număr negat_iv:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Previzualizare"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_imbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Utilizează separator pentru mii"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "Vest"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "Centrare în pagină"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "General"
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "Zona %i"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "Celule ajustabile"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Exemplu"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Exemplu"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Valoare curenta:"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "Min"
+
+#: goffice/gtk/go-optionmenu.c:198
+#, fuzzy
+msgid "The menu of options"
+msgstr "Opţiuni Oaf"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "EROARE internă"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Dum"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Lun"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Mie"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Joi"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Vin"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sam"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Duminică"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Luni"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Marţi"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Miercuri"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Joi"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Vineri"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sâmbătă"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Ian"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Mai"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Iun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Iul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Oct"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Noi"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Ianuarie"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Februarie"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Martie"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Aprilie"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mai"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Iunie"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Iulie"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Septembrie"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Octombrie"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Noiembrie"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Decembrie"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "ADEVÄ‚RAT"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALS"
+
+#: goffice/utils/format.c:757
+#, fuzzy
+msgid "Black"
+msgstr "Ajustare"
+
+#: goffice/utils/format.c:758
+#, fuzzy
+msgid "Blue"
+msgstr "albastru"
+
+#: goffice/utils/format.c:759
+#, fuzzy
+msgid "Cyan"
+msgstr "cyan"
+
+#: goffice/utils/format.c:760
+#, fuzzy
+msgid "Green"
+msgstr "verde"
+
+#: goffice/utils/format.c:761
+#, fuzzy
+msgid "Magenta"
+msgstr "magenta"
+
+#: goffice/utils/format.c:762
+#, fuzzy
+msgid "Red"
+msgstr "Refă"
+
+#: goffice/utils/format.c:763
+#, fuzzy
+msgid "White"
+msgstr "alb"
+
+#: goffice/utils/format.c:764
+#, fuzzy
+msgid "Yellow"
+msgstr "galben"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr ""
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr ""
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr ""
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr ""
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr ""
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr ""
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr ""
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr ""
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "Creează o listă"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "Aprilie"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr ""
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Niciuna"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Solid"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automată"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Niciuna"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Min"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "Zona"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Schemele la d_reapta"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "fix"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "rânduri"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Lipeşte prin legătură"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*Mar"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% gri"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% gri"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% gri"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12.5% gri"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6.25% gri"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Bandă orizontală"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Bandă verticală"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Bandă diagonală inversă"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Bandă diagonală"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Haşură diagonală"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Haşură diagonală groasă"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Bandă orizontală fină"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Bandă verticală fină"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Bandă diagonală inversă fină"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Bandă diagonală fină"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Haşură orizontală fină"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Haşură diagonală fină"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Prim-plan solid"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Cercuri mici"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Semicercuri"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Intercalare"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Cercuri mari"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Cărămizi"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etichete"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Valori"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Eroare la procesarea liniei"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Diagramă"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Grafic"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Grafic"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "_Procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Inserează coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Inserează coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Area"
+msgstr "_Zone"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "_Zone"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+#, fuzzy
+msgid "Column"
+msgstr "C_oloană"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linie"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Linii de importat"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Linie"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "_Procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "_Procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "_Procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "_Procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "_Procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "_Grilaj"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Åžterge coloane"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "_Grilaj"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "_Procent"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "_Grilaj"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Definiţi nume"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Antete rânduri şi co_loane"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "_Grafic"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Expresie invalidă"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Grafic"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "_Grafic"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "_Grafic"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Eroare la procesarea liniei"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "modificarea formatării lui %s"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Definiţi nume"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Grafic"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "nimic"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Separator:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "Åž_terge"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Separator:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Categorie:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "_Grilaj"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Scindează"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Înmulţeşte"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Înmulţeşte"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Preţ"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "_Zona"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Scindează"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Scindează"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Grafic"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Grafic"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "_Procent"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Erori _Standard"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Åžterge coloane"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Definiţi nume"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Eroare la procesarea liniei"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Numere întregi"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Contor"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Linii de importat"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Zone sursă"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Eroare la procesarea liniei"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Zone sursă"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Zone sursă"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% din dimensiunea normală"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "centimetri"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+#, fuzzy
+msgid "Show _negative values"
+msgstr "Afişează detalii"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Zone sursă"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Grafic"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Dublă"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Dublă"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Eroare la procesarea liniei"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Eroare la procesarea liniei"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Åžterge coloane"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Linie"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "puncte"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Linie"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ru.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ru.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/ru.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4149 @@
+# translation of ru.po to 
+# Copyright (C) 1999-2002, 2004 Free Software Foundation, Inc.
+# Valek Filippov <frob at df.ru>, 1999-2002,2003.
+# Dmitry G. Mastrukov <dmitry at taurussoft.org>, 2001-2002, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ru\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2005-01-10 12:59+0300\n"
+"Last-Translator: Valek Filippov <frob at df.ru>\n"
+"Language-Team:  <ru at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Сохранение поверх старых файлов этого типа отключено из соображений "
+"безопасности."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"можно выключить эту возможность исправив соответствующий файл plugin.xml."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Целевой"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Файл содержит информацию о дополнении с недопустимым идентификатором (\"%s"
+"\"), ожидалось \"%s\"."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Невозможно прочесть файл информации о дополнении."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Неизвестное название"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Неподдерживаемый тип загрузчика \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Ошибка при подготовке загрузчика \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Ошибка при чтении информации сервиса #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Невозможно прочесть файл информации о дополнении (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Файл \"%s\" не является допустимым файлом информации о дополнении."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Ошибка при чтении сервисов для дополнения с идентификатором \"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Идентификатор дополнения содержит недопустимые символы (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Неизвестное название дополнения."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Не определен загрузчик или его индикатор недопустим для дополнения с "
+"идентификатором \"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Дополнение не имеет идентификатора."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Ошибки при инициализации загрузчика дополнений (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Обнаружена циклическая зависимость дополнений."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Не удалось включить дополнение с идентификатором \"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Не удалось найти дополнение с идентификатором \"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Ошибка при загрузке элементов, от которых зависит дополнение."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Ошибки при включении сервиса дополнения #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Ошибки при отключении сервиса дополнения #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Невозможно загрузить загрузчик дополнения."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Не удалось загрузить дополнение с идентификатором \"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Ошибка при загрузке элементов, от которых зависит дополнение."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "При чтении информации о дополнении из файла \"%s\" возникла ошибка."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Не удалось включить дополнение \"%s\" (идент. %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Не удалось отключить дополнение \"%s\" (идент. %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Ошибки при считывании информации о доступных дополнениях."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Ошибки при отключении дополнения, которого уже нет на диске."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Следующие дополнения отсутствуют на диске, но всё ещё активны:\n"
+"%s.\n"
+"Вы должны перезапустить Gnumeric сейчас."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Ошибки при включении дополнений."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Ошибки при инициализации системы дополнений."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Загрузчик не имеет метода set_attributes.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Загрузчик не имеет метода load_base.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Сервис \"%s\" не поддерживается загрузчиком."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Не задано название модуля."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Не удалось открыть файл модуля \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "У файла модуля \"%s\" недопустимый формат."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Файл не содержит символа \"plugin_file_struct\"."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "У файла неправильное магическое число."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Версия дополнения \"%s\" отличается от версии приложения \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Динамическая загрузка модулей не поддерживается на этой системе."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Не удалось закрыть файл модуля \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Файл не содержит функцию \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Модуль не содержит функцию \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Ошибка при загрузке сервиса дополнения."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+"Выполнение функция инициализации в дополнении привело к возникновению ошибки."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Внутренняя функция очистки дополнения вернула ошибку."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Общий"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Ошибка при чтении файла."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Ошибка при сохранении файла."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Загрузчик дополнения"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Загрузчик GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Неизвестный тип сервиса: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Ошибка при чтении информации сервиса."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "страницы"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Отступ:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Поиск"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Выравнивание"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Символ кавычки:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Дискретное"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Дискретное отображение"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Линейное"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Линейное отображение"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Логарифмическое"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Логарифмическое отображение"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Подробности"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Автоматически"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Категории между делениями"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Категории между метками"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Границы"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "Мин"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "Макс"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Основные деления"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Вспомогательные деления"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr ""
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Формат"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Метка"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "Вспомогательная сетка"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "Основная сетка"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Основные деления</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Отображение</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Вспомогательные деления</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Расположение</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "Внутри"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "Снаружи"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "Высокий"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "Внутри"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "Инвертировать оси"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "Низкий"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "Снаружи"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "Показать метки"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "Тип:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Подпись"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Заголовок"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Сетка"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Оси X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Оси Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Оси Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Круговые оси"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Радиальные оси"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Начертить"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "Ð’"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Высота..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "Ш"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Ширина"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Строка ошибок не отображается"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Строка положительных ошибок не отображается"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Строка отрицательных ошибок не отображается"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Отображается полная строка ошибок"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Категория ошибки</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Стиль</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Значения</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Цвет:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "Ширина линии:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "Ширина:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "График"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Диаграмма"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Название"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Шаг 1 из 2: Выбор типа диаграммы"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Шаг 2 из 2: Настройка диаграммы"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Настройка диаграмы"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Вст_авка"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Тип графика"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Диаграммы для GNOME Office"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "_Выше"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "На передний план"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "_Ниже"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "На _задний план"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Порядок"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Определение</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Шаблон</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Стиль</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Выборка"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Описание"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "Текст:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Данные"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Серии"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Модуль построения графиков"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Тип графика"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Тема диаграммы"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Индекс:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Настройки"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Точки"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Шрифт"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Стиль"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 цвета\n"
+"Яркость"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Заливка</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Линия</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Отметка</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Контур</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "Цвет:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Нет\n"
+"Шаблон\n"
+"Переход\n"
+"Изображение"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "Цвет контура:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "Форма:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Размер:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "Стиль:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "Тип:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "Фон"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "Направление:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "Конец:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Цвет заливки:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "Заполнить:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "Передний план:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "Шаблон:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "Выделение..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "Размер:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "Начало:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "ярче"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "темнее"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "тчк"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "По умолчанию"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Арабская"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Балтийская"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Центральноевропейская"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Китайская"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Кириллическая"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Греческая"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Иврит"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Индийская"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Японская"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Корейская"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Турецкая"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Юникод"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Вьетнамская"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Западная"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Другая"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Арабская (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Арабская (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Арабская (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Арабская (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Арабская (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Арабская (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Арабская (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Армянская (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Балтийская (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Балтийская (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Балтийская (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Кельтская (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Центральноевропейская (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Центральноевропейская (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Центральноевропейская (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Центральноевропейская (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Китайская упрощённая (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Китайская упрощённая (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Китайская упрощённая (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Китайская упрощённая (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Китайская упрощённая (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Китайская традиционная (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Китайская традиционная (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Китайская традиционная (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Хорватская (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Кириллическая (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Кириллическая (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Кириллическая (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Кириллическая (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Кириллическая (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Кириллическая (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Русская (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Украинская (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Украинская (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Английская (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Фарси (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Грузинская (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Греческая (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Греческая (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Греческая (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Иврит (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Иврит (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Иврит (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Иврит (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Иврит (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Хинди (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Исландская (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Японская (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Японская (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Японская (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Корейская (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Корейская (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Корейская (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Корейская (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Румынская (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Румынская (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Южноевропейская (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Тайская (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Турецкая (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Турецкая (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Турецкая (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Турецкая (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Юникод (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Юникод (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Юникод (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Юникод (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Юникод (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Юникод (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Определённая пользователем"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Вьетнамская (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Вьетнамская (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Вьетнамская (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Вьетнамская (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Визуальный иврит (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Западная (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Западная (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Западная (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Западная (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Западная (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Локаль: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Направление преобразования"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Это значение определяет какой тест iconv выполнить."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "черный"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "светло-коричневый"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "золотисто коричневый"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "тёмно-зелёный #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "тёмно-синий"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "пурпурный #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "очень темный серый"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "тёмно-красный"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "красно-оранжевый"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "золотистый"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "тёмно-зелёный"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "тускло-синий"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "синий"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "тускло-пурпурный"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "тёмно-серый"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "красный"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "оранжевый"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "лимонный"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "тускло-зелёный"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "тускло-зелёный #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "небесно-синий #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "пурпурный"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "серый"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "сиреневый"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "ярко-оранжевый"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "желтый"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "зеленый"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "голубой"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "ярко-синий"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "красно-пурпурный"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "светло-зелёный"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "розовый"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "светло-оранжевый"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "светло-жёлтый"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "светло-зелёный"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "светло-голубой"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "светло-синий"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "светло-пурпурный"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "белый"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "тёмно-пурпурный"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "небесно-голубой"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "другой"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Другой цвет..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Тип тени"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Ориентация"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Предпочтительная ширина"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Предпочтительная высота"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Прицепить панель инструментов"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Отцепить панель инструментов"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Не удалось открыть файл '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Все файлы"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Изображения"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Выбрать изображение"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Сохранить как"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Тип файла:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Заданное расширение файла не соответствует выбраному типу. Хотите "
+"использовать его?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"это название каталога"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"У вас нет прав для сохранения в\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Файл с именем <i>%s</i> уже существует в %s.\n"
+"\n"
+"Хотите сохранить в него?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Нормальное"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Полужирный"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Полужирный наклонный"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Наклонный"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Стиль шрифта:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Шрифт:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Просмотр"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Размер:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Числовой"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Денежный"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Бухгалтерский"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Дата"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Время"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Проценты"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Дробный"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Научный"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Текстовый"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Специальный"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Другой"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Формат отрицательного числа"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Числовые форматы"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Категории:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Десятичных позиций:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Показать время суток."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Показывать значение как проценты."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Код формата:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Формат отрицательного числа:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Просмотр:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Символ:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Выбрать подходящий формат автоматически."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "Формат:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Использовать разделитель для тысяч"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Западно-Европейская"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Восточно-Европейская"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Северо-Американская"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Южно- и Центрально-Американская"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Азиатская"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Африканская"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Австралийская"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "США/Английский (С)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Южноафриканский африкаанс (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Эфиопия/Амхарик (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Объединённые Арабские Эмираты (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Бахрейнс (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Алжир (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Египет (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Индия/Арабский (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Ирак (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Иордания (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Кувейт (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Лебанон (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Ливия (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Марокко (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Оман (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Катар (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Саудовская Аравия (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Судан (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Сирия (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Тунисс (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Йемен (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Азербайджан (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Белоруссия (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Болгария (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Бангладеш (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Индия/Бенгали (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Франция/Бретонь (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Босния и Герцеговина (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Испания/Каталония (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Чешская республика (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Дания (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Австрия (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Бельгия/Немецкий (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Щвейцария/Немецкий (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Германия (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Люксембург/Немецкий (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Греция (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Австралия (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Ботсвана (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Канада/Английский (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Великобритания (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Гонгконг/Английский (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Ирландия (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Индия/Английский (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Новозеландсия (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Филиппины (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Сингапур/Английский (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "США/Английский (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Южная Африка/Английский (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Зимбабве (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Эсперанто (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Аргентина (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Боливия (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Чили (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Колумбия (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Коста-Рика (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Доминиканская Республика (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Эквадор (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Испания (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Гватемала (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Гондурас (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Мексика (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Никарагуа (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Панама (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Перу (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Пуэрто-Рико (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Парагвай (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "Сальвадор (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "США/Испанский (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Уругвай (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Венесуэла (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Эстония (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Испания/Баскский (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Иран (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Финляндия/Финский (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Острова Фароэ (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Бельгия/Французский (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Канада/Французский (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Щвейцария/Французский (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Франция (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Ирландия/Гальский (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Индия/Хинди (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Хорватия (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Венгрия (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Армения (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Индонезия (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Исландия (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Швейцария/Итальянский (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Италия (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Израиль/Иврит (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Япония (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Грузия (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Гренландия (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Корея (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Литва (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Латвия (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Новая Зеландия/Маори (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Македония (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Малайзия (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Мальта (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Бельгия/Фламандский (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Голандия (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Норвегия/Новый норвежский (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Норвегия/Книжный норвежский (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Франция/Оккитан (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Польша (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Бразилия (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Португалия (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Румыния (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Россия (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Украина/Русский (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Норвегия/Саами (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Словакия (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Словения (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Албания (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Югославия (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Финляндия/Шведский (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Швеция (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Таджикистан (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Таиланд (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Эритрея (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Турция (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Россия/Татарский (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Украина (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Пакистан (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Узбекистан (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Вьетнам (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "США/Еврейский (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Китай (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Гонгконг/Китайский (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Сингапур/Китайский (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Тайвань (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Текущая локаль:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Меню"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Параметры меню"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Размер индикатора"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Размер выпадающего индикатора"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Вск"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Пон"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Ð’Ñ‚Ñ€"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Срд"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Чтв"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Пят"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Суб"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Воскресенье"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Понедельник"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Вторник"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Среда"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Четверг"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Пятница"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Суббота"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Янв"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Фев"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Мар"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Апр"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Май"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Июн"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Июл"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Авг"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Сен"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Окт"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Ноя"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Дек"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Январь"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Февраль"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Март"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Апрель"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Май"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Июнь"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Июль"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Август"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Сентябрь"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Октябрь"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Ноябрь"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Декабрь"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "ИСТИНА"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "ЛОЖЬ"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Чёрный"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Синий"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Голубой"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Зеленый"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Пурпурный"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Красный"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Белый"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Жёлтый"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Дирхам ОАЭ"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Афганский афгани"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Албанский леке"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Армянская драма"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Нидерландский гульден"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Ангольский кванза"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Аргентинский песо"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Австралийский доллар"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Арубанский гульден"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Азербайджанский манат"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Босния и Герцеговина, Переходная марка"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Барбадосский доллар"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Бангладешский така"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Болгарский лев"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Бахрейнский динар"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Бурундийский франк"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Бермудский доллар"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Брунейский доллар"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Боливийский боливиано"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Бразильский риал"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Багамский доллар"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Бутанский нгултрум"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Ботсванская пула"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Белорусский рубль"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Белизский доллар"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Канадский доллар"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Конго/Киншаса, Конголезский франк"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Щвейцарский франк"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Чилийское песо"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Китайский юань"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Колумбийский песо"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Коста-Риканский колон"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Кубинский песо"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr ""
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Кипрский фунт"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Чешская крона"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Джибутийский франк"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Датская крона"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Доминиканский песо"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Алжирский динар"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Эстонская крона"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Египетский фунт"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Эритрейская накфа"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Эфиопский бирр"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Евро"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Фиджийский доллар"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Фунт Фолклендских о-вов"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Британский фунт"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Грузинское лари"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ганское седи"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Гибралтарский фунт"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Гамбианское даласи"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Гвинейский франк"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Гватемальский кветцаль"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Гвианский доллар"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Гонг-Конгский доллар"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Гондурасский лемпир"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Хорватский кун"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Гаитянский гурд"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Венгерский форинт"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Индонезийская рупия"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Израильский шекель"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Фунты острова Мэн"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Индийская рупия"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Иракский динар"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Иранский риал"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Исландская крона"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Доллар Ямайки"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Иорданский динар"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Японская йена"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Кенийский шиллинг"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Киргизский сом"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Камбоджийский риал"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Коморосский франк"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Северокорейский вон"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Южнокорейский вон"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Кувейтский динар"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Доллар Каймановых о-вов"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Казахстанская таньга"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Лаосский кип"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Либанезский фунт"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Рупия Шри-Ланки"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Либерийский доллар"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Лот Лесото"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Литовский лит"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Латвийский лат"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Ливийский динар"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Марокканский динар"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Молдавский лев"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Малагазийский франк"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Македонский динар"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Мианмарский куат"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Монгольский тугрик"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Патака Макау"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Мавританская оугуия"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Мальтийская лира"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Мавритская рупия"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Мальдивская руфия"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Малавийская квача"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Мексиканский песо"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Малазийский ринггит"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Мозамбикский метикаи"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Намибийский доллар"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Нигерийская наира"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Никарагуанская кордоба оро"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Норвежская крона"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Непальская рупия"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Новозеландский доллары"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Оманский риал"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Панамский балбоа"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Папуа Новогвинейский кина"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Филиппинский песо"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Пакистанская рупия"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Польский злотый"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Парагвайская гуарани"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Кутарский риал"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Румынский лео"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Российский рубль"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Руандский франк"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Риал Саудовской Аравии"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Доллар Соломоновых о-вов"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Сейшельская рупия"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Суданский динар"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Шведская крона"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Сингапурский доллар"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Фунт Св.Елены"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Словенский толар"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Леон Сьерра-Леоне"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Сомалийский шиллинг"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Суринамский гульден"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Сао Том и Принципийский добра"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "Сальвадорский колон"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Сирийский фунт"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Свазилендский емалангени"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Тайский бахт"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Таджикистанский рубль"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Туркменский манат"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Тунисский динар"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Паанга Тонги"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Турецкая лира"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Доллар Тринидада и Тобаго"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Тувальский доллар"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Тайваньский новый доллар"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Танзанский шиллинг"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Украинская гривна"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Угандский шиллинг"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Доллар США"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Уругвайский песо"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Узбекский сум"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Венесуэльский боливар"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Вьетнамский донг"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Вануатский вату"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Самоанский тала"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Серебряная унция"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Золотая унция"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Восточнокарибский доллар"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Палладиевая унция"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Платиновая унция"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Йеменский риал"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Югославский новый динар"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Южноафриканский рэнд"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Замбийская квача"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Зимбабвийский доллар"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Нет"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Сплошной"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Автоматически (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "нет"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "квадрат"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "ромб"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "треугольник вниз"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "треугольник вверх"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "треугольник направо"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "треугольник налево"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "круг"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "крест"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "звездочка"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "прямоугольник"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% серого"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% серого"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% серого"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% серого"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% серого"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Горизонтальные штрихи"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Вертикальные штрихи"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Обратные диагональные штрихи"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Диагональные штрихи"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Диагональные крестики"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Толстые диагональные крестики"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Тонкие горизонтальные штрихи"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Тонкие вертикальные штрихи"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Тонкие обратные диагональные штрихи"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Тонкие диагональные штрихи"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Тонкие горизонтальные крестики"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Тонкие диагональные крестики"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Сплошной передний план"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Маленькие круги"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Полуокружности"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Солома"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Большие круги"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Кирпичи"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Метки"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Значения"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Строки ошибок"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Как сильно перекрываются столбцы/полосы в процентах от ширины"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "Перекрывание:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Разделение между группами в процентах ширины столбца/полосы"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "Зазор:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "Линия"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "Область"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Область"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Области"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Полоса"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Столбец"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Линия"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Линейный график"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Линии"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Процентные области"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Процентные полосы"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Процентные столбцы"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Процентные линии"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Собранные полосы"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Собранные столбцы"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Начертить"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Неверный шаблон поиска."
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Начертить"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Начертить"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Начертить"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Модуль отображения круговой диаграммы"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Изменение цвета листов"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "Разделение долей:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "Изменять цвета по долям"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "градусов"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "Разделитель:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "Трёхмерная круговая диаграмма"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Круговая диаграмма"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Кольцо"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Разделённая круговая диаграмма"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Разделённое кольцо"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Типы круговых диаграмм по умолчанию"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Модуль отображения круговой диаграммы"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Модуль отображения кольцевой диаграммы"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Радар"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "Число долей:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Контур"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Поверхность"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr ""
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Диаграммы поверхностей"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Диаграммы поверхностей"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% от нормального размера"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Диаметр"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Показывать отрицательные значения"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "Поверхность"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Пузырь"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "Линии XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "Точки XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Линии XY"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sk.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sk.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sk.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4250 @@
+# translation of gnumeric.HEAD.po to Slovak
+# translation of gnumeric.HEAD.sk.po to Slovak
+# translation of sk.po to Slovak
+# Gnumeric Slovak translation
+# Copyright (c) 1999,2000,2001,2002 The Free Software Foundation
+# 1999 Bobo Rajec
+# 2000,2001,2002 Stanislav Visnovsky <visnovsky at nenya.ms.mff.cuni.cz>
+# Stanislav Višňovský <visnovsky at nenya.ms.mff.cuni.cz>, 2002.
+# Stanislav Visnovsky <visnovsky at nenya.ms.mff.cuni.cz>, 2002.
+# Stanislav Visnovsky <visnovsky at kde.org>, 2003.
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric.HEAD\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-09-24 00:24+0200\n"
+"Last-Translator: Stanislav Visnovsky <visnovsky at kde.org>\n"
+"Language-Team: Slovak <sk-i18n at linux.sk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"<bobo at bobo.bspc.sk>\n"
+"Date: 1999-04-30 12:12:02+0000\n"
+"From: Bobo Rajec,BSP Consulting,+42 7 5330 017,, <bobo at bobo.bspc.sk>\n"
+"X-Generator: KBabel 1.2beta3\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "Uloženie do starých súborov tohto typu je kvôli bezpečenosti vypnuté."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Túto funkciu môžete bezpečne vypnúť úpravou zodpovedajúceho súboru plugin."
+"xml."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektívny"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "Súbor obsahuje informácie o module s neplatným id (%s), očakávané %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Nie je možné prečítať informáciu o module zo súboru."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Neznáme meno"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Nepodporovaný typ loadera \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Chyba pri príprave loadera \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Chyba pri čítaní informácií o službe #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Nie je možné prečítať súbor s informáciu o module (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Súbor \"%s\" nie je platný súbor s informáciou o module."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Chyby pri čítaní služieb pre modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Id modulu obsahuje neplatné znaky (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Neznáme meno modulu."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Pre modul s id=\"%s\" nie je definovaný loader."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Modul nemá id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Chyba počas inicializácie loadera modulu (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Nájdete cyklické závislosti modulu."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Nie je možné aktivovať modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Nie je možné nájsť modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Chyba pri aktivácii závislostí modulu."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Chyba pri aktivácii služby modulu #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Chyba počas deaktivácie služby modulu #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Nie je možné načítať loader modulu."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Nepodarilo sa načítať modul s id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Chyba pri načítavaní závislostí modulu."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Nastali chyby pri načítavaní informácií o module zo súboru \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Nie je možné aktivovať modul \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Nie je možné deaktivovať modul \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Chyby pri čítaní informácií o dostupných moduloch."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Chyby počas deaktivácie modulov, ktoré už nie sú na disku."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Tieto moduly už nie sú na disku, ale sú stále aktívne:\n"
+"%s.\n"
+"Mali by ste reštartovať Gnumeric."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Chyba pri aktivácii modulov."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Chyby poča inicializácie systému modulov."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Služba %s nie je podporovaná loaderom."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Nezadané meno súboru s modulom."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Súbor s modulom \"%s\" sa nedá otvoriť."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Súbor s modulom \"%s\" má neplatný formát."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Súbor neobsahuje (symbol \"plugin_file_struct\")."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Súbor má nesprávne magické číslo."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Verzia modulu \"%s\" je iná ako verzia aplikácie \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamické načítavanie modulov nie je na tomto systéme podporované."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Nepodarilo sa zatvoriť súbor s modulom \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Súbor neobsahuje funkciu \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modul neobsahuje funkciu \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Chyba počas načítavania modulu služby."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Inicializačná funkcia v module vrátila chybu."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Upratovacia funkcia v module vrátila chybu."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Všeobecné"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Otváranie súborov nemá popis"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Otváranie súborov - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Chyba pri čítaní súboru."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Ukladanie súborov nemá popis"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Ukladanie súborov - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Chyba pri ukladaní súboru."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Načítanie modulu"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Načítanie GObject"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "V elemente \"service\" nie je atribút \"type\"."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Neznámy typ služby: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Chyba pri čítaní informácií o službe."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Pred aktiváciou služby je nutné ju načítať (PLUGIN_ALWAYS_LOAD najstavené), "
+"ale načítanie sa nepodarilo."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Vzorce"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Odsadenie:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Hľa_dať"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Medzera"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Zarovnanie"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Znak úvodzoviek:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Veľkosť problému"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskrétne"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Diskrétne"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Lineárny"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logické"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logaritmické"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detaily"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatické"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategória:"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Hranice"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Hla_vné značky"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "_Vedľajšie značky"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Krížom"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formát"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Návestie"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Mriežka"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Mriežka"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Hlavné značky:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>ÄŒiara</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Vedľajšie značky:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>ÄŒiara</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "V_nútri"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "_Okolo"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Hore"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "V_nútri"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Invertovať"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Dole"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Okolo"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "Zobraziť _popisky"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Typ:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Titulok"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Mriežka"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "Os X"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Os Y"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Os Z"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Kresliť"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "V"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Výška"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "Å "
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Šírka"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Upozornenie na chybu</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Štýl</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Náhľad</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Farba:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "_Deň"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Šírka čiary:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_s:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graf"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Graf"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Meno"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Krok 1 z 2: Výber typu grafu"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Krok 2 z 2: Úprava grafu"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Upraviť graf"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Pridať"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Typ _kresby"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Graf GNOME Office"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Poradie:"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Orientácia</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Vzorka</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Štýl</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Zobraziť\n"
+"náhľad"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Popis"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Text:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Dáta"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Série"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Nástroj na kreslenie"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Typ grafu"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Grafová téma"
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Odsadenie:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_Textové"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Hodnota"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Písmo"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Štýl"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Jas"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Výplň</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>ÄŒiara</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Značka</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Okraj</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Farba:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Farba _okrajov:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Tvar:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "_Veľkosť:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Štýl:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "_Typ:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Pozadie:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "S_mer:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Koniec:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "_Farba výplne:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "Pri_spôsobiť:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "P_opredie:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "V_zorka:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Vybrať..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Veľkosť:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Začiatok:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_jasnejšie"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_tmavšie"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "bodov"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "roztiahnutý"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Štandardné"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabské"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Pobaltské"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Stredoeurópske"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Čínske"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Azbuka"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grécke"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebrejské"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indické"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japonské"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Kórejské"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turecké"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamské"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Západné"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Iné"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabské (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabské (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabské (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabské (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabské (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabské (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabské (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Arménske (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Pobaltské (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Pobaltské (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Pobaltské (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltské (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Stredoeurópske (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Stredoeurópske (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Stredoeurópske (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Stredoeurópske (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Zjednodušené čínske (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Zjednodušené čínske (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Zjednodušené čínske (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Zjednodušené čínske (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Zjednodušené čínske (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Tradičné čínske (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Tradičné čínske (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Tradičné čínske (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Chorvátske (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Azbuka (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Azbuka (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Azbuka (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Azbuka (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Azbuka (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Azbuka (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Ruské (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrajinské (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrajinské (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Anglické (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Fársí (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Gruzínske (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grécke (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grécke (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grécke (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gudžarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmuchské (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrejské (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebrejské (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebrejské (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrejské (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrejské (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindské (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandské (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japonské (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japonské (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japonské (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Kórejské (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Kórejské (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Kórejské (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Kórejské (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Severské (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumunské (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumunské (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Južná Európa (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thajské (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turecké (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turecké (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turecké (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turecké (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Vlastné"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamské (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamské (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamské (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamské (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Vizuálne hebrejské (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Západné (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Západné (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Západné (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Západné (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Západné (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Lokálne nastavenie:"
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Smer prevodu"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Táto hodnota určuje, či sa spúšťa test iconv."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "čierna"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "svetlá hnedá"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "zlatohnedá"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "tmavá zelená 2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "námornícka modrá"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "tmavá modrá"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "purpurová 2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "veľmi tmavá šedá"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "tmavá červená"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "oranžovočervená"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "zlatá"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "tmavá zelená"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "matná modrá"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "modrá"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "matná purpurová"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "tmavá šedá"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "červená"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "oranžová"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "limetková"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "matná zelená"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "matná modrá 2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "modrá oblohy 2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "purpurová"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "šedá"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "fialová"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "jasná oranžová"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "žltá"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "zelená"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "modrozelená"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "jasná modrá"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "červenopurpurová"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "svetlá šedá"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "ružová"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "svetlá oranžová"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "svetlá žltá"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "svetlá zelená"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "svetlá modrozelená"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "svetlá modrá"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "svetlá purpurová"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "biela"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "purpurová modrá"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "tmavá purpurová"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "modrá oblohy"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "vlastná"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Vlastná farba:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Tieň"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Orientácia</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Súbor '%s' sa nedá otvoriť"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Súbory"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Obrázok"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Vyberte obrázok"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Uložiť všetko"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "_Typ súboru:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Zadaná prípona súboru nezodpovedá vybranému typu súboru. Chcete toto meno "
+"použiť aj tak?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"je meno priečinku"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Nemáte práva pre ukladanie do\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Zošit %s už existuje.\n"
+"Chcete ho prepísať?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normálne"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Tučné"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Tučné šikmé"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Šikmé"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Štýl písma:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Písmo:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Náhľad"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Veľkosť:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Čísla"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Mena"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Účtovníctvo"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Dátum"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "ÄŒas"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Percentá"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Zlomky"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Vedecký"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Text"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Špeciálny"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Vlastný"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Formát záporného čísla"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Číselné formáty"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "_Kategórie:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Počet _desatinných miest:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Zobraziť množstvo v tradičných účtovníckych štýloch."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Zobraziť vstupné hodnoty ako reťezce bez interpretácie."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Zobraziť množstvá meny."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Zobraziť dátumy a prípadne časy."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Zobraziť číselné hodnoty s pevným počtom desatinných miest."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Zobraziť časy."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Zobraziť hodnoty ako najbližšiu aproximáciu zlomkom."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Zobraziť hodnoty ako percentá."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Zobraziť hodnoty ako mocniny 10."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "_Kód formátu:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "Formát _záporného čísla:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Náhľad:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Vybrať vhodný formát automaticky."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Priamo zadať formát v štýle XL"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Formát:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Použiť oddeľovač pre tisíce"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Západná Európa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Východná Európa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Severná Amerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Južná a centrálna Amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Ázia"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Austrália"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "USA/Anglické (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Južná Afrika/Afrikánske (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiópia/Amharské (em_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Spojené arabské emiráty (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrajn (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Alžírsko (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypt (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "India/Arabské (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordánsko (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuvajt (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Lýbia (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Maroko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Omán (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Katar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudská Arábia (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudán (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Sýria (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisko (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Ázerbajdžán (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Bielorusko (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulharsko (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladéš (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/Bengálske (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Francúzsko/Bretonské (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosna a Hercegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Španielsko/Katalánske (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Českár republika (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Veľká Británia/Welšské (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Dánsko (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Rakúsko (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgicko/Nemecké (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Švajčiarsko/Nemecké (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Nemecko (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxembourg/Nemecké (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grécko (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Austrália (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/Anglické (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Veľká Británia (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Anglické (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Írsko (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/Anglické (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nový Zéland (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipíny (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapúr/Anglické (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "USA/Anglické (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Južná Afrika/Anglické (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentína (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolívia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Kostarika (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikánska republika (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ekvádor (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Å panielsko (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexiko (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nikaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Portoriko (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "USA/Å panielske (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estónsko (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Španielsko/Baskitské (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Irán (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Fínsko/Fínske (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Faerské ostrovy (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgicko/Francúzske (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/Francúzske (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Švajčiarsko/Francúzske (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Francúzsko (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Írsko/Galské (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Veľká Británia/Scottish Gaelic (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Španielsko/Galské (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Veľká Británia/Manx Gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/Hindské (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Chorvátsko (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Maďarsko (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Arménsko (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonézia (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Švajčiarsko/Talianske (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Taliansko (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Izrael/Hebrejské (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japonsko (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Gruzínsko (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grónsko (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Kórea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Veľká Británia/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litva (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Lotyšsko (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nový Zéland/Maorské (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedónia (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "India/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malajsia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgicko/Flámske (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Holandsko (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Nórsko/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Nórsko/Bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Francúzsko/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Poľsko (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazília (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugalsko (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumunsko (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rusko (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukrajina/Ruské (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Nórsko/Laponské (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovensko (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovinsko (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albánsko (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Juhoslávia (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Fínsko/Švédske (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Švédsko (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "India/Tamilské (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "India/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadžikistán (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thajsko (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiópia/Tigriňa (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipíny/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turecko (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rusko/Tatarské (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukrajina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistán (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistán (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgicko/Wallonske (we_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "USA/Hebrejské (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Čína (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Čínske (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapúr/Čínske (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Aktuálne kódovanie:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Menu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Menu možností"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Veľkosť indikátora"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Veľkosť rozbaľovacieho indikátora"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Medzera indikátora"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Medzera okolo indikátora"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Ned"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Pon"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Uto"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Str"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Å tv"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Pia"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sob"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Nedeľa"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Pondelok"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Utorok"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Streda"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Å tvrtok"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Piatok"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Sobota"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Máj"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jún"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Júl"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Január"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Február"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Marec"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Apríl"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Máj"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Jún"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Júl"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "August"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "September"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Október"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "November"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "December"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "ÄŒierna"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Modrá"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Modrozelená"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Zelená"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Fialová"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Červená"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Biela"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Žltá"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Spojené arabské emiráty, Dirham"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghánistán, Afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albánsko, Lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Arménsko, Drams"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Holandské antíly, Gulden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, Peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Austrália, Doláre"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Guldeny"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Ázerbajdžán, Manat"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosna a Hercegovina, Prevoditeľná marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dolár"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladéž, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulharsko, Leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, Dinár"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Frank"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermudy, Dolár"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, Dolár"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, Boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazília, Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamy, Dolár"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, Pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Bielorusko, Rubeľ"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dolár"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, Dolár"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongo/Kinshasa, Konžský frank"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Švajčiarsko, Frank"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, Peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Čína, Juan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbia, Peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Kostarika, Kolon"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, Peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde, Escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cyprus, Libra"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Českár republika, Koruny"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Džibuti, Frank"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Dánsko, Krone"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikánska republika, Peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Alžírsko, Dinár"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estónsko, Krooni"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypt, Libra"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiópia, Birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Členské krajiny Euro, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fidži, Dolár"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falklandské ostrovy, Libra"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Anglicko, Libra"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Gruzínsko, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, Libra"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, Cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, Libra"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia Dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, Frank"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, Quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guajana, Dolár"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hongkong, Dolár"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Chorvátsko, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, Gourde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Maďarsko Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonézi, Rupia"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Izrael, Nový šekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, Libra"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India, Rupia"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irák, Dinár"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Irán, Rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, Koruna"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Libra"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamajka, Dolár"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordánsko, Dinár"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japonsko, Jen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Keňa, Šiling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kyrgyzstán, Som"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodža, Riel"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komory, Frank"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (severná), Won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (južná), Won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuvajt, Dinár"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kajmanské ostrovy, Dolár"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazachstán, Tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kip"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanon, Libra"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Srí lanka, Rupia"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Libéria, Dolár"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, Maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litva, Litai"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Lotyšsko, Lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Lýbia, Dinár"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Maroko, Dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldávsko, Lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, Frank"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedónia, Dinár"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Burma, Kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolsko, Tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Makao, Pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauretánia, Ouguija"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, Líra"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Maurícius, Rupia"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maledivy, Rufija"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, Kwacha"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexiko, Peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malajzia, Ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambik, Meticai"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namíbia, Dolár"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigéria, Naira"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nikaragua, Zlatý Kordoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Nórsko, Koruna"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepál, Rupia"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nový Zéland, dolár"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Omán, rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, Nuevo Sole"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nová Guinea, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipíny, Peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistán, Rupia"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Poľsko, Zloté"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguaj, Guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Katar, Rial"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumunsko, Lei"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rusko, Rubeľ"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, Rwandský frank"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudská Arábia, Rial"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomonove ostrovy, Dolár"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Sekely, Rupia"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudán, Dinár"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Švédsko, Koruna"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, Dolár"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Svätá Helena, Libry"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovinsko, Tolár"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovensko, Koruna"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, Leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somálsko, Šiling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, Guilden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome a Principe, Dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Colon"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Sýria, Libra"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swazijsko, Emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thajsko, Baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadžikistán, Rubeľ"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistán, Manat"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisko, Dinár"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turecko, Líra"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad a Tobago, Dolár"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Dolár"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, Nový dolár"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzánia, Šilink"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrajina, Hrivna"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Å ilink"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Spojené štáty americké, Dolár"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, Peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistán, Sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, Bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, Franky"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Striebro, Unce"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Zlato, Unce"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Východokaribský dolár"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "International Monetary Fund (IMF) Special Drawing Rights"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Frank"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, Unce"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platina, Unce"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen, Rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Juhoslávia, Nový dinár"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Južná afrika, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, Kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, Dolár"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Žiadne"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Plné"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatické"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "žiadna"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "Å¡tvorec"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "diamant"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "trojuholník dolu"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "trojuholník hore"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "trojuholník vpravo"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "trojuholník vľavo"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "kruh"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "kríž"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "hviezdička"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "pruh"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "polovičný pruh"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "motýľ"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "hodiny"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Å¡edej"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% Å¡edej"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% Å¡edej"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Å¡edej"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Å¡edej"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horizontálne pruhy"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Vertikálne pruhy"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Opačné diagonálne pruhy"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonálne pruhy"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonálne krížové šrafovanie"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Tučné diagonálne krížové šrafovanie"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tenké horizontálne pruhy"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tenké vertikálne pruhy"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tenké opačné diagonálne pruhy"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tenké diagonálne pruhy"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tenké horizontálne krížové šrafovanie"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tenké diagonálne krížové šrafovanie"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Plná farba popredia"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Malé kruhy"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Polkruhy"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Slama"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Veľké kruhy"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Tehly"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Popisy"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Hodnoty"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Chyba pri spracovaní riadku."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "PlotBarCol"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Ako veľmi sa pruhy prekrývajú zadané ako percentá šírky"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "_Prekryv:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Oddelenie medzi skupinami ako percentá šírky pruhu"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Medzera:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "GrafÄŒiary"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "GrafOblasť"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D susediace pruhy"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D susediace stĺpce"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D percentuálne pruhy"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D percentuálne stĺpce"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D pruhy na sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D stĺpce na sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Susediace pruhy"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Susediace stĺpce"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Susediace horizontálne 3D pruhy zoskupené podľa hlavnej a vedľajšej "
+"kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Susediace horizontálne pruhy zoskupené podľa hlavnej a vedľajšej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Susediace vertikálne 3D pruhy zoskupené podľa hlavnej a vedľajšej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Susediace vertikálne pruhy zoskupené podľa hlavnej a vedľajšej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Oblasť"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Grafy oblastí."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Oblasti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Pruh"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Stĺpec"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "ÄŒiara"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Čiarové grafy."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "ÄŒiary"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe ako percentá súčtu vedľajších v 3D "
+"horizontálnych pruhoch, zoskupené podľa hlavnej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe ako percentá súčtu vedľajších v 3D vertikálnych "
+"pruhoch, zoskupené podľa hlavnej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe ako percentá súčtu vedľajších v horizontálnych "
+"pruhoch, zoskupené podľa hlavnej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe ako percentá súčtu vedľajších vo vertikálnych "
+"stĺpcoch  zoskupené podľa hlavnej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe v horizontálnych 3D pruhoch zoskupené podľa "
+"hlavnej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe v horizontálnych pruhoch zoskupené podľa hlavnej "
+"kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe v 3D stĺpcoch, zoskupené podľa hlavnej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Vedľajšie kategórie na sebe v stĺpcoch, zoskupené podľa hlavnej kategórie."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Percentuálne oblasti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Percentuálne pruhy"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Percentuálne stĺpce"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Percentuálne čiary"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Kreslenie percentuálnej plochy."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Kreslenie percentuálnej čiary."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Oblasti na sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Pruhy na sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Stĺpce na sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "ÄŒiary na sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Kreslenie oblastí na sebe."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Kreslenie čiar na sebe."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "ÄŒiary na sebe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "Percentuálne čiary"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "ÄŒiary na sebe"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Nástroj pre kreslenie oblastí"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Nástroj na kreslenie pruhov"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Štandardné typy 1.5d"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Nástroj na kreslenie čiarových grafov"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Čiarové, pruhové, stĺpcové a grafy oblastí"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Kresliť"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Neplatné heslo"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Kresliť"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Kresliť"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Kresliť"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Nástroj na kreslenie pruhov"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Zmena farieb záložky"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Štandardné typy 1.5d"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "GrafKoláč"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "GrafKruh"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Stupňov proti smeru hodinových ručičiek od 3 hod."
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Časti začínajú _na:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"Štandardná časť každej časti, ktorá ju oddeľuje od stredu meraná ako "
+"percento polomeru koláča"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Oddelenie častí:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Meniť farby častí"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "stupne"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+#, fuzzy
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Štandardná časť každej časti, ktorá ju oddeľuje od stredu meraná ako "
+"percento polomeru koláča"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Oddeľovač:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Veľkosť _stredu:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D rozdelený koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Súčty hlavných ako percentá v každej časti podrozdelenej do sekundárnych "
+"koláčov."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Súčty hlavných ako percentá v každej časti podrozdelenej do sekundárnych "
+"pruhov na sebe."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Viacnásobný koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Viacnásobné koláčové pruhy"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr "Percentá každej časti kruhu v každej sérii s oddelenými okrajmi."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Percentá každej časti kruhu v každej sérii."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Percentá každej časti v 3D koláči."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Percentá každej časti s 3D oddelenými okrajmi."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Percentá každej časti s oddelenými okrajmi."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Percentá každej časti."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Kruh"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Rozdelený koláč"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Rozdelený kruh"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Štandardné typy koláčových"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Koláčové grafy"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Kruhové grafy"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "PlotBarCol"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "GrafOblasť"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Grafy oblastí."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Smerodajná chyba"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Kreslenie oblastí na sebe."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Štandardné typy 1.5d"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Nástroj pre kreslenie oblastí"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Kruhové grafy"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Celé čísla"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Počet"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Grafy oblastí."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Zdroj"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Kruhové grafy"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Koláčové grafy"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Koláčové grafy"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% _normálnej veľkosti"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Parametre"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Zdroj"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+#, fuzzy
+msgid "_Vary colors by bubble"
+msgstr "_Meniť farby častí"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "KresbaXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Bublina"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bublina"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Chyba pri spracovaní riadku."
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Chyba pri spracovaní riadku."
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpolovať medzi viacdimezionálnymi bodmi."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Lineárne interpolovať medzi viacdimezionálnymi bodmi so značkami v každom "
+"bode."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Lineárne interpolovať medzi viacdimezionálnymi bodmi."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Označené interpolované body"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Interpolovať medzi viacdimezionálnymi bodmi so značkami v každom bode."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Kresliť X, Y a bublinovú veľkosť."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "ÄŒiary"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Hodnota"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "ÄŒiary"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2D rozptýlené grafy"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+#, fuzzy
+msgid "Bubble plotting engine"
+msgstr "Koláčové grafy"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Rozptýlené kurzy"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4250 @@
+# Serbian translation of gnumeric
+# Courtesy of Prevod.org team (http://www.prevod.org/) -- 2003.
+#
+# This file is distributed under the same license as the gnumeric package.
+#
+# Maintainer: Slobodan Sredojević <ssl at uns.ns.ac.yu>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-12-08 01:14+0100\n"
+"Last-Translator: Слободан Средојевић <ssl at uns.ns.ac.yu>\n"
+"Language-Team: Serbian (sr) <serbiangnome-lista at nongnu.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "Чување преко старих датотека ове врсте је онемогућено због сигурности."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Можете искључити ову заштиту уређивањем одговарајуће plugin.xml датотеке."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Циљ"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Датотека садржи опис додатка са нетачном идентификацијом (%s), очекивало се %"
+"s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Не могу да прочитам опис додатка из датотеке."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Непознат назив"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Неподржана врста код система за учитавање „%s“."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Грешка приликом припремања система за учитавање „%s“"
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Грешка приликом читања информација о сервису #%d"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Не могу прочитати датотеку са описом додатка („%s“)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Датотека „%s“ није исправна датотека са описом додатка."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Грешка при читању сервиса за додатак са ИД=„%s“."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "ИД додатка садржи недозвољене знаке (%s)"
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Непознато име додатка."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Није дефинисан систем за учитавање или је ИД система погрешна за додатак са "
+"ИД=„%s“."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Додатак нема идентификацију."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+"Грешка у постављању почетних вредности за систем за учитавање додатка(„%s“)."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Препознате су кружне зависности додатака."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Не могу покренути додатак са идентификацијом ид=„%s“."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Не могу пронаћи додатак са идентификацијом ид=„%s“."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Грешка при покретању зависности додатка."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Грешка приликом покретања сервиса додатка #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Грешка приликом заустављања сервиса додатка #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Не могу учитати систем за учитавање додатака."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Не могу да учитам додатак са идентификацијом ид=„%s“."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Грешка приликом учитавања зависности додатка."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Дошло је до грешака приликом читања информација о додатку из датотеке „%s“."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Не могу да покренем додатак „%s“ (ИД: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Не могу прекинути рад додатка „%s“ (ИД: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Грешка приликом читања информација о доступним додацима."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Грешка приликом заустављања додатака који се више не налазе на диску."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Следећи додаци се више не налазе на диску али су још увек покренути:\n"
+"%s.\n"
+"Требало би да сада поново покренете Гнумерик."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Грешке приликом покретања додатака."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Грешке приликом покретања система додатака"
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Систем за учитавање не подржава сервис „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Име датотеке модула није дато."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Не могу да отворим датотеку са модулом „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Датотека са модулом „%s“ има неисправан формат."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Датотека не садржи („plugin_file_struct“ симбол)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Датотека има погрешан магични број."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Верзија додатка „%s“ је различита од програма „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Овај систем не подржава динамичко учитавање модула."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Не могу да затворим датотеку са модулом „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Датотека не садржи „%s“ функцију."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Модул не садржи „%s“ функцију."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Грешка при учитавању сервиса додатака."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+"Функција унутар додатка која поставља почетне вредности је вратила грешку."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Функција унутар додатка која чисти је вратила грешку."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Опште"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Систем за отварање нема опис"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Систем за отварање - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Грешка приликом читања датотеке."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Систем за чување нема опис"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Систем за чување - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Грешка приликом чувања датотеке."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Систем за учитавање додатака"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Систем за учитавање ГОбјеката"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Не постоји „врста“ атрибут за елемент „сервис“."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Непозната врста сервиса: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Грешка у читању описа сервиса."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Морамо учитати сервис пре његовог покретања (PLUGIN_ALWAYS_LOAD је "
+"постављен) али учитавање није успело."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Формуле"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Увуци:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Тражи:"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Размак"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Поравнање"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Знак за цитирање:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Величина проблема"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Дискретан"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Дискретан"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Линеарно"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Логичке"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Логаритамско"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Детаљи"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Аутоматско"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Категорија:"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Ограничења"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "_Минимално"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "М_аксимално"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Гла_вне цртице"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Сп_оредне цртице"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Крст"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Форматирање"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Ознака"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Мрежа"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Мрежа"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Главне цртице:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Линија</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Споредне цртице:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Линија</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "_Унутар"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "Сп_оља"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Високо"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Унутар"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "О_брни"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Ниско"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "Сп_оља"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "П_рикажи ознаке"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "Вр_ста:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Легенда"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Наслов"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Мрежа"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X оса"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y оса"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z оса"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Исцртај"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Висина"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Ширина"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Упозорења на грешку</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Стл</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Узорак</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Боја:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "Д_ан"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Ширина линије:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Са"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "График"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Графикон"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Име"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Корак 1 од 2: Изаберите тип графикона"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Корак 2 од 2: Прилагодите графикон"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Прилагодите графикон"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Убацивањ_е"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Врста и_сцртавања"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Графикони Гномове канцеларије"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "П_оредак"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Правац пружања</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Образац</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Стл</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Прикажи\n"
+"Узорак"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Опис"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Текст:"
+
+# Kako ovo moze biti jednina?????? — и није множина
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Подаци"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Редови"
+
+# steam engine је парна машина, а шта је ово?
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Систем за исцртавање"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Врста исцртавања"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Мотив графика"
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Увуци:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Низови зн_акова"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Тачка"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Писмо"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Стил"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Осветљење"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Испуни</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Линија</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Обележивач</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Издвојено</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Боја:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Боја _издвојеног:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Облик:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Ве_личина:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Стил:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "Вр_ста:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Позадина:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "П_равац:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Крај:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Боја за поп_уњавање:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "Уклоп_и:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Боја:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "Об_разац:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "И_забери..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Величина:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "П_очни:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_светлије"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_тамније"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "штампарских тачака"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "развучено"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Подразумевано"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Гупи"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Арапски"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Балтички"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Централноевропски"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Кинески"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Ћирилични"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Грчки"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Хебрејски"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Индијски"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Јапански"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Корејски"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Турски"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Уникод"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Вијетнамски"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Западноевропски"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Остало"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Арапски (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Арапски (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Арапски (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Арапски (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Арапски (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Арапски (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Арапски (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Јерменски (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Балтички (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Балтички (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Балтички (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Келтски (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Централноевропски (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Централноевропски (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Централноевропски (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Централноевропски (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Кинески поједностављени (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Кинески поједностављени (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Кинески поједностављени (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Кинески поједностављени (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Кинески поједностављени (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Кинески Традиционални (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Кинески Традиционални (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Кинески Традиционални (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Хрватски (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Чирилични (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Ћирилица (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Ћирилица (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Ћирилица (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Ћирилица (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Ћирилица (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Руски (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Украјински (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Украјински (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Енглески (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Фарси (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Грузијски (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Грчки (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Грчки (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Грчки (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Гуџарати (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Гурмуки (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Хебрејски (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Хебрејски (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Хебрејски (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Хебрејски (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Хебрејски (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Хинду (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Исландски (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Јапански (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Јапански (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Јапански (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Корејски (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Корејски (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Корејски (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Корејски (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Нордијски (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Румунски (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Румунски (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Јужноевропски (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Тајландски (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Турски (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Турски (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Турски (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Турски (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Уникод (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Уникод (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Уникод (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Уникод (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Уникод (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Уникод (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Кориснички дефинисан"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Вијетнамски (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Вијетнамски (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Вијетнамски (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Вијетнамски (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Визуелни Хебрејски (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Западни (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Западни (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Западни (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Западни (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Западни (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Локалитет: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Смер претварања"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Ова вредност одлучује који iconv тест ће се извести."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "црна"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "светлобраон"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "златно браон"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "тамно зелена 2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "морнарско плава"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "тамно плава"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "љубичаста 2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "веома тамно сива"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "тамноцрвена"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "црвено-наранџаста"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "златна"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "тамно зелена"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "тупо плава"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "плава"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "тупо љубичаста"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "тамно сива"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "црвена"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "наранџаста"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "дречаво зелена"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "тупо зелена"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "тупо плава 2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "небоплава 2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "љубичаста"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "сива"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "магента"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "светло наранџаста"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "жута"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "зелена"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "цијан"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "светлоплава"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "црвено-љубичаста"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "светлосива"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "роза"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "светло наранџаста"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "светложута"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "светлозелена"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "светлоцијан"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "светлоплава"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "светлољубичаста"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "бела"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "љубичасто-плава"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "тамнољубичаста"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "небоплава"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "произвољно"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Боја по избору:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Сенка"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Правац пружања</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Не може да отвори датотеку '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Датотеке"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Слика"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Изаберите слику"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Сачувај све"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Врста д_атотеке:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Наведени наставак датотеке не одговара изабраној врсти датотеке. Да ли "
+"желите да користите ово име поред свега?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"је име директоријума"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Немате овлашћење да чувате документе под путањом\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Радна свеска %s већ постоји.\n"
+"Желите ли да препишете преко ње?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Нормално"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Масно"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Масно курзивно"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Курзив"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Стил фонта:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Фонт:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Преглед"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Величина:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Број"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Валута"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Рачуноводство"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Датум"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Време"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Проценат"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Разломљено"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Инжењерски"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Текст"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Нарочито"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Произвољно"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Формат негативних бројева"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Формати бројева"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ка_тегорије:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Број децималних _места:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Прикажи величине у традиционалном стилу рачуновођа."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Прикажи улазне вредности као текст без обраде."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Прикажи новчане вредности."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Прикажи датуме и по жељи време у дану."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Прикажи бројевне вредности са утврђеним бројем децимала."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Прикажи време у дану."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Прикажи вредности помоћу најближе разломљене вредности."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Прикажи вредност као проценте."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Прикажи вредности помоћу увећања на-десети."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "К_од _форматирања:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Формат негативних бројева:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Преглед:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "С_имбол:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Сам изабери одговарајуће форматирање."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Наведите непосредно форматирање у XL стилу"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Формат:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Користи раздвојник хиљ_ада"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Западноевропски"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Источноевропски"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Северна Америка"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Јужна и Централна Америка"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Азија"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Африка"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Аустралија"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "САД/енглески (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Јужна Африка/Африканс (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Етиопија/Амхарски (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Уједињени Арапски Емирати (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Бахреин (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Алжир (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Египат (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Индија/Арапски (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Ирак (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Јордан (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Кувајт (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Лебанон (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Либија (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Мароко (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Оман (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Катар (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Саудијска Арабија (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Судан (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Сирија (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Тунис (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Јемен (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Азербејџан (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Белорусија (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Бугарска (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Бангладеш (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Индија/Бенгали (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Француска/бретањски (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Восна и Херцеговина (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Шпанија/каталонски (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Чешка република (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Велика Британија/велшки (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Данска (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Аустрија (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Белгија/немачки (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Швајцарска/немачки (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Немачка (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Луксембург/немачки (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Грчка (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Аустралија (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Боцвана (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Канада/енглески (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Велика Британија (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Хонг Конг/енглески (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Ирска (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Индија/енглески (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Нови Зеланд (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Филипини (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Сингапур/енглески (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "САД/енглески (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Јужна Африка/енглески (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Зимбабве (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Есперанто (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Аргентина (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Боливија (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Чиле (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Колумбија (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Костарика (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Доминиканска република (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Еквадор (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Шпанија (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Гватемала (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Хондурас (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Мексико (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Никарагва (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Панама (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Перу (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Порторико (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Парагвај (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "Ел Салвадор (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "САД/шпански (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Уругвај (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Венецуела (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Естонија (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Шпанија/баскијски (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Иран (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Финска/фински (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Фарска острва (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Белгија/француски (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Канада/француски (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Швајцарска/француски (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Француска (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Ирска/ирски (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Велика Британија/шкотски (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Шпанија/галицијски (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Велика Британија/Manx Gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Индија/хинди (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Хрватска (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Мађарска (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Јерменија (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Индонезија (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Исланд (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Швајцарска/италијански (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Италија (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Израел/хебрејски (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Јапан (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Грузија (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Гренланд (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Кореја (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Велика Британија/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Литванија (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Летонија (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Нови Зеланд/маорски (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Македонија (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Индија/марати (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Малезија (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Малта (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Белгија/фламански (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Холандија (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Норвешка/нинорск (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Норвешка/бокмал (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Француска/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Пољска (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Бразил (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Португалија (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Румунија (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Русија (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Украјина/руски (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Норвешка/сами (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Словачка (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Словенија (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Албанија (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Србија и Црна Гора (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Финска/шведски (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Шведска (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Индија/тамил (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Индија/телугу (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Таџикистан (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Тајланд (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Еритреа (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Етиопија/тигриња (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Филипини/тагалог (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Турска (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Русија/татарски (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Украјина (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Пакистан (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Узбекистан (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Вијетнам (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Белгија/валун (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "САД/јидиш (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Кина (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Хонг Конг/кинески (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Сингапур/кинески (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Тајван (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Текући локалитет: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Мени"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Мени са опцијама"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Величина показатеља"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Величина падајућег показатеља"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Размак поакзатеља"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Размак око показатеља"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Нед"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Пон"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Уто"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Сре"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Чет"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Пет"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Суб"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Недеља"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Понедељак"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Уторак"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Среда"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Четвртак"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Петак"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Субота"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Јан"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Феб"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Мар"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Апр"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Мај"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Јун"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Јул"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Авг"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Сеп"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Окт"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Нов"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Дец"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Јануар"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Фебруар"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Март"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Април"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Мај"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Јун"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Јул"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Август"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Септембар"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Октобар"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Новембар"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Децембар"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "ТАЧНО"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "Нетачно"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Црна"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Плава"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Цијан-плава"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Зелена"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Магента"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Црвена"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Бела"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Жута"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Уједињени Арапски Емирати"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Авганистан, Авганци"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Албанија, Лека"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Јерменија, Драме"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Холандски Антили, гулдени"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Ангола, Кванце"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Аргентина, пезоси"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Аустралија, долари"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Аруба, гулдени"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Азејрбејџан, манати"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Босна и Херцеговина, конвертибилна марка"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Барбадос, долари"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Бангладеш, така"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Бугарска, леве"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Бахреин, динари"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Бурунди, франци"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Бермуда, долари"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Брунеј Дарушалам, долари"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Боливија, боливијаноси"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Бразил, бразилски реал"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Бахами, долари"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Бутан, нгултруми"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Боцвана, пуле"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Белорусија, рубље"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Белизи, долари"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Канада, долари"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Конго/Киншаса, конгонски франци"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Швајцарска, франак"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Чиле, пезоси"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Кина, јуани ренминби"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Колумбија, пезоси"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Костарика, колони"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Куба, пезоси"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Зеленортска Острва, ескудоси"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Кипар, фунте"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Чешка Република, круне"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Џибути, франак"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Данска, круне"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Доминиканска Република, пезоси"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Алжир , алжирски динари"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Естонија, круне"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Египат, фунте"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Еритреја, накфе"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Етиопија, бири"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Земље европске уније, евро"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Фиџи, долари"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Фокландска острва (Малвинас), фунте"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Велика Британија, фунте"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Грузија, лари"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Гвернсиј, фунте"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Гана, седис"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Гибралтар, фунте"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Гамбија, даласи"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Гвинеја, франци"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Гватемала, квецале"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Гујана, долари"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Хонг Конг, долари"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Хондурас, лемпире"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Хрватска, куне"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Хаити, гурде"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Мађарска, форинте"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Индонезија, рупије"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Израел, нови шекели"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Човеково острво, фунте"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Индија, рупје"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Ирак, динар"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Иран, ријали"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Исланд, круне"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Џерси, фунте"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Јамајка, долари"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Јордан, динари"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Јапан, јени"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Кенија, шилинг"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Киргистан, соми"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Камбоџа, риле"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Комори, франак"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Северна Кореја, вони"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Јужна Кореја, вони"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Кувајт, динари"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Кајманска Острва, долари"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Казахстан, тенге"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Лаос, кипе"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Либан, фунте"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Шри Ланка, рупје"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Либерија, долари"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Лесото, малоти"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Литванија, литаје"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Летонија, лати"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Либија, динар"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Мароко, дирхаме"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Молдавија, леи"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Мадагаскар, малагаски франци"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Македонија, денари"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Мијанмар (Бурма), кјате"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Монголија, тугрике"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Макау, патаке"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Мауританија, оугије"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Малта, лире"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Маурицијус, рупје"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Малдиви (Малдивска острва), Руфија"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Малави, Кваче"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Мексико, пезоси"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Малезија, рингици"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Мозамбик, метикаје"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Намибија, долари"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Нигерија, наире"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Никарагва, златне кордобе"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Норвешка, круне"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Непал, непалске рупје"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Нови Зеланд, долари"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Оман, ријале"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Панама, балбое"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Перу, нове соле"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Папуа Нова Гвинеја, кине"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Филипини, пезоси"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Пакистан, рупје"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Пољска, злоти"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Парагвај, гварани"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Катар, ријале"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Румунија, леје"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Русија, рубље"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Руанда, руандски франци"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Саудијска Арабија, ријале"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Соломонска острва, долари"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Сејшели, рупје"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Судан, динари"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Шведска, круне"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Сингапур, долари"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Св. Хелена, фунте"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Словенија, толари"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Словачка, круне"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Сиера Леоне, леоне"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Сомалија, шилинзи"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Себорга, Луиђини"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Сурине, гулдени"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Сао Томе и Принципе, добре"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "Ел Салвадор, колоне"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Сирија, фунте"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Свазиленд, емалангени"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Тајланд, бати"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Таџикистан, рубље"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Туркменистан, манати"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Тунис, динари"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Тонга, панге"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Турска, лире"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Тринидад и Тобаго, долари"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Тувалу, тувалски долари"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Тајван, нови долари"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Танзанија, шилинзи"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Украјина, хривне"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Уганда, шилинзи"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Америка, долари"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Уругвај, пезоси"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Узбекистан, суме"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Венецуела, боливаре"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Вијетнам, донге"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Вануату, вату"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Самоа, тале"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Комунауте Финансијере Африкане BEAC, Франкс"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Сребро, унце"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Злато, унце"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Источнокарипски долари"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Нарочита права повлачења Међународног монетарног фонда (ММФ)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Francs"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Паладијум, унце"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Платина, унце"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Јемен, ријале"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Србија и Црна Гора, динари"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Јужна Африка, ранди"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Замбија, кваче"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Зимбабве, долари"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ништа"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Пун"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Аутоматско"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ништа"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "квадрат"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "ромб"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "троугао доле"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "троугао горе"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "троугао десно"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "троугао лево"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "круг"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "крст"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "звездица"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "трака"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "полутрака"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "лептир"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "часовник"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% сиво"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% сиво"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% сиво"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% сиво"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% сиво"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Хоризонтална пруга"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Усправна пруга"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Обрнута дијагонална пруга"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Дијагонална пруга"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Дијагонални нишан"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Дебели дијагонални нишан"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Танка хоризонтална пруга"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Танка усправна пруга"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Танка обрнута дијагонална пруга"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Танка дијагонална пруга"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Танки хоризонтални нишан"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Танки дијагонални нишан"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Боја исцртавања"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Мали кругови"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Полу кругови"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Велики кругови"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Цигле"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Ознаке"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Вредности"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Грешка при обради линије"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "ТракаКолона"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Колико се траке/колоне преклапају као постотак ширине"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "Пре_клапање:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Размак међу групама као постотак ширине траке/колоне"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Празнина:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "ЦртанаЛинија"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "ЦртанаПоврш"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3Д суседне водоравне линије"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3Д суседне усправне колоне"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3Д водоравне линије са процентима"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3Д усправне колоне са процентима"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D наређане траке"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D наређане колоне"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Суседне водоравне линије"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Суседне усправне колоне"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Суседне водоравне 3D траке груписане према главним и споредним категоријама."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Суседне водоравне траке груписане према главним и споредним категоријама."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Суседне усправне 3D колоне груписане према главним и споредним категоријама."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Суседне усправне колоне груписане према главним и споредним категоријама."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Област"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Цртање области."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Области"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Трака"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Колона"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Линија"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Цртање линије."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Линије"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Споредне категорије наређене према проценту укупног споредног, у водоравним "
+"3D тракама, груписане према главној категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Споредне категорије наређене према проценту укупног споредног, у усправним "
+"3D тракама, груписане према главној категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Споредне категорије наређене према проценту укупног споредног, у водоравним "
+"тракама, груписане према главној категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Споредне категорије наређене према проценту укупног споредног, у усправним "
+"тракама, груписане према главној категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Споредне категорије наређене у водоравним 3D тракама, груписане према "
+"главној категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Споредне категорије наређене у водоравним тракама, груписане према главној "
+"категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Споредне категорије наређене у усправним 3D тракама, груписане према главној "
+"категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Споредне категорије наређене у усправним тракама, груписане према главној "
+"категорији."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Области са процентима"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Траке са процентима"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Колоне са процентима"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Линије са процентима"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Област за цртање процената."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Линија за цртање процената."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Наређане области"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Наређане траке"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Наређане колоне"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Наређане линије"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Цртање наређаних области."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Цртање наређаних линија."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Неозначене линије"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Неозначене линије са процентима"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Неозначене наређане линије"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Систем за исцртавање области"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Систем за исцртавање трака/колона"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Подразумеване врсте 1,5D исцртавања"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Систем за исцртавање линија"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Графикони помоћу линија, области, трака и колона"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Исцртај"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Погрешна лозинка"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Исцртај"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Исцртај"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Исцртај"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Систем за исцртавање трака/колона"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Мењање боје језичка"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Подразумеване врсте 1,5D исцртавања"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "ЦртанаПита"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "ЦртаниПрстен"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Степени у супротном смеру од казаљке на часовнику од 3 часа"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Парчад почињу на:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"Подразумевана вредност за коју је свако парче одвојено од средишта мерено у "
+"процентима полупречника пите"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "Одв_ајање делова:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Мењај боје по парчету:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "степени"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+#, fuzzy
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Подразумевана вредност за коју је свако парче одвојено од средишта мерено у "
+"процентима полупречника пите"
+
+# #-#-#-#-#  balsa.po (Balsa 2)  #-#-#-#-#
+# Нова врста обележја?
+# #-#-#-#-#  galeon.po (galeon 1.3)  #-#-#-#-#
+# Нова врста обележја?
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Раздвојник:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Величина _средишта:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3Д пита"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Подељена 3Д пита"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Више пита"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Проценат сваког учесника приказан у прстену за сваки ред са издвојеним "
+"ивицама последњег прстена."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Проценат сваког учесника приказан у прстену за сваки ред."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Проценат сваког учесника у 3Д пити."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Проценат сваког учесника са издвојеним 3Д ивицама."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Проценат сваког учесника са издвојеним ивицама."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Проценат сваког учесника."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Пита"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Прстен"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Подели питу"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Подели прстен"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Подразумеване врсте „пите“"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Систем за исцртавање пита"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Систем за исцртавање прстена"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "ТракаКолона"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "ЦртанаПоврш"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Цртање области."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Стандардна грешка"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Цртање наређаних области."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Подразумеване врсте 1,5D исцртавања"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Систем за исцртавање области"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Систем за исцртавање прстена"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Цели бројеви"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Број, збир"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Цртање области."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Извор"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Систем за исцртавање прстена"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Пита графици"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Пите"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% у односу на _нормалну величину"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Параметри"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Извор"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+#, fuzzy
+msgid "_Vary colors by bubble"
+msgstr "_Мењај боје по парчету:"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "ЦртежXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Мехур"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Мехур"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Грешка при обради линије"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Грешка при обради линије"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Интерполирај између вишедимензионих тачака."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Линеарно интерполирај између вишедимензионих тачака, са обележивачима у "
+"свакој тачки."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Линеарно интерполирај између вишедимензионих тачака."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Обележивачи у свакој тачки."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+"Линеарно интерполирај између вишедимензионих тачака, са обележивачима у "
+"свакој тачки."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Исцртај X, Y и величину мехура."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY линије"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY тачке"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XY линије"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "Систем за исцртавање разбацаних 2Д графикона"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+#, fuzzy
+msgid "Bubble plotting engine"
+msgstr "Систем за исцртавање пита"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Укључене врсте разбацаног исцртавања"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr at Latn.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr at Latn.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sr at Latn.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4253 @@
+# Serbian translation of gnumeric
+# Courtesy of Prevod.org team (http://www.prevod.org/) -- 2003.
+#
+# This file is distributed under the same license as the gnumeric package.
+#
+# Maintainer: Slobodan Sredojević <ssl at uns.ns.ac.yu>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-12-08 01:14+0100\n"
+"Last-Translator: Slobodan Sredojević <ssl at uns.ns.ac.yu>\n"
+"Language-Team: Serbian (sr) <serbiangnome-lista at nongnu.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Čuvanje preko starih datoteka ove vrste je onemogućeno zbog sigurnosti."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Možete isključiti ovu zaštitu uređivanjem odgovarajuće plugin.xml datoteke."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Cilj"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Datoteka sadrži opis dodatka sa netačnom identifikacijom (%s), očekivalo se %"
+"s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Ne mogu da pročitam opis dodatka iz datoteke."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Nepoznat naziv"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Nepodržana vrsta kod sistema za učitavanje „%s“."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Greška prilikom pripremanja sistema za učitavanje „%s“"
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Greška prilikom čitanja informacija o servisu #%d"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Ne mogu pročitati datoteku sa opisom dodatka („%s“)."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Datoteka „%s“ nije ispravna datoteka sa opisom dodatka."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Greška pri čitanju servisa za dodatak sa ID=„%s“."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "ID dodatka sadrži nedozvoljene znake (%s)"
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Nepoznato ime dodatka."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Nije definisan sistem za učitavanje ili je ID sistema pogrešna za dodatak sa "
+"ID=„%s“."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Dodatak nema identifikaciju."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+"Greška u postavljanju početnih vrednosti za sistem za učitavanje dodatka(„%"
+"s“)."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Prepoznate su kružne zavisnosti dodataka."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Ne mogu pokrenuti dodatak sa identifikacijom id=„%s“."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Ne mogu pronaći dodatak sa identifikacijom id=„%s“."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Greška pri pokretanju zavisnosti dodatka."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Greška prilikom pokretanja servisa dodatka #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Greška prilikom zaustavljanja servisa dodatka #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Ne mogu učitati sistem za učitavanje dodataka."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Ne mogu da učitam dodatak sa identifikacijom id=„%s“."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Greška prilikom učitavanja zavisnosti dodatka."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Došlo je do grešaka prilikom čitanja informacija o dodatku iz datoteke „%s“."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Ne mogu da pokrenem dodatak „%s“ (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Ne mogu prekinuti rad dodatka „%s“ (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Greška prilikom čitanja informacija o dostupnim dodacima."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+"Greška prilikom zaustavljanja dodataka koji se više ne nalaze na disku."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Sledeći dodaci se više ne nalaze na disku ali su još uvek pokrenuti:\n"
+"%s.\n"
+"Trebalo bi da sada ponovo pokrenete Gnumerik."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Greške prilikom pokretanja dodataka."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Greške prilikom pokretanja sistema dodataka"
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Sistem za učitavanje ne podržava servis „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Ime datoteke modula nije dato."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Ne mogu da otvorim datoteku sa modulom „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Datoteka sa modulom „%s“ ima neispravan format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Datoteka ne sadrži („plugin_file_struct“ simbol)."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Datoteka ima pogrešan magični broj."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Verzija dodatka „%s“ je različita od programa „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Ovaj sistem ne podržava dinamičko učitavanje modula."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Ne mogu da zatvorim datoteku sa modulom „%s“."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Datoteka ne sadrži „%s“ funkciju."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modul ne sadrži „%s“ funkciju."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Greška pri učitavanju servisa dodataka."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr ""
+"Funkcija unutar dodatka koja postavlja početne vrednosti je vratila grešku."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Funkcija unutar dodatka koja čisti je vratila grešku."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Opšte"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Sistem za otvaranje nema opis"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Sistem za otvaranje - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Greška prilikom čitanja datoteke."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Sistem za čuvanje nema opis"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Sistem za čuvanje - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Greška prilikom čuvanja datoteke."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Sistem za učitavanje dodataka"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "Sistem za učitavanje GObjekata"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Ne postoji „vrsta“ atribut za element „servis“."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Nepoznata vrsta servisa: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Greška u čitanju opisa servisa."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Moramo učitati servis pre njegovog pokretanja (PLUGIN_ALWAYS_LOAD je "
+"postavljen) ali učitavanje nije uspelo."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formule"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Uvuci:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Traži:"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Razmak"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Poravnanje"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Znak za citiranje:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Veličina problema"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskretan"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Diskretan"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "_Linearno"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logičke"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logaritamsko"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detalji"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatsko"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Kategorija:"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Ograničenja"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "_Minimalno"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_aksimalno"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "Gla_vne crtice"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "Sp_oredne crtice"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Krst"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Formatiranje"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Oznaka"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Mreža"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Mreža"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "<b>Glavne crtice:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "<b>Linija</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Sporedne crtice:</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "<b>Linija</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "_Unutar"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "Sp_olja"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Visoko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Unutar"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "O_brni"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_Nisko"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "Sp_olja"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "P_rikaži oznake"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "Vr_sta:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Legenda"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Naslov"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Mreža"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X osa"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y osa"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z osa"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Iscrtaj"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Visina"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Å irina"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "<b>Upozorenja na grešku</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stl</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "<b>Uzorak</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Boja:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+#, fuzzy
+msgid "Dis_play:"
+msgstr "D_an"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Å irina linije:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Sa"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Grafik"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Grafikon"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Ime"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Korak 1 od 2: Izaberite tip grafikona"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Korak 2 od 2: Prilagodite grafikon"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Prilagodite grafikon"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Ubacivanj_e"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "Vrsta i_scrtavanja"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "Grafikoni Gnomove kancelarije"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "P_oredak"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Pravac pružanja</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Obrazac</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stl</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Prikaži\n"
+"Uzorak"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Opis"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Tekst:"
+
+# Kako ovo moze biti jednina?????? — i nije množina
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Podaci"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Redovi"
+
+# steam engine je parna mašina, a šta je ovo?
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Sistem za iscrtavanje"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Vrsta iscrtavanja"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Motiv grafika"
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Uvuci:"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Nizovi zn_akova"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Tačka"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Pismo"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+#, fuzzy
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr "Osvetljenje"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>Ispuni</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>Linija</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Obeleživač</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Izdvojeno</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Boja:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Boja _izdvojenog:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Oblik:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "Ve_ličina:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Stil:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "Vr_sta:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Pozadina:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "P_ravac:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Kraj:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "Boja za pop_unjavanje:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "Uklop_i:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Boja:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "Ob_razac:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "I_zaberi..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Veličina:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "P_očni:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_svetlije"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_tamnije"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "štamparskih tačaka"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+#, fuzzy
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr "razvučeno"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Podrazumevano"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Gupi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arapski"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltički"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Centralnoevropski"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Kineski"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Ćirilični"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grčki"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebrejski"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indijski"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japanski"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Korejski"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turski"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unikod"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vijetnamski"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Zapadnoevropski"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Ostalo"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arapski (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arapski (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arapski (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arapski (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arapski (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arapski (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arapski (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Jermenski (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltički (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltički (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltički (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltski (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Centralnoevropski (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Centralnoevropski (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Centralnoevropski (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Centralnoevropski (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Kineski pojednostavljeni (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Kineski pojednostavljeni (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Kineski pojednostavljeni (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Kineski pojednostavljeni (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Kineski pojednostavljeni (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Kineski Tradicionalni (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Kineski Tradicionalni (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Kineski Tradicionalni (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Hrvatski (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Čirilični (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Ćirilica (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Ćirilica (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Ćirilica (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Ćirilica (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Ćirilica (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Ruski (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrajinski (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrajinski (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Engleski (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Gruzijski (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grčki (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grčki (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grčki (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gudžarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmuki (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebrejski (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebrejski (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebrejski (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebrejski (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebrejski (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindu (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Islandski (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japanski (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanski (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanski (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Korejski (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Korejski (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Korejski (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Korejski (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordijski (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumunski (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumunski (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Južnoevropski (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Tajlandski (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turski (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turski (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turski (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turski (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unikod (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unikod (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unikod (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unikod (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unikod (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unikod (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Korisnički definisan"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vijetnamski (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vijetnamski (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vijetnamski (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vijetnamski (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Vizuelni Hebrejski (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Zapadni (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Zapadni (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Zapadni (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Zapadni (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Zapadni (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Lokalitet: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Smer pretvaranja"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Ova vrednost odlučuje koji iconv test će se izvesti."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "crna"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "svetlobraon"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "zlatno braon"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "tamno zelena 2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "mornarsko plava"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "tamno plava"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "ljubičasta 2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "veoma tamno siva"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "tamnocrvena"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "crveno-narandžasta"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "zlatna"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "tamno zelena"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "tupo plava"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "plava"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "tupo ljubičasta"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "tamno siva"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "crvena"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "narandžasta"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "drečavo zelena"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "tupo zelena"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "tupo plava 2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "neboplava 2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "ljubičasta"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "siva"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "svetlo narandžasta"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "žuta"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "zelena"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cijan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "svetloplava"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "crveno-ljubičasta"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "svetlosiva"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "roza"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "svetlo narandžasta"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "svetložuta"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "svetlozelena"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "svetlocijan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "svetloplava"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "svetloljubičasta"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "bela"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "ljubičasto-plava"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "tamnoljubičasta"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "neboplava"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "proizvoljno"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Boja po izboru:"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Senka"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "<b>Pravac pružanja</b>"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Ne može da otvori datoteku '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Datoteke"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Slika"
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Izaberite sliku"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Sačuvaj sve"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Vrsta d_atoteke:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Navedeni nastavak datoteke ne odgovara izabranoj vrsti datoteke. Da li "
+"želite da koristite ovo ime pored svega?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"je ime direktorijuma"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Nemate ovlašćenje da čuvate dokumente pod putanjom\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Radna sveska %s već postoji.\n"
+"Želite li da prepišete preko nje?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normalno"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Masno"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Masno kurzivno"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kurziv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stil fonta:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Font:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Pregled"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Veličina:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Broj"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Računovodstvo"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Datum"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Vreme"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Procenat"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Razlomljeno"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Inženjerski"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Tekst"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Naročito"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Proizvoljno"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format negativnih brojeva"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Formati brojeva"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegorije:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Broj decimalnih _mesta:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Prikaži veličine u tradicionalnom stilu računovođa."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Prikaži ulazne vrednosti kao tekst bez obrade."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Prikaži novčane vrednosti."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Prikaži datume i po želji vreme u danu."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Prikaži brojevne vrednosti sa utvrđenim brojem decimala."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Prikaži vreme u danu."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Prikaži vrednosti pomoću najbliže razlomljene vrednosti."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Prikaži vrednost kao procente."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Prikaži vrednosti pomoću uvećanja na-deseti."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "K_od _formatiranja:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Format negativnih brojeva:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Pregled:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_imbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Sam izaberi odgovarajuće formatiranje."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Navedite neposredno formatiranje u XL stilu"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Koristi razdvojnik hilj_ada"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Zapadnoevropski"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Istočnoevropski"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Severna Amerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Južna i Centralna Amerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Azija"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australija"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "SAD/engleski (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Južna Afrika/Afrikans (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopija/Amharski (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Ujedinjeni Arapski Emirati (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrein (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Alžir (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egipat (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Indija/Arapski (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordan (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuvajt (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Lebanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libija (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Maroko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Katar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudijska Arabija (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Sirija (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunis (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbejdžan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Belorusija (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bugarska (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladeš (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "Indija/Bengali (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Francuska/bretanjski (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Vosna i Hercegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Å panija/katalonski (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Češka republika (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Velika Britanija/velški (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Danska (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Austrija (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgija/nemački (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Švajcarska/nemački (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Nemačka (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luksemburg/nemački (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grčka (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australija (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Bocvana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/engleski (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Velika Britanija (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/engleski (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irska (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "Indija/engleski (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Novi Zeland (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filipini (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapur/engleski (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "SAD/engleski (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Južna Afrika/engleski (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabve (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivija (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "ÄŒile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Kolumbija (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Kostarika (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikanska republika (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ekvador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Å panija (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Gvatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Meksiko (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nikaragva (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Portoriko (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paragvaj (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "SAD/Å¡panski (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Urugvaj (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venecuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estonija (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Å panija/baskijski (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finska/finski (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Farska ostrva (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgija/francuski (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/francuski (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Å vajcarska/francuski (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Francuska (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irska/irski (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Velika Britanija/Å¡kotski (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Å panija/galicijski (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Velika Britanija/Manx Gaelic (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "Indija/hindi (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Hrvatska (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Mađarska (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Jermenija (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonezija (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Å vajcarska/italijanski (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italija (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Izrael/hebrejski (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja_JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Gruzija (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grenland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Koreja (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Velika Britanija/Cornish (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litvanija (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Letonija (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Novi Zeland/maorski (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedonija (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Indija/marati (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malezija (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgija/flamanski (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Holandija (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norveška/ninorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norveška/bokmal (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Francuska/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Poljska (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazil (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugalija (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumunija (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Rusija (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukrajina/ruski (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norveška/sami (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovačka (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenija (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albanija (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Srbija i Crna Gora (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finska/Å¡vedski (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Å vedska (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Indija/tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Indija/telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadžikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Tajland (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopija/tigrinja (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filipini/tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turska (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Rusija/tatarski (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukrajina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vijetnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgija/valun (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "SAD/jidiš (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Kina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/kineski (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapur/kineski (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Tajvan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Tekući lokalitet: "
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Meni"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Meni sa opcijama"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Veličina pokazatelja"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Veličina padajućeg pokazatelja"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Razmak poakzatelja"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Razmak oko pokazatelja"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Ned"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Pon"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Uto"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Sre"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*ÄŒet"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Pet"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Sub"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Nedelja"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Ponedeljak"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Utorak"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Sreda"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "ÄŒetvrtak"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Petak"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Subota"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Maj"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Avg"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Januar"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Februar"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Mart"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "April"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Maj"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Jun"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Jul"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Avgust"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Septembar"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Oktobar"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Novembar"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Decembar"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TAÄŒNO"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "Netačno"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Crna"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Plava"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cijan-plava"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Zelena"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Crvena"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Bela"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Žuta"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Ujedinjeni Arapski Emirati"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Avganistan, Avganci"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albanija, Leka"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Jermenija, Drame"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Holandski Antili, guldeni"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, Kvance"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, pezosi"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australija, dolari"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, guldeni"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azejrbejdžan, manati"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosna i Hercegovina, konvertibilna marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dolari"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladeš, taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bugarska, leve"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrein, dinari"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, franci"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, dolari"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunej Darušalam, dolari"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivija, bolivijanosi"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazil, brazilski real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahami, dolari"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Butan, ngultrumi"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Bocvana, pule"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Belorusija, rublje"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belizi, dolari"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, dolari"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongo/Kinšasa, kongonski franci"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Å vajcarska, franak"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "ÄŒile, pezosi"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Kina, juani renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolumbija, pezosi"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Kostarika, koloni"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, pezosi"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Zelenortska Ostrva, eskudosi"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Kipar, funte"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Češka Republika, krune"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "DŽibuti, franak"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danska, krune"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikanska Republika, pezosi"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Alžir , alžirski dinari"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonija, krune"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egipat, funte"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritreja, nakfe"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopija, biri"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Zemlje evropske unije, evro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fidži, dolari"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Foklandska ostrva (Malvinas), funte"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Velika Britanija, funte"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Gruzija, lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Gvernsij, funte"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Gana, sedis"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, funte"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambija, dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Gvineja, franci"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Gvatemala, kvecale"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Gujana, dolari"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, dolari"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempire"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Hrvatska, kune"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gurde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Mađarska, forinte"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonezija, rupije"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Izrael, novi Å¡ekeli"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "ÄŒovekovo ostrvo, funte"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Indija, rupje"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, dinar"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, rijali"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, krune"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "DŽersi, funte"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamajka, dolari"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan, dinari"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, jeni"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenija, Å¡iling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirgistan, somi"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodža, rile"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komori, franak"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Severna Koreja, voni"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Južna Koreja, voni"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuvajt, dinari"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Kajmanska Ostrva, dolari"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazahstan, tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kipe"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Liban, funte"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Å ri Lanka, rupje"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberija, dolari"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesoto, maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litvanija, litaje"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Letonija, lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libija, dinar"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Maroko, dirhame"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldavija, lei"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, malagaski franci"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedonija, denari"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Mijanmar (Burma), kjate"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolija, tugrike"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Makau, patake"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritanija, ougije"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, lire"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauricijus, rupje"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldivi (Maldivska ostrva), Rufija"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malavi, Kvače"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Meksiko, pezosi"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malezija, ringici"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambik, metikaje"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibija, dolari"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigerija, naire"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nikaragva, zlatne kordobe"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norveška, krune"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, nepalske rupje"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Novi Zeland, dolari"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rijale"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboe"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, nove sole"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nova Gvineja, kine"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipini, pezosi"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, rupje"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Poljska, zloti"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paragvaj, gvarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Katar, rijale"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumunija, leje"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rusija, rublje"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, ruandski franci"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudijska Arabija, rijale"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomonska ostrva, dolari"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Sejšeli, rupje"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dinari"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Å vedska, krune"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, dolari"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Sv. Helena, funte"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenija, tolari"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovačka, krune"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Siera Leone, leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalija, Å¡ilinzi"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luiđini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surine, guldeni"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome i Principe, dobre"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, kolone"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Sirija, funte"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Svazilend, emalangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tajland, bati"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadžikistan, rublje"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manati"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunis, dinari"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pange"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turska, lire"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad i Tobago, dolari"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, tuvalski dolari"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Tajvan, novi dolari"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzanija, Å¡ilinzi"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrajina, hrivne"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Å¡ilinzi"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Amerika, dolari"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Urugvaj, pezosi"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, sume"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venecuela, bolivare"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vijetnam, donge"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tale"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Komunaute Finansijere Afrikane BEAC, Franks"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Srebro, unce"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Zlato, unce"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Istočnokaripski dolari"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Naročita prava povlačenja Međunarodnog monetarnog fonda (MMF)"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, Francs"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Paladijum, unce"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique Francs"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platina, unce"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Jemen, rijale"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Srbija i Crna Gora, dinari"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Južna Afrika, randi"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambija, kvače"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabve, dolari"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ništa"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Pun"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Automatsko"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ništa"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "kvadrat"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "romb"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "trougao dole"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "trougao gore"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "trougao desno"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "trougao levo"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "krug"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "krst"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "zvezdica"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "traka"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "polutraka"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "leptir"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "časovnik"
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% sivo"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% sivo"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% sivo"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% sivo"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% sivo"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Horizontalna pruga"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Uspravna pruga"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Obrnuta dijagonalna pruga"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Dijagonalna pruga"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Dijagonalni nišan"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Debeli dijagonalni nišan"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tanka horizontalna pruga"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tanka uspravna pruga"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tanka obrnuta dijagonalna pruga"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tanka dijagonalna pruga"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tanki horizontalni nišan"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tanki dijagonalni nišan"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Boja iscrtavanja"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Mali krugovi"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Polu krugovi"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Veliki krugovi"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Cigle"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Oznake"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Vrednosti"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Greška pri obradi linije"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "TrakaKolona"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Koliko se trake/kolone preklapaju kao postotak Å¡irine"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "Pre_klapanje:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Razmak među grupama kao postotak širine trake/kolone"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Praznina:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "CrtanaLinija"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "CrtanaPovrš"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D susedne vodoravne linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D susedne uspravne kolone"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D vodoravne linije sa procentima"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D uspravne kolone sa procentima"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D naređane trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D naređane kolone"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Susedne vodoravne linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Susedne uspravne kolone"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Susedne vodoravne 3D trake grupisane prema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Susedne vodoravne trake grupisane prema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Susedne uspravne 3D kolone grupisane prema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+"Susedne uspravne kolone grupisane prema glavnim i sporednim kategorijama."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Oblast"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Crtanje oblasti."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Oblasti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Traka"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolona"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linija"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Crtanje linije."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene prema procentu ukupnog sporednog, u vodoravnim "
+"3D trakama, grupisane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene prema procentu ukupnog sporednog, u uspravnim "
+"3D trakama, grupisane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene prema procentu ukupnog sporednog, u vodoravnim "
+"trakama, grupisane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene prema procentu ukupnog sporednog, u uspravnim "
+"trakama, grupisane prema glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene u vodoravnim 3D trakama, grupisane prema "
+"glavnoj kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene u vodoravnim trakama, grupisane prema glavnoj "
+"kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene u uspravnim 3D trakama, grupisane prema glavnoj "
+"kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Sporedne kategorije naređene u uspravnim trakama, grupisane prema glavnoj "
+"kategoriji."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Oblasti sa procentima"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Trake sa procentima"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Kolone sa procentima"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Linije sa procentima"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Oblast za crtanje procenata."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Linija za crtanje procenata."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Naređane oblasti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Naređane trake"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Naređane kolone"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Naređane linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Crtanje naređanih oblasti."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Crtanje naređanih linija."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Neoznačene linije"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Neoznačene linije sa procentima"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Neoznačene naređane linije"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Sistem za iscrtavanje oblasti"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Sistem za iscrtavanje traka/kolona"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Podrazumevane vrste 1,5D iscrtavanja"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Sistem za iscrtavanje linija"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Grafikoni pomoću linija, oblasti, traka i kolona"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Iscrtaj"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Pogrešna lozinka"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Iscrtaj"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Iscrtaj"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Iscrtaj"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Sistem za iscrtavanje traka/kolona"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Menjanje boje jezička"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Podrazumevane vrste 1,5D iscrtavanja"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "CrtanaPita"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "CrtaniPrsten"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Stepeni u suprotnom smeru od kazaljke na časovniku od 3 časa"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Parčad počinju na:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"Podrazumevana vrednost za koju je svako parče odvojeno od središta mereno u "
+"procentima poluprečnika pite"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "Odv_ajanje delova:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "_Menjaj boje po parčetu:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "stepeni"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+#, fuzzy
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Podrazumevana vrednost za koju je svako parče odvojeno od središta mereno u "
+"procentima poluprečnika pite"
+
+# #-#-#-#-#  balsa.po (Balsa 2)  #-#-#-#-#
+# Nova vrsta obeležja?
+# #-#-#-#-#  galeon.po (galeon 1.3)  #-#-#-#-#
+# Nova vrsta obeležja?
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Razdvojnik:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Veličina _središta:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D pita"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "Podeljena 3D pita"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Više pita"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Procenat svakog učesnika prikazan u prstenu za svaki red sa izdvojenim "
+"ivicama poslednjeg prstena."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Procenat svakog učesnika prikazan u prstenu za svaki red."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Procenat svakog učesnika u 3D piti."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Procenat svakog učesnika sa izdvojenim 3D ivicama."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Procenat svakog učesnika sa izdvojenim ivicama."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Procenat svakog učesnika."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Pita"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Prsten"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Podeli pitu"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Podeli prsten"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Podrazumevane vrste „pite“"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Sistem za iscrtavanje pita"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Sistem za iscrtavanje prstena"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "TrakaKolona"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "CrtanaPovrš"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Crtanje oblasti."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Standardna greška"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Crtanje naređanih oblasti."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Podrazumevane vrste 1,5D iscrtavanja"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+#, fuzzy
+msgid "Radar Area plotting engine"
+msgstr "Sistem za iscrtavanje oblasti"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Sistem za iscrtavanje prstena"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Celi brojevi"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Broj, zbir"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Crtanje oblasti."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Izvor"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Sistem za iscrtavanje prstena"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Pita grafici"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Pite"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% u odnosu na _normalnu veličinu"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Parametri"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Izvor"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+#, fuzzy
+msgid "_Vary colors by bubble"
+msgstr "_Menjaj boje po parčetu:"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "CrtežXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Mehur"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Mehur"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Greška pri obradi linije"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Greška pri obradi linije"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpoliraj između višedimenzionih tačaka."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Linearno interpoliraj između višedimenzionih tačaka, sa obeleživačima u "
+"svakoj tački."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Linearno interpoliraj između višedimenzionih tačaka."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Obeleživači u svakoj tački."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+"Linearno interpoliraj između višedimenzionih tačaka, sa obeleživačima u "
+"svakoj tački."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Iscrtaj X, Y i veličinu mehura."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY linije"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY tačke"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XY linije"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "Sistem za iscrtavanje razbacanih 2D grafikona"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+#, fuzzy
+msgid "Bubble plotting engine"
+msgstr "Sistem za iscrtavanje pita"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Uključene vrste razbacanog iscrtavanja"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sv.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sv.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/sv.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4219 @@
+# Swedish messages for Gnumeric.
+# Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Richard Hult <rhult at codefactory.se>, 1999, 2000, 2001.
+# Andreas Hyden <a.hyden at cyberpoint.se>, 2000.
+# Christian Rose <menthos at menthos.com>, 2000, 2001, 2002.
+# Jörgen Tegnér <jorgen.tegner at telia.com>, 2001.
+# Jan Morén <jan.moren at lucs.lu.se>, 2002.
+#
+# $Id: sv.po,v 1.319 2005/02/12 17:53:42 jody Exp $
+#
+# Regler:
+#
+# * ' översätts med \"
+#
+# * Svenskt decimaltecken är komma (,), inte punkt (.) som i originalet.
+#   Använd komma i översättningarna, för det gör Gnumeric. I
+#   funktionsuttryck åtskiljs parametrarna med semikolon (;), inte komma
+#   (,) som i originalet. Kom ihåg detta då exempel och
+#   funktionsanrop översätts.
+#
+# * [Red] i formatkoderna är en färgkod och ska INTE översättas. Inte nu
+#   heller.
+#   Sluta då.
+#   Sluta bråka.
+#
+# * Ta inte bort skräpsträngar från slutet (markerade med #~).
+#
+# * Skriv en kommentar över strängar du är osäker på: # FIXME: kommentar.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-11-03 14:33+0900\n"
+"Last-Translator: Jan Morén <jan.moren at lucs.lu.se>\n"
+"Language-Team: Swedish <sv at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+"Överskrivning av gamla filer av denna typ är inaktiverat av säkerhetsskäl."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Du kan stänga av denna säkerhetsdetalj genom att redigera lämplig plugin.xml-"
+"fil."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Objektiv"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Filen innehåller insticksmodulinformation med felaktigt id (%s), %s "
+"förväntades."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Kan inte läsa insticksmodulinformation från fil."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Okänt namn"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Inläsartypen \"%s\" stöds inte."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Fel vid förberedande av inläsare \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Fel vid läsning av information för tjänst nummer %d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Kan inte läsa infofilen från insticksmodul (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Filen \"%s\" är inte en giltig infofil från insticksmodul."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Fel vid läsning av tjänster för insticksmodulen med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Insticksmodul-id innehåller otillåtna tecken (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Okänt namn på insticksmodul."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Ingen inläsare är angiven eller inläsnings-id felaktigt för insticksmodulen "
+"med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Insticksmodulen har inget id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Fel vid initiering av insticksmodulinläsare (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Fann cykliska beroenden mellan insticksmoduler."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Kunde inte aktivera insticksmodulen med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Kunde inte hitta insticksmodulen med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Fel vid aktivering av insticksmodulberoenden."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Fel vid aktivering av insticksmodultjänst %d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Fel vid inaktivering av insticksmodultjänst %d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Kan inte läsa in insticksmodulinläsare."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Kunde inte läsa in insticksmodulen med id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Fel vid inläsning av insticksmodulberoenden."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Fel inträffade vid läsning av insticksmodulinformation från filen \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Kunde inte aktivera insticksmodulen \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Kunde inte inaktivera insticksmodulen \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Fel vid läsning av information om tillgängliga insticksmoduler."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr ""
+"Fel vid inaktivering av insticksmoduler som inte längre finns på hårddisken."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Följande insticksmoduler finns inte längre på hårddisken men är fortfarande "
+"aktiva:\n"
+"%s.\n"
+"Du borde starta om Gnumeric nu."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Fel vid aktivering av insticksmoduler."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Fel vid initiering av insticksmodulsystem."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr "Inläsare har ingen metod set_attributes.\n"
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr "Inläsare har ingen metod load_base.\n"
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Tjänsten \"%s\" stöds inte av inläsaren."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Modulfilnamnet har inte angivits."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Kan inte öppna modulfilen \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Modulfilen \"%s\" har ogiltigt format."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Filen innehåller inte (symbolen \"plugin_file_struct\")."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Filen har ett felaktigt magiskt nummer."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Insticksmodulversionen \"%s\" skiljer sig från programmet \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Dynamisk modulinläsning stöds inte på detta system."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Kan inte stänga modulfilen \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Filen innehåller inte funktionen \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modulen innehåller inte funktionen \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Fel vid inläsning av insticksmodultjänst."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Initieringsfunktionen i insticksmodulen returnerade ett fel."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Uppstädningsfunktionen i insticksmodulen returnerade ett fel."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Allmän"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Filöppnaren har ingen beskrivning"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Filöppnare - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Fel vid läsning av fil."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Filspararen har ingen beskrivning"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Filsparare -  %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Fel vid sparande av fil."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Inläsare för insticksmoduler"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObjectinläsare"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "Inget \"typ\"-attribut på \"tjänst\"-element."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Okänd tjänstetyp: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Fel vid läsning av information för tjänst."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Vi måste läsa in tjänst innan vi aktiverar den (PLUGIN_ALWAYS_LOAD är satt) "
+"men inläsningen misslyckades."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "sidor"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Indrag:"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Sök efter"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Justering"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Citat_tecken:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Problemstorlek"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Diskret"
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr "Diskret mappning"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "Linjär"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr "Linjär mappning"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Log"
+msgstr "Log"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr "Logaritmisk mappning"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "Detaljer"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Automatisk"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr "Kategorier mellan _skalstreck"
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr "Kategorier mellan _etiketter"
+
+#: goffice/graph/gog-axis.c:1466
+msgid "_Cross at category #"
+msgstr "_Kors vid kategori #"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+msgid "Bounds"
+msgstr "Gränser"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "M_ax"
+
+# ZZZ
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr "S_tora skalstreck"
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr "S_må skalstreck"
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "_Kors"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Format"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Rubrik"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "FintRutnät"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "GrovtRutnät"
+
+# ZZZ
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>Stora skalstreck</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+msgid "<b>Mapping</b>"
+msgstr "<b>Mappning</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+msgid "<b>Minor ticks</b>"
+msgstr "<b>Små skalstreck</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>Position</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "I_nuti"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "U_tanför"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "_Hög"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "_Inuti"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "_Invertera axel"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "_LÃ¥g"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "_Utanför"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "_Visa etiketter"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "T_yp:"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "Förklaring"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "Titel"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "Rutnät"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr "X-axel"
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr "Y-axel"
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr "Z-Axel"
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr "Cirkulär axel"
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr "Radiell axel"
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr "Graf"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "Höjd"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "B"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "Bredd"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr "Ingen felstapel visad"
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr "Positiv felstapel visad"
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr "Negativ felstapel visad"
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr "Hel felstapel visad"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>Felkategori</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>Värden</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "Fä_rg:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "S_kärm:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+"Ingen\n"
+"Absolut\n"
+"Relativ\n"
+"Procent"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "_Linjebredd:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "_Bredd:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "Graf"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "Diagram"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Namn"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Steg 1 av 2: Välj typ av graf"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Steg 2 av 2: Anpassa graf"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "Anpassa graf"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Infoga"
+
+#: goffice/graph/gog-guru.c:1239
+msgid "_Plot Type"
+msgstr "_Plottyp"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME-office graf"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr "Flytta _framåt"
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr "Flytta _överst"
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr "Flytta _bakåt"
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr "Flytta _underst"
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "_Ordning"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>Definition</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>Mönster</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>Stil</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Exempel"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Beskrivning"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "_Text:"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "Data"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "Serier"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr "Grafmotor"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Plottyp"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "Diagramtema"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "Index:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "Inställningar"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Punkt"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d × %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Typsnitt"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Stil"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+"2 färger\n"
+"Ljusstyrka"
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>fyll</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>rad</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+msgid "<b>Marker</b>"
+msgstr "<b>Markör</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>Kontur</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "F_ärg:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+"Inget\n"
+"Mönster\n"
+"Färgskala\n"
+"Bild"
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "K_onturfärg:"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "_Form:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "S_torlek:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "St_il:"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "T_yp:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "_Bakgrund:"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "_Riktning:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "_Slut:"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "F_yllningsfärg:"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "_Anpassa till:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "_Förgrund:"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "_Mönster:"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "_Markera..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "_Storlek:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "_Tillstånd:"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+msgid "_brighter"
+msgstr "_ljusare"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+msgid "_darker"
+msgstr "_mörkare"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pkter"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+"utsträckt\n"
+"tapet"
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Standard"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "Arabiska"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "Baltiska"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "Centraleuropeiska"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "Kinesiska"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "Kyrilliska"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "Grekiska"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "Hebreiska"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "Indiska"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "Japanska"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "Koreanska"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "Turkiska"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "Vietnamesiska"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "Västerländsk"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "Annan"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "Arabiska (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "Arabiska (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "Arabiska (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "Arabiska (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "Arabiska (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "Arabiska (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "Arabiska (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "Armeniska (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "Baltiska (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "Baltiska (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "Baltiska (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "Keltiska (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "Centraleuropeiska (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "Centraleuropeiska (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "Centraleuropeiska (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "Centraleuropeiska (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "Kinesiska förenklad (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "Kinesiska förenklad (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "Kinesiska förenklad (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "Kinesiska förenklad (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "Kinesiska förenklad (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "Kinesiska traditionell (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "Kinesiska traditionell (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "Kinesiska traditionell (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "Croatiska (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "Kyrilliska (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "Kyrilliska (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "Kyrilliska (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "Kyrilliska (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "Kyrilliska (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "Kyrilliska (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "Ryska (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "Ukrainska (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "Ukrainska (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "Engelska (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "Farsi (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "Georgiska (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "Grekiska (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "Grekiska (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "Grekiska (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "Gujarati (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "Gurmukhi (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "Hebreiska (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "Hebreiska (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "Hebreiska (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "Hebreiska (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "Hebreiska (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "Hindi (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "Isländska (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "Japanska (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "Japanska (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "Japanska (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "Koreanska (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "Koreanska (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "Koreanska (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "Koreanska (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "Nordiska (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "Rumänska (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "Rumänska (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "Sydeuropeiska (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "Thai (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "Turkiska (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "Turkiska (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "Turkiska (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "Turkiska (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "Unicode (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "Unicode (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "Unicode (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "Unicode (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "Unicode (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "Egendefinierad"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "Vietnamesiska (TVCN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "Vietnamesiska (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "Vietnamesiska (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "Vietnamesiska (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "Visuell Hebreiska (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "Västerländsk (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "Västerländsk (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "Västerländsk (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "Västerländsk (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "Västerländsk (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "Lokal: "
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "Konverteringsriktning"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "Det här värdet avgör vilket iconv-test som skall utföras."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "svart"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr "ljusbrun"
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr "guldbrun"
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr "mörkgrön #2"
+
+#: goffice/gtk/go-color-palette.c:99
+msgid "navy"
+msgstr "marinblå"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr "mörkblå"
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr "lila #2"
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr "mycket mörk grå"
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr "mörkröd"
+
+#: goffice/gtk/go-color-palette.c:105
+msgid "red-orange"
+msgstr "röd-orange"
+
+#: goffice/gtk/go-color-palette.c:106
+msgid "gold"
+msgstr "guld"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr "mörkgrön"
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr "blek blå"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+msgid "blue"
+msgstr "blå"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr "blek lila"
+
+#: goffice/gtk/go-color-palette.c:111
+msgid "dark gray"
+msgstr "mörkgrå"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "röd"
+
+#: goffice/gtk/go-color-palette.c:114
+msgid "orange"
+msgstr "orange"
+
+#: goffice/gtk/go-color-palette.c:115
+msgid "lime"
+msgstr "limegrön"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr "blek grön"
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr "blek blå #2"
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr "himmelsblå #2"
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr "lila"
+
+#: goffice/gtk/go-color-palette.c:120
+msgid "gray"
+msgstr "grå"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+msgid "magenta"
+msgstr "magenta"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr "ljusorange"
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+msgid "yellow"
+msgstr "gul"
+
+#: goffice/gtk/go-color-palette.c:125
+msgid "green"
+msgstr "grön"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+msgid "cyan"
+msgstr "cyan"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr "ljusblå"
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr "rödlila"
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr "ljusgrå"
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+msgid "pink"
+msgstr "rosa"
+
+#: goffice/gtk/go-color-palette.c:132
+msgid "light orange"
+msgstr "ljusorange"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr "ljusgul"
+
+#: goffice/gtk/go-color-palette.c:134
+msgid "light green"
+msgstr "ljusgrön"
+
+#: goffice/gtk/go-color-palette.c:135
+msgid "light cyan"
+msgstr "ljuscyan"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr "ljusblå"
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr "ljuslila"
+
+#: goffice/gtk/go-color-palette.c:138
+msgid "white"
+msgstr "vit"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr "lilaaktig blå"
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr "mörklila"
+
+#: goffice/gtk/go-color-palette.c:149
+msgid "sky blue"
+msgstr "himmelsblå"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "anpassad"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "Egen färg..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Skuggtyp"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "Orientering"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr "Önskad bredd"
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr "Önskad höjd"
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr "Docka verktygsraden"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr "Avdocka verktygsraden"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Kan inte öppna filen \"%s\""
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "Alla filer"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "Bilder"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "Välj en bild"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "Spara som"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "Filt_yp:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Den givna ändelsen passar inte den valda filtypen. Vill du använda detta "
+"namn i alla fall?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"är ett katalognamn"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Du har inte rättigheter att spara till\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"En fil kallad <i>%s</i> finns redan i %s.\n"
+"\n"
+"Vill du skriva över den?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Fetstil"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Fet kursiv"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Kursiv"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr "AaBbCcDdEe12345"
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Stil:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Typsnitt:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Förhandsgranskning"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Storlek:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Tal"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "Valuta"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "Redovisning"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Datum"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Tid"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Procent"
+
+#: goffice/gtk/go-format-sel.c:81
+msgid "Fraction"
+msgstr "Bråk"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "Vetenskaplig"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Text"
+
+#: goffice/gtk/go-format-sel.c:84
+msgid "Special"
+msgstr "Special"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Anpassad"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Format för negativa tal"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Talformat"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "Ka_tegori:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Deci_maler:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr "Visa värden i traditionell revisionsstil."
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr "Visa och mata in värden utan någon tolkning."
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr "Visa valutavärden."
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr "Visa datum och, valfritt, tidpunkter."
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr "Visa numeriska värden med ett fixt antal decimaler."
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr "Visa tidpunkter."
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr "Visa vären som närmaste rationella approximation."
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr "Visa värden som procent."
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr "Visa värden med tiopotensskalning."
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "Formatera k_od:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "_Format för negativa tal:"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "Förhandsgranskning:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "S_ymbol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr "Välj automatiskt ett lämpligt format."
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr "Välj ett XL-typ format direkt"
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Format:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Använd tusentalsseparator"
+
+#: goffice/gtk/go-locale-sel.c:68
+msgid "Western Europe"
+msgstr "Centraleuropa"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr "Östeuropa"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr "Nordamerika"
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr "Syd- och Centralamerika"
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr "Asien"
+
+#: goffice/gtk/go-locale-sel.c:73
+msgid "Africa"
+msgstr "Afrika"
+
+#: goffice/gtk/go-locale-sel.c:74
+msgid "Australia"
+msgstr "Australien"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr "Förenta Staterna/Engelska (C)"
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Sydafrika Afrikaan (af_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr "Etiopien/Amharic (am_ET)"
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr "Förenade Arabemiraten (ar_AE)"
+
+#: goffice/gtk/go-locale-sel.c:110
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain (ar_BH)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr "Algeriet (ar_DZ)"
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr "Egypten (ar_EG)"
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr "Indien/Arabiska (ar_IN)"
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr "Irak (ar_IQ)"
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr "Jordanien (ar_JO)"
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait (ar_KW)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr "Libanon (ar_LB)"
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr "Libyen (ar_LY)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr "Marocko (ar_MA)"
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr "Oman (ar_OM)"
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr "Qatar (ar_QA)"
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudiarabien (ar_SA)"
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr "Sudan (ar_SD)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr "Syrien (ar_SY)"
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisien (ar_TN)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr "Jemen (ar_YE)"
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbajdzjan (az_AZ)"
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr "Vitryssland (be_BY)"
+
+#: goffice/gtk/go-locale-sel.c:129
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgarien (bg_BG)"
+
+#: goffice/gtk/go-locale-sel.c:130
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh (bn_BD)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr "India/Bengaliska (bn_IN)"
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr "Frankrike/Bretagne (br_FR)"
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosnien och Hercegovina (bs_BA)"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr "Spanska/Katalanska (ca_ES)"
+
+#: goffice/gtk/go-locale-sel.c:135
+msgid "Czech Republic (cs_CZ)"
+msgstr "Tjeckien (cs_CZ)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr "Storbritannien/Walesiska (cy_GB)"
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr "Danmark (da_DK)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr "Österrike (de_AT)"
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr "Belgien/Tyska (de_BE)"
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr "Schweiz/Tyska (de_CH)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr "Tyskland (de_DE)"
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr "Luxemburg/Tyska (de_LU)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr "Grekland (el_GR)"
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr "Australien (en_AU)"
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr "Botswana (en_BW)"
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr "Kanada/Engelska (en_CA)"
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr "Storbritannien (en_GB)"
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr "Hong Kong/Engelska (en_HK)"
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr "Irland (en_IE)"
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr "India/Engelska (en_IN)"
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr "Nya Zeeland (en_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr "Filippinerna (en_PH)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr "Singapore/Engelska (en_SG)"
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr "Förenta Staterna/Engelska (en_US)"
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr "Sydafrika/Engelska (en_ZA)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr "Zimbabwe (en_ZW)"
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr "Esperanto (eo_EO)"
+
+#: goffice/gtk/go-locale-sel.c:158
+msgid "Argentina (es_AR)"
+msgstr "Argentina (es_AR)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr "Bolivia (es_BO)"
+
+#: goffice/gtk/go-locale-sel.c:160
+msgid "Chile (es_CL)"
+msgstr "Chile (es_CL)"
+
+#: goffice/gtk/go-locale-sel.c:161
+msgid "Colombia (es_CO)"
+msgstr "Colombia (es_CO)"
+
+#: goffice/gtk/go-locale-sel.c:162
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica (es_CR)"
+
+#: goffice/gtk/go-locale-sel.c:163
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominikanska republiken (es_DO)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr "Ecuador (es_EC)"
+
+#: goffice/gtk/go-locale-sel.c:165
+msgid "Spain (es_ES)"
+msgstr "Spanien (es_ES)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala (es_GT)"
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr "Honduras (es_HN)"
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr "Mexico (es_MX)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr "Nicaragua (es_NI)"
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr "Panama (es_PA)"
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr "Peru (es_PE)"
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr "Puerto Rico (es_PR)"
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr "Paraguay (es_PY)"
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador (es_SV)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr "Förenta Staterna/Spanska (es_US)"
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay (es_UY)"
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela (es_VE)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr "Estland (et_EE)"
+
+#: goffice/gtk/go-locale-sel.c:179
+msgid "Spain/Basque (eu_ES)"
+msgstr "Spanien/Baskien (eu_ES)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr "Iran (fa_IR)"
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr "Finland/Finska (fi_FI)"
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr "Färöarna (fo_FO)"
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr "Belgien/Franska (fr_BE)"
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr "Kanada/Franska (fr_CA)"
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr "Schweiz/Franska (fr_CH)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr "Frankrike (fr_FR)"
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr "Irland/Gaeliska (ga_IE)"
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr "Storbritannien/Skotsk Gaeliska (gd_GB)"
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr "Spanska/Galiciska (gl_ES)"
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr "Storbritannien/Manx Gaeliska (gv_GB)"
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr "India/Hindi (hi_IN)"
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr "Kroatien (hr_HR)"
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr "Ungern (hu_HU)"
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr "Armeniska (hy_AM)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr "Indonesien (id_ID)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr "Island (is_IS)"
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr "(iso14651_t1)"
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr "Schweiz/Italienska (it_CH)"
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr "Italien (it_IT)"
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr "Israel/Hebreiska (iw_IL)"
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr "Japan (ja-JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr "Georgien (ka_GE)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr "Grönland (kl_GL)"
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr "Korea (ko_KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr "Storbritannien/Korniska (kw_GB)"
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr "Litauen (lt_LT)"
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr "Lettland (lv_LV)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr "Nya Zeeland/Maori (mi_NZ)"
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr "Makedonien (mk_MK)"
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr "Indien/Marathi (mr_IN)"
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr "Malaysia (ms_MY)"
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr "Malta (mt_MT)"
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr "Belgien/Flamländska (nl_BE)"
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr "Nederländerna (nl_NL)"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr "Norge/Nynorsk (nn_NO)"
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr "Norge/Bokmål (no_NO)"
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr "Frankrike/Occitan (oc_FR)"
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr "Poland (pl_PL)"
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr "Brazilien (pt_BR)"
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr "Portugal (pt_PT)"
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr "Rumänien (ro_RO)"
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr "Ryssland (ru_RU)"
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "Ukraina/Ryska (ru_UA)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr "Norge/Samiska (se_NO)"
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakien (sk_SK)"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenien (sl_SI)"
+
+#: goffice/gtk/go-locale-sel.c:228
+msgid "Albania (sq_AL)"
+msgstr "Albanien (sq_AL)"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr "Jugoslavien (sr_YU)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr "Finland/Svenska (sv_FI)"
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr "Sverige (sv_SE)"
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr "Indien/Tamil (ta_IN)"
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr "Indien/Telugu (te_IN)"
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tadzjikistan (tg_TJ)"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr "Thailand (th_TH)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr "Eritrea (ti_ER)"
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr "Etiopien/Tigrinya (ti_ET)"
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr "Filippinerna/Tagalog (tl_PH)"
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr "Turkiet (tr_TR)"
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr "Ryssland/Tartar (tt_RU)"
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr "Ukraina (uk_UA)"
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan (ur_PK)"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan (uz_UZ)"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "Vietnam (vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr "Belgien/Vallonska (wa_BE)"
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr "Förenta Staterna/Yiddish (yi_US)"
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "Kina (zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "Hong Kong/Kinesiska (zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "Singapore/Kinesiska (zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "Taiwan (zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "Aktuell lokal:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "Meny"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "Inställningsmenyn"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr "Indikatorstorlek"
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr "Storlek på rullliste-indikatorn"
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr "Indikatorutfyllnad"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr "Utfyllnad runt indikatorn"
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*sön"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*mån"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*tis"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*ons"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*tor"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*fre"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*lör"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "söndag"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "måndag"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "tisdag"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "onsdag"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "torsdag"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "fredag"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "lördag"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*jan"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*feb"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*apr"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*maj"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*jun"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*jul"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*aug"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*sep"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*okt"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*nov"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*dec"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "januari"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "februari"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "mars"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "april"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "maj"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "juni"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "juli"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "augusti"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "september"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "oktober"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "november"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "december"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "SANT"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSKT"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Svart"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Blå"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Cyan"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Grön"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Magenta"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Röd"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Vit"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Gul"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "Förenade Arabemiraten, dirham"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albanien, lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenien, dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Nederländska Antillerna, antillergulden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina, peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australien, dollar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, arubagulden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbajdzjan, manat"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosnien och Hercegovina, konvertibla mark"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, dollar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgarien, lev"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, dinarer"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, franc"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, dollar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei, dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, bolivianos"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brasilien, real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, dollar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana, pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Vitryssland, rubel"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, dollar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Demokratiska Republiken Kongo, Kongoleanska franc"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Schweiz, franc"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "China, yuan renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, colón"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Kuba, peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Kap Verde, escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cypern, pund"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Tjeckien, koruna"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti, franc"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danmark, kroner"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominikanska republiken, peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algeriet, dinarer"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estland, kronor"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypten, pund"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritrea, nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etiopien, birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Europeiska unionen, euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, dollar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falklandsöarna, pund"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Storbritannien, pund"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Georgien, lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, pund"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana, cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Gibraltar, pund"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia, dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Guinea, franc"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala, quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana, dollar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hongkong, dollar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Kroatien, kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, gourde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Ungern, forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesien, rupiah"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel, shekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, pund"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Indien, rupier"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, dinarer"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran, rial"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Island, kronor"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, pund"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica, dollar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan, dinarer"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan, yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, schilling"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kirgizistan, somer"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kambodja, riel"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komororerna, franc"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Nordkorea, won"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Sydkorea, won"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait, dinarer"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Caymanöarna, dollar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakstan, tenge"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, kip"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Libanon, pund"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka, rupier"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia, dollar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho, loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Litauen, litas"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Lettland, lats"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libyen, dinarer"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Marocko, dirham"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldavien, leu"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, franc"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedonien, dinarer"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma), kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongoliet, tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macao, pataca"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauretanien, ouguiya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, lire"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius, rupier"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldiverna, rufiyaa"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi, kwacha"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexiko, peso"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysia, ringgit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Moçambique, metical"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia, dollar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria, naira"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua, cordoba oro"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norge, kronor"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, rupier"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Nya Zeeland, dollar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman, rial"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, ny sol"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Nya Guinea, kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filippinerna, peso"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, rupier"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polen, zloty"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, guarani"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar, rial"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Rumänien, leu"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Ryssland, rubel"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda, franc"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudiarabien, riyal"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Salomonöarna, dollar"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychellerna, rupier"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, dinarer"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Sverige, kronor"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore, dollar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Saint Helena, pund"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenien, tolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakien, koruna"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone, leone"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia, shilling"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, gulden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "São Tomé och Principe, dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, colón"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syrien, pund"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, lilangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand, baht"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tadzjikistan, somoni"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Turkmenistan, manat"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisien, dinarer"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, pa'anga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turkiet, lira"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad och Tobago, dollar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, dollar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan, nya dollar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania, shilling"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraina, hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, shilling"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Förenta staterna, dollar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, peso"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan, sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela, bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine BEAC, franc"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Silver, uns"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Guld, uns"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Östkaribiska dollar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "Internationella valutafonden (IMF) särskilda dragrätter"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine BCEAO, franc"
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr "Palladium, uns"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Comptoirs Francais du Pacifique franc"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platinum, uns"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, rial"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Jugoslavien, nya dinarer"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Sydafrika, rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia, kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe, dollar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Ingen"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Helfylld"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr "Streck"
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr "Prick"
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr "Streck prick"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr "Streck prick prick"
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, c-format
+msgid "Automatic (%s)"
+msgstr "Automatisk (%s)"
+
+#: goffice/utils/go-marker.c:220
+msgid "none"
+msgstr "ingen"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr "kvadrat"
+
+#: goffice/utils/go-marker.c:222
+msgid "diamond"
+msgstr "romb"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr "triangel nedåt"
+
+#: goffice/utils/go-marker.c:224
+msgid "triangle up"
+msgstr "triangel uppåt"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr "triangel höger"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr "triangel vänster"
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr "cirkel"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr "kors"
+
+#: goffice/utils/go-marker.c:230
+msgid "asterisk"
+msgstr "stjärna"
+
+#: goffice/utils/go-marker.c:231
+msgid "bar"
+msgstr "stolpe"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr "halvstolpe"
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr "fjäril"
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr "timglas"
+
+#: goffice/utils/go-pattern.c:96
+#, c-format
+msgid "75% Grey"
+msgstr "75% grå"
+
+#: goffice/utils/go-pattern.c:97
+#, c-format
+msgid "50% Grey"
+msgstr "50% grå"
+
+#: goffice/utils/go-pattern.c:98
+#, c-format
+msgid "25% Grey"
+msgstr "25% grå"
+
+#: goffice/utils/go-pattern.c:99
+#, c-format
+msgid "12.5% Grey"
+msgstr "12,5% grå"
+
+#: goffice/utils/go-pattern.c:100
+#, c-format
+msgid "6.25% Grey"
+msgstr "6,25% grå"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Vågräta ränder"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Lodräta ränder"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Omvända diagonala ränder"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Diagonala ränder"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Diagonala rutor"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Tjocka diagonala rutor"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Tunna vågräta ränder"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Tunna lodräta ränder"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Tunna omvända diagonala ränder"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Tunna diagonala ränder"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Tunna diagonala rutor"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Tunna diagonala rutor"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Förgrund massiv"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Små cirklar"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Halvcirklar"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Halmtak"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Stora cirklar"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Tegelstenar"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Rubriker"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Värden"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+msgid "Error bars"
+msgstr "Felstaplar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr "PlotStapKol"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr "Hur mycket staplarna/kolumnerna ska överlappa i procent av deras vidd"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr "_Överlappning:"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr "Mellanrum mellan grupper i procent av staplarnas/kolumnernas vidd"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "_Mellanrum:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+msgid "PlotLine"
+msgstr "GrafLinje"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+msgid "PlotArea"
+msgstr "GrafArea"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D närliggande stolpar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D närliggande kolumner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D procentstolpar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D procentkolumner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D staplade stolpar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D staplade kolumner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Närliggande stolpar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Närliggande kolumner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+"Närliggande horisontella 3D-stolpar grupperade i huvud- och delkategorier."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+"Närliggande horisontella stolpar grupperade i huvud- och delkategorier."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+"Närliggande vertikala 3D-stolpar grupperade i huvud- och delkategorier."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Närliggande vertikala stolpar grupperade i huvud- och delkategorier."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Område"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr "Areagraf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+msgid "Areas"
+msgstr "Areor"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Stolpe"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Kolumn"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Linje"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+msgid "Line plot."
+msgstr "Linjegraf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+msgid "Lines"
+msgstr "Linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Delkategorier staplade som procent av delsumman, i horisontella 3D-stolpar, "
+"grupperade efter huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Delkategorier staplade som procent av delsumman, i vertikala 3D-stolpar, "
+"grupperade efter huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Delkategorier staplade som procent av delsumman, i horisontella stolpar, "
+"grupperade efter huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Delkategorier staplade som procent av delsumman, i vertikala kolumner, "
+"grupperade efter huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+"Delkategorier staplade i horisontella 3D-stolpar, grupperade efter "
+"huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+"Delkategorier staplade i horisontella stolpar, grupperade efter "
+"huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+"Delkategorier staplade i vertikala 3D-kolumner, grupperade efter "
+"huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+"Delkategorier staplade i vertikala kolumner, grupperade efter huvudkategori."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+msgid "Percentage Areas"
+msgstr "Procentareor"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Procentstolpar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Procentkolumner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+msgid "Percentage Lines"
+msgstr "Procentlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+msgid "Percentage area plot."
+msgstr "Procentareagraf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+msgid "Percentage line plot."
+msgstr "Procentlinjegraf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr "Staplade areor"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Staplade stolpar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Staplade kolumner"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr "Staplade linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr "Staplad areagraf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr "Staplad linjegraf."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+msgid "Unmarked Lines"
+msgstr "Omarkerade linjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+msgid "Unmarked Percentage Lines"
+msgstr "Omarkerade procentlinjer"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr "Omarkerade staplade linjer"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr "Cirkeldiagramsritmotor"
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr "Stapel/kolumn ritmotor"
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr "Grafritning : Stapel/Kolumn/Linje/Yta"
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+msgid "Default 1.5d plot types"
+msgstr "Standard 1.5d-graftyper"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr "Linjediagramsritmotor"
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr "Linje, area, stapel och kolumngrafer"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Graf"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Ogiltigt argument"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Graf"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Graf"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Graf"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Stapel/kolumn ritmotor"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Graf: Radiella grafer"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+msgid "Default surface plot types"
+msgstr "Standard ytgraftyper"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr "GrafCirkel"
+
+#: plugins/plot_pie/gog-pie.c:303
+msgid "PlotRing"
+msgstr "GrafRing"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+"%s punkt %d\n"
+"Värde %g (%g)"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr "Grader motsols från klockan tre"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr "Segment _börjar vid:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+"Standardavståndet som varje segment är flyttat från centrum mätt i procent "
+"av diagrammets radie"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr "_Segmentavstånd:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr "Ändra _färg per segment"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "grader"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+"Avståndet som detta segment är flyttat från centrum mätt i procent av "
+"diagrammets radie"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+msgid "_Separation:"
+msgstr "_Avskiljare:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+msgid "Cen_ter size:"
+msgstr "Mittenstorlek:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D cirkel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D uppdelad cirkel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+"Huvudresultat som procentsatser med varje tårtbit uppdelad i underordnade "
+"cirklar."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Huvudresultat som procentsatser med varje tårtbit uppdelad i underordnade "
+"staplade stolpar."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr "Multicirkel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Multicirkel-stolpar"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+"Procentsats för varje bidrag visad i en ring för varje serie med tårtbitar "
+"för den sista ringen isärtagna."
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "Procentsats för varje bidrag vasade i en ring för varje serie."
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "Procentsats för varje bidrag i 3D-cirkel."
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Procentsats för varje bidrag med uppdelade 3D-tårtbitar."
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Procentsats för varje bidrag med uppdelade tårtbitar."
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Procentsats för varje bidrag."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Cirkel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr "Ring"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Uppdelad cirkel"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+msgid "Split Ring"
+msgstr "Uppdelad ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr "Graf: cirkel/ring"
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr "Standard-cirkeltyper"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr "Cirkel och ringgrafer"
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr "Cirkeldiagramsritmotor"
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr "Ringdiagramsritmotor"
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr "PlotRadar"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+msgid "PlotRadarArea"
+msgstr "PlotRadarYta"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr "Ytradar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+msgid "Area radar plot."
+msgstr "Radarareagraf."
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr "Prickad radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr "Radar"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr "Radargraf med prickar."
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr "Radargraf."
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr "Graf: Radiella grafer"
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+msgid "Default radar plot types"
+msgstr "Standard radargraftyper"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr "Ytradardiagramsritmotor"
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+msgid "Radar plotting engine"
+msgstr "Radardiagramsritmotor"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr "Radiell/radargrafer"
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+msgid "_Slices number:"
+msgstr "_Antal snitt:"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr "Konturgraf"
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr "X"
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr "Y"
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr "Z"
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+msgid "Contour"
+msgstr "Kontur"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+msgid "Contour plot."
+msgstr "Konturgraf."
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+msgid "Surface"
+msgstr "Yta"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+msgid "Contour plotting engine"
+msgstr "Konturdiagramsritmotor"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+msgid "Surface Charts"
+msgstr "Ytdiagram"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+msgid "Surface charts"
+msgstr "Ytdiagram"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr "% av normalstorlek"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "3_d"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+msgid "Dia_meter"
+msgstr "Dia_meter"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr "Visa _negativa värden"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "_Yta"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr "_Bubblor skalade till"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr "_Storlek representerad av:"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr "_Ändra färg per bubbla"
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr "PlotXY"
+
+#: plugins/plot_xy/gog-xy.c:391
+msgid "PlotBubble"
+msgstr "PlotBubbla"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bubbel"
+
+#: plugins/plot_xy/gog-xy.c:997
+msgid "Y Error bars"
+msgstr "Y felstaplar"
+
+#: plugins/plot_xy/gog-xy.c:999
+msgid "X Error bars"
+msgstr "X felstaplar"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Interpolera mellan multidimensionella punkter."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Interpolera linjärt mellan multidimensionella punkter, med markörer i varje "
+"punkt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Interpolera linjärt mellan multidimensionella punkter."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr "Markörer i varje punkt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Multidimensionella punkter, med cirkel i varje punkt."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "Plotta X, Y och bubbelstorlek."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr "XY"
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+msgid "XY Lines"
+msgstr "XY-linjer"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+msgid "XY Points"
+msgstr "XY-punkter"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "XY-linjer"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr "2D-diagram"
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr "2D-spridningsgrafmotor"
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr "Bubbelritmotor"
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr "Graf: XY/sprid/bubbla"
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr "Standardtyper av spridningsgrafer"

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/tr.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/tr.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/tr.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4416 @@
+# Turkish translations for gnumeric messages.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Nilgün Belma Bugüner <nilgun at superonline.com>, 2001,..,2003
+# Finans Makrolarının çevirisi:
+# Deniz AkkuÅŸ Kanca <deniz at arayan.com>, 2001
+# İlk çeviri:
+# Görkem Çetin <gorkem at gelecek.com.tr>, 2000.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-02-17 15:28+0200\n"
+"Last-Translator: Nilgün Belma Bugüner <nilgun at superonline.com>\n"
+"Language-Team: Turkish <gnome-turk at gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr "Bu türün güvenlik için iptal edilen eski dosyalarına kaydediliyor."
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"İlgili eklenti.xml dosyasını düzenleyerek, bu emniyet özelliğini "
+"kapatabilirsiniz."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Nesnel"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "Dosya geçersiz kimlikli (%s) eklenti bilgileri içeriyor, %s olmalıydı."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Eklenti bilgileri dosyadan okunamıyor."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Ä°smi bilinmiyor"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "\"%s\" yükleyici türü desteklenmiyor."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "\"%s\" yükleyicisini hazırlarken hata oluştu"
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "#%d servis bilgisi okunurken hata oluÅŸtu."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Eklenti bilgileri dosyası okunamıyor (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "\"%s\" geçerli bir eklenti bilgileri dosyası değil."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "\"%s\" kimlikli eklentinin servisleri okunurken hata oluÅŸtu."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "Eklenti kimliği geçersiz karakterler içeriyor (%s)."
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Eklenti ismi bilinmiyor."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"id=\"%s\" kimlikli eklenti için yükleyici tanımlanmamış ya da yükleyici "
+"kimliği yanlış."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Eklenti kimliÄŸi yok."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "gb '%s' ilklendirilemedi"
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Döngüsel eklenti bağımlılıkları saptandı."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "id=\"%s\" kimlikli eklenti etkinleÅŸtirilemedi."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "id=\"%s\" kimlikli eklenti bulunamadı."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Eklenti bağımlılıkları etkinleştirilirken hata oluştu."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Eklentilerin etkinleÅŸtirilmesinde hata #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Eklentilerin etkinleÅŸtirilmesinde hata #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Eklenti yükleyicisi yüklenemiyor."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "id=\"%s\" kimlikli eklenti yüklenemedi."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Eklenti bağımlılıkları yüklenirken hata oluştu."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "\"%s\" dosyasından eklenti bilgileri okunurken hata oluştu."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "\"%s\" eklentisi etkinleÅŸtirilemedi (Kimlik: %s)"
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "\"%s\" eklentisi kaldırılamıyor (kimlik: %s)"
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Mevcut eklentilerin bilgileri okunurken hata oluÅŸtu."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Diskte bulunmayan eklentilerin etkinleÅŸtirilmesinde hata."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Aşağıdaki eklentiler diskte yok ama hala etkin:\n"
+"%s.\n"
+"Gnumeric'i şimdi yeniden başlatmalısınız."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Eklentileri etkinleÅŸtirirken hata oluÅŸtu."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Eklenti sistemi başlatılırken hata oluştu."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Hizmet yükleyici tarafından desteklenmiyor."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Modül ismi verilmemiş."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "\"%s\" modül dosyası açılamadı."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "\"%s\" Modül dosyasının biçemi geçersiz."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Dosya \"plugin_file_struct\" simgesini içermiyor."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Dosya türü tanım kaydı hatalı."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Eklenti sürümü \"%s\" ile uygulama sürümü \"%s\" farklı"
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Bu sistemde dinamik modül yükleme desteklenmiyor."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "'%s' modül dosyası kapatılamadı."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Dosya \"%s\" işlevini içermiyor."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Modül \"%s\" işlevini içermiyor."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Eklenti servisinin yüklenmesi sırasında hata"
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Eklenti içindeki işlev başlatılırken hata ile döndü."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Eklenti içindeki işlev temizlenirken hata ile döndü."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Genel"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Dosya açıcı açıklama içermiyor"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Dosya açıcı - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Dosya okunurken hata."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Dosya kaydedici açıklama içermiyor"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Dosya kaydedici - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Dosya kaydedilirken hata."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Eklenti yükleyici"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Nesnel DeÄŸer"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr "\"hizmet\" elemanında \"tür\" niteliği yok."
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Bilinmeyen hizmet türü: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Hizmet bilgisi okunurken hata oluÅŸtu."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+"Etkinleştirilmeden önce hizmetin yüklenmesi gerekiyor ama yükleme yapılamadı "
+"(PLUGIN_ALWAYS_LOAD etkin)."
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Formüller"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "_Girintile"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Aranacak metin"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "BoÅŸluk"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Hizalama"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Gruplama karakteri:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+#, fuzzy
+msgid "Bullet Size"
+msgstr "Problemin Büyüklüğü"
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Soyut"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Soyut"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Çizgi"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Mantıksal"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "Logaritmik"
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Ayrıntıları Gizle"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Otomatik"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Sınıf:"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Artalan"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "A_sgari"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Azami"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Kapa_t"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "_Biçemlendir"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Etiket"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Cuma"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Cuma"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Desen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Önizleme"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Desen"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Önizleme"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "İçinde"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Dışçizgi"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "_Yükseklik..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "İçinde"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Ekle"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Satır"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Dışçizgi"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Etiketler"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Türü:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Azalan"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Etiket:"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "Cuma"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "Çi_z"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "_Yükseklik..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "Ä°_le:"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Hata Uyarısı"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Önizleme"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Örnek"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Renk:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "_Satır Genişliği"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "Ä°_le:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "_Grafik..."
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "Grafik%d"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Ä°sim"
+
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Adım 1/3: Grafik türü seçimi"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Adım 3/3: Grafiğin özelleştirilmesi"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Sayfabaşını özelleştir"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Ekle"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Çizim Türü"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Kenarlık"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Yön"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Desen"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Önizleme"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr ""
+"Örnek\n"
+"Göster"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Açıklama"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "Metin"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_Veri"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "_Seri"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Çizim ismi"
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr "Çizim Türü"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "_Girintile"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_Dizgeler"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Nokta"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dY x %dD"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Yazıtipi"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Tarz"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Önizleme"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Önizleme"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Desen"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Önizleme"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+#, fuzzy
+msgid "Co_lor:"
+msgstr "Renk:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Sınır çizgisi rengi"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Kapsam:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Boyut:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Tarz"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "_Türü:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Artalan"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Dizin"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "V_e "
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Dolgu rengi"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "_Sığdır:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Önalan"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Desen"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_Seç"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Boyut:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "_Sırala"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "S_aÄŸ"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "dizi"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "punto"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Öntanımlı"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "Grupla"
+
+#: goffice/gtk/go-charmap-sel.c:74
+#, fuzzy
+msgid "Arabic"
+msgstr "%i Alanı"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "EÄŸik"
+
+#: goffice/gtk/go-charmap-sel.c:76
+#, fuzzy
+msgid "Central European"
+msgstr "Sayfanın ortası"
+
+#: goffice/gtk/go-charmap-sel.c:77
+#, fuzzy
+msgid "Chinese"
+msgstr "Chisq"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "YeÅŸil"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "Orta"
+
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "Japonya, Yen"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Boolean"
+
+#: goffice/gtk/go-charmap-sel.c:84
+#, fuzzy
+msgid "Turkish"
+msgstr "Türkiye, Lira"
+
+#: goffice/gtk/go-charmap-sel.c:85
+#, fuzzy
+msgid "Unicode"
+msgstr "Gö_ster"
+
+#: goffice/gtk/go-charmap-sel.c:86
+#, fuzzy
+msgid "Vietnamese"
+msgstr "Bu çizelgenin ismini değiştirir"
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "Batı"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "Ekim"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+#, fuzzy
+msgid "Chinese Simplified (GB2312)"
+msgstr "Düzeltilmiş Simpleks (GLPK 3.2)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+#, fuzzy
+msgid "Chinese Simplified (GBK)"
+msgstr "Düzeltilmiş Simpleks (GLPK 3.2)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Altçizgileri kullan"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "Mantıksal"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Pearson Bağıntısı"
+
+#: goffice/gtk/go-charmap-sel.c:458
+#, fuzzy
+msgid "This value determines which iconv test to perform."
+msgstr "Bu değişken otomatik tamamlamanın geçerli olup olmadığını belirler."
+
+#: goffice/gtk/go-color-palette.c:95
+msgid "black"
+msgstr "siyah"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "Pazartesi"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "aralık"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "Kalın"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Göze Değeri"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "Mavi"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "dizi"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "kırmızı"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "aralık"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "saat"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "Dizi"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "Mor"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "Sarı"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "YeÅŸil"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "Turkuaz"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "URL"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Sağa yanaştır"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Sağa yanaştır"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Sağa yanaştır"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "Beyaz"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "DeÄŸeriyle"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "Özel"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Sayfaaltını özelleştir"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Gölgeleme"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Yön"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+msgid "Un dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "'%s' dosyası açılamadı"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "_Dosya"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "_Ä°mge..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Düzenlenen gözenin bulunduğu sütun seçilir"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Tümünü Kaydet"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "_Dosya:"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+"Verilen dosya uzantısı seçilen dosya türü ile eşleşmiyor. Bu isim yine de "
+"kullanılsın mı?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"bir dizin ismi"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"%s\n"
+"dosyasını kaydetme izniniz yok"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"%s defteri zaten var.\n"
+"Üzerine yazılsın mı?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Normal"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Kalın"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Kalın eğik"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "EÄŸik"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Yazıtipi tarzı:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Yazıtipi:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Önizleme"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Boyut:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Sayı"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "_Para birimi"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "_Hesaplamalar"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Tarih"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Zaman"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Yüzde"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "_Kesir"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "_Bilimsel"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Metin"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "Ö_zel"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Özel"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Negatif Sayı Biçemi"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Sayı Biçemleri"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Sınıf:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "_Ondalık haneler:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "Avrupa para birimi"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "_Sınırları Göster"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Değeri girildiği gibi gösterir"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Biçem:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Negatif Sayı Biçemi"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Önizleme"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Sem_bol:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Biçem:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "_Binler ayracı Kullan"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "Batı"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "Sayfanın ortası"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "%i Alanı"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "Avustralya, Dolar"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Güney Afrika, Rand"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+#, fuzzy
+msgid "United Arab Emirates (ar_AE)"
+msgstr "BirleÅŸik Arap Emirlikleri, Dirhem"
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Bahreyn, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "Ürdün, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "Kuveyt, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "Libya, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Suudi Arabistan, Riyal"
+
+#: goffice/gtk/go-locale-sel.c:123
+#, fuzzy
+msgid "Sudan (ar_SD)"
+msgstr "Sudan, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "Tunus, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+#, fuzzy
+msgid "Azerbaijan (az_AZ)"
+msgstr "Azerbaycan, Manat"
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Beyaz Rusya, Ruble"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaristan, Leva"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "BangladeÅŸ, Taka"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+#, fuzzy
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr "Bosna-Hersek, Marka"
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "Çek Cumhuriyeti, Kron"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+#, fuzzy
+msgid "Denmark (da_DK)"
+msgstr "Danimarka, Kuron"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+#, fuzzy
+msgid "Switzerland/German (de_CH)"
+msgstr "İsviçre, Frank"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+#, fuzzy
+msgid "Luxembourg/German (de_LU)"
+msgstr "Lüksemburg frangı"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "Yeni Zellanda, Dolar"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "Filipinler, Pezo"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "Güney Afrika, Rand"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Arjantin, Pezo"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Åžili, Pezo"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Kolombiya, Peso"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "Kostarika,  Kolon"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominik Cumhuriyeti, Pezo"
+
+#: goffice/gtk/go-locale-sel.c:164
+#, fuzzy
+msgid "Ecuador (es_EC)"
+msgstr "Ekvator sukresi"
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Örnekleme (%s)"
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "Guatemela, Kuetzal"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "Honduras, Lempira"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "Meksika, Pezo"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+#, fuzzy
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador, Kolon"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay, Pezo"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "Venezüella, Bolivar"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Örnekleme (%s)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+#, fuzzy
+msgid "Switzerland/French (fr_CH)"
+msgstr "İsviçre, Frank"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "Endonezya, Rupya"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+#, fuzzy
+msgid "Georgia (ka_GE)"
+msgstr "Gürcistan, Lari"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+#, fuzzy
+msgid "Lithuania (lt_LT)"
+msgstr "Liyvanya, Lita"
+
+#: goffice/gtk/go-locale-sel.c:208
+#, fuzzy
+msgid "Latvia (lv_LV)"
+msgstr "Latvia, Lati"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+#, fuzzy
+msgid "The Netherlands (nl_NL)"
+msgstr "Hollanda guldeni"
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakya, Kron"
+
+#: goffice/gtk/go-locale-sel.c:227
+#, fuzzy
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenya, Dolar"
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Arnavutluk, Lek"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "Yugoslavya, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tacikistan, Ruble"
+
+#: goffice/gtk/go-locale-sel.c:235
+#, fuzzy
+msgid "Thailand (th_TH)"
+msgstr "Tayland, Bat"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan, Ruble"
+
+#: goffice/gtk/go-locale-sel.c:243
+#, fuzzy
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Özbekistan, Sum"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Åžimdiki DeÄŸer:"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "Ortalama"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "İç adımlama"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Paz"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Pzt"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "Sal"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Çrş"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*PrÅŸ"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Cum"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Cts"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Pazar"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Pazartesi"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Salı"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Çarşamba"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "PerÅŸembe"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Cuma"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Cumartesi"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Oca"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Åžub"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Mar"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Nis"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*May"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Haz"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Tem"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*AÄŸu"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Eyl"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Eki"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Kas"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Ara"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Ocak"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Åžubat"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Mart"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Nisan"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Mayıs"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Haziran"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Temmuz"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "AÄŸustos"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Eylül"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Ekim"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Kasım"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Aralık"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "DOÄžRU"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "YANLIÅž"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Siyah"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "Mavi"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Turkuaz"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "YeÅŸil"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Mor"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Kırmızı"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Beyaz"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Sarı"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "BirleÅŸik Arap Emirlikleri, Dirhem"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afganistan, Afgani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Arnavutluk, Lek"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Ermenistan, Drahmi"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr "Hollanda Antilleri, Gulden"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "Angola, kvanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Arjantin, Pezo"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Avustralya, Dolar"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Aruba, Gulden"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr "Azerbaycan, Manat"
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr "Bosna-Hersek, Marka"
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Barbados, Dolar"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "BangladeÅŸ, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaristan, Leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahreyn, Dinar"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Frank"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, Dolar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Bruney Sultanlığı, Dolar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivya, Bolivyano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brezilya, Brezilya Riyali"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamalar, Dolar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bütan, Gultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botsvana, Pula"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Beyaz Rusya, Ruble"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dolar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Kanada, Dolar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr "Kongo/Kinşasa, Kongo Frangı"
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "İsviçre, Frank"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Åžili, Pezo"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Çin, Yuan Renminbi"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Kolombiya, Peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Kostarika,  Kolon"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Küba, Pezo"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde, Esküdo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Kıbrıs, Lira"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Çek Cumhuriyeti, Kron"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Cibuti, Frank"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Danimarka, Kuron"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominik Cumhuriyeti, Pezo"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Cezayir, Dinar"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonya, Kron"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Mısır, Lira"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr "Eritre, Nakfa"
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Etyopya, Bir"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Avrupa BirliÄŸi, Euro"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji, Dolar"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Falkland Adaları, Sterlin"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "Ä°ngiltere, Sterlin"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr "Gürcistan, Lari"
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "Guernsey, Sterlin"
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Gana, Kedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "Cebelitarık, Sterlin"
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambiya, Dalas"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "Gine, Frank"
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemela, Kuetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Güyan, Dolar"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong, Dolar"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras, Lempira"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Krotonya, Kuna"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti, Gurde"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Macaristan, Forint"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Endonezya, Rupya"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Ä°srail, Åžekel"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr "Isle of Man, Sterlin"
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "Hindistan, Ruble"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Irak, Dinar"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Ä°ran, Riyal"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Ä°zlanda, Kron"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr "Jersey, Sterlin"
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jameyka, Dolar"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Ürdün, Dinar"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japonya, Yen"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya, Åžilin"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kırgızistan, Som"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Kamboçya, Riyal"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Komoros, Frank"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Kuzey Kore, Von"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Güney Kore, Von"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuveyt, Dinar"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "Seymen Adaları, Dolar"
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakistan, Teng"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos, Kip"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Lübnan, Dinar"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Srilanka, Ruble"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberya, Dolar"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesoto, Maloti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Liyvanya, Lita"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvia, Lati"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libya, Dinar"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Fas, Dirhem"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldovya, Ley"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagaskar, Malaga Frangı"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Makedonya, Dinar"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Miyanmar (Burma), Kıyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "MoÄŸolistan, Tugrik"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Makau, Pataka"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Moritanya, Ügöya"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta, Liret"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Moritanya, Ruble"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldiv Adaları, Rufiye"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malavi, Kvaça"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Meksika, Pezo"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malezya, Ringit"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambik, Metika"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibya, Dolar"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nijerya, Nayra"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nikaragua, Cordoba"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norveç, Kron"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal, Nepal Rublesi"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Yeni Zellanda, Dolar"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Umman, Riyal"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama, Balboa"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru, Yeni Sol"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua Yeni Gine, Kina"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Filipinler, Pezo"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan, Ruble"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Polonya, Zloçi"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay, Kuron"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Katar, Riyal"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romanya, Ley"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Rusya, Ruble"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Ruanda, Frank"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Suudi Arabistan, Riyal"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon Adaları, Dolar"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seyşel Adaları, Ruble"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan, Dinar"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "İsveç, Kron"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapur, Dolar"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr "Senhelen, Sterlin"
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenya, Dolar"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakya, Kron"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Siera Leone, Leon"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somali, Åžilin"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr "Seborga, Luigini"
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Surinam, Gulden"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr "Sao Tome ve Principe, Dobra"
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador, Kolon"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Suriye, Lira"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland, Emalangen"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Tayland, Bat"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tacikistan, Ruble"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr "Türkmenistan, Manat"
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunus, Dinar"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga, Paanga"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Türkiye, Lira"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad ve Tobago, Dolar"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr "Tuvalu, Dolar"
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Tayvan, Dolar"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzanya, Åžilin"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukrayna, Hrivna"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda, Åžilin"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "Amerika BirleÅŸik Devletleri, Dolar"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay, Pezo"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Özbekistan, Sum"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezüella, Bolivar"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam, Dong"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu, Vatu"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa, Tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Afrika Ekonomik BirliÄŸi (BEAC), Frank"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Gümüş, Ons"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Altın, Ons"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "DoÄŸu Karayipler, Dolar"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr "IMF Özel Çekme Hakkı"
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Afrika Ekonomik BirliÄŸi (BCEAO), Frank"
+
+#: goffice/utils/formats.c:553
+#, fuzzy
+msgid "Palladium, Ounces"
+msgstr "Paladyum Onsu"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr "Fransız Polinezyası, Frank"
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Platin, Ons"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen, Riyal"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Yugoslavya, Dinar"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Güney Afrika, Rand"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambiya, Kvaça"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabve, Dolar"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Hiçbiri"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Katı"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Otomatik"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Hiçbiri"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Orta"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "aralık"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "S_ağı Sınırla"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "dosya"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "satır"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Bağlantıyı Yapıştır"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*Mar"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "%75 Gri"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "%50 Gri"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "%25 Gri"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "%12.5 Gri"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "&6.25 Gri"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Yatay Bant"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Düşey Bant"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Ters Çapraz Bant"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Çapraz Bant"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Çapraz Tarama"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Kalın Çapraz Tarama"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Ä°nce Yatay Bant"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "İnce Düşey Bant"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "İnce Çapraz Bant"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "İnce Çapraz Bant"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Ä°nce Yatay Tarama"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "İnce Çapraz Tarama"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Önalan Katı"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Küçük Daireler"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Daire Benzerleri"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Saz"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Büyük Daireler"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "TuÄŸlalar"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Etiketler"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "DeÄŸerler"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Satır çözümlenirken hata"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Grafik..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "Çi_z"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "Çi_z"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr "3D Bitişik Çubuklar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr "3D Bitişik Sütunlar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "3D Pay Çubukları"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "3D Pay Sütunları"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "3D Çubuk Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "3D Sütun Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr "Bitişik Çubuklar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr "Bitişik Sütunlar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr "Ana ve alt sınıflara göre gruplanmış bitişik 3D yatay çubuklar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr "Ana ve alt sınıflara göre gruplanmış bitişik yatay çubuklar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr "Ana ve alt sınıflara göre gruplanmış bitişik 3D düşey sütunlar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr "Ana ve alt sınıflara göre gruplanmış bitişik düşey sütunlar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Alan"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "_Alanlar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Çubuk"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Sütun"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Çizgi"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Alınacak satırlar"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Çizgi"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Ana sınıfa göre gruplanmış 3D yatay çubuklarda, alt toplam payları olarak "
+"demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+"Ana sınıfa göre gruplanmış 3D düşey çubuklarda, alt toplam payları olarak "
+"demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+"Ana sınıfa göre gruplanmış yatay çubuklarda, alt toplam payları olarak "
+"demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+"Ana sınıfa göre gruplanmış düşey sütunlarda, alt toplam payları olarak "
+"demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr "Ana sınıfa göre gruplanmış 3D yatay çubuklarda demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr "Ana sınıfa göre gruplanmış yatay çubuklarda demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr "Ana sınıfa göre gruplanmış 3D düşey sütunlarda demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr "Ana sınıfa göre gruplanmış düşey sütunlarda demetli alt sınıflar."
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "Pay Çubukları"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Pay Çubukları"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Pay Sütunları"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "Pay çizgileri"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "Pay Çubukları"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Pay çizgileri"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Çubuk Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Çubuk Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Sütun Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Çizgi Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Çubuk Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Çizgi Demeti"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "İmli çizgiler"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "Pay çizgileri"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Çizgi Demeti"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Öntanımlı yorumlayıcı"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "Satır ve sütun _başlıkları"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Çi_z"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Parola geçersiz"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Çi_z"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Çi_z"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Çi_z"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Satır çözümlenirken hata"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Sekme Renklerinin DeÄŸiÅŸtirilmesi"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Öntanımlı yorumlayıcı"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "Çi_z"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Yok"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Ayraç:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "_Derece"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Ayraç:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Sınıf:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr "3D Dilimleme"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr "3D Ayrık Dilimleme"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr "Her dilimi ikincil paylara paylaştırılmış ana toplamlar."
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+"Her dilimi ikincil demetlerdeki çubuklara paylaştırılmış ana toplamlar."
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Çoklu dilimli"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr "Çoklu dilimli çubuklar"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+#, fuzzy
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr "Dilimleri ayrık olarak her katılımcının payı"
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr "3 boyutlu dilimlemede her katılımcının payı"
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr "3 boyutlu dilimlemede her katılımcının payı"
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr "Üç boyutlu dilimleri ayrık olarak her katılımcının payı"
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr "Dilimleri ayrık olarak her katılımcının payı"
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr "Her katılımcının payı."
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr "Dilimli"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "Aralık"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr "Dilimleri Ayır"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Dilimleri Ayır"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default pie types"
+msgstr "Öntanımlı yorumlayıcı"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "Çi_z"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Çi_z"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Pay Çubukları"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Standart Hata"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Çubuk Demeti"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Öntanımlı yorumlayıcı"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Satır çözümlenirken hata"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Sadece sayılar"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Sayaç"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Alınacak satırlar"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Kaynak"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Satır çözümlenirken hata"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Kaynak alanları"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Kaynak alanları"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "%, normal boyuta göre"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Parametreler"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Kaynak"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "Çi_z"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Balon"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Balon"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Satır çözümlenirken hata"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Satır çözümlenirken hata"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+"Çok boyutlu noktalar arasında her biri imli düzgün doğrusal aradeğerler atar."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+#, fuzzy
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Çok boyutlu noktalar arasında her biri imli düzgün doğrusal aradeğerler atar."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Çok boyutlu noktalar arasında düzgün doğrusal aradeğerler atar."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "İmli düzgün aradeğerli noktalar"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+"Çok boyutlu noktalar arasında her biri imli düzgün doğrusal aradeğerler atar."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr "X, Y ve balon boyutuyla oluÅŸturur."
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Çizgi"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Nokta Sayısı"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Çizgi"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/uk.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/uk.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/uk.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4473 @@
+# Ukrainian translation of gnumeric.
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Yuri Syrota <rasta at renome.rovno.ua>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 0.45\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-03-26 11:18--500\n"
+"Last-Translator: Yuriy Syrota <yuri at renome.rovno.ua>\n"
+"Language-Team: Ukrainian <uk at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Інше значення"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Не вдалося зчитати доповнення з файлу."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Невідома назва"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Непідтримуваний тип завантажувача  \"%s\"."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Помилка під час підготування завантажувача \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Помилка під час зчитування інформації про послугу %d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Неможливо завантажити інформаційний файл доповнення (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Файл \"%s\" не є правильним інформаційним файлом доповнення."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+"Помилка під час зчитування послуг для доповнення з ідентифікатором \"%s\"."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Невідома назва доповнення."
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "Невизначено завантажувача для доповнення з ідентифікатором \"%s\""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Доповнення не має ідентифікатора."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Помилка ініціалізації завантажувача доповнення (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "Помилка під час завантаження залежностей доповнення."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Не вдалося активувати доповнення \"%s\" (ідентифікатор: %s)."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Невизначено завантажувача для доповнення з ідентифікатором \"%s\""
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "Помилка під час завантаження залежностей доповнення."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Помилка під час активації послуги доповнення #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Помилка під час деактивації послуги доповнення #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Неможливо завантажити завантажувача доповнень."
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Невизначено завантажувача для доповнення з ідентифікатором \"%s\""
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Помилка під час завантаження залежностей доповнення."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr ""
+"Сталися помилки пид час зчитування інформації про доповнення з файлу \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Не вдалося активувати доповнення \"%s\" (ідентифікатор: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Не вдалося деактивувати доповнення \"%s\" (ідентифікатор: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Помилка під час зчитування інформації про доступні доповнення."
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Помилка під час деактивації послуги доповнення #%d."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Помилки під час активації доповнень."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Помилка під час ініціалізації системи доповнень."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Послуга не підтримується завантажувачем."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Не вказано назви файлу модуля."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Неможливо відкрити файл модуля \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Файл модуля \"%s\" має неправильний формат."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Файл не містить \"plugin_file_struct\"."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Файл має неправильне магічне число."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Версія доповнення \"%s\" відрізняється від версії програми \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "В цій системі не підтримується динамічне завантаження модулів."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Неможливо закрити файл модуля \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Файл не містить функцію \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Модуль не містить функції \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Помилка під час завантаження послуги доповнення."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Функція ініціалізації в доповненні повернула помилку."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Функція очищення в доповненні повернула помилку."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Загальний"
+
+#: goffice/app/go-plugin-service.c:343
+#, fuzzy
+msgid "File opener has no description"
+msgstr "Відкривач файлу з ідентифікатором \"%s\" не має опису"
+
+#: goffice/app/go-plugin-service.c:375
+#, fuzzy, c-format
+msgid "File opener - %s"
+msgstr "Відкривач файлк не має ідентифікатора."
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Помилка під час зчитування файлу."
+
+#: goffice/app/go-plugin-service.c:661
+#, fuzzy
+msgid "File saver has no description"
+msgstr "Файловий зберігач з ідентифікатором \"%s\" не має опису"
+
+#: goffice/app/go-plugin-service.c:707
+#, fuzzy, c-format
+msgid "File saver - %s"
+msgstr "Зберігач файлу не має ідентифікатора"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Помилка під час збереження файлу."
+
+#: goffice/app/go-plugin-service.c:886
+#, fuzzy
+msgid "Plugin loader"
+msgstr "Завантажувач доповнень Python"
+
+#: goffice/app/go-plugin-service.c:910
+#, fuzzy
+msgid "GObject loader"
+msgstr "Інше значення"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, fuzzy, c-format
+msgid "Unknown service type: %s."
+msgstr "Невідомий аркуш \"%s\""
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "Помилка під час зчитування інформації про послугу %d."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "Формула"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Вставка"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "Пошук тексту"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+#, fuzzy
+msgid "Space After"
+msgstr "Зберегти"
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Невідомий оператор"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Дискретне"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Дискретне"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Лінія"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Логічне"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Подробиці про файл"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Автоматично"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Категорія"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Тло"
+
+#: goffice/graph/gog-axis.c:1475
+#, fuzzy
+msgid "M_in"
+msgstr "Мінімум"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Максимум"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Закрити"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+#, fuzzy
+msgid "Format"
+msgstr "Формат"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Позначка"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "П'ятниця"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "П'ятниця"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Шаблон"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Перегляд друку"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Шаблон"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Перегляд друку"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Вставити"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Колір контура"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "_Висота..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Вставити"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "Вставка"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "Рядок"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Колір контура"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "Позначка"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+#, fuzzy
+msgid "_Type:"
+msgstr "Тип"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Відіслати"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Файл"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "П'ятниця"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "Точка"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "_Висота..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "_Ширина:"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Помилка: немає аркуша"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Перегляд друку"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Зразок"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Колір:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Ширина стовпчика..."
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Ширина:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "_Графік..."
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "Очистити"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Назва"
+
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Крок 1 з 3: Вібір типу графіка"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Крок 3 з 3: Налаштування графіка"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Налаштувати верхній колонтитул"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "Вставка"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Назва рисунка"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Тло"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "Операція"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Шаблон"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Перегляд друку"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Зразок"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Опис"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "Текст"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_Дані"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "Назва серій"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Назва рисунка"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Назва рисунка"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "Вставка"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "Рядок"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Точка"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dR x %dC"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Шрифт"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Стиль"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Перегляд друку"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Перегляд друку"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Шаблон"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Перегляд друку"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "_Колір:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Контур"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "Новий спільний"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Розмір:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Стиль"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "Тип"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Тло"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Опис:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "Додати"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Колір"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "Зв'язати з:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Передній план"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Шаблон"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "Вибрати"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Розмір:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "Стан"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "Праворуч"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "Масив"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "пункти"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+#, fuzzy
+msgid "Default"
+msgstr "Стерти..."
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "Згрупувати"
+
+#: goffice/gtk/go-charmap-sel.c:74
+#, fuzzy
+msgid "Arabic"
+msgstr "Ділянка %i"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "Курсивний"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "зелений"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "Середнє:"
+
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "Японські єни"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Логічний"
+
+#: goffice/gtk/go-charmap-sel.c:84
+#, fuzzy
+msgid "Turkish"
+msgstr "Туреччина, ліри"
+
+#: goffice/gtk/go-charmap-sel.c:85
+#, fuzzy
+msgid "Unicode"
+msgstr "Показати"
+
+#: goffice/gtk/go-charmap-sel.c:86
+#, fuzzy
+msgid "Vietnamese"
+msgstr "Визначити назву"
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "Захід"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "Жовтень"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Підкреслення"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "Логічне"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Кореляція Пірсона"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "чорний"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "Понеділок"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "Діапазон"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "Товстий"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Значення комірки"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "синій"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "Масив"
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "Відновити"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "Діапазон"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "час"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "Масив"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "бузковий"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "жовтий"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "зелений"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "блакитний"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "Видалити"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Вирівніти праворуч"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Вирівніти праворуч"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Вирівніти праворуч"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "білий"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "За значенням"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "Користувацький"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Налаштувати нижній колонтитул"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+#, fuzzy
+msgid "Shadow type"
+msgstr "Тінь"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "Операція"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+msgid "Dock the toolbar"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Скопіювати поточний вибір у кишеню"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Не вдалось відкрити файл \"%s\""
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "Файл"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "_Зображення..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Виюрати весь стовпчик"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Зберегти"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "Файл"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"є назвою каталогу"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Ви не маєте права на запис у\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Книга %s вже існує.\n"
+"Чи хочете ви переписати її?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Нормальне"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Товстий"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Товстий курсивний"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Курсивний"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:2
+#, fuzzy
+msgid "Font style:"
+msgstr "Встановити стиль шрифту"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Шрифт:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+#, fuzzy
+msgid "Preview"
+msgstr "Перегляд друку"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Розмір:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Число"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "Формат - валютний"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "вміст"
+
+#: goffice/gtk/go-format-sel.c:78
+#, fuzzy
+msgid "Date"
+msgstr "дата"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Час"
+
+#: goffice/gtk/go-format-sel.c:80
+#, fuzzy
+msgid "Percentage"
+msgstr "Відсоток"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "Функція"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "Формат - науковий"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Текст"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "Спеціальна"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Користувацький"
+
+#: goffice/gtk/go-format-sel.c:956
+#, fuzzy
+msgid "Negative Number Format"
+msgstr "Від'ємне біномінальне"
+
+#: goffice/gtk/go-format-sel.c:978
+#, fuzzy
+msgid "Number Formats"
+msgstr "Скопіювати формати"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Категорія:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Показати формули"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+msgid "Display values as percentages."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "Формати"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Від'ємне біномінальне"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Перегляд друку"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+#, fuzzy
+msgid "_Format:"
+msgstr "Формати"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "Захід"
+
+#: goffice/gtk/go-locale-sel.c:69
+msgid "Eastern Europe"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "Загальний"
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "Ділянка %i"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "Австралія, долари"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "Південна Африка, ранди"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Бахрейн, динари"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "Йорданські динари"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "Кувейтські динари"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "Лівія, динар"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Саудівська Аравії, ріяли"
+
+#: goffice/gtk/go-locale-sel.c:123
+#, fuzzy
+msgid "Sudan (ar_SD)"
+msgstr "Судан, динари"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "Туніс, динари"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Білоруські рублі"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "Болгарія, леви"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "Банґладешські таки"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "Чешські крони"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "Нова Зеландія, долари"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "Філіпіни, песо"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "Південна Африка, ранди"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Арґентина, песо"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Чілійські песо"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Колумбійські песо"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "Колони Коста Ріко"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Домініканські песо"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Вибірка"
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "Ґватемальські кветцали"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "Годураські лемпіри"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "Мексика, песо"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "Уруґвай, песо"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "Венесуела, болівари"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Вибірка"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "Індонезійські рупії"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "Словакія, крони"
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Албанія, леки"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "Югославія, нові динари"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "Таджикістан, рублі"
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "Пакістан, рупії"
+
+#: goffice/gtk/go-locale-sel.c:243
+#, fuzzy
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Узбекистан, суми"
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Поточні значення"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "Середнє:"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "Внутрішня ПОМИЛКА"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*Ндл"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Пнд"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Ð’Ñ‚Ñ€"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*Срд"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Чтв"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Птн"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Сбт"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Неділя"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Понеділок"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Вівторок"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Середа"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Четвер"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "П'ятниця"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Субота"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Січ"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Лют"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Бер"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Кві"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Тра"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Чер"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Лип"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Сер"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Вер"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Жов"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Лис"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Гру"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Січень"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Лютий"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Березень"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Квітень"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Травень"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Червень"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Липень"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Серпень"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Вересень"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Жовтень"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Листопад"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Грудень"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "ІСТИНА"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "ХИБНІСТЬ"
+
+#: goffice/utils/format.c:757
+#, fuzzy
+msgid "Black"
+msgstr "чорний"
+
+#: goffice/utils/format.c:758
+#, fuzzy
+msgid "Blue"
+msgstr "синій"
+
+#: goffice/utils/format.c:759
+#, fuzzy
+msgid "Cyan"
+msgstr "блакитний"
+
+#: goffice/utils/format.c:760
+#, fuzzy
+msgid "Green"
+msgstr "зелений"
+
+#: goffice/utils/format.c:761
+#, fuzzy
+msgid "Magenta"
+msgstr "бузковий"
+
+#: goffice/utils/format.c:762
+#, fuzzy
+msgid "Red"
+msgstr "Відновити"
+
+#: goffice/utils/format.c:763
+#, fuzzy
+msgid "White"
+msgstr "білий"
+
+#: goffice/utils/format.c:764
+#, fuzzy
+msgid "Yellow"
+msgstr "жовтий"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Афґаністан, афґані"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Албанія, леки"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+#, fuzzy
+msgid "Netherlands Antilles, Guilders"
+msgstr "Голандські гульдени"
+
+#: goffice/utils/formats.c:394
+#, fuzzy
+msgid "Angola, Kwanza"
+msgstr "Ангольські нові кванза"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Арґентина, песо"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Австралія, долари"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "Аруба, ґульдени"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+#, fuzzy
+msgid "Barbados, Dollars"
+msgstr "Барбадоські долари"
+
+#: goffice/utils/formats.c:401
+#, fuzzy
+msgid "Bangladesh, Taka"
+msgstr "Банґладешські таки"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Болгарія, леви"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Бахрейн, динари"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Бурунді, франки"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Бермуди, долари"
+
+#: goffice/utils/formats.c:406
+#, fuzzy
+msgid "Brunei Darussalam, Dollars"
+msgstr "Брунейські долари"
+
+#: goffice/utils/formats.c:407
+#, fuzzy
+msgid "Bolivia, Bolivianos"
+msgstr "Болівійські болівіано"
+
+#: goffice/utils/formats.c:408
+#, fuzzy
+msgid "Brazil, Brazil Real"
+msgstr "Бразильські реали"
+
+#: goffice/utils/formats.c:409
+#, fuzzy
+msgid "Bahamas, Dollars"
+msgstr "Багамські долари"
+
+#: goffice/utils/formats.c:410
+#, fuzzy
+msgid "Bhutan, Ngultrum"
+msgstr "Бутанські нгултруми"
+
+#: goffice/utils/formats.c:411
+#, fuzzy
+msgid "Botswana, Pulas"
+msgstr "Ботсванські пули"
+
+#: goffice/utils/formats.c:412
+#, fuzzy
+msgid "Belarus, Rubles"
+msgstr "Білоруські рублі"
+
+#: goffice/utils/formats.c:413
+#, fuzzy
+msgid "Belize, Dollars"
+msgstr "Белізькі долари"
+
+#: goffice/utils/formats.c:414
+#, fuzzy
+msgid "Canada, Dollars"
+msgstr "Канадські долари"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+#, fuzzy
+msgid "Chile, Pesos"
+msgstr "Чілійські песо"
+
+#: goffice/utils/formats.c:418
+#, fuzzy
+msgid "China, Yuan Renminbi"
+msgstr "Китайські юані"
+
+#: goffice/utils/formats.c:419
+#, fuzzy
+msgid "Colombia, Pesos"
+msgstr "Колумбійські песо"
+
+#: goffice/utils/formats.c:420
+#, fuzzy
+msgid "Costa Rica, Colones"
+msgstr "Колони Коста Ріко"
+
+#: goffice/utils/formats.c:421
+#, fuzzy
+msgid "Cuba, Pesos"
+msgstr "Кубинські песо"
+
+#: goffice/utils/formats.c:422
+#, fuzzy
+msgid "Cape Verde, Escudos"
+msgstr "Ескудо Капе Верде"
+
+#: goffice/utils/formats.c:423
+#, fuzzy
+msgid "Cyprus, Pounds"
+msgstr "Кіпрські фунти"
+
+#: goffice/utils/formats.c:424
+#, fuzzy
+msgid "Czech Republic, Koruny"
+msgstr "Чешські крони"
+
+#: goffice/utils/formats.c:425
+#, fuzzy
+msgid "Djibouti, Francs"
+msgstr "Джибутські франки"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+#, fuzzy
+msgid "Dominican Republic, Pesos"
+msgstr "Домініканські песо"
+
+#: goffice/utils/formats.c:428
+#, fuzzy
+msgid "Algeria, Algeria Dinars"
+msgstr "Динари Алгерії"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+#, fuzzy
+msgid "Egypt, Pounds"
+msgstr "Єгипетські фунти"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+#, fuzzy
+msgid "Ethiopia, Birr"
+msgstr "Ефіопські біри"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+#, fuzzy
+msgid "Fiji, Dollars"
+msgstr "Долари Фіджі"
+
+#: goffice/utils/formats.c:435
+#, fuzzy
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "Фунти Фолклендських островів"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+#, fuzzy
+msgid "Guernsey, Pounds"
+msgstr "Суданські фунти"
+
+#: goffice/utils/formats.c:439
+#, fuzzy
+msgid "Ghana, Cedis"
+msgstr "Ґанські седі"
+
+#: goffice/utils/formats.c:440
+#, fuzzy
+msgid "Gibraltar, Pounds"
+msgstr "Ґібралтарські фунти"
+
+#: goffice/utils/formats.c:441
+#, fuzzy
+msgid "Gambia, Dalasi"
+msgstr "Ґамбійські даласі"
+
+#: goffice/utils/formats.c:442
+#, fuzzy
+msgid "Guinea, Francs"
+msgstr "Ґвінейські франки"
+
+#: goffice/utils/formats.c:443
+#, fuzzy
+msgid "Guatemala, Quetzales"
+msgstr "Ґватемальські кветцали"
+
+#: goffice/utils/formats.c:444
+#, fuzzy
+msgid "Guyana, Dollars"
+msgstr "Ґаянанський долар"
+
+#: goffice/utils/formats.c:445
+#, fuzzy
+msgid "Hong Kong, Dollars"
+msgstr "Гонґ-Конґські долари"
+
+#: goffice/utils/formats.c:446
+#, fuzzy
+msgid "Honduras, Lempiras"
+msgstr "Годураські лемпіри"
+
+#: goffice/utils/formats.c:447
+#, fuzzy
+msgid "Croatia, Kuna"
+msgstr "Хорватські куни"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+#, fuzzy
+msgid "Hungary, Forint"
+msgstr "Угорські форинти"
+
+#: goffice/utils/formats.c:450
+#, fuzzy
+msgid "Indonesia, Rupiahs"
+msgstr "Індонезійські рупії"
+
+#: goffice/utils/formats.c:451
+#, fuzzy
+msgid "Israel, New Shekels"
+msgstr "Ізраільські шекелі"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+#, fuzzy
+msgid "India, Rupees"
+msgstr "Індійські рупії"
+
+#: goffice/utils/formats.c:454
+#, fuzzy
+msgid "Iraq, Dinars"
+msgstr "Іракські динари"
+
+#: goffice/utils/formats.c:455
+#, fuzzy
+msgid "Iran, Rials"
+msgstr "Іранські ріали"
+
+#: goffice/utils/formats.c:456
+#, fuzzy
+msgid "Iceland, Kronur"
+msgstr "Ісландські крони"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+#, fuzzy
+msgid "Jamaica, Dollars"
+msgstr "Ямайські долари"
+
+#: goffice/utils/formats.c:459
+#, fuzzy
+msgid "Jordan, Dinars"
+msgstr "Йорданські динари"
+
+#: goffice/utils/formats.c:460
+#, fuzzy
+msgid "Japan, Yen"
+msgstr "Японські єни"
+
+#: goffice/utils/formats.c:461
+#, fuzzy
+msgid "Kenya, Shillings"
+msgstr "Кенійські шилінґи"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+#, fuzzy
+msgid "Comoros, Francs"
+msgstr "Комороські франки"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+#, fuzzy
+msgid "Kuwait, Dinars"
+msgstr "Кувейтські динари"
+
+#: goffice/utils/formats.c:468
+#, fuzzy
+msgid "Cayman Islands, Dollars"
+msgstr "Долари Кайманових островів"
+
+#: goffice/utils/formats.c:469
+#, fuzzy
+msgid "Kazakstan, Tenge"
+msgstr "Пакістанські рупії"
+
+#: goffice/utils/formats.c:470
+#, fuzzy
+msgid "Laos, Kips"
+msgstr "Лаоські кіпи"
+
+#: goffice/utils/formats.c:471
+#, fuzzy
+msgid "Lebanon, Pounds"
+msgstr "Лібанезькі фунти"
+
+#: goffice/utils/formats.c:472
+#, fuzzy
+msgid "Sri Lanka, Rupees"
+msgstr "Рупії Шрі-Ланки"
+
+#: goffice/utils/formats.c:473
+#, fuzzy
+msgid "Liberia, Dollars"
+msgstr "Ліберійський долар"
+
+#: goffice/utils/formats.c:474
+#, fuzzy
+msgid "Lesotho, Maloti"
+msgstr "Лоті Лесото"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Лівія, динар"
+
+#: goffice/utils/formats.c:478
+#, fuzzy
+msgid "Morocco, Dirhams"
+msgstr "Марокканські динари"
+
+#: goffice/utils/formats.c:479
+#, fuzzy
+msgid "Moldova, Lei"
+msgstr "Молдовський лей"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+#, fuzzy
+msgid "Mongolia, Tugriks"
+msgstr "Монгольський тугрик"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+#, fuzzy
+msgid "Malta, Liri"
+msgstr "Мальтійські ліри"
+
+#: goffice/utils/formats.c:487
+#, fuzzy
+msgid "Mauritius, Rupees"
+msgstr "Мавританські рупії"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Малаві, квачі"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Мексика, песо"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Намібія, долари"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Ніґерія, наіри"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Норвегія, крони"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Непал, рупії"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "Нова Зеландія, долари"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Панама, балбоа"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Філіпіни, песо"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Пакістан, рупії"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Параґвай, ґуарані"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Катар, ріали"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Румунія, леї"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Росія, рублі"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Руанда, франки"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Саудівська Аравії, ріяли"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Соломонові островів, долари"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Сейшели, рупії"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Судан, динари"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Сінґапур, долари"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Словакія, крони"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Сьєра-Леоне, леони"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Сомалі, шилінґи"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Сурінам, ґульдени"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Сірія, фунти"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Таджикістан, рублі"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Туніс, динари"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Туреччина, ліри"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Трінадад і Тобаго, долари"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Тайвань, новий долари"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Танзанія, шилінґи"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Україна, гривні"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Уґанда, шилінґи"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Уруґвай, песо"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Узбекистан, суми"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Венесуела, болівари"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "В'єтнам, донґи"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Вануату, вату"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Самоа, тали"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "Срібло, унції"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "Золото, унції"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Південнокарибиські долари"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+#, fuzzy
+msgid "Palladium, Ounces"
+msgstr "Паладій, унції"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "Платина, унції"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Йємен, ріали"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Югославія, нові динари"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "Південна Африка, ранди"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Замбія, квачі"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Зімбабве, зімбабвійський долари"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Немає"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+#, fuzzy
+msgid "Solid"
+msgstr "Товстий"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Автоматично"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Немає"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Середнє:"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "Діапазон"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "Праворуч:"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "Зразок"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Вставити посилання"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*Бер"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% сірого"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% сірого"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% сірого"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% сірого"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% сірого"
+
+#: goffice/utils/go-pattern.c:101
+#, fuzzy
+msgid "Horizontal Stripe"
+msgstr "Встановити горизонтальне вирівнювання"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+#, fuzzy
+msgid "Thin Horizontal Stripe"
+msgstr "Встановити горизонтальне вирівнювання"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+#, fuzzy
+msgid "Foreground Solid"
+msgstr "Передній план"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+#, fuzzy
+msgid "Labels"
+msgstr "Позначка"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+#, fuzzy
+msgid "Values"
+msgstr "Значення"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Помилка аналізу рядка"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_Графік..."
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "Точка"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "Точка"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "Відсоток"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+#, fuzzy
+msgid "3D Stacked Bars"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Вставити стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Вставити стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Area"
+msgstr "Ділянка %i"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "Ділянка %i"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Стовпчик"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Лінія"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "%d рядків для імпорту"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Лінія"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "Відсоток"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "Відсоток"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "Відсоток"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "Відсоток"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Відсоток"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+#, fuzzy
+msgid "Stacked Bars"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Прибрати лінії сітки"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Прибрати лінії сітки"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "Відсоток"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Прибрати лінії сітки"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Визначити назву"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "Точка"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Неправильний вираз"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "Точка"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "Точка"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "Точка"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Помилка аналізу рядка"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Зміна формату %s"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Визначити назву"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "Точка"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Нічого"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Розділювач:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "Стерти..."
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Розділювач:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Категорія:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "Прибрати лінії сітки"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Розбити"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Multi-Pie"
+msgstr "Помножити"
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Помножити"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Ціна"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "Діапазон"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Розбити"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Розбити"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+msgid "Default pie types"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "Точка"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "Точка"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Відсоток"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Стандиртна похибка"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Визначити назву"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Помилка аналізу рядка"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Число"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Кількість"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "%d рядків для імпорту"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Джерело"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Помилка аналізу рядка"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Джерело"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Джерело"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, no-c-format
+msgid "% of default size"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "Центрувати"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Джерело"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "Точка"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Подвійний"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "Подвійний"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Помилка аналізу рядка"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Помилка аналізу рядка"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Стерти стовпчики"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Лінія"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Точка"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Лінія"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/vi.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/vi.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/vi.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4360 @@
+# Copyright (C) 2002 Free Software Foundation
+# This file is distributed under the same license as the gnumeric package.
+# pclouds <pclouds at gmx.net>, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-02-23 09:00+0700\n"
+"Last-Translator: pclouds <pclouds at gmx.net>\n"
+"Language-Team: GnomeVI <gnomevi-list at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+"Bạn có thể tắt tính năng này một cách an toàn bằng cách sửa tập tin plugin."
+"xml một cách thích hợp."
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "Đối tượn_g..."
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr ""
+"Tập tin chứa thông tin plugin với id không hợp lệ (%s), trong khi yêu cầu là "
+"%s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "Không thể đọc thông tin plugin từ tập tin."
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "Tên lạ"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "Loại bộ nạp \"%s\" không được hỗ trợ."
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "Lỗi chuẩn bị bộ nạp \"%s\"."
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "Lỗi đọc thông tin dịch vụ #%d."
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "Không thể đọc tập tin thông tin plugin (\"%s\")."
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "Tập tin \"%s\" không phải là tập tin thông tin plugin hợp lệ."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "Lỗi đọc dịch vụ cho plugin với id=\"%s\""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "Tên plugin lạ."
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+"Không có bộ nạp nào (hoặc id của bộ nạp không hợp lệ) cho plugin với id=\"%s"
+"\"."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "Plugin không có id."
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "Lỗi khởi động bộ nạp plugin (\"%s\")."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "Tìm ra phụ thuộc vòng trong plugin."
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "Không thể kích hoạt plugin id=\"%s\"."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "Không tìm thấy plugin với id=\"%s\"."
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr "Lỗi kích hoạt các plugin liên quan."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "Lỗi kích hoạt dịch vụ plugin #%d."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "Lỗi kích ngừng hoạt dịch vụ plugin #%d."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "Không thể nạp bộ nạp plugin."
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "Không thể nạp plugin với id=\"%s\"."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "Lỗi nạp các plugin liên quan."
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "Lỗi đọc thông tin plugin từ tập tin \"%s\"."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "Không thể kích hoạt plugin \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "Không thể ngưng kích hoạt plugin \"%s\" (ID: %s)"
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "Lỗi đọc thông tin về các plugin hiện có."
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "Lỗi hủy kích hoạt plugin không còn tồn tại trên đĩa."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"Những plugin sau không còn tồn tại trên đĩa, nhưng vẫn còn hoạt động:\n"
+"%s.\n"
+"Bạn nên khởi động lại Gnumeric ngay."
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "Lỗi kích hoạt plugin."
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "Lỗi khởi động hệ thống plugin."
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "Bộ nạp không hỗ trợ dịch vụ."
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "Chưa cho biết tên tập tin mô đun."
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "Không thể mở tập tin mô đun \"%s\"."
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "Tập tin mô đun \"%s\" sai dạng thức."
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "Tập tin không chứa (ký hiệu \"plugin_file_struct\")."
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "Tập tin có số magic sai."
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "Phiên bản plugin \"%s\" khác với ứng dụng (%s)."
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "Hệ thống này không hỗ trợ tính năng nạp mô đun động."
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "Không thể đóng tập tin mô đun \"%s\""
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "Tập tin không chứa hàm \"%s\""
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "Mô đun không chứa hàm \"%s\"."
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "Lỗi nạp dịch vụ plugin."
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "Khởi động hàm bên trong plugin trả về lỗi."
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "Hàm cleanup bên trong plugin trả về lỗi."
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "Chung"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "Không có mô tả về bộ mở tập tin"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "Bộ mở tập tin - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "Lỗi đọc tập tin."
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "Không có mô tả về bộ lưu tập tin"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "Bộ lưu tập tin - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "Lỗi lưu tập tin."
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "Bộ nạp plugin"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "Loại dịch vụ lạ: %s."
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr "Lỗi đọc thông tin dịch vụ."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "trang"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "Canh _lề"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "_Tìm"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "Canh hàng"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "Ký tự nháy:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "Rời rạc"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "Rời rạc"
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "Đường thẳng"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "Logic"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "Ẩn chi tiết"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "Tá»± Ä‘á»™ng"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "_Phân loại"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "Nền"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "M_in"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "Max"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "Đón_g"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "Dạng thức"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "Nhãn"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "Thứ Sáu"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "Thứ Sáu"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "Mẫu"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "Mẫu"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "Bên trong"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "Phác thảo"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "_Cao..."
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "Bên trong"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "_Chèn"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "_Hàng"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "Phác thảo"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "_Nhãn"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "_Loại:"
+
+#: goffice/graph/gog-chart.c:197
+#, fuzzy
+msgid "Legend"
+msgstr "Gá»­i"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "Tựa đề:"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "Thứ Sáu"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "_Vẽ"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+#, fuzzy
+msgid "Height"
+msgstr "_Cao..."
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:236
+#, fuzzy
+msgid "Width"
+msgstr "_Vá»›i:"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "Báo động lỗi"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "Mẫu"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "Màu:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "Bề ròng đường"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "_Vá»›i:"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "Đồ _thị..."
+
+#: goffice/graph/gog-graph.c:154
+#, fuzzy
+msgid "Chart"
+msgstr "Bieudo%d"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "Tên"
+
+#: goffice/graph/gog-guru.c:1092
+#, fuzzy
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "Bước 1 trên 3: Chọn loại đồ thị"
+
+#: goffice/graph/gog-guru.c:1100
+#, fuzzy
+msgid "Step 2 of 2: Customize Chart"
+msgstr "Bước 3 trên 3: Tùy biến biểu đồ"
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "Tùy biến header"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "_Chèn"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "Tên vẽ"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "Biên"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "HÆ°á»›ng"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "Mẫu"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "Mẫu"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "Mô tả"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "Chữ"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+#, fuzzy
+msgid "Data"
+msgstr "_Dữ liệu"
+
+#: goffice/graph/gog-plot.c:182
+#, fuzzy
+msgid "Series"
+msgstr "_Serie"
+
+#: goffice/graph/gog-plot-engine.c:54
+#, fuzzy
+msgid "Plot Engine"
+msgstr "Tên vẽ"
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "Tên vẽ"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "Canh _lề"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "_Chuá»—i"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "Điểm"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%dR x %dC"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "Font"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "Kiểu"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "Mẫu"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "_Màu:"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "Màu đường viền"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "_Phạm vi:"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "Kích thước:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "Kiểu"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "_Loại:"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "Nền"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "Thư mục"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "Kết thúc"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "Màu tô"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "_Vừa khít với:"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "Cận cảnh"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "Mẫu"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "_Chọn"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "Kích thước:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "Trạng thái"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "_Phải"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "array"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+msgid "pts"
+msgstr "pts"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "Mặc định"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "Nhóm"
+
+#: goffice/gtk/go-charmap-sel.c:74
+#, fuzzy
+msgid "Arabic"
+msgstr "Vùng %i"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "Nghiêng"
+
+#: goffice/gtk/go-charmap-sel.c:76
+#, fuzzy
+msgid "Central European"
+msgstr "Giữa trang"
+
+#: goffice/gtk/go-charmap-sel.c:77
+#, fuzzy
+msgid "Chinese"
+msgstr "Chisq"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "Lục"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "Canh _lề"
+
+#: goffice/gtk/go-charmap-sel.c:82
+#, fuzzy
+msgid "Japanese"
+msgstr "trang"
+
+#: goffice/gtk/go-charmap-sel.c:83
+#, fuzzy
+msgid "Korean"
+msgstr "Luận lý"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:85
+#, fuzzy
+msgid "Unicode"
+msgstr "Hiện"
+
+#: goffice/gtk/go-charmap-sel.c:86
+#, fuzzy
+msgid "Vietnamese"
+msgstr "Định nghĩa tên"
+
+#: goffice/gtk/go-charmap-sel.c:87
+#, fuzzy
+msgid "Western"
+msgstr "Tây"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+#, fuzzy
+msgid "Other"
+msgstr "Tháng Mười"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "Dùng gạch chân"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "Logic"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "Hệ số tương quan Pearson"
+
+#: goffice/gtk/go-charmap-sel.c:458
+#, fuzzy
+msgid "This value determines which iconv test to perform."
+msgstr "Biến này xác định có bật chức năng Tự động Hoàn thành không."
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "Đen"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "Thứ Hai"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "giới hạn"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "Đậm"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "Giá trị ô"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "DÆ°Æ¡ng"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "array"
+
+#: goffice/gtk/go-color-palette.c:113
+msgid "red"
+msgstr "đỏ"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "giới hạn"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "giờ"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "Dãy"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "Hồng"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "Vàng"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "Lục"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "Da trời"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "Siêu liên kết"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "Canh phải"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "Canh phải"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "Canh phải"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "Trắng"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "Theo giá trị"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "Tự chọn"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "Tùy biến footer"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "Kiểu bóng"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "HÆ°á»›ng"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+#, fuzzy
+msgid "Dock the toolbar"
+msgstr "Vẽ thanh công cụ thế nào"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "Vẽ thanh công cụ thế nào"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "Không thể mở tập tin '%s'"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "_Tập tin"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "Ả_nh..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "Chọn nguyên cột"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "Lưu tất cả"
+
+#: goffice/gtk/goffice-gtk.c:530
+#, fuzzy
+msgid "File _type:"
+msgstr "_Tập tin:"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"là tên thư mục"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"Bạn không có quyền lưu vào\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"Workbook %s đã tồn tại.\n"
+"Bạn có muốn lưu đè lên nó?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "Bình thường"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "Đậm"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "Nghiêng đậm"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "Nghiêng"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "Kiểu font:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "Font:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "Kích thước:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "Số"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "_Tiền tệ"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "_Kế toán"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "Ngày"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "Thời gian"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "Phần trăm"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "_Phân số"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "_Khoa học"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "Chữ"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "Đặc _biệt"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "Tự chọn"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "Dạng thức số âm"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "Dạng thức số"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "Phân loại:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "Số chữ số _thập phân:"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+#, fuzzy
+msgid "Display currency amounts."
+msgstr "Đơn vị tiền tệ châu Âu"
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+#, fuzzy
+msgid "Display times of day."
+msgstr "Hiện _phác thảo"
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "Hiện giá trị chính xác như khi nhập vào"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "_Dạng thức:"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "Dạng thức số âm"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "Xem trÆ°á»›c"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "Ký hiệu:"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "_Dạng thức:"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "Dùng dấu cách một ngàn"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "Tây"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "Giữa trang"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "sigma"
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "Vùng %i"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "Đô la Úc"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+msgid "United Arab Emirates (ar_AE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain, Dinar"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+msgid "Jordan (ar_JO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:116
+msgid "Kuwait (ar_KW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+msgid "Libya (ar_LY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+msgid "Saudi Arabia (ar_SA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:123
+msgid "Sudan (ar_SD)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+msgid "Tunisia (ar_TN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+msgid "Belarus (be_BY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgari, Leva"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh, Taka"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "Cộng hòa Séc, Koruny"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+msgid "Denmark (da_DK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+msgid "Switzerland/German (de_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+#, fuzzy
+msgid "Luxembourg/German (de_LU)"
+msgstr "Franc (Luxembourg)"
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+msgid "New Zealand (en_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:152
+msgid "Philippines (en_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+msgid "South Africa/English (en_ZA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Achentina, Peso"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Chile, Peso"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Colombia, Peso"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica, Colones"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Cộng hòa Dominica, Peso"
+
+#: goffice/gtk/go-locale-sel.c:164
+#, fuzzy
+msgid "Ecuador (es_EC)"
+msgstr "Sucre (Ecuador)"
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "Lấy mẫu (%s)"
+
+#: goffice/gtk/go-locale-sel.c:166
+msgid "Guatemala (es_GT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:167
+msgid "Honduras (es_HN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:168
+msgid "Mexico (es_MX)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+msgid "El Salvador (es_SV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+msgid "Uruguay (es_UY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:177
+msgid "Venezuela (es_VE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "Lấy mẫu (%s)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+msgid "Switzerland/French (fr_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+msgid "Indonesia (id_ID)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+msgid "Japan (ja_JP)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+msgid "Korea (ko_KR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+msgid "Slovakia (sk_SK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:227
+msgid "Slovenia (sl_SI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Albania, Leke"
+
+#: goffice/gtk/go-locale-sel.c:229
+msgid "Yugoslavia (sr_YU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+msgid "Tajikistan (tg_TJ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:235
+msgid "Thailand (th_TH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+msgid "Pakistan (ur_PK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "Giá trị hiện thời:"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "nu"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*CN"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*Hai"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*Ba"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*TÆ°"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*Năm"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*Sáu"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*Bảy"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "Chủ Nhật"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "Thứ Hai"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "Thứ Ba"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "Thứ Tư"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "Thứ Năm"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "Thứ Sáu"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "Thứ Bảy"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*Má»™t"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*Hai"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*Ba"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*Bốn"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*Năm"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*Sáu"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*Bảy"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*Tám"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*Chín"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*Mười"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*Mười Mộ"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*Mười Hai"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "Tháng Một"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "Tháng Hai"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "Tháng Ba"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "Tháng Bốn"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "Tháng Năm"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "Tháng Sáu"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "Tháng Bảy"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "Tháng Tám"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "Tháng Chín"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "Tháng Mười"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "Thámg Mười Một"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "Tháng Mười Hai"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "Đen"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "DÆ°Æ¡ng"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "Da trời"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "Lục"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "Hồng"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "Đỏ"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "Trắng"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "Vàng"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan, Afghani"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania, Leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "Armenia, Dram"
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Achentina, Peso"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Đô la Úc"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "Đô la Barbados"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh, Taka"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgari, Leva"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain, Dinar"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi, Franc"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "Bermuda, Dollar"
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam, Dollar"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia, Boliviano"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazil, Real"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas, Dollar"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan, Ngultrum"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr ""
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr "Belize, Dollar"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada, Dollar"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile, Peso"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "Trung Quốc, Nhân dân tệ"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia, Peso"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica, Colones"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba, Peso"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "MÅ©i Verde, Escudo"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cyprus, Pound"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Cộng hòa Séc, Koruny"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr ""
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Cộng hòa Dominica, Peso"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr ""
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr ""
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr ""
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr ""
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr ""
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr ""
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr ""
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr ""
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr ""
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr ""
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr ""
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr ""
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr ""
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr ""
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr ""
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr ""
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr ""
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr ""
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr ""
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr ""
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr ""
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr ""
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr ""
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr ""
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr ""
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr ""
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr ""
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr ""
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr ""
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr ""
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr ""
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr ""
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr ""
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr ""
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr ""
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr ""
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr ""
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr ""
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr ""
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr ""
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr ""
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr ""
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr ""
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr ""
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr ""
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr ""
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Việt Nam, Đồng"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr ""
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr ""
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr "Dollar (Đông Caribe)"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr ""
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr ""
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr ""
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr ""
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr ""
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "Không"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "Đặc"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+#, fuzzy
+msgid "Dash dot"
+msgstr "Krone (Đan Mạch)"
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "Tá»± Ä‘á»™ng"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "Không"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "Canh _lề"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "giới hạn"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "tập tin"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+#, fuzzy
+msgid "cross"
+msgstr "hàng"
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "Dán liên kết"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*Ba"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% Xám"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% Xám"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% Xám"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% Xám"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% Xám"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "Gạch ngang"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "Đường dọc"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "Sọc chéo ngược"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "Sọc chéo"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "Lưới đan chéo"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "Lưới đan chéo dày"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "Đường ngang mảnh"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "Đường dọc mảnh"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "Đường chéo ngược mảnh"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "Đường chéo mảnh"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "Lưới vuông thưa"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "Lưới đan chéo thưa"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "Màu chữ"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "Vòng tròn nhỏ"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "Nửa đường tròn"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "Mật độ dày"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "Vòng tròn lớn"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "Gạch"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "Nhãn"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "Giá trị"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "Lỗi phân tích dòng"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "Đồ _thị"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "_Vẽ"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "_Vẽ"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Adjacent Bars"
+msgstr "Khối chồng 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "Cột chồng 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "Khối phần trăm 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr "Cột phần trăm 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr "Khối chồng 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr "Cột chồng 3D"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+#, fuzzy
+msgid "Adjacent Bars"
+msgstr "Khối phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "Cột chồng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "Vùng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "_Vùng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr "Khối"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "Cá»™t"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "Đường thẳng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "Dòng cần nhập"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "Đường thẳng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "Khối phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "Khối phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr "Cột phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "Đường phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "Khối phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "Đường phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "Khối chồng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr "Khối chồng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr "Cột chồng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "Đường chồng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+#, fuzzy
+msgid "Stacked area plot."
+msgstr "Khối chồng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "Đường chồng"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "Đường đánh dấu"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "Đường phần trăm"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "Đường chồng"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "Bộ thông dịch mặc định"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "_Vẽ"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "Sai mật mã"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "_Vẽ"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "_Vẽ"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "_Vẽ"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "Lỗi phân tích dòng"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "Đang đổi màu Tab"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "Bộ thông dịch mặc định"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "_Vẽ"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "Không có gì"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "Ký tự ngăn cách:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "Cạnh"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "Ký tự ngăn cách:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "Phân loại:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "Đường 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "Đường 3D"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "Nhiều lỗi\n"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "Giá"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "Phạm vi"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "Phân đôi"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "Phân đôi"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default pie types"
+msgstr "Bộ thông dịch mặc định"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "_Vẽ"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "_Vẽ"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "Khối phần trăm"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "Lỗi chuẩn"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Radar plot."
+msgstr "Khối chồng"
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "Bộ thông dịch mặc định"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "Lỗi phân tích dòng"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "Toàn bộ số"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "Đếm"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "Dòng cần nhập"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "Nguồn"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "Lỗi phân tích dòng"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "Vùng nguồn"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "Vùng nguồn"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "% cỡ _bình thường"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "centimét"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+#, fuzzy
+msgid "Show _negative values"
+msgstr "Xem chi tiết"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "Nguồn"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "_Vẽ"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "Bong bóng"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+msgid "Bubble"
+msgstr "Bong bóng"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "Lỗi phân tích dòng"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "Lỗi phân tích dòng"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr "Nội suy giữa các điểm nhiều chiều."
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+#, fuzzy
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+"Nội suy tuyến tính giữa các điểm nhiều chiều, kèm đánh dấu tại mỗi điểm."
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr "Nội suy tuyến tính giữa các điểm nhiều chiều."
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+#, fuzzy
+msgid "Markers at each point."
+msgstr "Điểm đánh dấu nội suy"
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-dimensional points with circle at each point."
+msgstr "Nội suy giữa các điểm nhiều chiều, kèm đánh dấu tại mỗi điểm."
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "Đường thẳng"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "Điểm"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "Đường thẳng"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_CN.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_CN.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_CN.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4384 @@
+# translation of gnumeric.HEAD.zh_CN.po to 
+# translation of gnumeric.HEAD.zh_CN.po to
+# gnumeric simplified chinese translation file.
+# Copyright (C) 1998-2001,2003 Free Software Foundation, Inc.
+# Dillion Chen <dillon.chen at turbolinux.com.cn>, 2001.
+# Donald Park <xlpark at kankou.cs.uec.ac.jp>, 2001.
+# Funda Wang <fundawang at linux.net.cn>, 2003,2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2004-11-28 14:12+0800\n"
+"Last-Translator: Funda Wang <fundawang at linux.net.cn>\n"
+"Language-Team: zh_CN <i18n-translation at lists.linux.net.cn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "目的"
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, fuzzy, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "文件包含无效 id (%s) 的插件信息, 指望 %s."
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "不能从文件中读取插件信息"
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "未知名称"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr "不支持的装入器类型“%s”。"
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr "当准备装入器“%s”时出现错误。"
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr "当读取服务信息 #%d 时出现错误。"
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "不能读取插件信息文件(“%s”)。"
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "文件 \"%s\" 不是有效的插件信息文件."
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr "为带有 id=\"%s\" 的插件读取文件时出现错误."
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr ""
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "未知插件名。"
+
+#: goffice/app/go-plugin.c:824
+#, fuzzy, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr "为带有 id=\"%s\" 的插件没有定义装入器."
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "插件没有 id。"
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr "初始化插件装入器 (\"%s\") 时出现错误."
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+#, fuzzy
+msgid "Detected cyclic plugin dependencies."
+msgstr "当装入插件依赖关系时出现错误."
+
+#: goffice/app/go-plugin.c:926
+#, fuzzy, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "不能激活插件 \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, fuzzy, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "为带有 id=\"%s\" 的插件没有定义装入器."
+
+#: goffice/app/go-plugin.c:939
+#, fuzzy
+msgid "Error while activating plugin dependencies."
+msgstr "当装入插件依赖关系时出现错误."
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr "当激活插件服务 #%d 时出现错误."
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr "当不激活插件服务 #%d 时出现错误."
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr "无法装入插件装入器。"
+
+#: goffice/app/go-plugin.c:1099
+#, fuzzy, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "为带有 id=\"%s\" 的插件没有定义装入器."
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "当装入插件依赖关系时出现错误."
+
+#: goffice/app/go-plugin.c:1288
+#, fuzzy, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "当从文件 \"%s\" 读取插件信息时出现错误."
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "不能激活插件 \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "不能不激活插件 \"%s\" (ID: %s)."
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "当读取有关可用插件信息时出现错误."
+
+#: goffice/app/go-plugin.c:1590
+#, fuzzy
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "当不激活插件服务 #%d 时出现错误."
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "激活插件时出错。"
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "初始化插件系统时出错。"
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, fuzzy, c-format
+msgid "Service '%s' not supported by l."
+msgstr "服务“%s”不被装入器所支持。"
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "没有给出模块文件名。"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "无法打开模块文件“%s”。"
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "模块文件“%s”格式无效。"
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr "文件不包含(“plugin_file_struct”符号)。"
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr "文件的格式号码有错。"
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "插件版本“%s”与应用程序“%s”不同。"
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr "在此系统中不支持动态模块装入。"
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "无法关闭模块文件“%s”。"
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "文件中不包含“%s”函数。"
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "模块不包含“%s”函数。"
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "当装入插件服务时出现错误。"
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "插件内部初始化函数返回错误"
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr "插件内部清理函数返回错误"
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "常规"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr "文件打开器无描述"
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr "文件打开器 - %s"
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "读取文件时出错。"
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr "文件保存器没有描述"
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr "文件保存器 - %s"
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "保存文件时出错。"
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr "插件装入器"
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr "GObject 装入程序"
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr "未知服务类型:%s。"
+
+#: goffice/app/go-plugin-service.c:1039
+#, fuzzy
+msgid "Error reading service information."
+msgstr "当读取服务信息 #%d 时出现错误."
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "页数"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "缩进(_I):"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "搜索(_S)"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "对齐"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "引号(_C):"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr "离散"
+
+#: goffice/graph/gog-axis.c:611
+#, fuzzy
+msgid "Discrete mapping"
+msgstr "离散"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear"
+msgstr "线性"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "逻辑"
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Logarithm mapping"
+msgstr "对数"
+
+#: goffice/graph/gog-axis.c:1410
+msgid "Details"
+msgstr "细节"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "自动"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "分类(_C)"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "背景"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "最小(_I)"
+
+#: goffice/graph/gog-axis.c:1476
+msgid "M_ax"
+msgstr "最大值(_A)"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+msgid "_Cross"
+msgstr "十字(_C)"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "格式"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "标签"
+
+#: goffice/graph/gog-axis.c:1539
+msgid "MinorGrid"
+msgstr "次要网格线"
+
+#: goffice/graph/gog-axis.c:1542
+msgid "MajorGrid"
+msgstr "主要网格线"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+msgid "<b>Major ticks</b>"
+msgstr "<b>主要网格线</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "预览"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "模式"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+msgid "<b>Position</b>"
+msgstr "<b>位置</b>"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+msgid "I_nside"
+msgstr "内部(_N)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+msgid "O_utside"
+msgstr "外围(_U)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+msgid "_High"
+msgstr "高(_H)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+msgid "_Inside"
+msgstr "内部(_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+msgid "_Invert axis"
+msgstr "插入数轴(_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+msgid "_Low"
+msgstr "低(_L)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+msgid "_Outside"
+msgstr "外围(_O)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+msgid "_Show Labels"
+msgstr "显示标签(_S)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "类型(_T):"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr "图例"
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+msgid "Title"
+msgstr "标题"
+
+#: goffice/graph/gog-chart.c:203
+msgid "Grid"
+msgstr "网格"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+#, fuzzy
+msgid "Plot"
+msgstr "点"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "高"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "高度"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "宽"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "宽度"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr "(+)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr "(-)"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+msgid "<b>Error category</b>"
+msgstr "<b>错误类别</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+msgid "<b>Style</b>"
+msgstr "<b>样式</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+msgid "<b>Values</b>"
+msgstr "<b>值</b>"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+msgid "Colo_r:"
+msgstr "颜色(_R):"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr "显示(_P):"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+msgid "_Line width:"
+msgstr "线宽(_L):"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+msgid "_Width:"
+msgstr "宽度(_W):"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+msgid "Graph"
+msgstr "图表"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr "图表"
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "名称"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr "第一步,共两步:选择图表类型"
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr "第二步,共两步:自定义图表"
+
+#: goffice/graph/gog-guru.c:1105
+msgid "Customize Chart"
+msgstr "自定义图表"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "插入(_I)"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "粘贴方法"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr "GNOME Office Graph"
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+msgid "_Order"
+msgstr "顺序(_O)"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "<b>定义</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "<b>模式</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "<b>样式</b>"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "范例"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "描述"
+
+#: goffice/graph/gog-label.c:108
+msgid "_Text:"
+msgstr "文本(_T):"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "数据"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr "序列"
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:246
+#, fuzzy
+msgid "Plot Type"
+msgstr "粘贴方法"
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr "图表主题"
+
+#: goffice/graph/gog-series.c:145
+msgid "Index:"
+msgstr "索引:"
+
+#: goffice/graph/gog-series.c:162
+msgid "Settings"
+msgstr "设置"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "点"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, c-format
+msgid "%d x %d"
+msgstr "%d x %d"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "字体"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "样式"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+msgid "<b>Fill</b>"
+msgstr "<b>å¡«å……</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+msgid "<b>Line</b>"
+msgstr "<b>线条</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "模式"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+msgid "<b>Outline</b>"
+msgstr "<b>轮廓</b>"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "颜色(_L):"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+msgid "O_utline color:"
+msgstr "轮廓颜色(_U):"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+msgid "Sha_pe:"
+msgstr "形状(_P):"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+msgid "Si_ze:"
+msgstr "大小(_Z):"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+msgid "St_yle:"
+msgstr "样式(_Y):"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+msgid "T_ype:"
+msgstr "类型(_Y):"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+msgid "_Background:"
+msgstr "背景(_B):"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+msgid "_Direction:"
+msgstr "方向(_D):"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+msgid "_End:"
+msgstr "结束(_E):"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+msgid "_Fill color:"
+msgstr "填充颜色(_F):"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+msgid "_Fit:"
+msgstr "适合(_F):"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+msgid "_Foreground:"
+msgstr "前景色(_F):"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+msgid "_Pattern:"
+msgstr "模式(_P):"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+msgid "_Select..."
+msgstr "选择(_S)..."
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+msgid "_Size:"
+msgstr "大小(_S):"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+msgid "_Start:"
+msgstr "开始(_S):"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "靠右(_R)"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "array"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "报告:"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "默认"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+#, fuzzy
+msgid "Guppi"
+msgstr "分组"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "阿拉伯语"
+
+#: goffice/gtk/go-charmap-sel.c:75
+#, fuzzy
+msgid "Baltic"
+msgstr "斜体"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "中欧"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "中文"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:79
+#, fuzzy
+msgid "Greek"
+msgstr "绿"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:81
+#, fuzzy
+msgid "Indian"
+msgstr "平均(_M)"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "日语"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "朝鲜语"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "土耳其语"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "Unicode"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "越南语"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "西欧"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "其它"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "中欧(IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "中欧(ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "中欧(MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "中欧(Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "简体中文(GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "简体中文(GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "简体中文(GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "简体中文(HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "简体中文(Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "繁体中文(Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "繁体中文(Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "繁体中文(EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:168
+#, fuzzy
+msgid "Japanese (EUC-JP)"
+msgstr "日元"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:173
+#, fuzzy
+msgid "Korean (JOHAB)"
+msgstr "布尔"
+
+#: goffice/gtk/go-charmap-sel.c:174
+#, fuzzy
+msgid "Korean (UHC)"
+msgstr "布尔"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:184
+#, fuzzy
+msgid "Unicode (UTF-7)"
+msgstr "取消隐藏(_U)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+#, fuzzy
+msgid "Unicode (UTF-8)"
+msgstr "取消隐藏(_U)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:190
+#, fuzzy
+msgid "User Defined"
+msgstr "使用下划线"
+
+#: goffice/gtk/go-charmap-sel.c:191
+#, fuzzy
+msgid "Vietnamese (TCVN)"
+msgstr "定义名称"
+
+#: goffice/gtk/go-charmap-sel.c:192
+#, fuzzy
+msgid "Vietnamese (VISCII)"
+msgstr "定义名称"
+
+#: goffice/gtk/go-charmap-sel.c:193
+#, fuzzy
+msgid "Vietnamese (VPS)"
+msgstr "定义名称"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr ""
+
+#: goffice/gtk/go-charmap-sel.c:418
+#, fuzzy
+msgid "Locale: "
+msgstr "逻辑"
+
+#: goffice/gtk/go-charmap-sel.c:457
+#, fuzzy
+msgid "Conversion Direction"
+msgstr "相关"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "松弛"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "星期一"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "range"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "粗体"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+#, fuzzy
+msgid "dull blue"
+msgstr "单元格值"
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "蓝"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "array"
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "红"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "range"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "time"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "array"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "洋红"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "黄"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "绿"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "青"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "超级链接"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "右对齐"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "右对齐"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "右对齐"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "白"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "按数值"
+
+#: goffice/gtk/go-color-palette.c:472
+msgid "custom"
+msgstr "自定义"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+msgid "Custom Color..."
+msgstr "自定义颜色..."
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr "阴影类型"
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+msgid "Orientation"
+msgstr "方向"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+#, fuzzy
+msgid "Dock the toolbar"
+msgstr "如何绘制工具栏"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "如何绘制工具栏"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "无法打开文件“%s”"
+
+#: goffice/gtk/goffice-gtk.c:448
+msgid "All Files"
+msgstr "全部文件"
+
+#: goffice/gtk/goffice-gtk.c:453
+msgid "Images"
+msgstr "图像"
+
+#: goffice/gtk/goffice-gtk.c:490
+msgid "Select an Image"
+msgstr "选择图像"
+
+#: goffice/gtk/goffice-gtk.c:508
+msgid "Save as"
+msgstr "另存为"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "文件类型(_T):"
+
+#: goffice/gtk/goffice-gtk.c:551
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr ""
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"是一个目录名"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"您没有权限保存到\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"%2$s 中已经存在名为 <i>%1$s</i> 的文件。\n"
+"\n"
+"您是否想要覆盖它?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr "标准"
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "粗体"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "粗斜体"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "斜体"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "字体样式:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "字体:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "预览"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "大小:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "æ•°å­—"
+
+#: goffice/gtk/go-format-sel.c:76
+msgid "Currency"
+msgstr "货币"
+
+#: goffice/gtk/go-format-sel.c:77
+msgid "Accounting"
+msgstr "会计"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "日期"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "时间"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "百分比"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "分数(_F)"
+
+#: goffice/gtk/go-format-sel.c:82
+msgid "Scientific"
+msgstr "科学计数法"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "文本"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "特殊(_P)"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "自定义"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "负数格式"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "数字格式"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+msgid "Ca_tegories:"
+msgstr "类别(_T):"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "小数位(_M):"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "输入的原样"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+msgid "Format c_ode:"
+msgstr "格式代码(_O):"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+msgid "Negative number _format:"
+msgstr "负数格式(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+msgid "Preview:"
+msgstr "预览:"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "符号(_Y):"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "格式(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "使用千分隔符(_U)"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "西"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "页面居中"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+#, fuzzy
+msgid "Asia"
+msgstr "sigma"
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "区域 %i"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "澳大利亚元"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "南非 rand"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:109
+#, fuzzy
+msgid "United Arab Emirates (ar_AE)"
+msgstr "阿联酋迪拉姆"
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "巴林第纳尔"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "约丹第纳尔"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "科威特第纳尔"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "利比亚 第纳尔"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "沙特阿拉伯 利雅"
+
+#: goffice/gtk/go-locale-sel.c:123
+#, fuzzy
+msgid "Sudan (ar_SD)"
+msgstr "苏丹第纳尔"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "突尼斯 第纳尔"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Belarussian 卢布"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "保加利亚 利未"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "孟加拉塔卡"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "捷克 koruna"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+#, fuzzy
+msgid "Denmark (da_DK)"
+msgstr "丹麦克朗"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+#, fuzzy
+msgid "Switzerland/German (de_CH)"
+msgstr "瑞士法郎"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+msgid "India/English (en_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "新西兰元"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "菲律宾 比索"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "南非 rand"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "阿根廷 austral"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "智利比索"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "哥伦比亚比索"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "哥斯达黎加 colon"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "多米尼加比索"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "样本"
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "瓜地马拉 quetzal"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "洪都拉丝 lempira"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "墨西哥比索"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+#, fuzzy
+msgid "El Salvador (es_SV)"
+msgstr "萨尔瓦多 colon"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "乌拉圭 比索"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "委内瑞拉 bolivar"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "样本"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+#, fuzzy
+msgid "Switzerland/French (fr_CH)"
+msgstr "瑞士法郎"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+msgid "Armenia (hy_AM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr "(i18n)"
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "印度尼西亚 卢比"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+#, fuzzy
+msgid "Japan (ja_JP)"
+msgstr "日元"
+
+#: goffice/gtk/go-locale-sel.c:203
+msgid "Georgia (ka_GE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+#, fuzzy
+msgid "Korea (ko_KR)"
+msgstr "布尔"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+msgid "Lithuania (lt_LT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:208
+msgid "Latvia (lv_LV)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+msgid "Russia (ru_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:224
+msgid "Ukraine/Russian (ru_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "斯洛法克 tolar"
+
+#: goffice/gtk/go-locale-sel.c:227
+#, fuzzy
+msgid "Slovenia (sl_SI)"
+msgstr "斯洛法克 tolar"
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "阿尔巴尼亚 lek"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "新南斯拉夫 第纳尔"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "巴基斯坦 卢比"
+
+#: goffice/gtk/go-locale-sel.c:235
+#, fuzzy
+msgid "Thailand (th_TH)"
+msgstr "泰国 baht"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+msgid "Ukraine (uk_UA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "巴基斯坦 卢比"
+
+#: goffice/gtk/go-locale-sel.c:243
+msgid "Uzbekistan (uz_UZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:244
+msgid "Vietnam (vi_VN)"
+msgstr "越南(vi_VN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr "中国(zh_CN)"
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr "中国香港特别行政区/中文(zh_HK)"
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr "新加坡/中文(zh_SG)"
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr "中国台湾(zh_TW)"
+
+#: goffice/gtk/go-locale-sel.c:451
+msgid "Current Locale: "
+msgstr "当前语系:"
+
+#: goffice/gtk/go-optionmenu.c:197
+msgid "Menu"
+msgstr "菜单"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr "选项菜单"
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+#, fuzzy
+msgid "Indicator Spacing"
+msgstr "内部填充"
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "*周日"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "*周一"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "*周二"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "*周三"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "*周四"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "*周五"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "*周六"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "星期日"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "星期一"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "星期二"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "星期三"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "星期四"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "星期五"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "星期六"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "*一月"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "*二月"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "*三月"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "*四月"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "*五月"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "*六月"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "*七月"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "*八月"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "*九月"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "*十月"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "*十一月"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "*十二月"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "一月"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "二月"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "三月"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "四月"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "五月"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "六月"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "七月"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "八月"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "九月"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "十月"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "十一月"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "十二月"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "黑"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "蓝"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "青"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "绿"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "洋红"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "红"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "白"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "黄"
+
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "阿联酋迪拉姆"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "阿富汗尼"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "阿尔巴尼亚 Leke"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr "亚美尼亚特拉姆"
+
+#: goffice/utils/formats.c:393
+#, fuzzy
+msgid "Netherlands Antilles, Guilders"
+msgstr "荷兰盾"
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr "安哥拉 Kwanza"
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "阿根廷比索"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "澳大利亚元"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr "阿鲁巴盾"
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr "巴巴多斯元"
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "孟加拉塔卡"
+
+#: goffice/utils/formats.c:402
+#, fuzzy
+msgid "Bulgaria, Leva"
+msgstr "保加利亚 利未"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "巴林第纳尔"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "布隆迪法郎"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr "百慕达元"
+
+#: goffice/utils/formats.c:406
+#, fuzzy
+msgid "Brunei Darussalam, Dollars"
+msgstr "汶莱 美元"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "玻利维亚元"
+
+#: goffice/utils/formats.c:408
+#, fuzzy
+msgid "Brazil, Brazil Real"
+msgstr "巴西 cruzeiro"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "巴哈马元"
+
+#: goffice/utils/formats.c:410
+#, fuzzy
+msgid "Bhutan, Ngultrum"
+msgstr "不丹 ngultrum"
+
+#: goffice/utils/formats.c:411
+#, fuzzy
+msgid "Botswana, Pulas"
+msgstr "波丝瓦那 pula"
+
+#: goffice/utils/formats.c:412
+#, fuzzy
+msgid "Belarus, Rubles"
+msgstr "Belarussian 卢布"
+
+#: goffice/utils/formats.c:413
+#, fuzzy
+msgid "Belize, Dollars"
+msgstr "百里斯 美元"
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "加拿大元"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "瑞士法郎"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "智利比索"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "中国人民币"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "哥伦比亚比索"
+
+#: goffice/utils/formats.c:420
+#, fuzzy
+msgid "Costa Rica, Colones"
+msgstr "哥斯达黎加 colon"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "古巴比索"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "好望角埃斯库多"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "塞浦路斯镑"
+
+#: goffice/utils/formats.c:424
+#, fuzzy
+msgid "Czech Republic, Koruny"
+msgstr "捷克 koruna"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "吉布提法郎"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "丹麦克朗"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "多米尼加比索"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "阿尔及利亚第纳尔"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr ""
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "埃及镑"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+#, fuzzy
+msgid "Ethiopia, Birr"
+msgstr "埃塞俄比亚 birr"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr ""
+
+#: goffice/utils/formats.c:434
+#, fuzzy
+msgid "Fiji, Dollars"
+msgstr "斐济 美元"
+
+#: goffice/utils/formats.c:435
+#, fuzzy
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr "福克兰群岛 英镑"
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "英镑"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr "苏丹镑"
+
+#: goffice/utils/formats.c:439
+#, fuzzy
+msgid "Ghana, Cedis"
+msgstr "加纳 cedi"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr "直布罗陀镑"
+
+#: goffice/utils/formats.c:441
+#, fuzzy
+msgid "Gambia, Dalasi"
+msgstr "赞比亚 dalasi"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr "几内亚法郎"
+
+#: goffice/utils/formats.c:443
+#, fuzzy
+msgid "Guatemala, Quetzales"
+msgstr "瓜地马拉 quetzal"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "盖亚那元"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "港币"
+
+#: goffice/utils/formats.c:446
+#, fuzzy
+msgid "Honduras, Lempiras"
+msgstr "洪都拉丝 lempira"
+
+#: goffice/utils/formats.c:447
+#, fuzzy
+msgid "Croatia, Kuna"
+msgstr "克罗埃西亚 kuna"
+
+#: goffice/utils/formats.c:448
+#, fuzzy
+msgid "Haiti, Gourdes"
+msgstr "海地 古德"
+
+#: goffice/utils/formats.c:449
+#, fuzzy
+msgid "Hungary, Forint"
+msgstr "匈牙利 forint"
+
+#: goffice/utils/formats.c:450
+#, fuzzy
+msgid "Indonesia, Rupiahs"
+msgstr "印度尼西亚 卢比"
+
+#: goffice/utils/formats.c:451
+#, fuzzy
+msgid "Israel, New Shekels"
+msgstr "以色列 谢克尔"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "印度卢比"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "伊拉克第纳尔"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "伊朗里奥"
+
+#: goffice/utils/formats.c:456
+#, fuzzy
+msgid "Iceland, Kronur"
+msgstr "冰岛 克朗"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "牙买加元"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "约丹第纳尔"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "日元"
+
+#: goffice/utils/formats.c:461
+#, fuzzy
+msgid "Kenya, Shillings"
+msgstr "肯亚 先令"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr ""
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr ""
+
+#: goffice/utils/formats.c:464
+#, fuzzy
+msgid "Comoros, Francs"
+msgstr "科摩罗伊斯兰联邦共和国 法郎"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr ""
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "科威特第纳尔"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr "开曼群岛元"
+
+#: goffice/utils/formats.c:469
+#, fuzzy
+msgid "Kazakstan, Tenge"
+msgstr "巴基斯坦 卢比"
+
+#: goffice/utils/formats.c:470
+#, fuzzy
+msgid "Laos, Kips"
+msgstr "老挝 kip"
+
+#: goffice/utils/formats.c:471
+#, fuzzy
+msgid "Lebanon, Pounds"
+msgstr "黎巴嫩 英镑"
+
+#: goffice/utils/formats.c:472
+#, fuzzy
+msgid "Sri Lanka, Rupees"
+msgstr "斯里兰卡 卢比"
+
+#: goffice/utils/formats.c:473
+#, fuzzy
+msgid "Liberia, Dollars"
+msgstr "利比利亚 美元"
+
+#: goffice/utils/formats.c:474
+#, fuzzy
+msgid "Lesotho, Maloti"
+msgstr "赖索托 loti"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr ""
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr ""
+
+#: goffice/utils/formats.c:477
+#, fuzzy
+msgid "Libya, Dinars"
+msgstr "利比亚 第纳尔"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "摩洛哥迪拉姆"
+
+#: goffice/utils/formats.c:479
+#, fuzzy
+msgid "Moldova, Lei"
+msgstr "摩尔多瓦 leu"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "马达加斯加法郎"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr ""
+
+#: goffice/utils/formats.c:482
+#, fuzzy
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar kyat"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "蒙古图格里克"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "澳元"
+
+#: goffice/utils/formats.c:485
+#, fuzzy
+msgid "Mauritania, Ouguiyas"
+msgstr "毛里塔尼亚 ouguiya"
+
+#: goffice/utils/formats.c:486
+#, fuzzy
+msgid "Malta, Liri"
+msgstr "马尔他 里拉"
+
+#: goffice/utils/formats.c:487
+#, fuzzy
+msgid "Mauritius, Rupees"
+msgstr "毛里西斯 卢比"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr ""
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "马拉维克瓦查"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "墨西哥比索"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "马来西亚林吉特"
+
+#: goffice/utils/formats.c:492
+#, fuzzy
+msgid "Mozambique, Meticais"
+msgstr "莫桑比克 metical"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "纳米比亚元"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "尼日利亚奈拉"
+
+#: goffice/utils/formats.c:495
+#, fuzzy
+msgid "Nicaragua, Gold Cordobas"
+msgstr "尼加拉瓜 cordoba oro"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "挪威克朗"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "尼泊尔卢比"
+
+#: goffice/utils/formats.c:498
+#, fuzzy
+msgid "New Zealand, Dollars"
+msgstr "新西兰元"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "阿曼里亚尔"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "巴拿马巴波亚"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr ""
+
+#: goffice/utils/formats.c:502
+#, fuzzy
+msgid "Papua New Guinea, Kina"
+msgstr "巴布亚新几内亚 kina"
+
+#: goffice/utils/formats.c:503
+#, fuzzy
+msgid "Philippines, Pesos"
+msgstr "菲律宾 比索"
+
+#: goffice/utils/formats.c:504
+#, fuzzy
+msgid "Pakistan, Rupees"
+msgstr "巴基斯坦 卢比"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr ""
+
+#: goffice/utils/formats.c:506
+#, fuzzy
+msgid "Paraguay, Guarani"
+msgstr "巴拉圭 guarani"
+
+#: goffice/utils/formats.c:507
+#, fuzzy
+msgid "Qatar, Rials"
+msgstr "卡塔尔 里奥"
+
+#: goffice/utils/formats.c:508
+#, fuzzy
+msgid "Romania, Lei"
+msgstr "罗马尼亚 leu"
+
+#: goffice/utils/formats.c:509
+#, fuzzy
+msgid "Russia, Rubles"
+msgstr "Belarussian 卢布"
+
+#: goffice/utils/formats.c:510
+#, fuzzy
+msgid "Rwanda, Rwanda Francs"
+msgstr "卢安达 法郎"
+
+#: goffice/utils/formats.c:511
+#, fuzzy
+msgid "Saudi Arabia, Riyals"
+msgstr "沙特阿拉伯 利雅"
+
+#: goffice/utils/formats.c:512
+#, fuzzy
+msgid "Solomon Islands, Dollars"
+msgstr "所罗门群岛 美元"
+
+#: goffice/utils/formats.c:513
+#, fuzzy
+msgid "Seychelles, Rupees"
+msgstr "塞舌尔 卢比"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "苏丹第纳尔"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr ""
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "新加坡元"
+
+#: goffice/utils/formats.c:517
+#, fuzzy
+msgid "Saint Helena, Pounds"
+msgstr "圣海伦 英镑"
+
+#: goffice/utils/formats.c:518
+#, fuzzy
+msgid "Slovenia, Tolars"
+msgstr "斯洛法克 tolar"
+
+#: goffice/utils/formats.c:519
+#, fuzzy
+msgid "Slovakia, Koruny"
+msgstr "斯洛法克 tolar"
+
+#: goffice/utils/formats.c:520
+#, fuzzy
+msgid "Sierra Leone, Leones"
+msgstr "狮子山 leone"
+
+#: goffice/utils/formats.c:521
+#, fuzzy
+msgid "Somalia, Shillings"
+msgstr "索马里 先令"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+#, fuzzy
+msgid "Suriname, Guilders"
+msgstr "苏利南 盾"
+
+#: goffice/utils/formats.c:524
+#, fuzzy
+msgid "Sao Tome and Principe, Dobras"
+msgstr "圣多美及普林西比 dobra"
+
+#: goffice/utils/formats.c:525
+#, fuzzy
+msgid "El Salvador, Colones"
+msgstr "萨尔瓦多 colon"
+
+#: goffice/utils/formats.c:526
+#, fuzzy
+msgid "Syria, Pounds"
+msgstr "叙利亚 英镑"
+
+#: goffice/utils/formats.c:527
+#, fuzzy
+msgid "Swaziland, Emalangeni"
+msgstr "史瓦济兰 lilangeni"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "æ³°é“¢"
+
+#: goffice/utils/formats.c:529
+#, fuzzy
+msgid "Tajikistan, Rubles"
+msgstr "巴基斯坦 卢比"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+#, fuzzy
+msgid "Tunisia, Dinars"
+msgstr "突尼斯 第纳尔"
+
+#: goffice/utils/formats.c:532
+#, fuzzy
+msgid "Tonga, Pa'anga"
+msgstr "东加 pa'anga"
+
+#: goffice/utils/formats.c:533
+#, fuzzy
+msgid "Turkey, Liras"
+msgstr "土耳其 里拉"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "千里达共和国元"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "台湾新币"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "坦桑尼亚先令"
+
+#: goffice/utils/formats.c:538
+#, fuzzy
+msgid "Ukraine, Hryvnia"
+msgstr "乌可兰 hryvnia"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "乌干达先令"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "美元"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "乌拉圭比索"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr ""
+
+#: goffice/utils/formats.c:543
+#, fuzzy
+msgid "Venezuela, Bolivares"
+msgstr "委内瑞拉 bolivar"
+
+#: goffice/utils/formats.c:544
+#, fuzzy
+msgid "Viet Nam, Dong"
+msgstr "越南 dong"
+
+#: goffice/utils/formats.c:545
+#, fuzzy
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu vatu"
+
+#: goffice/utils/formats.c:546
+#, fuzzy
+msgid "Samoa, Tala"
+msgstr "沙门群岛 tala"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:550
+#, fuzzy
+msgid "East Caribbean Dollars"
+msgstr "东加勒比 美元"
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:553
+msgid "Palladium, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr ""
+
+#: goffice/utils/formats.c:556
+#, fuzzy
+msgid "Yemen, Rials"
+msgstr "也门 里奥"
+
+#: goffice/utils/formats.c:557
+#, fuzzy
+msgid "Yugoslavia, New Dinars"
+msgstr "新南斯拉夫 第纳尔"
+
+#: goffice/utils/formats.c:558
+#, fuzzy
+msgid "South Africa, Rand"
+msgstr "南非 rand"
+
+#: goffice/utils/formats.c:559
+#, fuzzy
+msgid "Zambia, Kwacha"
+msgstr "赞比亚 kwacha"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "津巴布韦元"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "æ— "
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "无色"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "自动"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "æ— "
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "平均(_M)"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "range"
+
+#: goffice/utils/go-marker.c:225
+#, fuzzy
+msgid "triangle right"
+msgstr "右边轮廓(_R)"
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+#, fuzzy
+msgid "circle"
+msgstr "文件"
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr "x"
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "粘贴链接"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "*三月"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% 灰度"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% 灰度"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% 灰度"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% 灰度"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "62.5% 灰度"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "水平行数"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "垂直条纹"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "反向对角线条纹"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "对角线条纹"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr "对角线阴影"
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr "粗对角线格子"
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "细水平条纹"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "细垂直条纹"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "细反向对角线条纹"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "细对角线条纹"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr "细水平格子"
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr "细对角线格子"
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr "前景色"
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "小圆"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "半圆"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr "茅草"
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "大圆"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr ""
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "标签"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "数值"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "处理行出错"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+msgid "O_verlap:"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+#, fuzzy
+msgid "_Gap:"
+msgstr "_alpha:"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "点"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "点"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Adjacent Columns"
+msgstr "删除列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+#, fuzzy
+msgid "3D Percentage Bars"
+msgstr "3D 百分比直线"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+#, fuzzy
+msgid "3D Percentage Columns"
+msgstr "3D 百分比直线"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+#, fuzzy
+msgid "3D Stacked Columns"
+msgstr "删除列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+#, fuzzy
+msgid "Adjacent Columns"
+msgstr "插入列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "区域"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "区域(_A)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "直线"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "要导入的行"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "直线"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+#, fuzzy
+msgid "Percentage Bars"
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+#, fuzzy
+msgid "Percentage Columns"
+msgstr "百分比(_P)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "百分比(_P)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+#, fuzzy
+msgid "Stacked Areas"
+msgstr "删除列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+#, fuzzy
+msgid "Stacked Columns"
+msgstr "删除列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+#, fuzzy
+msgid "Stacked Lines"
+msgstr "格子线(_G)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+#, fuzzy
+msgid "Stacked line plot."
+msgstr "删除列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "格子线(_G)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+#, fuzzy
+msgid "Unmarked Stacked Lines"
+msgstr "格子线(_G)"
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "默认解释器"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+#, fuzzy
+msgid "Line, Area, Bar and Column plots"
+msgstr "行号列标(_L)"
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+#, fuzzy
+msgid "Box-Plot"
+msgstr "点"
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "无效的检索模式"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+#, fuzzy
+msgid "BoxPlot"
+msgstr "点"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+#, fuzzy
+msgid "BoxPlots"
+msgstr "点"
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+#, fuzzy
+msgid "Box-Plots"
+msgstr "点"
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "处理行出错"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+#, fuzzy
+msgid "Charting : Box-Plots"
+msgstr "更改标签颜色"
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "默认解释器"
+
+#: plugins/plot_pie/gog-pie.c:180
+#, fuzzy
+msgid "PlotPie"
+msgstr "点"
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "æ— "
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+#, fuzzy
+msgid "_Slice Separation:"
+msgstr "分隔符:"
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+#, fuzzy
+msgid "degrees"
+msgstr "度数(_D)"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "分隔符:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "分类:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+#, fuzzy
+msgid "3D Pie"
+msgstr "区分线"
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+#, fuzzy
+msgid "3D Split Pie"
+msgstr "区分线"
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+#, fuzzy
+msgid "Multi-pie-bars"
+msgstr "多个错误\n"
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+#, fuzzy
+msgid "Pie"
+msgstr "ä»·æ ¼"
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+#, fuzzy
+msgid "Ring"
+msgstr "范围"
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Split Pie"
+msgstr "拆分"
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "拆分"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default pie types"
+msgstr "默认解释器"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+#, fuzzy
+msgid "PlotRadar"
+msgstr "点"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "点"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "百分比(_C)"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+msgid "Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "默认解释器"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "处理行出错"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "inumber"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "计数"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "要导入的行"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "源"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "处理行出错"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "源域"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "源域"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "标准大小的百分比(_N)"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr "立体(_D)"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "参数"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+msgid "Sur_face"
+msgstr "表面(_F)"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+#, fuzzy
+msgid "PlotXY"
+msgstr "点"
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "双线"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "双线"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "处理行出错"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "处理行出错"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "直线"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "点"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "直线"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_TW.po
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_TW.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/po/zh_TW.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4340 @@
+# traditional Chinese translation of gnumeric.
+# Copyright (C) 1999, 2001, 2003 Free Software Foundation, Inc.
+# Pofeng Lee <Pofeng.Lee at ms7.url.com.tw>, 1999
+# Abel Cheung <maddog at linux.org.hk>, 2001, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnumeric 1.1.19\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-02 12:38-0500\n"
+"PO-Revision-Date: 2003-04-20 09:47+0800\n"
+"Last-Translator: Abel Cheung <maddog at linux.org.hk>\n"
+"Language-Team: Chinese (traditional) <zh-l10n at linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: goffice/app/file.c:500
+msgid "Not a valid UTF-8 filename."
+msgstr ""
+
+#: goffice/app/file.c:510
+msgid "Saving over old files of this type is disabled for safety."
+msgstr ""
+
+#: goffice/app/file.c:512
+msgid ""
+"You can turn this safety feature off by editing appropriate plugin.xml file."
+msgstr ""
+
+#: goffice/app/go-object.c:51
+#, fuzzy
+msgid "Objects"
+msgstr "物件(_O)..."
+
+#: goffice/app/go-object.c:109
+#, c-format
+msgid "Loading plugin '%s' that contains the object '%s'"
+msgstr ""
+
+#: goffice/app/go-plugin.c:344
+#, c-format
+msgid "File contains plugin info with invalid id (%s), expected %s."
+msgstr "檔案中的增效模組資訊含有無效的識別碼 (%s),本來應該是 %s。"
+
+#: goffice/app/go-plugin.c:348
+msgid "Couldn't read plugin info from file."
+msgstr "無法從檔案讀入增效模組資訊。"
+
+#: goffice/app/go-plugin.c:457
+msgid "Unknown name"
+msgstr "名稱不詳"
+
+#: goffice/app/go-plugin.c:551
+#, c-format
+msgid "Unsupported loader type \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:559
+#, c-format
+msgid "Error while preparing loader \"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:636
+#, c-format
+msgid "Error while reading service #%d info."
+msgstr ""
+
+#: goffice/app/go-plugin.c:715
+#, c-format
+msgid "Can't read plugin info file (\"%s\")."
+msgstr "無法讀入增效模組資料檔 (“%s”)。"
+
+#: goffice/app/go-plugin.c:719
+#, c-format
+msgid "File \"%s\" is not valid plugin info file."
+msgstr "檔案“%s”不是有效的增效模組資料檔。"
+
+#: goffice/app/go-plugin.c:805
+#, c-format
+msgid "Errors while reading services for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:816
+#, c-format
+msgid "Plugin id contains invalid characters (%s)."
+msgstr "增效模組識別碼中有無效的字元 (%s)。"
+
+#: goffice/app/go-plugin.c:820
+msgid "Unknown plugin name."
+msgstr "增效模組名稱不詳。"
+
+#: goffice/app/go-plugin.c:824
+#, c-format
+msgid "No loader defined or loader id invalid for plugin with id=\"%s\"."
+msgstr ""
+
+#: goffice/app/go-plugin.c:830
+msgid "Plugin has no id."
+msgstr "增效模組沒有任何識別碼。"
+
+#: goffice/app/go-plugin.c:871
+#, c-format
+msgid "Error initializing plugin loader (\"%s\")."
+msgstr ""
+
+#: goffice/app/go-plugin.c:902 goffice/app/go-plugin.c:1059
+msgid "Detected cyclic plugin dependencies."
+msgstr "偵測到在增效模組中出現循環的相依性。"
+
+#: goffice/app/go-plugin.c:926
+#, c-format
+msgid "Couldn't activate plugin with id=\"%s\"."
+msgstr "無法啟用識別碼為“%s”的增效模組。"
+
+#: goffice/app/go-plugin.c:932 goffice/app/go-plugin.c:1105
+#, c-format
+msgid "Couldn't find plugin with id=\"%s\"."
+msgstr "找不到識別碼為“%s”的增效模組。"
+
+#: goffice/app/go-plugin.c:939
+msgid "Error while activating plugin dependencies."
+msgstr ""
+
+#: goffice/app/go-plugin.c:953
+#, c-format
+msgid "Error while activating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1006
+#, c-format
+msgid "Error while deactivating plugin service #%d."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1071 goffice/app/go-plugin.c:1092
+msgid "Cannot load plugin loader."
+msgstr ""
+
+#: goffice/app/go-plugin.c:1099
+#, c-format
+msgid "Couldn't load plugin with id=\"%s\"."
+msgstr "無法載入識別碼為“%s”的增效模組。"
+
+#: goffice/app/go-plugin.c:1112
+msgid "Error while loading plugin dependencies."
+msgstr "載入有關增效模組相依性的資料時發生錯誤。"
+
+#: goffice/app/go-plugin.c:1288
+#, c-format
+msgid "Errors occurred while reading plugin informations from file \"%s\"."
+msgstr "從檔案“%s”讀取增效模組資訊時發生錯誤。"
+
+#: goffice/app/go-plugin.c:1407
+#, c-format
+msgid "Couldn't activate plugin \"%s\" (ID: %s)."
+msgstr "無法啟用增效模組“%s”(識別碼:%s)。"
+
+#: goffice/app/go-plugin.c:1442
+#, c-format
+msgid "Couldn't deactivate plugin \"%s\" (ID: %s)."
+msgstr "無法停用增效模組“%s”(識別碼:%s)。"
+
+#: goffice/app/go-plugin.c:1566 goffice/app/go-plugin.c:1710
+msgid "Errors while reading info about available plugins."
+msgstr "讀入可用的增效模組資料時發生錯誤。"
+
+#: goffice/app/go-plugin.c:1590
+msgid "Errors while deactivating plugins that are no longer on disk."
+msgstr "停止使用增效模組時發生錯誤;該增效模組在磁碟中已經不存在。"
+
+#: goffice/app/go-plugin.c:1611
+#, c-format
+msgid ""
+"The following plugins are no longer on disk but are still active:\n"
+"%s.\n"
+"You should restart Gnumeric now."
+msgstr ""
+"以下的增效模組在磁碟中已經不存在,但仍在使用中:\n"
+"%s。\n"
+"請立刻重新啟動 Gnumeric。"
+
+#: goffice/app/go-plugin.c:1733
+msgid "Errors while activating plugins."
+msgstr "啟用增效模組時發生錯誤。"
+
+#: goffice/app/go-plugin.c:1740
+msgid "Errors while initializing plugin system."
+msgstr "初始化增效模組支援時發生錯誤。"
+
+#: goffice/app/go-plugin-loader.c:47
+msgid "Loader has no set_attributes method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:62
+msgid "Loader has no load_base method.\n"
+msgstr ""
+
+#: goffice/app/go-plugin-loader.c:107 goffice/app/go-plugin-loader.c:145
+#, c-format
+msgid "Service '%s' not supported by l."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:44
+msgid "Module file name not given."
+msgstr "未指定模組檔案名稱。"
+
+#: goffice/app/go-plugin-loader-module.c:80
+#, c-format
+msgid "Unable to open module file \"%s\"."
+msgstr "無法開啟模組檔案“%s”。"
+
+#: goffice/app/go-plugin-loader-module.c:85
+#: goffice/app/go-plugin-loader-module.c:241
+#: goffice/app/go-plugin-loader-module.c:304
+#, c-format
+msgid "Module file \"%s\" has invalid format."
+msgstr "模組檔案“%s”的格式無效。"
+
+#: goffice/app/go-plugin-loader-module.c:89
+msgid "File doesn't contain (\"plugin_file_struct\" symbol)."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:92
+msgid "File has a bad magic number."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:95
+#, c-format
+msgid "Plugin version \"%s\" is different from application \"%s\"."
+msgstr "增效模組版本“%s”和程式版本“%s”不符合。"
+
+#: goffice/app/go-plugin-loader-module.c:104
+msgid "Dynamic module loading is not supported in this system."
+msgstr ""
+
+#: goffice/app/go-plugin-loader-module.c:118
+#, c-format
+msgid "Unable to close module file \"%s\"."
+msgstr "無法關閉模組檔案“%s”。"
+
+#: goffice/app/go-plugin-loader-module.c:244
+#: goffice/app/go-plugin-loader-module.c:307
+#, c-format
+msgid "File doesn't contain \"%s\" function."
+msgstr "檔案內沒有“%s”函數。"
+
+#: goffice/app/go-plugin-loader-module.c:371
+#, c-format
+msgid "Module doesn't contain \"%s\" function."
+msgstr "模組中沒有“%s”函式。"
+
+#: goffice/app/go-plugin-service.c:156 goffice/app/go-plugin-service.c:851
+msgid "Error while loading plugin service."
+msgstr "載入增效模組服務時發生錯誤。"
+
+#: goffice/app/go-plugin-service.c:164
+msgid "Initializing function inside plugin returned error."
+msgstr "增效模組內部的初始化函式發生錯誤。"
+
+#: goffice/app/go-plugin-service.c:182
+msgid "Cleanup function inside plugin returned error."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:192 goffice/gtk/go-format-sel.c:74
+#: goffice/utils/format.c:2105 goffice/utils/format.c:2419
+#: goffice/utils/format.c:2425 goffice/utils/format.c:2498
+msgid "General"
+msgstr "一般"
+
+#: goffice/app/go-plugin-service.c:343
+msgid "File opener has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:375
+#, c-format
+msgid "File opener - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:495
+msgid "Error while reading file."
+msgstr "讀入檔案時發生錯誤。"
+
+#: goffice/app/go-plugin-service.c:661
+msgid "File saver has no description"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:707
+#, c-format
+msgid "File saver - %s"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:767
+msgid "Error while saving file."
+msgstr "儲存檔案時發生錯誤。"
+
+#: goffice/app/go-plugin-service.c:886
+msgid "Plugin loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:910
+msgid "GObject loader"
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1017
+msgid "No \"type\" attribute on \"service\" element."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1023
+#, c-format
+msgid "Unknown service type: %s."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1039
+msgid "Error reading service information."
+msgstr ""
+
+#: goffice/app/go-plugin-service.c:1101
+msgid ""
+"We must load service before activating it (PLUGIN_ALWAYS_LOAD is set) but "
+"loading failed."
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:193
+#: goffice/drawing/god-paragraph-attributes.c:194
+#, fuzzy
+msgid "Flags"
+msgstr "頁"
+
+#: goffice/drawing/god-paragraph-attributes.c:199
+#: goffice/drawing/god-paragraph-attributes.c:200
+#, fuzzy
+msgid "Indent"
+msgstr "縮排(_I):"
+
+#: goffice/drawing/god-paragraph-attributes.c:205
+#: goffice/drawing/god-paragraph-attributes.c:206
+#, fuzzy
+msgid "Space Before"
+msgstr "搜尋(_S)"
+
+#: goffice/drawing/god-paragraph-attributes.c:211
+#: goffice/drawing/god-paragraph-attributes.c:212
+msgid "Space After"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:217
+#: goffice/drawing/god-paragraph-attributes.c:218
+msgid "Alignment"
+msgstr "對齊方式"
+
+#: goffice/drawing/god-paragraph-attributes.c:223
+#: goffice/drawing/god-paragraph-attributes.c:224
+#, fuzzy
+msgid "Bullet Character"
+msgstr "不明字符:"
+
+#: goffice/drawing/god-paragraph-attributes.c:229
+#: goffice/drawing/god-paragraph-attributes.c:230
+msgid "Bullet Indent"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:235
+#: goffice/drawing/god-paragraph-attributes.c:236
+msgid "Bullet Size"
+msgstr ""
+
+#: goffice/drawing/god-paragraph-attributes.c:241
+#: goffice/drawing/god-paragraph-attributes.c:242
+msgid "Bullet Family"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:611
+msgid "Discrete mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:620
+#, fuzzy
+msgid "Linear"
+msgstr "線性(_L)"
+
+#: goffice/graph/gog-axis.c:620
+msgid "Linear mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:626
+#, fuzzy
+msgid "Log"
+msgstr "邏輯"
+
+#: goffice/graph/gog-axis.c:626
+msgid "Logarithm mapping"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1410
+#, fuzzy
+msgid "Details"
+msgstr "隱藏詳細資料"
+
+#. Color
+#: goffice/graph/gog-axis.c:1454 goffice/graph/gog-error-bar.c:224
+#: goffice/graph/gog-style.c:120 goffice/graph/gog-style.c:864
+msgid "Automatic"
+msgstr "自動"
+
+#: goffice/graph/gog-axis.c:1464
+msgid "Categories between _ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1465
+msgid "Categories between _labels"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1466
+#, fuzzy
+msgid "_Cross at category #"
+msgstr "類別(_C)"
+
+#: goffice/graph/gog-axis.c:1472 goffice/graph/gog-axis.c:1486
+#, fuzzy
+msgid "Bounds"
+msgstr "背景"
+
+#: goffice/graph/gog-axis.c:1475
+msgid "M_in"
+msgstr "最小值(_I)"
+
+#: goffice/graph/gog-axis.c:1476
+#, fuzzy
+msgid "M_ax"
+msgstr "最大值"
+
+#: goffice/graph/gog-axis.c:1477
+msgid "Ma_jor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1478
+msgid "Mi_nor Ticks"
+msgstr ""
+
+#: goffice/graph/gog-axis.c:1479 goffice/graph/gog-axis-prefs.glade.h:7
+#, fuzzy
+msgid "_Cross"
+msgstr "關閉(_C)"
+
+#. TOO CHEESY to go into production
+#. * We need a way to toggle auto vs user formats
+#. * but the selector is too tall already
+#. * disable for now
+#: goffice/graph/gog-axis.c:1501 goffice/graph/gog-axis.c:1508
+msgid "Format"
+msgstr "格式"
+
+#: goffice/graph/gog-axis.c:1536
+msgid "Label"
+msgstr "標籤"
+
+#: goffice/graph/gog-axis.c:1539
+#, fuzzy
+msgid "MinorGrid"
+msgstr "星期五"
+
+#: goffice/graph/gog-axis.c:1542
+#, fuzzy
+msgid "MajorGrid"
+msgstr "星期五"
+
+#: goffice/graph/gog-axis-prefs.glade.h:1
+#, fuzzy
+msgid "<b>Major ticks</b>"
+msgstr "圖樣"
+
+#: goffice/graph/gog-axis-prefs.glade.h:2
+#, fuzzy
+msgid "<b>Mapping</b>"
+msgstr "預覽"
+
+#: goffice/graph/gog-axis-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Minor ticks</b>"
+msgstr "圖樣"
+
+#: goffice/graph/gog-axis-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Position</b>"
+msgstr "預覽"
+
+#: goffice/graph/gog-axis-prefs.glade.h:5
+#, fuzzy
+msgid "I_nside"
+msgstr "內部"
+
+#: goffice/graph/gog-axis-prefs.glade.h:6
+#, fuzzy
+msgid "O_utside"
+msgstr "隱藏(_H)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:8
+#, fuzzy
+msgid "_High"
+msgstr "高度"
+
+#: goffice/graph/gog-axis-prefs.glade.h:9
+#, fuzzy
+msgid "_Inside"
+msgstr "內部"
+
+#: goffice/graph/gog-axis-prefs.glade.h:10
+#, fuzzy
+msgid "_Invert axis"
+msgstr "插入(_I)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:11
+#, fuzzy
+msgid "_Low"
+msgstr "行(_R)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:12
+#, fuzzy
+msgid "_Outside"
+msgstr "隱藏(_H)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:13
+#, fuzzy
+msgid "_Show Labels"
+msgstr "第 1 行/列為標題(_L)"
+
+#: goffice/graph/gog-axis-prefs.glade.h:14
+#: goffice/graph/gog-style-prefs.glade.h:27
+msgid "_Type:"
+msgstr "類型(_T):"
+
+#: goffice/graph/gog-chart.c:197
+msgid "Legend"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:200 goffice/graph/gog-graph.c:157
+#: goffice/graph/gog-legend.c:179
+#, fuzzy
+msgid "Title"
+msgstr "標題:"
+
+#: goffice/graph/gog-chart.c:203
+#, fuzzy
+msgid "Grid"
+msgstr "星期五"
+
+#: goffice/graph/gog-chart.c:206
+msgid "X-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:210
+msgid "Y-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:214
+msgid "Z-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:218
+msgid "Circular-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:222
+msgid "Radial-Axis"
+msgstr ""
+
+#: goffice/graph/gog-chart.c:226
+msgid "Plot"
+msgstr ""
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "H"
+msgstr "H"
+
+#: goffice/graph/gog-control-foocanvas.c:233
+msgid "Height"
+msgstr "高度"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "W"
+msgstr "W"
+
+#: goffice/graph/gog-control-foocanvas.c:236
+msgid "Width"
+msgstr "寬度"
+
+#: goffice/graph/gog-error-bar.c:242
+msgid "No error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:248 goffice/graph/gog-error-bar.c:264
+msgid "Positive error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:253 goffice/graph/gog-error-bar.c:269
+msgid "Negative error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar.c:258 goffice/graph/gog-error-bar.c:274
+msgid "Full error bar displayed"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:1
+msgid "(+)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:2
+msgid "(-)"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Error category</b>"
+msgstr "錯誤警告"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Style</b>"
+msgstr "預覽"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Values</b>"
+msgstr "樣本"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:6
+#, fuzzy
+msgid "Colo_r:"
+msgstr "顏色:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:7
+msgid "Dis_play:"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:8
+msgid ""
+"None\n"
+"Absolute\n"
+"Relative\n"
+"Percent"
+msgstr ""
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:12
+#, fuzzy
+msgid "_Line width:"
+msgstr "線段寬度:"
+
+#: goffice/graph/gog-error-bar-prefs.glade.h:13
+#, fuzzy
+msgid "_Width:"
+msgstr "為(_W):"
+
+#. default
+#. Cheat and assign a name here, graphs will not have parents until we
+#. * support graphs in graphs
+#: goffice/graph/gog-graph.c:115 goffice/graph/gog-graph.c:212
+#, fuzzy
+msgid "Graph"
+msgstr "圖表(_G)"
+
+#: goffice/graph/gog-graph.c:154
+msgid "Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1066 goffice/graph/gog-series.c:379
+msgid "Name"
+msgstr "名稱"
+
+#: goffice/graph/gog-guru.c:1092
+msgid "Step 1 of 2: Select Chart Type"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1100
+msgid "Step 2 of 2: Customize Chart"
+msgstr ""
+
+#: goffice/graph/gog-guru.c:1105
+#, fuzzy
+msgid "Customize Chart"
+msgstr "自選頁首內容"
+
+#: goffice/graph/gog-guru.c:1181
+msgid "_Insert"
+msgstr "插入(_I)"
+
+#: goffice/graph/gog-guru.c:1239
+#, fuzzy
+msgid "_Plot Type"
+msgstr "類型(_T):"
+
+#: goffice/graph/gog-guru.glade.h:1
+msgid "GNOME Office Graph"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:2
+msgid "Pull f_orward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:3
+msgid "Pull to _front"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:4
+msgid "Push b_ackward"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:5
+msgid "Push to _back"
+msgstr ""
+
+#: goffice/graph/gog-guru.glade.h:6
+#, fuzzy
+msgid "_Order"
+msgstr "重新排列(_O)..."
+
+#: goffice/graph/gog-guru-type-selector.glade.h:1
+#, fuzzy
+msgid "<b>Description</b>"
+msgstr "方向"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:2
+#, fuzzy
+msgid "<b>_Plot type</b>"
+msgstr "圖樣"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:3
+#, fuzzy
+msgid "<b>_Subtype</b>"
+msgstr "預覽"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:4
+#, fuzzy
+msgid "Show sample"
+msgstr "樣本"
+
+#: goffice/graph/gog-guru-type-selector.glade.h:5
+#, fuzzy
+msgid "Test de description"
+msgstr "描述"
+
+#: goffice/graph/gog-label.c:108
+#, fuzzy
+msgid "_Text:"
+msgstr "文字"
+
+#: goffice/graph/gog-label.c:115 goffice/graph/gog-series.c:426
+msgid "Data"
+msgstr "資料"
+
+#: goffice/graph/gog-plot.c:182
+msgid "Series"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:54
+msgid "Plot Engine"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:246
+msgid "Plot Type"
+msgstr ""
+
+#: goffice/graph/gog-plot-engine.c:328
+msgid "Chart Theme"
+msgstr ""
+
+#: goffice/graph/gog-series.c:145
+#, fuzzy
+msgid "Index:"
+msgstr "縮排(_I):"
+
+#: goffice/graph/gog-series.c:162
+#, fuzzy
+msgid "Settings"
+msgstr "字串(_S)"
+
+#: goffice/graph/gog-series.c:452
+msgid "Point"
+msgstr "位置"
+
+#: goffice/graph/gog-style.c:159 goffice/gtk/goffice-gtk.c:413
+#, fuzzy, c-format
+msgid "%d x %d"
+msgstr "%d行 × %d列"
+
+#: goffice/graph/gog-style.c:878
+msgid "Font"
+msgstr "å­—åž‹"
+
+#: goffice/graph/gog-style.c:966
+msgid "Style"
+msgstr "款式"
+
+#: goffice/graph/gog-style-prefs.glade.h:1
+msgid ""
+"2 Colors\n"
+"Brightness"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:3
+#, fuzzy
+msgid "<b>Fill</b>"
+msgstr "預覽"
+
+#: goffice/graph/gog-style-prefs.glade.h:4
+#, fuzzy
+msgid "<b>Line</b>"
+msgstr "預覽"
+
+#: goffice/graph/gog-style-prefs.glade.h:5
+#, fuzzy
+msgid "<b>Marker</b>"
+msgstr "圖樣"
+
+#: goffice/graph/gog-style-prefs.glade.h:6
+#, fuzzy
+msgid "<b>Outline</b>"
+msgstr "預覽"
+
+#: goffice/graph/gog-style-prefs.glade.h:7
+msgid "Co_lor:"
+msgstr "顏色(_L):"
+
+#: goffice/graph/gog-style-prefs.glade.h:8
+msgid ""
+"None\n"
+"Pattern\n"
+"Gradient\n"
+"Image"
+msgstr ""
+
+#: goffice/graph/gog-style-prefs.glade.h:12
+#, fuzzy
+msgid "O_utline color:"
+msgstr "顏色(_C):"
+
+#: goffice/graph/gog-style-prefs.glade.h:13
+#, fuzzy
+msgid "Sha_pe:"
+msgstr "間距(_G):"
+
+#: goffice/graph/gog-style-prefs.glade.h:14
+#, fuzzy
+msgid "Si_ze:"
+msgstr "大小:"
+
+#: goffice/graph/gog-style-prefs.glade.h:15
+#, fuzzy
+msgid "St_yle:"
+msgstr "款式"
+
+#: goffice/graph/gog-style-prefs.glade.h:16
+#, fuzzy
+msgid "T_ype:"
+msgstr "類型(_T):"
+
+#: goffice/graph/gog-style-prefs.glade.h:17
+#, fuzzy
+msgid "_Background:"
+msgstr "背景"
+
+#: goffice/graph/gog-style-prefs.glade.h:18
+#, fuzzy
+msgid "_Direction:"
+msgstr "方向:"
+
+#: goffice/graph/gog-style-prefs.glade.h:19
+#, fuzzy
+msgid "_End:"
+msgstr "結束字元"
+
+#: goffice/graph/gog-style-prefs.glade.h:20
+#, fuzzy
+msgid "_Fill color:"
+msgstr "顏色(_C):"
+
+#: goffice/graph/gog-style-prefs.glade.h:21
+#, fuzzy
+msgid "_Fit:"
+msgstr "為(_W):"
+
+#: goffice/graph/gog-style-prefs.glade.h:22
+#, fuzzy
+msgid "_Foreground:"
+msgstr "前景"
+
+#: goffice/graph/gog-style-prefs.glade.h:23
+#, fuzzy
+msgid "_Pattern:"
+msgstr "圖樣"
+
+#: goffice/graph/gog-style-prefs.glade.h:24
+#, fuzzy
+msgid "_Select..."
+msgstr "選擇(_S)"
+
+#: goffice/graph/gog-style-prefs.glade.h:25
+#, fuzzy
+msgid "_Size:"
+msgstr "大小:"
+
+#: goffice/graph/gog-style-prefs.glade.h:26
+#, fuzzy
+msgid "_Start:"
+msgstr "排序(_S)"
+
+#: goffice/graph/gog-style-prefs.glade.h:28
+#, fuzzy
+msgid "_brighter"
+msgstr "右(_R)"
+
+#: goffice/graph/gog-style-prefs.glade.h:29
+#, fuzzy
+msgid "_darker"
+msgstr "陣列"
+
+#: goffice/graph/gog-style-prefs.glade.h:30
+#, fuzzy
+msgid "pts"
+msgstr "點"
+
+#: goffice/graph/gog-style-prefs.glade.h:31
+msgid ""
+"stretched\n"
+"wallpaper"
+msgstr ""
+
+#. TODO : have a look at apple's themes
+#. An MS Excel-ish theme
+#: goffice/graph/gog-theme.c:458
+msgid "Default"
+msgstr "預設"
+
+#. Guppi
+#: goffice/graph/gog-theme.c:534
+msgid "Guppi"
+msgstr "Guppi"
+
+#: goffice/gtk/go-charmap-sel.c:74
+msgid "Arabic"
+msgstr "阿拉伯文"
+
+#: goffice/gtk/go-charmap-sel.c:75
+msgid "Baltic"
+msgstr "波羅的海語系"
+
+#: goffice/gtk/go-charmap-sel.c:76
+msgid "Central European"
+msgstr "中歐語系"
+
+#: goffice/gtk/go-charmap-sel.c:77
+msgid "Chinese"
+msgstr "中文"
+
+#: goffice/gtk/go-charmap-sel.c:78
+msgid "Cyrillic"
+msgstr "西里爾文字"
+
+#: goffice/gtk/go-charmap-sel.c:79
+msgid "Greek"
+msgstr "希臘文"
+
+#: goffice/gtk/go-charmap-sel.c:80
+msgid "Hebrew"
+msgstr "希伯來文"
+
+#: goffice/gtk/go-charmap-sel.c:81
+msgid "Indian"
+msgstr "印度語系"
+
+#: goffice/gtk/go-charmap-sel.c:82
+msgid "Japanese"
+msgstr "日文"
+
+#: goffice/gtk/go-charmap-sel.c:83
+msgid "Korean"
+msgstr "韓文"
+
+#: goffice/gtk/go-charmap-sel.c:84
+msgid "Turkish"
+msgstr "土耳其文"
+
+#: goffice/gtk/go-charmap-sel.c:85
+msgid "Unicode"
+msgstr "統一碼"
+
+#: goffice/gtk/go-charmap-sel.c:86
+msgid "Vietnamese"
+msgstr "越南文"
+
+#: goffice/gtk/go-charmap-sel.c:87
+msgid "Western"
+msgstr "西歐語系"
+
+#: goffice/gtk/go-charmap-sel.c:88 goffice/gtk/go-locale-sel.c:75
+msgid "Other"
+msgstr "其它"
+
+#: goffice/gtk/go-charmap-sel.c:118
+msgid "Arabic (IBM-864)"
+msgstr "阿拉伯文 (IBM-864)"
+
+#: goffice/gtk/go-charmap-sel.c:119
+msgid "Arabic (IBM-864-I)"
+msgstr "阿拉伯文 (IBM-864-I)"
+
+#: goffice/gtk/go-charmap-sel.c:120
+msgid "Arabic (ISO-8859-6)"
+msgstr "阿拉伯文 (ISO-8859-6)"
+
+#: goffice/gtk/go-charmap-sel.c:121
+msgid "Arabic (ISO-8859-6-E)"
+msgstr "阿拉伯文 (ISO-8859-6-E)"
+
+#: goffice/gtk/go-charmap-sel.c:123
+msgid "Arabic (ISO-8859-6-I)"
+msgstr "阿拉伯文 (ISO-8859-6-I)"
+
+#: goffice/gtk/go-charmap-sel.c:124
+msgid "Arabic (MacArabic)"
+msgstr "阿拉伯文 (MacArabic)"
+
+#: goffice/gtk/go-charmap-sel.c:125
+msgid "Arabic (Windows-1256)"
+msgstr "阿拉伯文 (Windows-1256)"
+
+#: goffice/gtk/go-charmap-sel.c:126
+msgid "Armenian (ARMSCII-8)"
+msgstr "亞美尼亞文字 (ARMSCII-8)"
+
+#: goffice/gtk/go-charmap-sel.c:127
+msgid "Baltic (ISO-8859-13)"
+msgstr "波羅的海語系 (ISO-8859-13)"
+
+#: goffice/gtk/go-charmap-sel.c:128
+msgid "Baltic (ISO-8859-4)"
+msgstr "波羅的海語系 (ISO-8859-4)"
+
+#: goffice/gtk/go-charmap-sel.c:129
+msgid "Baltic (Windows-1257)"
+msgstr "波羅的海語系 (Windows-1257)"
+
+#: goffice/gtk/go-charmap-sel.c:130
+msgid "Celtic (ISO-8859-14)"
+msgstr "塞爾特語系 (ISO-8859-14)"
+
+#: goffice/gtk/go-charmap-sel.c:131
+msgid "Central European (IBM-852)"
+msgstr "中歐語系 (IBM-852)"
+
+#: goffice/gtk/go-charmap-sel.c:132
+msgid "Central European (ISO-8859-2)"
+msgstr "中歐語系 (ISO-8859-2)"
+
+#: goffice/gtk/go-charmap-sel.c:133
+msgid "Central European (MacCE)"
+msgstr "中歐語系 (MacCE)"
+
+#: goffice/gtk/go-charmap-sel.c:134
+msgid "Central European (Windows-1250)"
+msgstr "中歐語系 (Windows-1250)"
+
+#: goffice/gtk/go-charmap-sel.c:135
+msgid "Chinese Simplified (GB18030)"
+msgstr "簡體中文 (GB18030)"
+
+#: goffice/gtk/go-charmap-sel.c:136
+msgid "Chinese Simplified (GB2312)"
+msgstr "簡體中文 (GB2312)"
+
+#: goffice/gtk/go-charmap-sel.c:137
+msgid "Chinese Simplified (GBK)"
+msgstr "簡體中文 (GBK)"
+
+#: goffice/gtk/go-charmap-sel.c:138
+msgid "Chinese Simplified (HZ)"
+msgstr "簡體中文 (HZ)"
+
+#: goffice/gtk/go-charmap-sel.c:139
+msgid "Chinese Simplified (Windows-936)"
+msgstr "簡體中文 (Windows-936)"
+
+#: goffice/gtk/go-charmap-sel.c:140
+msgid "Chinese Traditional (Big5)"
+msgstr "繁體中文 (Big5)"
+
+#: goffice/gtk/go-charmap-sel.c:141
+msgid "Chinese Traditional (Big5-HKSCS)"
+msgstr "繁體中文 (Big5-HKSCS)"
+
+#: goffice/gtk/go-charmap-sel.c:142
+msgid "Chinese Traditional (EUC-TW)"
+msgstr "繁體中文 (EUC-TW)"
+
+#: goffice/gtk/go-charmap-sel.c:143
+msgid "Croatian (MacCroatian)"
+msgstr "克羅地亞文字 (MacCroatian)"
+
+#: goffice/gtk/go-charmap-sel.c:144
+msgid "Cyrillic (IBM-855)"
+msgstr "西里爾文字 (IBM-855)"
+
+#: goffice/gtk/go-charmap-sel.c:145
+msgid "Cyrillic (ISO-8859-5)"
+msgstr "西里爾文字 (ISO-8859-5)"
+
+#: goffice/gtk/go-charmap-sel.c:146
+msgid "Cyrillic (ISO-IR-111)"
+msgstr "西里爾文字 (ISO-IR-111)"
+
+#: goffice/gtk/go-charmap-sel.c:147
+msgid "Cyrillic (KOI8-R)"
+msgstr "西里爾文字 (KOI8-R)"
+
+#: goffice/gtk/go-charmap-sel.c:148
+msgid "Cyrillic (MacCyrillic)"
+msgstr "西里爾文字 (MacCyrillic)"
+
+#: goffice/gtk/go-charmap-sel.c:149
+msgid "Cyrillic (Windows-1251)"
+msgstr "西里爾文字 (Windows-1251)"
+
+#: goffice/gtk/go-charmap-sel.c:150
+msgid "Russian (CP-866)"
+msgstr "ä¿„æ–‡ (CP-866)"
+
+#: goffice/gtk/go-charmap-sel.c:151
+msgid "Ukrainian (KOI8-U)"
+msgstr "烏克蘭文 (KOI8-U)"
+
+#: goffice/gtk/go-charmap-sel.c:152
+msgid "Ukrainian (MacUkrainian)"
+msgstr "烏克蘭文 (MacUkrainian)"
+
+#: goffice/gtk/go-charmap-sel.c:153
+msgid "English (ASCII)"
+msgstr "英文 (ASCII)"
+
+#: goffice/gtk/go-charmap-sel.c:154
+msgid "Farsi (MacFarsi)"
+msgstr "波斯文字 (MacFarsi)"
+
+#: goffice/gtk/go-charmap-sel.c:155
+msgid "Georgian (GEOSTD8)"
+msgstr "格魯吉亞文字 (GEOSTD8)"
+
+#: goffice/gtk/go-charmap-sel.c:156
+msgid "Greek (ISO-8859-7)"
+msgstr "希臘文 (ISO-8859-7)"
+
+#: goffice/gtk/go-charmap-sel.c:157
+msgid "Greek (MacGreek)"
+msgstr "希臘文 (MacGreek)"
+
+#: goffice/gtk/go-charmap-sel.c:158
+msgid "Greek (Windows-1253)"
+msgstr "希臘文 (Windows-1253)"
+
+#: goffice/gtk/go-charmap-sel.c:159
+msgid "Gujarati (MacGujarati)"
+msgstr "古吉拉特文字 (MacGujarati)"
+
+#: goffice/gtk/go-charmap-sel.c:160
+msgid "Gurmukhi (MacGurmukhi)"
+msgstr "果魯穆奇文字 (MacGurmukhi)"
+
+#: goffice/gtk/go-charmap-sel.c:161
+msgid "Hebrew (IBM-862)"
+msgstr "希伯來文[左至右] (IBM-862)"
+
+#: goffice/gtk/go-charmap-sel.c:162
+msgid "Hebrew (ISO-8859-8-E)"
+msgstr "希伯來文[左至右] (ISO-8859-8-E)"
+
+#: goffice/gtk/go-charmap-sel.c:163
+msgid "Hebrew (ISO-8859-8-I)"
+msgstr "希伯來文[左至右] (ISO-8859-8-I)"
+
+#: goffice/gtk/go-charmap-sel.c:164
+msgid "Hebrew (MacHebrew)"
+msgstr "希伯來文[左至右] (MacHebrew)"
+
+#: goffice/gtk/go-charmap-sel.c:165
+msgid "Hebrew (Windows-1255)"
+msgstr "希伯來文 (Windows-1255)"
+
+#: goffice/gtk/go-charmap-sel.c:166
+msgid "Hindi (MacDevanagari)"
+msgstr "梵文 (MacDevanagari)"
+
+#: goffice/gtk/go-charmap-sel.c:167
+msgid "Icelandic (MacIcelandic)"
+msgstr "冰島文字 (MacIcelandic)"
+
+#: goffice/gtk/go-charmap-sel.c:168
+msgid "Japanese (EUC-JP)"
+msgstr "日文 (EUC-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:169
+msgid "Japanese (ISO-2022-JP)"
+msgstr "日文 (ISO-2022-JP)"
+
+#: goffice/gtk/go-charmap-sel.c:170
+msgid "Japanese (Shift_JIS)"
+msgstr "日文 (Shift_JIS)"
+
+#: goffice/gtk/go-charmap-sel.c:171
+msgid "Korean (EUC-KR)"
+msgstr "韓文 (EUC-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:172
+msgid "Korean (ISO-2022-KR)"
+msgstr "韓文 (ISO-2022-KR)"
+
+#: goffice/gtk/go-charmap-sel.c:173
+msgid "Korean (JOHAB)"
+msgstr "韓文 (JOHAB)"
+
+#: goffice/gtk/go-charmap-sel.c:174
+msgid "Korean (UHC)"
+msgstr "韓文 (UHC)"
+
+#: goffice/gtk/go-charmap-sel.c:175
+msgid "Nordic (ISO-8859-10)"
+msgstr "北歐語系 (ISO-8859-10)"
+
+#: goffice/gtk/go-charmap-sel.c:176
+msgid "Romanian (MacRomanian)"
+msgstr "羅馬尼亞文 (MacRomanian)"
+
+#: goffice/gtk/go-charmap-sel.c:177
+msgid "Romanian (ISO-8859-16)"
+msgstr "羅馬尼亞文 (ISO-8859-16)"
+
+#: goffice/gtk/go-charmap-sel.c:178
+msgid "South European (ISO-8859-3)"
+msgstr "南歐語系 (ISO-8859-3)"
+
+#: goffice/gtk/go-charmap-sel.c:179
+msgid "Thai (TIS-620)"
+msgstr "æ³°æ–‡ (TIS-620)"
+
+#: goffice/gtk/go-charmap-sel.c:180
+msgid "Turkish (IBM-857)"
+msgstr "土耳其文 (IBM-857)"
+
+#: goffice/gtk/go-charmap-sel.c:181
+msgid "Turkish (ISO-8859-9)"
+msgstr "土耳其文 (ISO-8859-9)"
+
+#: goffice/gtk/go-charmap-sel.c:182
+msgid "Turkish (MacTurkish)"
+msgstr "土耳其文 (MacTurkish)"
+
+#: goffice/gtk/go-charmap-sel.c:183
+msgid "Turkish (Windows-1254)"
+msgstr "土耳其文 (Windows-1254)"
+
+#: goffice/gtk/go-charmap-sel.c:184
+msgid "Unicode (UTF-7)"
+msgstr "統一碼 (UTF-7)"
+
+#: goffice/gtk/go-charmap-sel.c:185
+msgid "Unicode (UTF-8)"
+msgstr "統一碼 (UTF-8)"
+
+#: goffice/gtk/go-charmap-sel.c:186
+msgid "Unicode (UTF-16BE)"
+msgstr "統一碼 (UTF-16BE)"
+
+#: goffice/gtk/go-charmap-sel.c:187
+msgid "Unicode (UTF-16LE)"
+msgstr "統一碼 (UTF-16LE)"
+
+#: goffice/gtk/go-charmap-sel.c:188
+msgid "Unicode (UTF-32BE)"
+msgstr "統一碼 (UTF-32BE)"
+
+#: goffice/gtk/go-charmap-sel.c:189
+msgid "Unicode (UTF-32LE)"
+msgstr "統一碼 (UTF-32LE)"
+
+#: goffice/gtk/go-charmap-sel.c:190
+msgid "User Defined"
+msgstr "自選"
+
+#: goffice/gtk/go-charmap-sel.c:191
+msgid "Vietnamese (TCVN)"
+msgstr "越南文 (TCVN)"
+
+#: goffice/gtk/go-charmap-sel.c:192
+msgid "Vietnamese (VISCII)"
+msgstr "越南文 (VISCII)"
+
+#: goffice/gtk/go-charmap-sel.c:193
+msgid "Vietnamese (VPS)"
+msgstr "越南文 (VPS)"
+
+#: goffice/gtk/go-charmap-sel.c:194
+msgid "Vietnamese (Windows-1258)"
+msgstr "越南文 (Windows-1258)"
+
+#: goffice/gtk/go-charmap-sel.c:195
+msgid "Visual Hebrew (ISO-8859-8)"
+msgstr "希伯來文 (ISO-8859-8)"
+
+#: goffice/gtk/go-charmap-sel.c:196
+msgid "Western (IBM-850)"
+msgstr "西歐語系 (IBM-850)"
+
+#: goffice/gtk/go-charmap-sel.c:197
+msgid "Western (ISO-8859-1)"
+msgstr "西歐語系 (ISO-8859-1)"
+
+#: goffice/gtk/go-charmap-sel.c:198
+msgid "Western (ISO-8859-15)"
+msgstr "西歐語系 (ISO-8859-15)"
+
+#: goffice/gtk/go-charmap-sel.c:199
+msgid "Western (MacRoman)"
+msgstr "西歐語系 (MacRoman)"
+
+#: goffice/gtk/go-charmap-sel.c:200
+msgid "Western (Windows-1252)"
+msgstr "西歐語系 (Windows-1252)"
+
+#: goffice/gtk/go-charmap-sel.c:418
+msgid "Locale: "
+msgstr "地區設定:"
+
+#: goffice/gtk/go-charmap-sel.c:457
+msgid "Conversion Direction"
+msgstr "轉換方向:"
+
+#: goffice/gtk/go-charmap-sel.c:458
+msgid "This value determines which iconv test to perform."
+msgstr "本數值決定 iconv 會進行甚麼測試。"
+
+#: goffice/gtk/go-color-palette.c:95
+#, fuzzy
+msgid "black"
+msgstr "黑"
+
+#: goffice/gtk/go-color-palette.c:96
+msgid "light brown"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:97
+msgid "brown gold"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:98
+msgid "dark green #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:99
+#, fuzzy
+msgid "navy"
+msgstr "星期一"
+
+#: goffice/gtk/go-color-palette.c:100 goffice/gtk/go-color-palette.c:152
+msgid "dark blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:101
+msgid "purple #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:102
+msgid "very dark gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:104 goffice/gtk/go-color-palette.c:157
+msgid "dark red"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:105
+#, fuzzy
+msgid "red-orange"
+msgstr "範圍"
+
+#: goffice/gtk/go-color-palette.c:106
+#, fuzzy
+msgid "gold"
+msgstr "ç²—é«”"
+
+#: goffice/gtk/go-color-palette.c:107
+msgid "dark green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:108 goffice/gtk/go-color-palette.c:158
+msgid "dull blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:109 goffice/gtk/go-color-palette.c:159
+#, fuzzy
+msgid "blue"
+msgstr "藍"
+
+#: goffice/gtk/go-color-palette.c:110
+msgid "dull purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:111
+#, fuzzy
+msgid "dark gray"
+msgstr "陣列"
+
+#: goffice/gtk/go-color-palette.c:113
+#, fuzzy
+msgid "red"
+msgstr "ç´…"
+
+#: goffice/gtk/go-color-palette.c:114
+#, fuzzy
+msgid "orange"
+msgstr "範圍"
+
+#: goffice/gtk/go-color-palette.c:115
+#, fuzzy
+msgid "lime"
+msgstr "時間"
+
+#: goffice/gtk/go-color-palette.c:116
+msgid "dull green"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:117
+msgid "dull blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:118
+msgid "sky blue #2"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:119 goffice/gtk/go-color-palette.c:156
+msgid "purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:120
+#, fuzzy
+msgid "gray"
+msgstr "陣列"
+
+#: goffice/gtk/go-color-palette.c:122 goffice/gtk/go-color-palette.c:153
+#, fuzzy
+msgid "magenta"
+msgstr "æ´‹ç´…"
+
+#: goffice/gtk/go-color-palette.c:123
+msgid "bright orange"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:124 goffice/gtk/go-color-palette.c:154
+#, fuzzy
+msgid "yellow"
+msgstr "黃"
+
+#: goffice/gtk/go-color-palette.c:125
+#, fuzzy
+msgid "green"
+msgstr "綠"
+
+#: goffice/gtk/go-color-palette.c:126 goffice/gtk/go-color-palette.c:155
+#, fuzzy
+msgid "cyan"
+msgstr "氰藍"
+
+#: goffice/gtk/go-color-palette.c:127
+msgid "bright blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:128 goffice/gtk/go-color-palette.c:144
+msgid "red purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:129
+msgid "light gray"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:131 goffice/gtk/go-color-palette.c:148
+#, fuzzy
+msgid "pink"
+msgstr "超鏈結"
+
+#: goffice/gtk/go-color-palette.c:132
+#, fuzzy
+msgid "light orange"
+msgstr "向右對齊"
+
+#: goffice/gtk/go-color-palette.c:133 goffice/gtk/go-color-palette.c:145
+msgid "light yellow"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:134
+#, fuzzy
+msgid "light green"
+msgstr "向右對齊"
+
+#: goffice/gtk/go-color-palette.c:135
+#, fuzzy
+msgid "light cyan"
+msgstr "向右對齊"
+
+#: goffice/gtk/go-color-palette.c:136 goffice/gtk/go-color-palette.c:146
+msgid "light blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:137 goffice/gtk/go-color-palette.c:150
+msgid "light purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:138
+#, fuzzy
+msgid "white"
+msgstr "白"
+
+#. Disable these for now, they are mostly repeats
+#: goffice/gtk/go-color-palette.c:143
+msgid "purplish blue"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:147
+msgid "dark purple"
+msgstr ""
+
+#: goffice/gtk/go-color-palette.c:149
+#, fuzzy
+msgid "sky blue"
+msgstr "成為變數值"
+
+#: goffice/gtk/go-color-palette.c:472
+#, fuzzy
+msgid "custom"
+msgstr "自訂"
+
+#: goffice/gtk/go-color-palette.c:479 goffice/gtk/go-color-palette.c:708
+#, fuzzy
+msgid "Custom Color..."
+msgstr "自選頁尾內容"
+
+#: goffice/gtk/go-dock-item.c:235 goffice/gtk/go-dock-item.c:236
+msgid "Shadow type"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:246 goffice/gtk/go-dock-item.c:247
+#, fuzzy
+msgid "Orientation"
+msgstr "方向"
+
+#: goffice/gtk/go-dock-item.c:257 goffice/gtk/go-dock-item.c:258
+msgid "Preferred width"
+msgstr ""
+
+#: goffice/gtk/go-dock-item.c:266 goffice/gtk/go-dock-item.c:267
+msgid "Preferred height"
+msgstr ""
+
+#: goffice/gtk/go-dock-item-grip.c:260
+#, fuzzy
+msgid "Dock the toolbar"
+msgstr "如何顯示工具列"
+
+#: goffice/gtk/go-dock-item-grip.c:261
+#, fuzzy
+msgid "Un dock the toolbar"
+msgstr "如何顯示工具列"
+
+#: goffice/gtk/goffice-gtk.c:138
+#, c-format
+msgid "Unable to open file '%s'"
+msgstr "無法開啟檔案‘%s’"
+
+#: goffice/gtk/goffice-gtk.c:448
+#, fuzzy
+msgid "All Files"
+msgstr "檔案(_F)"
+
+#: goffice/gtk/goffice-gtk.c:453
+#, fuzzy
+msgid "Images"
+msgstr "圖片(_I)..."
+
+#: goffice/gtk/goffice-gtk.c:490
+#, fuzzy
+msgid "Select an Image"
+msgstr "選取整列"
+
+#: goffice/gtk/goffice-gtk.c:508
+#, fuzzy
+msgid "Save as"
+msgstr "全部儲存"
+
+#: goffice/gtk/goffice-gtk.c:530
+msgid "File _type:"
+msgstr "檔案類型(_T):"
+
+#: goffice/gtk/goffice-gtk.c:551
+#, fuzzy
+msgid ""
+"The given file extension does not match the chosen file type. Do you want to "
+"use this name anyway?"
+msgstr "指定的延伸檔名和選定的檔案格式不相符。是否仍然確定使用這個檔案名稱?"
+
+#: goffice/gtk/goffice-gtk.c:734
+#, c-format
+msgid ""
+"%s\n"
+"is a directory name"
+msgstr ""
+"%s\n"
+"是一個目錄"
+
+#: goffice/gtk/goffice-gtk.c:738
+#, c-format
+msgid ""
+"You do not have permission to save to\n"
+"%s"
+msgstr ""
+"您沒有權限將內容儲存至\n"
+"%s"
+
+#: goffice/gtk/goffice-gtk.c:745
+#, fuzzy, c-format
+msgid ""
+"A file called <i>%s</i> already exists in %s.\n"
+"\n"
+"Do you want to save over it?"
+msgstr ""
+"活頁簿 %s 已經存在。\n"
+"是否要覆寫內容?"
+
+#: goffice/gtk/go-font-sel.c:174
+msgid "Normal"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.c:175
+msgid "Bold"
+msgstr "ç²—é«”"
+
+#: goffice/gtk/go-font-sel.c:176
+msgid "Bold italic"
+msgstr "粗斜體"
+
+#: goffice/gtk/go-font-sel.c:177
+msgid "Italic"
+msgstr "斜體"
+
+#. xgettext: This text is used as a sample when selecting a font
+#. * please choose a translation that would produce common
+#. * characters specific to the target alphabet.
+#: goffice/gtk/go-font-sel.c:446
+msgid "AaBbCcDdEe12345"
+msgstr ""
+
+#: goffice/gtk/go-font-sel.glade.h:1
+msgid "*"
+msgstr "*"
+
+#: goffice/gtk/go-font-sel.glade.h:2
+msgid "Font style:"
+msgstr "字款:"
+
+#: goffice/gtk/go-font-sel.glade.h:3
+msgid "Font:"
+msgstr "字型:"
+
+#: goffice/gtk/go-font-sel.glade.h:4
+msgid "Preview"
+msgstr "預覽"
+
+#: goffice/gtk/go-font-sel.glade.h:5
+msgid "Size:"
+msgstr "大小:"
+
+#: goffice/gtk/go-format-sel.c:75
+msgid "Number"
+msgstr "數字"
+
+#: goffice/gtk/go-format-sel.c:76
+#, fuzzy
+msgid "Currency"
+msgstr "貨幣(_C)"
+
+#: goffice/gtk/go-format-sel.c:77
+#, fuzzy
+msgid "Accounting"
+msgstr "會計(_A)"
+
+#: goffice/gtk/go-format-sel.c:78
+msgid "Date"
+msgstr "日期"
+
+#: goffice/gtk/go-format-sel.c:79
+msgid "Time"
+msgstr "時間"
+
+#: goffice/gtk/go-format-sel.c:80
+msgid "Percentage"
+msgstr "百分比"
+
+#: goffice/gtk/go-format-sel.c:81
+#, fuzzy
+msgid "Fraction"
+msgstr "分數(_F)"
+
+#: goffice/gtk/go-format-sel.c:82
+#, fuzzy
+msgid "Scientific"
+msgstr "科學記數法(_S)"
+
+#: goffice/gtk/go-format-sel.c:83
+msgid "Text"
+msgstr "文字"
+
+#: goffice/gtk/go-format-sel.c:84
+#, fuzzy
+msgid "Special"
+msgstr "特別(_P)"
+
+#: goffice/gtk/go-format-sel.c:85
+msgid "Custom"
+msgstr "自訂"
+
+#: goffice/gtk/go-format-sel.c:956
+msgid "Negative Number Format"
+msgstr "負數格式"
+
+#: goffice/gtk/go-format-sel.c:978
+msgid "Number Formats"
+msgstr "數字格式"
+
+#: goffice/gtk/go-format-sel.glade.h:1
+#, fuzzy
+msgid "Ca_tegories:"
+msgstr "分類:"
+
+#: goffice/gtk/go-format-sel.glade.h:2
+msgid "Deci_mal places:"
+msgstr "小數位(_M):"
+
+#: goffice/gtk/go-format-sel.glade.h:3
+msgid "Display amounts in traditional accounting styles."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:4
+msgid "Display and input values as strings with no interpretation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:5
+msgid "Display currency amounts."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:6
+msgid "Display dates and optionally times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:7
+msgid "Display numeric values with a fixed number of decimals."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:8
+msgid "Display times of day."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:9
+msgid "Display values as closest fractional approximation."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:10
+#, fuzzy
+msgid "Display values as percentages."
+msgstr "輸入的值不會加上任何處理"
+
+#: goffice/gtk/go-format-sel.glade.h:11
+msgid "Display values with power-of-ten scaling."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:12
+#, fuzzy
+msgid "Format c_ode:"
+msgstr "格式(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:13
+#, fuzzy
+msgid "Negative number _format:"
+msgstr "負數格式"
+
+#: goffice/gtk/go-format-sel.glade.h:14
+#, fuzzy
+msgid "Preview:"
+msgstr "預覽"
+
+#: goffice/gtk/go-format-sel.glade.h:15
+msgid "S_ymbol:"
+msgstr "符號(_Y):"
+
+#: goffice/gtk/go-format-sel.glade.h:16
+msgid "Select an appropriate format automatically."
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:17
+msgid "Specify an XL-style format directly"
+msgstr ""
+
+#: goffice/gtk/go-format-sel.glade.h:18
+msgid "_Format:"
+msgstr "格式(_F):"
+
+#: goffice/gtk/go-format-sel.glade.h:19
+msgid "_Use Separator for 1000's"
+msgstr "每三個位加上分隔號(_U)"
+
+#: goffice/gtk/go-locale-sel.c:68
+#, fuzzy
+msgid "Western Europe"
+msgstr "西歐語系"
+
+#: goffice/gtk/go-locale-sel.c:69
+#, fuzzy
+msgid "Eastern Europe"
+msgstr "中歐語系"
+
+#: goffice/gtk/go-locale-sel.c:70
+msgid "North America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:71
+msgid "South & Central America"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:72
+msgid "Asia"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:73
+#, fuzzy
+msgid "Africa"
+msgstr "阿拉伯文"
+
+#: goffice/gtk/go-locale-sel.c:74
+#, fuzzy
+msgid "Australia"
+msgstr "Australia 澳洲 (澳元)"
+
+#.
+#. * The format here is "Country/Language (locale)" or just
+#. * "Country (locale)" when there is only one choice or one
+#. * very dominant language.
+#. *
+#. * Note: lots of people get very emotional over this.  Please
+#. * err on the safe side, if any.
+#.
+#: goffice/gtk/go-locale-sel.c:106
+msgid "United States/English (C)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:107
+#, fuzzy
+msgid "South Africa Afrikaans (af_ZA)"
+msgstr "South Africa 南非 (蘭特)"
+
+#: goffice/gtk/go-locale-sel.c:108
+msgid "Ethiopia/Amharic (am_ET)"
+msgstr ""
+
+# FIXME: The currency symbol list is sorted alphabetically.
+# So english name has to come first. -- Abel
+# REFERENCE:
+# http://www.cybertranslator.idv.tw/comeco_currencies.htm
+# http://www.cp-edu.com/ciku/TW/CIKU/free_html/fl_sjzyhbjb.asp
+#: goffice/gtk/go-locale-sel.c:109
+#, fuzzy
+msgid "United Arab Emirates (ar_AE)"
+msgstr "United Arab Emirates 阿拉伯聯合大公國 (迪拉姆)"
+
+#: goffice/gtk/go-locale-sel.c:110
+#, fuzzy
+msgid "Bahrain (ar_BH)"
+msgstr "Bahrain 巴林 (第納爾)"
+
+#: goffice/gtk/go-locale-sel.c:111
+msgid "Algeria (ar_DZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:112
+msgid "Egypt (ar_EG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:113
+msgid "India/Arabic (ar_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:114
+msgid "Iraq (ar_IQ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:115
+#, fuzzy
+msgid "Jordan (ar_JO)"
+msgstr "Jordan 約旦 (第納爾)"
+
+#: goffice/gtk/go-locale-sel.c:116
+#, fuzzy
+msgid "Kuwait (ar_KW)"
+msgstr "Kuwait 科威特 (第納爾)"
+
+#: goffice/gtk/go-locale-sel.c:117
+msgid "Lebanon (ar_LB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:118
+#, fuzzy
+msgid "Libya (ar_LY)"
+msgstr "Libya 利比亞 (第納爾)"
+
+#: goffice/gtk/go-locale-sel.c:119
+msgid "Morocco (ar_MA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:120
+msgid "Oman (ar_OM)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:121
+msgid "Qatar (ar_QA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:122
+#, fuzzy
+msgid "Saudi Arabia (ar_SA)"
+msgstr "Saudi Arabia 沙烏地阿拉伯 (里亞爾)"
+
+#: goffice/gtk/go-locale-sel.c:123
+#, fuzzy
+msgid "Sudan (ar_SD)"
+msgstr "Sudan 蘇丹 (第納爾)"
+
+#: goffice/gtk/go-locale-sel.c:124
+msgid "Syria (ar_SY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:125
+#, fuzzy
+msgid "Tunisia (ar_TN)"
+msgstr "Tunisia 突尼西亞 (第納爾)"
+
+#: goffice/gtk/go-locale-sel.c:126
+msgid "Yemen (ar_YE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:127
+msgid "Azerbaijan (az_AZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:128
+#, fuzzy
+msgid "Belarus (be_BY)"
+msgstr "Belarus 白俄羅斯 (盧布)"
+
+#: goffice/gtk/go-locale-sel.c:129
+#, fuzzy
+msgid "Bulgaria (bg_BG)"
+msgstr "Bulgaria 保加利亞 (列弗)"
+
+#: goffice/gtk/go-locale-sel.c:130
+#, fuzzy
+msgid "Bangladesh (bn_BD)"
+msgstr "Bangladesh 孟加拉 (塔卡)"
+
+#: goffice/gtk/go-locale-sel.c:131
+msgid "India/Bengali (bn_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:132
+msgid "France/Breton (br_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:133
+msgid "Bosnia and Herzegowina (bs_BA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:134
+msgid "Spain/Catalan (ca_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:135
+#, fuzzy
+msgid "Czech Republic (cs_CZ)"
+msgstr "Czech Republic 捷克共和國 (克郎)"
+
+#: goffice/gtk/go-locale-sel.c:136
+msgid "Great Britain/Welsh (cy_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:137
+#, fuzzy
+msgid "Denmark (da_DK)"
+msgstr "Denmark 丹麥 (克郎)"
+
+#: goffice/gtk/go-locale-sel.c:138
+msgid "Austria (de_AT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:139
+msgid "Belgium/German (de_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:140
+#, fuzzy
+msgid "Switzerland/German (de_CH)"
+msgstr "Switzerland 瑞士 (法郎)"
+
+#: goffice/gtk/go-locale-sel.c:141
+msgid "Germany (de_DE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:142
+msgid "Luxembourg/German (de_LU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:143
+msgid "Greece (el_GR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:144
+msgid "Australia (en_AU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:145
+msgid "Botswana (en_BW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:146
+msgid "Canada/English (en_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:147
+msgid "Great Britain (en_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:148
+msgid "Hong Kong/English (en_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:149
+msgid "Ireland (en_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:150
+#, fuzzy
+msgid "India/English (en_IN)"
+msgstr "英文 (ASCII)"
+
+#: goffice/gtk/go-locale-sel.c:151
+#, fuzzy
+msgid "New Zealand (en_NZ)"
+msgstr "New Zealand 新西蘭 (新西蘭元)"
+
+#: goffice/gtk/go-locale-sel.c:152
+#, fuzzy
+msgid "Philippines (en_PH)"
+msgstr "Philippines 菲律賓 (披索)"
+
+#: goffice/gtk/go-locale-sel.c:153
+msgid "Singapore/English (en_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:154
+msgid "United States/English (en_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:155
+#, fuzzy
+msgid "South Africa/English (en_ZA)"
+msgstr "South Africa 南非 (蘭特)"
+
+#: goffice/gtk/go-locale-sel.c:156
+msgid "Zimbabwe (en_ZW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:157
+msgid "Esperanto (eo_EO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:158
+#, fuzzy
+msgid "Argentina (es_AR)"
+msgstr "Argentina 阿根廷 (披索)"
+
+#: goffice/gtk/go-locale-sel.c:159
+msgid "Bolivia (es_BO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:160
+#, fuzzy
+msgid "Chile (es_CL)"
+msgstr "Chile 智利 (披索)"
+
+#: goffice/gtk/go-locale-sel.c:161
+#, fuzzy
+msgid "Colombia (es_CO)"
+msgstr "Colombia 哥倫比亞 (披索)"
+
+#: goffice/gtk/go-locale-sel.c:162
+#, fuzzy
+msgid "Costa Rica (es_CR)"
+msgstr "Costa Rica 哥斯大黎加 (科郎)"
+
+#: goffice/gtk/go-locale-sel.c:163
+#, fuzzy
+msgid "Dominican Republic (es_DO)"
+msgstr "Dominican Republic 多明尼加共和國 (披索)"
+
+#: goffice/gtk/go-locale-sel.c:164
+msgid "Ecuador (es_EC)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:165
+#, fuzzy
+msgid "Spain (es_ES)"
+msgstr "抽樣 (%s)"
+
+#: goffice/gtk/go-locale-sel.c:166
+#, fuzzy
+msgid "Guatemala (es_GT)"
+msgstr "Guatemala 瓜地馬拉 (格查爾)"
+
+#: goffice/gtk/go-locale-sel.c:167
+#, fuzzy
+msgid "Honduras (es_HN)"
+msgstr "Honduras 宏都拉斯 (倫皮拉)"
+
+#: goffice/gtk/go-locale-sel.c:168
+#, fuzzy
+msgid "Mexico (es_MX)"
+msgstr "Mexico 墨西哥 (披索)"
+
+#: goffice/gtk/go-locale-sel.c:169
+msgid "Nicaragua (es_NI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:170
+msgid "Panama (es_PA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:171
+msgid "Peru (es_PE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:172
+msgid "Puerto Rico (es_PR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:173
+msgid "Paraguay (es_PY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:174
+#, fuzzy
+msgid "El Salvador (es_SV)"
+msgstr "El Salvador 薩爾瓦多 (科郎)"
+
+#: goffice/gtk/go-locale-sel.c:175
+msgid "United States/Spanish (es_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:176
+#, fuzzy
+msgid "Uruguay (es_UY)"
+msgstr "Uruguay 烏拉圭 (新披索)"
+
+#: goffice/gtk/go-locale-sel.c:177
+#, fuzzy
+msgid "Venezuela (es_VE)"
+msgstr "Venezuela 委內瑞拉 (博利瓦)"
+
+#: goffice/gtk/go-locale-sel.c:178
+msgid "Estonia (et_EE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:179
+#, fuzzy
+msgid "Spain/Basque (eu_ES)"
+msgstr "抽樣 (%s)"
+
+#: goffice/gtk/go-locale-sel.c:180
+msgid "Iran (fa_IR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:181
+msgid "Finland/Finnish (fi_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:182
+msgid "Faroe Islands (fo_FO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:183
+msgid "Belgium/French (fr_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:184
+msgid "Canada/French (fr_CA)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:185
+#, fuzzy
+msgid "Switzerland/French (fr_CH)"
+msgstr "Switzerland 瑞士 (法郎)"
+
+#: goffice/gtk/go-locale-sel.c:186
+msgid "France (fr_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:187
+msgid "Ireland/Gaelic (ga_IE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:188
+msgid "Great Britain/Scottish Gaelic (gd_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:189
+msgid "Spain/Galician (gl_ES)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:190
+msgid "Great Britain/Manx Gaelic (gv_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:191
+msgid "India/Hindu (hi_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:192
+msgid "Croatia (hr_HR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:193
+msgid "Hungary (hu_HU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:194
+#, fuzzy
+msgid "Armenia (hy_AM)"
+msgstr "亞美尼亞文字 (ARMSCII-8)"
+
+#: goffice/gtk/go-locale-sel.c:195
+msgid "(i18n)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:196
+#, fuzzy
+msgid "Indonesia (id_ID)"
+msgstr "Indonesia 印尼 (盾)"
+
+#: goffice/gtk/go-locale-sel.c:197
+msgid "Iceland (is_IS)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:198
+msgid "(iso14651_t1)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:199
+msgid "Switzerland/Italian (it_CH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:200
+msgid "Italy (it_IT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:201
+msgid "Israel/Hebrew (iw_IL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:202
+#, fuzzy
+msgid "Japan (ja_JP)"
+msgstr "日文 (EUC-JP)"
+
+#: goffice/gtk/go-locale-sel.c:203
+#, fuzzy
+msgid "Georgia (ka_GE)"
+msgstr "格魯吉亞文字 (GEOSTD8)"
+
+#: goffice/gtk/go-locale-sel.c:204
+msgid "Greenland (kl_GL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:205
+#, fuzzy
+msgid "Korea (ko_KR)"
+msgstr "韓文 (EUC-KR)"
+
+#: goffice/gtk/go-locale-sel.c:206
+msgid "Great Britain/Cornish (kw_GB)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:207
+#, fuzzy
+msgid "Lithuania (lt_LT)"
+msgstr "Lithuania 立陶宛 (Lita)"
+
+#: goffice/gtk/go-locale-sel.c:208
+#, fuzzy
+msgid "Latvia (lv_LV)"
+msgstr "Latvia 拉脫維亞 (Lat)"
+
+#: goffice/gtk/go-locale-sel.c:209
+msgid "New Zealand/Maori (mi_NZ)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:210
+msgid "Macedonia (mk_MK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:211
+msgid "India/Marathi (mr_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:212
+msgid "Malaysia (ms_MY)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:213
+msgid "Malta (mt_MT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:214
+msgid "Belgium/Flemish (nl_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:215
+msgid "The Netherlands (nl_NL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:216
+msgid "Norway/Nynorsk (nn_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:217
+msgid "Norway/Bokmal (no_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:218
+msgid "France/Occitan (oc_FR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:219
+msgid "Poland (pl_PL)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:220
+msgid "Brazil (pt_BR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:221
+msgid "Portugal (pt_PT)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:222
+msgid "Romania (ro_RO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:223
+#, fuzzy
+msgid "Russia (ru_RU)"
+msgstr "ä¿„æ–‡ (CP-866)"
+
+#: goffice/gtk/go-locale-sel.c:224
+#, fuzzy
+msgid "Ukraine/Russian (ru_UA)"
+msgstr "烏克蘭文 (KOI8-U)"
+
+#: goffice/gtk/go-locale-sel.c:225
+msgid "Norway/Saami (se_NO)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:226
+#, fuzzy
+msgid "Slovakia (sk_SK)"
+msgstr "Slovakia 斯洛伐克 (克郎)"
+
+#: goffice/gtk/go-locale-sel.c:227
+#, fuzzy
+msgid "Slovenia (sl_SI)"
+msgstr "Slovenia 斯洛維尼亞 (Tolar)"
+
+#: goffice/gtk/go-locale-sel.c:228
+#, fuzzy
+msgid "Albania (sq_AL)"
+msgstr "Albania 阿爾巴尼亞 (列克)"
+
+#: goffice/gtk/go-locale-sel.c:229
+#, fuzzy
+msgid "Yugoslavia (sr_YU)"
+msgstr "Yugoslavia 南斯拉夫 (新第納爾)"
+
+#: goffice/gtk/go-locale-sel.c:230
+msgid "Finland/Swedish (sv_FI)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:231
+msgid "Sweden (sv_SE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:232
+msgid "India/Tamil (ta_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:233
+msgid "India/Telugu (te_IN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:234
+#, fuzzy
+msgid "Tajikistan (tg_TJ)"
+msgstr "Tajikistan 塔吉克 (盧布)"
+
+#: goffice/gtk/go-locale-sel.c:235
+#, fuzzy
+msgid "Thailand (th_TH)"
+msgstr "Thailand 泰國 (銖)"
+
+#: goffice/gtk/go-locale-sel.c:236
+msgid "Eritrea (ti_ER)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:237
+msgid "Ethiopia/Tigrinya (ti_ET)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:238
+msgid "Philippines/Tagalog (tl_PH)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:239
+msgid "Turkey (tr_TR)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:240
+msgid "Russia/Tatar (tt_RU)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:241
+#, fuzzy
+msgid "Ukraine (uk_UA)"
+msgstr "烏克蘭文 (KOI8-U)"
+
+#: goffice/gtk/go-locale-sel.c:242
+#, fuzzy
+msgid "Pakistan (ur_PK)"
+msgstr "Pakistan 巴基斯坦 (盧比)"
+
+#: goffice/gtk/go-locale-sel.c:243
+#, fuzzy
+msgid "Uzbekistan (uz_UZ)"
+msgstr "Uzbekistan 烏茲別克 (Sum)"
+
+#: goffice/gtk/go-locale-sel.c:244
+#, fuzzy
+msgid "Vietnam (vi_VN)"
+msgstr "越南文 (TCVN)"
+
+#: goffice/gtk/go-locale-sel.c:245
+msgid "Belgium/Walloon (wa_BE)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:246
+msgid "United States/Yiddish (yi_US)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:247
+msgid "China (zh_CN)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:248
+msgid "Hong Kong/Chinese (zh_HK)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:249
+msgid "Singapore/Chinese (zh_SG)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:250
+msgid "Taiwan (zh_TW)"
+msgstr ""
+
+#: goffice/gtk/go-locale-sel.c:451
+#, fuzzy
+msgid "Current Locale: "
+msgstr "目前的名稱"
+
+#: goffice/gtk/go-optionmenu.c:197
+#, fuzzy
+msgid "Menu"
+msgstr "平均數"
+
+#: goffice/gtk/go-optionmenu.c:198
+msgid "The menu of options"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:204
+msgid "Indicator Size"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:205
+msgid "Size of dropdown indicator"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:210
+msgid "Indicator Spacing"
+msgstr ""
+
+#: goffice/gtk/go-optionmenu.c:211
+msgid "Spacing around indicator"
+msgstr ""
+
+#: goffice/utils/format.c:86
+msgid "*Sun"
+msgstr "æ—¥"
+
+#: goffice/utils/format.c:87
+msgid "*Mon"
+msgstr "一"
+
+#: goffice/utils/format.c:88
+msgid "*Tue"
+msgstr "二"
+
+#: goffice/utils/format.c:89
+msgid "*Wed"
+msgstr "三"
+
+#: goffice/utils/format.c:90
+msgid "*Thu"
+msgstr "å››"
+
+#: goffice/utils/format.c:91
+msgid "*Fri"
+msgstr "五"
+
+#: goffice/utils/format.c:92
+msgid "*Sat"
+msgstr "å…­"
+
+#: goffice/utils/format.c:97
+msgid "Sunday"
+msgstr "星期日"
+
+#: goffice/utils/format.c:98
+msgid "Monday"
+msgstr "星期一"
+
+#: goffice/utils/format.c:99
+msgid "Tuesday"
+msgstr "星期二"
+
+#: goffice/utils/format.c:100
+msgid "Wednesday"
+msgstr "星期三"
+
+#: goffice/utils/format.c:101
+msgid "Thursday"
+msgstr "星期四"
+
+#: goffice/utils/format.c:102
+msgid "Friday"
+msgstr "星期五"
+
+#: goffice/utils/format.c:103
+msgid "Saturday"
+msgstr "星期六"
+
+#: goffice/utils/format.c:108
+msgid "*Jan"
+msgstr "1月"
+
+#: goffice/utils/format.c:109
+msgid "*Feb"
+msgstr "2月"
+
+#: goffice/utils/format.c:110
+msgid "*Mar"
+msgstr "3月"
+
+#: goffice/utils/format.c:111
+msgid "*Apr"
+msgstr "4月"
+
+#: goffice/utils/format.c:112
+msgid "*May"
+msgstr "5月"
+
+#: goffice/utils/format.c:113
+msgid "*Jun"
+msgstr "6月"
+
+#: goffice/utils/format.c:114
+msgid "*Jul"
+msgstr "7月"
+
+#: goffice/utils/format.c:115
+msgid "*Aug"
+msgstr "8月"
+
+#: goffice/utils/format.c:116
+msgid "*Sep"
+msgstr "9月"
+
+#: goffice/utils/format.c:117
+msgid "*Oct"
+msgstr "10月"
+
+#: goffice/utils/format.c:118
+msgid "*Nov"
+msgstr "11月"
+
+#: goffice/utils/format.c:119
+msgid "*Dec"
+msgstr "12月"
+
+#: goffice/utils/format.c:124
+msgid "January"
+msgstr "一月"
+
+#: goffice/utils/format.c:125
+msgid "February"
+msgstr "二月"
+
+#: goffice/utils/format.c:126
+msgid "March"
+msgstr "三月"
+
+#: goffice/utils/format.c:127
+msgid "April"
+msgstr "四月"
+
+#: goffice/utils/format.c:128
+msgid "May"
+msgstr "五月"
+
+#: goffice/utils/format.c:129
+msgid "June"
+msgstr "六月"
+
+#: goffice/utils/format.c:130
+msgid "July"
+msgstr "七月"
+
+#: goffice/utils/format.c:131
+msgid "August"
+msgstr "八月"
+
+#: goffice/utils/format.c:132
+msgid "September"
+msgstr "九月"
+
+#: goffice/utils/format.c:133
+msgid "October"
+msgstr "十月"
+
+#: goffice/utils/format.c:134
+msgid "November"
+msgstr "十一月"
+
+#: goffice/utils/format.c:135
+msgid "December"
+msgstr "十二月"
+
+#: goffice/utils/format.c:317
+msgid "TRUE"
+msgstr "TRUE"
+
+#: goffice/utils/format.c:318
+msgid "FALSE"
+msgstr "FALSE"
+
+#: goffice/utils/format.c:757
+msgid "Black"
+msgstr "黑"
+
+#: goffice/utils/format.c:758
+msgid "Blue"
+msgstr "藍"
+
+#: goffice/utils/format.c:759
+msgid "Cyan"
+msgstr "氰藍"
+
+#: goffice/utils/format.c:760
+msgid "Green"
+msgstr "綠"
+
+#: goffice/utils/format.c:761
+msgid "Magenta"
+msgstr "æ´‹ç´…"
+
+#: goffice/utils/format.c:762
+msgid "Red"
+msgstr "ç´…"
+
+#: goffice/utils/format.c:763
+msgid "White"
+msgstr "白"
+
+#: goffice/utils/format.c:764
+msgid "Yellow"
+msgstr "黃"
+
+# FIXME: The currency symbol list is sorted alphabetically.
+# So english name has to come first. -- Abel
+# REFERENCE:
+# http://www.cybertranslator.idv.tw/comeco_currencies.htm
+# http://www.cp-edu.com/ciku/TW/CIKU/free_html/fl_sjzyhbjb.asp
+#. The first column has three letter acronyms
+#. * for each currency.  They MUST start with '[$'
+#. * The second column has the long names of the currencies.
+#.
+#. 2002/08/04 Updated to match iso 4217
+#: goffice/utils/formats.c:389
+msgid "United Arab Emirates, Dirhams"
+msgstr "United Arab Emirates 阿拉伯聯合大公國 (迪拉姆)"
+
+#: goffice/utils/formats.c:390
+msgid "Afghanistan, Afghanis"
+msgstr "Afghanistan 阿富汗 (阿富汗尼)"
+
+#: goffice/utils/formats.c:391
+msgid "Albania, Leke"
+msgstr "Albania 阿爾巴尼亞 (列克)"
+
+#: goffice/utils/formats.c:392
+msgid "Armenia, Drams"
+msgstr ""
+
+#: goffice/utils/formats.c:393
+msgid "Netherlands Antilles, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:394
+msgid "Angola, Kwanza"
+msgstr ""
+
+#: goffice/utils/formats.c:395
+msgid "Argentina, Pesos"
+msgstr "Argentina 阿根廷 (披索)"
+
+#: goffice/utils/formats.c:396
+msgid "Australia, Dollars"
+msgstr "Australia 澳洲 (澳元)"
+
+#: goffice/utils/formats.c:397
+msgid "Aruba, Guilders"
+msgstr ""
+
+#: goffice/utils/formats.c:398
+msgid "Azerbaijan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:399
+msgid "Bosnia and Herzegovina, Convertible Marka"
+msgstr ""
+
+#: goffice/utils/formats.c:400
+msgid "Barbados, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:401
+msgid "Bangladesh, Taka"
+msgstr "Bangladesh 孟加拉 (塔卡)"
+
+#: goffice/utils/formats.c:402
+msgid "Bulgaria, Leva"
+msgstr "Bulgaria 保加利亞 (列弗)"
+
+#: goffice/utils/formats.c:403
+msgid "Bahrain, Dinars"
+msgstr "Bahrain 巴林 (第納爾)"
+
+#: goffice/utils/formats.c:404
+msgid "Burundi, Francs"
+msgstr "Burundi 蒲隆地 (法郎)"
+
+#: goffice/utils/formats.c:405
+msgid "Bermuda, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:406
+msgid "Brunei Darussalam, Dollars"
+msgstr "Brunei Darussalam 汶萊 (汶萊元)"
+
+#: goffice/utils/formats.c:407
+msgid "Bolivia, Bolivianos"
+msgstr "Bolivia 玻利維亞 (Boliviano)"
+
+#: goffice/utils/formats.c:408
+msgid "Brazil, Brazil Real"
+msgstr "Brazil 巴西 (Brazil Real)"
+
+#: goffice/utils/formats.c:409
+msgid "Bahamas, Dollars"
+msgstr "Bahamas 巴哈馬群島 (巴哈馬元)"
+
+#: goffice/utils/formats.c:410
+msgid "Bhutan, Ngultrum"
+msgstr "Bhutan 不丹 (Ngultrum)"
+
+#: goffice/utils/formats.c:411
+msgid "Botswana, Pulas"
+msgstr "Botswana 波札那 (普拉)"
+
+#: goffice/utils/formats.c:412
+msgid "Belarus, Rubles"
+msgstr "Belarus 白俄羅斯 (盧布)"
+
+#: goffice/utils/formats.c:413
+msgid "Belize, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:414
+msgid "Canada, Dollars"
+msgstr "Canada 加拿大 (加元)"
+
+#: goffice/utils/formats.c:415
+msgid "Congo/Kinshasa, Congolese Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:416
+msgid "Switzerland, Francs"
+msgstr "Switzerland 瑞士 (法郎)"
+
+#: goffice/utils/formats.c:417
+msgid "Chile, Pesos"
+msgstr "Chile 智利 (披索)"
+
+#: goffice/utils/formats.c:418
+msgid "China, Yuan Renminbi"
+msgstr "China 中華人民共和國 (人民幣)"
+
+#: goffice/utils/formats.c:419
+msgid "Colombia, Pesos"
+msgstr "Colombia 哥倫比亞 (披索)"
+
+#: goffice/utils/formats.c:420
+msgid "Costa Rica, Colones"
+msgstr "Costa Rica 哥斯大黎加 (科郎)"
+
+#: goffice/utils/formats.c:421
+msgid "Cuba, Pesos"
+msgstr "Cuba 古巴 (披索)"
+
+#: goffice/utils/formats.c:422
+msgid "Cape Verde, Escudos"
+msgstr "Cape Verde 維德角群島 (埃斯庫多)"
+
+#: goffice/utils/formats.c:423
+msgid "Cyprus, Pounds"
+msgstr "Cyprus 賽浦路斯 (鎊)"
+
+#: goffice/utils/formats.c:424
+msgid "Czech Republic, Koruny"
+msgstr "Czech Republic 捷克共和國 (克郎)"
+
+#: goffice/utils/formats.c:425
+msgid "Djibouti, Francs"
+msgstr "Djibouti 吉布提 (法郎)"
+
+#: goffice/utils/formats.c:426
+msgid "Denmark, Kroner"
+msgstr "Denmark 丹麥 (克郎)"
+
+#: goffice/utils/formats.c:427
+msgid "Dominican Republic, Pesos"
+msgstr "Dominican Republic 多明尼加共和國 (披索)"
+
+#: goffice/utils/formats.c:428
+msgid "Algeria, Algeria Dinars"
+msgstr "Algeria 阿爾及利亞 (第納爾)"
+
+#: goffice/utils/formats.c:429
+msgid "Estonia, Krooni"
+msgstr "Estonia 愛沙尼亞 (Kroon)"
+
+#: goffice/utils/formats.c:430
+msgid "Egypt, Pounds"
+msgstr "Egypt 埃及 (鎊)"
+
+#: goffice/utils/formats.c:431
+msgid "Eritrea, Nakfa"
+msgstr ""
+
+#: goffice/utils/formats.c:432
+msgid "Ethiopia, Birr"
+msgstr "Ethiopia 衣索匹亞 (比爾)"
+
+#: goffice/utils/formats.c:433
+msgid "Euro Member Countries, Euro"
+msgstr "Euro Member Countries 歐洲貨幣聯盟 (歐元)"
+
+#: goffice/utils/formats.c:434
+msgid "Fiji, Dollars"
+msgstr "Fiji 斐濟 (斐濟元)"
+
+#: goffice/utils/formats.c:435
+msgid "Falkland Islands (Malvinas), Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:436
+msgid "United Kingdom, Pounds"
+msgstr "United Kingdom 英國 (英鎊)"
+
+#: goffice/utils/formats.c:437
+msgid "Georgia, Lari"
+msgstr ""
+
+#: goffice/utils/formats.c:438
+msgid "Guernsey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:439
+msgid "Ghana, Cedis"
+msgstr "Ghana 迦納 (塞地)"
+
+#: goffice/utils/formats.c:440
+msgid "Gibraltar, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:441
+msgid "Gambia, Dalasi"
+msgstr "Gambia 甘比亞 (達拉西)"
+
+#: goffice/utils/formats.c:442
+msgid "Guinea, Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:443
+msgid "Guatemala, Quetzales"
+msgstr "Guatemala 瓜地馬拉 (格查爾)"
+
+#: goffice/utils/formats.c:444
+msgid "Guyana, Dollars"
+msgstr "Guyana 蓋亞那 (蓋亞那元)"
+
+#: goffice/utils/formats.c:445
+msgid "Hong Kong, Dollars"
+msgstr "Hong Kong 香港 (港元)"
+
+#: goffice/utils/formats.c:446
+msgid "Honduras, Lempiras"
+msgstr "Honduras 宏都拉斯 (倫皮拉)"
+
+#: goffice/utils/formats.c:447
+msgid "Croatia, Kuna"
+msgstr "Croatia 克羅埃西亞 (Kuna)"
+
+#: goffice/utils/formats.c:448
+msgid "Haiti, Gourdes"
+msgstr "Haiti 海地 (古德)"
+
+#: goffice/utils/formats.c:449
+msgid "Hungary, Forint"
+msgstr "Hungary 匈牙利 (福林)"
+
+#: goffice/utils/formats.c:450
+msgid "Indonesia, Rupiahs"
+msgstr "Indonesia 印尼 (盾)"
+
+#: goffice/utils/formats.c:451
+msgid "Israel, New Shekels"
+msgstr "Israel 以色列 (New Shekel)"
+
+#: goffice/utils/formats.c:452
+msgid "Isle of Man, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:453
+msgid "India, Rupees"
+msgstr "India 印度 (盧比)"
+
+#: goffice/utils/formats.c:454
+msgid "Iraq, Dinars"
+msgstr "Iraq 伊拉克 (第納爾)"
+
+#: goffice/utils/formats.c:455
+msgid "Iran, Rials"
+msgstr "Iran 伊朗 (里亞爾)"
+
+#: goffice/utils/formats.c:456
+msgid "Iceland, Kronur"
+msgstr "Iceland 冰島 (克郎)"
+
+#: goffice/utils/formats.c:457
+msgid "Jersey, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:458
+msgid "Jamaica, Dollars"
+msgstr "Jamaica 牙買加 (牙買加元)"
+
+#: goffice/utils/formats.c:459
+msgid "Jordan, Dinars"
+msgstr "Jordan 約旦 (第納爾)"
+
+#: goffice/utils/formats.c:460
+msgid "Japan, Yen"
+msgstr "Japan 日本 (日元)"
+
+#: goffice/utils/formats.c:461
+msgid "Kenya, Shillings"
+msgstr "Kenya 肯亞 (先令)"
+
+#: goffice/utils/formats.c:462
+msgid "Kyrgyzstan, Soms"
+msgstr "Kyrgyzstan 吉爾吉斯 (Som)"
+
+#: goffice/utils/formats.c:463
+msgid "Cambodia, Riels"
+msgstr "Cambodia 柬埔寨 (Riel)"
+
+#: goffice/utils/formats.c:464
+msgid "Comoros, Francs"
+msgstr "Comoros 科摩羅 (法郎)"
+
+#: goffice/utils/formats.c:465
+msgid "Korea (North), Won"
+msgstr "Korea (North) 北韓 (圜)"
+
+#: goffice/utils/formats.c:466
+msgid "Korea (South), Won"
+msgstr "Korea (South) 南韓 (圜)"
+
+#: goffice/utils/formats.c:467
+msgid "Kuwait, Dinars"
+msgstr "Kuwait 科威特 (第納爾)"
+
+#: goffice/utils/formats.c:468
+msgid "Cayman Islands, Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:469
+msgid "Kazakstan, Tenge"
+msgstr "Kazakstan 哈薩克 (Tenge)"
+
+#: goffice/utils/formats.c:470
+msgid "Laos, Kips"
+msgstr "Laos 寮國 (基普)"
+
+#: goffice/utils/formats.c:471
+msgid "Lebanon, Pounds"
+msgstr "Lebanon 黎巴嫩 (鎊)"
+
+#: goffice/utils/formats.c:472
+msgid "Sri Lanka, Rupees"
+msgstr "Sri Lanka 斯里蘭卡 (盧比)"
+
+#: goffice/utils/formats.c:473
+msgid "Liberia, Dollars"
+msgstr "Liberia 賴比瑞亞 (賴比瑞亞元)"
+
+#: goffice/utils/formats.c:474
+msgid "Lesotho, Maloti"
+msgstr "Lesotho 賴索托 (Loti)"
+
+#: goffice/utils/formats.c:475
+msgid "Lithuania, Litai"
+msgstr "Lithuania 立陶宛 (Lita)"
+
+#: goffice/utils/formats.c:476
+msgid "Latvia, Lati"
+msgstr "Latvia 拉脫維亞 (Lat)"
+
+#: goffice/utils/formats.c:477
+msgid "Libya, Dinars"
+msgstr "Libya 利比亞 (第納爾)"
+
+#: goffice/utils/formats.c:478
+msgid "Morocco, Dirhams"
+msgstr "Morocco 摩洛哥 (迪拉姆)"
+
+#: goffice/utils/formats.c:479
+msgid "Moldova, Lei"
+msgstr "Moldova 摩多瓦 (列伊)"
+
+#: goffice/utils/formats.c:480
+msgid "Madagascar, Malagasy Francs"
+msgstr "Madagascar 馬達加斯加 (馬達加斯加法郎)"
+
+#: goffice/utils/formats.c:481
+msgid "Macedonia, Denars"
+msgstr "Macedonia 馬其頓共和國 (Denar)"
+
+#: goffice/utils/formats.c:482
+msgid "Myanmar (Burma), Kyats"
+msgstr "Myanmar (Burma) 緬甸 (緬甸元)"
+
+#: goffice/utils/formats.c:483
+msgid "Mongolia, Tugriks"
+msgstr "Mongolia 蒙古 (圖格里克)"
+
+#: goffice/utils/formats.c:484
+msgid "Macau, Patacas"
+msgstr "Macau 澳門 (澳門元)"
+
+#: goffice/utils/formats.c:485
+msgid "Mauritania, Ouguiyas"
+msgstr "Mauritania 茅利塔尼亞 (烏吉亞)"
+
+#: goffice/utils/formats.c:486
+msgid "Malta, Liri"
+msgstr "Malta 馬爾他 (里拉)"
+
+#: goffice/utils/formats.c:487
+msgid "Mauritius, Rupees"
+msgstr "Mauritius 模里西斯 (盧比)"
+
+#: goffice/utils/formats.c:488
+msgid "Maldives (Maldive Islands), Rufiyaa"
+msgstr "Maldives (Maldive Islands) 馬爾地夫 (Rufiyaa)"
+
+#: goffice/utils/formats.c:489
+msgid "Malawi, Kwachas"
+msgstr "Malawi 馬拉威 (Kwacha)"
+
+#: goffice/utils/formats.c:490
+msgid "Mexico, Pesos"
+msgstr "Mexico 墨西哥 (披索)"
+
+#: goffice/utils/formats.c:491
+msgid "Malaysia, Ringgits"
+msgstr "Malaysia 馬來西亞 (林吉特)"
+
+#: goffice/utils/formats.c:492
+msgid "Mozambique, Meticais"
+msgstr "Mozambique 莫三比克 (梅蒂卡爾)"
+
+#: goffice/utils/formats.c:493
+msgid "Namibia, Dollars"
+msgstr "Namibia 那密比亞 (那密比亞元)"
+
+#: goffice/utils/formats.c:494
+msgid "Nigeria, Nairas"
+msgstr "Nigeria 奈及利亞 (奈拉)"
+
+#: goffice/utils/formats.c:495
+msgid "Nicaragua, Gold Cordobas"
+msgstr "Nicaragua 尼加拉瓜 (科多巴)"
+
+#: goffice/utils/formats.c:496
+msgid "Norway, Krone"
+msgstr "Norway 挪威 (克郎)"
+
+#: goffice/utils/formats.c:497
+msgid "Nepal, Nepal Rupees"
+msgstr "Nepal 尼泊爾 (尼泊爾盧比)"
+
+#: goffice/utils/formats.c:498
+msgid "New Zealand, Dollars"
+msgstr "New Zealand 新西蘭 (新西蘭元)"
+
+#: goffice/utils/formats.c:499
+msgid "Oman, Rials"
+msgstr "Oman 阿曼 (里亞爾)"
+
+#: goffice/utils/formats.c:500
+msgid "Panama, Balboa"
+msgstr "Panama 巴拿馬 (巴波亞)"
+
+#: goffice/utils/formats.c:501
+msgid "Peru, Nuevos Soles"
+msgstr "Peru 秘魯 (Nuevo Sol)"
+
+#: goffice/utils/formats.c:502
+msgid "Papua New Guinea, Kina"
+msgstr "Papua New Guinea 巴布亞紐幾內亞 (基那)"
+
+#: goffice/utils/formats.c:503
+msgid "Philippines, Pesos"
+msgstr "Philippines 菲律賓 (披索)"
+
+#: goffice/utils/formats.c:504
+msgid "Pakistan, Rupees"
+msgstr "Pakistan 巴基斯坦 (盧比)"
+
+#: goffice/utils/formats.c:505
+msgid "Poland, Zlotys"
+msgstr "Poland 波蘭 (茲羅提)"
+
+#: goffice/utils/formats.c:506
+msgid "Paraguay, Guarani"
+msgstr "Paraguay 巴拉圭 (Guarani)"
+
+#: goffice/utils/formats.c:507
+msgid "Qatar, Rials"
+msgstr "Qatar 卡達 (里亞爾)"
+
+#: goffice/utils/formats.c:508
+msgid "Romania, Lei"
+msgstr "Romania 羅馬尼亞 (列伊)"
+
+#: goffice/utils/formats.c:509
+msgid "Russia, Rubles"
+msgstr "Russia 俄羅斯 (盧布)"
+
+#: goffice/utils/formats.c:510
+msgid "Rwanda, Rwanda Francs"
+msgstr "Rwanda 盧旺達 (盧旺達法郎)"
+
+#: goffice/utils/formats.c:511
+msgid "Saudi Arabia, Riyals"
+msgstr "Saudi Arabia 沙烏地阿拉伯 (里亞爾)"
+
+#: goffice/utils/formats.c:512
+msgid "Solomon Islands, Dollars"
+msgstr "Solomon Islands 索羅門群島 (索羅門群島元)"
+
+#: goffice/utils/formats.c:513
+msgid "Seychelles, Rupees"
+msgstr "Seychelles 塞昔耳 (盧比)"
+
+#: goffice/utils/formats.c:514
+msgid "Sudan, Dinars"
+msgstr "Sudan 蘇丹 (第納爾)"
+
+#: goffice/utils/formats.c:515
+msgid "Sweden, Kronor"
+msgstr "Sweden 瑞典 (克郎)"
+
+#: goffice/utils/formats.c:516
+msgid "Singapore, Dollars"
+msgstr "Singapore 新加坡 (新加坡元)"
+
+#: goffice/utils/formats.c:517
+msgid "Saint Helena, Pounds"
+msgstr ""
+
+#: goffice/utils/formats.c:518
+msgid "Slovenia, Tolars"
+msgstr "Slovenia 斯洛維尼亞 (Tolar)"
+
+#: goffice/utils/formats.c:519
+msgid "Slovakia, Koruny"
+msgstr "Slovakia 斯洛伐克 (克郎)"
+
+#: goffice/utils/formats.c:520
+msgid "Sierra Leone, Leones"
+msgstr "Sierra Leone 獅子山 (利昂)"
+
+#: goffice/utils/formats.c:521
+msgid "Somalia, Shillings"
+msgstr "Somalia 索馬利亞 (先令)"
+
+#: goffice/utils/formats.c:522
+msgid "Seborga, Luigini"
+msgstr ""
+
+#: goffice/utils/formats.c:523
+msgid "Suriname, Guilders"
+msgstr "Suriname 蘇利南 (盾)"
+
+#: goffice/utils/formats.c:524
+msgid "Sao Tome and Principe, Dobras"
+msgstr ""
+
+#: goffice/utils/formats.c:525
+msgid "El Salvador, Colones"
+msgstr "El Salvador 薩爾瓦多 (科郎)"
+
+#: goffice/utils/formats.c:526
+msgid "Syria, Pounds"
+msgstr "Syria 敘利亞 (敘利亞鎊)"
+
+#: goffice/utils/formats.c:527
+msgid "Swaziland, Emalangeni"
+msgstr "Swaziland 史瓦濟蘭 (Lilageni)"
+
+#: goffice/utils/formats.c:528
+msgid "Thailand, Baht"
+msgstr "Thailand 泰國 (銖)"
+
+#: goffice/utils/formats.c:529
+msgid "Tajikistan, Rubles"
+msgstr "Tajikistan 塔吉克 (盧布)"
+
+#: goffice/utils/formats.c:530
+msgid "Turkmenistan, Manats"
+msgstr ""
+
+#: goffice/utils/formats.c:531
+msgid "Tunisia, Dinars"
+msgstr "Tunisia 突尼西亞 (第納爾)"
+
+#: goffice/utils/formats.c:532
+msgid "Tonga, Pa'anga"
+msgstr "Tonga 東加 (潘加)"
+
+#: goffice/utils/formats.c:533
+msgid "Turkey, Liras"
+msgstr "Turkey 土耳其 (里拉)"
+
+#: goffice/utils/formats.c:534
+msgid "Trinidad and Tobago, Dollars"
+msgstr "Trinidad and Tobago 千里達-托巴哥 (元)"
+
+#: goffice/utils/formats.c:535
+msgid "Tuvalu, Tuvalu Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:536
+msgid "Taiwan, New Dollars"
+msgstr "Taiwan 臺灣 (新臺幣)"
+
+#: goffice/utils/formats.c:537
+msgid "Tanzania, Shillings"
+msgstr "Tanzania 坦尚尼亞 (先令)"
+
+#: goffice/utils/formats.c:538
+msgid "Ukraine, Hryvnia"
+msgstr "Ukraine 烏克蘭 (Hryvnia)"
+
+#: goffice/utils/formats.c:539
+msgid "Uganda, Shillings"
+msgstr "Uganda 烏干達 (先令)"
+
+#: goffice/utils/formats.c:540
+msgid "United States of America, Dollars"
+msgstr "USA 美國 (美元)"
+
+#: goffice/utils/formats.c:541
+msgid "Uruguay, Pesos"
+msgstr "Uruguay 烏拉圭 (新披索)"
+
+#: goffice/utils/formats.c:542
+msgid "Uzbekistan, Sums"
+msgstr "Uzbekistan 烏茲別克 (Sum)"
+
+#: goffice/utils/formats.c:543
+msgid "Venezuela, Bolivares"
+msgstr "Venezuela 委內瑞拉 (博利瓦)"
+
+#: goffice/utils/formats.c:544
+msgid "Viet Nam, Dong"
+msgstr "Vietnam 越南 (越南盾)"
+
+#: goffice/utils/formats.c:545
+msgid "Vanuatu, Vatu"
+msgstr "Vanuatu 萬那杜 (Vatu)"
+
+#: goffice/utils/formats.c:546
+msgid "Samoa, Tala"
+msgstr "Samoa 薩摩亞 (塔拉)"
+
+#: goffice/utils/formats.c:547
+msgid "Communaute Financiere Africaine BEAC, Francs"
+msgstr "Communaute Financiere Africaine 非洲金融共同體 BEAC (法郎)"
+
+#: goffice/utils/formats.c:548
+msgid "Silver, Ounces"
+msgstr "銀 (盎司)"
+
+#: goffice/utils/formats.c:549
+msgid "Gold, Ounces"
+msgstr "金 (盎司)"
+
+#: goffice/utils/formats.c:550
+msgid "East Caribbean Dollars"
+msgstr ""
+
+#: goffice/utils/formats.c:551
+msgid "International Monetary Fund (IMF) Special Drawing Rights"
+msgstr ""
+
+#: goffice/utils/formats.c:552
+msgid "Communaute Financiere Africaine BCEAO, Francs"
+msgstr "Communaute Financiere Africaine 非洲金融共同體 BCEAO (法郎)"
+
+#: goffice/utils/formats.c:553
+#, fuzzy
+msgid "Palladium, Ounces"
+msgstr "鈀 (盎司)"
+
+#: goffice/utils/formats.c:554
+msgid "Comptoirs Francais du Pacifique Francs"
+msgstr ""
+
+#: goffice/utils/formats.c:555
+msgid "Platinum, Ounces"
+msgstr "鉑 (盎司)"
+
+#: goffice/utils/formats.c:556
+msgid "Yemen, Rials"
+msgstr "Yemen 葉門 (第納爾)"
+
+#: goffice/utils/formats.c:557
+msgid "Yugoslavia, New Dinars"
+msgstr "Yugoslavia 南斯拉夫 (新第納爾)"
+
+#: goffice/utils/formats.c:558
+msgid "South Africa, Rand"
+msgstr "South Africa 南非 (蘭特)"
+
+#: goffice/utils/formats.c:559
+msgid "Zambia, Kwacha"
+msgstr "Zambia 尚比亞 (克瓦查)"
+
+#: goffice/utils/formats.c:560
+msgid "Zimbabwe, Zimbabwe Dollars"
+msgstr "Zimbabwe 辛巴威 (辛巴威元)"
+
+#: goffice/utils/go-line.c:52
+msgid "None"
+msgstr "ç„¡"
+
+#: goffice/utils/go-line.c:53 goffice/utils/go-pattern.c:95
+msgid "Solid"
+msgstr "實色"
+
+#: goffice/utils/go-line.c:54
+msgid "Dash"
+msgstr ""
+
+#: goffice/utils/go-line.c:55
+msgid "Dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:56
+msgid "Dash dot"
+msgstr ""
+
+#: goffice/utils/go-line.c:57
+msgid "Dash dot dot"
+msgstr ""
+
+#. xgettext : this will appear as 'Automatic (patternname)'
+#. xgettext : this will appear as 'Automatic (shapename)'
+#. xgettext : this will appear as 'Automatic (patternname)'
+#: goffice/utils/go-line.c:306 goffice/utils/go-marker.c:603
+#: goffice/utils/go-pattern.c:242
+#, fuzzy, c-format
+msgid "Automatic (%s)"
+msgstr "自動"
+
+#: goffice/utils/go-marker.c:220
+#, fuzzy
+msgid "none"
+msgstr "ç„¡"
+
+#: goffice/utils/go-marker.c:221
+msgid "square"
+msgstr ""
+
+#: goffice/utils/go-marker.c:222
+#, fuzzy
+msgid "diamond"
+msgstr "中位數"
+
+#: goffice/utils/go-marker.c:223
+msgid "triangle down"
+msgstr ""
+
+#: goffice/utils/go-marker.c:224
+#, fuzzy
+msgid "triangle up"
+msgstr "範圍"
+
+#: goffice/utils/go-marker.c:225
+msgid "triangle right"
+msgstr ""
+
+#: goffice/utils/go-marker.c:226
+msgid "triangle left"
+msgstr ""
+
+#: goffice/utils/go-marker.c:227
+msgid "circle"
+msgstr ""
+
+#: goffice/utils/go-marker.c:228
+msgid "x"
+msgstr ""
+
+#: goffice/utils/go-marker.c:229
+msgid "cross"
+msgstr ""
+
+#: goffice/utils/go-marker.c:230
+#, fuzzy
+msgid "asterisk"
+msgstr "聯繫原來的儲存格"
+
+#: goffice/utils/go-marker.c:231
+#, fuzzy
+msgid "bar"
+msgstr "3月"
+
+#: goffice/utils/go-marker.c:232
+msgid "half bar"
+msgstr ""
+
+#: goffice/utils/go-marker.c:233
+msgid "butterfly"
+msgstr ""
+
+#: goffice/utils/go-marker.c:234
+msgid "hourglass"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:96
+#, fuzzy, c-format
+msgid "75% Grey"
+msgstr "75% 灰度"
+
+#: goffice/utils/go-pattern.c:97
+#, fuzzy, c-format
+msgid "50% Grey"
+msgstr "50% 灰度"
+
+#: goffice/utils/go-pattern.c:98
+#, fuzzy, c-format
+msgid "25% Grey"
+msgstr "25% 灰度"
+
+#: goffice/utils/go-pattern.c:99
+#, fuzzy, c-format
+msgid "12.5% Grey"
+msgstr "12.5% 灰度"
+
+#: goffice/utils/go-pattern.c:100
+#, fuzzy, c-format
+msgid "6.25% Grey"
+msgstr "6.25% 灰度"
+
+#: goffice/utils/go-pattern.c:101
+msgid "Horizontal Stripe"
+msgstr "水平間條"
+
+#: goffice/utils/go-pattern.c:102
+msgid "Vertical Stripe"
+msgstr "垂直間條"
+
+#: goffice/utils/go-pattern.c:103
+msgid "Reverse Diagonal Stripe"
+msgstr "反向對角間條"
+
+#: goffice/utils/go-pattern.c:104
+msgid "Diagonal Stripe"
+msgstr "對角間條"
+
+#: goffice/utils/go-pattern.c:105
+msgid "Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:106
+msgid "Thick Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:107
+msgid "Thin Horizontal Stripe"
+msgstr "水平幼間條"
+
+#: goffice/utils/go-pattern.c:108
+msgid "Thin Vertical Stripe"
+msgstr "垂直幼間條"
+
+#: goffice/utils/go-pattern.c:109
+msgid "Thin Reverse Diagonal Stripe"
+msgstr "反向對角幼間條"
+
+#: goffice/utils/go-pattern.c:110
+msgid "Thin Diagonal Stripe"
+msgstr "對角幼間條"
+
+#: goffice/utils/go-pattern.c:111
+msgid "Thin Horizontal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:112
+msgid "Thin Diagonal Crosshatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:113
+msgid "Foreground Solid"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:114
+msgid "Small Circles"
+msgstr "小圓"
+
+#: goffice/utils/go-pattern.c:115
+msgid "Semi Circles"
+msgstr "半圓"
+
+#: goffice/utils/go-pattern.c:116
+msgid "Thatch"
+msgstr ""
+
+#: goffice/utils/go-pattern.c:117
+msgid "Large Circles"
+msgstr "大圓"
+
+#: goffice/utils/go-pattern.c:118
+msgid "Bricks"
+msgstr "磚塊"
+
+#: plugins/plot_barcol/gog-1.5d.c:335 plugins/plot_pie/gog-pie.c:231
+#: plugins/plot_radar/gog-radar.c:225
+msgid "Labels"
+msgstr "標籤"
+
+#: plugins/plot_barcol/gog-1.5d.c:337 plugins/plot_boxes/gog-boxplot.c:229
+#: plugins/plot_pie/gog-pie.c:233 plugins/plot_radar/gog-radar.c:227
+msgid "Values"
+msgstr "變數值"
+
+#: plugins/plot_barcol/gog-1.5d.c:464
+#, fuzzy
+msgid "Error bars"
+msgstr "分析檔案時發生錯誤"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd bar/col plot in a chart will be called
+#. * 	PlotBarCol2
+#: plugins/plot_barcol/gog-barcol.c:97
+msgid "PlotBarCol"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:2
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-prefs.glade.h:2
+#: plugins/plot_pie/gog-pie-series.glade.h:2
+#: plugins/plot_pie/gog-ring-prefs.glade.h:2
+#, no-c-format
+msgid "%"
+msgstr "%"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:3
+msgid "How far the bars/cols overlap as a percentage of the width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:4
+#, fuzzy
+msgid "O_verlap:"
+msgstr "重疊(_O):"
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:5
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:3
+msgid "Separation between groups as a percentage of bar/col width"
+msgstr ""
+
+#: plugins/plot_barcol/gog-barcol-prefs.glade.h:6
+#: plugins/plot_boxes/gog-boxplot-prefs.glade.h:4
+msgid "_Gap:"
+msgstr "間距(_G):"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotLine2
+#.
+#: plugins/plot_barcol/gog-line.c:92
+#, fuzzy
+msgid "PlotLine"
+msgstr "ç„¡"
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotArea2
+#.
+#: plugins/plot_barcol/gog-line.c:211
+#, fuzzy
+msgid "PlotArea"
+msgstr "區域"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:1
+msgid "3D Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:2
+msgid "3D Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:3
+msgid "3D Percentage Bars"
+msgstr "立體百分比條狀圖"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:4
+msgid "3D Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:5
+msgid "3D Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:6
+msgid "3D Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:7
+msgid "Adjacent Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:8
+msgid "Adjacent Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:9
+msgid "Adjacent horizontal 3D bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:10
+msgid "Adjacent horizontal bars grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:11
+msgid "Adjacent vertical 3D columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:12
+msgid "Adjacent vertical columns grouped by major and minor categories."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:13
+msgid "Area"
+msgstr "區域"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:14
+msgid "Area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:15
+#, fuzzy
+msgid "Areas"
+msgstr "區域(_A)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:16
+msgid "Bar"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:17
+msgid "Column"
+msgstr "列"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:18
+msgid "Line"
+msgstr "ç›´ç·š"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:19
+#, fuzzy
+msgid "Line plot."
+msgstr "匯入的行數"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:20
+#, fuzzy
+msgid "Lines"
+msgstr "ç›´ç·š"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:21
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:22
+msgid ""
+"Minor categories stacked as percentages of the minor total, in 3D vertical "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:23
+msgid ""
+"Minor categories stacked as percentages of the minor total, in horizontal "
+"bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:24
+msgid ""
+"Minor categories stacked as percentages of the minor total, in vertical "
+"columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:25
+msgid ""
+"Minor categories stacked in horizontal 3D bars, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:26
+msgid "Minor categories stacked in horizontal bars grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:27
+msgid ""
+"Minor categories stacked in vertical 3D columns, grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:28
+msgid "Minor categories stacked in vertical columns grouped by major category."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:29
+#, fuzzy
+msgid "Percentage Areas"
+msgstr "百分比條狀圖"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:30
+msgid "Percentage Bars"
+msgstr "百分比條狀圖"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:31
+msgid "Percentage Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:32
+#, fuzzy
+msgid "Percentage Lines"
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:33
+#, fuzzy
+msgid "Percentage area plot."
+msgstr "百分比條狀圖"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:34
+#, fuzzy
+msgid "Percentage line plot."
+msgstr "百分比"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:35
+msgid "Stacked Areas"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:36
+msgid "Stacked Bars"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:37
+msgid "Stacked Columns"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:38
+msgid "Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:39
+msgid "Stacked area plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:40
+msgid "Stacked line plot."
+msgstr ""
+
+#: plugins/plot_barcol/plot-types.xml.in.h:41
+#, fuzzy
+msgid "Unmarked Lines"
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:42
+#, fuzzy
+msgid "Unmarked Percentage Lines"
+msgstr "百分比(_C)"
+
+#: plugins/plot_barcol/plot-types.xml.in.h:43
+msgid "Unmarked Stacked Lines"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:1
+msgid "Area plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:2
+msgid "Bar/Col plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:3
+msgid "Charting : Bar/Col/Line/Area"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:4
+#, fuzzy
+msgid "Default 1.5d plot types"
+msgstr "預設解譯器"
+
+#: plugins/plot_barcol/plugin.xml.in.h:5
+msgid "Line plotting engine"
+msgstr ""
+
+#: plugins/plot_barcol/plugin.xml.in.h:6
+msgid "Line, Area, Bar and Column plots"
+msgstr ""
+
+#. xgettext : the base for how to name box-plot objects
+#. * eg The 2nd box-plot in a chart will be called
+#. * 	BoxPlot2
+#: plugins/plot_boxes/gog-boxplot.c:103
+msgid "Box-Plot"
+msgstr ""
+
+#: plugins/plot_boxes/gog-boxplot.c:340
+#, fuzzy
+msgid "Invalid data."
+msgstr "密碼無效"
+
+#: plugins/plot_boxes/plot-types.xml.in.h:1
+msgid ""
+"Box-Plot. You must provide five values to the plot engine in this order: "
+"minimum, first quartile, median, third quartile, and maximum, not the raw "
+"data."
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:2
+msgid "BoxPlot"
+msgstr ""
+
+#: plugins/plot_boxes/plot-types.xml.in.h:3
+msgid "BoxPlots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:1
+msgid "Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:2
+#, fuzzy
+msgid "Box-plot plotting engine"
+msgstr "分析檔案時發生錯誤"
+
+#: plugins/plot_boxes/plugin.xml.in.h:3
+msgid "Charting : Box-Plots"
+msgstr ""
+
+#: plugins/plot_boxes/plugin.xml.in.h:4 plugins/plot_surface/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default surface plot types"
+msgstr "預設解譯器"
+
+#: plugins/plot_pie/gog-pie.c:180
+msgid "PlotPie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie.c:303
+#, fuzzy
+msgid "PlotRing"
+msgstr "ç„¡"
+
+#: plugins/plot_pie/gog-pie.c:593
+#, c-format
+msgid ""
+"%s point %d\n"
+"Value %g (%g)"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:3
+#: plugins/plot_pie/gog-ring-prefs.glade.h:4
+msgid "Degrees counter clockwise from 3 O'Clock"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:4
+#: plugins/plot_pie/gog-ring-prefs.glade.h:5
+msgid "Slices start _at:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:5
+#: plugins/plot_pie/gog-ring-prefs.glade.h:6
+msgid ""
+"The default amount each slice is separated from the center measured as a "
+"percentage of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:6
+#: plugins/plot_pie/gog-ring-prefs.glade.h:7
+msgid "_Slice Separation:"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:7
+#: plugins/plot_pie/gog-ring-prefs.glade.h:8
+msgid "_Vary colors by slice"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-prefs.glade.h:8
+#: plugins/plot_pie/gog-ring-prefs.glade.h:9
+msgid "degrees"
+msgstr "度"
+
+#: plugins/plot_pie/gog-pie-series.glade.h:3
+msgid ""
+"The amount this slice is separated from the center measured as a percentage "
+"of the radius of the pie"
+msgstr ""
+
+#: plugins/plot_pie/gog-pie-series.glade.h:4
+#, fuzzy
+msgid "_Separation:"
+msgstr "分隔符號:"
+
+#: plugins/plot_pie/gog-ring-prefs.glade.h:3
+#, fuzzy
+msgid "Cen_ter size:"
+msgstr "分類:"
+
+#: plugins/plot_pie/plot-types.xml.in.h:1
+msgid "3D Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:2
+msgid "3D Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:3
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary pies."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:4
+msgid ""
+"Major totals as percentages with each wedge subdivided into secondary "
+"stacked bars."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:5
+msgid "Multi-Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:6
+msgid "Multi-pie-bars"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:7
+msgid ""
+"Percentage of each contributor displayed in ring for each serie with wedges "
+"of the last ring split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:8
+msgid "Percentage of each contributor displayed in ring for each serie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:9
+msgid "Percentage of each contributor in 3D pie."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:10
+msgid "Percentage of each contributor with 3D wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:11
+msgid "Percentage of each contributor with wedges split apart."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:12
+msgid "Percentage of each contributor."
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:13
+msgid "Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:14
+msgid "Ring"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:15
+msgid "Split Pie"
+msgstr ""
+
+#: plugins/plot_pie/plot-types.xml.in.h:16
+#, fuzzy
+msgid "Split Ring"
+msgstr "抽樣"
+
+#: plugins/plot_pie/plugin.xml.in.h:1
+msgid "Charting : Pie/Ring"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default pie types"
+msgstr "預設解譯器"
+
+#: plugins/plot_pie/plugin.xml.in.h:3
+msgid "Pie and Ring plots"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:4
+msgid "Pie plotting engine"
+msgstr ""
+
+#: plugins/plot_pie/plugin.xml.in.h:5
+msgid "Ring plotting engine"
+msgstr ""
+
+#. xgettext : the base for how to name radar plot objects
+#. * eg The 2nd radar plot in a chart will be called
+#. * 	PlotRadar2
+#: plugins/plot_radar/gog-radar.c:113
+msgid "PlotRadar"
+msgstr ""
+
+#. xgettext : the base for how to name bar/col plot objects
+#. * eg The 2nd line plot in a chart will be called
+#. * 	PlotRadarArea2
+#.
+#: plugins/plot_radar/gog-radar.c:276
+#, fuzzy
+msgid "PlotRadarArea"
+msgstr "區域"
+
+#: plugins/plot_radar/plot-types.xml.in.h:1
+msgid "Area Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Area radar plot."
+msgstr "百分比條狀圖"
+
+#: plugins/plot_radar/plot-types.xml.in.h:3
+msgid "Dotted Radar"
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:4
+#, fuzzy
+msgid "Radar"
+msgstr "標準誤差"
+
+#: plugins/plot_radar/plot-types.xml.in.h:5
+msgid "Radar plot with dots."
+msgstr ""
+
+#: plugins/plot_radar/plot-types.xml.in.h:6
+msgid "Radar plot."
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:1
+msgid "Charting : Radial plots"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:2
+#, fuzzy
+msgid "Default radar plot types"
+msgstr "預設解譯器"
+
+#: plugins/plot_radar/plugin.xml.in.h:3
+msgid "Radar Area plotting engine"
+msgstr ""
+
+#: plugins/plot_radar/plugin.xml.in.h:4
+#, fuzzy
+msgid "Radar plotting engine"
+msgstr "分析檔案時發生錯誤"
+
+#: plugins/plot_radar/plugin.xml.in.h:5
+msgid "Radial/Radar plots"
+msgstr ""
+
+#: plugins/plot_surface/gog-contour-prefs.glade.h:1
+#, fuzzy
+msgid "_Slices number:"
+msgstr "整數"
+
+#. xgettext : the base for how to name contour plot objects
+#.
+#: plugins/plot_surface/gog-surface.c:102
+msgid "PlotContour"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:368 plugins/plot_xy/gog-xy.c:349
+#: plugins/plot_xy/gog-xy.c:501
+msgid "X"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:370 plugins/plot_xy/gog-xy.c:351
+#: plugins/plot_xy/gog-xy.c:503
+msgid "Y"
+msgstr ""
+
+#: plugins/plot_surface/gog-surface.c:372
+msgid "Z"
+msgstr ""
+
+#: plugins/plot_surface/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Contour"
+msgstr "中"
+
+#: plugins/plot_surface/plot-types.xml.in.h:2
+#, fuzzy
+msgid "Contour plot."
+msgstr "匯入的行數"
+
+#: plugins/plot_surface/plot-types.xml.in.h:3
+#, fuzzy
+msgid "Surface"
+msgstr "來源"
+
+#: plugins/plot_surface/plugin.xml.in.h:1
+#, fuzzy
+msgid "Contour plotting engine"
+msgstr "分析檔案時發生錯誤"
+
+#: plugins/plot_surface/plugin.xml.in.h:3
+#, fuzzy
+msgid "Surface Charts"
+msgstr "來源區域"
+
+#: plugins/plot_surface/plugin.xml.in.h:4
+#, fuzzy
+msgid "Surface charts"
+msgstr "來源區域"
+
+# ADJUST_TO_%_NORMAL_SIZE_2
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:2
+#, fuzzy, no-c-format
+msgid "% of default size"
+msgstr "%(_N)"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:3
+msgid "3_d"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:4
+#, fuzzy
+msgid "Dia_meter"
+msgstr "厘米"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:5
+msgid "Show _negative values"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:6
+#, fuzzy
+msgid "Sur_face"
+msgstr "來源"
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:7
+msgid "_Bubbles scaled to"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:8
+msgid "_Size represented by:"
+msgstr ""
+
+#: plugins/plot_xy/gog-bubble-prefs.glade.h:9
+msgid "_Vary colors by bubble"
+msgstr ""
+
+#. xgettext : the base for how to name scatter plot objects
+#. * eg The 2nd plot in a chart will be called
+#. * 	PlotXY2
+#: plugins/plot_xy/gog-xy.c:279
+msgid "PlotXY"
+msgstr ""
+
+#: plugins/plot_xy/gog-xy.c:391
+#, fuzzy
+msgid "PlotBubble"
+msgstr "é›™"
+
+#: plugins/plot_xy/gog-xy.c:505 plugins/plot_xy/plot-types.xml.in.h:1
+#, fuzzy
+msgid "Bubble"
+msgstr "é›™"
+
+#: plugins/plot_xy/gog-xy.c:997
+#, fuzzy
+msgid "Y Error bars"
+msgstr "分析檔案時發生錯誤"
+
+#: plugins/plot_xy/gog-xy.c:999
+#, fuzzy
+msgid "X Error bars"
+msgstr "分析檔案時發生錯誤"
+
+#: plugins/plot_xy/plot-types.xml.in.h:2
+msgid "Interpolate between multi-dimensional points with Bezier splines."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:3
+msgid ""
+"Linearly interpolate between multi-dimensional points,with markers at each "
+"point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:4
+msgid "Linearly interpolate between multi-dimensional points."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:5
+msgid "Markers at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:6
+msgid "Multi-dimensional points with circle at each point."
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:7
+msgid "Plot X, Y and bubble size."
+msgstr ""
+
+#. really 3_1
+#: plugins/plot_xy/plot-types.xml.in.h:9
+msgid "XY"
+msgstr ""
+
+#: plugins/plot_xy/plot-types.xml.in.h:10
+#, fuzzy
+msgid "XY Lines"
+msgstr "ç›´ç·š"
+
+#: plugins/plot_xy/plot-types.xml.in.h:11
+#, fuzzy
+msgid "XY Points"
+msgstr "位置"
+
+#: plugins/plot_xy/plot-types.xml.in.h:12
+#, fuzzy
+msgid "XY Splines"
+msgstr "ç›´ç·š"
+
+#: plugins/plot_xy/plugin.xml.in.h:1
+msgid "2D plots"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:2
+msgid "2D scatter plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:3
+msgid "Bubble plotting engine"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:4
+msgid "Charting : XY/Scatter/Bubble"
+msgstr ""
+
+#: plugins/plot_xy/plugin.xml.in.h:5
+msgid "Stock Scatter plot types"
+msgstr ""

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,7 @@
+check_PROGRAMS = pie-demo 
+
+include $(top_srcdir)/lib/goffice-0.0.4/goffice.mk
+
+AM_CFLAGS = $(GOFFICE_DEPS_CFLAGS)
+AM_LDFLAGS = $(GOFFICE_DEPS_LIBS) ../goffice/libgoffice-1.la
+pie_demo_SOURCES = pie-demo.c

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,507 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+EXTRA_INCLUDES = @EXTRA_INCLUDES@
+EXTRA_LIBS = @EXTRA_LIBS@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GDK_PIXBUF_CSOURCE = @GDK_PIXBUF_CSOURCE@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOFFICE_CFLAGS = @GOFFICE_CFLAGS@
+GOFFICE_LIBS = @GOFFICE_LIBS@
+GOFFICE_LIB_VERSION = @GOFFICE_LIB_VERSION@
+GOFFICE_PLUGIN_LDFLAGS = @GOFFICE_PLUGIN_LDFLAGS@
+GOFFICE_PLUGIN_LIBADD = @GOFFICE_PLUGIN_LIBADD@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+RENDER_LIBS = @RENDER_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WINDRES = @WINDRES@
+WITH_CAIRO_FALSE = @WITH_CAIRO_FALSE@
+WITH_CAIRO_TRUE = @WITH_CAIRO_TRUE@
+WITH_GNOME_FALSE = @WITH_GNOME_FALSE@
+WITH_GNOME_TRUE = @WITH_GNOME_TRUE@
+WITH_GTK_FALSE = @WITH_GTK_FALSE@
+WITH_GTK_TRUE = @WITH_GTK_TRUE@
+WITH_WIN32_FALSE = @WITH_WIN32_FALSE@
+WITH_WIN32_TRUE = @WITH_WIN32_TRUE@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_ct_WINDRES = @ac_ct_WINDRES@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+goffice_datadir = @goffice_datadir@
+goffice_gladedir = @goffice_gladedir@
+goffice_icondir = @goffice_icondir@
+goffice_libdir = @goffice_libdir@
+goffice_localedir = @goffice_localedir@
+goffice_plugindir = @goffice_plugindir@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+check_PROGRAMS = pie-demo 
+AM_CPPFLAGS = \
+	-I$(top_builddir)		\
+	-I$(top_srcdir)			\
+	$(GOFFICE_CFLAGS)
+
+
+GOFFICE_PLUGIN_FLAGS = $(GOFFICE_PLUGIN_LDFLAGS)
+goffice_include_dir = $(includedir)/libgoffice-1/goffice
+
+AM_CFLAGS = $(GOFFICE_CFLAGS)
+AM_LDFLAGS = $(GOFFICE_LIBS) ../goffice/libgoffice-1.la
+pie_demo_SOURCES = pie-demo.c
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/goffice/goffice-config.h \
+	$(top_builddir)/goffice/goffice-features.h
+CONFIG_CLEAN_FILES =
+check_PROGRAMS = pie-demo$(EXEEXT)
+am_pie_demo_OBJECTS = pie-demo.$(OBJEXT)
+pie_demo_OBJECTS = $(am_pie_demo_OBJECTS)
+pie_demo_LDADD = $(LDADD)
+pie_demo_DEPENDENCIES =
+pie_demo_LDFLAGS =
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)/goffice -I$(top_builddir)/goffice
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/pie-demo.Po
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(pie_demo_SOURCES)
+DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/goffice.mk \
+	Makefile.am
+SOURCES = $(pie_demo_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/goffice.mk $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  tests/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+pie-demo$(EXEEXT): $(pie_demo_OBJECTS) $(pie_demo_DEPENDENCIES) 
+	@rm -f pie-demo$(EXEEXT)
+	$(LINK) $(pie_demo_LDFLAGS) $(pie_demo_OBJECTS) $(pie_demo_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pie-demo.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-checkPROGRAMS \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/pie-demo.c
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/pie-demo.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/pie-demo.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,116 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * pie-demo.c : 
+ *
+ * Copyright (C) 2003-2005 Jean Brefort (jean.brefort at normalesup.org)
+ *  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 Library 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 St, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <goffice/goffice.h>
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/go-plugin-loader-module.h>
+#include <goffice/data/go-data-simple.h>
+#include <goffice/graph/gog-data-set.h>
+#include <goffice/graph/gog-label.h>
+#include <goffice/graph/gog-object.h>
+#include <goffice/graph/gog-plot.h>
+#include <goffice/graph/gog-series.h>
+#include <goffice/graph/gog-style.h>
+#include <goffice/gtk/go-graph-widget.h>
+
+static void
+on_quit (GtkObject *object)
+{
+	gtk_object_destroy (object);
+	gtk_main_quit ();
+}
+
+int
+main (int argc, char *argv[])
+{
+	GtkWidget *window, *box, *w;
+	GogChart *chart;
+	GogGraph *graph;
+	GogLabel *label;
+	GogPlot *pie;
+	GogSeries *series;
+	GogStyle *style;
+	GOData *data;
+	GError *error;
+	PangoFontDescription *desc;
+	char const *title = "Some statistics";
+	char const * const legends[] = {"first", "second", "third", "fourth"};
+	double values[] = {10., 20., 30., 40.};
+
+	gtk_init (&argc, &argv);
+	/* Initialize libgoffice */
+	libgoffice_init ();
+	/* Initialize plugins manager */
+	go_plugins_init (NULL, NULL, NULL, NULL, TRUE, GO_PLUGIN_LOADER_MODULE_TYPE);
+
+	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+	gtk_window_resize (GTK_WINDOW (window), 300, 340);
+	gtk_window_set_title (GTK_WINDOW (window), "pie demo");
+	g_signal_connect (window, "destroy", gtk_main_quit, NULL);
+
+	box = gtk_vbox_new (FALSE, 0);
+	w = gtk_button_new_from_stock (GTK_STOCK_QUIT);
+	g_signal_connect_swapped (w, "clicked", G_CALLBACK (on_quit), window);
+	gtk_box_pack_end (GTK_BOX (box), w, FALSE, FALSE, 0);
+
+	w = gtk_hseparator_new ();
+	gtk_box_pack_end (GTK_BOX (box), w, FALSE, FALSE, 2);
+
+	/* Create a graph widget and add it to the GtkVBox */
+	w = go_graph_widget_new ();
+	gtk_box_pack_end (GTK_BOX (box), w, TRUE, TRUE, 0);
+	/* Get the embedded graph */
+	graph = go_graph_widget_get_graph (GO_GRAPH_WIDGET (w));
+	/* Add a title */
+	label = (GogLabel *) g_object_new (GOG_LABEL_TYPE, NULL);
+	data = go_data_scalar_str_new (title, FALSE);
+	gog_dataset_set_dim (GOG_DATASET (label), 0, data, NULL);
+	gog_object_add_by_name (GOG_OBJECT (graph), "Title", GOG_OBJECT (label));
+	/* Change the title font */
+	style = gog_styled_object_get_style (GOG_STYLED_OBJECT (label));
+	desc = pango_font_description_from_string ("Sans bold 16");
+	gog_style_set_font_desc (style, desc);
+	/* Get the chart created by the widget initialization */
+	chart = go_graph_widget_get_chart (GO_GRAPH_WIDGET (w));
+	/* Create a pie plot and add it to the chart */
+	pie = (GogPlot *) gog_plot_new_by_name ("GogPiePlot");
+	gog_object_add_by_name (GOG_OBJECT (chart), "Plot", GOG_OBJECT (pie));
+	/* Create a series for the plot and populate it with some simple data */
+	series = gog_plot_new_series (pie);
+	data = go_data_vector_str_new (legends, 4, NULL);
+	gog_series_set_dim (series, 0, data, &error);
+	data = go_data_vector_val_new (values, 4, NULL);
+	gog_series_set_dim (series, 1, data, &error);
+	/* Add a legend to the chart */
+	gog_object_add_by_name (GOG_OBJECT (chart), "Legend", NULL);
+
+	gtk_container_add (GTK_CONTAINER (window), box);
+	gtk_widget_show_all (GTK_WIDGET (window));
+
+	w = gtk_hseparator_new ();
+	gtk_box_pack_start (GTK_BOX (box), w, FALSE, FALSE, 0);
+
+	gtk_main ();
+
+	/* Clean libgoffice stuff */
+	libgoffice_shutdown ();
+	return 0;
+}

Added: gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/semantic.cache
===================================================================
--- gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/semantic.cache	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/goffice-0.0.4/tests/semantic.cache	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,15 @@
+;; Object tests/
+;; SEMANTICDB Tags save file
+(semanticdb-project-database-file "tests/"
+  :tables (list 
+   (semanticdb-table "Makefile.am"
+    :major-mode 'makefile-mode
+    :tags '(("check_PROGRAMS" variable (:default-value ("pie-demo")) nil [1 28]) ("$(top_srcdir)/lib/goffice-0.0.4/goffice.mk" include nil nil [29 80]) ("AM_CFLAGS" variable (:default-value ("$(GOFFICE_DEPS_CFLAGS)")) nil [81 116]) ("AM_LDFLAGS" variable (:default-value ("$(GOFFICE_DEPS_LIBS)" "../goffice/libgoffice-1.la")) nil [116 177]) ("pie_demo_SOURCES" variable (:default-value ("pie-demo.c")) nil [177 207]))
+    :file "Makefile.am"
+    :pointmax 207
+    )
+   )
+  :file "semantic.cache"
+  :semantic-tag-version "2.0pre3"
+  :semanticdb-version "2.0pre3"
+  )

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/AUTHORS
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/AUTHORS	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/AUTHORS	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2 @@
+Jody Goldberg            <jody at gnome.org>
+Manuel Mausz             <Manuel.Mausz at fabasoft.com>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/BUGS
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/BUGS	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/BUGS	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,23 @@
+General
+    - Can we buffer things to support sequential access only ?
+
+gsf-output-stdio.c:
+
+1. We require write permission in the target directory.
+
+2. A "chdir" between open and close might move the file!
+
+3. Changing the directory structure between open and close might
+   produce interesting effects.
+
+4. If the target file is multiple (hard) linked, the file will
+   be unlinked.  (Thus, the other "copies" will not change.)
+
+5. If the target file is owned by someone else, we will most
+   likely take ownership.
+
+6. Race conditions (inter-process and inter-thread) all over.
+
+OLE2
+    Properties
+	- in/out support for blobs and storages

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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 St, Fifth Floor, Boston, MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING.LIB
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING.LIB	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/COPYING.LIB	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,504 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library 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
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/ChangeLog
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/ChangeLog	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/ChangeLog	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,3777 @@
+2005-09-06  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.12.3
+
+2005-08-24  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : Make gconf optional
+	* Makefile.am : ditto.
+
+2005-08-22  Jody Goldberg <jody at gnome.org>
+
+	* gsf-gnome/Makefile.am : Add -no-undefined on win32 [#314221]
+
+2005-08-19  Tim Janik  <timj at imendio.com>
+
+	* gsf/gsf-outfile-zip.c (zip_close_stream): call deflateEnd, free
+	stream and buffer space, so we are not holding on to large amounts
+	of memory until we're done with the current directory.
+
+2005-08-17  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* doc/gsf-office-thumbnailer.1: Added.
+	* doc/Makefile.am: Updated accordingly.
+
+2005-08-16  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Update obsolete AC_TRY_* macros.
+	Before the tests for g_chmod and g_access, LIBGSF_LIBS should be
+	_prepended_ to LIBS, not appended; more specific libs have to be
+	listed first.
+	* gsf/gsf-impl-utils.h: Align tabs.
+
+2005-08-13  Morten Welinder <terra at gnome.org>
+
+	* configure.in: Post release bump
+
+2005-08-13  Morten Welinder <terra at gnome.org>
+
+	* Release 1.12.2
+
+2005-08-11  Jean Brefort  <jean.brefort at normalesup.org>
+
+	* gsf/gsf-impl-utils.h: made GSF_CLASS_FULL and GSF_DYNAMIC_CLASS_FULL
+	really full.
+
+2005-08-09  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Changed tests for g_chmod and g_access: actually try
+	linking the test fragments and use the LIBS being constructed in those
+	attempts.
+
+2005-08-09  Morten Welinder  <terra at gnome.org>
+
+	* configure.in: Test for g_chmod and g_access.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_close): Use the right
+	errno.  Fixes part of #312930.
+	(chmod_wrapper): New function to help Win32.
+	(access_wrapper): Renamed from gsf_access and simplified.
+
+2005-08-09  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* thumbnailer/main.c (show_error_and_exit): Mark this G_GNUC_NORETURN
+	as well.
+
+2005-08-08  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* *: Updated the FSF's address.
+
+2005-08-07  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new_FILE): Don't forget
+	  to set the keep_open flag.
+	* thumbnailer/main.c (show_error_string_and_exit): Add G_GNUC_NORETURN.
+
+2005-08-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse) : be more careful
+
+2005-08-02  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new_FILE): New function
+	for symmetry.  (This is not as useful as it might seem since the
+	file must be seekable.)
+
+2005-08-02  Stepan Kasal  <kasal at ucw.cz>
+
+	* Makefile.am (clean-local): That rule contained command
+	  "rm -f intl/po2tbl.sed".  But it seems the subdirectory intl/ is
+	  no longer used.
+	(ACLOCAL_AMFLAGS): Remove again.
+	(EXTRA_DIST): Remove files added by gettextize and files distributed
+	  by default.
+	(DISTCLEANFILES): Add the three intltool-* scripts.
+	* configure.in (GCONFTOOL): Determine by a procedure similar to
+	  what is in gnumeric/configure.in.
+	* thumbnailer/Makefile.am (install-data-local): Fix the rule so that
+	  we pass distcheck.
+	* acinclude.m4, acinclude.m4.am15: Partial cleanup of the comments;
+	  in particular, don't speak as if Automake 1.5 were something new.
+  
+2005-07-11  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output.c (gsf_output_set_name_from_filename): Make this
+	work for NULL filename.
+
+2005-07-30  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=310118
+	* gsf/gsf-msole-utils.c (msole_metadata_write_prop) : be more careful
+	  about NULL strings.  This fixes the crash on export, but there are
+	  still some warnings on import that put us into an inconsistent
+	  state.
+	(msole_prop_parse) : In the LPSTR case use the actual byte size not
+	  the result of the conversion.  If the encoding is off, we ended up
+	  with the wrong size.
+
+2005-07-24  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-msole-utilc.c (msole_prop_parse): Move some g_prints behind
+	  a debug macro.
+	
+2005-07-19  Federico Mena Quintero  <federico at ximian.com>
+
+	* thumbnailer/main.c (main): Oops, remove some leftover debugging code.
+
+	* configure.in: Generate thumbnailer/Makefile.  Add a test for GConf.
+
+	* Makefile.am (SUBDIRS): Added the thumbnailer directory.
+
+	* gsf/gsf-utils.c (gsf_init): Call bindtextdomain() and
+	bind_textdomain_codeset().
+
+	* gsf/gsf-clip-data.c: Mark strings for translation.
+
+	* gsf/gsf-blob.c: Likewise.
+
+	* gsf/gsf-msole-utils.c: Mark strings in GErrors for translation.
+
+	* gsf/Makefile.am (AM_CPPFLAGS): Add the locale directory.
+
+2005-07-19  gettextize  <bug-gnu-gettext at gnu.org>
+
+	* Makefile.am (SUBDIRS): Add po.
+	(ACLOCAL_AMFLAGS): New variable.
+	(EXTRA_DIST): Add config.rpath, m4/ChangeLog.
+	* configure.in (AC_CONFIG_FILES): Add po/Makefile.in.
+
+2005-07-19  Federico Mena Quintero  <federico at ximian.com>
+
+	* configure.in: Pull in intltool and gettext.
+
+	* thumbnailer/gsf-office-thumbnailer.schemas.in: New file with the
+	schemas for the thumbnailer.
+
+2005-07-18  Federico Mena Quintero  <federico at ximian.com>
+
+	* thumbnailer/main.c: New file with a very simple GNOME
+	thumbnailer for MS Office files.  This will grow to something more
+	sophisticated in the future.
+
+	* thumbnailer/Makefile.am: New file.
+
+	I'll add this subdir to the build tomorrow, when I get the GConf
+	bits right for configure.in.
+
+2005-07-18  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_doc_free): In the description, remove
+	the reference to the nonexistent gsf_xml_in_doc_prep.
+
+2005-07-07  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* msvc/.cvsignore:
+	* msvc/README:
+	* msvc/config.dsp:
+	* msvc/install.pl:
+	* msvc/autom4te.hack: New
+	Include a hacked version autoheader that doesn't need a posix
+	environment. The whole MSVC building process is now posix-
+	independent.
+
+2005-07-06  Federico Mena Quintero  <federico at ximian.com>
+
+	* gsf/gsf-blob.[ch]: New files with a GsfBlob object, used to hold
+	generic binary data.
+
+	* gsf/gsf-clip-data.[ch]: New files with a GsfClipData object,
+	used to hold the VT_CF property data.
+
+	* gsf/gsf-msole-utils.c (parse_vt_cf): New function; creates a
+	GsfClipData for the resulting GValue.
+	(msole_prop_parse): Handle the VT_CF property.
+
+	* gsf/gsf-utils.h (GSF_ERROR): Add a generic error quark.
+	(GsfError): Add an enum with generic error values; so far we only
+	have GSF_ERROR_OUT_OF_MEMORY and GSF_ERROR_INVALID_DATA.
+
+	* gsf/gsf-utils.c (gsf_error_quark): Implement.
+
+	* gsf/Makefile.am: Added gsf-blob.[ch] and gsf-clip-data.[ch].
+
+	* doc/gsf-sections.txt: Added sections for GsfBlob and
+	GsfClipData.  Added the GsfError stuff to the "utils" section.
+
+	* doc/gsf-docs.sgml: Add the GsfBlob and GsfClipData sections.
+	Renamed the old "GsfBlob" entity to "GsfStructuredBlob", to match
+	the object to which it refers.
+
+	* doc/tmpl/utils.sgml: Document the GError bits.
+
+	* doc/tmpl/gsf-clip-data.sgml: New file.
+
+	* doc/tmpl/gsf-blob.sgml: New file.
+
+2005-07-05  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-msole-utils.c (msole_metadata_write_prop): Fix
+	VT_FILETIME export.
+
+2005-07-01  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-memory.c (gsf_output_memory_vprintf): Don't use a
+	va_list twice as an argument.  (The standard does not allow that.)
+	Fixes i86_64 problems and was found by Jean.
+
+	* gsf/gsf-utils.c (gsf_mem_dump_full): Kill a warning.
+
+2005-06-30  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_iconv_get_codepage_string_list) :
+	  Add 0x8001 as a synonym for 1252 as per the OOo docs.  I wish there
+	  was something more normative than that.
+
+	* gsf/gsf-docprop-vector.c : remove custom GTypeValueTable it was
+	  wrong and unnecessary.  This fixes the leak of the GValueArray
+
+2005-06-30  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* win: Rename to msvc
+	* msvc: Add MSVC build files, see msvc/README for
+	  details.
+
+2005-06-23  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* configure.in: Check for the existence of S_ISREG,
+	  if it is not defined (e.g. MS's PSDK), do 
+	  it ourself.
+
+2005-06-21  Ivan, Wong Yat Cheung  <email at ivanwong.info>
+
+	* gsf/gsf-input-stdio.c:
+	* gsf/gsf-libxml.c:
+	* gsf/gsf-msole-utils.c:
+	* gsf/gsf-outfile-msole.c:
+	* gsf/gsf-outfile-stdio.c:
+	* gsf/gsf-output-stdio.c:
+	* gsf/gsf-timestamp.c:
+	* gsf/gsf-utils.h
+	* gsf-win32/gsf-input-win32.c:
+	* gsf-win32/gsf-output-win32.c: Remove all #warning. That is
+	  a gcc only directive. Use /* FIXME FIXME FIXME Blah Blah */ instead.
+	  Remove all _MSC_VER, which are either unnecessary or not belong
+	  there.
+
+2005-06-13  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse): Use g_value_set_uint64
+	and g_value_set_int64 where appropriate.
+	(msole_prop_cmp): Handle offsets larger than int.
+
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.12.1
+
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_lid_to_codepage) : codepages are
+	  signed.
+	(gsf_msole_iconv_win_codepage) : ditto.
+	(gsf_msole_iconv_open_codepages_for_export) : ditto.
+	(gsf_msole_iconv_open_codepage_for_export) : ditto.
+	(gsf_msole_iconv_get_codepage_string_list) : ditto.
+	  -535(uint16) == 65001
+
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-impl-utils.h (GSF_DYNAMIC_CLASS_FULL) : remove useless
+	  trailing backslash that was confusing gtk-doc
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new_valist) : new.
+	(gsf_output_stdio_new_full) Use it here.
+	(gsf_output_stdio_new) : And use that here.
+	* gsf/gsf-outfile-stdio.c (gsf_output_stdio_new_valist) : new.
+	(gsf_outfile_stdio_new_full) Use it here.
+	(gsf_outfile_stdio_new) : And use that here.
+
+2005-06-10  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_out_add_enum): New function.
+
+2005-06-08  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Test
+	directory-ness of the right mode.
+
+2005-06-04  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-output.h (gsf_output_vprintf): Add the function attribute
+	  G_GNUC_PRINTF (2, 0).  Add the same to various static *vprintf
+	  funtions in other files.
+	* gsf/gsf-output-csv.c (gsf_output_cvs_close): The parameter is
+	  unused, mark it as such.
+
+	* .cvsignore: Add gtk-doc.make; remove gsf-config; replace stamp-h
+	and stamp-* by stamp-h*.
+
+2005-06-03  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-utils.h (gsf_init_dynamic) : new hook.  Unimplemented yet.
+
+	* gsf/gsf-impl-utils.h (prefix) : use a cleaner pattern for the
+	  dynamic type/interface declarations.
+
+2005-06-02  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_vt_name) : suppress warning
+	(msole_prop_parse) : assign the right type.
+
+2005-06-02  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-outfile-zip.c (zip_flush): Check for Z_BUF_ERROR case.
+	This is the cause of AbiWord bug #7652
+	
+2005-06-02  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_out_add_float): Use "C" locale
+	conventions.  Fix ambiguities in docs.
+
+2005-06-01  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_read): Only trigger the
+	truncated-file check after we have added a single NUL byte.
+	(check_header): Avoid overflows.
+
+2005-05-31  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_read) : get upset when an input
+	  file is truncated.
+	(check_header) : Add a heuristic to warn about files with > 1000:1
+	  compression ratios.  It is crude but likely to catch the worst
+	  truncated files were we're using data rather than a trailer by
+	  accident.
+
+2005-05-31  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_parse) : add some protection.
+
+2005-05-30  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_metadata_write_section) : warning
+	  suppression.
+	(msole_prop_parse) : it seems GValue needs to be a G_OBJECT in order
+	  for it to be unrefed.
+
+2005-05-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-docprop-vector.c (gsf_docprop_vector_finalize) : patch leak.
+
+2005-05-25  Morten Welinder  <terra at gnome.org>
+
+	* configure.in (CFLAGS): Don't use -Wcrazy.
+
+2005-05-15  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Enable a number of additional warnings (when available)
+	for which the current code base is already virtually clean.
+	Ensure at link time that the shared objects, contain complete
+	dependency information for all symbols they use from elsewhere.
+
+2005-05-10  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2005-05-09  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.12.0
+
+2005-05-08  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (ole_bytes_left_in_block) : As per Stuart
+	  Cunningham from the AAF group the header is always bb.size.
+	(gsf_outfile_msole_new_full) : ditto.  pad the header with zeros.
+
+2005-05-08  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_start_element) : Do not check for a
+	  namespace we have not seen yet.  Fixes crash when reading OOo 2.0
+	  with the dtd from 1.0
+
+2005-05-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_check_ns) : Add some safety.
+
+2005-05-04  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_vt_name) : handle sparse entries.
+
+2005-05-03  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_metadata_write) : complete rewrite.
+	  Just write the properties then seek back to fill in the offsets
+	  rather than measuring then writing.
+	(cb_count_props) : new. collect builtin vs user defined props
+	 from the hash.
+	(msole_metadata_write_section) : new. write the props and collect the
+	  offsets and ids.  Handle linked props, vectors and variant vectors.
+	(msole_metadata_write_prop) : Adds padding to the simple types.
+	(gvalue_to_msole_vt) : map from a GValue to a variant type.  Be smart
+	  about handling boxed types, and check vectors to see if they are
+	  fixed type vs variant.  Use the table of builtin types if possible
+	  to deal with ambiguities.
+	(cb_write_dict) : new.
+	(msole_vtname) : new util to get debug name.
+
+2005-04-27  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_property_settings_collect,
+	gsf_property_settings_collect_valist, gsf_property_settings_free):
+	New functions.
+
+	* gsf/gsf-outfile-zip.c (gsf_outfile_zip_new): Move guts into
+	gsf_outfile_zip_constructor.
+	(gsf_outfile_zip_constructor): New function.
+	(gsf_outfile_zip_class_init): Link in gsf_outfile_zip_constructor.
+	Add entry-name and sink properties.  In the process separate
+	filenames from gsf_output_name which is UTF-8 encoded.
+	(stream_name_write_to_buf): Greatly simplify using GString.
+
+	* gsf/gsf-infile-zip.c: New property "source".  Install a proxy
+	layer between the zip file and the source so we don't dup
+	GsfInputStdio or GsfInputGnomeVFS objects (which is expensive and
+	subject to lots of problems).
+
+2005-04-26  Morten Welinder  <terra at gnome.org>
+
+	* tests/test-cp-zip.c (clone): Be a bit verbose.  Make the copy
+	use the compression levels of the source.
+
+	* gsf/gsf-outfile-zip.c: Add construct-only compression-level
+	property.
+	(gsf_outfile_zip_set_compression_method): Make this an empty stub
+	and deprecate.
+
+	* gsf/gsf-zip-utils.c (gsf_vdir_add_child): Do not sort because
+	doing so breaks copying of OOo files.
+
+	* gsf/gsf-infile-zip.c: Add readable compression-level property.
+	(vdir_child_by_index): simplify.  (This is really use
+	g_slist_nth_data, modulo pointer types.)
+
+2005-04-26  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (cb_measure_props) : handle custom props for
+	  ints and uints.
+
+2005-04-26  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_gsf_name_to_prop) : fix my silliness
+	(check_variant) : new.
+	(cb_measure_props) : renamed from add_props.  Signature changed to
+	  match the new foreach semantics.  Some initial work on handling
+	  variant vectors vs single type vectors.  Removed nasty kludge for
+	  DocumentParts and HeadingPairs.
+
+	* gsf/gsf-docprop-vector.c (gsf_value_get_docprop_vector) : Use
+	  g_value_get_object and clarify the docs.
+	(gsf_value_set_docprop_vector) : delete
+	(VAL_IS_GSF_DOCPROP_VECTOR) : new.
+	(IS_GSF_DOCPROP_VECTOR) : adjust to use the std GObject semantics
+
+2005-04-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-doc-meta-data.h (gsf_doc_prop_new) : new
+	(gsf_doc_prop_free) : new
+	(gsf_doc_prop_swap_val) : new
+
+	* gsf/gsf-msole-utils.c : disable the debug spew
+
+2005-04-22  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Use m4 macros for version numbering.
+
+2005-04-16  Jody Goldberg <jody at gnome.org>
+
+	* tests/test-msole1.c : update for the new ms-ole property import api
+
+	* gsf/gsf-msole-utils.c : disable debug spew
+	(msole_prop_id_to_gsf) : flag links
+	(msole_prop_read) : store the property directly.
+	(msole_prop_store) : delete.
+
+2005-04-16  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-docprop-vector.c (gsf_value_get_docprop_varray) : Add some
+	  safety.
+
+2005-04-16  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-doc-meta-data.[ch] : Major interface changes to make the
+	  hash like behavior perfectly clear, and to support links.
+
+2005-04-16  Jody Goldberg <jody at gnome.org>
+
+	* doc/gsf-sections.txt :  update
+
+2005-04-12  Morten Welinder  <terra at gnome.org>
+
+	* configure.in: revert last change.
+
+2005-04-12  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in: Small changes in the pygtk check, though it's
+	  currently not in use.
+
+2005-04-11  Jody Goldberg <jody at gnome.org>
+
+	* tests/test-msole1.c: Make the test program work.
+
+2005-04-10  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_metadata_write) : replace incessant
+	  if (success) with a 'goto err' and prune more non-C89 var decls
+
+2005-04-09  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile.h : remove G_GNUC_NULL_TERMINATED for now.
+	  we do not want to require glib-2.7
+
+2005-04-09  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-impl.h (new_child) : change the signature to pass in
+	  var_args.  Changed all callers.
+
+	* gsf/gsf-outfile.c (gsf_outfile_new_child_full) : new.
+	(gsf_outfile_new_child) : convert into a wrapper to
+	  gsf_outfile_new_child_full.
+	* gsf/gsf-input.c (gsf_input_error_id) : renamed from gsf_input_error
+	  and a deprecated wrapper with the old name.
+	* gsf/gsf-docprop-vector.c (gsf_value_get_docprop_varray) : new.
+	* gsf/gsf-infile-msvba.c (vba_project_read) : add a few new
+	  signatures.
+
+2005-04-09  Jody Goldberg <jody at gnome.org>
+
+	From Manuel Mausz <Manuel.Mausz at fabasoft.com>
+	* gsf/gsf-msole-utils.c (gsf_msole_metadata_write) : initial
+	  implementation.
+
+2005-04-07  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : bump the library version to indicate api change
+
+2005-04-04  Stepan Kasal  <kasal at ucw.cz>
+
+	* configure.in (LIBGSF_MODULES): This macro was replaced by...
+	(libgsf_reqs, libgsf_gnome_reqs): ... these two shell variables.
+	PKG_CHECK_MODULES from pkconfig-0.16.0 double quotes its arguments,
+	which is an error; using shell variables is a handy workaround.
+	* Makefile.am: Clean up.
+	* test/Makefile.am (LDADD): Use this, instead of the per-target
+	  variables.
+
+2005-04-04  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-csv.c (gsf_output_csv_write_field): Fix auto
+	quoting.
+
+	* gsf/gsf-output-iconv.h: Make GsfOutputIconvClass public.
+	* gsf/gsf-output-impl.h: Make GsfOutputClass public.
+	* gsf/gsf-output-csv.h: Make GsfOutputCsvClass public.
+
+2005-04-03  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Fixed the GNOME support check: "LIBGSF_MODULES" needed
+	to be expanded in the PKG_CHECK_MODULES.
+
+2005-04-01  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-iconv.c: New file.
+	* gsf/gsf-output-csv.c: New file.
+
+	* gsf/gsf-output.c (gsf_output_dispose): Silently close if needed.
+
+2005-04-01  Stepan Kasal  <kasal at ucw.cz>
+
+	s/INCLUDES/AM_CPPFLAGS/  "automake -Wall" has told me this.
+
+	* configure.in: More sophisticated check for zlib, an improved
+	  version of the check in gnumeric (to be removed soon from there),
+	  which in turn was inspired by libxml2's configure.in.
+	  Require Autoconf 2.54 and other cosmetic changes.
+	* autogen.sh: Require Autoconf 2.54 and other cosmetic changes.
+
+2005-03-31  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output.c (gsf_output_set_error): Make public.
+
+	* */*.c: Don't test for NULL before g_free.
+
+	* gsf/gsf-utils.h (GSF_LE_GET_GINT64, GSF_LE_SET_GINT64,
+	GSF_LE_SET_GUINT64): New macros for completeness.
+
+2005-03-29  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-impl-utils.h (GSF_PARAM_STATIC): Define suitably.
+	* gsf/*.c: Use GSF_PARAM_STATIC for properties.
+
+	* configure.in: Don't check for readline and lstat.  Do check for
+	mode_t.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Again use mode_t
+	for saved umask.
+
+2005-03-28  Morten Welinder  <terra at gnome.org>
+
+	* */*.c: Use canonical property names.
+
+2005-03-25  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_close): In case of
+	error, simply unlink the temporary file and leave the target file
+	alone.
+
+	* gsf/gsf-output-gzip.c (gzip_output_block): If we cannot write to
+	the sink, set an error for ourself.
+	(gzip_flush): If we get a compression failure, set an error for
+	ourself.
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_class_init): Install
+	set_property, get_property, and constructor methods.
+	(check_header): Allow skipping the header.  Allow getting
+	uncompressed size from construction property.
+	(gsf_input_gzip_read): Allow having to trailer.
+	(gsf_input_gzip_dup): Cleanly construct the new object.
+
+	* gsf/gsf-output-gzip.c (gsf_output_gzip_class_init): Rename
+	"container" property to "raw" with opposite semantics.
+
+2005-03-25  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-gzip.c (gsf_output_gzip_set_property): Handle
+	NULL sink better.
+	(gsf_output_gzip_new): Don't bother closing the output on error.
+
+	* gsf/gsf-output.c (gsf_output_dispose): Renamed from _finalize.
+	Don't complain when a stream with an error is not closed -- just
+	silently close it.
+	(gsf_output_class_init): Hook up for _dispose instead of
+	_finalize.
+
+	* gsf/gsf-output-gzip.c (gsf_output_gzip_close): Do nothing for a
+	stream with an error.
+
+2005-03-25  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-gzip.c (gsf_output_gzip_class_init): Install
+	set_property, get_property, and constructor methods.
+	(gsf_output_gzip_constructor): Allow skipping the gzip header.
+	(gsf_output_gzip_close): Allow skipping the tail.
+
+2005-03-24  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_access): Renamed from
+	file_is_writable.  Make it a full access wrapper.  Caller changed.
+
+2005-03-23  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_filename_to_utf8): Make this sane (which it
+	never was).  We no longer use this, but keep it around.
+	(gsf_extension_pointer): Fix this for Win32.
+
+2005-03-23  Ivan, Wong Yat Cheung <email at ivanwong.info>
+
+	* gsf/gsf-msole-utils.c: Add new function
+	gsf_msole_iconv_get_codepage_string_list() which returns all
+	possible names of a codepage given a codepage number. This helps
+	gsf_msole_iconv_open_codepage_for_(im|ex)port().
+	* gsf-win32/Makefile.am: some more minor changes so that
+	libgsf_win32_1_la can be built as dll.
+
+2005-03-23  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (follow_symlinks): Handle lack of ELOOP.
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new): g_open has a
+	mandatory mode arg that open does not.
+
+2005-03-22  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-libxml.c (close_tag_if_neccessary): New function.
+	(gsf_xml_out_add_cstr_unchecked, gsf_xml_out_add_cstr): Use
+	close_tag_if_neccessary.  Patch from #167166.
+
+2005-03-22  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Conditionalize
+	owner/group stuff on HAVE_CHOWN.  Use file_is_writable.
+	(file_is_writable): New function.
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new): Use f_open, not
+	open.
+
+	* gsf/gsf-outfile-stdio.c (gsf_outfile_stdio_new): Simplify using
+	g_mkdir.
+
+	* configure.in: Require glib 2.6 for g_filename_display_name.
+
+	* gsf/gsf-output-stdio.c (rename_wrapper): Use g_rename and
+	g_unlink.
+	(gsf_output_stdio_new): Use g_stat.  Fix error message.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek): Don't call perror.
+	(struct GsfInputStdio): Add filename member.
+	(gsf_input_stdio_finalize): Free filename member.
+	(gsf_input_stdio_dup): Use filename member.
+	(gsf_input_stdio_new): Fix error messages; initialize filename
+	member; use g_fopen to open file.
+
+	* gsf/gsf-docprop-vector.c: Fix includes.
+
+	* gsf/gsf-infile-stdio.c (gsf_infile_stdio_new): Simply using
+	glib's GDir stuff.  (This should fix Win32 in the process.)
+
+2005-03-05  Jody Goldberg <jody at gnome.org>
+
+	Patch from Frank Chiulli
+	* gsf/Makefile.am : Add gsf-docprop-vector
+	* gsf/gsf-docprop-vector.{c,h} : new files to add vector support
+	* tests/test-msole1.c (print_property) : support for vectors
+	* gsf/gsf-msole-utils.c (msole_prop_parse) : ditto
+
+2005-02-02  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-gnomevfs.c: A bit more robustness and documentation
+	for bug 159442.
+	
+2005-01-16  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-gnomevfs.c: This should fix bug 159442 by truncating 
+	newly-created files whenever possible WHILE preserving file permissions.
+	
+2004-09-25  Stepan Kasal <kasal at ucw.cz>
+
+	* gsf/gsf-output-stdio.c: Use g_file_read_link() - (bug 149827)
+	
+2004-12-02  Dom Lachowicz <cinamod at hotmail.com>
+	
+	* gsf/gsf-input-memory.c: Add mmap support on win32 (bug #160294)
+	* gsf/gsf-shared-memory.c: Ditto 	
+	
+2004-12-06  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2004-12-06  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.11.1
+
+2004-12-05  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_close): Flush file if
+	we don't close it.
+
+2004-12-01  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Make sure new
+	files end us with as lose permissions as the umask says.
+	[#159331]
+	(rename_wrapper): New function to hide the fact that Win32's
+	rename does not unlink the target file if it exists.  [#160108]
+
+2004-11-28  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : Post release bump
+
+2004-11-28  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.11.0
+
+2004-11-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse) : NULL unhandled types
+
+2004-11-25  Sven Herzberg  <herzi at gnome-de.org>
+
+	* gsf-gnome/gsf-output-gnomevfs.c: (gsf_output_gnomevfs_new_uri):
+	truncate the output file to length 0 when opening (fix #159442)
+
+2004-11-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_close) : add a hook to
+	  accept existing FILE*
+	(gsf_output_stdio_new_FILE) : new.
+	
+2004-11-19  Veerapuram Varadhan <vvaradhan at novell.com>
+
+	* Add gsf/gsf-meta-names.h
+
+	* gsf/gsf-doc-meta-data.[ch] (gsf_get_prop_val,
+	gsf_get_prop_val_str): new
+	(gsf_doc_meta_data_get_prop) : return GsfDocProp instead of
+	GsfDocMetaData.  Caller should release the return value.
+
+	* gsf/Makefile.am : Add gsf-meta-names.h to the list of headers.
+	
+2004-11-16  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_start_element) : Check the unknown
+	  handler if we come across something that has not been registered
+	  yet.
+	(gsf_xml_in_doc_set_unknown_handler) : new.
+	(gsf_xml_in_doc_new) : split part of this out into
+	(gsf_xml_in_doc_extend) : here, so that we can add nodes to a
+	  description later.
+
+2004-11-12  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_out_add_cstr): Escape 1..31 when used
+	in attributes.
+
+2004-11-02  Jody Goldberg <jody at gnome.org>
+
+	* tests/test-msole1.c (test) : fix leak and use
+	  gsf_msole_metadata_read_real.
+
+	* gsf/gsf-msole-utils.c (gsf_msole_metadata_read) : store them in
+	  GsfDocProp
+	(gsf_msole_metadata_read_real) : renamed from gsf_msole_metadata_read
+	(gsf_msole_metadata_read) : a quick stub to avoid creating a leak in
+	  existing calls to this routine.
+
+2004-11-02  Jody Goldberg <jody at gnome.org>
+
+	From Frank
+	* gsf/gsf-msole-utils.c (gsf_msole_metadata_read) : store the
+	  properties
+	* tests/test-msole1.c (test) : dump the properties
+	* gsf/Makefile.am : Add gsf-doc-meta-data.c to the build
+	* gsf/gsf-doc-meta-data.c (gsf_doc_meta_data_set_prop) : init
+	  the GValue before we assign.
+
+2004-09-20  Morten Welinder  <terra at gnome.org>
+
+	* gsf/*.c: Remove useless casts of 0 to gsf_off_t in parameters.
+
+	* gsf/gsf-output.c (gsf_output_set_name_from_filename): New function.
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Use
+	gsf_output_set_name_from_filename.
+	* gsf/gsf-outfile-stdio.c (gsf_outfile_stdio_new): Use
+	gsf_output_set_name_from_filename.
+
+	* gsf/gsf-input.c (gsf_input_set_name_from_filename): New function.
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new): Use
+	gsf_input_set_name_from_filename.
+	* gsf/gsf-infile-stdio.c (gsf_infile_stdio_new): Use
+	gsf_input_set_name_from_filename.
+
+	* gsf/gsf-infile-zip.c (zip_update_stream_in): Add seek error check.
+	(gsf_infile_zip_read): Ditto.
+
+2004-09-19  Dom Lachowicz <cinamod at hotmail.com>
+
+	* configure.in: Morten's VFS local copy requires VFS >= 2.2. Upgrade configure check.
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new_uri): Follow symlinks similarly to the STDIO input
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new): Convert file name to UTF8
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Convert file name to UTF8
+	* BUGS: remove above
+	
+2004-09-17  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-infile-zip.c (zip_find_trailer): Fix gsf_input_seek
+	check.
+
+	* gsf/gsf-input.c: Doc fixes, notably reversing the sense of
+	gsf_input_seek_emulate's return value.
+
+2004-09-17  Morten Welinder  <terra at gnome.org>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new_uri):
+	Force local copy for small (<256KB) files that are not local.
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_new): Add a proxy layer
+	so we don't have to dup files or net connections.
+
+	* gsf/gsf-input.c (gsf_input_dup): Provide error messages.
+
+	* gsf/gsf-input-proxy.c (gsf_input_proxy_read): gsf_input_read
+	updates our position so we should not.
+
+	* gsf/gsf-input-proxy.[ch]: New file.
+
+2004-09-16  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-input-textline.c (gsf_input_textline_dup): Set size.
+
+	* gsf/gsf-input-memory.c (gsf_input_memory_dup): Set size.
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_seek): Ugly
+	work-around for gnome-vfs bug.
+
+	* gsf/gsf-input.c (gsf_input_dup): Check size and seek return
+	value.
+
+	* gsf/gsf-infile.c (gsf_infile_child_by_name): Protect against
+	NULL input name.
+	(gsf_infile_child_by_index): Ditto.
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_new_child): Handle
+	failure to dup.
+	(ole_info_get_sb_file): Handle failure to dup.
+	(gsf_infile_msole_new_child): Handle failure from
+	ole_info_get_sb_file.
+
+2004-09-15  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-win32/gsf-input-win32.c: Create more meaningful error messages
+	from HRESULTs.
+	* gsf-win32/gsf-output-win32.c: Ditto. Add error reporting.
+
+2004-08-27  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-outfile-zip.c (gsf_outfile_zip_seek): Use G_GNUC_UNUSED.
+	* gsf/gsf-output-gzip.c (gsf_output_gzip_seek): Likewise.
+	* gsf/gsf-structured-blob.c (blob_dup): Likewise.
+	* gsf/gsf-input-textline.c (gsf_input_textline_dup): Likewise.
+	* gsf/gsf-input-memory.c (gsf_input_memory_dup): Likewise.
+	(gsf_input_mmap_new): Remove useless #warning.
+
+2004-08-26  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-shared-memory.c (gsf_shared_memory_finalize): Don't
+	check size overflow here.
+	(gsf_shared_memory_mmapped_new): Check it here.  Return NULL if we
+	don't have mmap.
+
+	* gsf/gsf-timestamp.c (gsf_value_set_timestamp): Renamed from
+	g_value_set_timestamp.
+
+2004-08-25  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close_root): Be careful
+	  with empty files (fixes bug #150923).
+
+2004-08-25  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_base64_encode_step): Avoid potential
+	rounding error.
+
+	* gsf/gsf-input-bzip.c (gsf_input_memory_new_from_bzip): Kill
+	pointless #warning.
+
+2004-08-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_out_add_cstr) : Add some libxml compat
+	  behavior and ignore NULLs
+	(gsf_xml_out_add_cstr_unchecked) : ditto
+
+2004-08-17  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-utils.c (BASE64_LINE_LEN): New constant to determine
+	  the line length, my mbox indicates that 76 is commonly used.
+	(gsf_base64_encode_simple): Use it.
+	(gsf_base64_encode_step): Use it too; remember that `already'
+	  holds line length / 4.
+	(gsf_base64_encode_close): Don't add '\n' if not necessary.
+
+2004-07-29  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_new_full): One more sanity
+	  check, bb.size has to be at least DIRENT_SIZE.
+	(gsf_outfile_msole_close_root): For non-root dirs, don't set
+	  FIRSTBLOCK to DIRENT_MAGIC_END, it is BAT_MAGIC_END_OF_CHAIN; though
+	  both are -1.  Explanation: BAT_MAGIC_END_OF_CHAIN is of type ``block
+	  number'' while DIRENT_MAGIC_END is of type ``dirent number''.
+
+2004-08-20  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump
+
+2004-08-20  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.10.1
+
+2004-08-17  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-utils.c (gsf_base64_decode_simple): Revert base64
+	initialization change.
+
+2004-08-16  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_base64_encode_simple): Request line
+	breaking.
+
+2004-08-13  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-utils.c (gsf_base64_decode_simple): Initialize during
+	first use.
+
+2004-08-10  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-input-textline.c (gsf_input_textline_utf8_gets): Fix
+	off-by-one in buffer length check.
+
+2004-08-08  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-output-stdio.c (follow_symlinks, gsf_output_stdio_new): 
+	Use g_error_new_literal, not g_error_new on strings which we do
+	not control.
+
+2004-07-30  Christopher James Lahey  <clahey at ximian.com>
+
+	* gsf/gsf-input.c (gsf_input_class_init), gsf/gsf-output.c
+	(gsf_output_class_init): Use correct types for properties here.
+
+2004-07-30  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_out_class_init) : Init the parent_class
+	  here.
+	(gsf_xml_out_init) : not here.
+
+2004-07-27  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_new_full):
+	  Fix a race condition with a static buffer.
+	  Write correct sb.shift to the header, even if it differs
+	  from the default.
+
+2004-07-29  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (ole_bytes_left_in_block) : sigh.
+	  Pull my head out of my rearend.  a one line function with two
+	  errors.  I really shouldn't code when tired.
+	(ole_pad_zero) : remove residual parm rename ole_ from bb_
+	(ole_pad_bat_unused) : add a residual parm.
+	(gsf_outfile_msole_close_root) : pad metabat with BAT_UNUSED
+
+2004-07-29  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new): Use NULL, not 0 for
+	pointer.
+	(gsf_input_memory_seek): Use G_GNUC_UNUSED instead of
+	void-casting.
+
+	* gsf/gsf-libxml.c (gsfXMLInParser): Ditto.
+	(gsf_xml_in_get_entity, gsf_xml_in_warning, gsf_xml_in_error,
+	gsf_xml_in_fatal_error): Use G_GNUC_UNUSED instead of
+	void-casting.
+	(gsf_xml_out_add_color): Make buffer size overflow safe.
+
+	* gsf/gsf-utils.c: Always #define G_ARMFLOAT_ENDIAN.
+
+2004-07-28  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close_root):
+	  Check for overflow of the size field of a regular file entry.
+
+2004-07-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (bb_pad_zero) : add a residual param to not
+	  fill the entire block if desired and clarify that the current block
+	  is cur_size - HEADER not block_size.
+	(gsf_outfile_msole_close_root) : Clarify the metabat writing logic a
+	  bit and just in case add a CHAIN_END to the last incomplete metabat
+	(ole_bytes_left_in_block) : similar to Kasal's suggestion without the
+	  -1 % size + 1 
+	(bb_pad_zero) : use it here to make this safe to use when not at the
+	  end of the file.
+	(ole_pad_bat_unused) : and here to fix the mystery corruption when XL
+	  reads the file.
+
+2004-07-27  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close_root) : the last
+	  xbat does not require a forwarding link
+
+2004-07-27  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-outfile-msole.c (metabat_size): Nuke; doesn't have to
+	  be an instance variable, it can be local ...
+	(gsf_outfile_msole_close_root): ... here.
+	(gsf_outfile_msole_set_block_shift): Don't set metabat_size.
+
+2004-07-26  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (OLE_DEFAULT_METABAT_SIZE): delete
+	(gsf_outfile_msole_close_root) : pull out of
+	(gsf_outfile_msole_close) : here as a cleanup gesture.
+
+	Per : Stepan Kasal  <kasal at ucw.cz>
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_set_block_shift) : Use
+	  BAT_INDEX_SIZE, not hardwired shift of 2.
+	(gsf_outfile_msole_close): Use the current sb.shift, not
+	  OLE_DEFAULT_SB_SHIFT.
+
+2004-07-23  Stepan Kasal  <kasal at ucw.cz>
+
+	Replace various instances of local parent_class variables by
+	a static ones, initialized by class_init.
+	* gsf/gsf-*.c: (20 files touched)
+	* gsf/gsf-output-transaction.c: A general cleanup.
+
+2004-07-21  Stepan Kasal  <kasal at ucw.cz>
+
+	The gsf_ouput_printf method didn't correctly update cur_offset.
+
+	The implementations of vprintf virtual method shouldn't touch
+	cur_offset but they should return the number of bytes written;
+	the dispatcher updates cur_offset accordingly.
+
+	* gsf/gsf-output-impl.h (Vprintf): The virtual private method now
+	  returns number of bytes printed.
+	* gsf/gsf-output.c (gsf_output_vprintf): Renamed to ...
+	  (gsf_output_ireal_vprintf): ... this.
+	  (gsf_output_printf): Collect the va_list and call ...
+	  (gsf_output_vprintf): ... this new function, which dispatches
+	  the Vprintf virtual method and takes care of updating cur_offset
+	  and cur_size, via ...
+	  (gsf_output_inc_cur_offset): ... a new static function, extracted
+	  from ...
+	  (gsf_output_write): ... there.
+	  (gsf_output_real_vprintf): In this fallback code, don't call
+	  gsf_output_write, but only dispatch to the Write virual method,
+	  so that gsf_output_inc_cur_offset is not called twice.
+	* gsf/gsf-output.h (gsf_output_vprintf): New public method.
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_vprintf): Adapt.
+	* gsf/gsf-output-transaction.c (gsf_output_trans_vprintf): Likewise.
+	* gsf/gsf-outfile-msole.c (gsf_output_class): New static variable,
+	  which is set to point to GsfOutput class structure.
+	  (gsf_outfile_msole_vprintf): Adapt. If it's a MSOLE_BIG_FILE,
+	  call vprintf method of the underlaying file, else fall back to
+	  gsf_output_class->Vprintf.
+	* gsf/gsf-output-memory.c (parent_class): New static variable.
+	  (gsf_output_memory_vprintf): Use it too. Adapt to the new prototype.
+	
+2004-07-21  Stepan Kasal  <kasal at ucw.cz>
+
+	Make the two fseek() wrappers more consistent.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek): Fix the overflow
+	  checking.
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek): Set errno=0
+	  before calling fseek().
+
+2004-07-21  Stepan Kasal  <kasal at ucw.cz>
+	
+	Gnomish autogen.sh uses ACLOCAL_FLAGS, if some of the macros are
+	in nonstandard places.  If you touch configure.in then, aclocal.m4
+	is regenerated, but without ACLOCAL_FLAGS.  This change ensures
+	that ACLOCAL_FLAGS is propagated to the Makefile.
+
+	* configure.in: AC_SUBST(ACLOCAL_FLAGS)
+	* Makefile.am: ACLOCAL_AMFLAGS = @ACLOCAL_FLAGS@
+	
+2004-07-20  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-output-stdio.c: Check for overflow
+	
+2004-07-09  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-infile-zip.c (zip_find_trailer): Remove the
+	  "overflow check"; it can never catch anything.
+
+	* gsf/gsf-output-memory.c (MAX_STEP): Parenthesize.
+	(gsf_output_memory_expand): Fix the overflow checking.
+	(gsf_output_memory_seek): make use of G_GNUC_UNUSED, instead of void
+	 reference.
+
+2004-07-12  Stepan Kasal  <kasal at ucw.cz>
+
+	* gsf/gsf-output-iochannel.c (GET_OUTPUT_CLASS): Remove unused macro.
+	* gsf/gsf-structured-blob.c (GET_CLASS): Likewise.
+
+2004-06-15  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_input_dump) : flush the stream when we're just
+	  using stdio.
+
+2004-07-04  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: recheck all PKG_CHECK_MODULES for libgsf for
+	libgsf-gnome as well, so as not to trip on unresolved symbols with a
+	-Wl,-z,defs build.
+
+2004-07-03  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2004-07-03  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.10.0
+
+2004-07-01  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_vprintf) : premature
+	  optimization is the root of all evil.  We can not directly write
+	  small block data because it will be in the wrong place and will miss
+	  the transition to large block.  This is not a hugely common case and
+	  does not need such special attention.
+
+2004-06-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek) : conditionalize the
+	  use of fseeko.
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek) : ditto.
+	* gsf/gsf-outfile-msole.c : Extend Stuart's work to use the internal
+	  block sizes rather than keeping them global.
+
+2004-06-25  Jody Goldberg <jody at gnome.org>
+	For : Stuart Cunningham <stuartc at rd.bbc.co.uk>
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek) : use fseeko
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek) : ditto.
+	* gsf/gsf-outfile-msole.c : rework to honor the requested block sizes
+
+2004-06-15  Morten Welinder  <terra at gnome.org>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new_uri):
+	Don't leak info components.  Handle lack of get_file_info
+	supports.  Rework make_local_copy case.  Work around gnomevfs
+	get_file_info bogosity.
+
+2004-06-13  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : bump to 1.10.0 to handle all the signature changes in
+	  return values.
+	* *.[ch] : return the interesting base type rather than the derived
+	  type for *_new.
+
+2004-06-11  Morten Welinder  <terra at gnome.org>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new): Change
+	return type to plain GsfInput*.
+	(gsf_input_gnomevfs_new_uri): Change return type to plain
+	GsfInput*.  If seek is not supported, snarf a local copy.
+
+2004-06-06  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new): Better
+	solution for Morten's problem.
+	
+2004-05-26  Morten Welinder  <terra at gnome.org>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new): Handle
+	failure to parse URI.
+
+2004-05-20  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-outfile-stdio.c: mkdir() has a different prototype on win32
+
+2004-05-17  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : work around odd files from
+	  softmaker, seems like they consider dirs to be rootdirs ??
+
+2004-05-17  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_le_get_double, gsf_le_set_double): Attempt
+	ARM fix.  Fix various #error messages.
+
+2004-05-15  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2004-05-15  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.9.1
+
+2004-05-11  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_out_set_doc_type) : new.
+
+	* doc/gsf-sections.txt : more cleanup, still ugly but at least it's
+	  somewhat better.
+	* doc/gsf-docs.sgml : drop the useless Gsf section
+
+2004-05-09  Jody Goldberg <jody at gnome.org>
+
+	* s/ZipDirent/GsfZipDirent
+	* s/ZipVDir/GsfZipVDir
+
+2004-05-09  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-infile-zip.c: Don't pollute the global namespace
+	* gsf/gsf-outfile-zip.c: Ditto
+	* gsf/gsf-zip-impl.h: Ditto
+	* gsf/gsf-zip-utils.c: Ditto
+
+2004-05-09  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-infile-stdio.c: Fix non-static definition of 'parent_class'
+	* gsf/gsf-outfile-stdio.c: Ditto
+	
+2004-05-07  James M. Cape <jcape at ignore-your.tv>
+
+	* doc/gsf-sections.txt: Hide type macros.
+	* gsf/gsf-output.c: s/<protected>/<note>/.
+
+2004-05-06  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=141899
+	* doc/Makefile.am : Apply patch from James Cape
+
+2004-05-05  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* doc/Makefile.am: Install docs in the $(DOC_MODULE) subdir of
+	$(HTML_DIR) rather than in $(HTML_DIR) itself.
+
+2004-05-05  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2004-05-04  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.9.0
+
+2004-05-04  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_start_element) : support merging of
+	  content from a node and some of it's children
+	(gsf_xml_in_end_element) : ditto.
+	(gsf_xml_in_characters) : ditto.
+	(sf_xml_in_doc_new) : kludge to support the old interface but still
+	  allow new semantics.
+
+2004-05-01  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new_uri) : Don't
+	require gnome-vfs-method.h
+
+	* gsf-gnome/gsf-output-gnomevfs.c (gsf_output_gnomevfs_new_uri): we
+	require random access.
+
+	* gsf-win32/gsf-input-win32.c: fix seek's return value in the win32 
+	IStream input.
+	
+2004-04-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new_uri) : we
+	  require random access.
+
+2004-04-26  Jody Goldberg <jody at gnome.org>
+
+	* doc/Makefile.am : steal a few things from gtk-doc.make to get things
+	  building.  A full jump to gtk-doc.make directly is failing, dunno
+	  why
+
+	* Makefile.am : Remove the AUTOMAKE_OPTIONS = 1.4 that disabled the
+	  DISTCHECK_CONFIGURE_FLAGS
+
+2004-04-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : placate the bogus
+	  -fstrict-aliasing gods.  gcc is being stupid.
+
+	* configure.in : call this 1.9.0
+
+2004-04-27  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-bzip.c (gsf_output_bzip_write): If the output
+	buffer turns full on the last deflate, empty the buffer.
+	
+2004-04-24  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-gzip.c (gsf_output_gzip_write): If the output
+	buffer turns full on the last deflate, empty the buffer.
+
+2004-04-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_seek) : fix sense
+	  of return.  This code is clearly not being used.  A year and a half
+	  and no one noticed ???
+
+2004-03-31  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Plug leak.
+
+2004-03-31  Michael Meeks  <michael at ximian.com>
+
+	* tests/test-msvba-zip.c (find_match):
+	size limit the matches to the available bits for
+	storing the match length (doh). & make debug nicer.
+
+2004-03-16  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output.c (gsf_output_finalize): Chain up.
+	* gsf/gsf-shared-memory.c (gsf_shared_memory_finalize): Chain up.
+	* gsf-gnome/gsf-shared-bonobo-stream.c
+	(gsf_shared_bonobo_stream_finalize): Chain up.
+
+2004-03-12  Michael Meeks  <michael at ximian.com>
+
+	* gsf/gsf-infile-msvba.c (vba_dir_read),
+	* tests/test-msvba-zip.c (decode_dir):
+	simplify / treat op 9 as the quirk-meister.
+
+2004-03-11  Michael Meeks  <michael at ximian.com>
+
+	* tests/test-msvba-zip.c (decode_dir): better
+	quirk understanding.
+	(find_match): remove unnecessary hacks.
+
+2004-03-10  Michael Meeks  <michael at ximian.com>
+
+	* tests/test-msvba-zip.c (decode_dir): impl.
+	a good run at enterpreting 'dir'.
+	
+	* tests/test-msvba-zip.c (do_compress): bin nasty
+	3 byte header store / restore and generate header
+	on the fly.
+
+2004-03-09  Michael Meeks  <michael at ximian.com>
+
+	* tests/test-msvba-zip.c (find_match): shrink dodgy
+	looking matches.
+
+2004-03-08  Michael Meeks  <michael at ximian.com>
+
+	* tests/test-msvba-zip.c (output_match): add a
+	small/stupid LZSS compressor.
+
+2004-03-08  Michael Meeks  <michael at ximian.com>
+
+	* tests/test-msvba-zip.c: add for compressing/decompressing
+	'dir' (or other pure compressed) streams.
+
+	* gsf/gsf-msole-utils.c (gsf_msole_inflate): move from
+	* gsf/gsf-infile-msvba.c (gsf_vba_inflate): here.
+
+2004-03-01  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : drop -Wmissing-format-attribute because it was
+	  irritating me.
+
+2004-03-01  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-stdio.c :
+	* gsf/gsf-infile-stdio.c : Some utility wrappers to pull or push from
+	  a directory tree.
+	* tests/test-dump-msole.c :
+	* tests/test-restore-msole.c : tests for it.
+
+2004-02-24  Dom Lachowicz <cinamod at hotmail.com>
+
+	* configure.in: Add Win32 stuff
+	* libgsf-win32-1.pc.in: Ditto
+	* Makefile.am: Ditto
+	* gsf-win32/Makefile.am: Win32 build system
+	
+2004-02-05  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Fix typo.
+
+2004-02-05  Tomasz K³oczko <kloczek at pld.org.pl>
+
+	* Makefile.am: Added "DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc"
+	  for force correct pass build documentation during "make dist"
+	  (like in many other GNOME projects).
+	  Added gtk-doc.make to EXTRA_DIST for generate correct tar ball on 
+	  "make dist".
+	* configure.in: Removed old on place defined gtk-doc suport and added use
+	  GTK_DOC_CHECK([1.0]).
+
+2004-01-30  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_fatal_error) : Looks like Daniel has
+	  added another field
+
+2004-01-30  Jody Goldberg <jody at gnome.org>
+
+	http://bugzilla.gnome.org/show_bug.cgi?id=130596
+	* configure.in : apply the patch
+
+Wed Jan 28 00:43:36 2004  Matthias Clasen  <maclas at gmx.de>
+
+	* doc/Makefile.am (EXTRA_HFILES): Add ../gsf-gnome/*.h to give
+	gtk-doc a chance to pick up declarations from there.  (Partial fix
+	for bug #132661.
+
+2004-01-20  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_start_element) : minor portability fix.
+
+2004-01-18  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-msole-utils.c: Country code for Albania is sq_AL not al_AL
+	* gsf-win32/*.c: Some work on the IStream input and output
+	
+2003-12-09  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/*.c: Documentation
+	
+2003-12-06  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msvba.c : Major work.
+	  We can now extract the compressed source for all of our sample
+	  files.  There's still lots of unknowns, but at least the code
+	  is visible now.  The next step will be looking at the p-code
+
+2003-11-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_input_hex_dump) : new.
+	(gsf_mem_dump_full) : expand the interface a bit.
+
+2003-11-03  Jody Goldberg <jody at gnome.org>
+
+	* gsf/Makefile.am (uninstall) : make the impl headers for the base
+	  interfaces public.
+
+2003-10-29  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse) : The anal check should
+	  take the prevailing char width also as noted by Xavier Roche.
+
+	* gsf/gsf-infile-msole.c (ole_init_info) : Doh!  do not double convert
+	  to native endianness.  Fixes error reading files > 13.6 Meg on sparc
+	  and alpha as noted by Xavier Roche.
+
+2003-10-21  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c : Make the codepage arguments int to allow
+	  smooth handling of bogus files that encode the codepage as an int
+	  and break the utf-8 page '65001' because it looks like -535
+
+2003-10-09  Jody Goldberg <jody at gnome.org>
+
+	* libgsf-gnome-1.spec.in : An old patch from Joseph Frazee
+
+2003-09-29  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_new) : as noted by Nick
+	  Lamb a failure should not change the file pos of @input.
+
+2003-09-23  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : downgrade.  No need to force a version bump yet.
+	* gsf/gsf-libxml.c (gsf_xml_parser_context_full) : use a _full version
+	  internally because that seems cleaner than manually tweaking pointers.
+	  However, its a cosmetic change and not worth a version bump.
+
+2003-09-22  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : jump to 1.9.0 for api change.
+
+	* gsf/gsf-libxml.c :  Initialize sax handler correctly to make sure
+	  they work with libxml2 2.6.0.
+	(gsf_xml_parser_context) : take a sax handler and user data so taht we
+	  can initialize it on creation.
+
+2003-09-21  Tor Lillqvist  <tml at iki.fi>
+
+	* libgsf-zip.in: New file.
+	
+	* configure.in: Expand it.
+
+	* Makefile.am (EXTRA_DIST): Distribute it.
+	
+2003-09-13  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump to 1.8.3 for now.
+	  If this becomes the basis for the interleaved write support it will
+	  jump to 1.9 without a release.
+
+2003-09-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.8.2
+
+2003-09-12  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : libole2 depends
+	  on all entries having names.  Hard code 'Root Entry' for the root.
+
+2003-08-24  Dom Lachowicz <cinamod at hotmail.com>
+
+	* win/libgsf.ds*: Add win32 project files, from Jeremy Davis
+	* gsf/*: Some casts and ifdefs to let this puppy build on win32 using
+	MSVC. Also from Jeremy Davis, with some touch-up work by myself.
+	* configure.in: check for <io.h>
+	
+2003-08-03  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c : some initial work to define an interface
+	  for using non-default block sizes.  We're just managing these values
+	  not using them yet.
+
+2003-08-02  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_make_bat) : weaken the post condition
+	  from error -> warning in the event that a BAT is missing a valid
+	  terminator.  We've already loaded a BAT, and we're sure that it is
+	  not too big.  Hopefully this will allow some of the data to be
+	  restored.
+
+2003-08-01  Jody Goldberg <jody at gnome.org>
+
+	For Stuart Cunningham <stuartc at rd.bbc.co.uk>
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_read) : another patch to
+	  fix non-default sector size support.
+
+2003-07-17  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-zip.c (zip_dup) : take an error arg.
+	(zip_child_init) : ditto.
+	(gsf_infile_zip_dup) : use the error from zip_dup and zip_child_init.
+
+	* gsf/gsf-infile-impl.h : Take GError args for child_by_* virtuals.
+	  We can not expose them yet.
+	* gsf/gsf-structured-blob.c (blob_child_by_index) : fix here.
+	(blob_child_by_name) : and here.
+	* gsf/gsf-infile-ar.c : and here.
+	* gsf/gsf-infile-msvba.c : and here.
+
+	* gsf/gsf-infile-msole.c (ole_dup) : catch gsf_input_dup failures
+	  for the underlying source, and take a GError arg.
+	(gsf_infile_msole_dup) : pass the new err arg to ole_dup and use error
+	  from ole_dup directly.  No need to cruft another one up.
+	(gsf_infile_msole_new_child) : Take a GError arg to pass to ole_dup.
+
+2003-07-15  Jody Goldberg <jody at gnome.org>
+
+	For Stuart Cunningham <stuartc at rd.bbc.co.uk>
+	* gsf/gsf-infile-msole.c (ole_get_block) : fix ole block seeking in
+	  4k-sector files
+
+2003-07-03  Jody Goldberg <jody at gnome.org>
+
+	For : Stuart Cunningham <stuartc at rd.bbc.co.uk>
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : store the directory's CLSID
+	(gsf_infile_msole_get_class_id) : new.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : store the CLSID
+	(gsf_outfile_msole_set_class_id) : new.
+	(gsf_outfile_msole_init) : be really anal and ensure the CLSID is 0.
+
+2003-07-02  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_new_child) : Even if a
+	  directory claims to have a size set it to 0.  Thanks to the AAF
+	  people for the test case.
+
+2003-06-28  Jody Goldberg <jody at gnome.org>
+
+	* doc/Makefile.am : fix the case when gtk-doc is not available
+
+2003-06-20  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_read): Handle premature end
+	of stream.
+
+2003-06-21  Jody Goldberg <jody at gnome.org>
+
+	As per ryang at bway.org :
+	* README : s/automake/autoconf/ and add automake details.
+
+2003-06-15  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Remove test for obsolete orbit-python module.
+
+2003-06-09  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* debian/*: Updated debianisation.
+
+2003-06-07  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump
+
+2003-06-07  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.8.1
+
+2003-06-06  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_out_simple_int_element) : new util.
+	(gsf_xml_out_simple_float_element) : ditto.
+
+2003-05-14  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* gsf/Makefile.am: Added $(LIBGSF_LIBS) to libgsf_1_la_LIBADD to get
+	complete inter-library dependency information.
+
+2003-05-13  Dom Lachowicz <cinamod at hotmail.com>
+
+	* COPYING.LIB: update the the version of the LGPL license we're 
+	actually licensed under
+	
+2003-05-13  Dom Lachowicz <cinamod at hotmail.com>
+
+	* libgsf-1.spec.in: Updates from Rui
+	
+2003-05-12  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-output-gzip.c (gsf_output_gzip_finalize): Plug
+	truck-sized leak.
+
+2003-05-12  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump
+
+2003-05-11  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.8.0
+
+2003-04-29  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-win32/gsf-input-istream.[ch]: IStream based input. Untested
+	* gsf-win32/gsf-output-istream.[ch]: IStream based output. Untested
+	
+2003-04-29  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-msole-utils.c
+	(gsf_msole_iconv_open_codepage_for_import): Try MACROMAN as alias
+	for 10000.
+
+2003-04-28  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-msole-utils.c
+	(gsf_msole_iconv_open_codepage_for_import): Remove code
+	duplication.
+
+2003-04-21  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : terminate the name before
+	  conversion.
+
+2003-04-15  Morten Welinder  <terra at gnome.org>
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new): FREEBSD have broken
+	mmap -- we must keep the file descriptor around.
+
+2003-04-09  Jody Goldberg <jody at gnome.org>
+
+	From Xavier Roche <roche at exalead.com>
+	* gsf/gsf-msole-utils.c (msole_prop_parse) : gsize is not always
+	  guinit32.  Fixes sparc-64 problem.
+	* gsf/gsf-infile-msvba.c (vba3_dir_read) : ditto.
+
+2003-04-01  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-impl-utils.h : Add utils for objects in plugins
+
+2003-03-20  Dom Lachowicz <cinamod at hotmail.com>
+
+	* configure.in: Better checks for bz2
+	
+2003-03-20  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-bzip.c (gsf_input_memory_new_from_bzip): Warning
+	killer.
+
+	* gsf/gsf-libxml.c (gsf_xml_in_doc_new): Kill warning.
+
+2003-03-09  Jody Goldberg <jody at gnome.org>
+
+	* Relicense from GPL -> LGPL
+
+2003-03-05  Dom Lachowicz <cinamod at hotmail.com>
+
+	* NEWS: update for correctness and mention AR infile
+	* README: typo police
+	
+2003-03-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c : More morten  warnings
+
+2003-03-05  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-memory.c (gsf_input_memory_seek): Fix return type.
+
+	* gsf/gsf-input.c (gsf_input_seek): Fix failure return.
+
+2003-03-05  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-infile.c (gsf_infile_num_children): Fix failure return
+	value.
+	(gsf_infile_name_by_index): Ditto.
+	(gsf_infile_child_by_index): Ditto.
+	(gsf_infile_child_by_name): Ditto.
+	* gsf/gsf-outfile.c (gsf_outfile_new_child): Ditto.
+
+2003-03-04  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-zip-impl.h: s/off_t/gsf_off_t
+	* gsf/gsf-infile-ar.[ch]: AR infile. DOES NOT YET WORK
+	
+2003-02-23  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input.c (gsf_input_copy): remove == TRUE for Morten
+	
+2003-02-22  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input.c (gsf_input_uncompress): Support uncompressing BZ2
+	streams as well, optionally
+	
+2003-02-22  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-bzip.c: Restructure things so that it's possible to
+	build without bzip2 support
+	
+2003-02-22  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input-textline.c: Replace g_realloc with g_renew
+	* gsf/gsf-output-memory.c: Ditto
+	
+2003-02-21  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input-bzip.c: Implement this
+	* gsf/gsf-input-memory.[ch]: New function: gsf_input_memory_new_clone
+	* gsf/Makefile.am: Build bz2 importer, distribute header
+	* tests/test-bzip.c: New test
+	* tests/Makefile.am: Add new test
+	
+2003-02-20  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input-bzip.[ch]: Stubs for a BZ2 input I'm working on
+	
+2003-02-18  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input.c (gsf_input_class_init): Install GObject properties
+	(gsf_input_get_property): Ditto
+	(gsf_input_set_property): Ditto
+
+	* gsf/gsf-output.c (gsf_output_class_init): Install GObject properties
+	(gsf_output_get_property): Ditto
+	(gsf_output_set_property): Ditto
+	
+2003-02-14  Dom Lachowicz <cinamod at hotmail.com>
+
+	* configure.in: Emit a warning instead of breaking if VFS and Bonobo
+	aren't found, but --without-gnome wasn't specified. Makes the KDE folk
+	happy.
+	
+2003-02-11  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : compartmentalize the bzip config tests, and trust
+	  libtool for the dependent libraries enough to not mention them in
+	  the pkg-config file
+
+	* gsf/gsf-output-bzip.c : improve the conditionalization.
+
+	* gsf/gsf-input-iochannel.c (gsf_input_memory_new_from_iochannel) :
+	  warning suppression.
+
+2003-02-09  Dom Lachowicz <cinamod at hotmail.com>
+
+	* configure.in: Changes to (optionally) compile bz2 functionality
+	* Makefile.am: Ditto
+	* gsf/Makefile.am: Ditto
+	* tests/Makefile.am: Ditto
+	* gsf/gsf-output-bzip2.c: Changes to optionally compile parts of this
+	
+2003-02-09  Dom Lachowicz <cinamod at hotmail.com>
+
+	* tests/test-out-bzip.c: Tester for new BZip2 output
+	* gsf/gsf-impl-utils.h: Correct typo
+	* gsf/gsf-output-gzip.c: Fix memory leak (leaked buffer)
+	* gsf/gsf-output-bzip.[ch]: New output class, not currently built
+	
+2003-02-09  Dom Lachoiwcz <cinamod at hotmail.com>
+
+	* gsf/gsf-input-iochannel.[ch]: Rework as per Jody's suggestions. Now
+	it is a utility constructor.
+	
+2003-02-09  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input-iochannel.c: Fixed iochannel. Unfortunately uses memory
+	backend because there's no way to query the size of an IOChannel
+	
+2003-02-07  Rodrigo Moya <rodrigo at gnome-db.org>
+
+	* gsf/gsf-input-iochannel.[ch]: new GIOChannel based input.
+
+2003-02-07  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-doc-meta-data.[ch]: Clean API a bit to include consts, gsize
+	
+2003-02-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : clip long names,
+	  and do not output a name for the root file.
+
+2003-02-04  Dom Lachowicz <cinamod at hotmail.com>
+
+	* Changed below commit to use g_new instead of g_malloc + typecast, at 
+	Jody's and Morten's request
+	
+2003-02-01  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-infile-msole.c
+	* gsf/gsf-infile-zip.c
+	* gsf/gsf-input-gzip.c
+	* gsf/gsf-input-stdio.c
+	* gsf/gsf-input-textline.c
+	* gsf/gsf-outfile-msole.c
+	* gsf/gsf-output-gzip.c
+	* gsf/gsf-output-memory.c
+	* gsf/gsf-utils.c
+	* gsf-gnome/gsf-input-bonobo.c
+	* gsf-gnome/gsf-input-gnomevfs.c: More castings needed
+	
+2003-02-01  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-infile-msole.c: Some castings to help things build using
+	MSVC++
+	* gsf/gsf-msole-utils.c: Ditto
+	
+2003-01-31  Dom Lachowicz <cinamod at hotmail.com>
+
+	* test/*.c: Correctness fixes in the testcases. No need to unref a null
+	object
+	
+2003-01-29  Dom Lachowicz <cinamod at hotmail.com>
+
+	* *: With Jody's permission, change all _new() calls to return the
+	derived/subclassed type, instead of the mix we had before
+	* tests/*: Updated to conform with above
+	
+2003-01-28  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump
+
+2003-01-28  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.7.2
+
+2003-01-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xml_in_start_element) : be a touch more anal.
+
+2003-01-24  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : remove -Wunreachable-code it was damn irritating and
+	  mostly wrong.
+
+	* gsf/gsf-msole-utils.c : warning suppression.
+
+	* gsf/gsf-libxml.c (gsf_xml_in_start_element) : support default
+	  namespaces.
+	(gsf_xml_in_end_element) : ditto.
+	(gsf_xml_in_start_document) : ditto.
+
+2003-01-23  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Calculate MAJOR_VERSION_PLUS_MINOR_VERSION.
+
+2003-01-22  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c : Rename everything (again) and add namespace
+	  support for the import wrappers.
+
+	* configure.in : bump version to 1.7.1 to reflect the major changes in
+	  the xml import/export api.
+
+2003-01-22  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* gsf/gsf-utils.h, gsf/gsf-utils.c (gsf_base64_encode_close,
+	gsf_base64_encode_step), gsf/gsf-input.c (gsf_input_copy,
+	gsf_input_uncompress),
+	gsf-input-textline.c (gsf_input_textline_utf8_gets): Fixed signedness.
+
+2003-01-21  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* gsf/gsf-msole-utils.c: Mark the 11644473600 constant as ULL.
+
+2003-01-21  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* gsf/gsf-input.c: The gzip signature consists of unsigned chars.
+
+2003-01-21  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* gsf/gsf-libxml.c, gsf/gsf-output-memory.c, gsf/gsf-output.c,
+	gsf/gsf-structured-blob.c, gsf/gsf-zip-utils.c: #include <string.h> for
+	strcmp(), strlen() and memcpy().
+
+2003-01-21  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Redirect grep output to /dev/null instead of using -q
+	which Morten pointed out doesn't work on Solaris.
+
+2003-01-20  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in: Check if -D_POSIX_SOURCE is needed for the fdopen() 
+	prototype in a cleaner fashion; might fix problems on Mac OS X.
+
+2003-01-09  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_read): Handle eof.
+
+2003-01-08  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-iochannel.c (gsf_output_iochannel_write): ensure
+	large writes happen
+
+	* gsf-gnome/gsf-output-gnomevfs.c (gsf_output_gnomevfs_write):
+	Ditto
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_read): Ensure that large
+	reads happen
+
+	* gsf-gnome/gsf-output-gnomevfs.c (gsf_input_gnomevfs_read) :
+	Ditto
+
+2003-01-08  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : fix off by 1 in
+	  calculation of how many meta bats are required.  Store correct
+	  position of initial xbat, the original code did not take small
+	  blocks into account.
+
+	* gsf/gsf-infile-msole.c (ole_make_bat) : add protection against
+	  cycles.
+
+2003-01-07  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_output_xml_add_attr_cstr_safe) : clone over
+	  logic for escaping strings from libxml and revamp it to be more
+	  libgsf-ish.
+
+	* gsf/gsf-utils.c : rename the base64 utilities and clean up the types
+	  and const to match gsf conventions.
+
+2003-01-06  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-transaction.c : New capability - transacted
+	outputs. Not thoroughly tested.
+
+	* tests/test-trans.c : Transaction testsuite for above
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_write) : Put write
+	inside of a loop to ensure that large writes are carried out
+	properly and feof is properly detected
+
+	* TODO: remove the "try to support canceling a write" item since
+	such functionality is supported via transactions
+
+2003-01-05  Tor Lillqvist  <tml at iki.fi>
+
+	* configure.in: Check for lstat() and readlink().  Check for
+	native Win32 and for Win32 in general (including Cygwin).  Set
+	automake conditionals OS_WIN32 and PLATFORM_WIN32 accordingly.
+	Add AC_LIBTOOL_WIN32_DLL.
+
+	* gsf/Makefile.am: On Win32, use -no-undefined, and install (and
+	uninstall) import libraries.
+
+	* gsf/gsf-output-stdio.c: Add workaround #defines for various Unix
+	stuff on Win32. Bypass follow_symlinks() unless HAVE_READLINK.
+
+2003-01-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-utils.c : Pull in the bas64 utilites from evolution.  Unused
+	  for now.
+
+2003-01-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-output.c (cb_output_unwrap) : renamed from
+	  cb_output_wrap_screwup and weaken restrictions.  The weak ref
+	  handler is called before the wrappers finalize, so we can not always
+	  unwrap in such a way as to avoid a warning.  Just handle it silently
+	  now.
+	(gsf_output_wrap) : ditto.  Weaken the requirement of the wrapper to
+	  be a GObject, no need for a full fledged GsfOutput.
+	(gsf_output_unwrap) : ditto.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : fix reversal of
+	  arguments for the wrapping.
+	(gsf_outfile_msole_write) : ditto.
+	* gsf/gsf-outfile-zip.c (zip_init_write) : ditto.
+	(zip_close_stream) : ditto.
+
+	* gsf/gsf-libxml.c : rename xml_sax -> GsfInputXML
+	(GsfOutputXML) : new
+
+2003-01-03  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-impl-utils.h : add hooks for interfaces
+
+2002-12-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_metadata_read) : patch some warnings.
+
+2003-01-01  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* debian/changelog, debian/control, debian/libgsf-1-dev.dirs,
+	debian/libgsf-1-dev.files, debian/rules: Updated.
+
+2002-12-30  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse): Check if res is a GValue.
+	(gsf_msole_metadata_read): Check if v is a GValue and holds an int
+	before reading codepage. Check if v is a GValue before unsetting.
+
+2002-12-23  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-libxml.c (gsf_xml_output_buffer_new): Fix comment and
+	ref output to match gsf_libxml_close.
+
+2002-12-20  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-libxml.c (gsf_libxml_close): Plug leak.
+
+2002-12-19  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new_uri) : Able to
+	open URI objects as well as strings
+
+	* gsf-gnome/gsf-output-gnomevfs.c (gsf_output_gnomevfs_new_uri) : ditto
+
+2002-12-11  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump.
+
+2002-12-11  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.6.0
+
+2002-12-10  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_lid_for_language) : Suggestion from
+	Nicolas Peninguy <peninguy.nicolas at wanadoo.fr>
+
+2002-12-10  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_finalize) : do not unref
+	  the info for the magic internal small block file it was already
+	  removed.
+	(ole_info_get_sb_file) : do not create a reference loop from the info
+	  to the small block file and back.  Remove the default reference from
+	  the magic internal small block file to the info.
+
+2002-12-10  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-structured-blob.c (blob_finalize): Link to the right
+	parent type.
+
+	* gsf/gsf-outfile-zip.c (zip_dirent_new_out): Don't allocate and
+	throw away memory.
+
+2002-12-09  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse): Fix typo.
+
+2002-12-09  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-outfile-zip.c (disconnect_children): Factor out from
+	zip_close_root.
+	(gsf_outfile_zip_finalize): Use here too.  (This closes a leak if
+	closing fails.)
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse): Free the property
+	values until we figure out what to do with them.
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_finalize): Plug leak.
+
+	* gsf/gsf-timestamp.c (gsf_timestamp_as_string): 64-bit fix.
+
+2002-12-04  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-input.c (gsf_input_copy): Copies a GsfInput to a GsfOutput.
+	Will probably be useful for some abiword stuff I'll be doing
+
+	* tests/test-cp.c: New test program exercising gsf_input_copy
+
+2002-12-04  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-output-stdio.c (follow_symlinks): Fix error return
+	conventions.
+	(gsf_output_stdio_new): Clean up error messages.
+
+2002-12-03  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_close): Try much harder
+	restoring owner and permissions.  Still not good.
+	(gsf_output_stdio_new): Simplify using g_path_get_dirname.
+	Respect non-writable files!
+	(follow_symlinks): Simplify using g_path_is_absolute and
+	g_path_get_dirname.  Eliminate some race conditions.
+
+2002-11-29  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-output-gzip.c (init_gzip): Return set error if
+	deflateInit2 fails.
+	(gzip_output_header): Add missing argument to time().
+
+2002-11-27  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-libxml.c (gsf_libxml_close): Change to do nothing. We
+	expect higher layers to close.
+	(gsf_xmlDocFormatDump): Use encoding argument. Don't call
+	xmlOutputBufferClose - libxml calls it for us via the callback we
+	supply.
+
+	* gsf/gsf-libxml.[ch] (gsf_xmlDocFormatDump: Add encoding parameter.
+
+2002-11-27  Jon K Hellan  <hellan at acm.org>
+
+	* tests/Makefile.am (check_PROGRAMS): Add test-out-gzip.c
+
+	* gsf/gsf-output-gzip.[ch]: New files. Gzip output.
+
+	* gsf/Makefile.am (libgsf_1_la_SOURCES): Add gsf-output-gzip.c.
+	(libgsf_1_include_HEADERS): Add gsf-output-gzip.h.
+
+2002-11-25  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-outmem-printf.c (test): Adjust to new
+	gsf_output_memory_get_bytes API.
+
+	* gsf/gsf-outfile-zip.c (root_register_child): Don't ref children
+	which are directories.
+
+	* tests/test-zip-out-subdirs.c (test): Make close/unref strategy
+	the same as in test-cp-zip/test-cp-ole (with change above, this
+	works!). Test closing subdirs at different times in the lifecycle.
+
+2002-11-25  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-outfile-zip.c (zip_init_write): Fail if already writing
+	to another stream in archive. Set "writing" flag in zip root to
+	indicate that we're writing to a stream.
+	(zip_close_stream): Unset "writing" flag in zip root to indicate
+	that we're now free to write to a new stream.
+	 (zip_close_root): s/g_message/g_warning/.
+
+	* tests/test-zip-out-subdirs.c (test): Close each substream before
+	starting to write to the next.
+
+2002-11-24  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-outfile-zip.c (stream_name_len,
+	stream_name_write_to_buf): Stop recursing at root of zip archive,
+	i.e. don't append name of archive file to stream names. Take zip
+	rather than outfile argument.
+	(stream_name_build): Take zip rather than outfile argument.
+	(zip_dirent_new_out): Call stream_name_build with new signature.
+
+2002-11-24  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-ouput-iochannel.c (): New output sink. No IOChannel
+	input sink possible due to API limitations
+
+	* gsf/gsf-input-stdio.c (_new): Open files with "rb" status
+
+2002-11-24  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-memory.c (gsf_output_memory_get_bytes): WARNING:
+	changed prototype
+	(gsf_output_memory_seek): Re-implement seek() in a saner fashion
+	(gsf_output_memory_write): ditto
+	(gsf_output_memory_vprintf): ditto
+	(gsf_output_memory_init): ditto
+
+2002-11-24  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_seek): Code
+	cleanup
+
+2002-11-24  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-memory.c (gsf_output_memory_seek): Implement
+	seek() by implementing a cursor as well as the existing nwritten
+	and capacity fields
+	(gsf_output_memory_write): ditto
+	(gsf_output_memory_vprintf): ditto
+	(gsf_output_memory_init): ditto
+
+2002-11-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_vprintf) : rename from
+	  gsf_output_msole_vprintf to conform to naming convention.
+	(gsf_outfile_msole_class_init) : hook up the vprintf method and fix
+	  some old cut-n-paste errors.
+
+	* gsf/gsf-output.c (gsf_output_finalize) : free the new printf buf.
+	(gsf_output_init) : init the new printf buf.
+	(gsf_output_vprintf) :  use a stream local buffer and handle older
+	  version of glibc that did not return the required number of
+	  characters.
+
+2002-11-23  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-zip-out-subdirs.c: New test program. Add.
+
+	* tests/Makefile.am (check_PROGRAMS): Add test-zip-out-subdirs.
+
+2002-11-23  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-zip-out.c: New test program. Add.
+
+	* tests/Makefile.am (check_PROGRAMS): Add test-zip-out.
+
+	* gsf/gsf-outfile-zip.c (gsf_outfile_zip_finalize): Only free
+	vdirs from the root down.
+	(zip_trailer_write): Take no. of entries as a parameter, so that
+	the root_order array doesn't have to be live when we call this
+	function.
+	(zip_close_root): Slight tweak of Dom's fix.
+
+2002-11-23  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-outfile-zip.c (zip_close_root): Free the root_array and
+	unref the child outputs when closing the root directory
+
+2002-11-22  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Disable creating
+	backup copies of files, open files with "wb" status instead of
+	just "w"
+
+2002-11-22  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-output.c (gsf_output_puts): Check for null input
+	(gsf_output_vprintf): Don't use static internal buffer, will lead
+	to nasty race conditions and a memory-leak on shutdown
+
+2002-11-22  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-outmem-printf.c: New test program. Add.
+
+	* tests/Makefile.am (check_PROGRAMS): Add test-outmem-printf.
+
+	* gsf/gsf-output-memory.c (gsf_output_memory_vprintf):
+	New. vprintf implementation which uses g_vsnprintf directly
+	into buffer if there is space.
+	(gsf_output_memory_class_init):  Initialize vprintf virtual.
+
+2002-11-22  Jody Goldberg <jody at gnome.org>
+
+	* doc/Makefile.am : pull in newer magic from gtk.
+	* configure.in : ditto.
+
+2002-11-22  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_output_msole_vprintf): New. vprintf
+	implementation which falls through to the sink's implementation if
+	possible.
+	(gsf_outfile_msole_class_init):  Initialize vprintf virtual.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_vprintf): New. vprintf
+	implementation which just falls through to vfprintf.
+	(gsf_output_stdio_class_init): Initialize vprintf virtual.
+
+2002-11-22  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-msole-printf.c: New test program. Add.
+
+	* tests/Makefile.am (check_PROGRAMS): Add test-msole-printf.
+
+2002-11-21  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-output.c (gsf_output_puts): Remove unused variable.
+
+2002-11-21  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-libxml.c (gsf_libxml_write): Fix inverted
+	success/failure test.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_new): Set name
+
+2002-11-21  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-output.[ch] (gsf_output_printf): New function. printf
+	for GsfOutput.
+	(gsf_output_puts): New function. fputs for GsfOutput.
+
+	* gsf/gsf-output-impl.h (struct GsfOutputClass): Add Vprintf virtual.
+
+	* gsf/gsf-output.c (gsf_output_class_init): Initialize to default
+	vprintf method.
+	(gsf_output_vprintf): New function: Default vprintf method.
+
+	* tests/test-out-printf.c: New test program. Add.
+
+	* tests/Makefile.am (check_PROGRAMS): Add test-out-printf.
+
+2002-10-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : be more careful about
+	  invalid stream names.
+
+2002-10-30  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* debian/changelog, debian/control, debian/rules: updated.
+	* debian/shlibs.local: dropped.
+
+2002-10-26  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump
+
+2002-10-26  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.5.0
+
+2002-10-26  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_lid_to_codepage) : remove warning.
+
+2002-10-14  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-output-memory.c (gsf_output_memory_finalize) : close != exit.
+	  Chain to the parent, and keep the content around until detruction.
+
+2002-10-22  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-msole-utils.c
+	(gsf_msole_iconv_open_codepage_for_export): Fix bug where we used
+	UTF-8 regardless of the 'from' codepage
+
+2002-10-21  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/gsf-msole-utils.c (*): Large rewrite of the codepage handling
+	code. More functions, more complete, more flexible, etc...
+
+2002-10-18  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-textline.c (gsf_input_textline_ascii_gets): Handle
+	end-of-buffer case without asserting.
+
+2002-10-08  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-utils.c (gsf_filename_to_utf8): New function.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new): Ensure sane
+	filenames before putting them into error messages.
+	* gsf/gsf-output-stdio.c (follow_symlinks): Ditto.
+	(gsf_output_stdio_new): Ditto.
+	(gsf_output_stdio_close): Ditto.
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new): Ditto.
+
+2002-10-01  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xmlSAX_prep_dtd) : support recursive
+	  structures.
+
+2002-09-30  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release bump
+
+2002-09-30  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.4.0
+
+2002-09-27  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-structured-blob.c (gsf_structured_blob_read) : fix.
+	(gsf_structured_blob_write) : fix.
+
+2002-09-26  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-output-memory.c: Remove debug printouts.
+
+2002-09-26  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-output-memory.[ch] (gsf_output_memory_get_bytes): Take
+	1st argument GsfOutputMemory instead of GsfOutput.
+
+	* gsf/gsf-output-memory.c (struct _GsfOutputMemory): Add
+	'capacity' member.
+	(gsf_output_memory_new): Don't duplicate work done in
+	gsf_output_memory_init.
+	(gsf_output_memory_expand): Encapsulate expansion and make it more
+	intelligent.
+	(gsf_output_memory_write): Use gsf_output_memory_expand.
+	(gsf_output_memory_init): Initialize capacity.
+
+2002-09-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_read) : remove some debug spew
+	  that snuck in.
+
+2002-09-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c :  support unicode property names and values,
+	  including some ugly heuristics to add the documented padding only
+	  when using unicode (? what where they smoking ?)
+
+2002-09-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xmlSAX_prep_dtd) : typo
+	  and make the errors more verbose.
+
+2002-09-20  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-structured-blob.c (gsf_structured_blob_read) : handle out of
+	  memory.
+
+2002-09-20  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-libxml.c (gsf_xmlSAX_parse) : some initial work on utility
+	  structures and routines to make building a sax parser easy.
+
+	* gsf/gsf-structured-blob.c : new utility to read/write trees of
+	  unparsed data.
+
+2002-09-19  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-outfile-zip.h (enum GsfZipCompressionMethod): Define.
+
+	* gsf/gsf-outfile-zip.[ch]
+	(gsf_outfile_zip_set_compression_method): New function. Set
+	compression method.
+
+	* gsf/gsf-outfile-zip.c (struct _GsfOutfileZip): Add
+	compression_mehod member.
+	(zip_dirent_new_out): Set compression method.
+	(zip_header_write): Write current compression method.
+	(zip_init_write, zip_close_stream, gsf_outfile_zip_write): Handle
+	noncompressed streams.
+	(zip_header_write_sizes): New function. Write crc and sizes to
+	local file header.
+	(gsf_outfile_zip_init): Initialize compression method to deflated.
+	(gsf_outfile_zip_set_compression_method): New function. Set
+	compression method.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek): Fix typo.
+
+2002-09-19  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (zip_read_dirents): Don't expect a file
+	header at the start of the archive. It's not required by the
+	specification, and e.g. self-extracting zips do not have one.
+	With this change, we can read self-extracting zips.
+
+2002-09-16  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-output.c (gsf_output_close) : always close even if the
+	  implementation failed.
+	(gsf_output_finalize) : free the error.
+	(gsf_output_init) : init the error.
+	(gsf_output_seek) : inver the return flag to be consistent with write.
+	(gsf_output_error) : new.
+	(gsf_output_set_error) : new.
+
+	* gsf/gsf-output-stdio.c : borrow the temp file handling from gedit so
+	  that we can handle setgid directories correctly.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_seek) :
+	  invert the return type.
+	* gsf/gsf-outfile-zip.c (gsf_outfile_zip_seek) : ditto.
+	* gsf/gsf-output-memory.c (gsf_output_memory_seek) : ditto.
+
+	* gsf/gsf-msole-utils.c (gsf_msole_metadata_write) : add some error
+	  checking.
+
+2002-09-15  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_iconv_win_codepage) : fix warning.
+
+	* configure.in : reorder the _BSD_SOURCE and _POSIX_SOURCE tests
+	  because POSIX changes things under linux.
+	  Add an lstat test
+
+2002-09-15  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-zip2.c: Add.
+
+2002-09-14  Rodrigo Moya <rodrigo at gnome-db.org>
+
+	* gsf/gsf-command-context.[ch]: added support for warnings.
+	(gsf_command_context_has_warnings, gsf_command_context_push_warning,
+	 gsf_command_context_pop_warning): new functions.
+
+2002-09-14  Rodrigo Moya <rodrigo at gnome-db.org>
+
+	* gsf/gsf-command-context.[ch]: new class for command contexts,
+	stealing some implementation from GsfIOContext.
+
+	* gsf/gsf-io-context.[ch]: base this class on GsfCommandContext.
+
+2002-09-14  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (gsf_infile_zip_read): Fix reading
+	non compressed streams.
+
+2002-09-13  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_read) : tweak boundary case
+	  to match reality
+
+2002-09-14  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-outfile-zip.[ch]: Really add this time.
+
+	* gsf/gsf-infile-zip.c: gsf-zip-utils.h doesn't exist - don't
+	include it!
+
+	* gsf/gsf-zip-utils.c: Ditto.
+
+2002-09-14  Jon K Hellan  <hellan at acm.org>
+
+	* tests/Makefile.am: Add test-cp-zip.c
+
+2002-09-13  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-cp-zip.c: Add a test program for zip export.
+
+2002-09-13  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-zip-util.c: Add.
+
+	* gsf/gsf-infile-zip.c (enum ZipCompressionMethod, struct
+	ZipDirent, struct ZipDir): Move to gsf-zip-impl.h.
+	(vdir_new, vdir_free, vdir_compare, vdir_add_child,
+	zip_dirent_free): Move to gsf-zip-utils.c.
+	(zip_dirent_new): Rename to zip_dirent_new_in.
+	(vdir_free, zip_info_unref): Add free_dirent parameter to
+	vdir_free.
+	(zip_child_init): Move before first use.
+	(gsf_infile_zip_finalize): Free zlib stream.
+
+	* gsf/Makefile.am: Add gsf-zip-utils.c, gsf-outfile-zip.[ch]
+
+2002-09-12  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf/Makefile.am: add gsf-output-memory
+
+	* gsf/gsf-output-memory.c (_seek): fix seek type, compiles
+
+	* gsf-gnome/Makefile.am: add gsf-output-bonobo
+
+	* gsf-gnome/gsf-output-bonobo.c (): make compile
+
+2002-09-06  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-input-gzip.c (init_zip): Factored out of gsf_input_gzip_new.
+	(gsf_input_gzip_new): See init_zip.
+	(gsf_input_gzip_dup): Dup source instead of sharing it, and
+	initialize zip context.
+
+	* gsf/gsf-infile-zip.c (gsf_infile_zip_dup): Call zip_child_init.
+
+2002-09-04  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (struct ZipDirent, struct _GsfInfileZip,
+	zip_dirent_new, zip_dirent_free, zip_update_stream_in,
+	gsf_infile_zip_read, zip_child_init, gsf_infile_zip_seek,
+	gsf_infile_zip_init): Move zlib context to GsfInfile object. It is
+	per opened stream, not per subfile.
+	(gsf_infile_zip_init, gsf_infile_zip_new): Initialize all fields
+	in gsf_infile_zip_init.
+
+2002-09-03  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-input-gzip.c (check_header): Fix typo.
+
+2002-09-03  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-libxml.c (gsf_libxml_read): Don't signal error when
+	reading len = 0.
+
+	* gsf/gsf-input-gzip.c (check_header): Check signature before
+	seeking to end. Seeking to end is *expensive* if seek is slow in
+	underlying stream.
+	Add check that there's room for payload.
+
+2002-09-02  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (struct _GsfInfileZip): Add seek_skipped.
+	(gsf_infile_zip_seek): Implement. As slow as gzip.
+	(zip_child_init): Initialize dirent->restlen,
+	dirent->crestlen. Don't call zip_update_stream_in.
+	(gsf_infile_zip_new): Initialize seek_skipped.
+
+2002-09-01  Jody Goldberg <jody at gnome.org>
+
+	* tests/test-cat-zip.c : replace the old test with test-msole2.c
+	  with s/msole/zip/ so that we get the end of file right.
+
+2002-08-31  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-zip.c (gsf_infile_zip_num_children) : return -1 for
+	  non directories.
+
+2002-08-31  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-timestamp.c : dummy up a quick implementation.
+	* gsf/gsf-msole-utils.c (msole_prop_parse) : support FILETIME.
+
+2002-08-30  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : remove -Wconversion because it was pissing me off.
+
+2002-08-30  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (msole_prop_parse) : add some basic
+	  implementation.
+	(msole_prop_id_to_gsf) : new.
+
+2002-08-29  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_prop_read) : conditionalize the
+	  debug spew.
+
+2002-08-29  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-utils.c (gsf_msole_prop_parse) : new.
+	(gsf_msole_prop_read) : new.
+	(gsf_msole_metadata_read) : prepare to parse the actual properties.
+
+2002-08-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_new) : restore the current file
+	  position when sniffing for gzip fails.
+
+2002-08-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-metadata.c (gsf_msole_iconv_open_for_export) : moved
+	  from gnumeric.
+	(gsf_msole_iconv_open_for_import) : ditto.
+	(gsf_msole_iconv_win_codepage) : ditto.
+	* gsf/gsf-utils.c (gsf_iconv_close) : ditto.
+	(gsf_extension_pointer) : moved from gnumeric, originally from libgnome.
+
+2002-08-26  Jon K Hellan  <hellan at acm.org>
+
+	* gsf-gnome/gsf-input-bonobo.[ch],
+	gsf-gnome/gsf-output-bonobo.[ch],
+	gsf-gnome/gsf-input-gnomevfs.[ch],
+	gsf-gnome/gsf-output-gnomevfs.c, gsf/gsf-infile-msvba.c,
+	gsf/gsf-input-gzip.h, gsf/gsf-input-impl.h,
+	gsf/gsf-input-memory.h, gsf/gsf-msole-impl.h,
+	gsf/gsf-output-impl.h, gsf/gsf-output-memory.h,
+	gsf/gsf-output-stdio.h, gsf/gsf-output.c, gsf/gsf-shared-memory.h,
+	gsf/gsf-zip-impl.h, gsf/gsf.h: Fix file headers - file name was
+	wrong.
+
+2002-08-26  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (struct ZipVDir): Define struct to
+	represent a directory entry in a tree of contained files.
+	(struct ZipInfo): Add vdir. Move dirent_list here from
+	_GsfInfileZip.
+	(struct _GsfInfileZip): Add vdir. Remove dirent_list and dirent.
+	(vdir_new, vdir_free, vdir_child_by_name, vdir_child_by_index,
+	vdir_compare, vdir_add_child, vdir_insert): New
+	functions. Operations on file tree directories.
+	(zip_info_unref): Free dirent_list and vdir.
+	(zip_read_dirents): Renamed from zip_init_info. dirent_list now in
+	ZipInfo.
+	(zip_build_vdirs): New function. Build directory tree of contained
+	files.
+	(zip_init_info): New function, old name. Wraps zip_read_dirents
+	and zip_build_vdirs.
+	(gsf_infile_zip_dup): Copy vdir, not dirent.
+	(zip_update_stream_in,
+	(gsf_infile_zip_read): dirent now in vdir.
+	(zip_child_init): New function. Contains the parts of
+	gsf_infile_zip_new_child which operated on the zip file.
+	(gsf_infile_zip_new_child): Simplify and call zip_child_init.
+	(gsf_infile_zip_child_by_index, gsf_infile_zip_name_by_index): Use
+	vdir_child_by_index.
+	(gsf_infile_zip_child_by_name): Use vdir_child_by_name
+	(gsf_infile_zip_num_children): Count children in vdir.
+	(gsf_infile_zip_finalize): dirent_list is no longer freed here.
+	(gsf_infile_zip_init, gsf_infile_zip_new): Initialize vdir.
+
+	* gsf/gsf-zip-impl.h (ZIP_NAME_SEPARATOR): Define path name
+	component separator for zip archives.
+
+2002-08-26  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf.h: Don't include <glib-object.h> here.
+	* gsf/gsf-input.h: Do it here.
+	* gsf/gsf-output.h: And here.
+
+	* configure.in: Take out -Wcast-align until someone fixes the
+	hundreds of things that violates it.
+
+2002-08-25  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : post release version bump
+
+2002-08-25  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.0
+
+2002-08-22  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (zip_find_trailer): Fix case when no match
+	is found first time round.
+
+2002-08-21  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (zip_find_trailer): Don't try to read
+	beyond EOF.
+
+2002-08-21  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-infile-zip.c (struct _GsfInfileZip): Add buf and
+	buf_size for inflating.
+	(zip_init_info, gsf_infile_zip_dup): Use g_error_new rather than
+	g_set_error.
+	(gsf_infile_zip_read): Fix segfaulting bug. Make inflate buffer a
+	private member of the class rather than a static.
+	(gsf_infile_zip_finalize): Free inflate buffer.
+	(gsf_infile_zip_new): Initialize inflate buffer.
+
+	* tests/test-cp-msole.c: Revert 2nd arg to
+	gsf_input_read/write from gsf_off_t to size_t.
+
+2002-08-21  Mikael Hallendal  <micke at codefactory.se>
+
+	* tests/test-textline.c (test): output argv[0] when printing
+	  Usage.
+
+2002-08-20  Jody Goldberg <jody at gnome.org>
+
+	* gsf-gnome/Makefile.am : depend on libgsf
+
+2002-08-20  Jon K Hellan  <hellan at acm.org>
+
+	* gsf-gnome/.cvsignore: Add.
+
+2002-08-19  Jon K Hellan  <hellan at acm.org>
+
+	* tests/test-cp-msole.c (clone): Cast 2nd arg to
+	gsf_input_read/write to gsf_off_t.
+
+2002-08-19  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf.h: Remove GsfSeekType.
+
+	* gsf/gsf-input.[ch]: s/GsfSeekType/GSeekType/ in gsf_input_seek
+	signature.
+
+	* gsf/gsf-output.[ch]: s/GsfSeekType/GSeekType/ in gsf_output_seek
+	signature.
+
+	* gsf/gsf-input-impl.h (GsfInputClass) s/GsfSeekType/GSeekType/ in
+	Seek method.
+
+	* gsf/gsf-output-impl.h (GsfOutputClass) Ditto.
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_seek):
+	s/GsfSeekType/GSeekType/ in signature.
+
+	* gsf/gsf-infile-msvba.c (gsf_infile_msvba_seek): Ditto.
+
+	* gsf/gsf-infile-zip.c (gsf_infile_zip_seek): Ditto.
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_seek): Ditto.
+
+	* gsf/gsf-input-memory.c (gsf_input_memory_seek): Ditto.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek): Ditto.
+
+	* gsf/gsf-input-textline.c (gsf_input_textline_seek): Ditto.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_seek): Ditto.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek): Ditto.
+
+	* gsf-gnome/gsf-input-bonobo.c (gsf_input_bonobo_seek): Ditto.
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_seek): Ditto.
+
+	* gsf-gnome/gsf-output-bonobo.c (gsf_output_bonobo_seek): Ditto.
+
+	* gsf-gnome/gsf-output-gnomevfs.c (gsf_output_gnomevfs_seek): Ditto.
+
+	* gsf/gsf-input.c (gsf_input_seek): Replace GSF_SEEK_SET, CUR, END
+	with G_SEEK_SET, CUR, END.
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_seek): Ditto.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek): Ditto.
+
+	* gsf/gsf-output.c (gsf_output_seek): Ditto.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_seek): Ditto.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek): Ditto.
+
+	* gsf-gnome/gsf-input-bonobo.c (gsf_input_bonobo_seek): Ditto.
+
+	* gsf-gnome/gsf-input-gnomevfs.c (gsf_input_gnomevfs_seek): Ditto.
+
+	* gsf-gnome/gsf-output-bonobo.c (gsf_output_bonobo_seek): Ditto.
+
+	* gsf-gnome/gsf-output-gnomevfs.c (gsf_output_gnomevfs_seek): Ditto.
+
+	* gsf/gsf-infile-msole.c (ole_get_block, ole_init_info,
+	gsf_infile_msole_read, gsf_infile_msole_new_child):
+	s/GSF_SEEK_SET/G_SEEK_SET/.
+
+	* gsf/gsf-infile-msvba.c (vba_inflate, vba56_dir_read,
+	gsf_infile_msvba_seek, gsf_infile_msvba_seek): Ditto.
+
+	* gsf/gsf-infile-zip.c (zip_find_trailer, zip_dirent_new)
+	(zip_init_info, zip_init_info, zip_update_stream_in)
+	(gsf_infile_zip_new_child): Ditto.
+
+	* gsf/gsf-input-gzip.c (check_header, check_header): Ditto.
+
+	* gsf/gsf-input.c (gsf_input_dup, gsf_input_uncompress): Ditto.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_seek,
+	gsf_outfile_msole_close): Ditto.
+
+2002-08-18  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Revert today's first change to the file, but keep
+	the second.
+
+2002-08-18  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: See below. Hope it's true this time.
+
+2002-08-18  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Make --without-gnome work.
+
+2002-08-18  Jon K Hellan  <hellan at acm.org>
+
+	* acinclude.m4: Change it to just a comment referring to
+	python/README-python.
+
+	* acinclude.m4.am15: Added. A copy of the previous version, but no
+	longer commented out. See python/README-python.
+
+2002-08-17  Jody Goldberg <jody at gnome.org>
+
+	* gsf/Makefile.am : install the xml header
+
+2002-08-17  Jon K Hellan  <hellan at acm.org>
+
+	* libgsf-gnome-1.pc.in (Cflags): Fix Libs line.
+
+2002-08-17  Jon K Hellan  <hellan at acm.org>
+
+	* Makefile.am (pkgconfig_DATA): Add libgsf-gnome-1.pc when
+	--with-gnome is selected.
+	(EXTRA_DIST): Add libgsf-gnome-1.spec, libgsf-gnome-1.spec.in and
+	libgsf-gnome-1.pc.in
+
+2002-08-16  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : pad the last bat
+	  and sbat block with unused rather than 0.
+	(ole_pad_bat_unused) : New.
+
+2002-08-16  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : clean up the
+	  iteration to calculate the number of bat blocks required to hold the
+	  bat and metabat.  Fill in the bat flags for the metabat.
+
+2002-08-16  Jody Goldberg <jody at gnome.org>
+
+	* configure.in  : move bonobo and gnome-vfs into a standalone library.
+
+	* gsf/gsf-infile-msole.c (ole_init_info) : add a warning about invalid
+	  state.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_new) : Fill with 0xff
+	  instead of 0 to be more compatible with MS.
+	(gsf_outfile_msole_close) : If there is no small block data don't
+	  pretend there is an allocation chain for it.  Write BAT entries for
+	  the bat itself.  TODO : BAT entries for the metabat.
+
+2002-08-16  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-io-context.c (gsf_io_context_update_progress): Don't
+	zero out memory only to overwrite it.
+
+2002-08-16  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Require autoconf 2.52
+
+2002-08-16  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-metadata-bag.c (gsf_metadata_bag_new): Fix prototype.
+	* gsf/gsf-output-memory.c (gsf_output_memory_new): Ditto.
+	(gsf_output_memory_write): Fix brown-bag.
+
+2002-08-15  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Test for orbit-python.
+
+2002-08-15  Jon K Hellan  <hellan at acm.org>
+
+	*  gsf/gsf-input-memory.c  (gsf_input_mmap_new):  Stop warnings on
+	Solaris.
+
+2002-08-15  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-shared-memory.c (gsf_shared_memory_finalize): Cast to
+	gsf_off_t when checing for overflow.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close,
+	gsf_outfile_msole_write): Ditto.
+
+	* gsf/gsf-input-bonobo.c (gsf_input_bonobo_seek): Ditto.
+
+	* gsf/gsf-infile-zip.c (zip_find_trailer): Ditto.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek): Use long, not
+	off_t for offset arg. to fseek.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek): Ditto.
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new): Add forgotten
+	argument to g_error_new.
+
+2002-08-15  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Bump minor verision to 1.3. Add AC_SYS_LARGEFILE.
+
+	* gsf/gsf.h: Rename GsfOff_t enum to GsfSeekType. Define gsf_off_t
+	type to use instead of off_t. We have to do this because we do not
+	know what idea the application has of the size of off_t, this can
+	be defined with #define _FILE_OFFS_BITS xx.
+
+	* gsf/gsf-shared-memory.h (struct _GsfSharedMemory): Change type
+	of size to gsf_off_t.
+
+	* gsf/gsf-output-stdio.c (gsf_output_stdio_seek): Change type of
+	offset parameter to gsf_off_t, type of 'whence' parameter to
+	GsfSeekType. Check for overflow copying from gsf_off_t to off_t.
+
+	* gsf/gsf-output-impl.h (struct _GsfOutput): Change type of
+	cur_size, cur_offset to gsf_off_t.
+	(GsfOutputClass): Change type of offset parameter of Seek method
+	to gsf_off_t, type of 'whence' parameter to GsfSeekType.
+
+	* gsf/gsf-output-gnomevfs.c (gsf_output_gnomevfs_new): Various
+	fixes.
+	(gsf_output_gnomevfs_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.  Cast
+	'whence' argument to gnome_vfs_seek to GnomeVFSFileOffset to shut
+	up warning.
+	(gsf_output_gnomevfs_write): Cast 'bytes' argument to
+	gnome_vfs_write to GnomeVFSFileSize to shut up warning.
+
+	* gsf/gsf-output-bonobo.c (gsf_output_bonobo_seek): Change type of
+	offset parameter to gsf_off_t, type of 'whence' parameter to
+	GsfSeekType.
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_seek): Change type of
+	offset parameter to gsf_off_t, type of 'whence' parameter to
+	GsfSeekType. Type of offset argument to gsf_input_seek has changed
+	to gsf_off_t. Use.
+	(gsf_outfile_msole_close): Return type of gsf_output_tell is
+	changed to gsf_off_t. Introduce gsf_off_t typed variable data_size
+	to detect overflow. Type of size argument to gsf_output_set_size
+	has changed to gsf_off_t. Use. Type of offset argument to
+	gsf_output_seek has changed to gsf_off_t. Use.
+	(gsf_outfile_msole_write): Return type of gsf_output_tell is
+	changed to gsf_off_t. Introduce gsf_off_t typed variables wsize
+	and start_offset to detect overflow.
+
+	* gsf/gsf-libxml.c (gsf_libxml_read): Return type of
+	gsf_input_remaining has changed to gsf_off_t. Use.
+
+	* gsf/gsf-io-context.c (GSF_CLASS): G_TYPE_GLIB is the parent
+	class, not the io-context class itself.
+
+	* gsf/gsf-input.h: (gsf_input_size, gsf_input_remaining,
+	gsf_input_tell): Change return type to gsf_off_t.
+	(gsf_input_seek): Change type of offset parameter to gsf_off_t,
+	type of 'whence' parameter to GsfSeekType.
+
+	* gsf/gsf-input.c (gsf_input_dup): Type of offset argument to
+	gsf_input_seek has changed to gsf_off_t. Use.
+	(gsf_input_size, gsf_input_remaining, gsf_input_tell): Change
+	return type to gsf_off_t.
+	(gsf_input_seek): Change type of offset parameter to gsf_off_t,
+	type of 'whence' parameter to GsfSeekType.
+	(gsf_input_set_size): Change type of size parameter to gsf_off_t.
+	(gsf_input_seek_emulate): Change type of pos parameter to
+	gsf_off_t.
+	(gsf_input_uncompress): Change type of cur_offset variable to
+	gsf_off_t. Type of offset argument to gsf_input_seek has changed
+	to gsf_off_t. Use.
+
+	* gsf/gsf-input-textline.c (gsf_input_textline_new): Remove cast
+	of size argument to gsf_input_set_size.
+	(gsf_input_textline_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.
+	(gsf_input_textline_ascii_gets, gsf_input_textline_utf8_gets ):
+	Add 'remain' variable, and make sure that overflows don't occur.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new): Change type of size
+	variable to gsf_off_t.
+	(gsf_input_stdio_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType. Check for
+	overflow copying from gsf_off_t to off_t.
+
+        * gsf/gsf-input-memory.h: Change type of length parameter to
+	gsf_off_t.
+
+	* gsf/gsf-input-memory.c (gsf_input_memory_new): Change type of
+	length parameter to gsf_off_t.
+	(gsf_input_memory_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.
+	(gsf_input_mmap_new): Check for overflow copying from st.st_size
+	to ssize_t. Type of size argument to gsf_shared_memory_mmapped_new
+	and gsf_input_set_size has changed to gsf_off_t. Use.
+
+	* gsf/gsf-input-impl.h (struct _GsfInput): Change type of size,
+	cur_offset to gsf_off_t.
+	(GsfInputClass): Change type of offset parameter of Seek method to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.
+	(gsf_input_set_size): Change type of size parameter to gsf_off_t.
+	(gsf_input_seek_emulate): Change type of pos parameter to
+	gsf_off_t.
+
+	* gsf/gsf-input-gzip.c (struct _GsfInputGZip): Change type of
+	seek_skipped to gsf_off_t.
+	(check_header): Type of offset argument to gsf_input_seek is
+	changed to gsf_off_t. Use. Type of size argument to
+	gsf_input_set_size has changed to gsf_off_t. Use.
+	(gsf_input_gzip_read): Return type of gsf_input_remaing has
+	changed to gsf_off_t. Use.
+	(gsf_input_gzip_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.
+
+	* gsf/gsf-input-gnomevfs.c (gsf_input_gnomevfs_new): Change type
+	of size variable to gsf_off_t. Cast 'code' argument to g_set_error
+	to gint to shut up warning.
+	(gsf_input_gnomevfs_read): Cast 'bytes' argument to gnome_vfs_read
+	to GnomeVFSFileSize to shut up warning.
+	(gsf_input_gnomevfs_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.  Cast
+	'whence' argument to gnome_vfs_seek to GnomeVFSFileOffset to shut
+	up warning.
+
+	* gsf/gsf-input-bonobo.c (struct _GsfInputBonobo): Change type of
+	'pos' to gsf_off_t.
+	(gib_synch_shared_ptr): Cast to gsf_off_t when assigning pos.
+	(gsf_input_bonobo_new): Change type of size variable to
+	CORBA_long.  Type of size argument to gsf_input_set_size is
+	changed to gsf_off_t. Use.
+	(gsf_input_bonobo_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType. Check for
+	overflow copying from gsf_off_t to CORBA_long.
+
+	* gsf/gsf-infile-zip.c (zip_find_trailer): Change return type to
+	gsf_off_t. Check for overflow copying from gsf_off_t to size_t.
+	(zip_dirent_new, gsf_infile_zip_new_child): Change type of offset
+	parameter to gsf_off_t. Type of size argument to
+	gsf_input_set_size has changed to gsf_off_t. Use.
+	(gsf_infile_zip_new): Type of size argument to gsf_input_set_size
+	has changed to gsf_off_t. Use.
+
+	* gsf/gsf-infile-msvba.c (vba_inflate): Change type of offset
+	parameter to gsf_off_t.
+	(vba3_dir_read): Cast 2nd argument to vba_inflate to gsf_off_t.
+	(gsf_infile_msvba_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.
+	(gsf_infile_msvba_new): Type of size argument to
+	gsf_input_set_size has changed to gsf_off_t. Use.
+
+	* gsf/gsf-infile-msole.c (ole_get_block, ole_init_info,
+	gsf_infile_msole_read, gsf_infile_msole_new_child): Type of offset
+	argument to gsf_input_seek has changed to gsf_off_t. Use.
+	(gsf_infile_msole_seek): Change type of offset parameter to
+	gsf_off_t, type of 'whence' parameter to GsfSeekType.
+	(gsf_infile_msole_new_child, gsf_infile_msole_new): Type of size
+	argument to gsf_input_set_size has changed to gsf_off_t. Use.
+
+2002-08-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.2.0
+
+2002-08-06  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-utils.c (gsf_le_get_double, gsf_le_set_double): New
+	functions (from gnumeric).
+	* gsf/gsf-utils.h: Add macros for signed types.
+
+2002-08-05  Jody Goldberg <jody at gnome.org>
+
+	* tests/test-msole1.c (test) : why did I add that limitation ?
+
+2002-08-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-output.c (gsf_output_is_closed) : forgot to implement.
+
+2002-08-02  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : bump version
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_finalize) : add a safety
+	  to close the file before finalizing.
+
+	* gsf/gsf-output.c (gsf_output_finalize) : add a warning when
+	  finalizing an unclosed stream.
+	(gsf_output_init) : init the new is_closed flag.
+
+2002-08-02  Rodrigo Moya <rodrigo at gnome-db.org>
+
+	* gsf/gsf-io-context.c: removed progress_min and progress_max, since
+	they don't seem too useful right now (ie, let's keep it simple).
+	(gsf_io_context_clear): free progress_ranges list and initialize
+	progress-related internal values.
+	(gsf_io_context_update_progress): implemented.
+	(gsf_io_context_class_init): added "progress" signal to class.
+
+2002-08-01  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* doc/Makefile.am (HTML_DIR) : conditionally define.
+	* doc/gsf-docs.sgml : tidy up.
+
+2002-07-27  Dom Lachowicz <cinamod at hotmail.com>
+
+	* MAINTAINERS : add myself
+	* gsf-metadata-bag.[ch] : add cardinatliy (size) method
+
+2002-07-26  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-output-bonobo.[ch]: implement output stream (untested)
+
+2002-07-26  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-meta-keys.h: list of default/builtin keys that we will want
+	to support
+
+	* gsf-metadata-bag.[ch]: add key creation and manipulation
+	functions, update TODO list
+
+2002-07-26  Dom Lachowicz <cinamod at hotmail.com>
+
+	* gsf-metadata-bag.c: implement (untested)
+
+2002-07-25  Dom Lachowicz <cinamod at hotmail.com>
+
+        * gsf-input-gnomevfs.[ch]: implement (untested)
+        * gsf-output-gnomevfs.[ch]: implement (untested)
+        * gsf-output-memory.[ch]: implement (untested)
+
+2002-07-22  Zbigniew Chyla  <cyba at gnome.pl>
+
+	* gsf-input-gnomevfs.c (struct _GsfInputGnomeVFS):
+	Added missing semicolon at the end of struct.
+
+2002-07-21  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.1.0
+
+2002-07-17  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_mem_dump) : tweak.
+
+2002-07-15  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_dup): Don't ignore err
+	-- that will crash the caller.
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new): Plug file
+	descriptor leaks.
+
+2002-07-09  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input.c (gsf_input_dup) : avoid leak if derived dup has
+	  already assigned a name.
+
+2002-07-08  Jody Goldberg <jody at gnome.org>
+
+	* tests/test-cp-msole.c (test) : simplify.
+
+2002-07-08  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_new) : doh!
+	  fix the header to include the correct small block shift.
+
+2002-07-08  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c (ole_name_cmp) : new.
+	(gsf_outfile_msole_new_child) : order the names correctly.
+	(gsf_outfile_msole_close) : write meta bats.
+
+	* gsf/gsf-msole-impl.h : add OLE_HEADER_METABAT_SIZE.
+	* gsf/gsf-infile-msole.c (ole_init_info) : use it here.
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_close) : and here.
+
+2002-07-07  Jody Goldberg <jody at gnome.org>
+
+	* gsf/Makefile.am : Make gsf-impl-utils.h public
+
+2002-07-06  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-msole-impl.h : pull in more information.  We may not need it
+	  but it makes for better documentation than 'unknown'
+
+2002-07-06  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c : initial implementation.
+	* gsf/gsf-outfile.c : initial implementation.
+	* gsf/gsf-output.c : initial implementation.
+
+2002-07-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : be more anal in case the
+	  input file has a cycle.
+
+2002-07-03  Jody Goldberg <jody at gnome.org>
+
+	* tests/test-textline.c (test) : make the compiler shut up.
+
+2002-06-27  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-gzip.c (check_header): Set header_size here.
+	(gsf_input_gzip_read): When allocating a buffer, allocate at least
+	256 bytes so we don't have to realloc all the time.
+	(gsf_input_gzip_read): Handle truncated streams.
+
+	* gsf/gsf-input.c (gsf_input_seek): Handle seeks that go to same
+	position here.
+	(gsf_input_uncompress): Reorganise a bit.
+
+	* gsf/gsf-infile-msole.c (ole_dirent_free): Actually free the
+	dirent.  And the list of children.
+
+2002-06-27  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_read): Exit on error.
+
+	* gsf/gsf-infile-msole.c (ole_init_info): Always set error info.
+
+	* configure.in (LIBGSF_LIBS): Include the Bonobo libs.
+
+	* tests/test-msole2.c (test): Plug leak.  Uncompress source.
+
+	* gsf/gsf-input.c (gsf_input_uncompress): New function.
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_finalize): Plug leak.
+
+2002-06-27  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-input-bonobo.c: Actually check in the stuff mentioned
+	yesterday.
+
+2002-06-27  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-gzip.c (gsf_input_gzip_seek): Attempt
+	implementation.
+
+	* gsf/gsf-input.c (gsf_input_seek): Make pos an off_t.
+
+2002-06-26  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-input-bonobo.c (struct _GsfInputBonobo): Replace stream
+	attribute with GsfSharedBonoboStream * 'shared'. Add 'pos'
+	attribute.
+	(gib_synch_shared_ptr): New helper function. Seek the shared
+	stream if necessary.
+	(gsf_input_bonobo_new): Probably better to free the exceptions
+	*after* retrieving the exception texts.  Initialize 'shared'.
+	(gsf_input_bonobo_finalize): unref 'shared'.
+	(gsf_input_bonobo_dup): Implement.
+	(gsf_input_bonobo_read): Use shared stream. Use
+	gib_synch_shared_ptr to seek first if necessary.
+	(gsf_input_bonobo_seek): Ditto.
+	(gsf_input_bonobo_init): Initialize 'shared'.
+
+	* gsf/gsf-shared-bonobo-stream.[ch]: new helper class for bonobo
+	stream IO. Lets us dup the streams.
+	* gsf/Makefile.am: added new files.
+
+2002-06-26  Morten Welinder  <terra at diku.dk>
+
+	* configure.in: If needed, define __EXTENSIONS__.
+
+2002-06-26  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/gsf-input-bonobo.c: Include bonobo-persist-stream.h
+	(gsf_input_bonobo_read): Silence warning.
+
+2002-06-25  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: New flag --with-bonobo
+
+	* gsf/Makefile.am (INCLUDES): added new files.
+
+	* gsf/gsf-input-bonobo.[ch]: new class for bonobo stream IO.
+
+2002-06-25  Rodrigo Moya <rodrigo at gnome-db.org>
+
+	* gsf/gsf-io-context.[ch]: new class for managing IO contexts.
+
+	* gsf/Makefile.am: added new files.
+
+2002-06-24  Jody Goldberg <jody at gnome.org>
+
+	* python/Makefile.am : pyexec is not available in automake-1.4.
+	nor is nodist_.
+
+	* acinclude.m4 : something was still interpretting the AC_REQUIRE even
+	  though ti was commented out.  change case and comment for now to
+	  avoid problems.
+
+2002-06-23  Jon K Hellan  <hellan at acm.org>
+
+	* acinclude.m4: Comment out everything.
+
+2002-06-21  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : uncomment the AM_CONDITIONAL for WITH_PYTHON
+
+2002-06-21  Jon K Hellan  <hellan at acm.org>
+
+	* acinclude.m4: Add it. It provides AM_CHECK_PYTHON_HEADERS.
+
+2002-06-20  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-outfile-msole.c (gsf_outfile_msole_new_child): Add
+	missing arg.
+
+2002-06-20  Jon K Hellan  <hellan at acm.org>
+
+	* configure.in: Add support for building Python bindings, but
+	comment it out because it requires automake1.5.
+
+	* Makefile.am: Build python subdir if WITH_PYTHON is set.
+
+2002-06-18  Rui M. Seabra <rms at 1407.org>
+
+	* libgsf-1.spec.in : set permission correctly
+	    fix common mistake of Copyright flag into License flag.
+
+2002-06-18  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : lower the libxml version req
+
+2002-06-17  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile.c (gsf_outfile_new_child) : adjust signature to
+	  include 'is_dir'
+
+2002-06-15  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input.c (gsf_input_eof) : fix docs.
+
+	* gsf/gsf-utils.c (gsf_mem_dump) : use size_t.
+
+2002-06-13  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-textline.c (gsf_input_textline_ascii_gets) : implement.
+	(gsf_input_textline_utf8_gets) : pretend to implement.
+
+2002-06-13  Jody Goldberg <jody at gnome.org>
+
+	* Makefile.am : move the tests into a standalone dir because they are
+	  getting irritating to build for every single library rebuild.
+
+2002-06-13  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-infile-msvba.c (vba_inflate): Make offset an off_t.
+
+2002-06-13  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-outfile-msole.c : initial stub implementation.
+	* gsf/gsf-outfile.c : initial stub implementation.
+	* gsf/gsf-output-stdio.c : initial stub implementation.
+	* gsf/gsf-output.c : initial stub implementation.
+
+2002-06-13  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msvba.c (vba_inflate) : cleanup.
+
+2002-06-13  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.h (GSF_OLE_GET_GUINT{8,16,32}) : move to
+	  gsf-utils and rename.
+
+	* gsf/gsf-input-memory.c (gsf_input_memory_dup) : silence warning.
+	(gsf_input_mmap_new) : fix the no mmap case.
+
+2002-06-12  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msvba.c (vba_inflate) : store the uncompressed
+	  result.
+	(vba_dirent_read) : new.  We can now lookup the correct offsets for
+	  the compressed source.  The question remaining is how to fin the
+	  start of the dir table ...
+
+2002-06-12  Rodrigo Moya <rodrigo at gnome-db.org>
+
+	* gsf/*: s/IS_GSF/GSF_IS.
+
+2002-06-12  Jon K Hellan  <hellan at acm.org>
+
+	* libgsf-1.pc.in (Requires): Add libxml-2.0
+
+2002-06-11  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_read) : fix reading into an
+	  assigned buffer for small block files.
+
+2002-06-10  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile.c (gsf_infile_child_by_name) : typo.
+
+2002-06-09  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* gsf/test-msole1.c (read_types): Casts to suppress signedness
+	  warnings.
+	* gsf/gsf-input-memory.c (gsf_input_memory_read): Changed src type to
+	  guchar.
+	* gsf/gsf-input-textline.c (gsf_input_textline_ascii_gets): Cast
+	  return value.
+	* gsf/gsf-infile-msole.c (ole_dirent_new): Signedness fixes.
+	* debian/*: updated; include pkgconfig file.
+
+2002-06-09  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msvba.c : new.
+	* gsf/test-msvba.c : new.
+
+	* gsf/gsf-infile.c (gsf_infile_child_by_vname) : new utility routine.
+
+2002-06-07  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input.c (gsf_input_dup) : Add an err parameter.
+
+2002-06-07  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new): Plug FILE* leak.
+	(gsf_input_stdio_dup): Go via filename.
+
+2002-06-07  Jody Goldberg <jody at gnome.org>
+
+	* doc/Makefile.am : fix the type init function for gtk-doc.
+	* gsf/* : fix docs a bit.
+
+2002-06-07  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-utils.c (gsf_input_dump) : new utility split out of.
+	* gsf/test-gzip1.c (test) : here.
+
+	* gsf/test-msole2.c (test) : spruce this up a might so that it can be
+	  used as a general utility to dump streams and storages.
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_dup) : dup the descriptor
+	  before creating a new file handle.
+
+2002-06-06  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : remove -Wmissing-noreturn
+
+	* gsf/test-msole1.c (test) : remove the --use-memory bit.  Just use
+	  mmap.  We can test the other input types in another program.
+
+	* gsf/*.c : change the convention for wrappers.  They all add their
+	       own references to the source rather than absorbing the ref that
+	       was passed in.
+
+2002-06-06  Jody Goldberg <jody at gnome.org>
+
+	* configure.in : add zlib.
+	* libgsf-1.pc.in (Cflags) : ditto.
+
+	* gsf/gsf-input-gzip.c : wrapper to uncompress things.
+
+	* gsf/gsf-libxml.c : some convenience routines for dealing with libxml.
+
+	* gsf/test-gzip1.c :  add some tests for gzip.
+
+2002-06-05  Morten Welinder  <terra at diku.dk>
+
+	* gsf/*.[ch]: switch to using system types.
+
+2002-06-05  Jon K Hellan  <hellan at acm.org>
+
+	* gsf/Makefile.am: Fix typo - libgsf_1_includedir didn't get defined.
+
+2002-06-05  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new) : set the filename.
+
+2002-06-04  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input.c (gsf_input_eof) : do this internally.
+	* gsf/gsf-input* : remove the _eof methods.
+
+2002-06-04  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-input-impl.h (GsfInputClass): Change structure members
+	from "read" to "Read", etc.  This avoids names reserved by the
+	system libraries.
+
+2002-06-04  Morten Welinder  <terra at diku.dk>
+
+	* gsf/test-msole1.c (test): Add --memory option.
+
+	* gsf/gsf-shared-memory.c: New class.
+
+	* gsf/gsf-input-memory.c (gsf_input_memory_new): Use new
+	GsfSharedMemory class.
+	(gsf_input_memory_read): Add missing parameter.
+
+2002-06-01  Jody Goldberg <jody at gnome.org>
+
+	* gsf/Makefile.am : Add gsf-input-textline.[ch]
+	  Add gsf-libxml.[ch]
+
+2002-05-30  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-stdio.h : fix the name mismatch.
+
+2002-05-28  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input.c (gsf_input_seek) : doh!
+
+2002-05-28  Morten Welinder  <terra at diku.dk>
+
+	* gsf/gsf-infile-msole.c (ole_make_bat): Cast via gconstpointer to
+	please gcc.
+
+	* gsf/gsf-infile-msole.h (GSF_OLE_GET_GUINT8, GSF_OLE_GET_GUINT16,
+	GSF_OLE_GET_GUINT32): fix alignment problems.
+
+	* gsf/test-msole1.c (read_types): Fix isspace usage.
+
+2002-05-27  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c : add some prepoc constants to prep for
+	  export support.
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* README : add more details
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/test-msole1.c (get_biff_opcode_name) : suppress warning.
+
+	* gsf/gsf-input-memory.c (gsf_input_mmap_new) : ensure it is a regular
+	  file.
+
+	* configure.in : remove -Wundef to shut it up about glib.
+	  remove -Wcast-qual because we sometimes need to explicitly cast away
+	  const.  C does not have const_cast<>().
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-impl-utils.h (GSF_CLASS_FULL) : suppress warning.
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : disable debug spew.
+	(ole_init_info) : suppress bogus compile warning.
+	  Use gsf_ole_get_guint32s to convert the data to normal endianness.
+	(gsf_ole_get_guint32s) : new.
+	(ole_info_read_metabat) : assume the metabat is already uses native
+	  byte ordering.
+
+	* gsf/gsf-input.c (gsf_input_seek) : suppress warning.
+	(gsf_input_dup) : ditto.
+	(gsf_input_init) : ditto.
+
+2002-05-25  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+	* configure.in:
+	  Actually use warning flags from GNOME_COMPILE_WARNINGS, so
+	  "--enable-warnings=maximum" and "--with-iso-c" are honoured.
+	  Test whether defining _BSD_SOURCE is needed for caddr_t.
+	  (e.g. on Debian with -ansi for gcc3.0 and 3.1)
+	  Test whether defining _POSIX_SOURCE is needed for fdopen().
+	  Enable a lot more warnings.
+	* debian/rules: minor tweaks.
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input.c (gsf_input_seek) : more error checking.
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/test-msole1.c (test) : dump head of odd records.
+
+	* gsf/gsf-input.c (gsf_input_seek) : do more of the work up here.
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_seek) : adjust here.
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_seek) : and here.
+	* gsf/gsf-input-memory.c (gsf_input_memory_seek) : and here.
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : fix off by 1 error in
+	  handling broken ascii stream names.
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_init_info) : libole2 knew about a smidge
+	  more of the ole header, use the sbat counter.
+
+	* gsf/test-msole1.c (test) : even more sanity checking.
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/test-msole1.c (test) : add more safety checks to automate
+	  validation of imported biff records.
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : Based on char-width2.xls
+	  it looks like directory sizes are periodically screwed.
+
+2002-05-25  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c : fix small block support.
+	  Handle the bogus use of ascii stream names in some case.
+
+2002-05-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new) : merge the size
+	  checking in here and do more error reporting.
+	(gsf_input_stdio_class_init) : delete gsf_input_stdio_size
+	(gsf_input_stdio_size) : delete.
+
+	* gsf/gsf-input.c (gsf_input_read) : put the bound check here.
+
+2002-05-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_new) : make buf_size unsigned.
+	(gsf_input_stdio_finalize) : and here.
+	(gsf_input_stdio_read) : and here.
+
+	* gsf/gsf-input.c (gsf_input_seek) : As morten suggested this is
+	  better as > size rather than >= size.
+
+2002-05-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (gsf_infile_msole_read) : only seek if we
+	  need to.
+
+2002-05-24  Jody Goldberg <jody at gnome.org>
+
+	* gsf/test-msole1.c (test) : more debug info, and less content spew.
+
+2002-05-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-input-stdio.c (gsf_input_stdio_size) : be more careful about
+	  people who open devices.
+
+2002-05-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_dirent_new) : more error handling.
+	(ole_info_get_sb_file) : make things more readable and split this out.
+	(gsf_infile_msole_new_child) : fix reading small blocks.
+
+2002-05-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.h (GSF_OLE_GET_GUINT8) : move here.
+	(GSF_OLE_GET_GUINT16) : ditto.
+	(GSF_OLE_GET_GUINT32) : ditto.
+
+2002-05-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-utils.h : Use the glib type macros instead of defining our
+	  own.
+
+2002-05-23  J.H.M. Dassen (Ray) <jdassen at debian.org>
+
+ 	* doc/Makefile.am: Introduced DOC_DIR so the location can be easily
+ 	overridden when building packages.
+ 	* debian/*: Preliminary Debian packaging.
+
+2002-05-23  Jody Goldberg <jody at gnome.org>
+
+	* gsf/gsf-infile-msole.c (ole_info_read_xbat) : DOH!
+	  We need to check endianness when reading the bat elements.
+	(gsf_infile_msole_read) : slow but effective work around for
+	  breaking at block boundaries.  I'll work up something faster this
+	  evening.
+
+2002-05-19  Jody Goldberg <jody at gnome.org>
+
+	* Start making this into a real package.

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/HACKING
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/HACKING	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/HACKING	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,105 @@
+* Don't commit directly, instead send your diff to the authors (use
+  'cvs diff -Nu').
+
+Working in libgsf
+-------------------
+
+   When writing libgsf our priorities are
+
+	1) Correctness.
+	2) Maintainable & Documented
+	3) Modular and well designed
+	and a distant
+	4) portable
+	5) Fast
+
+    When you submit code to inclusion in libgsf, or when you modify the sources
+directly on the CVS repository, please keep those things in mind.  While
+performance is important please note that we do not want to hand tune code
+to shave milliseconds at this point.  Well designed algorithms and data
+strucutures are fertile areas for development, obfuscated code to make a
+loop 3% faster is not.  Specifically, this means:
+
+	- Clarity of design and function are paramount
+	- Make sure your code does not generate warnings at all.
+	- Please follow the formatting style
+
+Formatting style
+----------------
+
+   The formatting style of libgsf is a mix of various styles, make
+yourself familiar with the GNU coding standards (shipped with most
+GNU/Linux systems as the standards.info file), then read the Linux
+kernel coding standards and ignore Linus' jokes.  Then look at the
+Gtk+ header files to get aquainted on how to write nice header files
+that are almost self documenting. 
+
+   Remember: Use 8 space tabs for indentation: that will keep your
+code honest as you will be forced to split your routines in more
+modular chunks (as detailed by Linus). 
+   
+   Emacs users can get the default indentation style with this:
+  (set-c-style "K&R")
+  (setq c-basic-offset 8)
+
+   On top of that, you will have to:
+
+	- Follow the Gtk+ cleanliness conventions for function
+	  prototypes.
+
+	- Follow the Gtk+ namespace convention for function names. 
+	  module_submodule_operation
+
+	- Make sure your code does not have a single warning (with the
+	  default strong warnings that Gnumeric compiles with) before
+	  your code is submited. (Although we do not advocate -Werror)
+
+	- Every entry point to a public routine should use the
+	  g_return_if_fail and g_return_val_if_fail macros to verify
+	  that the parameters passed are valid.
+
+	- Under no circunstances use magic variables.  Use typedef
+	  enum { ... } type; to create enumerations.  Do not use
+	  integers to hold references to enumerations, the compiler
+	  can help catch various errors.
+
+	- Use g_warning to mark spots that need to be reviewed or are
+	  not finished to let me fix it eventually.
+
+	- Do not submit code that is just a temporary workaround for a
+	  full fledged feature.  i.e. don't submit a quick hack at
+	  "search text" which is not designed to be expanded upon.  We
+	  do not want to maintain limited features.  It is better submit an
+	  implementation that has been designed to be expanded and enhanced,
+	  even if it is not completely finished.
+
+	- It is more important to be correct than to be fast.  
+
+	- Do not optimize unnecesarly.  Do profile, do look for the
+	  weak spots before applying "optimization by feeling".  This
+	  is not a Ouija-based project. 
+
+	- It is more important to keep the code maintainable and
+	  readable than to be fast.  If you have a great idea about
+	  optimizing the code, make sure it is implemented cleanly,
+	  that there is a clean and maintainable way to do it:  
+
+        - Fast code that is difficult to maintain has no place in
+	  Gnumeric and will be dropped.
+
+	- Follow the libgsf commenting style, which is not the Gtk
+	  style;
+		/* ie. use this for
+		 * multi-line comments
+		 */
+
+   All of this is to ensure the libgsf code will be kept within
+reasonable margins of maintainability for the future: Remember, in two years
+you will probably be far too busy to maintain your own contributions, and they
+might become a burden to the program maintainers.
+
+   libgsf is intented to be a foundation for a various document centric
+projects.
+
+   Cleaning code in libgsf is more important than trying not to break
+existing code.  By all means, code clean ups are always welcome. 

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/INSTALL
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/INSTALL	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/INSTALL	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,229 @@
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,29 @@
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libgsf-1.pc
+
+if WITH_LIBGSF_GNOME
+  pkgconfig_DATA += libgsf-gnome-1.pc
+endif
+if PLATFORM_WIN32
+  pkgconfig_DATA += libgsf-win32-1.pc
+endif
+
+SUBDIRS = po gsf gsf-gnome gsf-win32 doc tests
+
+if WITH_PYTHON
+  SUBDIRS += python
+endif
+#if WITH_GCONF
+#  SUBDIRS += thumbnailer
+#endif
+
+EXTRA_DIST = BUGS HACKING	\
+	intltool-extract.in	\
+	intltool-merge.in	\
+	intltool-update.in	\
+	libgsf-1.spec		\
+	libgsf-gnome-1.spec
+
+DISTCLEANFILES = intltool-extract intltool-merge intltool-update
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,698 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ at WITH_LIBGSF_GNOME_TRUE@am__append_1 = libgsf-gnome-1.pc
+ at PLATFORM_WIN32_TRUE@am__append_2 = libgsf-win32-1.pc
+ at WITH_PYTHON_TRUE@am__append_3 = python
+ at WITH_GCONF_TRUE@am__append_4 = thumbnailer
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libgsf-1.pc $(am__append_1) $(am__append_2)
+
+SUBDIRS = po gsf gsf-gnome gsf-win32 doc tests $(am__append_3) $(am__append_4)
+
+EXTRA_DIST = BUGS HACKING	\
+	intltool-extract.in	\
+	intltool-merge.in	\
+	intltool-update.in	\
+	libgsf-1.spec		\
+	libgsf-gnome-1.spec
+
+
+DISTCLEANFILES = intltool-extract intltool-merge intltool-update
+
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = gsf-config.h
+CONFIG_CLEAN_FILES = libgsf-1.pc libgsf-1.spec libgsf-gnome-1.pc \
+	libgsf-gnome-1.spec libgsf-win32-1.pc libgsf-zip
+DIST_SOURCES =
+DATA = $(pkgconfig_DATA)
+
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+	ps-recursive install-info-recursive uninstall-info-recursive \
+	all-recursive install-data-recursive install-exec-recursive \
+	installdirs-recursive install-recursive uninstall-recursive \
+	check-recursive installcheck-recursive
+DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure AUTHORS \
+	COPYING COPYING.LIB ChangeLog INSTALL Makefile.am NEWS TODO \
+	acinclude.m4 aclocal.m4 compile config.guess config.sub \
+	configure configure.in depcomp gsf-config.h.in install-sh \
+	libgsf-1.pc.in libgsf-1.spec.in libgsf-gnome-1.pc.in \
+	libgsf-gnome-1.spec.in libgsf-win32-1.pc.in libgsf-zip.in \
+	ltmain.sh missing mkinstalldirs
+DIST_SUBDIRS = po gsf gsf-gnome gsf-win32 doc tests python thumbnailer
+all: gsf-config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
+
+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+	cd $(srcdir) && $(AUTOCONF)
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+gsf-config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/gsf-config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status gsf-config.h
+
+$(srcdir)/gsf-config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	touch $(srcdir)/gsf-config.h.in
+
+distclean-hdr:
+	-rm -f gsf-config.h stamp-h1
+libgsf-1.pc: $(top_builddir)/config.status libgsf-1.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+libgsf-1.spec: $(top_builddir)/config.status libgsf-1.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+libgsf-gnome-1.pc: $(top_builddir)/config.status libgsf-gnome-1.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+libgsf-gnome-1.spec: $(top_builddir)/config.status libgsf-gnome-1.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+libgsf-win32-1.pc: $(top_builddir)/config.status libgsf-win32-1.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+libgsf-zip: $(top_builddir)/config.status libgsf-zip.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+install-pkgconfigDATA: $(pkgconfig_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
+	@list='$(pkgconfig_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f; \
+	done
+
+uninstall-pkgconfigDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(pkgconfig_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(pkgconfigdir)/$$f"; \
+	  rm -f $(DESTDIR)$(pkgconfigdir)/$$f; \
+	done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@set fnord $$MAKEFLAGS; amf=$$2; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) gsf-config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	else \
+	  include_option=--include; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -f $$subdir/TAGS && \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS) gsf-config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) gsf-config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) gsf-config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = .
+distdir = $(PACKAGE)-$(VERSION)
+
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkinstalldirs) $(distdir)/. $(distdir)/doc $(distdir)/gsf $(distdir)/po
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d $(distdir)/$$subdir \
+	    || mkdir $(distdir)/$$subdir \
+	    || exit 1; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$(top_distdir)" \
+	        distdir=../$(distdir)/$$subdir \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	$(am__remove_distdir)
+	GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
+	  && rm -f $(distdir).tar.gz \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@echo "$(distdir).tar.gz is ready for distribution" | \
+	  sed 'h;s/./=/g;p;x;p;x'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA) gsf-config.h
+installdirs: installdirs-recursive
+installdirs-am:
+	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
+
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pkgconfigDATA
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-pkgconfigDATA
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+	clean-generic clean-libtool clean-recursive ctags \
+	ctags-recursive dist dist-all dist-bzip2 dist-gzip distcheck \
+	distclean distclean-generic distclean-hdr distclean-libtool \
+	distclean-recursive distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am dvi-recursive info info-am \
+	info-recursive install install-am install-data install-data-am \
+	install-data-recursive install-exec install-exec-am \
+	install-exec-recursive install-info install-info-am \
+	install-info-recursive install-man install-pkgconfigDATA \
+	install-recursive install-strip installcheck installcheck-am \
+	installdirs installdirs-am installdirs-recursive \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
+	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am \
+	uninstall-info-recursive uninstall-pkgconfigDATA \
+	uninstall-recursive
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/NEWS
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/NEWS	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/NEWS	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,371 @@
+libgsf 1.12.3
+
+Jody:
+	* Make gconf optional again.
+
+Rambokid:
+	* Fix excessive memory use problem for writing zip files.
+
+--------------------------------------------------------------------------
+libgsf 1.12.2
+
+Jean Brefort:
+	* made GSF_CLASS_FULL and GSF_DYNAMIC_CLASS_FULL really full (add
+	base_init, base_finalize and class_finalize arguments).
+
+Jody:
+	* Handle 0x8000 and 0x8001 codepages.
+	* Fix leak in array properties.
+
+Jon Kåre:
+	* Fix VT_FILETIME OLE property export.
+
+Morten:
+	* Fix problem with 64-bit OLE properties.
+	* Fix standard-violation that hit i86_64.
+
+--------------------------------------------------------------------------
+libgsf 1.12.1
+
+Dom:
+	* Better handling of error conditions when creating a zip.
+
+Jody:
+	* Patch a leak in vector properties from OLE2.
+	* Be more delicate handling truncated gzip files.
+	* Improve utility macros for dynamic type creation (incompatible).
+	* Make constructors for output_stdio outfile_stdio more flexible
+
+Morten:
+	* Fix gsf_xml_out_add_float to always use "." as separator.
+	* Fix problem with creating new files in g+s directories.
+
+--------------------------------------------------------------------------
+libgsf 1.12.0
+
+Herzi:
+	* Allow multiple calls to gsf_xml_out_add_cstr.  [#167166]
+
+Ivan:
+	* Fix codepage problem.  [#162841]
+
+Jody:
+	* Support GObject properties in GsfOutfile::new_child
+	* Cleanup the OLE2 property import
+	* Re-org the GsfDocMetadata interface
+	* Cleanup the OLE2 property export
+
+Manuel Mausz:
+	* OLE2 property export.
+
+Morten:
+	* Attempt to get non-ASCII filenames right on Win32.  [#171145]
+	* Add "raw" properties to GsfInputGzip and GsfOutputGzip to
+	  allow header/trailer-less files.  Also allow g_object_new
+	  construction of these classes.
+	* Add "uncompressed_size" property to GsfInputGzip allowing to
+	  decompress files larger than 4GB.
+	* Propagate errors from GsfOutputGzip's sink to itself.
+	* Fix GsfOutputStdio to avoid killing the target file when we
+	  get an error.
+	* Add new GsfOutputCsv and GsfOutputIconv.
+	* Fix GsfOutfileZip's handling of compression levels.
+	* Allow getting the compression level when reading zip files.
+	* Improve zip file performance.  (No longer reopens the underlying
+	  file for each member you read.)
+	* Clean up zip output for zip files with non-ASCII members.
+	* Make it possible to use g_object_new to create zip io objects.
+
+------------------------------------------------------------------------------
+libgsf 1.11.1
+
+Morten:
+	* Fix permissions for new files.  [#159331]
+	* Fix save-to-existing-file on Win32.  [#160108]
+	* Fix stdio when we're not closing the file.
+
+------------------------------------------------------------------------------
+libgsf 1.11.0
+
+Christopher James Lahey:
+	* GObject property support for input/output (for C# bindings)
+	* GObject support for doc-meta-data
+
+Frank Chiulli:
+	* Have the OLE2 property set parser store the data
+
+Jody:
+	* More work on storing OLE2 properties
+	* Add some hooks to the libxml sax wrappers to facilitate extending
+	  specs
+	* An extra wrapper to GsfOutputStdio to handle FILE* directly
+
+Jon Kåre:
+	* make xml string export more convenient by ignoring NULL
+
+Kasal:
+	* More consistent use of G_GNUC_UNUSED.
+
+Morten:
+	* Check size and seek in gsf_input_dup.
+	* Fix a pile of crashes having to do with failed dups.
+	* Fix crashes having to do with NULL input->name.
+	* Work around gnome-vfs bug #152844.
+	* Create input proxy object.
+	* Make msole reading use a proxy layer instead of dup-ing the source
+	  like crazy.  (Dup-ing is expensive for network connections and
+	  slightly expensive for disk files.)
+	* Doc fixes.
+	* Escape characters 1..31 when used in xml attributes.  [#157850]
+
+Veerapuram Varadhan:
+	* sync the ole2 property names with the existing beagle properties
+
+------------------------------------------------------------------------------
+libgsf 1.10.1
+
+Jon Kåre:
+	* Fix base64 decoding.
+
+Kasal:
+	* Lots of code auditing and cleanup.
+	* Identified the long standing source of the problem with XL corrupting
+	  large files
+
+------------------------------------------------------------------------------
+
+libgsf 1.10.0
+
+Jody:
+	* Patch to read slightly odd planmaker generated OLE2.
+	* Fix printf implementation in GsfOutfileMSOle
+	* Make the msole block sizes instance specific
+
+Morten:
+	* Attempt fix for ARM.
+	* Make gsf_input_gnomevfs_new_uri handle missing "seek" methods.
+
+Stuart Cunningham <stuartc at rd.bbc.co.uk>
+	* Enable OLE2 export for larger block sizes
+
+------------------------------------------------------------------------------
+libgsf 1.9.1
+
+J.H.M. Dassen (Ray):
+	* Corrected the location where the documentation gets installed.
+	*
+James Cape :
+	* Clean up the gtk-doc build
+
+Jody :
+	* Support DOCTYPE in the simplified xml generator
+	* More gtk-doc cleanup
+
+Morten, Dom:
+	* Avoid polluting global name space with symbols lacking gsf_ prefix.
+	  This only effects implementation utilites shared by the zip in/out
+	  code so hopefully the abi breakage will not hurt too many people.
+
+------------------------------------------------------------------------------
+libgsf 1.9.0
+
+Dom:
+	* Fix bzip output to flush if last deflate fills buffer
+
+Jody Goldberg:
+	* If the file is not an OLE2 file do not change the filepos.
+	* Handle broken ole files that specify codepage as signed short
+	* Fix reading ole files > 13.6 Meg on sparc/alpha (from Xavier Roche)
+	* Tune validation test for LPSTR properties to handle char width > 1
+	* Make the impl headers for the base interfaces public as requested
+	* Add some directory tree wrappers
+	* Work around a -fstrict-alias warning for SuSE
+	* Move to automake-1.7
+	* Fix gnome-vfs backend to open files with random access
+	* Support merging content from nested nodes for sax parsing
+	* Fix gtk-doc
+
+Joseph Frazee:
+	* patch the spec file.
+
+Morten Welinder:
+	* Properly chain finalizer.
+	* Fix gzip output to flush if last deflate fills buffer
+
+Tor Lillqvist:
+	* packaging tools for win32.
+
+------------------------------------------------------------------------------
+libgsf 1.8.2
+
+Jody:
+	* Catch invalid OLE2 files that claim there is data in a directory.
+	* Better error handling for Infile::child_by_*
+	* Work harder to restore invalid ole2 files with bad BATs.
+	* Begin an interface for ole2 export with non-default block sizes.
+	* Name the root directory 'Root Entry' to keep libole2 happy.
+
+Stuart Cunningham <stuartc at rd.bbc.co.uk>:
+	* Support CLSIDs for Storages for the AAF project
+	* Test and fix bugs reading ole files with non-default block sizes.
+
+------------------------------------------------------------------------------
+libgsf 1.8.1
+
+Morten:
+	* Plug major gzip output leak.
+
+------------------------------------------------------------------------------
+libgsf 1.8
+
+    2003 Mar 9
+	With the approval off all contributors the library has been
+	relicensed from GPL -> LGPL
+
+Dom:
+	* Some extra casts to make Bloodshed DevC++ happy
+	* IOChannel input work
+	* BZ2 input & output
+	* Return the derived types from constructor functions
+	* Support GObject properties for the inputs and outputs
+	* Start an AR infile
+	* Start Win32 COM IStream input/output
+	
+Jody:
+	* Fix ms ole export bug that would not clip overly long file names.
+	* Fix ms ole import bug with potentially invalid names
+
+Rodrigo:
+	* Added GsfInputIOChannel, a GIOChannel-based input.
+
+Xavier Roche:
+	* Patch some gsize == gunit32 assumptions.
+
+------------------------------------------------------------------------------
+libgsf 1.7
+
+Dom:
+	* Extend gnome-vfs support to handle uris
+	* Transacted output capability
+	* Ensure large reads and writes happen
+
+Jody:
+	* Start work on some simplified xml export utilities.
+	* Extend xml import facilities to support namespaces.
+	* Catch invalid OLE files with cycles.
+	* Fix exporting OLE files larger than 6.8 Meg
+
+Jon Kåre:
+	* Only unset valid GValues when reading msole properties.
+
+Morten:
+	* Fix xml save problem.
+
+Tor Lillqvist:
+	* Tweaks for the win32 build.
+
+------------------------------------------------------------------------------
+libgsf 1.6.0
+
+Jody:
+	* Be more anal about invalid stream names..
+	* Fix documentation install.
+	* Fix a subtle leak that Morten found.
+	* Suppress some warnings in the test suite.
+
+Jon Kåre:
+	* Add printf mechanism.
+	* Fix misc bugs.
+	* Add gzip output.
+
+Morten:
+	* Don't overwrite files we're not supposed to write.
+
+------------------------------------------------------------------------------
+libgsf 1.5.0
+
+Jody:
+	* Adjust sax routines to support recusive structures.
+
+Morten:
+	* Handle file names that are not valid utf8.
+
+Dom:
+	* Port over code page utilities from libwv.
+
+------------------------------------------------------------------------------
+libgsf 1.4.0
+
+Jody:
+	* Move some iconv utility routines here from gnumeric.
+	* More work on reading ole property sets.
+	* Minor tweak directory handling for infile-zip.
+	* Replace test-cat-zip with test-msole2
+	* Add error handling mechanism to GsfOutput
+	* Borrow the temp file handling from gedit
+	* Add some xml SAX parsing utilities (api is tentative)
+	* Add some structured blob utilites for easy in/out of blob trees
+	* Support unicode property values and names in ole files.
+
+Jon Kåre:
+	* sync the directory semantics of infile-zip with infile-msole.
+	* Support seeking within zip streams.
+	* Make dup work properly for gzip and zip children.
+	* Implement Zip export.
+
+------------------------------------------------------------------------------
+libgsf 1.3.0
+
+Jody:
+	* Split gnome-vfs and bonobo into a distinct library
+	* Polish the OLE export so that libole2 is molified.
+	* Add a timestamp object for use with metadata
+	* Some initial work on MS OLE property streams (doc metadata)
+	* Some initial work on doc meta data (expect changes as ole settles)
+
+Jon Kåre:
+	* Work and plan to support big files.
+
+------------------------------------------------------------------------------
+libgsf 1.2.0
+
+Dom:
+	* Read/Write gnome-vfs (untested)
+	* Write to mem buf (untested)
+
+Jody:
+	* Add some safety and utilty to ensure outputs are closed before
+	  finalizing
+	* Add some printf style capabilities for outputs.
+
+Ray:
+	* improve doc generation
+	* Update debian support in preparation for packaging.
+
+Rodrigo:
+	* more work on io_context.
+
+Tambet:
+	* Read zip files
+
+------------------------------------------------------------------------------
+libgsf 1.1.0
+
+Jody:
+	* Initial pass at an api
+	* Read & Write OLE
+	* Read gzip
+	* Read textlines
+	* Read & Write stdio wrapper
+	* Some libxml2 utility wrappers
+	* some test programs to dump or copy ole streams and file structures
+	* Uncompress vba streams
+	* Initial incomplete work on parsing vba3 & vba56 directories
+
+Morten:
+	* mmap/buffer wrapper
+	* testing & purification
+
+Jon Kåre:
+	* Some configure cleanup
+	* Bonobo Stream wrapper

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/README
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/README	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/README	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,58 @@
+libgsf -- The G Structured File Library
+Jody Goldberg <jody at gnome.org>
+
+   The project aims to provide an efficient extensible i/o abstraction for
+dealing with different structured file formats.
+
+   libgsf is licensed under the terms of the GNU LGPL included in the
+file COPYING.LIB.
+
+To report libgsf bugs, please visit bugzilla.gnome.org.
+-- 
+
+This library has taken insight from
+
+OLE:
+    - libole : Michael Meeks, Arturo Tena, and Frank Chiulli
+	- which was based on
+	    Laola : by Martin Schwartz
+	    WINE : Marcus Meissner, Francis Beaudet, Sylvain St-Germain and
+		    Thuy Nguyen
+	    Caolan McNamara's work
+
+    - POIFS : Marc Johnson
+
+VBA:
+    - libole : Michael Meeks and Frank Chiulli figuring out quite a bit about
+		how a vba stream is stored.
+    - OpenOffice : For confirming many of Michael's hypothesis' and supplying
+		insight into the project file structure.
+    - Costin Raiu, Kaspersky Labs <craiu at pcnet.ro>
+	: For commenting that the dir stream had offsets too.  That way we can
+	   avoid OpenOffice's trouble parsing pcode.
+
+gzip:
+    - zlib : for doing all the heavy lifting, and suppling gzio.c as an
+		example.
+
+Requirements
+------------
+    autoconf	2.5x
+    automake	1.7
+
+    glib	>= 1.3.10
+    zlib	>= 1.1.3
+    libxml2	>= 2.4.16	(not really, but it is the first to be tested)
+
+Mailing lists
+-------------
+
+   There is NO mailing list used to discuss libgsf specificly as yet.  For now
+please use the gnumeric list. To subscribe send a mail to:
+
+	gnumeric-list-request at gnome.org
+And in the body of the message write "subscribe"
+
+An archive of the mailing lists is available in:
+	http://www.gnome.org/mailing-lists/archives/gnumeric-list/
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/TODO
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/TODO	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/TODO	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+Near:
+    - Check the outputs for proper wrap use.  eg GsfOutputGzip does not
+    - rework proposed meta data framework to support improved understanding of
+      MS Office
+    - Complete MS property set read and write
+      (complete codepage support for writing)
+    - work on GsfOutput error handling to propagate errors up the stack.
+      Maybe something signal based ?
+    - for the stdio output check that we can actually write to the target file
+      on open even though we do not want to write to it until later.
+    - Add 'cancel' flag to GsfOutputStdio to support not overwriting the target
+      file even if things succeed.
+
+Longer:
+    - More work on VBA directory parsing so that we can decompress
+      source streams.
+    - Add encrypt and decrypt wrappers
+	- precede with some randomness due to static nature of xml header
+	- be absolutely clear about how we handle seek (only encrypt data on
+	  first pass)
+    - Can we do we put a mechanism for signing and authenticating ?
+
+Future:
+    - parse vba p-code directly to produce some other language.
+    - move biff utils here from gnumeric
+
+------------------------------------------------------------------------------------
+potential 2.0 api changes
+
+- Infile::get_child*  To take a GError to handle failure
+- Convert Input, Infile, Output, Outfile into interfaces
+- Split Input/Output into base and seekable
+- Remove/Alleviate requirement that we know the size of a stream on open
+- input::seek and output::seek use the opposite conventions

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/acinclude.m4
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/acinclude.m4	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/acinclude.m4	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,4 @@
+#
+# This is a dummy file.  Copy acinclude.m4.am15 over this if you want
+# to build with python bindings.  See python/README-python .
+#

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/aclocal.m4
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/aclocal.m4	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/aclocal.m4	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,7727 @@
+# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+#
+# This is a dummy file.  Copy acinclude.m4.am15 over this if you want
+# to build with python bindings.  See python/README-python .
+#
+
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# This macro actually does too much some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 10
+
+AC_PREREQ([2.54])
+
+# Autoconf 2.50 wants to disallow AM_ names.  We explicitly allow
+# the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG(AMTAR, tar)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+	 [AM_AUTOMAKE_VERSION([1.7.9])])
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+
+# Copyright 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+#  -*- Autoconf -*-
+
+
+# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+# Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_AUX_DIR_EXPAND], [
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# serial 5						-*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
+
+# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+	s/\\\\$//
+	p
+	n
+	/\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Check to see how 'make' treats includes.	-*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# AM_CONDITIONAL                                              -*- Autoconf -*-
+
+# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 5
+
+AC_PREREQ(2.52)
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.])
+fi])])
+
+# Add --enable-maintainer-mode option to configure.
+# From Jim Meyering
+
+# Copyright 1996, 1998, 2000, 2001, 2002  Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode is disabled by default
+  AC_ARG_ENABLE(maintainer-mode,
+[  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer],
+      USE_MAINTAINER_MODE=$enableval,
+      USE_MAINTAINER_MODE=no)
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 47 AC_PROG_LIBTOOL
+# Debian $Rev: 214 $
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+         [],
+         [m4_define([AC_PROVIDE_IFELSE],
+	         [m4_ifdef([AC_PROVIDE_$1],
+		           [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+  ])])
+dnl And a similar setup for Fortran 77 support
+  AC_PROVIDE_IFELSE([AC_PROG_F77],
+    [AC_LIBTOOL_F77],
+    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+      [AC_LIBTOOL_GCJ],
+      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+	[AC_LIBTOOL_GCJ],
+      [ifdef([AC_PROG_GCJ],
+	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([A][M_PROG_GCJ],
+	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([LT_AC_PROG_GCJ],
+	     [define([LT_AC_PROG_GCJ],
+		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+    [AC_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+[$]*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "[$]0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+  ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$5], , :, [$5])
+else
+    ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                          [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+     else
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$4], , :, [$4])
+else
+    ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+ *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_unknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+   ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+    	  lt_cv_dlopen_self_static, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+   test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_AC_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         AC_MSG_RESULT([yes])
+       else
+  AC_MSG_RESULT([no])
+fi
+       ;;
+   *)
+  AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+        [include additional configurations @<:@automatic@:>@])],
+    [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    AC_MSG_WARN([output file `$ofile' does not exist])
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+    else
+      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+    "") ;;
+    *)  AC_MSG_ERROR([invalid tag name: $tagname])
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      AC_MSG_ERROR([tag name \"$tagname\" already exists])
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && test "X$CXX" != "Xno"; then
+	  AC_LIBTOOL_LANG_CXX_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+	  AC_LIBTOOL_LANG_F77_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+	  AC_LIBTOOL_LANG_GCJ_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+	AC_LIBTOOL_LANG_RC_CONFIG
+	;;
+
+      *)
+	AC_MSG_ERROR([Unsupported tag name: $tagname])
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+  fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+    [AC_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+        ;;
+      *)
+	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	*/dev/null*)
+	  lt_cv_path_NM="$tmp_nm -p"
+	  break
+	  ;;
+	*)
+	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	  ;;
+	esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided, it is assumed to be `libltdl'.  LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'.  LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!).  If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, lt_dlinit,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    LTDLINCL=
+  fi
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+#
+# Check for any special shared library compilation flags.
+#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+    ;;
+  esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+  AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+  if echo "$old_CC $old_CFLAGS " | grep "[[ 	]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ 	]]" >/dev/null; then :
+  else
+    AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+    _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+  darwin* | rhapsody*)
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case "$host_os" in
+    rhapsody* | darwin1.[[012]])
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[[012]])
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    output_verbose_link_cmd='echo'
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+    _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+  else
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+  fi
+    ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+  AC_PROG_LD
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    _LT_AC_TAGVAR(archive_cmds, $1)=''
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	else
+	  # We have old collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	fi
+      esac
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      _LT_AC_SYS_LIBPATH_AIX
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	_LT_AC_SYS_LIBPATH_AIX
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	# -bexpall does not export symbols beginning with underscore (_)
+	_LT_AC_TAGVAR(always_export_symbols, $1)=yes
+	# Exported symbols can be pulled into shared objects from archives
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	# This is similar to how AIX traditionally builds it's shared libraries.
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+    # as there is no search path for DLLs.
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+    _LT_AC_TAGVAR(always_export_symbols, $1)=no
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+  ;;
+
+  darwin* | rhapsody*)
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case "$host_os" in
+    rhapsody* | darwin1.[[012]])
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[[012]])
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    lt_int_apple_cc_single_mod=no
+    output_verbose_link_cmd='echo'
+    if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+      lt_int_apple_cc_single_mod=yes
+    fi
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    else
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    fi
+    _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+  else
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+  fi
+    ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      ghcx)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  freebsd-elf*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  freebsd* | kfreebsd*-gnu)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC)
+      # FIXME: insert proper C++ library support
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    aCC)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+        ;;
+      ia64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        ;;
+      *)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+    ia64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    *)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      aCC)
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case "$host_cpu" in
+	    ia64*|hppa*64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC)
+	# SGI C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+	  else
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+	;;
+    esac
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc)
+	# Intel C++
+	with_gnu_ld=yes
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      cxx)
+	# Compaq C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry $objdir/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	 _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  sco*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      lcc)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.2, 5.x and Centerline C++
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx)
+	# Green Hills C++ Compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars.  Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    _LT_AC_TAGVAR(compiler, $1) \
+    _LT_AC_TAGVAR(CC, $1) \
+    _LT_AC_TAGVAR(LD, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+    _LT_AC_TAGVAR(old_archive_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+    _LT_AC_TAGVAR(predep_objects, $1) \
+    _LT_AC_TAGVAR(postdep_objects, $1) \
+    _LT_AC_TAGVAR(predeps, $1) \
+    _LT_AC_TAGVAR(postdeps, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(archive_cmds, $1) \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(postinstall_cmds, $1) \
+    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+    _LT_AC_TAGVAR(no_undefined_flag, $1) \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+    _LT_AC_TAGVAR(hardcode_automatic, $1) \
+    _LT_AC_TAGVAR(module_cmds, $1) \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(exclude_expsyms, $1) \
+    _LT_AC_TAGVAR(include_expsyms, $1); do
+
+    case $var in
+    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(module_cmds, $1) | \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\[$]0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+    ;;
+  esac
+
+ifelse([$1], [],
+  [cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  AC_MSG_NOTICE([creating $ofile])],
+  [cfgfile="$ofile"])
+
+  cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+])
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris* | sysv5*)
+  symcode='[[BDRT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    if test "$host_cpu" != ia64; then
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    case "$host_cpu" in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC)
+	    # KAI C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  icpc)
+	    # Intel C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  cxx)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC)
+	    # Rational C++ 2.4.1
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx)
+	    # Digital/Compaq C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      sco*)
+	case $cc_basename in
+	  CC)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.x
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc)
+	    # Lucid
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC)
+	    # NonStop-UX NCC 3.20
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      unixware*)
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      ccc*)
+        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  linux*)
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+  ;;
+  *)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+],[
+  runpath_var=
+  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_AC_TAGVAR(archive_cmds, $1)=
+  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+  _LT_AC_TAGVAR(module_cmds, $1)=
+  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(always_export_symbols, $1)=no
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_AC_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=no
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds"
+      fi
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=no
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then
+      runpath_var=LD_RUN_PATH
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_AC_TAGVAR(archive_cmds, $1)=''
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  else
+  	  # We have old collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 _LT_AC_SYS_LIBPATH_AIX
+	 _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      # see comment about different semantics on the GNU ld section
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    bsdi4*)
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      case "$host_os" in
+      rhapsody* | darwin1.[[012]])
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[[012]])
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+      ;;
+
+    dgux*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    openbsd*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	   ;;
+	 *)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+      esac
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[[78]]* | unixware7*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv5*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_AC_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && break
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+SED=$lt_cv_path_SED
+])
+AC_MSG_RESULT([$SED])
+])
+
+
+dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 2 IT_PROG_INTLTOOL
+AC_DEFUN([IT_PROG_INTLTOOL],
+[
+
+if test -n "$1"; then
+    AC_MSG_CHECKING(for intltool >= $1)
+
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
+    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }'  < ${ac_aux_dir}/intltool-update.in`
+    changequote({{,}})
+    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
+    changequote([,])
+
+    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+    else
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool $1 or later.])
+	exit 1
+    fi
+fi
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< [$]@' 
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+
+AC_SUBST(INTLTOOL_DESKTOP_RULE)
+AC_SUBST(INTLTOOL_DIRECTORY_RULE)
+AC_SUBST(INTLTOOL_KEYS_RULE)
+AC_SUBST(INTLTOOL_PROP_RULE)
+AC_SUBST(INTLTOOL_OAF_RULE)
+AC_SUBST(INTLTOOL_PONG_RULE)
+AC_SUBST(INTLTOOL_SERVER_RULE)
+AC_SUBST(INTLTOOL_SHEET_RULE)
+AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
+AC_SUBST(INTLTOOL_UI_RULE)
+AC_SUBST(INTLTOOL_XAM_RULE)
+AC_SUBST(INTLTOOL_KBD_RULE)
+AC_SUBST(INTLTOOL_XML_RULE)
+AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
+AC_SUBST(INTLTOOL_CAVES_RULE)
+AC_SUBST(INTLTOOL_SCHEMAS_RULE)
+AC_SUBST(INTLTOOL_THEME_RULE)
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+AC_SUBST(INTLTOOL_EXTRACT)
+AC_SUBST(INTLTOOL_MERGE)
+AC_SUBST(INTLTOOL_UPDATE)
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+   AC_MSG_ERROR([perl not found; required for intltool])
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   AC_MSG_ERROR([perl 5.x required for intltool])
+fi
+if test "x$2" != "xno-xml"; then
+   AC_MSG_CHECKING([for XML::Parser])
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       AC_MSG_RESULT([ok])
+   else
+       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+   fi
+fi
+
+AC_PATH_PROG(INTLTOOL_ICONV, iconv, iconv)
+AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
+AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
+AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
+
+# Remove file type tags (using []) from po/POTFILES.
+
+ifdef([AC_DIVERSION_ICMDS],[
+  AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
+     [mv -f po/POTFILES po/POTFILES.tmp
+      sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
+      rm -f po/POTFILES.tmp
+     ]dnl
+  AC_DIVERT_POP()
+],[
+  ifdef([AC_CONFIG_COMMANDS_PRE],[
+    AC_CONFIG_COMMANDS_PRE([
+       [mv -f po/POTFILES po/POTFILES.tmp
+        sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
+        rm -f po/POTFILES.tmp
+       ]dnl
+    ])
+  ])
+])
+
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+AC_CONFIG_COMMANDS([intltool], [
+
+intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
+               -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
+               -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
+               -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
+               -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
+               -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+  > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+  rm -f intltool-extract.out
+else
+  mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+  > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+  rm -f intltool-merge.out
+else
+  mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+  > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+  rm -f intltool-update.out
+else
+  mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+], INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
+MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
+XGETTEXT='${INTLTOOL_XGETTEXT}')
+
+])
+
+# deprecated macros
+AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
+# A hint is needed for aclocal from Automake <= 1.9.4:
+# AC_DEFUN([AC_PROG_INTLTOOL], ...)
+
+
+# Copyright (C) 1995-2002 Free Software Foundation, Inc.
+# Copyright (C) 2001-2003,2004 Red Hat, Inc.
+#
+# This file is free software, distributed under the terms of the GNU
+# General Public License.  As a special exception to the GNU General
+# Public License, this file may be distributed as part of a program
+# that contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+#
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper at cygnus.com>, 1995, 1996
+#
+# Modified to never use included libintl. 
+# Owen Taylor <otaylor at redhat.com>, 12/15/1998
+#
+# Major rework to remove unused code
+# Owen Taylor <otaylor at redhat.com>, 12/11/2002
+#
+# Added better handling of ALL_LINGUAS from GNU gettext version 
+# written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
+#
+# Modified to require ngettext
+# Matthias Clasen <mclasen at redhat.com> 08/06/2004
+#
+# We need this here as well, since someone might use autoconf-2.5x
+# to configure GLib then an older version to configure a package
+# using AM_GLIB_GNU_GETTEXT
+AC_PREREQ(2.53)
+
+dnl
+dnl We go to great lengths to make sure that aclocal won't 
+dnl try to pull in the installed version of these macros
+dnl when running aclocal in the glib directory.
+dnl
+m4_copy([AC_DEFUN],[glib_DEFUN])
+m4_copy([AC_REQUIRE],[glib_REQUIRE])
+dnl
+dnl At the end, if we're not within glib, we'll define the public
+dnl definitions in terms of our private definitions.
+dnl
+
+# GLIB_LC_MESSAGES
+#--------------------
+glib_DEFUN([GLIB_LC_MESSAGES],
+  [AC_CHECK_HEADERS([locale.h])
+    if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+      [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
+       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1,
+        [Define if your <locale.h> file defines LC_MESSAGES.])
+    fi
+  fi])
+
+# GLIB_PATH_PROG_WITH_TEST
+#----------------------------
+dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  /*)
+  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in ifelse([$5], , $PATH, [$5]); do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if [$3]; then
+	ac_cv_path_$1="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+  ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+# GLIB_WITH_NLS
+#-----------------
+glib_DEFUN([GLIB_WITH_NLS],
+  dnl NLS is obligatory
+  [USE_NLS=yes
+    AC_SUBST(USE_NLS)
+
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    AC_CHECK_HEADER(libintl.h,
+     [gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
+        [AC_TRY_LINK([
+#include <libintl.h>
+],
+         [return !ngettext ("","", 1)],
+	  gt_cv_func_ngettext_libc=yes,
+          gt_cv_func_ngettext_libc=no)
+        ])
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+	      AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
+        	[AC_TRY_LINK([
+#include <libintl.h>
+],
+	          [return !dgettext ("","")],
+		  gt_cv_func_dgettext_libc=yes,
+	          gt_cv_func_dgettext_libc=no)
+        	])
+      fi
+  
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+        AC_CHECK_FUNCS(bind_textdomain_codeset)
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+	 || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+        
+        AC_CHECK_LIB(intl, bindtextdomain,
+	    [AC_CHECK_LIB(intl, ngettext,
+		    [AC_CHECK_LIB(intl, dgettext,
+			          gt_cv_func_dgettext_libintl=yes)])])
+
+	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+	  AC_MSG_CHECKING([if -liconv is needed to use gettext])
+	  AC_MSG_RESULT([])
+  	  AC_CHECK_LIB(intl, ngettext,
+          	[AC_CHECK_LIB(intl, dcgettext,
+		       [gt_cv_func_dgettext_libintl=yes
+			libintl_extra_libs=-liconv],
+			:,-liconv)],
+		:,-liconv)
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+          AC_CHECK_FUNCS(bind_textdomain_codeset)
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+  
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+  
+      if test "$gt_cv_have_gettext" = "yes"; then
+	AC_DEFINE(HAVE_GETTEXT,1,
+	  [Define if the GNU gettext() function is already present or preinstalled.])
+	GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+	  [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
+	if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+	  AC_CHECK_FUNCS(dcgettext)
+	  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+	  GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+	    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+	  AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
+			 return _nl_msg_cat_cntr],
+	    [CATOBJEXT=.gmo 
+             DATADIRNAME=share],
+	    [case $host in
+	    *-*-solaris*)
+	    dnl On Solaris, if bind_textdomain_codeset is in libc,
+	    dnl GNU format message catalog is always supported,
+            dnl since both are added to the libc all together.
+	    dnl Hence, we'd like to go with DATADIRNAME=share and
+	    dnl and CATOBJEXT=.gmo in this case.
+            AC_CHECK_FUNC(bind_textdomain_codeset,
+	      [CATOBJEXT=.gmo 
+               DATADIRNAME=share],
+	      [CATOBJEXT=.mo
+               DATADIRNAME=lib])
+	    ;;
+	    *)
+	    CATOBJEXT=.mo
+            DATADIRNAME=lib
+	    ;;
+	    esac])
+          LIBS="$glib_save_LIBS"
+	  INSTOBJEXT=.mo
+	else
+	  gt_cv_have_gettext=no
+	fi
+      fi
+    ])
+
+    if test "$gt_cv_have_gettext" = "yes" ; then
+      AC_DEFINE(ENABLE_NLS, 1,
+        [always defined to indicate that i18n is enabled])
+    fi
+
+    dnl Test whether we really found GNU xgettext.
+    if test "$XGETTEXT" != ":"; then
+      dnl If it is not GNU xgettext we define it as : so that the
+      dnl Makefiles still can work.
+      if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        AC_MSG_RESULT(
+	  [found xgettext program is not GNU xgettext; ignore it])
+        XGETTEXT=":"
+      fi
+    fi
+
+    # We need to process the po/ directory.
+    POSUB=po
+
+    AC_OUTPUT_COMMANDS(
+      [case "$CONFIG_FILES" in *po/Makefile.in*)
+        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+      esac])
+
+    dnl These rules are solely for the distribution goal.  While doing this
+    dnl we only have to keep exactly one list of the available catalogs
+    dnl in configure.in.
+    for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+    dnl Make all variables we use known to autoconf.
+    AC_SUBST(CATALOGS)
+    AC_SUBST(CATOBJEXT)
+    AC_SUBST(DATADIRNAME)
+    AC_SUBST(GMOFILES)
+    AC_SUBST(INSTOBJEXT)
+    AC_SUBST(INTLLIBS)
+    AC_SUBST(PO_IN_DATADIR_TRUE)
+    AC_SUBST(PO_IN_DATADIR_FALSE)
+    AC_SUBST(POFILES)
+    AC_SUBST(POSUB)
+  ])
+
+# AM_GLIB_GNU_GETTEXT
+# -------------------
+# Do checks necessary for use of gettext. If a suitable implementation 
+# of gettext is found in either in libintl or in the C library,
+# it will set INTLLIBS to the libraries needed for use of gettext
+# and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
+# gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
+# on various variables needed by the Makefile.in.in installed by 
+# glib-gettextize.
+dnl
+glib_DEFUN([GLIB_GNU_GETTEXT],
+  [AC_REQUIRE([AC_PROG_CC])dnl
+   AC_REQUIRE([AC_HEADER_STDC])dnl
+   
+   GLIB_LC_MESSAGES
+   GLIB_WITH_NLS
+
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+ 	   # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
+
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+   dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
+   dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
+   dnl Try to locate is.
+   MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+   AC_SUBST(MKINSTALLDIRS)
+
+   dnl Generate list of files to be processed by xgettext which will
+   dnl be included in po/Makefile.
+   test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+	< $srcdir/po/POTFILES.in > po/POTFILES
+  ])
+
+# AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
+# -------------------------------
+# Define VARIABLE to the location where catalog files will
+# be installed by po/Makefile.
+glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
+[glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
+glib_save_prefix="$prefix"
+glib_save_exec_prefix="$exec_prefix"
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+test "x$exec_prefix" = xNONE && exec_prefix=$prefix
+if test "x$CATOBJEXT" = "x.mo" ; then
+  localedir=`eval echo "${libdir}/locale"`
+else
+  localedir=`eval echo "${datadir}/locale"`
+fi
+prefix="$glib_save_prefix"
+exec_prefix="$glib_save_exec_prefix"
+AC_DEFINE_UNQUOTED($1, "$localedir",
+  [Define the location where the catalogs will be installed])
+])
+
+dnl
+dnl Now the definitions that aclocal will find
+dnl
+ifdef(glib_configure_in,[],[
+AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
+AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
+])dnl
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=m4_ifval([$1], [$1], [0.9.0])
+	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		PKG_CONFIG=""
+	fi
+		
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+        PKG_CHECK_EXISTS([$3],
+                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+			 [pkg_failed=yes])
+else
+	pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+if test $pkg_failed = yes; then
+	$1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" 1>&AS_MESSAGE_LOG_FD
+
+	ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the $1_CFLAGS and $1_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.])],
+		[$4])
+elif test $pkg_failed = untried; then
+	ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the $1_CFLAGS and $1_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+		[$4])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+dnl GNOME_COMPILE_WARNINGS
+dnl Turn on many useful compiler warnings
+dnl For now, only works on GCC
+AC_DEFUN([GNOME_COMPILE_WARNINGS],[
+    dnl ******************************
+    dnl More compiler warnings
+    dnl ******************************
+
+    AC_ARG_ENABLE(compile-warnings, 
+                  AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
+                                 [Turn on compiler warnings]),,
+                  [enable_compile_warnings="m4_default([$1],[yes])"])
+
+    warnCFLAGS=
+    if test "x$GCC" != xyes; then
+	enable_compile_warnings=no
+    fi
+
+    warning_flags=
+    realsave_CFLAGS="$CFLAGS"
+
+    case "$enable_compile_warnings" in
+    no)
+	warning_flags=
+	;;
+    minimum)
+	warning_flags="-Wall"
+	;;
+    yes)
+	warning_flags="-Wall -Wmissing-prototypes"
+	;;
+    maximum|error)
+	warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+	CFLAGS="$warning_flags $CFLAGS"
+	for option in -Wno-sign-compare; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		AC_MSG_CHECKING([whether gcc understands $option])
+		AC_TRY_COMPILE([], [],
+			has_option=yes,
+			has_option=no,)
+		CFLAGS="$SAVE_CFLAGS"
+		AC_MSG_RESULT($has_option)
+		if test $has_option = yes; then
+		  warning_flags="$warning_flags $option"
+		fi
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+	if test "$enable_compile_warnings" = "error" ; then
+	    warning_flags="$warning_flags -Werror"
+	fi
+	;;
+    *)
+	AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
+	;;
+    esac
+    CFLAGS="$realsave_CFLAGS"
+    AC_MSG_CHECKING(what warning flags to pass to the C compiler)
+    AC_MSG_RESULT($warning_flags)
+
+    AC_ARG_ENABLE(iso-c,
+                  AC_HELP_STRING([--enable-iso-c],
+                                 [Try to warn if code is not ISO C ]),,
+                  [enable_iso_c=no])
+
+    AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
+    complCFLAGS=
+    if test "x$enable_iso_c" != "xno"; then
+	if test "x$GCC" = "xyes"; then
+	case " $CFLAGS " in
+	    *[\ \	]-ansi[\ \	]*) ;;
+	    *) complCFLAGS="$complCFLAGS -ansi" ;;
+	esac
+	case " $CFLAGS " in
+	    *[\ \	]-pedantic[\ \	]*) ;;
+	    *) complCFLAGS="$complCFLAGS -pedantic" ;;
+	esac
+	fi
+    fi
+    AC_MSG_RESULT($complCFLAGS)
+
+    WARN_CFLAGS="$warning_flags $complCFLAGS"
+    AC_SUBST(WARN_CFLAGS)
+])
+
+dnl For C++, do basically the same thing.
+
+AC_DEFUN([GNOME_CXX_WARNINGS],[
+  AC_ARG_ENABLE(cxx-warnings,
+                AC_HELP_STRING([--enable-cxx-warnings=@<:@no/minimum/yes@:>@]
+                               [Turn on compiler warnings.]),,
+                [enable_cxx_warnings="m4_default([$1],[minimum])"])
+
+  AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
+  warnCXXFLAGS=
+  if test "x$GCC" != xyes; then
+    enable_compile_warnings=no
+  fi
+  if test "x$enable_cxx_warnings" != "xno"; then
+    if test "x$GCC" = "xyes"; then
+      case " $CXXFLAGS " in
+      *[\ \	]-Wall[\ \	]*) ;;
+      *) warnCXXFLAGS="-Wall -Wno-unused" ;;
+      esac
+
+      ## -W is not all that useful.  And it cannot be controlled
+      ## with individual -Wno-xxx flags, unlike -Wall
+      if test "x$enable_cxx_warnings" = "xyes"; then
+	warnCXXFLAGS="$warnCXXFLAGS -Wshadow -Woverloaded-virtual"
+      fi
+    fi
+  fi
+  AC_MSG_RESULT($warnCXXFLAGS)
+
+   AC_ARG_ENABLE(iso-cxx,
+                 AC_HELP_STRING([--enable-iso-cxx],
+                                [Try to warn if code is not ISO C++ ]),,
+                 [enable_iso_cxx=no])
+
+   AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
+   complCXXFLAGS=
+   if test "x$enable_iso_cxx" != "xno"; then
+     if test "x$GCC" = "xyes"; then
+      case " $CXXFLAGS " in
+      *[\ \	]-ansi[\ \	]*) ;;
+      *) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
+      esac
+
+      case " $CXXFLAGS " in
+      *[\ \	]-pedantic[\ \	]*) ;;
+      *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
+      esac
+     fi
+   fi
+  AC_MSG_RESULT($complCXXFLAGS)
+
+  WARN_CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
+  AC_SUBST(WARN_CXXFLAGS)
+])
+
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+  AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+  AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+  dnl for overriding the documentation installation directory
+  AC_ARG_WITH(html-dir,
+    AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+    [with_html_dir='${datadir}/gtk-doc/html'])
+  HTML_DIR="$with_html_dir"
+  AC_SUBST(HTML_DIR)
+
+  dnl enable/disable documentation building
+  AC_ARG_ENABLE(gtk-doc,
+    AC_HELP_STRING([--enable-gtk-doc],
+                   [use gtk-doc to build documentation [default=no]]),,
+    enable_gtk_doc=no)
+
+  have_gtk_doc=no
+  if test x$enable_gtk_doc = xyes; then
+    if test -z "$PKG_CONFIG"; then
+      AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+    fi
+    if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+      have_gtk_doc=yes
+    fi
+
+  dnl do we want to do a version check?
+ifelse([$1],[],,
+    [gtk_doc_min_version=$1
+    if test "$have_gtk_doc" = yes; then
+      AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+      if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+        AC_MSG_RESULT(yes)
+      else
+        AC_MSG_RESULT(no)
+        have_gtk_doc=no
+      fi
+    fi
+])
+    if test "$have_gtk_doc" != yes; then
+      enable_gtk_doc=no
+    fi
+  fi
+
+  AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+  AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
+
+dnl AM_GCONF_SOURCE_2
+dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
+dnl  (i.e. pass to gconftool-2
+dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
+dnl  you should install foo.schemas files
+dnl
+
+AC_DEFUN([AM_GCONF_SOURCE_2],
+[
+  if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+    GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+  else
+    GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+  fi
+
+  AC_ARG_WITH(gconf-source, 
+  [  --with-gconf-source=sourceaddress      Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
+
+  AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
+  AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
+
+  if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+  fi
+
+  AC_ARG_WITH(gconf-schema-file-dir, 
+  [  --with-gconf-schema-file-dir=dir        Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
+
+  AC_SUBST(GCONF_SCHEMA_FILE_DIR)
+  AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
+
+  AC_ARG_ENABLE(schemas-install,
+     [  --disable-schemas-install	Disable the schemas installation],
+     [case "${enableval}" in
+       yes) schemas_install=true ;;
+       no)  schemas_install=false ;;
+       *) AC_MSG_ERROR(bad value ${enableval} for --enable-schemas-install) ;;
+     esac],[schemas_install=true])
+     AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test x$schemas_install = xtrue)
+])
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/compile
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/compile	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/compile	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,107 @@
+#! /bin/sh
+
+# Wrapper for compilers which do not understand `-c -o'.
+
+# Copyright 1999, 2000 Free Software Foundation, Inc.
+# Written by Tom Tromey <tromey at cygnus.com>.
+#
+# 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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Usage:
+# compile PROGRAM [ARGS]...
+# `-o FOO.o' is removed from the args passed to the actual compile.
+
+# Usage statement added by Billy Biggs <vektor at dumbterm.net>.
+if [ -z $1 ]; then
+    echo "Wrapper for compilers which do not understand '-c -o'."
+    echo "usage: compile PROGRAM [ARGS]..."
+    echo "'-o FOO.o' is removed from the args passed to the actual compile."
+    exit 1
+fi
+
+prog=$1
+shift
+
+ofile=
+cfile=
+args=
+while test $# -gt 0; do
+   case "$1" in
+    -o)
+       # configure might choose to run compile as `compile cc -o foo foo.c'.
+       # So we do something ugly here.
+       ofile=$2
+       shift
+       case "$ofile" in
+	*.o | *.obj)
+	   ;;
+	*)
+	   args="$args -o $ofile"
+	   ofile=
+	   ;;
+       esac
+       ;;
+    *.c)
+       cfile=$1
+       args="$args $1"
+       ;;
+    *)
+       args="$args $1"
+       ;;
+   esac
+   shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+   # If no `-o' option was seen then we might have been invoked from a
+   # pattern rule where we don't need one.  That is ok -- this is a
+   # normal compilation that the losing compiler can handle.  If no
+   # `.c' file was seen then we are probably linking.  That is also
+   # ok.
+   exec "$prog" $args
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use `[/.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
+while true; do
+   if mkdir $lockdir > /dev/null 2>&1; then
+      break
+   fi
+   sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir $lockdir; exit 1" 1 2 15
+
+# Run the compile.
+"$prog" $args
+status=$?
+
+if test -f "$cofile"; then
+   mv "$cofile" "$ofile"
+fi
+
+rmdir $lockdir
+exit $status


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/compile
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.guess
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.guess	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.guess	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1466 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-08-03'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    x86:Interix*:[34]*)
+	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+	exit ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#ifdef __INTEL_COMPILER
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.guess
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.sub
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.sub	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.sub	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1579 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-07-08'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| ms1 \
+	| msp430 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m32c)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| ms1-* \
+	| msp430-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	m32c-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16c)
+		basic_machine=cr16c-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/config.sub
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,25867 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59 for libgsf 1.12.3.
+#
+# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf>.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='libgsf'
+PACKAGE_TARNAME='libgsf'
+PACKAGE_VERSION='1.12.3'
+PACKAGE_STRING='libgsf 1.12.3'
+PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf'
+
+ac_unique_file="gsf/gsf.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LIBGSF_MAJOR_VERSION LIBGSF_MINOR_VERSION LIBGSF_MICRO_VERSION VERSION_INFO INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT ACLOCAL_AMFLAGS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PKG_CONFIG INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL INTLTOOL_ICONV INTLTOOL_MSGFMT INTLTOOL_MSGMERGE INTLTOOL_XGETTEXT USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS GETTEXT_PACKAGE ac_pt_PKG_CONFIG LIBGSF_CFLAGS LIBGSF_LIBS WARN_CFLAGS OS_WIN32_TRUE OS_WIN32_FALSE PLATFORM_WIN32_TRUE PLATFORM_WIN32_FALSE HTML_DIR ENABLE_GTK_DOC_TRUE ENABLE_GTK_DOC_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_!
 INSTALLE
D_TRUE GTK_DOC_INSTALLED_FALSE Z_CPPFLAGS Z_LIBS WITH_PYTHON_TRUE WITH_PYTHON_FALSE BZ2_LIBS LIBGSF_GNOME_CFLAGS LIBGSF_GNOME_LIBS WITH_LIBGSF_GNOME_TRUE WITH_LIBGSF_GNOME_FALSE GCONFTOOL GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE WITH_GCONF_TRUE WITH_GCONF_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+	      localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+ac_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_cv_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_cv_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_env_LIBGSF_CFLAGS_set=${LIBGSF_CFLAGS+set}
+ac_env_LIBGSF_CFLAGS_value=$LIBGSF_CFLAGS
+ac_cv_env_LIBGSF_CFLAGS_set=${LIBGSF_CFLAGS+set}
+ac_cv_env_LIBGSF_CFLAGS_value=$LIBGSF_CFLAGS
+ac_env_LIBGSF_LIBS_set=${LIBGSF_LIBS+set}
+ac_env_LIBGSF_LIBS_value=$LIBGSF_LIBS
+ac_cv_env_LIBGSF_LIBS_set=${LIBGSF_LIBS+set}
+ac_cv_env_LIBGSF_LIBS_value=$LIBGSF_LIBS
+ac_env_LIBGSF_GNOME_CFLAGS_set=${LIBGSF_GNOME_CFLAGS+set}
+ac_env_LIBGSF_GNOME_CFLAGS_value=$LIBGSF_GNOME_CFLAGS
+ac_cv_env_LIBGSF_GNOME_CFLAGS_set=${LIBGSF_GNOME_CFLAGS+set}
+ac_cv_env_LIBGSF_GNOME_CFLAGS_value=$LIBGSF_GNOME_CFLAGS
+ac_env_LIBGSF_GNOME_LIBS_set=${LIBGSF_GNOME_LIBS+set}
+ac_env_LIBGSF_GNOME_LIBS_value=$LIBGSF_GNOME_LIBS
+ac_cv_env_LIBGSF_GNOME_LIBS_set=${LIBGSF_GNOME_LIBS+set}
+ac_cv_env_LIBGSF_GNOME_LIBS_value=$LIBGSF_GNOME_LIBS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures libgsf 1.12.3 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of libgsf 1.12.3:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer
+  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors
+  --enable-shared[=PKGS]
+                          build shared libraries [default=yes]
+  --enable-static[=PKGS]
+                          build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-largefile     omit support for large files
+  --enable-compile-warnings=[no/minimum/yes/maximum/error]
+                          Turn on compiler warnings
+  --enable-iso-c          Try to warn if code is not ISO C
+  --enable-gtk-doc        use gtk-doc to build documentation default=no
+  --disable-schemas-install	Disable the schemas installation
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]
+                          include additional configurations [automatic]
+  --with-html-dir=PATH    path to installed docs
+  --with-zlib=DIR       use libz in DIR
+--{with,without}-bz2   Build additional wrappers for BZ2
+--{with,without}-gnome   Build additional wrappers for GNOME-VFS and BONOBO
+  --with-gconf-source=sourceaddress      Config database for installing schema files.
+  --with-gconf-schema-file-dir=dir        Directory for installing schema files.
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  PKG_CONFIG  path to pkg-config utility
+  LIBGSF_CFLAGS
+              C compiler flags for LIBGSF, overriding pkg-config
+  LIBGSF_LIBS linker flags for LIBGSF, overriding pkg-config
+  LIBGSF_GNOME_CFLAGS
+              C compiler flags for LIBGSF_GNOME, overriding pkg-config
+  LIBGSF_GNOME_LIBS
+              linker flags for LIBGSF_GNOME, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf>.
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+	   test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd "$ac_popdir"
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+libgsf configure 1.12.3
+generated by GNU Autoconf 2.59
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by libgsf $as_me 1.12.3, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+	echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+LIBGSF_MAJOR_VERSION=1
+
+LIBGSF_MINOR_VERSION=12
+
+LIBGSF_MICRO_VERSION=3
+
+
+VERSION_INFO=13:3:12
+
+
+
+am__api_version="1.7"
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+  program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+ # test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='libgsf'
+ VERSION='1.12.3'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+
+
+
+
+          ac_config_headers="$ac_config_headers gsf-config.h"
+
+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+    # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+  enableval="$enable_maintainer_mode"
+  USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi;
+  echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
+
+
+if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+ACLOCAL_AMFLAGS=$ACLOCAL_FLAGS
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+	;;
+    conftest.$ac_ext )
+	# This is the source file.
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	# FIXME: I believe we export ac_cv_exeext for Libtool,
+	# but it would be cool to find out if it's true.  Does anybody
+	# maintain Libtool? --akim.
+	export ac_cv_exeext
+	break;;
+    * )
+	break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  export ac_cv_exeext
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std1 is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std1.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+          ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CC"   am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi;
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi;
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && break
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+SED=$lt_cv_path_SED
+
+fi
+
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+        ;;
+      *)
+	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	*/dev/null*)
+	  lt_cv_path_NM="$tmp_nm -p"
+	  break
+	  ;;
+	*)
+	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	  ;;
+	esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+  else
+    lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 3720 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_DLLTOOL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  echo "$as_me:$LINENO: result: $DLLTOOL" >&5
+echo "${ECHO_T}$DLLTOOL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false"
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
+echo "${ECHO_T}$ac_ct_DLLTOOL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  DLLTOOL=$ac_ct_DLLTOOL
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  echo "$as_me:$LINENO: result: $AS" >&5
+echo "${ECHO_T}$AS" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AS="as"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false"
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
+echo "${ECHO_T}$ac_ct_AS" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  AS=$ac_ct_AS
+else
+  AS="$ac_cv_prog_AS"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+echo "${ECHO_T}$OBJDUMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false"
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+echo "${ECHO_T}$ac_ct_OBJDUMP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  OBJDUMP=$ac_ct_OBJDUMP
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+  ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf ##
+## --------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+  CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_F77" && break
+done
+
+  F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:5519:" \
+     "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+ *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDRT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  AR=$ac_ct_AR
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=yes
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    lt_prog_cc_shlib='-belf'
+    ;;
+  esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | grep "[ 	]$lt_prog_cc_shlib[ 	]" >/dev/null; then :
+  else
+    { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:6551: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:6555: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic='-Kpic'
+      lt_prog_compiler_static='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:6784: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:6788: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:6844: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:6848: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        archive_expsym_cmds="$tmp_archive_cmds"
+      fi
+      link_all_deplibs=no
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.012|aix4.012.*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L=yes
+  	  hardcode_libdir_flag_spec='-L$libdir'
+  	  hardcode_libdir_separator=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec=' '
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      archive_cmds_need_lc=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+	allow_undefined_flag='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec='-all_load $convenience'
+      link_all_deplibs=yes
+    else
+      ld_shlibs=no
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld='+b $libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=no
+      hardcode_shlibpath_var=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec=
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc=no
+        else
+	  archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var " || \
+   test "X$hardcode_automatic"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 9032 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 9130 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+  darwin* | rhapsody*)
+  if test "$GCC" = yes; then
+    archive_cmds_need_lc=no
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    output_verbose_link_cmd='echo'
+    archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
+    module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    hardcode_direct=no
+    hardcode_automatic=yes
+    hardcode_shlibpath_var=unsupported
+    whole_archive_flag_spec='-all_load $convenience'
+    link_all_deplibs=yes
+  else
+    ld_shlibs=no
+  fi
+    ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+  withval="$with_tags"
+  tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && test "X$CXX" != "Xno"; then
+	  ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.012|aix4.012.*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct_CXX=yes
+	else
+	  # We have old collect2
+	  hardcode_direct_CXX=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L_CXX=yes
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  hardcode_libdir_separator_CXX=
+	fi
+      esac
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag_CXX="-z nodefs"
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	no_undefined_flag_CXX=' ${wl}-bernotok'
+	allow_undefined_flag_CXX=' ${wl}-berok'
+	# -bexpall does not export symbols beginning with underscore (_)
+	always_export_symbols_CXX=yes
+	# Exported symbols can be pulled into shared objects from archives
+	whole_archive_flag_spec_CXX=' '
+	archive_cmds_need_lc_CXX=yes
+	# This is similar to how AIX traditionally builds it's shared libraries.
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+
+  darwin* | rhapsody*)
+  if test "$GXX" = yes; then
+    archive_cmds_need_lc_CXX=no
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag_CXX='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag_CXX='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag_CXX='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+      ;;
+    esac
+    lt_int_apple_cc_single_mod=no
+    output_verbose_link_cmd='echo'
+    if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+      lt_int_apple_cc_single_mod=yes
+    fi
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    else
+      archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    fi
+    module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+
+    # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+    if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    hardcode_direct_CXX=no
+    hardcode_automatic_CXX=yes
+    hardcode_shlibpath_var_CXX=unsupported
+    whole_archive_flag_spec_CXX='-all_load $convenience'
+    link_all_deplibs_CXX=yes
+  else
+    ld_shlibs_CXX=no
+  fi
+    ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      ghcx)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  freebsd12*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | kfreebsd*-gnu)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+	hardcode_libdir_separator_CXX=:
+        ;;
+      ia64*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+        ;;
+      *)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+	export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      aCC)
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case "$host_cpu" in
+	    ia64*|hppa*64*)
+	      archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	      ;;
+	    *)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC)
+	# SGI C++
+	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+	  else
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	link_all_deplibs_CXX=yes
+	;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc)
+	# Intel C++
+	with_gnu_ld=yes
+	archive_cmds_need_lc_CXX=no
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      cxx)
+	# Compaq C++
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx)
+	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+	;;
+      RCC)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx)
+	allow_undefined_flag_CXX=' -expect_unresolved \*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry $objdir/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sco*)
+    archive_cmds_need_lc_CXX=no
+    case $cc_basename in
+      CC)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      lcc)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC)
+	# Sun C++ 4.2, 5.x and Centerline C++
+	no_undefined_flag_CXX=' -zdefs'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-R$libdir'
+	hardcode_shlibpath_var_CXX=no
+	case $host_os in
+	  solaris2.0-5 | solaris2.0-5.*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	link_all_deplibs_CXX=yes
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx)
+	# Green Hills C++ Compiler
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    case "$host_cpu" in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  icpc)
+	    # Intel C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  cxx)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      sco*)
+	case $cc_basename in
+	  CC)
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      unixware*)
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:11307: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:11311: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:11367: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:11371: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  linux*)
+    link_all_deplibs_CXX=no
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_CXX=no
+        else
+	  archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var CXX" || \
+   test "X$hardcode_automatic_CXX"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12736 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12834 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'`
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_F77='-Kpic'
+      lt_prog_compiler_static_F77='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:13661: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:13665: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:13721: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:13725: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds_F77="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        archive_expsym_cmds_F77="$tmp_archive_cmds"
+      fi
+      link_all_deplibs_F77=no
+    else
+      ld_shlibs_F77=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.012|aix4.012.*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_F77=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_F77=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77=' '
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      archive_cmds_need_lc_F77=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+	allow_undefined_flag_F77='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag_F77='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag_F77='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag_F77='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77='-all_load $convenience'
+      link_all_deplibs_F77=yes
+    else
+      ld_shlibs_F77=no
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_F77='-L$libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_F77='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_F77=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_F77=
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var F77" || \
+   test "X$hardcode_automatic_F77"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:15766: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:15770: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux*)
+      case $CC in
+      icc* | ecc*)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-KPIC'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_GCJ='-Kpic'
+      lt_prog_compiler_static_GCJ='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_GCJ='-Kconform_pic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:15999: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:16003: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s conftest.err; then
+       lt_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16059: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:16063: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test ! -s out/conftest.err; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_GCJ=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+  linux*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+        tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds_GCJ="$tmp_archive_cmds"
+      supports_anon_versioning=no
+      case `$LD -v 2>/dev/null` in
+        *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+        *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+        *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+        *\ 2.11.*) ;; # other 2.11 versions
+        *) supports_anon_versioning=yes ;;
+      esac
+      if test $supports_anon_versioning = yes; then
+        archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+$echo "local: *; };" >> $output_objdir/$libname.ver~
+        $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+      else
+        archive_expsym_cmds_GCJ="$tmp_archive_cmds"
+      fi
+      link_all_deplibs_GCJ=no
+    else
+      ld_shlibs_GCJ=no
+    fi
+    ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = yes; then
+      runpath_var=LD_RUN_PATH
+      hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+      export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ 	whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_GCJ=
+      fi
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.012|aix4.012.*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_GCJ=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_GCJ=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_GCJ=yes
+  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+  	  hardcode_libdir_separator_GCJ=
+	  fi
+	esac
+	shared_flag='-shared'
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_GCJ="-z nodefs"
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_GCJ=' ${wl}-bernotok'
+	  allow_undefined_flag_GCJ=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_GCJ=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_GCJ=' '
+	  archive_cmds_need_lc_GCJ=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi4*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+    if test "$GXX" = yes ; then
+      archive_cmds_need_lc_GCJ=no
+      case "$host_os" in
+      rhapsody* | darwin1.[012])
+	allow_undefined_flag_GCJ='-undefined suppress'
+	;;
+      *) # Darwin 1.3 on
+      if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      	allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
+      else
+        case ${MACOSX_DEPLOYMENT_TARGET} in
+          10.[012])
+            allow_undefined_flag_GCJ='-flat_namespace -undefined suppress'
+            ;;
+          10.*)
+            allow_undefined_flag_GCJ='-undefined dynamic_lookup'
+            ;;
+        esac
+      fi
+	;;
+      esac
+    	lt_int_apple_cc_single_mod=no
+    	output_verbose_link_cmd='echo'
+    	if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then
+    	  lt_int_apple_cc_single_mod=yes
+    	fi
+    	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+    	  archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+    	else
+        archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      fi
+      module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        else
+          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        fi
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ='-all_load $convenience'
+      link_all_deplibs_GCJ=yes
+    else
+      ld_shlibs_GCJ=no
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=yes
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd* | netbsdelf*-gnu | knetbsd*-gnu)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_GCJ='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+	whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+	  hardcode_direct_GCJ=no
+        ;;
+	motorola)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_GCJ=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_GCJ=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_GCJ=
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.01* | freebsdelf3.01*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=yes
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var GCJ" || \
+   test "X$hardcode_automatic_GCJ"="Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 18247 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 18345 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation ?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	;;
+
+      *)
+	{ { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_largefile_source+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  while :; do
+  ac_cv_sys_largefile_source=no
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+return !fseeko;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGEFILE_SOURCE 1
+#include <stdio.h>
+int
+main ()
+{
+return !fseeko;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_largefile_source=1; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6
+if test "$ac_cv_sys_largefile_source" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+_ACEOF
+
+fi
+rm -f conftest*
+
+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+# in glibc 2.1.3, but that breaks too many other things.
+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+echo "$as_me:$LINENO: checking for fseeko" >&5
+echo $ECHO_N "checking for fseeko... $ECHO_C" >&6
+if test "${ac_cv_func_fseeko+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+return fseeko && fseeko (stdin, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_fseeko=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_fseeko=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_fseeko" >&5
+echo "${ECHO_T}$ac_cv_func_fseeko" >&6
+if test $ac_cv_func_fseeko = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FSEEKO 1
+_ACEOF
+
+fi
+
+# Check whether --enable-largefile or --disable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+  enableval="$enable_largefile"
+
+fi;
+if test "$enable_largefile" != no; then
+
+  echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+     	 # IRIX 6.2 and later do not support large files by default,
+     	 # so use the C compiler's -n32 option if that helps.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+     	 rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+     	 CC="$CC -n32"
+     	 rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_largefile_CC=' -n32'; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+	 break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  while :; do
+  ac_cv_sys_file_offset_bits=no
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_file_offset_bits=64; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
+if test "$ac_cv_sys_file_offset_bits" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+
+fi
+rm -f conftest*
+  echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_large_files+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  while :; do
+  ac_cv_sys_large_files=no
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+		       && LARGE_OFF_T % 2147483647 == 1)
+		      ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_large_files=1; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  break
+done
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+echo "${ECHO_T}$ac_cv_sys_large_files" >&6
+if test "$ac_cv_sys_large_files" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+
+fi
+rm -f conftest*
+fi
+
+# Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+
+
+
+if test -n ""; then
+    echo "$as_me:$LINENO: checking for intltool >= " >&5
+echo $ECHO_N "checking for intltool >= ... $ECHO_C" >&6
+
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo  | awk -F. '{ printf "%d", $1 * 100 + $2; }'`
+    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $2; }'  < ${ac_aux_dir}/intltool-update.in`
+
+    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($2, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
+
+
+    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+	echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
+echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6
+    else
+	echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool  or later." >&5
+echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool  or later." >&6
+	exit 1
+    fi
+fi
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XML_NOMERGE_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u /tmp $< $@'
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+
+
+
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_PERL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL
+
+if test -n "$INTLTOOL_PERL"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5
+echo "${ECHO_T}$INTLTOOL_PERL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$INTLTOOL_PERL"; then
+   { { echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5
+echo "$as_me: error: perl not found; required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   { { echo "$as_me:$LINENO: error: perl 5.x required for intltool" >&5
+echo "$as_me: error: perl 5.x required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test "x" != "xno-xml"; then
+   echo "$as_me:$LINENO: checking for XML::Parser" >&5
+echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+   else
+       { { echo "$as_me:$LINENO: error: XML::Parser perl module is required for intltool" >&5
+echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+fi
+
+# Extract the first word of "iconv", so it can be a program name with args.
+set dummy iconv; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_ICONV+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_ICONV in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_ICONV="$INTLTOOL_ICONV" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_ICONV="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_ICONV" && ac_cv_path_INTLTOOL_ICONV="iconv"
+  ;;
+esac
+fi
+INTLTOOL_ICONV=$ac_cv_path_INTLTOOL_ICONV
+
+if test -n "$INTLTOOL_ICONV"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_ICONV" >&5
+echo "${ECHO_T}$INTLTOOL_ICONV" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_MSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_MSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_MSGFMT="$INTLTOOL_MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_MSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_MSGFMT" && ac_cv_path_INTLTOOL_MSGFMT="msgfmt"
+  ;;
+esac
+fi
+INTLTOOL_MSGFMT=$ac_cv_path_INTLTOOL_MSGFMT
+
+if test -n "$INTLTOOL_MSGFMT"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_MSGFMT" >&5
+echo "${ECHO_T}$INTLTOOL_MSGFMT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_MSGMERGE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_MSGMERGE in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_MSGMERGE="$INTLTOOL_MSGMERGE" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_MSGMERGE="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_MSGMERGE" && ac_cv_path_INTLTOOL_MSGMERGE="msgmerge"
+  ;;
+esac
+fi
+INTLTOOL_MSGMERGE=$ac_cv_path_INTLTOOL_MSGMERGE
+
+if test -n "$INTLTOOL_MSGMERGE"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_MSGMERGE" >&5
+echo "${ECHO_T}$INTLTOOL_MSGMERGE" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_INTLTOOL_XGETTEXT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_XGETTEXT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_XGETTEXT="$INTLTOOL_XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_INTLTOOL_XGETTEXT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_INTLTOOL_XGETTEXT" && ac_cv_path_INTLTOOL_XGETTEXT="xgettext"
+  ;;
+esac
+fi
+INTLTOOL_XGETTEXT=$ac_cv_path_INTLTOOL_XGETTEXT
+
+if test -n "$INTLTOOL_XGETTEXT"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_XGETTEXT" >&5
+echo "${ECHO_T}$INTLTOOL_XGETTEXT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+# Remove file type tags (using []) from po/POTFILES.
+
+
+
+
+
+
+
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+
+          ac_config_commands="$ac_config_commands intltool"
+
+
+
+
+ALL_LINGUAS="es"
+
+
+
+for ac_header in locale.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf ##
+## --------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+    if test $ac_cv_header_locale_h = yes; then
+    echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
+echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
+if test "${am_cv_val_LC_MESSAGES+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  am_cv_val_LC_MESSAGES=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+am_cv_val_LC_MESSAGES=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $am_cv_val_LC_MESSAGES" >&5
+echo "${ECHO_T}$am_cv_val_LC_MESSAGES" >&6
+    if test $am_cv_val_LC_MESSAGES = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LC_MESSAGES 1
+_ACEOF
+
+    fi
+  fi
+     USE_NLS=yes
+
+
+    gt_cv_have_gettext=no
+
+    CATOBJEXT=NONE
+    XGETTEXT=:
+    INTLLIBS=
+
+    if test "${ac_cv_header_libintl_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking libintl.h usability" >&5
+echo $ECHO_N "checking libintl.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <libintl.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking libintl.h presence" >&5
+echo $ECHO_N "checking libintl.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <libintl.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: libintl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: libintl.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: libintl.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: libintl.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: libintl.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: libintl.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: libintl.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: libintl.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: libintl.h: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf ##
+## --------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for libintl.h" >&5
+echo $ECHO_N "checking for libintl.h... $ECHO_C" >&6
+if test "${ac_cv_header_libintl_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_libintl_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_libintl_h" >&5
+echo "${ECHO_T}$ac_cv_header_libintl_h" >&6
+
+fi
+if test $ac_cv_header_libintl_h = yes; then
+  gt_cv_func_dgettext_libintl="no"
+      libintl_extra_libs=""
+
+      #
+      # First check in libc
+      #
+      echo "$as_me:$LINENO: checking for ngettext in libc" >&5
+echo $ECHO_N "checking for ngettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_ngettext_libc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !ngettext ("","", 1)
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gt_cv_func_ngettext_libc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gt_cv_func_ngettext_libc=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gt_cv_func_ngettext_libc" >&5
+echo "${ECHO_T}$gt_cv_func_ngettext_libc" >&6
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+	      echo "$as_me:$LINENO: checking for dgettext in libc" >&5
+echo $ECHO_N "checking for dgettext in libc... $ECHO_C" >&6
+if test "${gt_cv_func_dgettext_libc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <libintl.h>
+
+int
+main ()
+{
+return !dgettext ("","")
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  gt_cv_func_dgettext_libc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gt_cv_func_dgettext_libc=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gt_cv_func_dgettext_libc" >&5
+echo "${ECHO_T}$gt_cv_func_dgettext_libc" >&6
+      fi
+
+      if test "$gt_cv_func_ngettext_libc" = "yes" ; then
+
+for ac_func in bind_textdomain_codeset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+      fi
+
+      #
+      # If we don't have everything we want, check in libintl
+      #
+      if test "$gt_cv_func_dgettext_libc" != "yes" \
+	 || test "$gt_cv_func_ngettext_libc" != "yes" \
+         || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
+
+        echo "$as_me:$LINENO: checking for bindtextdomain in -lintl" >&5
+echo $ECHO_N "checking for bindtextdomain in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_bindtextdomain+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char bindtextdomain ();
+int
+main ()
+{
+bindtextdomain ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_bindtextdomain=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_bindtextdomain=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_bindtextdomain" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_bindtextdomain" >&6
+if test $ac_cv_lib_intl_bindtextdomain = yes; then
+  echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char ngettext ();
+int
+main ()
+{
+ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_ngettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_ngettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
+if test $ac_cv_lib_intl_ngettext = yes; then
+  echo "$as_me:$LINENO: checking for dgettext in -lintl" >&5
+echo $ECHO_N "checking for dgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dgettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dgettext ();
+int
+main ()
+{
+dgettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_dgettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dgettext" >&6
+if test $ac_cv_lib_intl_dgettext = yes; then
+  gt_cv_func_dgettext_libintl=yes
+fi
+
+fi
+
+fi
+
+
+	if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
+	  echo "$as_me:$LINENO: checking if -liconv is needed to use gettext" >&5
+echo $ECHO_N "checking if -liconv is needed to use gettext... $ECHO_C" >&6
+	  echo "$as_me:$LINENO: result: " >&5
+echo "${ECHO_T}" >&6
+  	  echo "$as_me:$LINENO: checking for ngettext in -lintl" >&5
+echo $ECHO_N "checking for ngettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_ngettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char ngettext ();
+int
+main ()
+{
+ngettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_ngettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_ngettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_ngettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_ngettext" >&6
+if test $ac_cv_lib_intl_ngettext = yes; then
+  echo "$as_me:$LINENO: checking for dcgettext in -lintl" >&5
+echo $ECHO_N "checking for dcgettext in -lintl... $ECHO_C" >&6
+if test "${ac_cv_lib_intl_dcgettext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lintl -liconv $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dcgettext ();
+int
+main ()
+{
+dcgettext ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_intl_dcgettext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_intl_dcgettext=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_intl_dcgettext" >&5
+echo "${ECHO_T}$ac_cv_lib_intl_dcgettext" >&6
+if test $ac_cv_lib_intl_dcgettext = yes; then
+  gt_cv_func_dgettext_libintl=yes
+			libintl_extra_libs=-liconv
+else
+  :
+fi
+
+else
+  :
+fi
+
+        fi
+
+        #
+        # If we found libintl, then check in it for bind_textdomain_codeset();
+        # we'll prefer libc if neither have bind_textdomain_codeset(),
+        # and both have dgettext and ngettext
+        #
+        if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS -lintl $libintl_extra_libs"
+          unset ac_cv_func_bind_textdomain_codeset
+
+for ac_func in bind_textdomain_codeset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+          LIBS="$glib_save_LIBS"
+
+          if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
+            gt_cv_func_dgettext_libc=no
+          else
+            if test "$gt_cv_func_dgettext_libc" = "yes" \
+		&& test "$gt_cv_func_ngettext_libc" = "yes"; then
+              gt_cv_func_dgettext_libintl=no
+            fi
+          fi
+        fi
+      fi
+
+      if test "$gt_cv_func_dgettext_libc" = "yes" \
+	|| test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        gt_cv_have_gettext=yes
+      fi
+
+      if test "$gt_cv_func_dgettext_libintl" = "yes"; then
+        INTLLIBS="-lintl $libintl_extra_libs"
+      fi
+
+      if test "$gt_cv_have_gettext" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTEXT 1
+_ACEOF
+
+	# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case "$MSGFMT" in
+  /*)
+  ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then
+	ac_cv_path_MSGFMT="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no"
+  ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != "no"; then
+  echo "$as_me:$LINENO: result: $MSGFMT" >&5
+echo "${ECHO_T}$MSGFMT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+	if test "$MSGFMT" != "no"; then
+          glib_save_LIBS="$LIBS"
+          LIBS="$LIBS $INTLLIBS"
+
+for ac_func in dcgettext
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+	  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+
+if test -n "$GMSGFMT"; then
+  echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+echo "${ECHO_T}$GMSGFMT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+	  # Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case "$XGETTEXT" in
+  /*)
+  ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then
+	ac_cv_path_XGETTEXT="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+  ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+  echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+echo "${ECHO_T}$XGETTEXT" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+	  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+extern int _nl_msg_cat_cntr;
+			 return _nl_msg_cat_cntr
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  CATOBJEXT=.gmo
+             DATADIRNAME=share
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+case $host in
+	    *-*-solaris*)
+	    	                	    	                echo "$as_me:$LINENO: checking for bind_textdomain_codeset" >&5
+echo $ECHO_N "checking for bind_textdomain_codeset... $ECHO_C" >&6
+if test "${ac_cv_func_bind_textdomain_codeset+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define bind_textdomain_codeset to an innocuous variant, in case <limits.h> declares bind_textdomain_codeset.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define bind_textdomain_codeset innocuous_bind_textdomain_codeset
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char bind_textdomain_codeset (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef bind_textdomain_codeset
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char bind_textdomain_codeset ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_bind_textdomain_codeset) || defined (__stub___bind_textdomain_codeset)
+choke me
+#else
+char (*f) () = bind_textdomain_codeset;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != bind_textdomain_codeset;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_bind_textdomain_codeset=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_bind_textdomain_codeset=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_bind_textdomain_codeset" >&5
+echo "${ECHO_T}$ac_cv_func_bind_textdomain_codeset" >&6
+if test $ac_cv_func_bind_textdomain_codeset = yes; then
+  CATOBJEXT=.gmo
+               DATADIRNAME=share
+else
+  CATOBJEXT=.mo
+               DATADIRNAME=lib
+fi
+
+	    ;;
+	    *)
+	    CATOBJEXT=.mo
+            DATADIRNAME=lib
+	    ;;
+	    esac
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+          LIBS="$glib_save_LIBS"
+	  INSTOBJEXT=.mo
+	else
+	  gt_cv_have_gettext=no
+	fi
+      fi
+
+fi
+
+
+
+    if test "$gt_cv_have_gettext" = "yes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NLS 1
+_ACEOF
+
+    fi
+
+        if test "$XGETTEXT" != ":"; then
+                  if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+        : ;
+      else
+        echo "$as_me:$LINENO: result: found xgettext program is not GNU xgettext; ignore it" >&5
+echo "${ECHO_T}found xgettext program is not GNU xgettext; ignore it" >&6
+        XGETTEXT=":"
+      fi
+    fi
+
+    # We need to process the po/ directory.
+    POSUB=po
+
+              ac_config_commands="$ac_config_commands default-1"
+
+
+                for lang in $ALL_LINGUAS; do
+      GMOFILES="$GMOFILES $lang.gmo"
+      POFILES="$POFILES $lang.po"
+    done
+
+
+
+
+
+
+
+
+
+
+
+
+
+   if test "$gt_cv_have_gettext" = "yes"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       echo "$as_me:$LINENO: checking for catalogs to be installed" >&5
+echo $ECHO_N "checking for catalogs to be installed... $ECHO_C" >&6
+       NEW_LINGUAS=
+       for presentlang in $ALL_LINGUAS; do
+         useit=no
+         if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
+           desiredlanguages="$LINGUAS"
+         else
+           desiredlanguages="$ALL_LINGUAS"
+         fi
+         for desiredlang in $desiredlanguages; do
+ 	   # Use the presentlang catalog if desiredlang is
+           #   a. equal to presentlang, or
+           #   b. a variant of presentlang (because in this case,
+           #      presentlang can be used as a fallback for messages
+           #      which are not translated in the desiredlang catalog).
+           case "$desiredlang" in
+             "$presentlang"*) useit=yes;;
+           esac
+         done
+         if test $useit = yes; then
+           NEW_LINGUAS="$NEW_LINGUAS $presentlang"
+         fi
+       done
+       LINGUAS=$NEW_LINGUAS
+       echo "$as_me:$LINENO: result: $LINGUAS" >&5
+echo "${ECHO_T}$LINGUAS" >&6
+     fi
+
+          if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+            MKINSTALLDIRS=
+   if test -n "$ac_aux_dir"; then
+     MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
+   fi
+   if test -z "$MKINSTALLDIRS"; then
+     MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+   fi
+
+
+         test -d po || mkdir po
+   if test "x$srcdir" != "x."; then
+     if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
+       posrcprefix="$srcdir/"
+     else
+       posrcprefix="../$srcdir/"
+     fi
+   else
+     posrcprefix="../"
+   fi
+   rm -f po/POTFILES
+   sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
+	< $srcdir/po/POTFILES.in > po/POTFILES
+
+
+GETTEXT_PACKAGE=libgsf
+
+
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+_ACEOF
+
+
+
+libgsf_reqs="
+    gobject-2.0 >= 2.4.0
+    glib-2.0 >= 2.4.0
+    libxml-2.0 >= 2.4.16
+"
+libgsf_gnome_reqs="
+    $libgsf_reqs
+    libbonobo-2.0 >= 2.0.0
+    gnome-vfs-2.0 >= 2.2.0
+    gnome-vfs-module-2.0 >= 2.2.0
+"
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+
+if test -n "$ac_pt_PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  PKG_CONFIG=$ac_pt_PKG_CONFIG
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=0.9.0
+	echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	else
+		echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+		PKG_CONFIG=""
+	fi
+
+fi
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for LIBGSF" >&5
+echo $ECHO_N "checking for LIBGSF... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$libgsf_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$libgsf_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBGSF_CFLAGS=`$PKG_CONFIG --cflags "$libgsf_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$libgsf_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$libgsf_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBGSF_LIBS=`$PKG_CONFIG --libs "$libgsf_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+
+if test $pkg_failed = yes; then
+	LIBGSF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$libgsf_reqs"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBGSF_PKG_ERRORS" 1>&5
+
+	{ { echo "$as_me:$LINENO: error: Package requirements ($libgsf_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the LIBGSF_CFLAGS and LIBGSF_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&5
+echo "$as_me: error: Package requirements ($libgsf_reqs) were not met.
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively you may set the LIBGSF_CFLAGS and LIBGSF_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details." >&2;}
+   { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+	{ { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the LIBGSF_CFLAGS and LIBGSF_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively you may set the LIBGSF_CFLAGS and LIBGSF_LIBS environment variables
+to avoid the need to call pkg-config.  See the pkg-config man page for
+more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+	LIBGSF_CFLAGS=$pkg_cv_LIBGSF_CFLAGS
+	LIBGSF_LIBS=$pkg_cv_LIBGSF_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	:
+fi
+
+## this should come after `AC_PROG_CC'
+
+
+    # Check whether --enable-compile-warnings or --disable-compile-warnings was given.
+if test "${enable_compile_warnings+set}" = set; then
+  enableval="$enable_compile_warnings"
+
+else
+  enable_compile_warnings="yes"
+fi;
+
+    warnCFLAGS=
+    if test "x$GCC" != xyes; then
+	enable_compile_warnings=no
+    fi
+
+    warning_flags=
+    realsave_CFLAGS="$CFLAGS"
+
+    case "$enable_compile_warnings" in
+    no)
+	warning_flags=
+	;;
+    minimum)
+	warning_flags="-Wall"
+	;;
+    yes)
+	warning_flags="-Wall -Wmissing-prototypes"
+	;;
+    maximum|error)
+	warning_flags="-Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
+	CFLAGS="$warning_flags $CFLAGS"
+	for option in -Wno-sign-compare; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		echo "$as_me:$LINENO: checking whether gcc understands $option" >&5
+echo $ECHO_N "checking whether gcc understands $option... $ECHO_C" >&6
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  has_option=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_option=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+		CFLAGS="$SAVE_CFLAGS"
+		echo "$as_me:$LINENO: result: $has_option" >&5
+echo "${ECHO_T}$has_option" >&6
+		if test $has_option = yes; then
+		  warning_flags="$warning_flags $option"
+		fi
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+	if test "$enable_compile_warnings" = "error" ; then
+	    warning_flags="$warning_flags -Werror"
+	fi
+	;;
+    *)
+	{ { echo "$as_me:$LINENO: error: Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" >&5
+echo "$as_me: error: Unknown argument '$enable_compile_warnings' to --enable-compile-warnings" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+    CFLAGS="$realsave_CFLAGS"
+    echo "$as_me:$LINENO: checking what warning flags to pass to the C compiler" >&5
+echo $ECHO_N "checking what warning flags to pass to the C compiler... $ECHO_C" >&6
+    echo "$as_me:$LINENO: result: $warning_flags" >&5
+echo "${ECHO_T}$warning_flags" >&6
+
+    # Check whether --enable-iso-c or --disable-iso-c was given.
+if test "${enable_iso_c+set}" = set; then
+  enableval="$enable_iso_c"
+
+else
+  enable_iso_c=no
+fi;
+
+    echo "$as_me:$LINENO: checking what language compliance flags to pass to the C compiler" >&5
+echo $ECHO_N "checking what language compliance flags to pass to the C compiler... $ECHO_C" >&6
+    complCFLAGS=
+    if test "x$enable_iso_c" != "xno"; then
+	if test "x$GCC" = "xyes"; then
+	case " $CFLAGS " in
+	    *\ \	-ansi\ \	*) ;;
+	    *) complCFLAGS="$complCFLAGS -ansi" ;;
+	esac
+	case " $CFLAGS " in
+	    *\ \	-pedantic\ \	*) ;;
+	    *) complCFLAGS="$complCFLAGS -pedantic" ;;
+	esac
+	fi
+    fi
+    echo "$as_me:$LINENO: result: $complCFLAGS" >&5
+echo "${ECHO_T}$complCFLAGS" >&6
+
+    WARN_CFLAGS="$warning_flags $complCFLAGS"
+
+
+CFLAGS="$CFLAGS $WARN_CFLAGS -DG_DISABLE_DEPRECATED"
+if test "$GCC" = "yes"; then
+	for option in -Wno-system-headers -Wfloat-equal -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wformat -Wnested-externs -Winline -Wdeclaration-after-statement -Wundef -W -Wmissing-noreturn -Wmissing-format-attribute; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		echo "$as_me:$LINENO: checking whether gcc understands $option" >&5
+echo $ECHO_N "checking whether gcc understands $option... $ECHO_C" >&6
+		cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  has_option=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+has_option=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+		if test $has_option = no; then
+		  CFLAGS="$SAVE_CFLAGS"
+		fi
+		echo "$as_me:$LINENO: result: $has_option" >&5
+echo "${ECHO_T}$has_option" >&6
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+fi
+
+echo "$as_me:$LINENO: checking whether fdopen is declared" >&5
+echo $ECHO_N "checking whether fdopen is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_fdopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fdopen
+  char *p = (char *) fdopen;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_fdopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_fdopen=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_fdopen" >&5
+echo "${ECHO_T}$ac_cv_have_decl_fdopen" >&6
+if test $ac_cv_have_decl_fdopen = yes; then
+  fdopen_works=yes
+else
+  fdopen_works=no
+fi
+
+if test $fdopen_works = no ; then
+	unset ac_cv_have_decl_fdopen
+	CFLAGS="$CFLAGS -D_POSIX_SOURCE"
+	{ echo "$as_me:$LINENO: adding -D_POSIX_SOURCE to CFLAGS" >&5
+echo "$as_me: adding -D_POSIX_SOURCE to CFLAGS" >&6;}
+	echo "$as_me:$LINENO: checking whether fdopen is declared" >&5
+echo $ECHO_N "checking whether fdopen is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_fdopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+#ifndef fdopen
+  char *p = (char *) fdopen;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_have_decl_fdopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_have_decl_fdopen=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_decl_fdopen" >&5
+echo "${ECHO_T}$ac_cv_have_decl_fdopen" >&6
+if test $ac_cv_have_decl_fdopen = yes; then
+  fdopen_works=yes
+else
+  fdopen_works=no
+fi
+
+	if test $fdopen_works = no ; then
+		{ { echo "$as_me:$LINENO: error: fdopen is not available" >&5
+echo "$as_me: error: fdopen is not available" >&2;}
+   { (exit 1); exit 1; }; }
+	fi
+fi
+
+# Unfortunately, -D_POSIX_SOURCE turns off struct timeval on Solaris
+echo "$as_me:$LINENO: checking whether struct timeval is available" >&5
+echo $ECHO_N "checking whether struct timeval is available... $ECHO_C" >&6
+for try in 1 2; do
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/time.h>
+int
+main ()
+{
+struct timeval tv;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  struct_timeval_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+struct_timeval_works=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+	test $struct_timeval_works = yes && break
+	# Try this for the second attempt:
+	test $try = 1 && CFLAGS="$CFLAGS -D__EXTENSIONS__"
+done
+echo "$as_me:$LINENO: result: $struct_timeval_works" >&5
+echo "${ECHO_T}$struct_timeval_works" >&6
+if test $struct_timeval_works = no ; then
+	{ { echo "$as_me:$LINENO: error: struct timeval is not available" >&5
+echo "$as_me: error: struct timeval is not available" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+echo "$as_me:$LINENO: checking whether -D_BSD_SOURCE is needed for caddr_t" >&5
+echo $ECHO_N "checking whether -D_BSD_SOURCE is needed for caddr_t... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+caddr_t ca
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  need_bsd1=no
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+need_bsd1=yes
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $need_bsd1" >&5
+echo "${ECHO_T}$need_bsd1" >&6
+
+echo "$as_me:$LINENO: checking whether -D_BSD_SOURCE is needed for lstat" >&5
+echo $ECHO_N "checking whether -D_BSD_SOURCE is needed for lstat... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+int
+main ()
+{
+void *ptr = &lstat
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  need_bsd2=no
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+need_bsd2=yes
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $need_bsd2" >&5
+echo "${ECHO_T}$need_bsd2" >&6
+if test $need_bsd1 = yes -o $need_bsd2 = yes; then
+	CFLAGS="$CFLAGS -D_BSD_SOURCE"
+fi
+
+echo "$as_me:$LINENO: checking for mode_t" >&5
+echo $ECHO_N "checking for mode_t... $ECHO_C" >&6
+if test "${ac_cv_type_mode_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((mode_t *) 0)
+  return 0;
+if (sizeof (mode_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_mode_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_mode_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
+echo "${ECHO_T}$ac_cv_type_mode_t" >&6
+if test $ac_cv_type_mode_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define mode_t int
+_ACEOF
+
+fi
+
+
+
+
+
+for ac_header in fcntl.h malloc.h unistd.h io.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf ##
+## --------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in stdlib.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf ##
+## --------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_func in getpagesize
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+echo "$as_me:$LINENO: checking for working mmap" >&5
+echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_mmap_fixed_mapped=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+/* malloc might have been renamed as rpl_malloc. */
+#undef malloc
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+   Here is a matrix of mmap possibilities:
+	mmap private not fixed
+	mmap private fixed at somewhere currently unmapped
+	mmap private fixed at somewhere already mapped
+	mmap shared not fixed
+	mmap shared fixed at somewhere currently unmapped
+	mmap shared fixed at somewhere already mapped
+   For private mappings, we should verify that changes cannot be read()
+   back from the file, nor mmap's back from the file at a different
+   address.  (There have been systems where private was not correctly
+   implemented like the infamous i386 svr4.0, and systems where the
+   VM page cache was not coherent with the file system buffer cache
+   like early versions of FreeBSD and possibly contemporary NetBSD.)
+   For shared mappings, we should conversely verify that changes get
+   propagated back to all the places they're supposed to be.
+
+   Grep wants private fixed already mapped.
+   The main things grep needs to know about mmap are:
+   * does it exist and is it safe to write into the mmap'd area
+   * how to use it (BSD variants)  */
+
+#include <fcntl.h>
+#include <sys/mman.h>
+
+#if !STDC_HEADERS && !HAVE_STDLIB_H
+char *malloc ();
+#endif
+
+/* This mess was copied from the GNU getpagesize.h.  */
+#if !HAVE_GETPAGESIZE
+/* Assume that all systems that can run configure have sys/param.h.  */
+# if !HAVE_SYS_PARAM_H
+#  define HAVE_SYS_PARAM_H 1
+# endif
+
+# ifdef _SC_PAGESIZE
+#  define getpagesize() sysconf(_SC_PAGESIZE)
+# else /* no _SC_PAGESIZE */
+#  if HAVE_SYS_PARAM_H
+#   include <sys/param.h>
+#   ifdef EXEC_PAGESIZE
+#    define getpagesize() EXEC_PAGESIZE
+#   else /* no EXEC_PAGESIZE */
+#    ifdef NBPG
+#     define getpagesize() NBPG * CLSIZE
+#     ifndef CLSIZE
+#      define CLSIZE 1
+#     endif /* no CLSIZE */
+#    else /* no NBPG */
+#     ifdef NBPC
+#      define getpagesize() NBPC
+#     else /* no NBPC */
+#      ifdef PAGESIZE
+#       define getpagesize() PAGESIZE
+#      endif /* PAGESIZE */
+#     endif /* no NBPC */
+#    endif /* no NBPG */
+#   endif /* no EXEC_PAGESIZE */
+#  else /* no HAVE_SYS_PARAM_H */
+#   define getpagesize() 8192	/* punt totally */
+#  endif /* no HAVE_SYS_PARAM_H */
+# endif /* no _SC_PAGESIZE */
+
+#endif /* no HAVE_GETPAGESIZE */
+
+int
+main ()
+{
+  char *data, *data2, *data3;
+  int i, pagesize;
+  int fd;
+
+  pagesize = getpagesize ();
+
+  /* First, make a file with some known garbage in it. */
+  data = (char *) malloc (pagesize);
+  if (!data)
+    exit (1);
+  for (i = 0; i < pagesize; ++i)
+    *(data + i) = rand ();
+  umask (0);
+  fd = creat ("conftest.mmap", 0600);
+  if (fd < 0)
+    exit (1);
+  if (write (fd, data, pagesize) != pagesize)
+    exit (1);
+  close (fd);
+
+  /* Next, try to mmap the file at a fixed address which already has
+     something else allocated at it.  If we can, also make sure that
+     we see the same garbage.  */
+  fd = open ("conftest.mmap", O_RDWR);
+  if (fd < 0)
+    exit (1);
+  data2 = (char *) malloc (2 * pagesize);
+  if (!data2)
+    exit (1);
+  data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
+  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
+		     MAP_PRIVATE | MAP_FIXED, fd, 0L))
+    exit (1);
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data2 + i))
+      exit (1);
+
+  /* Finally, make sure that changes to the mapped area do not
+     percolate back to the file as seen by read().  (This is a bug on
+     some variants of i386 svr4.0.)  */
+  for (i = 0; i < pagesize; ++i)
+    *(data2 + i) = *(data2 + i) + 1;
+  data3 = (char *) malloc (pagesize);
+  if (!data3)
+    exit (1);
+  if (read (fd, data3, pagesize) != pagesize)
+    exit (1);
+  for (i = 0; i < pagesize; ++i)
+    if (*(data + i) != *(data3 + i))
+      exit (1);
+  close (fd);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_mmap_fixed_mapped=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_mmap_fixed_mapped=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
+echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
+if test $ac_cv_func_mmap_fixed_mapped = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MMAP 1
+_ACEOF
+
+fi
+rm -f conftest.mmap
+
+
+
+for ac_func in chown
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+SAVE_CFLAGS=$CFLAGS
+SAVE_LIBS=$LIBS
+CFLAGS="$CFLAGS $LIBGSF_CFLAGS"
+LIBS="$LIBGSF_LIBS $LIBS"
+echo "$as_me:$LINENO: checking for g_chmod" >&5
+echo $ECHO_N "checking for g_chmod... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <glib/gstdio.h>
+int
+main ()
+{
+(void)g_chmod("/xxx",0777);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_G_CHMOD 1
+_ACEOF
+
+		echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+echo "$as_me:$LINENO: checking for g_access" >&5
+echo $ECHO_N "checking for g_access... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <glib/gstdio.h>
+int
+main ()
+{
+(void)g_access("/xxx",0777);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_G_ACCESS 1
+_ACEOF
+
+		echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$SAVE_CFLAGS
+LIBS=$SAVE_LIBS
+
+echo "$as_me:$LINENO: checking whether macro S_ISREG is available" >&5
+echo $ECHO_N "checking whether macro S_ISREG is available... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/stat.h>
+int
+main ()
+{
+S_ISREG(S_IFMT);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  macro_s_isreg=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+
+	 cat >>confdefs.h <<\_ACEOF
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+_ACEOF
+
+	 macro_s_isreg=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $macro_s_isreg" >&5
+echo "${ECHO_T}$macro_s_isreg" >&6
+
+echo "$as_me:$LINENO: checking for native Win32" >&5
+echo $ECHO_N "checking for native Win32... $ECHO_C" >&6
+case $host in
+  *-*-mingw*)
+    native_win32=yes
+    ;;
+  *)
+    native_win32=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $native_win32" >&5
+echo "${ECHO_T}$native_win32" >&6
+
+
+if test "$native_win32" = yes; then
+  OS_WIN32_TRUE=
+  OS_WIN32_FALSE='#'
+else
+  OS_WIN32_TRUE='#'
+  OS_WIN32_FALSE=
+fi
+
+
+echo "$as_me:$LINENO: checking for Win32 platform in general" >&5
+echo $ECHO_N "checking for Win32 platform in general... $ECHO_C" >&6
+case $host in
+  *-*-mingw*|*-*-cygwin*)
+    platform_win32=yes
+    ;;
+  *)
+    platform_win32=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $platform_win32" >&5
+echo "${ECHO_T}$platform_win32" >&6
+
+
+if test "$platform_win32" = yes; then
+  PLATFORM_WIN32_TRUE=
+  PLATFORM_WIN32_FALSE='#'
+else
+  PLATFORM_WIN32_TRUE='#'
+  PLATFORM_WIN32_FALSE=
+fi
+
+
+##################################################
+# Checks for gtk-doc and docbook-tools
+##################################################
+gtk_doc_installed=true
+#ifdef([GTK_DOC_CHECK],[GTK_DOC_CHECK([1.0])],[gtk_doc_installed=false])
+# I would have liked to conditionalize this, but
+# that appears to break other things http://bugzilla.gnome.org/show_bug.cgi?id=156399
+
+
+# Check whether --with-html-dir or --without-html-dir was given.
+if test "${with_html_dir+set}" = set; then
+  withval="$with_html_dir"
+
+else
+  with_html_dir='${datadir}/gtk-doc/html'
+fi;
+  HTML_DIR="$with_html_dir"
+
+
+    # Check whether --enable-gtk-doc or --disable-gtk-doc was given.
+if test "${enable_gtk_doc+set}" = set; then
+  enableval="$enable_gtk_doc"
+
+else
+  enable_gtk_doc=no
+fi;
+
+  have_gtk_doc=no
+  if test x$enable_gtk_doc = xyes; then
+    if test -z "$PKG_CONFIG"; then
+      # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    fi
+    if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+      have_gtk_doc=yes
+    fi
+
+  gtk_doc_min_version=1.0
+    if test "$have_gtk_doc" = yes; then
+      echo "$as_me:$LINENO: checking gtk-doc version >= $gtk_doc_min_version" >&5
+echo $ECHO_N "checking gtk-doc version >= $gtk_doc_min_version... $ECHO_C" >&6
+      if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+      else
+        echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+        have_gtk_doc=no
+      fi
+    fi
+
+    if test "$have_gtk_doc" != yes; then
+      enable_gtk_doc=no
+    fi
+  fi
+
+
+
+if test x$enable_gtk_doc = xyes; then
+  ENABLE_GTK_DOC_TRUE=
+  ENABLE_GTK_DOC_FALSE='#'
+else
+  ENABLE_GTK_DOC_TRUE='#'
+  ENABLE_GTK_DOC_FALSE=
+fi
+
+
+
+if test -n "$LIBTOOL"; then
+  GTK_DOC_USE_LIBTOOL_TRUE=
+  GTK_DOC_USE_LIBTOOL_FALSE='#'
+else
+  GTK_DOC_USE_LIBTOOL_TRUE='#'
+  GTK_DOC_USE_LIBTOOL_FALSE=
+fi
+
+
+
+
+if $gtk_doc_installed; then
+  GTK_DOC_INSTALLED_TRUE=
+  GTK_DOC_INSTALLED_FALSE='#'
+else
+  GTK_DOC_INSTALLED_TRUE='#'
+  GTK_DOC_INSTALLED_FALSE=
+fi
+
+
+# Check for zlib.
+_cppflags=$CPPFLAGS
+_ldflags=$LDFLAGS
+
+Z_DIR= Z_LIBS= Z_CPPFLAGS=
+
+
+# Check whether --with-zlib or --without-zlib was given.
+if test "${with_zlib+set}" = set; then
+  withval="$with_zlib"
+  case $withval in
+         yes|no) ;;
+         *)     Z_DIR=$withval
+                CPPFLAGS="${CPPFLAGS} -I$withval/include"
+                LDFLAGS="${LDFLAGS} -L$withval/lib"
+                ;;
+         esac
+fi;
+
+if test "x$with_zlib" != xno; then
+        with_zlib=no
+        if test "${ac_cv_header_zlib_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for zlib.h" >&5
+echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6
+if test "${ac_cv_header_zlib_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
+echo "${ECHO_T}$ac_cv_header_zlib_h" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking zlib.h usability" >&5
+echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <zlib.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking zlib.h presence" >&5
+echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <zlib.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: zlib.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: zlib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------------------------------------------- ##
+## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf ##
+## --------------------------------------------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for zlib.h" >&5
+echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6
+if test "${ac_cv_header_zlib_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_zlib_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
+echo "${ECHO_T}$ac_cv_header_zlib_h" >&6
+
+fi
+if test $ac_cv_header_zlib_h = yes; then
+  echo "$as_me:$LINENO: checking for gzread in -lz" >&5
+echo $ECHO_N "checking for gzread in -lz... $ECHO_C" >&6
+if test "${ac_cv_lib_z_gzread+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gzread ();
+int
+main ()
+{
+gzread ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_z_gzread=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_z_gzread=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzread" >&5
+echo "${ECHO_T}$ac_cv_lib_z_gzread" >&6
+if test $ac_cv_lib_z_gzread = yes; then
+  with_zlib=yes
+fi
+
+fi
+
+
+fi
+if test "$with_zlib" = no; then
+        { { echo "$as_me:$LINENO: error: *** zlib is required" >&5
+echo "$as_me: error: *** zlib is required" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test "x$Z_DIR" != "x"; then
+        Z_CPPFLAGS="-I$Z_DIR/include"
+        case $host in
+        *-*-solaris*)   Z_LIBS="-L$Z_DIR/lib -R$Z_DIR/lib -lz" ;;
+        *)              Z_LIBS="-L$Z_DIR/lib -lz" ;;
+        esac
+else
+        Z_LIBS="-lz"
+fi
+
+
+
+CPPFLAGS=${_cppflags}
+LDFLAGS=${_ldflags}
+
+pygtk_msg=no
+
+
+
+
+if test "$pygtk_msg" = yes; then
+  WITH_PYTHON_TRUE=
+  WITH_PYTHON_FALSE='#'
+else
+  WITH_PYTHON_TRUE='#'
+  WITH_PYTHON_FALSE=
+fi
+
+
+
+BZ2_LIBS=
+test_bz2=true
+
+# Check whether --with-bz2 or --without-bz2 was given.
+if test "${with_bz2+set}" = set; then
+  withval="$with_bz2"
+  if test "x$withval" = xno; then
+		test_bz2=false
+	fi
+
+fi;
+
+with_bz2=false
+if test "x$test_bz2" = xtrue ; then
+   echo "$as_me:$LINENO: checking for BZ2_bzDecompressInit in -lbz2" >&5
+echo $ECHO_N "checking for BZ2_bzDecompressInit in -lbz2... $ECHO_C" >&6
+if test "${ac_cv_lib_bz2_BZ2_bzDecompressInit+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbz2  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char BZ2_bzDecompressInit ();
+int
+main ()
+{
+BZ2_bzDecompressInit ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_bz2_BZ2_bzDecompressInit=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_bz2_BZ2_bzDecompressInit=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_bz2_BZ2_bzDecompressInit" >&5
+echo "${ECHO_T}$ac_cv_lib_bz2_BZ2_bzDecompressInit" >&6
+if test $ac_cv_lib_bz2_BZ2_bzDecompressInit = yes; then
+  bz2_ok=yes
+else
+  bz2_ok=no
+		{ echo "$as_me:$LINENO: WARNING: *** BZ2 support disabled (BZ2 library not found) ***" >&5
+echo "$as_me: WARNING: *** BZ2 support disabled (BZ2 library not found) ***" >&2;}
+fi
+
+
+   if test "$bz2_ok" = yes; then
+      echo "$as_me:$LINENO: checking for bzlib.h" >&5
+echo $ECHO_N "checking for bzlib.h... $ECHO_C" >&6
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdio.h>
+	#undef PACKAGE
+	#undef VERSION
+	#undef HAVE_STDLIB_H
+	#include <bzlib.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  bz2_ok=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  bz2_ok=no
+fi
+rm -f conftest.err conftest.$ac_ext
+      echo "$as_me:$LINENO: result: $bz2_ok" >&5
+echo "${ECHO_T}$bz2_ok" >&6
+   fi
+
+   if test "$bz2_ok" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BZ2 1
+_ACEOF
+
+	BZ2_LIBS="-lbz2"
+   else
+	{ echo "$as_me:$LINENO: WARNING: *** BZ2 support disabled (BZ2 header not found) ***" >&5
+echo "$as_me: WARNING: *** BZ2 support disabled (BZ2 header not found) ***" >&2;}
+   fi
+else
+   { echo "$as_me:$LINENO: WARNING: BZ2 support disabled, as requested (Use --with-bz2 to enable)" >&5
+echo "$as_me: WARNING: BZ2 support disabled, as requested (Use --with-bz2 to enable)" >&2;}
+fi
+
+
+
+
+want_gnome=auto
+
+# Check whether --with-gnome or --without-gnome was given.
+if test "${with_gnome+set}" = set; then
+  withval="$with_gnome"
+  case $withval in
+	yes) want_gnome=yes;;
+	no) want_gnome=no;;
+	esac
+fi;
+have_gnome=no
+if  test $want_gnome = no ; then
+    { echo "$as_me:$LINENO: WARNING: GNOME support disabled, as requested (Use --with-gnome to enable)" >&5
+echo "$as_me: WARNING: GNOME support disabled, as requested (Use --with-gnome to enable)" >&2;}
+else
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for LIBGSF_GNOME" >&5
+echo $ECHO_N "checking for LIBGSF_GNOME... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$libgsf_gnome_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$libgsf_gnome_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBGSF_GNOME_CFLAGS=`$PKG_CONFIG --cflags "$libgsf_gnome_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$libgsf_gnome_reqs\"") >&5
+  ($PKG_CONFIG --exists --print-errors "$libgsf_gnome_reqs") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBGSF_GNOME_LIBS=`$PKG_CONFIG --libs "$libgsf_gnome_reqs" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+else
+	pkg_failed=untried
+fi
+
+if test $pkg_failed = yes; then
+	LIBGSF_GNOME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$libgsf_gnome_reqs"`
+	# Put the nasty error message in config.log where it belongs
+	echo "$LIBGSF_GNOME_PKG_ERRORS" 1>&5
+
+	if test $want_gnome = yes; then
+	    { { echo "$as_me:$LINENO: error: GNOME support requested, but not available." >&5
+echo "$as_me: error: GNOME support requested, but not available." >&2;}
+   { (exit 1); exit 1; }; }
+	 else
+	    { echo "$as_me:$LINENO: WARNING: GNOME support disabled, unable to find required version of VFS and/or Bonobo" >&5
+echo "$as_me: WARNING: GNOME support disabled, unable to find required version of VFS and/or Bonobo" >&2;}
+	 fi
+elif test $pkg_failed = untried; then
+	if test $want_gnome = yes; then
+	    { { echo "$as_me:$LINENO: error: GNOME support requested, but not available." >&5
+echo "$as_me: error: GNOME support requested, but not available." >&2;}
+   { (exit 1); exit 1; }; }
+	 else
+	    { echo "$as_me:$LINENO: WARNING: GNOME support disabled, unable to find required version of VFS and/or Bonobo" >&5
+echo "$as_me: WARNING: GNOME support disabled, unable to find required version of VFS and/or Bonobo" >&2;}
+	 fi
+else
+	LIBGSF_GNOME_CFLAGS=$pkg_cv_LIBGSF_GNOME_CFLAGS
+	LIBGSF_GNOME_LIBS=$pkg_cv_LIBGSF_GNOME_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	have_gnome=yes
+fi
+fi
+
+
+if test $have_gnome = yes; then
+  WITH_LIBGSF_GNOME_TRUE=
+  WITH_LIBGSF_GNOME_FALSE='#'
+else
+  WITH_LIBGSF_GNOME_TRUE='#'
+  WITH_LIBGSF_GNOME_FALSE=
+fi
+
+
+# GConf configuration
+GCONFTOOL=
+# Extract the first word of "gconftool-2", so it can be a program name with args.
+set dummy gconftool-2; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_GCONFTOOL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$GCONFTOOL"; then
+  ac_cv_prog_GCONFTOOL="$GCONFTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GCONFTOOL="gconftool-2"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_GCONFTOOL" && ac_cv_prog_GCONFTOOL="no"
+fi
+fi
+GCONFTOOL=$ac_cv_prog_GCONFTOOL
+if test -n "$GCONFTOOL"; then
+  echo "$as_me:$LINENO: result: $GCONFTOOL" >&5
+echo "${ECHO_T}$GCONFTOOL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test "x$GCONFTOOL" = "xno"; then
+    { echo "$as_me:$LINENO: WARNING: thumbnailer will not be built, unable to find gconftool-2" >&5
+echo "$as_me: WARNING: thumbnailer will not be built, unable to find gconftool-2" >&2;}
+else
+
+  if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+    GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+  else
+    GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+  fi
+
+
+# Check whether --with-gconf-source or --without-gconf-source was given.
+if test "${with_gconf_source+set}" = set; then
+  withval="$with_gconf_source"
+  GCONF_SCHEMA_CONFIG_SOURCE="$withval"
+fi;
+
+
+  echo "$as_me:$LINENO: result: Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&5
+echo "${ECHO_T}Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&6
+
+  if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+  fi
+
+
+# Check whether --with-gconf-schema-file-dir or --without-gconf-schema-file-dir was given.
+if test "${with_gconf_schema_file_dir+set}" = set; then
+  withval="$with_gconf_schema_file_dir"
+  GCONF_SCHEMA_FILE_DIR="$withval"
+fi;
+
+
+  echo "$as_me:$LINENO: result: Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&5
+echo "${ECHO_T}Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files" >&6
+
+  # Check whether --enable-schemas-install or --disable-schemas-install was given.
+if test "${enable_schemas_install+set}" = set; then
+  enableval="$enable_schemas_install"
+  case "${enableval}" in
+       yes) schemas_install=true ;;
+       no)  schemas_install=false ;;
+       *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-schemas-install" >&5
+echo "$as_me: error: bad value ${enableval} for --enable-schemas-install" >&2;}
+   { (exit 1); exit 1; }; } ;;
+     esac
+else
+  schemas_install=true
+fi;
+
+
+if test x$schemas_install = xtrue; then
+  GCONF_SCHEMAS_INSTALL_TRUE=
+  GCONF_SCHEMAS_INSTALL_FALSE='#'
+else
+  GCONF_SCHEMAS_INSTALL_TRUE='#'
+  GCONF_SCHEMAS_INSTALL_FALSE=
+fi
+
+
+fi
+
+
+if test "x$GCONFTOOL" != "xno"; then
+  WITH_GCONF_TRUE=
+  WITH_GCONF_FALSE='#'
+else
+  WITH_GCONF_TRUE='#'
+  WITH_GCONF_FALSE=
+fi
+
+
+LDFLAGS="-no-undefined $LDFLAGS"
+
+                                                                                                                                                                          ac_config_files="$ac_config_files Makefile doc/Makefile gsf/Makefile gsf-gnome/Makefile gsf-win32/Makefile tests/Makefile python/Makefile thumbnailer/Makefile po/Makefile.in gsf/version.c doc/version.xml libgsf-1.pc libgsf-1.spec libgsf-gnome-1.pc libgsf-gnome-1.spec libgsf-win32-1.pc libgsf-zip"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+       mv -f po/POTFILES po/POTFILES.tmp
+        sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
+        rm -f po/POTFILES.tmp
+
+if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"OS_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"OS_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"PLATFORM_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"PLATFORM_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENABLE_GTK_DOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"GTK_DOC_USE_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${GTK_DOC_INSTALLED_TRUE}" && test -z "${GTK_DOC_INSTALLED_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"GTK_DOC_INSTALLED\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"GTK_DOC_INSTALLED\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_PYTHON_TRUE}" && test -z "${WITH_PYTHON_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_PYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_PYTHON\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_LIBGSF_GNOME_TRUE}" && test -z "${WITH_LIBGSF_GNOME_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_LIBGSF_GNOME\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_LIBGSF_GNOME\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${GCONF_SCHEMAS_INSTALL_TRUE}" && test -z "${GCONF_SCHEMAS_INSTALL_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"GCONF_SCHEMAS_INSTALL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"GCONF_SCHEMAS_INSTALL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_GCONF_TRUE}" && test -z "${WITH_GCONF_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_GCONF\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_GCONF\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by libgsf $as_me 1.12.3, which was
+generated by GNU Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf at gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+libgsf config.status 1.12.3
+configured by $0, generated by GNU Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
+MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
+XGETTEXT='${INTLTOOL_XGETTEXT}'
+
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+  "gsf/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsf/Makefile" ;;
+  "gsf-gnome/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsf-gnome/Makefile" ;;
+  "gsf-win32/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsf-win32/Makefile" ;;
+  "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+  "python/Makefile" ) CONFIG_FILES="$CONFIG_FILES python/Makefile" ;;
+  "thumbnailer/Makefile" ) CONFIG_FILES="$CONFIG_FILES thumbnailer/Makefile" ;;
+  "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
+  "gsf/version.c" ) CONFIG_FILES="$CONFIG_FILES gsf/version.c" ;;
+  "doc/version.xml" ) CONFIG_FILES="$CONFIG_FILES doc/version.xml" ;;
+  "libgsf-1.pc" ) CONFIG_FILES="$CONFIG_FILES libgsf-1.pc" ;;
+  "libgsf-1.spec" ) CONFIG_FILES="$CONFIG_FILES libgsf-1.spec" ;;
+  "libgsf-gnome-1.pc" ) CONFIG_FILES="$CONFIG_FILES libgsf-gnome-1.pc" ;;
+  "libgsf-gnome-1.spec" ) CONFIG_FILES="$CONFIG_FILES libgsf-gnome-1.spec" ;;
+  "libgsf-win32-1.pc" ) CONFIG_FILES="$CONFIG_FILES libgsf-win32-1.pc" ;;
+  "libgsf-zip" ) CONFIG_FILES="$CONFIG_FILES libgsf-zip" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  "intltool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;;
+  "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+  "gsf-config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS gsf-config.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s, at SHELL@,$SHELL,;t t
+s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s, at exec_prefix@,$exec_prefix,;t t
+s, at prefix@,$prefix,;t t
+s, at program_transform_name@,$program_transform_name,;t t
+s, at bindir@,$bindir,;t t
+s, at sbindir@,$sbindir,;t t
+s, at libexecdir@,$libexecdir,;t t
+s, at datadir@,$datadir,;t t
+s, at sysconfdir@,$sysconfdir,;t t
+s, at sharedstatedir@,$sharedstatedir,;t t
+s, at localstatedir@,$localstatedir,;t t
+s, at libdir@,$libdir,;t t
+s, at includedir@,$includedir,;t t
+s, at oldincludedir@,$oldincludedir,;t t
+s, at infodir@,$infodir,;t t
+s, at mandir@,$mandir,;t t
+s, at build_alias@,$build_alias,;t t
+s, at host_alias@,$host_alias,;t t
+s, at target_alias@,$target_alias,;t t
+s, at DEFS@,$DEFS,;t t
+s, at ECHO_C@,$ECHO_C,;t t
+s, at ECHO_N@,$ECHO_N,;t t
+s, at ECHO_T@,$ECHO_T,;t t
+s, at LIBS@,$LIBS,;t t
+s, at LIBGSF_MAJOR_VERSION@,$LIBGSF_MAJOR_VERSION,;t t
+s, at LIBGSF_MINOR_VERSION@,$LIBGSF_MINOR_VERSION,;t t
+s, at LIBGSF_MICRO_VERSION@,$LIBGSF_MICRO_VERSION,;t t
+s, at VERSION_INFO@,$VERSION_INFO,;t t
+s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s, at INSTALL_DATA@,$INSTALL_DATA,;t t
+s, at CYGPATH_W@,$CYGPATH_W,;t t
+s, at PACKAGE@,$PACKAGE,;t t
+s, at VERSION@,$VERSION,;t t
+s, at ACLOCAL@,$ACLOCAL,;t t
+s, at AUTOCONF@,$AUTOCONF,;t t
+s, at AUTOMAKE@,$AUTOMAKE,;t t
+s, at AUTOHEADER@,$AUTOHEADER,;t t
+s, at MAKEINFO@,$MAKEINFO,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at install_sh@,$install_sh,;t t
+s, at STRIP@,$STRIP,;t t
+s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s, at INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s, at AWK@,$AWK,;t t
+s, at SET_MAKE@,$SET_MAKE,;t t
+s, at am__leading_dot@,$am__leading_dot,;t t
+s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+s, at MAINT@,$MAINT,;t t
+s, at ACLOCAL_AMFLAGS@,$ACLOCAL_AMFLAGS,;t t
+s, at CC@,$CC,;t t
+s, at CFLAGS@,$CFLAGS,;t t
+s, at LDFLAGS@,$LDFLAGS,;t t
+s, at CPPFLAGS@,$CPPFLAGS,;t t
+s, at ac_ct_CC@,$ac_ct_CC,;t t
+s, at EXEEXT@,$EXEEXT,;t t
+s, at OBJEXT@,$OBJEXT,;t t
+s, at DEPDIR@,$DEPDIR,;t t
+s, at am__include@,$am__include,;t t
+s, at am__quote@,$am__quote,;t t
+s, at AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s, at AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s, at AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s, at CCDEPMODE@,$CCDEPMODE,;t t
+s, at am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s, at am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s, at build@,$build,;t t
+s, at build_cpu@,$build_cpu,;t t
+s, at build_vendor@,$build_vendor,;t t
+s, at build_os@,$build_os,;t t
+s, at host@,$host,;t t
+s, at host_cpu@,$host_cpu,;t t
+s, at host_vendor@,$host_vendor,;t t
+s, at host_os@,$host_os,;t t
+s, at EGREP@,$EGREP,;t t
+s, at LN_S@,$LN_S,;t t
+s, at ECHO@,$ECHO,;t t
+s, at AR@,$AR,;t t
+s, at ac_ct_AR@,$ac_ct_AR,;t t
+s, at RANLIB@,$RANLIB,;t t
+s, at ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s, at DLLTOOL@,$DLLTOOL,;t t
+s, at ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t
+s, at AS@,$AS,;t t
+s, at ac_ct_AS@,$ac_ct_AS,;t t
+s, at OBJDUMP@,$OBJDUMP,;t t
+s, at ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t
+s, at CPP@,$CPP,;t t
+s, at CXX@,$CXX,;t t
+s, at CXXFLAGS@,$CXXFLAGS,;t t
+s, at ac_ct_CXX@,$ac_ct_CXX,;t t
+s, at CXXDEPMODE@,$CXXDEPMODE,;t t
+s, at am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s, at am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s, at CXXCPP@,$CXXCPP,;t t
+s, at F77@,$F77,;t t
+s, at FFLAGS@,$FFLAGS,;t t
+s, at ac_ct_F77@,$ac_ct_F77,;t t
+s, at LIBTOOL@,$LIBTOOL,;t t
+s, at PKG_CONFIG@,$PKG_CONFIG,;t t
+s, at INTLTOOL_DESKTOP_RULE@,$INTLTOOL_DESKTOP_RULE,;t t
+s, at INTLTOOL_DIRECTORY_RULE@,$INTLTOOL_DIRECTORY_RULE,;t t
+s, at INTLTOOL_KEYS_RULE@,$INTLTOOL_KEYS_RULE,;t t
+s, at INTLTOOL_PROP_RULE@,$INTLTOOL_PROP_RULE,;t t
+s, at INTLTOOL_OAF_RULE@,$INTLTOOL_OAF_RULE,;t t
+s, at INTLTOOL_PONG_RULE@,$INTLTOOL_PONG_RULE,;t t
+s, at INTLTOOL_SERVER_RULE@,$INTLTOOL_SERVER_RULE,;t t
+s, at INTLTOOL_SHEET_RULE@,$INTLTOOL_SHEET_RULE,;t t
+s, at INTLTOOL_SOUNDLIST_RULE@,$INTLTOOL_SOUNDLIST_RULE,;t t
+s, at INTLTOOL_UI_RULE@,$INTLTOOL_UI_RULE,;t t
+s, at INTLTOOL_XAM_RULE@,$INTLTOOL_XAM_RULE,;t t
+s, at INTLTOOL_KBD_RULE@,$INTLTOOL_KBD_RULE,;t t
+s, at INTLTOOL_XML_RULE@,$INTLTOOL_XML_RULE,;t t
+s, at INTLTOOL_XML_NOMERGE_RULE@,$INTLTOOL_XML_NOMERGE_RULE,;t t
+s, at INTLTOOL_CAVES_RULE@,$INTLTOOL_CAVES_RULE,;t t
+s, at INTLTOOL_SCHEMAS_RULE@,$INTLTOOL_SCHEMAS_RULE,;t t
+s, at INTLTOOL_THEME_RULE@,$INTLTOOL_THEME_RULE,;t t
+s, at INTLTOOL_EXTRACT@,$INTLTOOL_EXTRACT,;t t
+s, at INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t
+s, at INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t
+s, at INTLTOOL_PERL@,$INTLTOOL_PERL,;t t
+s, at INTLTOOL_ICONV@,$INTLTOOL_ICONV,;t t
+s, at INTLTOOL_MSGFMT@,$INTLTOOL_MSGFMT,;t t
+s, at INTLTOOL_MSGMERGE@,$INTLTOOL_MSGMERGE,;t t
+s, at INTLTOOL_XGETTEXT@,$INTLTOOL_XGETTEXT,;t t
+s, at USE_NLS@,$USE_NLS,;t t
+s, at MSGFMT@,$MSGFMT,;t t
+s, at GMSGFMT@,$GMSGFMT,;t t
+s, at XGETTEXT@,$XGETTEXT,;t t
+s, at CATALOGS@,$CATALOGS,;t t
+s, at CATOBJEXT@,$CATOBJEXT,;t t
+s, at DATADIRNAME@,$DATADIRNAME,;t t
+s, at GMOFILES@,$GMOFILES,;t t
+s, at INSTOBJEXT@,$INSTOBJEXT,;t t
+s, at INTLLIBS@,$INTLLIBS,;t t
+s, at PO_IN_DATADIR_TRUE@,$PO_IN_DATADIR_TRUE,;t t
+s, at PO_IN_DATADIR_FALSE@,$PO_IN_DATADIR_FALSE,;t t
+s, at POFILES@,$POFILES,;t t
+s, at POSUB@,$POSUB,;t t
+s, at MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+s, at GETTEXT_PACKAGE@,$GETTEXT_PACKAGE,;t t
+s, at ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t
+s, at LIBGSF_CFLAGS@,$LIBGSF_CFLAGS,;t t
+s, at LIBGSF_LIBS@,$LIBGSF_LIBS,;t t
+s, at WARN_CFLAGS@,$WARN_CFLAGS,;t t
+s, at OS_WIN32_TRUE@,$OS_WIN32_TRUE,;t t
+s, at OS_WIN32_FALSE@,$OS_WIN32_FALSE,;t t
+s, at PLATFORM_WIN32_TRUE@,$PLATFORM_WIN32_TRUE,;t t
+s, at PLATFORM_WIN32_FALSE@,$PLATFORM_WIN32_FALSE,;t t
+s, at HTML_DIR@,$HTML_DIR,;t t
+s, at ENABLE_GTK_DOC_TRUE@,$ENABLE_GTK_DOC_TRUE,;t t
+s, at ENABLE_GTK_DOC_FALSE@,$ENABLE_GTK_DOC_FALSE,;t t
+s, at GTK_DOC_USE_LIBTOOL_TRUE@,$GTK_DOC_USE_LIBTOOL_TRUE,;t t
+s, at GTK_DOC_USE_LIBTOOL_FALSE@,$GTK_DOC_USE_LIBTOOL_FALSE,;t t
+s, at GTK_DOC_INSTALLED_TRUE@,$GTK_DOC_INSTALLED_TRUE,;t t
+s, at GTK_DOC_INSTALLED_FALSE@,$GTK_DOC_INSTALLED_FALSE,;t t
+s, at Z_CPPFLAGS@,$Z_CPPFLAGS,;t t
+s, at Z_LIBS@,$Z_LIBS,;t t
+s, at WITH_PYTHON_TRUE@,$WITH_PYTHON_TRUE,;t t
+s, at WITH_PYTHON_FALSE@,$WITH_PYTHON_FALSE,;t t
+s, at BZ2_LIBS@,$BZ2_LIBS,;t t
+s, at LIBGSF_GNOME_CFLAGS@,$LIBGSF_GNOME_CFLAGS,;t t
+s, at LIBGSF_GNOME_LIBS@,$LIBGSF_GNOME_LIBS,;t t
+s, at WITH_LIBGSF_GNOME_TRUE@,$WITH_LIBGSF_GNOME_TRUE,;t t
+s, at WITH_LIBGSF_GNOME_FALSE@,$WITH_LIBGSF_GNOME_FALSE,;t t
+s, at GCONFTOOL@,$GCONFTOOL,;t t
+s, at GCONF_SCHEMA_CONFIG_SOURCE@,$GCONF_SCHEMA_CONFIG_SOURCE,;t t
+s, at GCONF_SCHEMA_FILE_DIR@,$GCONF_SCHEMA_FILE_DIR,;t t
+s, at GCONF_SCHEMAS_INSTALL_TRUE@,$GCONF_SCHEMAS_INSTALL_TRUE,;t t
+s, at GCONF_SCHEMAS_INSTALL_FALSE@,$GCONF_SCHEMAS_INSTALL_FALSE,;t t
+s, at WITH_GCONF_TRUE@,$WITH_GCONF_TRUE,;t t
+s, at WITH_GCONF_FALSE@,$WITH_GCONF_FALSE,;t t
+s, at LIBOBJS@,$LIBOBJS,;t t
+s, at LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s, at configure_input@,$configure_input,;t t
+s, at srcdir@,$ac_srcdir,;t t
+s, at abs_srcdir@,$ac_abs_srcdir,;t t
+s, at top_srcdir@,$ac_top_srcdir,;t t
+s, at abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s, at builddir@,$ac_builddir,;t t
+s, at abs_builddir@,$ac_abs_builddir,;t t
+s, at top_builddir@,$ac_top_builddir,;t t
+s, at abs_top_builddir@,$ac_abs_top_builddir,;t t
+s, at INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
+ac_dB='[	 ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 # Do quote $f, to prevent DOS paths from being IFS'd.
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*\)\(([^)]*)\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[	 ]*#[	 ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[	 ]*#[	 ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X$ac_file : 'X\(//\)[^/]' \| \
+	 X$ac_file : 'X\(//\)$' \| \
+	 X$ac_file : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_dest" : 'X\(//\)[^/]' \| \
+	 X"$ac_dest" : 'X\(//\)$' \| \
+	 X"$ac_dest" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+	s/\\\\$//
+	p
+	n
+	/\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+    intltool )
+
+intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
+               -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
+               -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
+               -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
+               -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
+               -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
+  > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+  rm -f intltool-extract.out
+else
+  mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
+  > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+  rm -f intltool-merge.out
+else
+  mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
+  > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+  rm -f intltool-update.out
+else
+  mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+ ;;
+    default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*)
+        sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
+      esac ;;
+  esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+echo "$as_me:$LINENO: result: Configured $PACKAGE $VERSION" >&5
+echo "${ECHO_T}Configured $PACKAGE $VERSION" >&6


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/configure.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,392 @@
+-*- mode: m4 -*-
+dnl We require Automake 1.7.1, which requires Autoconf 2.54.
+AC_PREREQ(2.54)
+
+m4_define([libgsf_version_major], [1])
+m4_define([libgsf_version_minor], [12])
+m4_define([libgsf_version_micro], [3])
+m4_define([libgsf_version_extra], [])
+m4_define([libgsf_full_version],
+    [libgsf_version_major.libgsf_version_minor.libgsf_version_micro[]libgsf_version_extra])
+
+AC_INIT(libgsf, [libgsf_full_version],
+	[http://bugzilla.gnome.org/enter_bug.cgi?product=libgsf])
+AC_CONFIG_SRCDIR(gsf/gsf.h)
+
+AC_SUBST(LIBGSF_MAJOR_VERSION, libgsf_version_major)
+AC_SUBST(LIBGSF_MINOR_VERSION, libgsf_version_minor)
+AC_SUBST(LIBGSF_MICRO_VERSION, libgsf_version_micro)
+
+dnl Version info for libraries = CURRENT:REVISION:AGE
+AC_SUBST(VERSION_INFO,
+m4_eval(libgsf_version_major + libgsf_version_minor)[]dnl
+:libgsf_version_micro:libgsf_version_minor)
+
+dnl FIXME: the above formula and the following explanation are wrong:  --kasal
+dnl
+dnl Set release number
+dnl This is derived from "Versioning" chapter of info libtool documentation.
+dnl     4a) Increment when removing or changing interfaces.
+dnl LIBGSF_MAJOR_VERSION=1
+dnl     4a) 5) Increment when adding interfaces.
+dnl     6) Set to zero when removing or changing interfaces.
+dnl LIBGSF_MINOR_VERSION=12
+dnl     3) Increment when interfaces not changed at all,
+dnl               only bug fixes or internal changes made.
+dnl     4b) Set to zero when adding, removing or changing interfaces.
+dnl LIBGSF_MICRO_VERSION=0
+
+AM_INIT_AUTOMAKE(dist-bzip2)
+
+AC_CONFIG_HEADERS(gsf-config.h)
+AM_MAINTAINER_MODE
+
+dnl Propagate Gnome-specific variable ACLOCAL_FLAGS to Makefile.
+AC_SUBST(ACLOCAL_AMFLAGS, $ACLOCAL_FLAGS)
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_MAKE_SET
+AC_LIBTOOL_WIN32_DLL
+AM_PROG_LIBTOOL
+
+AC_FUNC_FSEEKO
+AC_SYS_LARGEFILE
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+dnl Gettext/i18n stuff
+
+AC_PROG_INTLTOOL
+
+ALL_LINGUAS="es"
+
+AM_GLIB_GNU_GETTEXT
+
+GETTEXT_PACKAGE=AC_PACKAGE_NAME
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.])
+
+dnl Checks for libraries.
+ifelse([
+  If we defined the module lists on the M4 level, we could have problems
+  with PKG_CHECK_MODULES from pkgconfig 0.16.0, which double quotes its
+  second argument (the module list).
+  As a handy workaround, we use shell variables.
+])
+dnl Modules common to libgsf and libgsf-gnome
+libgsf_reqs="
+    gobject-2.0 >= 2.4.0
+    glib-2.0 >= 2.4.0
+    libxml-2.0 >= 2.4.16
+"
+dnl Modules required for libgsf-gnome
+libgsf_gnome_reqs="
+    $libgsf_reqs
+    libbonobo-2.0 >= 2.0.0
+    gnome-vfs-2.0 >= 2.2.0
+    gnome-vfs-module-2.0 >= 2.2.0
+"
+PKG_CHECK_MODULES(LIBGSF, $libgsf_reqs)
+
+## this should come after `AC_PROG_CC'
+ifdef([GNOME_COMPILE_WARNINGS],[GNOME_COMPILE_WARNINGS],)
+CFLAGS="$CFLAGS $WARN_CFLAGS -DG_DISABLE_DEPRECATED"
+if test "$GCC" = "yes"; then
+	for option in -Wno-system-headers -Wfloat-equal -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wformat -Wnested-externs -Winline -Wdeclaration-after-statement -Wundef -W -Wmissing-noreturn -Wmissing-format-attribute; do
+		SAVE_CFLAGS="$CFLAGS"
+		CFLAGS="$CFLAGS $option"
+		AC_MSG_CHECKING([whether gcc understands $option])
+		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])],
+			has_option=yes,
+			has_option=no)
+		if test $has_option = no; then
+		  CFLAGS="$SAVE_CFLAGS"
+		fi
+		AC_MSG_RESULT($has_option)
+		unset has_option
+		unset SAVE_CFLAGS
+	done
+	unset option
+fi
+
+AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
+if test $fdopen_works = no ; then
+	unset ac_cv_have_decl_fdopen
+	CFLAGS="$CFLAGS -D_POSIX_SOURCE"
+	AC_MSG_NOTICE([adding -D_POSIX_SOURCE to CFLAGS])
+	AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
+	if test $fdopen_works = no ; then
+		AC_MSG_ERROR([fdopen is not available])
+	fi
+fi
+
+# Unfortunately, -D_POSIX_SOURCE turns off struct timeval on Solaris
+AC_MSG_CHECKING([whether struct timeval is available])
+for try in 1 2; do
+	AC_COMPILE_IFELSE(
+		[AC_LANG_PROGRAM(
+			[[#include <sys/time.h>]],
+			[[struct timeval tv;]])],
+		struct_timeval_works=yes,
+		struct_timeval_works=no)
+	test $struct_timeval_works = yes && break
+	# Try this for the second attempt:
+	test $try = 1 && CFLAGS="$CFLAGS -D__EXTENSIONS__"
+done
+AC_MSG_RESULT($struct_timeval_works)
+if test $struct_timeval_works = no ; then
+	AC_MSG_ERROR([struct timeval is not available])
+fi
+
+AC_MSG_CHECKING([whether -D_BSD_SOURCE is needed for caddr_t])
+AC_COMPILE_IFELSE(
+	[AC_LANG_PROGRAM([[#include <sys/types.h>]], [[caddr_t ca]])],
+	need_bsd1=no,
+	need_bsd1=yes)
+AC_MSG_RESULT($need_bsd1)
+
+AC_MSG_CHECKING([whether -D_BSD_SOURCE is needed for lstat])
+AC_LINK_IFELSE([AC_LANG_PROGRAM(
+[[#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>]],
+[[void *ptr = &lstat]])],
+need_bsd2=no, need_bsd2=yes)
+AC_MSG_RESULT($need_bsd2)
+if test $need_bsd1 = yes -o $need_bsd2 = yes; then
+	CFLAGS="$CFLAGS -D_BSD_SOURCE"
+fi
+
+AC_TYPE_MODE_T
+AC_CHECK_HEADERS(fcntl.h malloc.h unistd.h io.h)
+AC_FUNC_MMAP
+
+AC_CHECK_FUNCS(chown)
+
+SAVE_CFLAGS=$CFLAGS
+SAVE_LIBS=$LIBS
+CFLAGS="$CFLAGS $LIBGSF_CFLAGS"
+LIBS="$LIBGSF_LIBS $LIBS"
+AC_MSG_CHECKING([for g_chmod])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <glib/gstdio.h>]], [[(void)g_chmod("/xxx",0777);]])],
+               [AC_DEFINE(HAVE_G_CHMOD, 1, [Define if g_chmod is available as macro or function])
+		AC_MSG_RESULT(yes)],
+	       [AC_MSG_RESULT(no)])
+AC_MSG_CHECKING([for g_access])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <glib/gstdio.h>]], [[(void)g_access("/xxx",0777);]])],
+               [AC_DEFINE(HAVE_G_ACCESS, 1, [Define if g_access is available as macro or function])
+		AC_MSG_RESULT(yes)],
+	       [AC_MSG_RESULT(no)])
+CFLAGS=$SAVE_CFLAGS
+LIBS=$SAVE_LIBS
+
+AC_MSG_CHECKING([whether macro S_ISREG is available])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[[#include <sys/types.h>
+#include <sys/stat.h>]],
+[[S_ISREG(S_IFMT);]])],
+	[macro_s_isreg=yes],
+	[AH_TEMPLATE([S_ISREG], [Define S_ISREG if stat.h doesn't])
+	 AC_DEFINE([S_ISREG(m)], [(((m) & S_IFMT) == S_IFREG)])
+	 macro_s_isreg=no])
+AC_MSG_RESULT($macro_s_isreg)
+
+AC_MSG_CHECKING([for native Win32])
+case $host in
+  *-*-mingw*)
+    native_win32=yes
+    ;;
+  *)
+    native_win32=no
+    ;;
+esac
+AC_MSG_RESULT([$native_win32])
+AM_CONDITIONAL(OS_WIN32, test "$native_win32" = yes)
+
+AC_MSG_CHECKING([for Win32 platform in general])
+case $host in
+  *-*-mingw*|*-*-cygwin*)
+    platform_win32=yes
+    ;;
+  *)
+    platform_win32=no
+    ;;
+esac
+AC_MSG_RESULT($platform_win32)
+AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = yes)
+
+##################################################
+# Checks for gtk-doc and docbook-tools
+##################################################
+gtk_doc_installed=true
+#ifdef([GTK_DOC_CHECK],[GTK_DOC_CHECK([1.0])],[gtk_doc_installed=false])
+# I would have liked to conditionalize this, but 
+# that appears to break other things http://bugzilla.gnome.org/show_bug.cgi?id=156399
+GTK_DOC_CHECK([1.0])
+AM_CONDITIONAL(GTK_DOC_INSTALLED, $gtk_doc_installed)
+
+dnl ***********************************************************************************
+# Check for zlib.
+_cppflags=$CPPFLAGS
+_ldflags=$LDFLAGS
+
+Z_DIR= Z_LIBS= Z_CPPFLAGS=
+
+AC_ARG_WITH(zlib,
+        [[  --with-zlib=DIR       use libz in DIR]],
+        [case $withval in
+         yes|no) ;;
+         *)     Z_DIR=$withval
+                CPPFLAGS="${CPPFLAGS} -I$withval/include"
+                LDFLAGS="${LDFLAGS} -L$withval/lib"
+                ;;
+         esac])
+
+if test "x$with_zlib" != xno; then
+        with_zlib=no
+        AC_CHECK_HEADER(zlib.h, [AC_CHECK_LIB(z, gzread, [with_zlib=yes])])
+fi
+if test "$with_zlib" = no; then
+        AC_MSG_ERROR([*** zlib is required])
+fi
+if test "x$Z_DIR" != "x"; then
+        Z_CPPFLAGS="-I$Z_DIR/include"
+        case $host in
+        *-*-solaris*)   Z_LIBS="-L$Z_DIR/lib -R$Z_DIR/lib -lz" ;;
+        *)              Z_LIBS="-L$Z_DIR/lib -lz" ;;
+        esac
+else
+        Z_LIBS="-lz"
+fi
+AC_SUBST(Z_CPPFLAGS)
+AC_SUBST(Z_LIBS)
+
+CPPFLAGS=${_cppflags}
+LDFLAGS=${_ldflags}
+
+dnl ***********************************************************************************
+pygtk_msg=no
+
+dnl Uncomment to enable Python bindings.
+dnl
+dnl AM_PATH_PYTHON
+dnl AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
+dnl # check for pygtk
+dnl PKG_CHECK_MODULES(PYGTK, pygtk-2.0 >= 1.99.10,
+dnl 		  [pygtk_msg="yes"],
+dnl 		  [pygtk_msg="NO.  pygtk problem"])
+dnl AC_SUBST(PYGTK_CFLAGS)
+dnl AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no)
+dnl if test "x$PYGTK_CODEGEN" = xno; then
+dnl    AC_MSG_ERROR(could not find pygtk-codegen-2.0 script)
+dnl fi
+
+AM_CONDITIONAL(WITH_PYTHON, [test "$pygtk_msg" = yes])
+
+dnl ***********************************************************************************
+
+dnl bz2
+dnl
+BZ2_LIBS=
+test_bz2=true
+AC_ARG_WITH(bz2,
+	[--{with,without}-bz2   Build additional wrappers for BZ2],
+	if test "x$withval" = xno; then
+		test_bz2=false
+	fi
+)
+
+with_bz2=false
+if test "x$test_bz2" = xtrue ; then
+   AC_CHECK_LIB(bz2, BZ2_bzDecompressInit, 
+		bz2_ok=yes,
+		bz2_ok=no
+		AC_MSG_WARN(*** BZ2 support disabled (BZ2 library not found) ***))
+
+   if test "$bz2_ok" = yes; then
+      AC_MSG_CHECKING([for bzlib.h])
+      AC_PREPROC_IFELSE(
+	[AC_LANG_SOURCE(
+	[[#include <stdio.h>
+	#undef PACKAGE
+	#undef VERSION
+	#undef HAVE_STDLIB_H
+	#include <bzlib.h>]])],
+        bz2_ok=yes,
+        bz2_ok=no)
+      AC_MSG_RESULT($bz2_ok)
+   fi
+
+   if test "$bz2_ok" = yes; then
+	AC_DEFINE(HAVE_BZ2, 1, [Is bzip2 available and enabled])
+	BZ2_LIBS="-lbz2"
+   else
+	AC_MSG_WARN(*** BZ2 support disabled (BZ2 header not found) ***)
+   fi
+else
+   AC_MSG_WARN([BZ2 support disabled, as requested (Use --with-bz2 to enable)])
+fi
+
+AC_SUBST(BZ2_LIBS)
+
+dnl ***********************************************************************************
+
+dnl gnome
+dnl
+want_gnome=auto
+AC_ARG_WITH(gnome,
+	[--{with,without}-gnome   Build additional wrappers for GNOME-VFS and BONOBO],
+	[case $withval in
+	yes) want_gnome=yes;;
+	no) want_gnome=no;;
+	esac[]dnl
+])
+have_gnome=no
+if  test $want_gnome = no ; then 
+    AC_MSG_WARN([GNOME support disabled, as requested (Use --with-gnome to enable)])
+else
+    PKG_CHECK_MODULES(LIBGSF_GNOME, $libgsf_gnome_reqs,
+	[have_gnome=yes],
+	[if test $want_gnome = yes; then
+	    AC_MSG_ERROR([GNOME support requested, but not available.])
+	 else
+	    AC_MSG_WARN([GNOME support disabled, unable to find required version of VFS and/or Bonobo])
+	 fi])
+fi
+AM_CONDITIONAL(WITH_LIBGSF_GNOME, test $have_gnome = yes)
+
+# GConf configuration
+dnl Don't publish the GCONFTOOL variable, AM_GCONF_SOURCE_2 has ``gconftool-2'' hardwired.
+GCONFTOOL=
+AC_CHECK_PROG([GCONFTOOL], [gconftool-2], [gconftool-2], [no])
+if test "x$GCONFTOOL" = "xno"; then
+    AC_MSG_WARN([thumbnailer will not be built, unable to find gconftool-2])
+else
+    AM_GCONF_SOURCE_2
+fi
+AM_CONDITIONAL(WITH_GCONF, test "x$GCONFTOOL" != "xno")
+
+LDFLAGS="-no-undefined $LDFLAGS"
+
+AC_CONFIG_FILES([
+Makefile
+doc/Makefile
+gsf/Makefile
+gsf-gnome/Makefile
+gsf-win32/Makefile
+tests/Makefile
+python/Makefile
+thumbnailer/Makefile
+po/Makefile.in
+gsf/version.c
+doc/version.xml
+libgsf-1.pc
+libgsf-1.spec
+libgsf-gnome-1.pc
+libgsf-gnome-1.spec
+libgsf-win32-1.pc
+libgsf-zip
+])
+AC_OUTPUT
+
+AC_MSG_RESULT([Configured $PACKAGE $VERSION])

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/depcomp
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/depcomp	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/depcomp	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,479 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/depcomp
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,67 @@
+## Process this file with automake to produce Makefile.in
+
+# The name of the module.
+DOC_MODULE=gsf
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE=gsf-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR=../gsf
+
+# Extra options to pass to gtkdoc-scangobj
+SCANGOBJ_OPTIONS= --nogtkinit --type-init-func="g_type_init ()" 
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS=
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS=--sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS=
+
+# Used for dependencies
+HFILE_GLOB=$(top_srcdir)/gsf/*.h
+CFILE_GLOB=$(top_srcdir)/gsf/*.c
+
+# Header files to ignore when scanning
+IGNORE_HFILES=			 \
+	biff-types.h		 \
+	gsf-command-context.h	 \
+	gsf-infile-msvba.h	 \
+	gsf-io-context.h	 \
+	gsf-output-transaction.h \
+	gsf-infile-ar.h 	\
+	gsf-infile-tar.h 	\
+	gsf-infile-tar.c 	\
+	gsf-outfile-tar.h	\
+	gsf-outfile-tar.c
+
+EXTRA_HFILES = ../gsf-gnome/*.h
+
+# Images to copy into HTML directory
+HTML_IMAGES =
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
+content_files =
+
+# Other files to distribute
+extra_files =
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+GTKDOC_CFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS)
+GTKDOC_LIBS = $(top_builddir)/gsf/libgsf-1.la $(LIBGSF_LIBS)
+
+manpagedir   = $(datadir)/man/man1
+manpage_DATA = gsf-office-thumbnailer.1
+
+if GTK_DOC_INSTALLED
+include $(top_srcdir)/lib/libgsf-1.12.3/gtk-doc.make
+CLEANFILES += gsf-scan.*
+.PHONY : dist-hook-local
+EXTRA_DIST += $(manpage_DATA)
+else
+EXTRA_DIST = $(manpage_DATA)
+endif

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,607 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+# The name of the module.
+DOC_MODULE = gsf
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE = gsf-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir)
+DOC_SOURCE_DIR = ../gsf
+
+# Extra options to pass to gtkdoc-scangobj
+SCANGOBJ_OPTIONS = --nogtkinit --type-init-func="g_type_init ()" 
+
+# Extra options to supply to gtkdoc-scan
+SCAN_OPTIONS = 
+
+# Extra options to supply to gtkdoc-mkdb
+MKDB_OPTIONS = --sgml-mode --output-format=xml
+
+# Extra options to supply to gtkdoc-fixref
+FIXXREF_OPTIONS = 
+
+# Used for dependencies
+HFILE_GLOB = $(top_srcdir)/gsf/*.h
+CFILE_GLOB = $(top_srcdir)/gsf/*.c
+
+# Header files to ignore when scanning
+IGNORE_HFILES = \
+	biff-types.h		 \
+	gsf-command-context.h	 \
+	gsf-infile-msvba.h	 \
+	gsf-io-context.h	 \
+	gsf-output-transaction.h \
+	gsf-infile-ar.h 	\
+	gsf-infile-tar.h 	\
+	gsf-infile-tar.c 	\
+	gsf-outfile-tar.h	\
+	gsf-outfile-tar.c
+
+
+EXTRA_HFILES = ../gsf-gnome/*.h
+
+# Images to copy into HTML directory
+HTML_IMAGES = 
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE)
+content_files = 
+
+# Other files to distribute
+extra_files = 
+
+# CFLAGS and LDFLAGS for compiling scan program. Only needed
+# if $(DOC_MODULE).types is non-empty.
+GTKDOC_CFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS)
+GTKDOC_LIBS = $(top_builddir)/gsf/libgsf-1.la $(LIBGSF_LIBS)
+
+manpagedir = $(datadir)/man/man1
+manpage_DATA = gsf-office-thumbnailer.1
+ at GTK_DOC_INSTALLED_TRUE@@GTK_DOC_USE_LIBTOOL_FALSE at GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+
+ at GTK_DOC_INSTALLED_TRUE@@GTK_DOC_USE_LIBTOOL_TRUE at GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+ at GTK_DOC_INSTALLED_TRUE@@GTK_DOC_USE_LIBTOOL_FALSE at GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+ at GTK_DOC_INSTALLED_TRUE@@GTK_DOC_USE_LIBTOOL_TRUE at GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+ at GTK_DOC_INSTALLED_TRUE@GPATH = $(srcdir)
+
+ at GTK_DOC_INSTALLED_TRUE@TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)
+
+ at GTK_DOC_INSTALLED_TRUE@EXTRA_DIST = \
+ at GTK_DOC_INSTALLED_TRUE@	$(content_files)		\
+ at GTK_DOC_INSTALLED_TRUE@	$(HTML_IMAGES)			\
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MAIN_SGML_FILE)		\
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MODULE)-sections.txt	\
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MODULE)-overrides.txt\
+ at GTK_DOC_INSTALLED_TRUE@$(manpage_DATA)
+ at GTK_DOC_INSTALLED_FALSE@EXTRA_DIST = $(manpage_DATA)
+
+ at GTK_DOC_INSTALLED_TRUE@DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+ at GTK_DOC_INSTALLED_TRUE@	   $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+
+ at GTK_DOC_INSTALLED_TRUE@SCANOBJ_FILES = \
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MODULE).args 	 \
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MODULE).hierarchy  \
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MODULE).interfaces \
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MODULE).prerequisites \
+ at GTK_DOC_INSTALLED_TRUE@	$(DOC_MODULE).signals
+
+
+ at GTK_DOC_INSTALLED_TRUE@CLEANFILES = $(SCANOBJ_FILES) $(DOC_MODULE)-unused.txt $(DOC_STAMPS) gsf-scan.*
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/gsf-config.h
+CONFIG_CLEAN_FILES = version.xml
+DIST_SOURCES =
+DATA = $(manpage_DATA)
+
+DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/gtk-doc.make \
+	Makefile.am version.xml.in
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/gtk-doc.make $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+version.xml: $(top_builddir)/config.status version.xml.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+manpageDATA_INSTALL = $(INSTALL_DATA)
+install-manpageDATA: $(manpage_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(manpagedir)
+	@list='$(manpage_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(manpageDATA_INSTALL) $$d$$p $(DESTDIR)$(manpagedir)/$$f"; \
+	  $(manpageDATA_INSTALL) $$d$$p $(DESTDIR)$(manpagedir)/$$f; \
+	done
+
+uninstall-manpageDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(manpage_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(manpagedir)/$$f"; \
+	  rm -f $(DESTDIR)$(manpagedir)/$$f; \
+	done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	$(mkinstalldirs) $(distdir)/..
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA) all-local
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(manpagedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-manpageDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+	maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-local uninstall-manpageDATA
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+	clean-libtool clean-local distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-data-local \
+	install-exec install-exec-am install-info install-info-am \
+	install-man install-manpageDATA install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic maintainer-clean-local mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-info-am uninstall-local \
+	uninstall-manpageDATA
+
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at all-local: html-build.stamp
+
+#### scan ####
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@echo 'gtk-doc: Scanning header files'
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	else \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	    cd $(srcdir) ; \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	    for i in $(SCANOBJ_FILES) ; do \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@               test -f $$i || touch $$i ; \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	    done \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	fi
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	cd $(srcdir) && \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	touch scan-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@true
+
+#### templates ####
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@echo 'gtk-doc: Rebuilding template files'
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	touch tmpl-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at tmpl.stamp: tmpl-build.stamp
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@true
+
+#### xml ####
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@echo 'gtk-doc: Building XML'
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	cd $(srcdir) && \
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	touch sgml-build.stamp
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at sgml.stamp: sgml-build.stamp
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@true
+
+#### html ####
+
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@echo 'gtk-doc: Building HTML'
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@-chmod -R u+w $(srcdir)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	rm -rf $(srcdir)/html 
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	mkdir $(srcdir)/html
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	@echo 'gtk-doc: Fixing cross-references' 
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE@	touch html-build.stamp
+ at ENABLE_GTK_DOC_FALSE@@GTK_DOC_INSTALLED_TRUE at all-local:
+
+##############
+
+ at GTK_DOC_INSTALLED_TRUE@clean-local:
+ at GTK_DOC_INSTALLED_TRUE@	rm -f *~ *.bak
+ at GTK_DOC_INSTALLED_TRUE@	rm -rf .libs
+
+ at GTK_DOC_INSTALLED_TRUE@maintainer-clean-local: clean
+ at GTK_DOC_INSTALLED_TRUE@	cd $(srcdir) && rm -rf xml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+ at GTK_DOC_INSTALLED_TRUE@install-data-local:
+ at GTK_DOC_INSTALLED_TRUE@	installfiles=`echo $(srcdir)/html/*`; \
+ at GTK_DOC_INSTALLED_TRUE@	if test "$$installfiles" = '$(srcdir)/html/*'; \
+ at GTK_DOC_INSTALLED_TRUE@	then echo '-- Nothing to install' ; \
+ at GTK_DOC_INSTALLED_TRUE@	else \
+ at GTK_DOC_INSTALLED_TRUE@	  $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+ at GTK_DOC_INSTALLED_TRUE@	  for i in $$installfiles; do \
+ at GTK_DOC_INSTALLED_TRUE@	    echo '-- Installing '$$i ; \
+ at GTK_DOC_INSTALLED_TRUE@	    $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+ at GTK_DOC_INSTALLED_TRUE@	  done; \
+ at GTK_DOC_INSTALLED_TRUE@	  echo '-- Installing $(srcdir)/html/index.sgml' ; \
+ at GTK_DOC_INSTALLED_TRUE@	  $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+ at GTK_DOC_INSTALLED_TRUE@	fi
+
+ at GTK_DOC_INSTALLED_TRUE@uninstall-local:
+ at GTK_DOC_INSTALLED_TRUE@	rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+ at ENABLE_GTK_DOC_TRUE@@GTK_DOC_INSTALLED_TRUE at dist-check-gtkdoc:
+ at ENABLE_GTK_DOC_FALSE@@GTK_DOC_INSTALLED_TRUE at dist-check-gtkdoc:
+ at ENABLE_GTK_DOC_FALSE@@GTK_DOC_INSTALLED_TRUE@	@echo "*** gtk-doc must be installed and enabled in order to make dist"
+ at ENABLE_GTK_DOC_FALSE@@GTK_DOC_INSTALLED_TRUE@	@false
+
+ at GTK_DOC_INSTALLED_TRUE@dist-hook: dist-check-gtkdoc dist-hook-local
+ at GTK_DOC_INSTALLED_TRUE@	mkdir $(distdir)/tmpl
+ at GTK_DOC_INSTALLED_TRUE@	mkdir $(distdir)/xml
+ at GTK_DOC_INSTALLED_TRUE@	mkdir $(distdir)/html
+ at GTK_DOC_INSTALLED_TRUE@	-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ at GTK_DOC_INSTALLED_TRUE@	-cp $(srcdir)/xml/*.xml $(distdir)/xml
+ at GTK_DOC_INSTALLED_TRUE@	-cp $(srcdir)/html/* $(distdir)/html
+ at GTK_DOC_INSTALLED_TRUE@	if test -f $(srcdir)/$(DOC_MODULE).types; then \
+ at GTK_DOC_INSTALLED_TRUE@	  cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
+ at GTK_DOC_INSTALLED_TRUE@	fi
+
+ at GTK_DOC_INSTALLED_TRUE@.PHONY : dist-hook-local
+ at GTK_DOC_INSTALLED_TRUE@.PHONY : dist-hook-local
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-docs.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-docs.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-docs.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
+               "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+
+<!ENTITY GsfInput		SYSTEM "xml/input.xml">
+<!ENTITY GsfOutput		SYSTEM "xml/output.xml">
+<!ENTITY GsfInfile		SYSTEM "xml/infile.xml">
+<!ENTITY GsfOutfile		SYSTEM "xml/outfile.xml">
+
+<!ENTITY GsfStdio		SYSTEM "xml/stdio.xml">
+<!ENTITY GsfMemory		SYSTEM "xml/memory.xml">
+<!ENTITY GsfIOChannel		SYSTEM "xml/iochannel.xml">
+<!ENTITY GsfGnomevfs		SYSTEM "xml/gnome-vfs.xml">
+<!ENTITY GsfBonobo		SYSTEM "xml/bonobo.xml">
+
+<!ENTITY GsfMetadata		SYSTEM "xml/metadata.xml">
+<!ENTITY GsfMsole		SYSTEM "xml/msole.xml">
+<!ENTITY GsfBlob		SYSTEM "xml/gsf-blob.xml">
+<!ENTITY GsfClipData		SYSTEM "xml/gsf-clip-data.xml">
+<!ENTITY GsfCompression		SYSTEM "xml/compression.xml">
+<!ENTITY GsfZip			SYSTEM "xml/zip.xml">
+<!ENTITY GsfXml			SYSTEM "xml/xml.xml">
+<!ENTITY GsfStructuredBlob	SYSTEM "xml/blob.xml">
+<!ENTITY GsfText		SYSTEM "xml/text.xml">
+
+<!ENTITY GsfUtils		SYSTEM "xml/utils.xml">
+<!ENTITY TreeIndex		SYSTEM "xml/tree_index.sgml">
+]>
+
+<book id="index">
+  <bookinfo>
+    <title>GSF Reference Manual</title>
+  </bookinfo>
+
+  <part id="into">
+    <title>GSF Overview</title>
+    <partintro>
+    <para>
+The GNOME Structured File Library (GSF) is an I/O abstraction for
+reading/writing compound files.  GSF is released under the GNU Lesser General
+Public License (GNU LGPL), which allows for flexible licensing of client
+applications.
+    </para>
+    <para>
+GSF depends on the following libraries:
+<variablelist>
+
+<varlistentry>
+<term>GLib</term>
+<listitem><para>
+A general-purpose utility library, not specific to graphical user interfaces.
+GLib provides many useful data types, macros, type conversions,
+string utilities, file utilities, a main loop abstraction, and so on.
+</para></listitem>
+</varlistentry>
+</variablelist>
+</para>
+</partintro>
+</part>
+
+<part id="api">
+  <title>API Reference</title>
+  <chapter id="io">
+    <title>Basic Input/Output</title>
+    &GsfInput;
+    &GsfOutput;
+  </chapter>
+  <chapter id="sources">
+    <title>Stream Sources</title>
+    &GsfInfile;
+    &GsfOutfile;
+    &GsfStdio;
+    &GsfMemory;
+    &GsfIOChannel;
+    &GsfGnomevfs;
+    &GsfBonobo;
+  </chapter>
+  <chapter id="parsers">
+    <title>Stream Parsers</title>
+    &GsfText;
+    &GsfXml;
+    &GsfZip;
+    &GsfCompression;
+    &GsfMsole;
+    &GsfMetadata;
+    &GsfBlob;
+    &GsfClipData;
+    &GsfStructuredBlob;
+  </chapter>
+  <chapter id="misc">
+    <title>Miscellaneous</title>
+    &GsfUtils;
+  </chapter>
+ </part>
+<index>
+&TreeIndex;
+</index>
+</book>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-office-thumbnailer.1
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-office-thumbnailer.1	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-office-thumbnailer.1	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,70 @@
+.TH GSF-OFFICE-THUMBNAILER 1 "August 17, 2005" gsf "GNOME"
+.SH NAME
+gsf-office-thumbnailer \- office files thumbnailer for the GNOME desktop
+
+.SH SYNOPSIS
+\fBgsf-office-thumbnailer\fR [\fIOPTIONS\fR] \fIinfile\fR \fIoutfile\fR
+
+.SH DESCRIPTION
+This manual page briefly documents the \fBgsf-office-thumbnailer\fR command.
+
+\fBgsf-office-thumbnailer\fR is used internally by GNOME applications such
+as \fBnautilus\fR to generate thumbnails of several types of office
+application files. While it is possible to invoke it manually, it is usually
+invoked automatically by \fBnautilus\fR.
+
+.\".SH "RETURN VALUE"
+.\".SH "EXIT STATUS"
+.\".SH "ERROR HANDLING"
+.\".SH ERRORS
+.SH OPTIONS
+This program follows the usual GNU command line syntax, with single
+letter options starting with a single dash (`-') and longer options
+starting with two dashes (`--').
+
+.SS "Main options"
+.TP
+.B \-i, \-\-input=\fIfilename\fR
+Name of file for which to create a thumbnail
+.TP
+.B \-o, \-\-output=\fIfilename\fR
+Name of the file in which to store the thumbnail
+.TP
+.B \-s, \-\-size=\fIN\fR
+Size of thumbnail in pixels; the thumbnail will be at most N*N pixels large.
+
+.SS "Help options"
+.TP
+.B \-?, \-\-help
+Display a brief usage message
+
+.\".SH USAGE
+.\".SH EXAMPLES
+.\".SH FILES
+.\".SH ENVIRONMENT
+.\".SH DIAGNOSTICS
+.\".SH SECURITY
+.\".SH CONFORMING TO
+.\".SH NOTES
+.\".SH BUGS
+
+.SH LICENSE
+
+\fBgsf-office-thumbnailer\fR is licensed under the terms of version 2.1 of
+the GNU Lesser General Public License (LGPL) as published by the Free
+Software Foundation. For information on this license look at the source code
+that came with the software or see the 
+.UR http://www.gnu.org
+GNU project page
+.UE
+at http://www.gnu.org/.
+
+.SH AUTHOR
+
+\fBgsf-office-thumbnailer\fR's primary author is Federico Mena-Quintero
+<federico at novell.com>.
+
+The initial version of this manpage was written by J.H.M. Dassen (Ray)
+<jdassen at debian.org>.
+
+\".SH SEE ALSO

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-overrides.txt
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-overrides.txt	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-overrides.txt	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2 @@
+# These are manually-edited to override or add declarations to those scanned
+# from the header files.

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-sections.txt
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-sections.txt	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf-sections.txt	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,783 @@
+<SECTION>
+<TITLE>Input from unstructured files</TITLE>
+<FILE>input</FILE>
+GsfInput
+gsf_input_read
+gsf_input_tell
+gsf_input_seek
+gsf_input_container
+gsf_input_dup
+gsf_input_size
+gsf_input_eof
+gsf_input_remaining
+gsf_input_error_id
+gsf_input_sibling
+gsf_input_error
+gsf_input_name
+gsf_input_set_name_from_filename
+
+GsfInputProxy
+gsf_input_proxy_new
+gsf_input_proxy_new_section
+<SUBSECTION Convenience>
+gsf_input_copy
+gsf_input_uncompress
+<SUBSECTION Implementation>
+gsf_input_set_name
+gsf_input_set_container
+gsf_input_set_size
+gsf_input_seek_emulate
+<SUBSECTION Standard>
+GSF_INPUT_TYPE
+GSF_INPUT
+GSF_IS_INPUT
+GSF_INPUT_CLASS
+GSF_IS_INPUT_CLASS
+GsfInputClass
+gsf_input_get_type
+
+GSF_INPUT_PROXY
+GSF_INPUT_PROXY_TYPE
+GSF_IS_INPUT_PROXY
+gsf_input_proxy_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Output to unstructured files</TITLE>
+<FILE>output</FILE>
+GsfOutput
+gsf_output_container
+gsf_output_size
+gsf_output_close
+gsf_output_tell
+gsf_output_seek
+gsf_output_write
+gsf_output_puts
+gsf_output_printf
+gsf_output_vprintf
+
+gsf_output_name
+gsf_output_set_name_from_filename
+gsf_output_error_id
+gsf_output_set_error
+gsf_output_error
+gsf_output_is_closed
+
+gsf_output_wrap
+gsf_output_unwrap
+<SUBSECTION Implementation>
+gsf_output_set_name
+gsf_output_set_container
+
+<SUBSECTION Standard>
+GSF_OUTPUT_TYPE
+GSF_OUTPUT
+GSF_IS_OUTPUT
+GSF_OUTPUT_CLASS
+GSF_IS_OUTPUT_CLASS
+GsfOutfileClass
+gsf_output_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Infile reading structed files</TITLE>
+<FILE>infile</FILE>
+GsfInfile
+gsf_infile_num_children
+gsf_infile_child_by_index
+gsf_infile_child_by_name
+gsf_infile_child_by_vname
+gsf_infile_name_by_index
+<SUBSECTION Standard>
+GSF_INFILE_TYPE
+GSF_INFILE
+GSF_IS_INFILE
+GSF_INFILE_CLASS
+GSF_IS_INFILE_CLASS
+GsfInfileClass
+gsf_infile_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Outfile writing structed files</TITLE>
+<FILE>outfile</FILE>
+GsfOutfile
+gsf_outfile_new_child
+gsf_outfile_new_child_full
+gsf_outfile_new_child_varg
+<SUBSECTION Standard>
+GSF_OUTFILE_TYPE
+GSF_OUTFILE
+GSF_IS_OUTFILE
+GSF_OUTFILE_CLASS
+GSF_IS_OUTFILE_CLASS
+GsfOutputClass
+gsf_outfile_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Reading and Writing from local files and directories</TITLE>
+<FILE>stdio</FILE>
+GsfInputStdio
+gsf_input_stdio_new
+GsfOutputStdio
+gsf_output_stdio_new
+gsf_output_stdio_new_full
+gsf_output_stdio_new_valist
+gsf_output_stdio_new_FILE
+GsfOutfileStdio
+gsf_outfile_stdio_new
+gsf_outfile_stdio_new_full
+gsf_outfile_stdio_new_valist
+GsfInfileStdio
+gsf_infile_stdio_new
+
+<SUBSECTION Standard>
+GSF_INPUT_STDIO_TYPE
+GSF_INPUT_STDIO
+GSF_IS_INPUT_STDIO
+gsf_input_stdio_get_type
+
+GSF_IS_OUTPUT_STDIO
+GSF_OUTPUT_STDIO
+GSF_OUTPUT_STDIO_TYPE
+gsf_output_stdio_get_type
+
+GSF_IS_INFILE_STDIO
+GSF_INFILE_STDIO
+GSF_INFILE_STDIO_TYPE
+gsf_infile_stdio_get_type
+
+GSF_IS_OUTFILE_STDIO
+GSF_OUTFILE_STDIO
+GSF_OUTFILE_STDIO_TYPE
+gsf_outfile_stdio_get_type
+<SUBSECTION StandardImplementation>
+</SECTION>
+
+<SECTION>
+<FILE>memory</FILE>
+GsfInputMemory
+gsf_input_mmap_new
+gsf_input_memory_new
+gsf_input_memory_new_clone
+gsf_input_memory_new_from_iochannel
+
+GsfOutputMemory
+gsf_output_memory_get_bytes
+gsf_output_memory_get_type
+gsf_output_memory_new
+
+GsfSharedMemory
+gsf_shared_memory_new
+gsf_shared_memory_mmapped_new
+<SUBSECTION Standard>
+GSF_INPUT_MEMORY_TYPE
+GSF_INPUT_MEMORY
+GSF_IS_INPUT_MEMORY
+gsf_input_memory_get_type
+
+GSF_OUTPUT_MEMORY_TYPE
+GSF_OUTPUT_MEMORY
+GSF_IS_OUTPUT_MEMORY
+gsf_output_memory_get_type
+
+GSF_SHARED_MEMORY_TYPE
+GSF_SHARED_MEMORY
+GSF_IS_SHARED_MEMORY
+gsf_shared_memory_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>GnomeVFS</TITLE>
+<FILE>gnome-vfs</FILE>
+GsfInputGnomeVFS
+gsf_input_gnomevfs_new
+gsf_input_gnomevfs_new_uri
+gsf_input_gnomevfs_needs_local_copy
+
+GsfOutputGnomeVFS
+gsf_output_gnomevfs_new
+gsf_output_gnomevfs_new_uri
+<SUBSECTION Standard>
+GSF_INPUT_GNOMEVFS_TYPE
+GSF_INPUT_GNOMEVFS
+GSF_IS_INPUT_GNOMEVFS
+gsf_input_gnomevfs_get_type
+
+GSF_OUTPUT_GNOMEVFS_TYPE
+GSF_OUTPUT_GNOMEVFS
+GSF_IS_OUTPUT_GNOMEVFS
+gsf_output_gnomevfs_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Compression</TITLE>
+<FILE>compression</FILE>
+GsfInputGZip
+gsf_input_gzip_new
+gsf_input_memory_new_from_bzip
+
+GsfOutputGZip
+gsf_output_gzip_new
+
+GsfOutputBzip
+gsf_output_bzip_new
+<SUBSECTION Standard>
+GSF_INPUT_GZIP_TYPE
+GSF_INPUT_GZIP
+GSF_IS_INPUT_GZIP
+gsf_input_gzip_get_type
+
+GSF_OUTPUT_GZIP_TYPE
+GSF_OUTPUT_GZIP
+GSF_IS_OUTPUT_GZIP
+gsf_output_gzip_get_type
+
+GSF_OUTPUT_BZIP_TYPE
+GSF_OUTPUT_BZIP
+GSF_IS_OUTPUT_BZIP
+gsf_output_bzip_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Text</TITLE>
+<FILE>text</FILE>
+GsfInputTextline
+gsf_input_textline_new
+gsf_input_textline_ascii_gets
+gsf_input_textline_utf8_gets
+
+GsfOutputIconv
+gsf_output_iconv_new
+
+GsfOutputCsv
+gsf_output_csv_write_eol
+gsf_output_csv_write_field
+
+GsfOutputCsvQuotingMode
+<SUBSECTION Standard>
+GSF_INPUT_TEXTLINE_TYPE
+GSF_INPUT_TEXTLINE
+GSF_IS_INPUT_TEXTLINE
+gsf_input_textline_get_type
+
+GSF_OUTPUT_ICONV_TYPE
+GSF_OUTPUT_ICONV
+GSF_IS_OUTPUT_ICONV
+GsfOutputIconvClass
+gsf_output_iconv_get_type
+
+GSF_OUTPUT_CSV_TYPE
+GSF_OUTPUT_CSV
+GSF_IS_OUTPUT_CSV
+GsfOutputCsvClass
+gsf_output_csv_get_type
+
+GSF_OUTPUT_CSV_QUOTING_MODE_TYPE
+gsf_output_csv_quoting_mode_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>MS OLE2</TITLE>
+<FILE>msole</FILE>
+GsfInfileMSOle
+gsf_infile_msole_new
+gsf_infile_msole_get_class_id
+
+GsfOutfileMSOle
+gsf_outfile_msole_new
+gsf_outfile_msole_new_full
+gsf_outfile_msole_set_class_id
+
+gsf_msole_metadata_read
+gsf_msole_metadata_write
+gsf_msole_iconv_open_codepages_for_export
+gsf_msole_iconv_open_codepage_for_import
+gsf_msole_iconv_open_for_export
+gsf_msole_iconv_open_codepage_for_export
+gsf_msole_iconv_open_for_import
+gsf_msole_iconv_win_codepage
+gsf_msole_codepage_to_lid
+gsf_msole_lid_to_codepage
+gsf_msole_lid_to_codepage_str
+gsf_msole_lid_for_language
+gsf_msole_language_for_lid
+gsf_msole_inflate
+<SUBSECTION Standard>
+GSF_INFILE_MSOLE_TYPE
+GSF_INFILE_MSOLE
+GSF_IS_INFILE_MSOLE
+gsf_infile_msole_get_type
+
+GSF_OUTFILE_MSOLE_TYPE
+GSF_OUTFILE_MSOLE
+GSF_IS_OUTFILE_MSOLE
+gsf_outfile_msole_get_type
+<SUBSECTION Implementation>
+OLE_HEADER_START_BAT
+OLE_HEADER_MAJOR_VER
+OLE_HEADER_METABAT_SIZE
+OLE_HEADER_DIRENT_START
+OLE_HEADER_NUM_SBAT
+OLE_HEADER_BB_SHIFT
+OLE_HEADER_CSECTDIR
+OLE_HEADER_NUM_BAT
+OLE_HEADER_THRESHOLD
+OLE_HEADER_METABAT_BLOCK
+OLE_HEADER_SBAT_START
+OLE_HEADER_SIGNATURE
+OLE_HEADER_BYTE_ORDER
+OLE_HEADER_SB_SHIFT
+OLE_HEADER_NUM_METABAT
+OLE_HEADER_SIZE
+OLE_HEADER_CLSID
+OLE_HEADER_MINOR_VER
+OLE_DEFAULT_BB_SHIFT
+OLE_DEFAULT_SB_SHIFT
+
+DIRENT_DETAILS_SIZE
+DIRENT_SIZE
+DIRENT_NAME_LEN
+DIRENT_TYPE_PROPERTY
+DIRENT_TYPE_FILE
+DIRENT_MAGIC_END
+DIRENT_TYPE_DIR
+DIRENT_MAX_NAME_SIZE
+DIRENT_FILE_SIZE
+DIRENT_FIRSTBLOCK
+DIRENT_TYPE_INVALID
+DIRENT_USERFLAGS
+DIRENT_COLOUR
+DIRENT_MODIFY_TIME
+DIRENT_TYPE_LOCKBYTES
+DIRENT_CREATE_TIME
+DIRENT_PREV
+DIRENT_NEXT
+DIRENT_CHILD
+DIRENT_TYPE
+DIRENT_CLSID
+DIRENT_TYPE_ROOTDIR
+
+BAT_MAGIC_METABAT
+BAT_MAGIC_BAT
+BAT_INDEX_SIZE
+BAT_MAGIC_END_OF_CHAIN
+BAT_MAGIC_UNUSED
+</SECTION>
+
+<SECTION>
+<FILE>gsf-blob</FILE>
+GsfBlob
+GsfBlobClass
+<TITLE>GsfBlob</TITLE>
+gsf_blob_new
+gsf_blob_get_size
+gsf_blob_peek_data
+<SUBSECTION Standard>
+GSF_BLOB
+GSF_IS_BLOB
+GSF_TYPE_BLOB
+GSF_BLOB_CLASS
+GSF_IS_BLOB_CLASS
+GSF_BLOB_GET_CLASS
+<SUBSECTION Private>
+gsf_blob_get_type
+GsfBlobPrivate
+</SECTION>
+
+<SECTION>
+<FILE>gsf-clip-data</FILE>
+GsfClipFormat
+GsfClipFormatWindows
+GsfClipData
+GsfClipDataClass
+<TITLE>GsfClipData</TITLE>
+gsf_clip_data_new
+gsf_clip_data_get_format
+gsf_clip_data_get_data_blob
+gsf_clip_data_get_windows_clipboard_format
+gsf_clip_data_peek_real_data
+<SUBSECTION Standard>
+GSF_CLIP_DATA
+GSF_IS_CLIP_DATA
+GSF_TYPE_CLIP_DATA
+GSF_CLIP_DATA_CLASS
+GSF_IS_CLIP_DATA_CLASS
+GSF_CLIP_DATA_GET_CLASS
+<SUBSECTION Private>
+GsfClipDataPrivate
+gsf_clip_data_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Zip</TITLE>
+<FILE>zip</FILE>
+GsfInfileZip
+gsf_infile_zip_new
+
+GsfOutfileZip
+gsf_outfile_zip_new
+gsf_outfile_zip_set_compression_method
+
+<SUBSECTION Standard>
+GSF_INFILE_ZIP_TYPE
+GSF_INFILE_ZIP
+GSF_IS_INFILE_ZIP
+gsf_infile_zip_get_type
+
+GSF_OUTFILE_ZIP_TYPE
+GSF_OUTFILE_ZIP
+GSF_IS_OUTFILE_ZIP
+gsf_outfile_zip_get_type
+
+<SUBSECTION Implementation>
+GsfZipDirent
+gsf_zip_dirent_new
+gsf_zip_dirent_free
+
+GsfZipVDir
+gsf_vdir_free
+gsf_vdir_new
+gsf_vdir_add_child
+
+ZIP_DIRENT_USIZE
+ZIP_DIRENT_OFFSET
+GsfZipCompressionMethod
+ZIP_FILE_HEADER_NAME_SIZE
+ZZIP_IS_STREAMED
+ZIP_FILE_HEADER_EXTRACT
+ZIP_TRAILER_SIZE
+ZIP_HEADER_TIME
+ZIP_FILE_HEADER_SIZE
+ZZIP_IS_ENCRYPTED
+ZIP_HEADER_VERSION
+ZIP_BUF_SIZE
+ZIP_DIRENT_CRC32
+ZIP_HEADER_COMP_SIZE
+ZIP_DIRENT_COMPR_METHOD
+ZIP_DIRENT_FILE_TYPE
+ZIP_FILE_HEADER_EXTRAS_SIZE
+ZIP_DIRENT_EXTRACT
+ZIP_DIRENT_FILE_MODE
+ZIP_DIRENT_FLAGS
+ZIP_FILE_HEADER_CSIZE
+ZIP_TRAILER_DIR_SIZE
+ZIP_TRAILER_COMMENT_SIZE
+ZIP_TRAILER_ENTRIES
+ZIP_NAME_SEPARATOR
+ZIP_HEADER_SIZE
+ZIP_HEADER_CRC
+ZIP_FILE_HEADER_FLAGS
+ZIP_DIRENT_EXTRAS_SIZE
+ZIP_HEADER_COMP_METHOD
+ZZIP_IS_COMPRLEVEL
+ZIP_DIRENT_DOSTIME
+ZIP_DIRENT_ENCODER
+ZIP_HEADER_OS
+ZIP_DIRENT_COMMENT_SIZE
+ZIP_FILE_HEADER_CRC32
+ZIP_HEADER_FLAGS
+ZIP_TRAILER_DISK
+ZIP_FILE_HEADER_USIZE
+ZIP_TRAILER_TOTAL_ENTRIES
+ZIP_HEADER_NAME_LEN
+ZIP_HEADER_UNCOMP_SIZE
+ZIP_TRAILER_DIR_DISK
+ZIP_DIRENT_CSIZE
+ZIP_TRAILER_DIR_POS
+ZIP_BLOCK_SIZE
+ZIP_DIRENT_NAME_SIZE
+ZIP_DIRENT_SIZE
+ZIP_DIRENT_DISKSTART
+ZIP_HEADER_EXTRA_LEN
+ZIP_FILE_HEADER_COMPR_METHOD
+ZIP_FILE_HEADER_DOSTIME
+</SECTION>
+
+<SECTION>
+<TITLE>GIOChannel</TITLE>
+<FILE>iochannel</FILE>
+GsfOutputIOChannel
+gsf_output_iochannel_new
+
+<SUBSECTION Standard>
+GSF_OUTPUT_IOCHANNEL_TYPE
+GSF_OUTPUT_IOCHANNEL
+GSF_IS_OUTPUT_IOCHANNEL
+gsf_output_iochannel_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Bononbo</TITLE>
+<FILE>bonobo</FILE>
+GsfInputBonobo
+gsf_input_bonobo_new
+
+GsfOutputBonobo
+gsf_output_bonobo_new
+
+GsfSharedBonoboStream
+gsf_shared_bonobo_stream_new
+<SUBSECTION Standard>
+GSF_INPUT_BONOBO_TYPE
+GSF_INPUT_BONOBO
+GSF_IS_INPUT_BONOBO
+gsf_input_bonobo_get_type
+
+GSF_OUTPUT_BONOBO_TYPE
+GSF_OUTPUT_BONOBO
+GSF_IS_OUTPUT_BONOBO
+gsf_output_bonobo_get_type
+
+GSF_SHARED_BONOBO_STREAM_TYPE
+GSF_SHARED_BONOBO_STREAM
+GSF_IS_SHARED_BONOBO_STREAM
+gsf_shared_bonobo_stream_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>XML and libxml</TITLE>
+<FILE>xml</FILE>
+GSF_XML_IN_NS
+GsfXMLContent
+GsfXMLIn
+gsf_xmlDocFormatDump
+gsf_xml_in_doc_free
+GsfXMLBlob
+GsfXMLOut
+GsfXMLInDoc
+GsfXMLInNS
+GSF_XML_IN_NODE_FULL
+GSF_XML_IN_NODE
+GsfXMLInNode
+GsfXMLInUnknownFunc
+gsf_xml_parser_context
+gsf_xml_in_doc_new
+gsf_xml_in_namecmp
+gsf_xml_in_parse
+gsf_xml_in_check_ns
+gsf_xml_in_doc_extend
+gsf_xml_in_doc_set_unknown_handler
+
+gsf_xml_out_new
+gsf_xml_out_set_doc_type
+
+gsf_xml_out_start_element
+gsf_xml_out_end_element
+
+gsf_xml_out_add_cstr
+gsf_xml_out_add_cstr_unchecked
+gsf_xml_out_add_bool
+gsf_xml_out_add_int
+gsf_xml_out_add_uint
+gsf_xml_out_add_float
+gsf_xml_out_add_enum
+gsf_xml_out_add_color
+gsf_xml_out_add_base64
+gsf_xml_out_simple_element
+gsf_xml_out_simple_float_element
+gsf_xml_out_simple_int_element
+<SUBSECTION Standard>
+GSF_XML_OUT_TYPE
+GSF_XML_OUT
+GSF_IS_XML_OUT
+gsf_xml_out_get_type
+</SECTION>
+
+<SECTION>
+<TITLE>Structured Blobs</TITLE>
+<FILE>blob</FILE>
+GsfStructuredBlob
+gsf_structured_blob_write
+gsf_structured_blob_read
+
+<SUBSECTION Standard>
+GSF_STRUCTURED_BLOB_TYPE
+GSF_STRUCTURED_BLOB
+GSF_IS_STRUCTURED_BLOB
+gsf_structured_blob_get_type
+</SECTION>
+
+<SECTION>
+<FILE>utils</FILE>
+<SUBSECTION Implementation>
+gsf_init
+gsf_shutdown
+gsf_init_dynamic
+gsf_shutdown_dynamic
+libgsf_major_version
+libgsf_minor_version
+libgsf_micro_version
+<SUBSECTION Classes>
+GSF_CLASS
+GSF_CLASS_FULL
+GSF_CLASS_ABSTRACT
+GSF_INTERFACE
+GSF_INTERFACE_FULL
+GSF_DYNAMIC_CLASS
+GSF_DYNAMIC_CLASS_FULL
+GSF_DYNAMIC_CLASS_ABSTRACT
+GSF_DYNAMIC_INTERFACE
+GSF_DYNAMIC_INTERFACE_FULL
+GSF_PARAM_STATIC
+<SUBSECTION Errors>
+GSF_ERROR
+GsfError
+gsf_error_quark
+<SUBSECTION Debugging>
+gsf_mem_dump
+gsf_input_dump
+<SUBSECTION Types>
+GSF_OFF_T_FORMAT
+gsf_off_t
+
+gsf_filename_to_utf8
+gsf_iconv_close
+gsf_extension_pointer
+<SUBSECTION Types>
+gsf_base64_encode_simple
+gsf_base64_encode_close
+gsf_base64_encode_step 
+gsf_base64_decode_simple
+gsf_base64_decode_step
+GSF_LE_GET_GINT8
+GSF_LE_GET_GUINT64
+GSF_LE_GET_GINT16
+GSF_LE_GET_GUINT8
+GSF_LE_GET_GINT32
+GSF_LE_GET_GUINT16
+GSF_LE_GET_GUINT32
+GSF_LE_GET_GINT64
+gsf_le_get_guint64
+GSF_LE_GET_FLOAT
+gsf_le_get_float
+GSF_LE_GET_DOUBLE
+gsf_le_get_double
+GSF_LE_SET_GUINT8
+GSF_LE_SET_GUINT16
+GSF_LE_SET_GUINT32
+GSF_LE_SET_GINT8
+GSF_LE_SET_GINT16
+GSF_LE_SET_GINT32
+GSF_LE_SET_GINT64
+GSF_LE_SET_GUINT64
+GSF_LE_SET_FLOAT
+GSF_LE_SET_DOUBLE
+gsf_le_set_float
+gsf_le_set_double
+
+<SUBSECTION TimeStamps>
+GsfTimestamp
+gsf_timestamp_new
+gsf_timestamp_new_now
+gsf_timestamp_copy
+gsf_timestamp_free
+gsf_timestamp_as_string
+gsf_timestamp_parse
+gsf_timestamp_hash
+gsf_timestamp_equal
+gsf_value_set_timestamp
+VAL_IS_GSF_TIMESTAMP
+<SUBSECTION Standard>
+GSF_TIMESTAMP_TYPE
+gsf_timestamp_get_type
+
+<SUBSECTION GObject>
+gsf_doc_prop_swap_val
+gsf_property_settings_collect
+gsf_property_settings_collect_valist
+gsf_property_settings_free
+</SECTION>
+
+<SECTION>
+<FILE>metadata</FILE>
+GsfDocMetaData
+gsf_doc_meta_data_new
+gsf_doc_meta_data_lookup
+gsf_doc_meta_data_insert
+gsf_doc_meta_data_remove
+gsf_doc_meta_data_steal
+gsf_doc_meta_data_store
+gsf_doc_meta_data_foreach
+gsf_doc_meta_data_size
+
+GsfDocProp
+gsf_doc_prop_new
+gsf_doc_prop_free
+gsf_doc_prop_get_name
+gsf_doc_prop_get_val
+gsf_doc_prop_set_val
+gsf_doc_prop_get_link
+gsf_doc_prop_set_link
+
+GsfDocPropVector
+gsf_docprop_vector_new
+gsf_docprop_vector_append
+gsf_docprop_vector_as_string
+gsf_value_get_docprop_varray
+gsf_value_get_docprop_vector
+
+<SUBSECTION Keys>
+GSF_META_NAME_TITLE                 
+GSF_META_NAME_DESCRIPTION           
+GSF_META_NAME_SUBJECT               
+GSF_META_NAME_DATE_MODIFIED         
+GSF_META_NAME_DATE_CREATED          
+GSF_META_NAME_KEYWORDS              
+GSF_META_NAME_LANGUAGE              
+GSF_META_NAME_REVISION_COUNT        
+GSF_META_NAME_EDITING_DURATION      
+GSF_META_NAME_TABLE_COUNT           
+GSF_META_NAME_IMAGE_COUNT           
+GSF_META_NAME_OBJECT_COUNT          
+GSF_META_NAME_PAGE_COUNT            
+GSF_META_NAME_PARAGRAPH_COUNT       
+GSF_META_NAME_WORD_COUNT            
+GSF_META_NAME_CHARACTER_COUNT       
+GSF_META_NAME_CELL_COUNT            
+GSF_META_NAME_SPREADSHEET_COUNT     
+GSF_META_NAME_CREATOR               
+GSF_META_NAME_TEMPLATE              
+GSF_META_NAME_LAST_SAVED_BY         
+GSF_META_NAME_LAST_PRINTED          
+GSF_META_NAME_SECURITY              
+GSF_META_NAME_CATEGORY              
+GSF_META_NAME_PRESENTATION_FORMAT   
+GSF_META_NAME_THUMBNAIL             
+GSF_META_NAME_GENERATOR             
+GSF_META_NAME_LINE_COUNT            
+GSF_META_NAME_SLIDE_COUNT           
+GSF_META_NAME_NOTE_COUNT            
+GSF_META_NAME_HIDDEN_SLIDE_COUNT    
+GSF_META_NAME_MM_CLIP_COUNT         
+GSF_META_NAME_BYTE_COUNT            
+GSF_META_NAME_SCALE                 
+GSF_META_NAME_HEADING_PAIRS         
+GSF_META_NAME_DOCUMENT_PARTS        
+GSF_META_NAME_MANAGER               
+GSF_META_NAME_COMPANY               
+GSF_META_NAME_LINKS_DIRTY           
+GSF_META_NAME_DICTIONARY            
+GSF_META_NAME_MSOLE_UNKNOWN_17
+GSF_META_NAME_MSOLE_UNKNOWN_18
+GSF_META_NAME_MSOLE_UNKNOWN_19
+GSF_META_NAME_MSOLE_UNKNOWN_20
+GSF_META_NAME_MSOLE_UNKNOWN_21
+GSF_META_NAME_MSOLE_UNKNOWN_22
+GSF_META_NAME_MSOLE_UNKNOWN_23
+GSF_META_NAME_LOCALE_SYSTEM_DEFAULT 
+GSF_META_NAME_CASE_SENSITIVE        
+<SUBSECTION Standard>
+GSF_DOC_META_DATA_TYPE
+GSF_DOC_META_DATA
+IS_GSF_DOC_META_DATA
+gsf_doc_meta_data_get_type
+
+GSF_DOCPROP_VECTOR
+GSF_DOCPROP_VECTOR_TYPE
+IS_GSF_DOCPROP_VECTOR
+VAL_IS_GSF_DOCPROP_VECTOR
+gsf_docprop_vector_get_type
+
+</SECTION>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf.types
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf.types	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/gsf.types	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,47 @@
+#include <glib-object.h>
+#include <gsf/gsf.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+#include <gsf/gsf-infile-stdio.h>
+#include <gsf/gsf-infile-zip.h>
+#include <gsf/gsf-input-gzip.h>
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-input-textline.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-msole.h>
+#include <gsf/gsf-outfile-stdio.h>
+#include <gsf/gsf-outfile-zip.h>
+#include <gsf/gsf-output-bzip.h>
+#include <gsf/gsf-output-gzip.h>
+#include <gsf/gsf-output-memory.h>
+#include <gsf/gsf-output-iochannel.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-shared-memory.h>
+#include <gsf/gsf-structured-blob.h>
+#include <gsf/gsf-timestamp.h>
+#include <gsf/gsf-libxml.h>
+
+gsf_infile_msole_get_type
+gsf_infile_stdio_get_type
+gsf_infile_zip_get_type
+gsf_input_gzip_get_type
+gsf_input_get_type
+gsf_input_memory_get_type
+gsf_input_stdio_get_type
+gsf_input_textline_get_type
+gsf_xml_out_get_type
+gsf_outfile_get_type
+gsf_outfile_msole_get_type
+gsf_outfile_stdio_get_type
+gsf_outfile_zip_get_type
+gsf_output_bzip_get_type
+gsf_output_get_type
+gsf_output_iochannel_get_type
+gsf_output_memory_get_type
+gsf_output_stdio_get_type
+gsf_shared_memory_get_type
+gsf_structured_blob_get_type
+gsf_timestamp_get_type

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/api.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/api.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/api.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part&#160;II.&#160;API Reference</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="index.html" title="GSF Reference Manual">
+<link rel="prev" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="next" href="io.html" title="Basic Input/Output">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="into.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="io.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title">
+<a name="api"></a>API Reference</h1></div></div></div></div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="into.html"><b>&lt;&lt;&#160;Part&#160;I.&#160;GSF Overview</b></a></td>
+<td align="right"><a accesskey="n" href="io.html"><b>Basic Input/Output&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Bononbo.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Bononbo.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Bononbo.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,200 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Bononbo</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="sources.html" title="Stream Sources">
+<link rel="prev" href="gsf-GnomeVFS.html" title="GnomeVFS">
+<link rel="next" href="parsers.html" title="Stream Parsers">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-GnomeVFS.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="sources.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="parsers.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Bononbo"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Bononbo</span></h2>
+<p>Bononbo &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+            <a href="gsf-Bononbo.html#GsfInputBonobo">GsfInputBonobo</a>;
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Bononbo.html#gsf-input-bonobo-new">gsf_input_bonobo_new</a>            (Bonobo_Stream const stream,
+                                             GError **err);
+            <a href="gsf-Bononbo.html#GsfOutputBonobo">GsfOutputBonobo</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Bononbo.html#gsf-output-bonobo-new">gsf_output_bonobo_new</a>           (Bonobo_Stream const stream,
+                                             GError **err);
+            <a href="gsf-Bononbo.html#GsfSharedBonoboStream">GsfSharedBonoboStream</a>;
+<a href="gsf-Bononbo.html#GsfSharedBonoboStream">GsfSharedBonoboStream</a>* <a href="gsf-Bononbo.html#gsf-shared-bonobo-stream-new">gsf_shared_bonobo_stream_new</a>
+                                            (Bonobo_Stream stream);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2536678"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2536688"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2536694"></a><h3>
+<a name="GsfInputBonobo"></a>GsfInputBonobo</h3>
+<a class="indexterm" name="id2536704"></a><pre class="programlisting">typedef struct _GsfInputBonobo GsfInputBonobo;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2536720"></a><h3>
+<a name="gsf-input-bonobo-new"></a>gsf_input_bonobo_new ()</h3>
+<a class="indexterm" name="id2536731"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_bonobo_new            (Bonobo_Stream const stream,
+                                             GError **err);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2536808"></a><h3>
+<a name="GsfOutputBonobo"></a>GsfOutputBonobo</h3>
+<a class="indexterm" name="id2536819"></a><pre class="programlisting">typedef struct _GsfOutputBonobo GsfOutputBonobo;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2536835"></a><h3>
+<a name="gsf-output-bonobo-new"></a>gsf_output_bonobo_new ()</h3>
+<a class="indexterm" name="id2536845"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_bonobo_new           (Bonobo_Stream const stream,
+                                             GError **err);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2536923"></a><h3>
+<a name="GsfSharedBonoboStream"></a>GsfSharedBonoboStream</h3>
+<a class="indexterm" name="id2536933"></a><pre class="programlisting">typedef struct {
+	GObject g_object;
+	Bonobo_Stream stream;
+	CORBA_long pos;
+} GsfSharedBonoboStream;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2536950"></a><h3>
+<a name="gsf-shared-bonobo-stream-new"></a>gsf_shared_bonobo_stream_new ()</h3>
+<a class="indexterm" name="id2536961"></a><pre class="programlisting"><a href="gsf-Bononbo.html#GsfSharedBonoboStream">GsfSharedBonoboStream</a>* gsf_shared_bonobo_stream_new
+                                            (Bonobo_Stream stream);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-GnomeVFS.html"><b>&lt;&lt;&#160;GnomeVFS</b></a></td>
+<td align="right"><a accesskey="n" href="parsers.html"><b>Stream Parsers&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Compression.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Compression.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Compression.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,288 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Compression</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-Zip.html" title="Zip">
+<link rel="next" href="gsf-MS-OLE2.html" title="MS OLE2">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Zip.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-MS-OLE2.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Compression"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Compression</span></h2>
+<p>Compression &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInputGZip"></a><a name="GsfOutputBzip"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Compression.html#GsfInputGZip-struct">GsfInputGZip</a>;
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Compression.html#gsf-input-gzip-new">gsf_input_gzip_new</a>              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Compression.html#gsf-input-memory-new-from-bzip">gsf_input_memory_new_from_bzip</a>  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);
+            <a href="gsf-Compression.html#GsfOutputGZip">GsfOutputGZip</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Compression.html#gsf-output-gzip-new">gsf_output_gzip_new</a>             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             GError **err);
+            <a href="gsf-Compression.html#GsfOutputBzip-struct">GsfOutputBzip</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Compression.html#gsf-output-bzip-new">gsf_output_bzip_new</a>             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             GError **err);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2555302"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----GsfInputGZip
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----GsfOutputBzip
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2555349"></a><h2>Properties</h2>
+<pre class="synopsis">
+
+  "<a href="gsf-Compression.html#GsfInputGZip--raw">raw</a>"                  gboolean              : Read / Write / Construct Only
+  "<a href="gsf-Compression.html#GsfInputGZip--source">source</a>"               <a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>              : Read / Write / Construct Only
+  "<a href="gsf-Compression.html#GsfInputGZip--uncompressed-size">uncompressed-size</a>"    gint64                : Read / Write / Construct Only
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2555414"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2555424"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2555429"></a><h3>
+<a name="GsfInputGZip-struct"></a>GsfInputGZip</h3>
+<a class="indexterm" name="id2555440"></a><pre class="programlisting">typedef struct _GsfInputGZip GsfInputGZip;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555455"></a><h3>
+<a name="gsf-input-gzip-new"></a>gsf_input_gzip_new ()</h3>
+<a class="indexterm" name="id2555466"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_gzip_new              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);</pre>
+<p>
+Adds a reference to <em class="parameter"><code>source</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>source</code></em>&#160;:</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555553"></a><h3>
+<a name="gsf-input-memory-new-from-bzip"></a>gsf_input_memory_new_from_bzip ()</h3>
+<a class="indexterm" name="id2555565"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_memory_new_from_bzip  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>source</code></em>&#160;:</span></td>
+<td> a <a href="gsf-Input-from-unstructured-files.html#GsfInput"><span class="type">GsfInput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> a <span class="type">GError</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new <a href="gsf-memory.html#GsfInputMemory"><span class="type">GsfInputMemory</span></a> or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555669"></a><h3>
+<a name="GsfOutputGZip"></a>GsfOutputGZip</h3>
+<a class="indexterm" name="id2555680"></a><pre class="programlisting">typedef struct _GsfOutputGZip GsfOutputGZip;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555695"></a><h3>
+<a name="gsf-output-gzip-new"></a>gsf_output_gzip_new ()</h3>
+<a class="indexterm" name="id2555706"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_gzip_new             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             GError **err);</pre>
+<p>
+Adds a reference to <em class="parameter"><code>sink</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sink</code></em>&#160;:</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555793"></a><h3>
+<a name="GsfOutputBzip-struct"></a>GsfOutputBzip</h3>
+<a class="indexterm" name="id2555805"></a><pre class="programlisting">typedef struct _GsfOutputBzip GsfOutputBzip;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555820"></a><h3>
+<a name="gsf-output-bzip-new"></a>gsf_output_bzip_new ()</h3>
+<a class="indexterm" name="id2555831"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_bzip_new             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             GError **err);</pre>
+<p>
+Adds a reference to <em class="parameter"><code>sink</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sink</code></em>&#160;:</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2555920"></a><h2>Properties</h2>
+<div class="refsect2" lang="en">
+<a name="id2555925"></a><h3>
+<a name="GsfInputGZip--raw"></a>The "<code class="literal">raw</code>" property</h3>
+<pre class="programlisting">  "raw"                  gboolean              : Read / Write / Construct Only</pre>
+<p>Whether to read compressed data with no header and no trailer.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555963"></a><h3>
+<a name="GsfInputGZip--source"></a>The "<code class="literal">source</code>" property</h3>
+<pre class="programlisting">  "source"               <a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>              : Read / Write / Construct Only</pre>
+<p>Where the compressed data comes from.</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2555997"></a><h3>
+<a name="GsfInputGZip--uncompressed-size"></a>The "<code class="literal">uncompressed-size</code>" property</h3>
+<pre class="programlisting">  "uncompressed-size"    gint64                : Read / Write / Construct Only</pre>
+<p>The source's uncompressed size.</p>
+<p>Allowed values: &gt;= -1</p>
+<p>Default value: -1</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Zip.html"><b>&lt;&lt;&#160;Zip</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-MS-OLE2.html"><b>MS OLE2&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GIOChannel.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GIOChannel.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GIOChannel.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,108 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>GIOChannel</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="sources.html" title="Stream Sources">
+<link rel="prev" href="gsf-memory.html" title="memory">
+<link rel="next" href="gsf-GnomeVFS.html" title="GnomeVFS">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-memory.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="sources.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-GnomeVFS.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-GIOChannel"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">GIOChannel</span></h2>
+<p>GIOChannel &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfOutputIOChannel"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-GIOChannel.html#GsfOutputIOChannel-struct">GsfOutputIOChannel</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-GIOChannel.html#gsf-output-iochannel-new">gsf_output_iochannel_new</a>        (GIOChannel *channel);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2534799"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----GsfOutputIOChannel
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2534826"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2534836"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2534841"></a><h3>
+<a name="GsfOutputIOChannel-struct"></a>GsfOutputIOChannel</h3>
+<a class="indexterm" name="id2534852"></a><pre class="programlisting">typedef struct _GsfOutputIOChannel GsfOutputIOChannel;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2534868"></a><h3>
+<a name="gsf-output-iochannel-new"></a>gsf_output_iochannel_new ()</h3>
+<a class="indexterm" name="id2534878"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_iochannel_new        (GIOChannel *channel);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>channel</code></em>&#160;:</span></td>
+<td> A <span class="type">GIOChannel</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-memory.html"><b>&lt;&lt;&#160;memory</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GnomeVFS.html"><b>GnomeVFS&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GnomeVFS.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GnomeVFS.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GnomeVFS.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,259 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>GnomeVFS</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="sources.html" title="Stream Sources">
+<link rel="prev" href="gsf-GIOChannel.html" title="GIOChannel">
+<link rel="next" href="gsf-Bononbo.html" title="Bononbo">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-GIOChannel.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="sources.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Bononbo.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-GnomeVFS"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">GnomeVFS</span></h2>
+<p>GnomeVFS &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+            <a href="gsf-GnomeVFS.html#GsfInputGnomeVFS">GsfInputGnomeVFS</a>;
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-GnomeVFS.html#gsf-input-gnomevfs-new">gsf_input_gnomevfs_new</a>          (char const *uri,
+                                             GError **error);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-GnomeVFS.html#gsf-input-gnomevfs-new-uri">gsf_input_gnomevfs_new_uri</a>      (GnomeVFSURI *uri,
+                                             GError **error);
+gboolean    <a href="gsf-GnomeVFS.html#gsf-input-gnomevfs-needs-local-copy">gsf_input_gnomevfs_needs_local_copy</a>
+                                            (<a href="gsf-GnomeVFS.html#GsfInputGnomeVFS">GsfInputGnomeVFS</a> *vfs_input);
+            <a href="gsf-GnomeVFS.html#GsfOutputGnomeVFS">GsfOutputGnomeVFS</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-GnomeVFS.html#gsf-output-gnomevfs-new">gsf_output_gnomevfs_new</a>         (char const *filename,
+                                             GError **err);
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-GnomeVFS.html#gsf-output-gnomevfs-new-uri">gsf_output_gnomevfs_new_uri</a>     (GnomeVFSURI *uri,
+                                             GError **err);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2535371"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2535381"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2535386"></a><h3>
+<a name="GsfInputGnomeVFS"></a>GsfInputGnomeVFS</h3>
+<a class="indexterm" name="id2535396"></a><pre class="programlisting">typedef struct _GsfInputGnomeVFS GsfInputGnomeVFS;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2535412"></a><h3>
+<a name="gsf-input-gnomevfs-new"></a>gsf_input_gnomevfs_new ()</h3>
+<a class="indexterm" name="id2535423"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_gnomevfs_new          (char const *uri,
+                                             GError **error);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>uri</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2535500"></a><h3>
+<a name="gsf-input-gnomevfs-new-uri"></a>gsf_input_gnomevfs_new_uri ()</h3>
+<a class="indexterm" name="id2535512"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_gnomevfs_new_uri      (GnomeVFSURI *uri,
+                                             GError **error);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>uri</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2535589"></a><h3>
+<a name="gsf-input-gnomevfs-needs-local-copy"></a>gsf_input_gnomevfs_needs_local_copy ()</h3>
+<a class="indexterm" name="id2535600"></a><pre class="programlisting">gboolean    gsf_input_gnomevfs_needs_local_copy
+                                            (<a href="gsf-GnomeVFS.html#GsfInputGnomeVFS">GsfInputGnomeVFS</a> *vfs_input);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>vfs_input</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2535657"></a><h3>
+<a name="GsfOutputGnomeVFS"></a>GsfOutputGnomeVFS</h3>
+<a class="indexterm" name="id2535668"></a><pre class="programlisting">typedef struct _GsfOutputGnomeVFS GsfOutputGnomeVFS;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2535683"></a><h3>
+<a name="gsf-output-gnomevfs-new"></a>gsf_output_gnomevfs_new ()</h3>
+<a class="indexterm" name="id2535694"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_gnomevfs_new         (char const *filename,
+                                             GError **err);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2535771"></a><h3>
+<a name="gsf-output-gnomevfs-new-uri"></a>gsf_output_gnomevfs_new_uri ()</h3>
+<a class="indexterm" name="id2535782"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_gnomevfs_new_uri     (GnomeVFSURI *uri,
+                                             GError **err);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>uri</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-GIOChannel.html"><b>&lt;&lt;&#160;GIOChannel</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Bononbo.html"><b>Bononbo&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfBlob.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfBlob.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfBlob.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,212 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>GsfBlob</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-metadata.html" title="metadata">
+<link rel="next" href="gsf-GsfClipData.html" title="GsfClipData">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-metadata.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-GsfClipData.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-GsfBlob"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">GsfBlob</span></h2>
+<p>GsfBlob &#8212; A generic, unstructured block of binary data</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+            <a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a>;
+            <a href="gsf-GsfBlob.html#GsfBlobClass">GsfBlobClass</a>;
+<a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a>*    <a href="gsf-GsfBlob.html#gsf-blob-new">gsf_blob_new</a>                    (gsize size,
+                                             gconstpointer data_to_copy,
+                                             GError **error);
+gsize       <a href="gsf-GsfBlob.html#gsf-blob-get-size">gsf_blob_get_size</a>               (<a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a> *blob);
+gconstpointer <a href="gsf-GsfBlob.html#gsf-blob-peek-data">gsf_blob_peek_data</a>            (<a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a> *blob);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2573238"></a><h2>Description</h2>
+<p>
+    Some libgsf functions, in particular the <a href="gsf-metadata.html#GsfDocMetaData">metadata</a> functions, can generate
+    unstructured blocks of data, or <em class="firstterm">blobs</em>.
+    Libgsf represents these blobs using a
+    <code class="classname">GsfBlob</code> object.
+  </p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2573266"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2573272"></a><h3>
+<a name="GsfBlob"></a>GsfBlob</h3>
+<a class="indexterm" name="id2573282"></a><pre class="programlisting">typedef struct {
+	GObject object;
+	GsfBlobPrivate *priv;
+} GsfBlob;
+</pre>
+<p>
+    Represents an unstructured block of binary data, that is, a
+    sequence of bytes and an integer specifying the size of the
+    sequence.
+  </p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2573300"></a><h3>
+<a name="GsfBlobClass"></a>GsfBlobClass</h3>
+<a class="indexterm" name="id2573310"></a><pre class="programlisting">typedef struct {
+	GObjectClass parent_class;
+} GsfBlobClass;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2573326"></a><h3>
+<a name="gsf-blob-new"></a>gsf_blob_new ()</h3>
+<a class="indexterm" name="id2573337"></a><pre class="programlisting"><a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a>*    gsf_blob_new                    (gsize size,
+                                             gconstpointer data_to_copy,
+                                             GError **error);</pre>
+<p>
+Creates a new <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a> object to hold the specified data.  The blob can then
+be used as a facility for reference-counting for the data.  The data is
+copied internally, so the blob does not hold references to external chunks
+of memory.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></td>
+<td> Size of the data in bytes.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data_to_copy</code></em>&#160;:</span></td>
+<td> Data which will be copied into the blob, or <code class="literal">NULL</code> if <em class="parameter"><code>size</code></em> is zero.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> location to store error, or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A newly-created <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a>, or <code class="literal">NULL</code> if the data could not be copied.
+
+Error domain: <a href="gsf-utils.html#GSF-ERROR:CAPS"><span class="type">GSF_ERROR</span></a>
+
+Possible errors: <span class="type">GSF_ERROR_OUT_OF_MEMORY</span> if the <em class="parameter"><code>data_to_copy</code></em> could not be copied.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2573513"></a><h3>
+<a name="gsf-blob-get-size"></a>gsf_blob_get_size ()</h3>
+<a class="indexterm" name="id2573524"></a><pre class="programlisting">gsize       gsf_blob_get_size               (<a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a> *blob);</pre>
+<p>
+Queries the size in bytes of the data stored in the blob.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>blob</code></em>&#160;:</span></td>
+<td> A <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> Size in bytes, or 0 if the data is <code class="literal">NULL</code>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2573598"></a><h3>
+<a name="gsf-blob-peek-data"></a>gsf_blob_peek_data ()</h3>
+<a class="indexterm" name="id2573609"></a><pre class="programlisting">gconstpointer gsf_blob_peek_data            (<a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a> *blob);</pre>
+<p>
+Queries a pointer to the data stored in the blob.  This does not copy the data
+for you; it returns a pointer to the actual buffer which the blob uses internally,
+so you should not free this buffer on your own.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>blob</code></em>&#160;:</span></td>
+<td> A <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> Pointer to the data stored in the blob, or <code class="literal">NULL</code> if the size
+of the data is zero.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2573688"></a><h2>See Also</h2>
+<p>
+    <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>, <span class="type">GsfMetadata</span>
+  </p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-metadata.html"><b>&lt;&lt;&#160;metadata</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GsfClipData.html"><b>GsfClipData&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfClipData.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfClipData.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-GsfClipData.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,453 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>GsfClipData</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-GsfBlob.html" title="GsfBlob">
+<link rel="next" href="gsf-Structured-Blobs.html" title="Structured Blobs">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-GsfBlob.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Structured-Blobs.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-GsfClipData"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">GsfClipData</span></h2>
+<p>GsfClipData &#8212; Object to hold clipboard data from a VT_CF section</p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+enum        <a href="gsf-GsfClipData.html#GsfClipFormat">GsfClipFormat</a>;
+enum        <a href="gsf-GsfClipData.html#GsfClipFormatWindows">GsfClipFormatWindows</a>;
+            <a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a>;
+            <a href="gsf-GsfClipData.html#GsfClipDataClass">GsfClipDataClass</a>;
+<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a>* <a href="gsf-GsfClipData.html#gsf-clip-data-new">gsf_clip_data_new</a>              (<a href="gsf-GsfClipData.html#GsfClipFormat">GsfClipFormat</a> format,
+                                             <a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a> *data_blob);
+<a href="gsf-GsfClipData.html#GsfClipFormat">GsfClipFormat</a> <a href="gsf-GsfClipData.html#gsf-clip-data-get-format">gsf_clip_data_get_format</a>      (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data);
+<a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a>*    <a href="gsf-GsfClipData.html#gsf-clip-data-get-data-blob">gsf_clip_data_get_data_blob</a>     (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data);
+<a href="gsf-GsfClipData.html#GsfClipFormatWindows">GsfClipFormatWindows</a> <a href="gsf-GsfClipData.html#gsf-clip-data-get-windows-clipboard-format">gsf_clip_data_get_windows_clipboard_format</a>
+                                            (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data,
+                                             GError **error);
+gconstpointer <a href="gsf-GsfClipData.html#gsf-clip-data-peek-real-data">gsf_clip_data_peek_real_data</a>  (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data,
+                                             gsize *ret_size,
+                                             GError **error);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2574532"></a><h2>Description</h2>
+<p>
+    OLE2 files may contain clipboard data in the
+    <code class="literal">VT_CF</code> property of the metadata in a
+    <code class="literal">SummaryInfo</code> section.  This data is used, among
+    other things, to represent a thumbnail or pre-rendered version of
+    the data in the file.  <code class="classname">GsfClipData</code> is an
+    object that holds such clipboard data.
+  </p>
+<p>
+    You can get a <code class="classname">GsfClipData</code> object from the
+    <span class="type">GValue</span> returned by <a href="gsf-metadata.html#gsf-doc-prop-get-val"><code class="function">gsf_doc_prop_get_val()</code></a>, after you have done
+    <code class="literal">gsf_doc_meta_data_lookup (meta_data,
+    GSF_META_NAME_THUMBNAIL)</code>.  The resulting <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>
+    object, if it exists, contains the thumbnail data.  In turn, the
+    thumbnail data may be in different formats, as specified by the
+    <a href="gsf-GsfClipData.html#GsfClipFormat"><span class="type">GsfClipFormat</span></a> enumeration.
+  </p>
+<p>
+    Internally, <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a> stores the thumbnail data plus any extra
+    information in a <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a> object.  <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a> provides a
+    convenience function, <a href="gsf-GsfClipData.html#gsf-clip-data-peek-real-data"><code class="function">gsf_clip_data_peek_real_data()</code></a>, to extract
+    the thumbnail data directly.  If you need to use the raw binary
+    data instead of the data specific to the thumbnail, you can use
+    <a href="gsf-GsfClipData.html#gsf-clip-data-get-data-blob"><code class="function">gsf_clip_data_get_data_blob()</code></a> to get the <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a> object and
+    handle it yourself.
+  </p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2574678"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2574684"></a><h3>
+<a name="GsfClipFormat"></a>enum GsfClipFormat</h3>
+<a class="indexterm" name="id2574694"></a><pre class="programlisting">typedef enum {
+	GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD = -1,
+	GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD = -2,
+	GSF_CLIP_FORMAT_GUID = -3,
+	GSF_CLIP_FORMAT_NO_DATA = 0,
+	GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME = 1, /* in the file it's actually any positive integer */
+	GSF_CLIP_FORMAT_UNKNOWN /* this is our own value for unknown types or invalid data */
+} GsfClipFormat;
+</pre>
+<p>
+    A <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a> stores all its thumbnail data and associated
+    information in an internal <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a> object.  The
+    <span class="type">GsfClipFormat</span> enumeration represents the possible
+    formats for this data blob.
+  </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</code></span></td>
+<td>The thumbnail data is stored in
+  Windows clipboard format.  The particular sub-format can be in any of
+  the values in the <a href="gsf-GsfClipData.html#GsfClipFormatWindows"><span class="type">GsfClipFormatWindows</span></a> enumeration.  When a
+  <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a> is in <em class="parameter"><code>GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</code></em>, you can use
+  <a href="gsf-GsfClipData.html#gsf-clip-data-get-windows-clipboard-format"><code class="function">gsf_clip_data_get_windows_clipboard_format()</code></a> to get the sub-format
+  in which the data is actually stored.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD</code></span></td>
+<td>The thumbnail data is stored in
+  Macintosh clipboard format, usually PICT.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_GUID</code></span></td>
+<td>The thumbnail data contains a GUID specifying
+  the OLE component which can be used to render it.  Please refer to
+  the OLE2 format documentation for details.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_NO_DATA</code></span></td>
+<td>There is no thumbnail data.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME</code></span></td>
+<td>The thumbnail data contains a
+  null-terminated string with a Windows clipboard format name.  Please refer to
+  the OLE2 format documentation for details.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_UNKNOWN</code></span></td>
+<td>The thumbnail data is in an unknown format,
+  but is nevertheless stored in a <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a>.
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2574885"></a><h3>
+<a name="GsfClipFormatWindows"></a>enum GsfClipFormatWindows</h3>
+<a class="indexterm" name="id2574896"></a><pre class="programlisting">typedef enum {
+	GSF_CLIP_FORMAT_WINDOWS_ERROR = -1,		/* our own value */
+	GSF_CLIP_FORMAT_WINDOWS_UNKNOWN = -2,		/* our own value */
+	GSF_CLIP_FORMAT_WINDOWS_METAFILE = 3,		/* CF_METAFILEPICT */
+	GSF_CLIP_FORMAT_WINDOWS_DIB = 8,		/* CF_DIB */
+	GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE = 14	/* CF_ENHMETAFILE */
+} GsfClipFormatWindows;
+</pre>
+<p>
+    When a <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a> is in GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD
+    format, it can be in any of the subformats specified by the
+    <span class="type">GsfClipFormatWindows</span> enumeration.  Use
+    <a href="gsf-GsfClipData.html#gsf-clip-data-get-windows-clipboard-format"><code class="function">gsf_clip_data_get_windows_clipboard_format()</code></a> to determine this
+    sub-format.
+  </p>
+<p>
+    For all of these values, the <a href="gsf-GsfClipData.html#gsf-clip-data-peek-real-data"><code class="function">gsf_clip_data_peek_real_data()</code></a>
+    function lets you access the data directly.
+  </p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_WINDOWS_ERROR</code></span></td>
+<td>The OLE file is probably corrupt.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_WINDOWS_UNKNOWN</code></span></td>
+<td>The specific clipboard format is
+  unknown to libgsf.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_WINDOWS_METAFILE</code></span></td>
+<td>The data is in Windows Metafile
+  format.  While OLE files store extra header data in this case, the
+  <a href="gsf-GsfClipData.html#gsf-clip-data-peek-real-data"><code class="function">gsf_clip_data_peek_real_data()</code></a> function will let you access the WMF
+  data directly, and it will ignore the extra header bytes.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_WINDOWS_DIB</code></span></td>
+<td>The data is in Windows
+  Device-Independent Bitmap format.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE</code></span></td>
+<td>The data is in Windows
+  Enhanced Metaflie format.
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2575056"></a><h3>
+<a name="GsfClipData"></a>GsfClipData</h3>
+<a class="indexterm" name="id2575065"></a><pre class="programlisting">typedef struct {
+	GObject object;
+
+	GsfClipDataPrivate *priv;
+} GsfClipData;
+</pre>
+<p>
+    Object used to represent a VT_CF property in the OLE stream.
+  </p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2575083"></a><h3>
+<a name="GsfClipDataClass"></a>GsfClipDataClass</h3>
+<a class="indexterm" name="id2575093"></a><pre class="programlisting">typedef struct {
+	GObjectClass parent_class;
+} GsfClipDataClass;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2575109"></a><h3>
+<a name="gsf-clip-data-new"></a>gsf_clip_data_new ()</h3>
+<a class="indexterm" name="id2575120"></a><pre class="programlisting"><a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a>* gsf_clip_data_new              (<a href="gsf-GsfClipData.html#GsfClipFormat">GsfClipFormat</a> format,
+                                             <a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a> *data_blob);</pre>
+<p>
+Creates a new <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a> object.  This function acquires a reference to the
+<em class="parameter"><code>data_blob</code></em>, so you should unref the blob on your own if you no longer need it
+directly.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>format</code></em>&#160;:</span></td>
+<td> Format for the data inside the <em class="parameter"><code>data_blob</code></em>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data_blob</code></em>&#160;:</span></td>
+<td> Object which holds the binary contents for the <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A newly-created <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2575240"></a><h3>
+<a name="gsf-clip-data-get-format"></a>gsf_clip_data_get_format ()</h3>
+<a class="indexterm" name="id2575252"></a><pre class="programlisting"><a href="gsf-GsfClipData.html#GsfClipFormat">GsfClipFormat</a> gsf_clip_data_get_format      (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data);</pre>
+<p>
+Queries the clipboard data format of a <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.  The format refers to the data
+blob inside the <em class="parameter"><code>clip_data</code></em>; use <a href="gsf-GsfClipData.html#gsf-clip-data-get-data-blob"><code class="function">gsf_clip_data_get_data_blob()</code></a> to get that data blob.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>clip_data</code></em>&#160;:</span></td>
+<td> A <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> The format in which the <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>'s data blob is stored.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2575355"></a><h3>
+<a name="gsf-clip-data-get-data-blob"></a>gsf_clip_data_get_data_blob ()</h3>
+<a class="indexterm" name="id2575366"></a><pre class="programlisting"><a href="gsf-GsfBlob.html#GsfBlob">GsfBlob</a>*    gsf_clip_data_get_data_blob     (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data);</pre>
+<p>
+Queries the data blob that actually stores a <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>'s binary data.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>clip_data</code></em>&#160;:</span></td>
+<td> A <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A new reference to the <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a> that stores this <em class="parameter"><code>clip_data</code></em>'s
+binary data.  You must use <code class="function">g_object_unref()</code> to dispose of that data blob when
+you are done with it.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2575470"></a><h3>
+<a name="gsf-clip-data-get-windows-clipboard-format"></a>gsf_clip_data_get_windows_clipboard_format ()</h3>
+<a class="indexterm" name="id2575483"></a><pre class="programlisting"><a href="gsf-GsfClipData.html#GsfClipFormatWindows">GsfClipFormatWindows</a> gsf_clip_data_get_windows_clipboard_format
+                                            (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data,
+                                             GError **error);</pre>
+<p>
+Queries the Windows clipboard data format for a <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.  The <em class="parameter"><code>clip_data</code></em> must
+have been created with <span class="type">GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</span>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>clip_data</code></em>&#160;:</span></td>
+<td> A <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> Location to store error, or <code class="literal">NULL</code>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A <a href="gsf-GsfClipData.html#GsfClipFormatWindows"><span class="type">GsfClipFormatWindows</span></a> value.
+
+Possible errors: <span class="type">GSF_ERROR_INVALID_DATA</span> if the data blob in the <em class="parameter"><code>clip_data</code></em> is
+smaller than it should be; in this case GSF_CLIP_FORMAT_WINDOWS_ERROR will be returned.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2575632"></a><h3>
+<a name="gsf-clip-data-peek-real-data"></a>gsf_clip_data_peek_real_data ()</h3>
+<a class="indexterm" name="id2575644"></a><pre class="programlisting">gconstpointer gsf_clip_data_peek_real_data  (<a href="gsf-GsfClipData.html#GsfClipData">GsfClipData</a> *clip_data,
+                                             gsize *ret_size,
+                                             GError **error);</pre>
+<p>
+Queries a pointer directly to the clipboard data of a <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.  The
+resulting pointer is not necessarily the same data pointer that was passed to
+<a href="gsf-GsfBlob.html#gsf-blob-new"><code class="function">gsf_blob_new()</code></a> prior to creating the <em class="parameter"><code>clip_data</code></em>.  For example, if the data is
+in <span class="type">GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</span> format, then it will have extra header
+bytes in front of the actual metafile data.  This function will skip over
+those header bytes if necessary and return a pointer to the "real" data.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>clip_data</code></em>&#160;:</span></td>
+<td> A <a href="gsf-GsfClipData.html#GsfClipData"><span class="type">GsfClipData</span></a>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ret_size</code></em>&#160;:</span></td>
+<td> Location to return the size of the returned data buffer.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> Location to store error, or <code class="literal">NULL</code>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> Pointer to the real clipboard data.  The size in bytes of this
+buffer is returned in the <em class="parameter"><code>ret_size</code></em> argument.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2575810"></a><h2>See Also</h2>
+<p>
+    <a href="gsf-GsfBlob.html#GsfBlob"><span class="type">GsfBlob</span></a>, <a href="gsf-metadata.html#GsfDocMetaData"><span class="type">GsfDocMetaData</span></a>
+  </p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-GsfBlob.html"><b>&lt;&lt;&#160;GsfBlob</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Structured-Blobs.html"><b>Structured Blobs&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Infile-reading-structed-files.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Infile-reading-structed-files.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Infile-reading-structed-files.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,270 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Infile reading structed files</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="sources.html" title="Stream Sources">
+<link rel="prev" href="sources.html" title="Stream Sources">
+<link rel="next" href="gsf-Outfile-writing-structed-files.html" title="Outfile writing structed files">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="sources.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="sources.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Outfile-writing-structed-files.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Infile-reading-structed-files"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Infile reading structed files</span></h2>
+<p>Infile reading structed files &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInfile"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Infile-reading-structed-files.html#GsfInfile-struct">GsfInfile</a>;
+int         <a href="gsf-Infile-reading-structed-files.html#gsf-infile-num-children">gsf_infile_num_children</a>         (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Infile-reading-structed-files.html#gsf-infile-child-by-index">gsf_infile_child_by_index</a>       (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             int i);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Infile-reading-structed-files.html#gsf-infile-child-by-name">gsf_infile_child_by_name</a>        (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             char const *name);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Infile-reading-structed-files.html#gsf-infile-child-by-vname">gsf_infile_child_by_vname</a>       (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             char const *name,
+                                             ...);
+charconst * <a href="gsf-Infile-reading-structed-files.html#gsf-infile-name-by-index">gsf_infile_name_by_index</a>        (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             int i);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2526060"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----GsfInfile
+               +----<a href="gsf-MS-OLE2.html#GsfInfileMSOle">GsfInfileMSOle</a>
+               +----<a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInfileStdio">GsfInfileStdio</a>
+               +----<a href="gsf-Zip.html#GsfInfileZip">GsfInfileZip</a>
+               +----<a href="gsf-Structured-Blobs.html#GsfStructuredBlob">GsfStructuredBlob</a>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2526120"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2526130"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2526136"></a><h3>
+<a name="GsfInfile-struct"></a>GsfInfile</h3>
+<a class="indexterm" name="id2526146"></a><pre class="programlisting">typedef struct _GsfInfile GsfInfile;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2526161"></a><h3>
+<a name="gsf-infile-num-children"></a>gsf_infile_num_children ()</h3>
+<a class="indexterm" name="id2526171"></a><pre class="programlisting">int         gsf_infile_num_children         (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>infile</code></em>&#160;:</span></td>
+<td> the structured storage
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the number of children the storage has, or -1 if the storage can not
+	have children.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2526232"></a><h3>
+<a name="gsf-infile-child-by-index"></a>gsf_infile_child_by_index ()</h3>
+<a class="indexterm" name="id2526244"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_infile_child_by_index       (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             int i);</pre>
+<p>
+TODO : For 2.0 api will change to include a GError.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>infile</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>i</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a newly created child which must be unrefed.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2526325"></a><h3>
+<a name="gsf-infile-child-by-name"></a>gsf_infile_child_by_name ()</h3>
+<a class="indexterm" name="id2526335"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_infile_child_by_name        (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             char const *name);</pre>
+<p>
+TODO : For 2.0 api will change to include a GError.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>infile</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a newly created child which must be unrefed.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2526418"></a><h3>
+<a name="gsf-infile-child-by-vname"></a>gsf_infile_child_by_vname ()</h3>
+<a class="indexterm" name="id2526430"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_infile_child_by_vname       (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             char const *name,
+                                             ...);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>infile</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td> A <code class="literal">null</code> terminated list of names
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em>&#160;:</span></td>
+<td> the rest of the names
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a newly created child which must be unrefed.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2526532"></a><h3>
+<a name="gsf-infile-name-by-index"></a>gsf_infile_name_by_index ()</h3>
+<a class="indexterm" name="id2526543"></a><pre class="programlisting">charconst * gsf_infile_name_by_index        (<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *infile,
+                                             int i);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>infile</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>i</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the utf8 encoded name of the <em class="parameter"><code>i</code></em>-th child
+NOTE : DO NOT FREE THE STRING
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="sources.html"><b>&lt;&lt;&#160;Stream Sources</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Outfile-writing-structed-files.html"><b>Outfile writing structed files&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Input-from-unstructured-files.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Input-from-unstructured-files.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Input-from-unstructured-files.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,889 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Input from unstructured files</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="io.html" title="Basic Input/Output">
+<link rel="prev" href="io.html" title="Basic Input/Output">
+<link rel="next" href="gsf-Output-to-unstructured-files.html" title="Output to unstructured files">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="io.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="io.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Output-to-unstructured-files.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Input-from-unstructured-files"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Input from unstructured files</span></h2>
+<p>Input from unstructured files &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInput"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Input-from-unstructured-files.html#GsfInput-struct">GsfInput</a>;
+guint8const * <a href="gsf-Input-from-unstructured-files.html#gsf-input-read">gsf_input_read</a>                (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             size_t num_bytes,
+                                             guint8 *optional_buffer);
+<a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   <a href="gsf-Input-from-unstructured-files.html#gsf-input-tell">gsf_input_tell</a>                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-seek">gsf_input_seek</a>                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset,
+                                             GSeekType whence);
+<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  <a href="gsf-Input-from-unstructured-files.html#gsf-input-container">gsf_input_container</a>             (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Input-from-unstructured-files.html#gsf-input-dup">gsf_input_dup</a>                   (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             GError **err);
+<a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   <a href="gsf-Input-from-unstructured-files.html#gsf-input-size">gsf_input_size</a>                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-eof">gsf_input_eof</a>                   (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+<a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   <a href="gsf-Input-from-unstructured-files.html#gsf-input-remaining">gsf_input_remaining</a>             (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+GQuark      <a href="gsf-Input-from-unstructured-files.html#gsf-input-error-id">gsf_input_error_id</a>              (void);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Input-from-unstructured-files.html#gsf-input-sibling">gsf_input_sibling</a>               (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> const *input,
+                                             char const *name,
+                                             GError **err);
+GQuark      <a href="gsf-Input-from-unstructured-files.html#gsf-input-error">gsf_input_error</a>                 (void);
+charconst   * <a href="gsf-Input-from-unstructured-files.html#gsf-input-name">gsf_input_name</a>                (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-set-name-from-filename">gsf_input_set_name_from_filename</a>
+                                            (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             char const *filename);
+            <a href="gsf-Input-from-unstructured-files.html#GsfInputProxy">GsfInputProxy</a>;
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Input-from-unstructured-files.html#gsf-input-proxy-new">gsf_input_proxy_new</a>             (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Input-from-unstructured-files.html#gsf-input-proxy-new-section">gsf_input_proxy_new_section</a>     (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size);
+
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-copy">gsf_input_copy</a>                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Input-from-unstructured-files.html#gsf-input-uncompress">gsf_input_uncompress</a>            (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *src);
+
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-set-name">gsf_input_set_name</a>              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             char const *name);
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-set-container">gsf_input_set_container</a>         (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *container);
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-set-size">gsf_input_set_size</a>              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size);
+gboolean    <a href="gsf-Input-from-unstructured-files.html#gsf-input-seek-emulate">gsf_input_seek_emulate</a>          (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> pos);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2515584"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----GsfInput
+         +----<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>
+         +----<a href="gsf-Compression.html#GsfInputGZip">GsfInputGZip</a>
+         +----<a href="gsf-memory.html#GsfInputMemory">GsfInputMemory</a>
+         +----<a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInputStdio">GsfInputStdio</a>
+         +----<a href="gsf-Text.html#GsfInputTextline">GsfInputTextline</a>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2515644"></a><h2>Properties</h2>
+<pre class="synopsis">
+
+  "<a href="gsf-Input-from-unstructured-files.html#GsfInput--eof">eof</a>"                  gboolean              : Read
+  "<a href="gsf-Input-from-unstructured-files.html#GsfInput--name">name</a>"                 gchararray            : Read
+  "<a href="gsf-Input-from-unstructured-files.html#GsfInput--position">position</a>"             gint64                : Read
+  "<a href="gsf-Input-from-unstructured-files.html#GsfInput--remaining">remaining</a>"            gint64                : Read
+  "<a href="gsf-Input-from-unstructured-files.html#GsfInput--size">size</a>"                 gint64                : Read
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2515738"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2515748"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2515753"></a><h3>
+<a name="GsfInput-struct"></a>GsfInput</h3>
+<a class="indexterm" name="id2515764"></a><pre class="programlisting">typedef struct _GsfInput GsfInput;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2515779"></a><h3>
+<a name="gsf-input-read"></a>gsf_input_read ()</h3>
+<a class="indexterm" name="id2515789"></a><pre class="programlisting">guint8const * gsf_input_read                (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             size_t num_bytes,
+                                             guint8 *optional_buffer);</pre>
+<p>
+Read at least <em class="parameter"><code>num_bytes</code></em>.  Does not change the current position if there
+is an error.  Will only read if the entire amount can be read.  Invalidates
+the buffer associated with previous calls to gsf_input_read.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>num_bytes</code></em>&#160;:</span></td>
+<td> number of bytes to read
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>optional_buffer</code></em>&#160;:</span></td>
+<td> NULL, or pointer to destination memory area
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: pointer to the buffer or NULL if there is an error or 0 bytes are
+	requested.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2515907"></a><h3>
+<a name="gsf-input-tell"></a>gsf_input_tell ()</h3>
+<a class="indexterm" name="id2515918"></a><pre class="programlisting"><a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   gsf_input_tell                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the current offset in the file.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2515976"></a><h3>
+<a name="gsf-input-seek"></a>gsf_input_seek ()</h3>
+<a class="indexterm" name="id2515986"></a><pre class="programlisting">gboolean    gsf_input_seek                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset,
+                                             GSeekType whence);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em>&#160;:</span></td>
+<td> target offset
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>whence</code></em>&#160;:</span></td>
+<td> determines whether the offset is relative to the beginning or
+          the end of the stream, or to the current location.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE on error.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516091"></a><h3>
+<a name="gsf-input-container"></a>gsf_input_container ()</h3>
+<a class="indexterm" name="id2516102"></a><pre class="programlisting"><a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  gsf_input_container             (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>, but does not add a reference to <em class="parameter"><code>input</code></em>'s container.
+Potentially NULL
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516167"></a><h3>
+<a name="gsf-input-dup"></a>gsf_input_dup ()</h3>
+<a class="indexterm" name="id2516178"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_dup                   (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             GError **err);</pre>
+<p>
+Duplicates input <em class="parameter"><code>src</code></em> leaving the new one at the same offset.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> The input to duplicate
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: the duplicate, or NULL on error
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516267"></a><h3>
+<a name="gsf-input-size"></a>gsf_input_size ()</h3>
+<a class="indexterm" name="id2516277"></a><pre class="programlisting"><a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   gsf_input_size                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+Looks up and caches the number of bytes in the input</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> The input
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>:  the size or -1 on error
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516338"></a><h3>
+<a name="gsf-input-eof"></a>gsf_input_eof ()</h3>
+<a class="indexterm" name="id2516348"></a><pre class="programlisting">gboolean    gsf_input_eof                   (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+Are we at the end of the file ?</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the input is at the eof.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516409"></a><h3>
+<a name="gsf-input-remaining"></a>gsf_input_remaining ()</h3>
+<a class="indexterm" name="id2516420"></a><pre class="programlisting"><a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   gsf_input_remaining             (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the number of bytes left in the file.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516480"></a><h3>
+<a name="gsf-input-error-id"></a>gsf_input_error_id ()</h3>
+<a class="indexterm" name="id2516490"></a><pre class="programlisting">GQuark      gsf_input_error_id              (void);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: A utility quark to flag a GError as being an input problem.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516530"></a><h3>
+<a name="gsf-input-sibling"></a>gsf_input_sibling ()</h3>
+<a class="indexterm" name="id2516541"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_sibling               (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> const *input,
+                                             char const *name,
+                                             GError **err);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516638"></a><h3>
+<a name="gsf-input-error"></a>gsf_input_error ()</h3>
+<a class="indexterm" name="id2516649"></a><pre class="programlisting">GQuark      gsf_input_error                 (void);</pre>
+<p>
+Deprecated in 1.12.0</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: A utility quark to flag a GError as being an input problem.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516689"></a><h3>
+<a name="gsf-input-name"></a>gsf_input_name ()</h3>
+<a class="indexterm" name="id2516699"></a><pre class="programlisting">charconst   * gsf_input_name                (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+<em class="parameter"><code>input</code></em>'s name in utf8 form, or NULL if it has no name.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516765"></a><h3>
+<a name="gsf-input-set-name-from-filename"></a>gsf_input_set_name_from_filename ()</h3>
+<a class="indexterm" name="id2516776"></a><pre class="programlisting">gboolean    gsf_input_set_name_from_filename
+                                            (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             char const *filename);</pre>
+<p>
+protected.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> the (fs-sys encoded) filename
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the assignment was ok.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516860"></a><h3>
+<a name="GsfInputProxy"></a>GsfInputProxy</h3>
+<a class="indexterm" name="id2516870"></a><pre class="programlisting">typedef struct _GsfInputProxy GsfInputProxy;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516885"></a><h3>
+<a name="gsf-input-proxy-new"></a>gsf_input_proxy_new ()</h3>
+<a class="indexterm" name="id2516896"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_proxy_new             (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source);</pre>
+<p>
+This creates a new proxy to the entire, given input source.  See
+gsf_input_proxy_new_section for details.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>source</code></em>&#160;:</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new input object.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2516958"></a><h3>
+<a name="gsf-input-proxy-new-section"></a>gsf_input_proxy_new_section ()</h3>
+<a class="indexterm" name="id2516969"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_proxy_new_section     (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size);</pre>
+<p>
+This creates a new proxy to a section of the given source.  The new
+object will have its own current position, but any operation on it
+can change the source's position.
+</p>
+<p>
+If a proxy to a proxy is created, the intermediate proxy is short-
+circuited.
+</p>
+<p>
+This function will ref the source.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>source</code></em>&#160;:</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em>&#160;:</span></td>
+<td> Offset into source for start of section.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></td>
+<td> Length of section.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new input object.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517084"></a><h3>
+<a name="gsf-input-copy"></a>gsf_input_copy ()</h3>
+<a class="indexterm" name="id2517094"></a><pre class="programlisting">gboolean    gsf_input_copy                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);</pre>
+<p>
+Copy the contents from <em class="parameter"><code>input</code></em> to <em class="parameter"><code>output</code></em> from their respective
+current positions. So if you want to be sure to copy *everything*,
+make sure to call gsf_input_seek (input, 0, G_SEEK_SET) and
+gsf_output_seek (output, 0, G_SEEK_SET) first, if applicable.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> a non-null <a href="gsf-Input-from-unstructured-files.html#GsfInput"><span class="type">GsfInput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td> a non-null <a href="gsf-Output-to-unstructured-files.html#GsfOutput"><span class="type">GsfOutput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE on Success
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517207"></a><h3>
+<a name="gsf-input-uncompress"></a>gsf_input_uncompress ()</h3>
+<a class="indexterm" name="id2517218"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_uncompress            (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *src);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>src</code></em>&#160;:</span></td>
+<td> stream to be uncompressed.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A stream equivalent to the source stream, but uncompressed if
+the source was compressed.
+
+This functions takes ownership of the incoming reference and yields a
+new one as its output.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517281"></a><h3>
+<a name="gsf-input-set-name"></a>gsf_input_set_name ()</h3>
+<a class="indexterm" name="id2517291"></a><pre class="programlisting">gboolean    gsf_input_set_name              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             char const *name);</pre>
+<p>
+protected.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td> the new name of the stream, or NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the assignment was ok.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517374"></a><h3>
+<a name="gsf-input-set-container"></a>gsf_input_set_container ()</h3>
+<a class="indexterm" name="id2517384"></a><pre class="programlisting">gboolean    gsf_input_set_container         (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a> *container);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>container</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the assignment was ok.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517466"></a><h3>
+<a name="gsf-input-set-size"></a>gsf_input_set_size ()</h3>
+<a class="indexterm" name="id2517477"></a><pre class="programlisting">gboolean    gsf_input_set_size              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></td>
+<td> the size of the stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the assignment was ok.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517558"></a><h3>
+<a name="gsf-input-seek-emulate"></a>gsf_input_seek_emulate ()</h3>
+<a class="indexterm" name="id2517569"></a><pre class="programlisting">gboolean    gsf_input_seek_emulate          (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> pos);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> stream to emulate seek for
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>pos</code></em>&#160;:</span></td>
+<td> absolute position to seek to
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the emulation failed.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2517653"></a><h2>Properties</h2>
+<div class="refsect2" lang="en">
+<a name="id2517659"></a><h3>
+<a name="GsfInput--eof"></a>The "<code class="literal">eof</code>" property</h3>
+<pre class="programlisting">  "eof"                  gboolean              : Read</pre>
+<p>End Of File.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517695"></a><h3>
+<a name="GsfInput--name"></a>The "<code class="literal">name</code>" property</h3>
+<pre class="programlisting">  "name"                 gchararray            : Read</pre>
+<p>The Input's Name.</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517731"></a><h3>
+<a name="GsfInput--position"></a>The "<code class="literal">position</code>" property</h3>
+<pre class="programlisting">  "position"             gint64                : Read</pre>
+<p>The Output's Current Position.</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517772"></a><h3>
+<a name="GsfInput--remaining"></a>The "<code class="literal">remaining</code>" property</h3>
+<pre class="programlisting">  "remaining"            gint64                : Read</pre>
+<p>Amount of Data Remaining.</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2517811"></a><h3>
+<a name="GsfInput--size"></a>The "<code class="literal">size</code>" property</h3>
+<pre class="programlisting">  "size"                 gint64                : Read</pre>
+<p>The Input's Size.</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="io.html"><b>&lt;&lt;&#160;Basic Input/Output</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Output-to-unstructured-files.html"><b>Output to unstructured files&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-MS-OLE2.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-MS-OLE2.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-MS-OLE2.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1265 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>MS OLE2</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-Compression.html" title="Compression">
+<link rel="next" href="gsf-metadata.html" title="metadata">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Compression.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-metadata.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-MS-OLE2"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">MS OLE2</span></h2>
+<p>MS OLE2 &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInfileMSOle"></a><a name="GsfOutfileMSOle"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-MS-OLE2.html#GsfInfileMSOle-struct">GsfInfileMSOle</a>;
+<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  <a href="gsf-MS-OLE2.html#gsf-infile-msole-new">gsf_infile_msole_new</a>            (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);
+gboolean    <a href="gsf-MS-OLE2.html#gsf-infile-msole-get-class-id">gsf_infile_msole_get_class_id</a>   (<a href="gsf-MS-OLE2.html#GsfInfileMSOle">GsfInfileMSOle</a> const *ole,
+                                             guint8 *res);
+            <a href="gsf-MS-OLE2.html#GsfOutfileMSOle-struct">GsfOutfileMSOle</a>;
+<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* <a href="gsf-MS-OLE2.html#gsf-outfile-msole-new">gsf_outfile_msole_new</a>           (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink);
+<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* <a href="gsf-MS-OLE2.html#gsf-outfile-msole-new-full">gsf_outfile_msole_new_full</a>      (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             guint bb_size,
+                                             guint sb_size);
+gboolean    <a href="gsf-MS-OLE2.html#gsf-outfile-msole-set-class-id">gsf_outfile_msole_set_class_id</a>  (<a href="gsf-MS-OLE2.html#GsfOutfileMSOle">GsfOutfileMSOle</a> *ole,
+                                             guint8 const *clsid);
+GError*     <a href="gsf-MS-OLE2.html#gsf-msole-metadata-read">gsf_msole_metadata_read</a>         (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *in,
+                                             <a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *accum);
+gboolean    <a href="gsf-MS-OLE2.html#gsf-msole-metadata-write">gsf_msole_metadata_write</a>        (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *out,
+                                             <a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta_data,
+                                             gboolean doc_not_component);
+GIConv      <a href="gsf-MS-OLE2.html#gsf-msole-iconv-open-codepages-for-export">gsf_msole_iconv_open_codepages_for_export</a>
+                                            (int codepage_to,
+                                             char const *from);
+GIConv      <a href="gsf-MS-OLE2.html#gsf-msole-iconv-open-codepage-for-import">gsf_msole_iconv_open_codepage_for_import</a>
+                                            (char const *to,
+                                             int codepage);
+GIConv      <a href="gsf-MS-OLE2.html#gsf-msole-iconv-open-for-export">gsf_msole_iconv_open_for_export</a> (void);
+GIConv      <a href="gsf-MS-OLE2.html#gsf-msole-iconv-open-codepage-for-export">gsf_msole_iconv_open_codepage_for_export</a>
+                                            (int codepage_to);
+GIConv      <a href="gsf-MS-OLE2.html#gsf-msole-iconv-open-for-import">gsf_msole_iconv_open_for_import</a> (int codepage);
+int         <a href="gsf-MS-OLE2.html#gsf-msole-iconv-win-codepage">gsf_msole_iconv_win_codepage</a>    (void);
+guint       <a href="gsf-MS-OLE2.html#gsf-msole-codepage-to-lid">gsf_msole_codepage_to_lid</a>       (int codepage);
+int         <a href="gsf-MS-OLE2.html#gsf-msole-lid-to-codepage">gsf_msole_lid_to_codepage</a>       (guint lid);
+gchar*      <a href="gsf-MS-OLE2.html#gsf-msole-lid-to-codepage-str">gsf_msole_lid_to_codepage_str</a>   (guint lid);
+guint       <a href="gsf-MS-OLE2.html#gsf-msole-lid-for-language">gsf_msole_lid_for_language</a>      (char const *lang);
+charconst * <a href="gsf-MS-OLE2.html#gsf-msole-language-for-lid">gsf_msole_language_for_lid</a>      (guint lid);
+GByteArray* <a href="gsf-MS-OLE2.html#gsf-msole-inflate">gsf_msole_inflate</a>               (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset);
+
+
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-START-BAT:CAPS">OLE_HEADER_START_BAT</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-MAJOR-VER:CAPS">OLE_HEADER_MAJOR_VER</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-METABAT-SIZE:CAPS">OLE_HEADER_METABAT_SIZE</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-DIRENT-START:CAPS">OLE_HEADER_DIRENT_START</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-NUM-SBAT:CAPS">OLE_HEADER_NUM_SBAT</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-BB-SHIFT:CAPS">OLE_HEADER_BB_SHIFT</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-CSECTDIR:CAPS">OLE_HEADER_CSECTDIR</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-NUM-BAT:CAPS">OLE_HEADER_NUM_BAT</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-THRESHOLD:CAPS">OLE_HEADER_THRESHOLD</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-METABAT-BLOCK:CAPS">OLE_HEADER_METABAT_BLOCK</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-SBAT-START:CAPS">OLE_HEADER_SBAT_START</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-SIGNATURE:CAPS">OLE_HEADER_SIGNATURE</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-BYTE-ORDER:CAPS">OLE_HEADER_BYTE_ORDER</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-SB-SHIFT:CAPS">OLE_HEADER_SB_SHIFT</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-NUM-METABAT:CAPS">OLE_HEADER_NUM_METABAT</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-SIZE:CAPS">OLE_HEADER_SIZE</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-CLSID:CAPS">OLE_HEADER_CLSID</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-HEADER-MINOR-VER:CAPS">OLE_HEADER_MINOR_VER</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-DEFAULT-BB-SHIFT:CAPS">OLE_DEFAULT_BB_SHIFT</a>
+#define     <a href="gsf-MS-OLE2.html#OLE-DEFAULT-SB-SHIFT:CAPS">OLE_DEFAULT_SB_SHIFT</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-DETAILS-SIZE:CAPS">DIRENT_DETAILS_SIZE</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-SIZE:CAPS">DIRENT_SIZE</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-NAME-LEN:CAPS">DIRENT_NAME_LEN</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-TYPE-PROPERTY:CAPS">DIRENT_TYPE_PROPERTY</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-TYPE-FILE:CAPS">DIRENT_TYPE_FILE</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-MAGIC-END:CAPS">DIRENT_MAGIC_END</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-TYPE-DIR:CAPS">DIRENT_TYPE_DIR</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-MAX-NAME-SIZE:CAPS">DIRENT_MAX_NAME_SIZE</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-FILE-SIZE:CAPS">DIRENT_FILE_SIZE</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-FIRSTBLOCK:CAPS">DIRENT_FIRSTBLOCK</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-TYPE-INVALID:CAPS">DIRENT_TYPE_INVALID</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-USERFLAGS:CAPS">DIRENT_USERFLAGS</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-COLOUR:CAPS">DIRENT_COLOUR</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-MODIFY-TIME:CAPS">DIRENT_MODIFY_TIME</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-TYPE-LOCKBYTES:CAPS">DIRENT_TYPE_LOCKBYTES</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-CREATE-TIME:CAPS">DIRENT_CREATE_TIME</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-PREV:CAPS">DIRENT_PREV</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-NEXT:CAPS">DIRENT_NEXT</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-CHILD:CAPS">DIRENT_CHILD</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-TYPE:CAPS">DIRENT_TYPE</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-CLSID:CAPS">DIRENT_CLSID</a>
+#define     <a href="gsf-MS-OLE2.html#DIRENT-TYPE-ROOTDIR:CAPS">DIRENT_TYPE_ROOTDIR</a>
+#define     <a href="gsf-MS-OLE2.html#BAT-MAGIC-METABAT:CAPS">BAT_MAGIC_METABAT</a>
+#define     <a href="gsf-MS-OLE2.html#BAT-MAGIC-BAT:CAPS">BAT_MAGIC_BAT</a>
+#define     <a href="gsf-MS-OLE2.html#BAT-INDEX-SIZE:CAPS">BAT_INDEX_SIZE</a>
+#define     <a href="gsf-MS-OLE2.html#BAT-MAGIC-END-OF-CHAIN:CAPS">BAT_MAGIC_END_OF_CHAIN</a>
+#define     <a href="gsf-MS-OLE2.html#BAT-MAGIC-UNUSED:CAPS">BAT_MAGIC_UNUSED</a>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2557928"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>
+               +----GsfInfileMSOle
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>
+               +----GsfOutfileMSOle
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2557987"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2557997"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2558003"></a><h3>
+<a name="GsfInfileMSOle-struct"></a>GsfInfileMSOle</h3>
+<a class="indexterm" name="id2558014"></a><pre class="programlisting">typedef struct _GsfInfileMSOle GsfInfileMSOle;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558030"></a><h3>
+<a name="gsf-infile-msole-new"></a>gsf_infile_msole_new ()</h3>
+<a class="indexterm" name="id2558040"></a><pre class="programlisting"><a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  gsf_infile_msole_new            (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);</pre>
+<p>
+Opens the root directory of an MS OLE file.
+NOTE : adds a reference to <em class="parameter"><code>source</code></em></p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>source</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: the new ole file handler
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558127"></a><h3>
+<a name="gsf-infile-msole-get-class-id"></a>gsf_infile_msole_get_class_id ()</h3>
+<a class="indexterm" name="id2558139"></a><pre class="programlisting">gboolean    gsf_infile_msole_get_class_id   (<a href="gsf-MS-OLE2.html#GsfInfileMSOle">GsfInfileMSOle</a> const *ole,
+                                             guint8 *res);</pre>
+<p>
+Retrieves the 16 byte indentifier (often a GUID in MS Windows apps)
+stored within the directory associated with <em class="parameter"><code>ole</code></em> and stores it in <em class="parameter"><code>res</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ole</code></em>&#160;:</span></td>
+<td> a <a href="gsf-MS-OLE2.html#GsfInfileMSOle"><span class="type">GsfInfileMSOle</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>res</code></em>&#160;:</span></td>
+<td> 16 byte identifier (often a GUID in MS Windows apps)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE on success
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558243"></a><h3>
+<a name="GsfOutfileMSOle-struct"></a>GsfOutfileMSOle</h3>
+<a class="indexterm" name="id2558254"></a><pre class="programlisting">typedef struct _GsfOutfileMSOle GsfOutfileMSOle;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558270"></a><h3>
+<a name="gsf-outfile-msole-new"></a>gsf_outfile_msole_new ()</h3>
+<a class="indexterm" name="id2558280"></a><pre class="programlisting"><a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* gsf_outfile_msole_new           (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink);</pre>
+<p>
+Creates the root directory of an MS OLE file and manages the addition of
+children.
+</p>
+<p>
+NOTE : adds a reference to <em class="parameter"><code>sink</code></em></p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sink</code></em>&#160;:</span></td>
+<td> a <a href="gsf-Output-to-unstructured-files.html#GsfOutput"><span class="type">GsfOutput</span></a> to hold the OLE2 file
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the new ole file handler
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558358"></a><h3>
+<a name="gsf-outfile-msole-new-full"></a>gsf_outfile_msole_new_full ()</h3>
+<a class="indexterm" name="id2558370"></a><pre class="programlisting"><a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* gsf_outfile_msole_new_full      (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             guint bb_size,
+                                             guint sb_size);</pre>
+<p>
+Creates the root directory of an MS OLE file and manages the addition of
+children.
+</p>
+<p>
+NOTE : adds a reference to <em class="parameter"><code>sink</code></em></p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sink</code></em>&#160;:</span></td>
+<td> a <a href="gsf-Output-to-unstructured-files.html#GsfOutput"><span class="type">GsfOutput</span></a> to hold the OLE2 file.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>bb_size</code></em>&#160;:</span></td>
+<td> size of large blocks.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sb_size</code></em>&#160;:</span></td>
+<td> size of small blocks.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the new ole file handler
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558491"></a><h3>
+<a name="gsf-outfile-msole-set-class-id"></a>gsf_outfile_msole_set_class_id ()</h3>
+<a class="indexterm" name="id2558503"></a><pre class="programlisting">gboolean    gsf_outfile_msole_set_class_id  (<a href="gsf-MS-OLE2.html#GsfOutfileMSOle">GsfOutfileMSOle</a> *ole,
+                                             guint8 const *clsid);</pre>
+<p>
+Write <em class="parameter"><code>clsid</code></em> to the directory associated with <em class="parameter"><code>ole</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ole</code></em>&#160;:</span></td>
+<td> a <a href="gsf-MS-OLE2.html#GsfOutfileMSOle"><span class="type">GsfOutfileMSOle</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>clsid</code></em>&#160;:</span></td>
+<td> 16 byte identifier (often a GUID in MS Windows apps)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE on success.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558605"></a><h3>
+<a name="gsf-msole-metadata-read"></a>gsf_msole_metadata_read ()</h3>
+<a class="indexterm" name="id2558616"></a><pre class="programlisting">GError*     gsf_msole_metadata_read         (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *in,
+                                             <a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *accum);</pre>
+<p>
+Read a stream formated as a set of MS OLE properties from <em class="parameter"><code>in</code></em> and store the
+results in <em class="parameter"><code>accum</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>in</code></em>&#160;:</span></td>
+<td> <a href="gsf-Input-from-unstructured-files.html#GsfInput"><span class="type">GsfInput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>accum</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocMetaData"><span class="type">GsfDocMetaData</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>GError which the caller must free on error.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558727"></a><h3>
+<a name="gsf-msole-metadata-write"></a>gsf_msole_metadata_write ()</h3>
+<a class="indexterm" name="id2558737"></a><pre class="programlisting">gboolean    gsf_msole_metadata_write        (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *out,
+                                             <a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta_data,
+                                             gboolean doc_not_component);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>out</code></em>&#160;:</span></td>
+<td> <a href="gsf-Output-to-unstructured-files.html#GsfOutput"><span class="type">GsfOutput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta_data</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocMetaData"><span class="type">GsfDocMetaData</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>doc_not_component</code></em>&#160;:</span></td>
+<td> a kludge to differentiate DocumentSummary from Summary
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE on success;
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558858"></a><h3>
+<a name="gsf-msole-iconv-open-codepages-for-export"></a>gsf_msole_iconv_open_codepages_for_export ()</h3>
+<a class="indexterm" name="id2558870"></a><pre class="programlisting">GIConv      gsf_msole_iconv_open_codepages_for_export
+                                            (int codepage_to,
+                                             char const *from);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>codepage_to</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>from</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>an iconv converter to go from utf8 -&gt; to our best guess at a useful
+	windows codepage.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2558952"></a><h3>
+<a name="gsf-msole-iconv-open-codepage-for-import"></a>gsf_msole_iconv_open_codepage_for_import ()</h3>
+<a class="indexterm" name="id2558964"></a><pre class="programlisting">GIConv      gsf_msole_iconv_open_codepage_for_import
+                                            (char const *to,
+                                             int codepage);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>to</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>codepage</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>an iconv converter for <em class="parameter"><code>codepage</code></em> -&gt; utf8.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559052"></a><h3>
+<a name="gsf-msole-iconv-open-for-export"></a>gsf_msole_iconv_open_for_export ()</h3>
+<a class="indexterm" name="id2559063"></a><pre class="programlisting">GIConv      gsf_msole_iconv_open_for_export (void);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>an iconv convert to go from utf8 -&gt; to our best guess at a useful
+	windows codepage.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559104"></a><h3>
+<a name="gsf-msole-iconv-open-codepage-for-export"></a>gsf_msole_iconv_open_codepage_for_export ()</h3>
+<a class="indexterm" name="id2559115"></a><pre class="programlisting">GIConv      gsf_msole_iconv_open_codepage_for_export
+                                            (int codepage_to);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>codepage_to</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>an iconv converter to go from utf8 -&gt; to our best guess at a useful
+	windows codepage.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559177"></a><h3>
+<a name="gsf-msole-iconv-open-for-import"></a>gsf_msole_iconv_open_for_import ()</h3>
+<a class="indexterm" name="id2559188"></a><pre class="programlisting">GIConv      gsf_msole_iconv_open_for_import (int codepage);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>codepage</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>an iconv converter for single byte encodings <em class="parameter"><code>codepage</code></em> -&gt; utf8.
+	Attempt to handle the semantics of a specification for multibyte encodings
+	since this is only supposed to be used for single bytes.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559256"></a><h3>
+<a name="gsf-msole-iconv-win-codepage"></a>gsf_msole_iconv_win_codepage ()</h3>
+<a class="indexterm" name="id2559268"></a><pre class="programlisting">int         gsf_msole_iconv_win_codepage    (void);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>our best guess at the applicable windows code page based on an
+	environment variable or the current locale.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559308"></a><h3>
+<a name="gsf-msole-codepage-to-lid"></a>gsf_msole_codepage_to_lid ()</h3>
+<a class="indexterm" name="id2559320"></a><pre class="programlisting">guint       gsf_msole_codepage_to_lid       (int codepage);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>codepage</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559375"></a><h3>
+<a name="gsf-msole-lid-to-codepage"></a>gsf_msole_lid_to_codepage ()</h3>
+<a class="indexterm" name="id2559386"></a><pre class="programlisting">int         gsf_msole_lid_to_codepage       (guint lid);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>lid</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>our best guess at the codepage for the given language id
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559445"></a><h3>
+<a name="gsf-msole-lid-to-codepage-str"></a>gsf_msole_lid_to_codepage_str ()</h3>
+<a class="indexterm" name="id2559457"></a><pre class="programlisting">gchar*      gsf_msole_lid_to_codepage_str   (guint lid);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>lid</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the Iconv codepage string for the given LID.
+Return value must be <code class="function">g_free()</code>'d
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559528"></a><h3>
+<a name="gsf-msole-lid-for-language"></a>gsf_msole_lid_for_language ()</h3>
+<a class="indexterm" name="id2559540"></a><pre class="programlisting">guint       gsf_msole_lid_for_language      (char const *lang);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>lang</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the LID (Language Identifier) for the input language.
+If lang is <code class="literal">null</code>, return 0x0400 ("-none-"), and not 0x0000 ("no proofing")
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559607"></a><h3>
+<a name="gsf-msole-language-for-lid"></a>gsf_msole_language_for_lid ()</h3>
+<a class="indexterm" name="id2559619"></a><pre class="programlisting">charconst * gsf_msole_language_for_lid      (guint lid);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>lid</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the xx_YY style string (can be just xx or xxx) for the given LID.
+Return value must not be freed. If the LID is not found, is set to 0x0400,
+or is set to 0x0000, will return "-none-"
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559680"></a><h3>
+<a name="gsf-msole-inflate"></a>gsf_msole_inflate ()</h3>
+<a class="indexterm" name="id2559692"></a><pre class="programlisting">GByteArray* gsf_msole_inflate               (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset);</pre>
+<p>
+Decompresses an LZ compressed stream.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> stream to read from
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em>&#160;:</span></td>
+<td> offset into it for start byte of compresse stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A GByteArray that the caller is responsible for freeing
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559775"></a><h3>
+<a name="OLE-HEADER-START-BAT:CAPS"></a>OLE_HEADER_START_BAT</h3>
+<a class="indexterm" name="id2559785"></a><pre class="programlisting">#define OLE_HEADER_START_BAT	 0x4c
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559801"></a><h3>
+<a name="OLE-HEADER-MAJOR-VER:CAPS"></a>OLE_HEADER_MAJOR_VER</h3>
+<a class="indexterm" name="id2559812"></a><pre class="programlisting">#define OLE_HEADER_MAJOR_VER	 0x1a	/* 0x3 been seen in wild */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559828"></a><h3>
+<a name="OLE-HEADER-METABAT-SIZE:CAPS"></a>OLE_HEADER_METABAT_SIZE</h3>
+<a class="indexterm" name="id2559839"></a><pre class="programlisting">#define OLE_HEADER_METABAT_SIZE	 ((OLE_HEADER_SIZE - OLE_HEADER_START_BAT) / BAT_INDEX_SIZE)
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559856"></a><h3>
+<a name="OLE-HEADER-DIRENT-START:CAPS"></a>OLE_HEADER_DIRENT_START</h3>
+<a class="indexterm" name="id2559867"></a><pre class="programlisting">#define OLE_HEADER_DIRENT_START  0x30
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559882"></a><h3>
+<a name="OLE-HEADER-NUM-SBAT:CAPS"></a>OLE_HEADER_NUM_SBAT</h3>
+<a class="indexterm" name="id2559894"></a><pre class="programlisting">#define OLE_HEADER_NUM_SBAT      0x40
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559909"></a><h3>
+<a name="OLE-HEADER-BB-SHIFT:CAPS"></a>OLE_HEADER_BB_SHIFT</h3>
+<a class="indexterm" name="id2559920"></a><pre class="programlisting">#define OLE_HEADER_BB_SHIFT      0x1e
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559936"></a><h3>
+<a name="OLE-HEADER-CSECTDIR:CAPS"></a>OLE_HEADER_CSECTDIR</h3>
+<a class="indexterm" name="id2559946"></a><pre class="programlisting">#define OLE_HEADER_CSECTDIR	 0x28
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559961"></a><h3>
+<a name="OLE-HEADER-NUM-BAT:CAPS"></a>OLE_HEADER_NUM_BAT</h3>
+<a class="indexterm" name="id2559972"></a><pre class="programlisting">#define OLE_HEADER_NUM_BAT	 0x2c
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2559987"></a><h3>
+<a name="OLE-HEADER-THRESHOLD:CAPS"></a>OLE_HEADER_THRESHOLD</h3>
+<a class="indexterm" name="id2559998"></a><pre class="programlisting">#define OLE_HEADER_THRESHOLD	 0x38
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560013"></a><h3>
+<a name="OLE-HEADER-METABAT-BLOCK:CAPS"></a>OLE_HEADER_METABAT_BLOCK</h3>
+<a class="indexterm" name="id2560025"></a><pre class="programlisting">#define OLE_HEADER_METABAT_BLOCK 0x44
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560040"></a><h3>
+<a name="OLE-HEADER-SBAT-START:CAPS"></a>OLE_HEADER_SBAT_START</h3>
+<a class="indexterm" name="id2560051"></a><pre class="programlisting">#define OLE_HEADER_SBAT_START    0x3c
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560067"></a><h3>
+<a name="OLE-HEADER-SIGNATURE:CAPS"></a>OLE_HEADER_SIGNATURE</h3>
+<a class="indexterm" name="id2560078"></a><pre class="programlisting">#define OLE_HEADER_SIGNATURE	 0x00
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560092"></a><h3>
+<a name="OLE-HEADER-BYTE-ORDER:CAPS"></a>OLE_HEADER_BYTE_ORDER</h3>
+<a class="indexterm" name="id2560104"></a><pre class="programlisting">#define OLE_HEADER_BYTE_ORDER	 0x1c	/* 0xfe 0xff == Intel Little Endian */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560120"></a><h3>
+<a name="OLE-HEADER-SB-SHIFT:CAPS"></a>OLE_HEADER_SB_SHIFT</h3>
+<a class="indexterm" name="id2560131"></a><pre class="programlisting">#define OLE_HEADER_SB_SHIFT      0x20
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560146"></a><h3>
+<a name="OLE-HEADER-NUM-METABAT:CAPS"></a>OLE_HEADER_NUM_METABAT</h3>
+<a class="indexterm" name="id2560157"></a><pre class="programlisting">#define OLE_HEADER_NUM_METABAT   0x48
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560172"></a><h3>
+<a name="OLE-HEADER-SIZE:CAPS"></a>OLE_HEADER_SIZE</h3>
+<a class="indexterm" name="id2560184"></a><pre class="programlisting">#define OLE_HEADER_SIZE		 0x200	/* independent of big block size size */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560200"></a><h3>
+<a name="OLE-HEADER-CLSID:CAPS"></a>OLE_HEADER_CLSID</h3>
+<a class="indexterm" name="id2560211"></a><pre class="programlisting">#define OLE_HEADER_CLSID	 0x08	/* See ReadClassStg */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560226"></a><h3>
+<a name="OLE-HEADER-MINOR-VER:CAPS"></a>OLE_HEADER_MINOR_VER</h3>
+<a class="indexterm" name="id2560236"></a><pre class="programlisting">#define OLE_HEADER_MINOR_VER	 0x18	/* 0x33 and 0x3e have been seen */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560252"></a><h3>
+<a name="OLE-DEFAULT-BB-SHIFT:CAPS"></a>OLE_DEFAULT_BB_SHIFT</h3>
+<a class="indexterm" name="id2560263"></a><pre class="programlisting">#define OLE_DEFAULT_BB_SHIFT	 9
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560278"></a><h3>
+<a name="OLE-DEFAULT-SB-SHIFT:CAPS"></a>OLE_DEFAULT_SB_SHIFT</h3>
+<a class="indexterm" name="id2560289"></a><pre class="programlisting">#define OLE_DEFAULT_SB_SHIFT	 6
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560304"></a><h3>
+<a name="DIRENT-DETAILS-SIZE:CAPS"></a>DIRENT_DETAILS_SIZE</h3>
+<a class="indexterm" name="id2560315"></a><pre class="programlisting">#define DIRENT_DETAILS_SIZE	0x40
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560331"></a><h3>
+<a name="DIRENT-SIZE:CAPS"></a>DIRENT_SIZE</h3>
+<a class="indexterm" name="id2560341"></a><pre class="programlisting">#define DIRENT_SIZE		(DIRENT_MAX_NAME_SIZE + DIRENT_DETAILS_SIZE)
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560356"></a><h3>
+<a name="DIRENT-NAME-LEN:CAPS"></a>DIRENT_NAME_LEN</h3>
+<a class="indexterm" name="id2560368"></a><pre class="programlisting">#define DIRENT_NAME_LEN		0x40	/* length in bytes incl 0 terminator */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560384"></a><h3>
+<a name="DIRENT-TYPE-PROPERTY:CAPS"></a>DIRENT_TYPE_PROPERTY</h3>
+<a class="indexterm" name="id2560394"></a><pre class="programlisting">#define DIRENT_TYPE_PROPERTY	4	/* ? */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560410"></a><h3>
+<a name="DIRENT-TYPE-FILE:CAPS"></a>DIRENT_TYPE_FILE</h3>
+<a class="indexterm" name="id2560421"></a><pre class="programlisting">#define DIRENT_TYPE_FILE	2
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560436"></a><h3>
+<a name="DIRENT-MAGIC-END:CAPS"></a>DIRENT_MAGIC_END</h3>
+<a class="indexterm" name="id2560447"></a><pre class="programlisting">#define DIRENT_MAGIC_END	0xffffffff
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560463"></a><h3>
+<a name="DIRENT-TYPE-DIR:CAPS"></a>DIRENT_TYPE_DIR</h3>
+<a class="indexterm" name="id2560474"></a><pre class="programlisting">#define DIRENT_TYPE_DIR		1
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560488"></a><h3>
+<a name="DIRENT-MAX-NAME-SIZE:CAPS"></a>DIRENT_MAX_NAME_SIZE</h3>
+<a class="indexterm" name="id2560499"></a><pre class="programlisting">#define DIRENT_MAX_NAME_SIZE	0x40
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560515"></a><h3>
+<a name="DIRENT-FILE-SIZE:CAPS"></a>DIRENT_FILE_SIZE</h3>
+<a class="indexterm" name="id2560526"></a><pre class="programlisting">#define DIRENT_FILE_SIZE	0x78
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560542"></a><h3>
+<a name="DIRENT-FIRSTBLOCK:CAPS"></a>DIRENT_FIRSTBLOCK</h3>
+<a class="indexterm" name="id2560552"></a><pre class="programlisting">#define DIRENT_FIRSTBLOCK	0x74
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560567"></a><h3>
+<a name="DIRENT-TYPE-INVALID:CAPS"></a>DIRENT_TYPE_INVALID</h3>
+<a class="indexterm" name="id2560578"></a><pre class="programlisting">#define DIRENT_TYPE_INVALID	0
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560594"></a><h3>
+<a name="DIRENT-USERFLAGS:CAPS"></a>DIRENT_USERFLAGS</h3>
+<a class="indexterm" name="id2560604"></a><pre class="programlisting">#define DIRENT_USERFLAGS	0x60	/* only for dirs */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560620"></a><h3>
+<a name="DIRENT-COLOUR:CAPS"></a>DIRENT_COLOUR</h3>
+<a class="indexterm" name="id2560630"></a><pre class="programlisting">#define DIRENT_COLOUR		0x43
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560646"></a><h3>
+<a name="DIRENT-MODIFY-TIME:CAPS"></a>DIRENT_MODIFY_TIME</h3>
+<a class="indexterm" name="id2560656"></a><pre class="programlisting">#define DIRENT_MODIFY_TIME	0x6c	/* for files */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560672"></a><h3>
+<a name="DIRENT-TYPE-LOCKBYTES:CAPS"></a>DIRENT_TYPE_LOCKBYTES</h3>
+<a class="indexterm" name="id2560682"></a><pre class="programlisting">#define DIRENT_TYPE_LOCKBYTES	3	/* ? */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560698"></a><h3>
+<a name="DIRENT-CREATE-TIME:CAPS"></a>DIRENT_CREATE_TIME</h3>
+<a class="indexterm" name="id2560709"></a><pre class="programlisting">#define DIRENT_CREATE_TIME	0x64	/* for files */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560725"></a><h3>
+<a name="DIRENT-PREV:CAPS"></a>DIRENT_PREV</h3>
+<a class="indexterm" name="id2560735"></a><pre class="programlisting">#define DIRENT_PREV		0x44
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560750"></a><h3>
+<a name="DIRENT-NEXT:CAPS"></a>DIRENT_NEXT</h3>
+<a class="indexterm" name="id2560760"></a><pre class="programlisting">#define DIRENT_NEXT		0x48
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560775"></a><h3>
+<a name="DIRENT-CHILD:CAPS"></a>DIRENT_CHILD</h3>
+<a class="indexterm" name="id2560786"></a><pre class="programlisting">#define DIRENT_CHILD		0x4c
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560801"></a><h3>
+<a name="DIRENT-TYPE:CAPS"></a>DIRENT_TYPE</h3>
+<a class="indexterm" name="id2560812"></a><pre class="programlisting">#define DIRENT_TYPE		0x42
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560826"></a><h3>
+<a name="DIRENT-CLSID:CAPS"></a>DIRENT_CLSID</h3>
+<a class="indexterm" name="id2560837"></a><pre class="programlisting">#define DIRENT_CLSID		0x50	/* only for dirs */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560853"></a><h3>
+<a name="DIRENT-TYPE-ROOTDIR:CAPS"></a>DIRENT_TYPE_ROOTDIR</h3>
+<a class="indexterm" name="id2560864"></a><pre class="programlisting">#define DIRENT_TYPE_ROOTDIR	5
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560879"></a><h3>
+<a name="BAT-MAGIC-METABAT:CAPS"></a>BAT_MAGIC_METABAT</h3>
+<a class="indexterm" name="id2560889"></a><pre class="programlisting">#define BAT_MAGIC_METABAT	0xfffffffc	/* a metabat block -4 */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560905"></a><h3>
+<a name="BAT-MAGIC-BAT:CAPS"></a>BAT_MAGIC_BAT</h3>
+<a class="indexterm" name="id2560915"></a><pre class="programlisting">#define BAT_MAGIC_BAT		0xfffffffd	/* a bat block,    -3 */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560931"></a><h3>
+<a name="BAT-INDEX-SIZE:CAPS"></a>BAT_INDEX_SIZE</h3>
+<a class="indexterm" name="id2560942"></a><pre class="programlisting">#define BAT_INDEX_SIZE		 4
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560957"></a><h3>
+<a name="BAT-MAGIC-END-OF-CHAIN:CAPS"></a>BAT_MAGIC_END_OF_CHAIN</h3>
+<a class="indexterm" name="id2560968"></a><pre class="programlisting">#define BAT_MAGIC_END_OF_CHAIN	0xfffffffe	/*		   -2 */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2560984"></a><h3>
+<a name="BAT-MAGIC-UNUSED:CAPS"></a>BAT_MAGIC_UNUSED</h3>
+<a class="indexterm" name="id2560995"></a><pre class="programlisting">#define BAT_MAGIC_UNUSED	0xffffffff	/*		   -1 */
+</pre>
+<p>
+
+</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Compression.html"><b>&lt;&lt;&#160;Compression</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-metadata.html"><b>metadata&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Outfile-writing-structed-files.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Outfile-writing-structed-files.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Outfile-writing-structed-files.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,249 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Outfile writing structed files</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="sources.html" title="Stream Sources">
+<link rel="prev" href="gsf-Infile-reading-structed-files.html" title="Infile reading structed files">
+<link rel="next" href="gsf-Reading-and-Writing-from-local-files-and-directories.html" title="Reading and Writing from local files and directories">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Infile-reading-structed-files.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="sources.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Reading-and-Writing-from-local-files-and-directories.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Outfile-writing-structed-files"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Outfile writing structed files</span></h2>
+<p>Outfile writing structed files &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfOutfile"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile-struct">GsfOutfile</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child">gsf_outfile_new_child</a>           (<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *outfile,
+                                             char const *name,
+                                             gboolean is_dir);
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child-full">gsf_outfile_new_child_full</a>      (<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *outfile,
+                                             char const *name,
+                                             gboolean is_dir,
+                                             char const *first_property_name,
+                                             ...);
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child-varg">gsf_outfile_new_child_varg</a>      (<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *outfile,
+                                             char const *name,
+                                             gboolean is_dir,
+                                             char const *first_property_name,
+                                             va_list args);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2527565"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----GsfOutfile
+               +----<a href="gsf-MS-OLE2.html#GsfOutfileMSOle">GsfOutfileMSOle</a>
+               +----<a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutfileStdio">GsfOutfileStdio</a>
+               +----<a href="gsf-Zip.html#GsfOutfileZip">GsfOutfileZip</a>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2527617"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2527627"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2527632"></a><h3>
+<a name="GsfOutfile-struct"></a>GsfOutfile</h3>
+<a class="indexterm" name="id2527643"></a><pre class="programlisting">typedef struct _GsfOutfile GsfOutfile;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2527658"></a><h3>
+<a name="gsf-outfile-new-child"></a>gsf_outfile_new_child ()</h3>
+<a class="indexterm" name="id2527668"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_outfile_new_child           (<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *outfile,
+                                             char const *name,
+                                             gboolean is_dir);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>outfile</code></em>&#160;:</span></td>
+<td> A <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile"><span class="type">GsfOutfile</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td> The name of the new child to create
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>is_dir</code></em>&#160;:</span></td>
+<td> TRUE to create a directory, FALSE to create a plain file
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a newly created child
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2527780"></a><h3>
+<a name="gsf-outfile-new-child-full"></a>gsf_outfile_new_child_full ()</h3>
+<a class="indexterm" name="id2527791"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_outfile_new_child_full      (<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *outfile,
+                                             char const *name,
+                                             gboolean is_dir,
+                                             char const *first_property_name,
+                                             ...);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>outfile</code></em>&#160;:</span></td>
+<td> A <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile"><span class="type">GsfOutfile</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td> The name of the new child to create
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>is_dir</code></em>&#160;:</span></td>
+<td> TRUE to create a directory, FALSE to create a plain file
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a newly created child
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2527938"></a><h3>
+<a name="gsf-outfile-new-child-varg"></a>gsf_outfile_new_child_varg ()</h3>
+<a class="indexterm" name="id2527950"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_outfile_new_child_varg      (<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *outfile,
+                                             char const *name,
+                                             gboolean is_dir,
+                                             char const *first_property_name,
+                                             va_list args);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>outfile</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>is_dir</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>args</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Infile-reading-structed-files.html"><b>&lt;&lt;&#160;Infile reading structed files</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Reading-and-Writing-from-local-files-and-directories.html"><b>Reading and Writing from local files and directories&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Output-to-unstructured-files.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Output-to-unstructured-files.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Output-to-unstructured-files.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,825 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Output to unstructured files</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="io.html" title="Basic Input/Output">
+<link rel="prev" href="gsf-Input-from-unstructured-files.html" title="Input from unstructured files">
+<link rel="next" href="sources.html" title="Stream Sources">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Input-from-unstructured-files.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="io.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="sources.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Output-to-unstructured-files"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Output to unstructured files</span></h2>
+<p>Output to unstructured files &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfOutput"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Output-to-unstructured-files.html#GsfOutput-struct">GsfOutput</a>;
+<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* <a href="gsf-Output-to-unstructured-files.html#gsf-output-container">gsf_output_container</a>            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);
+<a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   <a href="gsf-Output-to-unstructured-files.html#gsf-output-size">gsf_output_size</a>                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-close">gsf_output_close</a>                (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);
+<a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   <a href="gsf-Output-to-unstructured-files.html#gsf-output-tell">gsf_output_tell</a>                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-seek">gsf_output_seek</a>                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset,
+                                             GSeekType whence);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-write">gsf_output_write</a>                (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             size_t num_bytes,
+                                             guint8 const *data);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-puts">gsf_output_puts</a>                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *line);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-printf">gsf_output_printf</a>               (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *format,
+                                             ...);
+<a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   <a href="gsf-Output-to-unstructured-files.html#gsf-output-vprintf">gsf_output_vprintf</a>              (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *format,
+                                             va_list args);
+charconst   * <a href="gsf-Output-to-unstructured-files.html#gsf-output-name">gsf_output_name</a>               (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-set-name-from-filename">gsf_output_set_name_from_filename</a>
+                                            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *filename);
+GQuark      <a href="gsf-Output-to-unstructured-files.html#gsf-output-error-id">gsf_output_error_id</a>             (void);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-set-error">gsf_output_set_error</a>            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             gint code,
+                                             char const *format,
+                                             ...);
+GErrorconst * <a href="gsf-Output-to-unstructured-files.html#gsf-output-error">gsf_output_error</a>              (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-is-closed">gsf_output_is_closed</a>            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-wrap">gsf_output_wrap</a>                 (GObject *wrapper,
+                                             <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *wrapee);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-unwrap">gsf_output_unwrap</a>               (GObject *wrapper,
+                                             <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *wrapee);
+
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-set-name">gsf_output_set_name</a>             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *name);
+gboolean    <a href="gsf-Output-to-unstructured-files.html#gsf-output-set-container">gsf_output_set_container</a>        (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *container);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2521215"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----GsfOutput
+         +----<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>
+         +----<a href="gsf-Compression.html#GsfOutputBzip">GsfOutputBzip</a>
+         +----<a href="gsf-GIOChannel.html#GsfOutputIOChannel">GsfOutputIOChannel</a>
+         +----<a href="gsf-memory.html#GsfOutputMemory">GsfOutputMemory</a>
+         +----<a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutputStdio">GsfOutputStdio</a>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2521275"></a><h2>Properties</h2>
+<pre class="synopsis">
+
+  "<a href="gsf-Output-to-unstructured-files.html#GsfOutput--is-closed">is-closed</a>"            gboolean              : Read
+  "<a href="gsf-Output-to-unstructured-files.html#GsfOutput--name">name</a>"                 gchararray            : Read
+  "<a href="gsf-Output-to-unstructured-files.html#GsfOutput--position">position</a>"             gint64                : Read
+  "<a href="gsf-Output-to-unstructured-files.html#GsfOutput--size">size</a>"                 gint64                : Read
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2521353"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2521362"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2521368"></a><h3>
+<a name="GsfOutput-struct"></a>GsfOutput</h3>
+<a class="indexterm" name="id2521379"></a><pre class="programlisting">typedef struct _GsfOutput GsfOutput;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2521394"></a><h3>
+<a name="gsf-output-container"></a>gsf_output_container ()</h3>
+<a class="indexterm" name="id2521404"></a><pre class="programlisting"><a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* gsf_output_container            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>, but does not add a reference to <em class="parameter"><code>output</code></em>'s container.
+Potentially NULL
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2521471"></a><h3>
+<a name="gsf-output-size"></a>gsf_output_size ()</h3>
+<a class="indexterm" name="id2521482"></a><pre class="programlisting"><a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   gsf_output_size                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the size of the output, or -1 if it does not have a size.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2521542"></a><h3>
+<a name="gsf-output-close"></a>gsf_output_close ()</h3>
+<a class="indexterm" name="id2521552"></a><pre class="programlisting">gboolean    gsf_output_close                (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);</pre>
+<p>
+Close a stream.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>FALSE on error
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2521612"></a><h3>
+<a name="gsf-output-tell"></a>gsf_output_tell ()</h3>
+<a class="indexterm" name="id2521622"></a><pre class="programlisting"><a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   gsf_output_tell                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the current position in the file
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2521682"></a><h3>
+<a name="gsf-output-seek"></a>gsf_output_seek ()</h3>
+<a class="indexterm" name="id2521692"></a><pre class="programlisting">gboolean    gsf_output_seek                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> offset,
+                                             GSeekType whence);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>whence</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>FALSE on error.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2521794"></a><h3>
+<a name="gsf-output-write"></a>gsf_output_write ()</h3>
+<a class="indexterm" name="id2521804"></a><pre class="programlisting">gboolean    gsf_output_write                (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             size_t num_bytes,
+                                             guint8 const *data);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>num_bytes</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>FALSE on error.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2521906"></a><h3>
+<a name="gsf-output-puts"></a>gsf_output_puts ()</h3>
+<a class="indexterm" name="id2521916"></a><pre class="programlisting">gboolean    gsf_output_puts                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *line);</pre>
+<p>
+Like fputs, this assumes that the line already ends with a newline</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td> A <a href="gsf-Output-to-unstructured-files.html#GsfOutput"><span class="type">GsfOutput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>line</code></em>&#160;:</span></td>
+<td> <code class="literal">null</code> terminated string to write
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> TRUE if successful, FALSE if not
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522013"></a><h3>
+<a name="gsf-output-printf"></a>gsf_output_printf ()</h3>
+<a class="indexterm" name="id2522024"></a><pre class="programlisting">gboolean    gsf_output_printf               (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *format,
+                                             ...);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td> A <a href="gsf-Output-to-unstructured-files.html#GsfOutput"><span class="type">GsfOutput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>format</code></em>&#160;:</span></td>
+<td> The printf-style format string
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em>&#160;:</span></td>
+<td> the arguments for <em class="parameter"><code>format</code></em>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> TRUE if successful, FALSE if not
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522133"></a><h3>
+<a name="gsf-output-vprintf"></a>gsf_output_vprintf ()</h3>
+<a class="indexterm" name="id2522144"></a><pre class="programlisting"><a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>   gsf_output_vprintf              (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *format,
+                                             va_list args);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td> A <a href="gsf-Output-to-unstructured-files.html#GsfOutput"><span class="type">GsfOutput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>format</code></em>&#160;:</span></td>
+<td> The printf-style format string
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>args</code></em>&#160;:</span></td>
+<td> the arguments for <em class="parameter"><code>format</code></em>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> number of bytes printed, a negative value if not successful
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522261"></a><h3>
+<a name="gsf-output-name"></a>gsf_output_name ()</h3>
+<a class="indexterm" name="id2522271"></a><pre class="programlisting">charconst   * gsf_output_name               (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+<em class="parameter"><code>output</code></em>'s name in utf8 form, DO NOT FREE THIS STRING
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522336"></a><h3>
+<a name="gsf-output-set-name-from-filename"></a>gsf_output_set_name_from_filename ()</h3>
+<a class="indexterm" name="id2522348"></a><pre class="programlisting">gboolean    gsf_output_set_name_from_filename
+                                            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *filename);</pre>
+<p>
+</p>
+<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Note</h3>This is a utility routine that should only be used by derived
+outputs.</div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td> the output stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> the (fs-sys encoded) filename
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the assignment was ok.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522434"></a><h3>
+<a name="gsf-output-error-id"></a>gsf_output_error_id ()</h3>
+<a class="indexterm" name="id2522445"></a><pre class="programlisting">GQuark      gsf_output_error_id             (void);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522480"></a><h3>
+<a name="gsf-output-set-error"></a>gsf_output_set_error ()</h3>
+<a class="indexterm" name="id2522491"></a><pre class="programlisting">gboolean    gsf_output_set_error            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             gint code,
+                                             char const *format,
+                                             ...);</pre>
+<p>
+</p>
+<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Note</h3>This is a utility routine that should only be used by derived
+outputs.</div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>code</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>format</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>Always returns FALSE to facilitate its use.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522611"></a><h3>
+<a name="gsf-output-error"></a>gsf_output_error ()</h3>
+<a class="indexterm" name="id2522621"></a><pre class="programlisting">GErrorconst * gsf_output_error              (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the last error logged on the output, or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522681"></a><h3>
+<a name="gsf-output-is-closed"></a>gsf_output_is_closed ()</h3>
+<a class="indexterm" name="id2522692"></a><pre class="programlisting">gboolean    gsf_output_is_closed            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> const *output);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE if <em class="parameter"><code>output</code></em> has already been closed.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522758"></a><h3>
+<a name="gsf-output-wrap"></a>gsf_output_wrap ()</h3>
+<a class="indexterm" name="id2522768"></a><pre class="programlisting">gboolean    gsf_output_wrap                 (GObject *wrapper,
+                                             <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *wrapee);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>wrapper</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>wrapee</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE if the wrapping succeeded.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522849"></a><h3>
+<a name="gsf-output-unwrap"></a>gsf_output_unwrap ()</h3>
+<a class="indexterm" name="id2522860"></a><pre class="programlisting">gboolean    gsf_output_unwrap               (GObject *wrapper,
+                                             <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *wrapee);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>wrapper</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>wrapee</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE if the unwrapping succeeded.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2522940"></a><h3>
+<a name="gsf-output-set-name"></a>gsf_output_set_name ()</h3>
+<a class="indexterm" name="id2522951"></a><pre class="programlisting">gboolean    gsf_output_set_name             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             char const *name);</pre>
+<p>
+</p>
+<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Note</h3>This is a utility routine that should only be used by derived
+outputs.</div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the assignment was ok.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2523035"></a><h3>
+<a name="gsf-output-set-container"></a>gsf_output_set_container ()</h3>
+<a class="indexterm" name="id2523046"></a><pre class="programlisting">gboolean    gsf_output_set_container        (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *container);</pre>
+<p>
+</p>
+<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
+<h3 class="title">Note</h3>This is a utility routine that should only be used by derived
+outputs.</div>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>container</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE if the assignment was ok.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2523132"></a><h2>Properties</h2>
+<div class="refsect2" lang="en">
+<a name="id2523137"></a><h3>
+<a name="GsfOutput--is-closed"></a>The "<code class="literal">is-closed</code>" property</h3>
+<pre class="programlisting">  "is-closed"            gboolean              : Read</pre>
+<p>Whether the Output is Closed.</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2523174"></a><h3>
+<a name="GsfOutput--name"></a>The "<code class="literal">name</code>" property</h3>
+<pre class="programlisting">  "name"                 gchararray            : Read</pre>
+<p>The Output's Name.</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2523211"></a><h3>
+<a name="GsfOutput--position"></a>The "<code class="literal">position</code>" property</h3>
+<pre class="programlisting">  "position"             gint64                : Read</pre>
+<p>The Output's Current Position.</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2523251"></a><h3>
+<a name="GsfOutput--size"></a>The "<code class="literal">size</code>" property</h3>
+<pre class="programlisting">  "size"                 gint64                : Read</pre>
+<p>The Output's Size.</p>
+<p>Allowed values: &gt;= 0</p>
+<p>Default value: 0</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Input-from-unstructured-files.html"><b>&lt;&lt;&#160;Input from unstructured files</b></a></td>
+<td align="right"><a accesskey="n" href="sources.html"><b>Stream Sources&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Reading-and-Writing-from-local-files-and-directories.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Reading-and-Writing-from-local-files-and-directories.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Reading-and-Writing-from-local-files-and-directories.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,539 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reading and Writing from local files and directories</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="sources.html" title="Stream Sources">
+<link rel="prev" href="gsf-Outfile-writing-structed-files.html" title="Outfile writing structed files">
+<link rel="next" href="gsf-memory.html" title="memory">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Outfile-writing-structed-files.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="sources.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-memory.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Reading-and-Writing-from-local-files-and-directories"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Reading and Writing from local files and directories</span></h2>
+<p>Reading and Writing from local files and directories &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInputStdio"></a><a name="GsfOutputStdio"></a><a name="GsfOutfileStdio"></a><a name="GsfInfileStdio"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInputStdio-struct">GsfInputStdio</a>;
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-input-stdio-new">gsf_input_stdio_new</a>             (char const *filename,
+                                             GError **err);
+            <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutputStdio-struct">GsfOutputStdio</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new">gsf_output_stdio_new</a>            (char const *filename,
+                                             GError **err);
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-full">gsf_output_stdio_new_full</a>       (char const *filename,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             ...);
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-valist">gsf_output_stdio_new_valist</a>     (char const *filename,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             va_list var_args);
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-FILE">gsf_output_stdio_new_FILE</a>       (char const *filename,
+                                             FILE *file,
+                                             gboolean keep_open);
+            <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutfileStdio-struct">GsfOutfileStdio</a>;
+<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new">gsf_outfile_stdio_new</a>           (char const *root,
+                                             GError **err);
+<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new-full">gsf_outfile_stdio_new_full</a>      (char const *root,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             ...);
+<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new-valist">gsf_outfile_stdio_new_valist</a>    (char const *root,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             va_list var_args);
+            <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInfileStdio-struct">GsfInfileStdio</a>;
+<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-infile-stdio-new">gsf_infile_stdio_new</a>            (char const *root,
+                                             GError **err);
+
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2529211"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----GsfInputStdio
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----GsfOutputStdio
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>
+               +----GsfOutfileStdio
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>
+               +----GsfInfileStdio
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2529312"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2529321"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2529327"></a><h3>
+<a name="GsfInputStdio-struct"></a>GsfInputStdio</h3>
+<a class="indexterm" name="id2529338"></a><pre class="programlisting">typedef struct _GsfInputStdio GsfInputStdio;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2529354"></a><h3>
+<a name="gsf-input-stdio-new"></a>gsf_input_stdio_new ()</h3>
+<a class="indexterm" name="id2529364"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_stdio_new             (char const *filename,
+                                             GError **err);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> in utf8.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2529445"></a><h3>
+<a name="GsfOutputStdio-struct"></a>GsfOutputStdio</h3>
+<a class="indexterm" name="id2529457"></a><pre class="programlisting">typedef struct _GsfOutputStdio GsfOutputStdio;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2529472"></a><h3>
+<a name="gsf-output-stdio-new"></a>gsf_output_stdio_new ()</h3>
+<a class="indexterm" name="id2529482"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_stdio_new            (char const *filename,
+                                             GError **err);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> name of file to create or replace.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2529564"></a><h3>
+<a name="gsf-output-stdio-new-full"></a>gsf_output_stdio_new_full ()</h3>
+<a class="indexterm" name="id2529576"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_stdio_new_full       (char const *filename,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             ...);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> name of file to create or replace.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td> NULL terminated list of properties
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em>&#160;:</span></td>
+<td> 
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2529694"></a><h3>
+<a name="gsf-output-stdio-new-valist"></a>gsf_output_stdio_new_valist ()</h3>
+<a class="indexterm" name="id2529705"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_stdio_new_valist     (char const *filename,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             va_list var_args);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>var_args</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2529824"></a><h3>
+<a name="gsf-output-stdio-new-FILE"></a>gsf_output_stdio_new_FILE ()</h3>
+<a class="indexterm" name="id2529836"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_stdio_new_FILE       (char const *filename,
+                                             FILE *file,
+                                             gboolean keep_open);</pre>
+<p>
+Assumes ownership of <em class="parameter"><code>file</code></em>.  If <em class="parameter"><code>keep_open</code></em> is true, ownership reverts
+to caller when the GsfObject is closed.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> The filename corresponding to <em class="parameter"><code>file</code></em>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>file</code></em>&#160;:</span></td>
+<td> an existing stdio FILE *
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>keep_open</code></em>&#160;:</span></td>
+<td> Should <em class="parameter"><code>file</code></em> be closed when the wrapper is closed
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new GsfOutput wrapper for <em class="parameter"><code>file</code></em>.  Warning: the result will be
+seekable only if <em class="parameter"><code>file</code></em> is seekable.  If it is seekable, the resulting
+GsfOutput object will seek relative to <em class="parameter"><code>file</code></em>'s beginning, not its
+current location at the time the GsfOutput object is created.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2529986"></a><h3>
+<a name="GsfOutfileStdio-struct"></a>GsfOutfileStdio</h3>
+<a class="indexterm" name="id2529997"></a><pre class="programlisting">typedef struct _GsfOutfileStdio GsfOutfileStdio;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2530013"></a><h3>
+<a name="gsf-outfile-stdio-new"></a>gsf_outfile_stdio_new ()</h3>
+<a class="indexterm" name="id2530023"></a><pre class="programlisting"><a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* gsf_outfile_stdio_new           (char const *root,
+                                             GError **err);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>root</code></em>&#160;:</span></td>
+<td> root directory in utf8.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new outfile or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2530104"></a><h3>
+<a name="gsf-outfile-stdio-new-full"></a>gsf_outfile_stdio_new_full ()</h3>
+<a class="indexterm" name="id2530116"></a><pre class="programlisting"><a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* gsf_outfile_stdio_new_full      (char const *root,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             ...);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>root</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2530228"></a><h3>
+<a name="gsf-outfile-stdio-new-valist"></a>gsf_outfile_stdio_new_valist ()</h3>
+<a class="indexterm" name="id2530239"></a><pre class="programlisting"><a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* gsf_outfile_stdio_new_valist    (char const *root,
+                                             GError **err,
+                                             char const *first_property_name,
+                                             va_list var_args);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>root</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>var_args</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2530359"></a><h3>
+<a name="GsfInfileStdio-struct"></a>GsfInfileStdio</h3>
+<a class="indexterm" name="id2530370"></a><pre class="programlisting">typedef struct _GsfInfileStdio GsfInfileStdio;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2530386"></a><h3>
+<a name="gsf-infile-stdio-new"></a>gsf_infile_stdio_new ()</h3>
+<a class="indexterm" name="id2530396"></a><pre class="programlisting"><a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  gsf_infile_stdio_new            (char const *root,
+                                             GError **err);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>root</code></em>&#160;:</span></td>
+<td> in locale dependent encoding
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Outfile-writing-structed-files.html"><b>&lt;&lt;&#160;Outfile writing structed files</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-memory.html"><b>memory&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Structured-Blobs.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Structured-Blobs.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Structured-Blobs.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,147 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Structured Blobs</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-GsfClipData.html" title="GsfClipData">
+<link rel="next" href="misc.html" title="Miscellaneous">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-GsfClipData.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="misc.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Structured-Blobs"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Structured Blobs</span></h2>
+<p>Structured Blobs &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfStructuredBlob"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Structured-Blobs.html#GsfStructuredBlob-struct">GsfStructuredBlob</a>;
+gboolean    <a href="gsf-Structured-Blobs.html#gsf-structured-blob-write">gsf_structured_blob_write</a>       (<a href="gsf-Structured-Blobs.html#GsfStructuredBlob">GsfStructuredBlob</a> *blob,
+                                             <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *container);
+<a href="gsf-Structured-Blobs.html#GsfStructuredBlob">GsfStructuredBlob</a>* <a href="gsf-Structured-Blobs.html#gsf-structured-blob-read">gsf_structured_blob_read</a> (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2577404"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>
+               +----GsfStructuredBlob
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2577438"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2577447"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2577453"></a><h3>
+<a name="GsfStructuredBlob-struct"></a>GsfStructuredBlob</h3>
+<a class="indexterm" name="id2577464"></a><pre class="programlisting">typedef struct _GsfStructuredBlob GsfStructuredBlob;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2577480"></a><h3>
+<a name="gsf-structured-blob-write"></a>gsf_structured_blob_write ()</h3>
+<a class="indexterm" name="id2577491"></a><pre class="programlisting">gboolean    gsf_structured_blob_write       (<a href="gsf-Structured-Blobs.html#GsfStructuredBlob">GsfStructuredBlob</a> *blob,
+                                             <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a> *container);</pre>
+<p>
+Dumps structured blob <em class="parameter"><code>blob</code></em> onto the <em class="parameter"><code>container</code></em>.  Will fail if the output is
+not an Outfile and blob has multiple streams.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>blob</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>container</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: TRUE on success.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2577586"></a><h3>
+<a name="gsf-structured-blob-read"></a>gsf_structured_blob_read ()</h3>
+<a class="indexterm" name="id2577596"></a><pre class="programlisting"><a href="gsf-Structured-Blobs.html#GsfStructuredBlob">GsfStructuredBlob</a>* gsf_structured_blob_read (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> An input (potentially a GsfInfile) holding the blob
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a freshly created tree of blobs
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-GsfClipData.html"><b>&lt;&lt;&#160;GsfClipData</b></a></td>
+<td align="right"><a accesskey="n" href="misc.html"><b>Miscellaneous&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Text.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Text.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Text.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,344 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Text</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="parsers.html" title="Stream Parsers">
+<link rel="next" href="gsf-XML-and-libxml.html" title="XML and libxml">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="parsers.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-XML-and-libxml.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Text"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Text</span></h2>
+<p>Text &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInputTextline"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Text.html#GsfInputTextline-struct">GsfInputTextline</a>;
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-Text.html#gsf-input-textline-new">gsf_input_textline_new</a>          (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source);
+unsigned char* <a href="gsf-Text.html#gsf-input-textline-ascii-gets">gsf_input_textline_ascii_gets</a>
+                                            (<a href="gsf-Text.html#GsfInputTextline">GsfInputTextline</a> *input);
+guint8*     <a href="gsf-Text.html#gsf-input-textline-utf8-gets">gsf_input_textline_utf8_gets</a>    (<a href="gsf-Text.html#GsfInputTextline">GsfInputTextline</a> *input);
+            <a href="gsf-Text.html#GsfOutputIconv">GsfOutputIconv</a>;
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-Text.html#gsf-output-iconv-new">gsf_output_iconv_new</a>            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             char const *dst,
+                                             char const *src);
+            <a href="gsf-Text.html#GsfOutputCsv">GsfOutputCsv</a>;
+gboolean    <a href="gsf-Text.html#gsf-output-csv-write-eol">gsf_output_csv_write_eol</a>        (<a href="gsf-Text.html#GsfOutputCsv">GsfOutputCsv</a> *csv);
+gboolean    <a href="gsf-Text.html#gsf-output-csv-write-field">gsf_output_csv_write_field</a>      (<a href="gsf-Text.html#GsfOutputCsv">GsfOutputCsv</a> *csv,
+                                             char const *field,
+                                             size_t len);
+enum        <a href="gsf-Text.html#GsfOutputCsvQuotingMode">GsfOutputCsvQuotingMode</a>;
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2537757"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----GsfInputTextline
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2537783"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2537793"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2537799"></a><h3>
+<a name="GsfInputTextline-struct"></a>GsfInputTextline</h3>
+<a class="indexterm" name="id2537810"></a><pre class="programlisting">typedef struct _GsfInputTextline GsfInputTextline;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2537826"></a><h3>
+<a name="gsf-input-textline-new"></a>gsf_input_textline_new ()</h3>
+<a class="indexterm" name="id2537836"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_textline_new          (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source);</pre>
+<p>
+NOTE : adds a reference to <em class="parameter"><code>source</code></em></p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>source</code></em>&#160;:</span></td>
+<td> in some combination of ascii and utf8
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2537902"></a><h3>
+<a name="gsf-input-textline-ascii-gets"></a>gsf_input_textline_ascii_gets ()</h3>
+<a class="indexterm" name="id2537913"></a><pre class="programlisting">unsigned char* gsf_input_textline_ascii_gets
+                                            (<a href="gsf-Text.html#GsfInputTextline">GsfInputTextline</a> *input);</pre>
+<p>
+A utility routine to read things line by line from the underlying source.
+Trailing newlines and carriage returns are stripped, and the resultant buffer
+can be edited.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the string read, or NULL on eof.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2537978"></a><h3>
+<a name="gsf-input-textline-utf8-gets"></a>gsf_input_textline_utf8_gets ()</h3>
+<a class="indexterm" name="id2537989"></a><pre class="programlisting">guint8*     gsf_input_textline_utf8_gets    (<a href="gsf-Text.html#GsfInputTextline">GsfInputTextline</a> *input);</pre>
+<p>
+A utility routine to read things line by line from the underlying source.
+Trailing newlines and carriage returns are stripped, and the resultant buffer
+can be edited.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the string read, or NULL on eof.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2538053"></a><h3>
+<a name="GsfOutputIconv"></a>GsfOutputIconv</h3>
+<a class="indexterm" name="id2538063"></a><pre class="programlisting">typedef struct _GsfOutputIconv GsfOutputIconv;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2538079"></a><h3>
+<a name="gsf-output-iconv-new"></a>gsf_output_iconv_new ()</h3>
+<a class="indexterm" name="id2538089"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_iconv_new            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             char const *dst,
+                                             char const *src);</pre>
+<p>
+Adds a reference to <em class="parameter"><code>sink</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sink</code></em>&#160;:</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dst</code></em>&#160;:</span></td>
+<td> The target character set.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>src</code></em>&#160;:</span></td>
+<td> The source character set.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new GsfOutput object or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2538199"></a><h3>
+<a name="GsfOutputCsv"></a>GsfOutputCsv</h3>
+<a class="indexterm" name="id2538210"></a><pre class="programlisting">typedef struct {
+	GsfOutput output;
+
+	GsfOutput *sink;
+
+	char *quote;
+	size_t quote_len;
+	GsfOutputCsvQuotingMode quoting_mode;
+	char *quoting_triggers;
+
+	char *eol;
+	size_t eol_len;
+	char *separator;
+	size_t separator_len;
+	gboolean fields_on_line;
+
+	GString *buf;
+} GsfOutputCsv;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2538230"></a><h3>
+<a name="gsf-output-csv-write-eol"></a>gsf_output_csv_write_eol ()</h3>
+<a class="indexterm" name="id2538240"></a><pre class="programlisting">gboolean    gsf_output_csv_write_eol        (<a href="gsf-Text.html#GsfOutputCsv">GsfOutputCsv</a> *csv);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>csv</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2538296"></a><h3>
+<a name="gsf-output-csv-write-field"></a>gsf_output_csv_write_field ()</h3>
+<a class="indexterm" name="id2538308"></a><pre class="programlisting">gboolean    gsf_output_csv_write_field      (<a href="gsf-Text.html#GsfOutputCsv">GsfOutputCsv</a> *csv,
+                                             char const *field,
+                                             size_t len);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>csv</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>field</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2538406"></a><h3>
+<a name="GsfOutputCsvQuotingMode"></a>enum GsfOutputCsvQuotingMode</h3>
+<a class="indexterm" name="id2538418"></a><pre class="programlisting">typedef enum {
+	GSF_OUTPUT_CSV_QUOTING_MODE_NEVER,
+	GSF_OUTPUT_CSV_QUOTING_MODE_AUTO,
+	GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS
+} GsfOutputCsvQuotingMode;
+</pre>
+<p>
+
+</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="parsers.html"><b>&lt;&lt;&#160;Stream Parsers</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-XML-and-libxml.html"><b>XML and libxml&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-XML-and-libxml.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-XML-and-libxml.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-XML-and-libxml.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1657 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>XML and libxml</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-Text.html" title="Text">
+<link rel="next" href="gsf-Zip.html" title="Zip">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Text.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Zip.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-XML-and-libxml"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">XML and libxml</span></h2>
+<p>XML and libxml &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfXMLOut"></a><pre class="synopsis">
+
+
+
+#define     <a href="gsf-XML-and-libxml.html#GSF-XML-IN-NS:CAPS">GSF_XML_IN_NS</a>                   (id, uri)
+enum        <a href="gsf-XML-and-libxml.html#GsfXMLContent">GsfXMLContent</a>;
+            <a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a>;
+int         <a href="gsf-XML-and-libxml.html#gsf-xmlDocFormatDump">gsf_xmlDocFormatDump</a>            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             xmlDoc *cur,
+                                             char const *encoding,
+                                             gboolean format);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-in-doc-free">gsf_xml_in_doc_free</a>             (<a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a> *doc);
+            <a href="gsf-XML-and-libxml.html#GsfXMLBlob">GsfXMLBlob</a>;
+            <a href="gsf-XML-and-libxml.html#GsfXMLOut-struct">GsfXMLOut</a>;
+            <a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a>;
+            <a href="gsf-XML-and-libxml.html#GsfXMLInNS">GsfXMLInNS</a>;
+#define     <a href="gsf-XML-and-libxml.html#GSF-XML-IN-NODE-FULL:CAPS">GSF_XML_IN_NODE_FULL</a>            (parent_id, id, ns, name, has_content, 	\
+			     deprecated_unused_allow_unknown, check_ns, start, end, user)
+#define     <a href="gsf-XML-and-libxml.html#GSF-XML-IN-NODE:CAPS">GSF_XML_IN_NODE</a>                 (parent_id, id, ns, name, has_content, start, end)
+            <a href="gsf-XML-and-libxml.html#GsfXMLInNode">GsfXMLInNode</a>;
+gboolean    (<a href="gsf-XML-and-libxml.html#GsfXMLInUnknownFunc">*GsfXMLInUnknownFunc</a>)          (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> *state,
+                                             xmlChar const *elem,
+                                             xmlChar const **attrs);
+xmlParserCtxt* <a href="gsf-XML-and-libxml.html#gsf-xml-parser-context">gsf_xml_parser_context</a>       (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+<a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a>* <a href="gsf-XML-and-libxml.html#gsf-xml-in-doc-new">gsf_xml_in_doc_new</a>             (<a href="gsf-XML-and-libxml.html#GsfXMLInNode">GsfXMLInNode</a> *root,
+                                             <a href="gsf-XML-and-libxml.html#GsfXMLInNS">GsfXMLInNS</a> *ns);
+gboolean    <a href="gsf-XML-and-libxml.html#gsf-xml-in-namecmp">gsf_xml_in_namecmp</a>              (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> const *state,
+                                             char const *str,
+                                             unsigned int ns_id,
+                                             char const *name);
+gboolean    <a href="gsf-XML-and-libxml.html#gsf-xml-in-parse">gsf_xml_in_parse</a>                (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> *state,
+                                             <a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);
+charconst * <a href="gsf-XML-and-libxml.html#gsf-xml-in-check-ns">gsf_xml_in_check_ns</a>             (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> const *state,
+                                             char const *str,
+                                             unsigned int ns_id);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-in-doc-extend">gsf_xml_in_doc_extend</a>           (<a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a> *doc,
+                                             <a href="gsf-XML-and-libxml.html#GsfXMLInNode">GsfXMLInNode</a> *nodes);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-in-doc-set-unknown-handler">gsf_xml_in_doc_set_unknown_handler</a>
+                                            (<a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a> *doc,
+                                             <a href="gsf-XML-and-libxml.html#GsfXMLInUnknownFunc">GsfXMLInUnknownFunc</a> handler);
+<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a>*  <a href="gsf-XML-and-libxml.html#gsf-xml-out-new">gsf_xml_out_new</a>                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-set-doc-type">gsf_xml_out_set_doc_type</a>        (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *type);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-start-element">gsf_xml_out_start_element</a>       (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id);
+charconst * <a href="gsf-XML-and-libxml.html#gsf-xml-out-end-element">gsf_xml_out_end_element</a>         (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-cstr">gsf_xml_out_add_cstr</a>            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             char const *val_utf8);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-cstr-unchecked">gsf_xml_out_add_cstr_unchecked</a>  (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             char const *val_utf8);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-bool">gsf_xml_out_add_bool</a>            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             gboolean val);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-int">gsf_xml_out_add_int</a>             (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             int val);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-uint">gsf_xml_out_add_uint</a>            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             unsigned int val);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-float">gsf_xml_out_add_float</a>           (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             double val,
+                                             int precision);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-enum">gsf_xml_out_add_enum</a>            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             GType etype,
+                                             gint val);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-color">gsf_xml_out_add_color</a>           (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             unsigned int r,
+                                             unsigned int g,
+                                             unsigned int b);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-add-base64">gsf_xml_out_add_base64</a>          (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             guint8 const *data,
+                                             unsigned int len);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-simple-element">gsf_xml_out_simple_element</a>      (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             char const *content);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-simple-float-element">gsf_xml_out_simple_float_element</a>
+                                            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             double val,
+                                             int precision);
+void        <a href="gsf-XML-and-libxml.html#gsf-xml-out-simple-int-element">gsf_xml_out_simple_int_element</a>  (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             int val);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2540409"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----GsfXMLOut
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2540428"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2540438"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2540444"></a><h3>
+<a name="GSF-XML-IN-NS:CAPS"></a>GSF_XML_IN_NS()</h3>
+<a class="indexterm" name="id2540454"></a><pre class="programlisting">#define     GSF_XML_IN_NS(id, uri)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>uri</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540500"></a><h3>
+<a name="GsfXMLContent"></a>enum GsfXMLContent</h3>
+<a class="indexterm" name="id2540511"></a><pre class="programlisting">typedef enum {
+	GSF_XML_NO_CONTENT,
+	GSF_XML_CONTENT,
+	GSF_XML_SHARED_CONTENT
+} GsfXMLContent;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540527"></a><h3>
+<a name="GsfXMLIn"></a>GsfXMLIn</h3>
+<a class="indexterm" name="id2540537"></a><pre class="programlisting">typedef struct {
+	GsfXMLInDoc  const *doc;	/* init before parsing */
+
+    /* look but do not change */
+	GsfXMLInNode const *node;	/* current node */
+	GSList	 	   *state_stack;
+
+	GsfXMLInNS   const *default_ns;	/* optionally NULL */
+	GSList	 	   *ns_stack;
+
+	GString		*content;
+	gint		 unknown_depth;	/* handle recursive unknown tags */
+	GHashTable	*ns_prefixes;	/* current ns prefixes */
+	GPtrArray	*ns_by_id;		/* indexed by id */
+} GsfXMLIn;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540559"></a><h3>
+<a name="gsf-xmlDocFormatDump"></a>gsf_xmlDocFormatDump ()</h3>
+<a class="indexterm" name="id2540569"></a><pre class="programlisting">int         gsf_xmlDocFormatDump            (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output,
+                                             xmlDoc *cur,
+                                             char const *encoding,
+                                             gboolean format);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>cur</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>encoding</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>format</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540689"></a><h3>
+<a name="gsf-xml-in-doc-free"></a>gsf_xml_in_doc_free ()</h3>
+<a class="indexterm" name="id2540700"></a><pre class="programlisting">void        gsf_xml_in_doc_free             (<a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a> *doc);</pre>
+<p>
+Free up resources</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>doc</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540749"></a><h3>
+<a name="GsfXMLBlob"></a>GsfXMLBlob</h3>
+<a class="indexterm" name="id2540759"></a><pre class="programlisting">typedef struct _GsfXMLBlob GsfXMLBlob;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540774"></a><h3>
+<a name="GsfXMLOut-struct"></a>GsfXMLOut</h3>
+<a class="indexterm" name="id2540785"></a><pre class="programlisting">typedef struct _GsfXMLOut GsfXMLOut;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540800"></a><h3>
+<a name="GsfXMLInDoc"></a>GsfXMLInDoc</h3>
+<a class="indexterm" name="id2540809"></a><pre class="programlisting">typedef struct _GsfXMLInDoc GsfXMLInDoc;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540825"></a><h3>
+<a name="GsfXMLInNS"></a>GsfXMLInNS</h3>
+<a class="indexterm" name="id2540834"></a><pre class="programlisting">typedef struct {
+	char const *uri;
+	unsigned    ns_id;
+} GsfXMLInNS;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2540850"></a><h3>
+<a name="GSF-XML-IN-NODE-FULL:CAPS"></a>GSF_XML_IN_NODE_FULL()</h3>
+<a class="indexterm" name="id2540861"></a><pre class="programlisting">#define     GSF_XML_IN_NODE_FULL(parent_id, id, ns, name, has_content, 	\
+			     deprecated_unused_allow_unknown, check_ns, start, end, user)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent_id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>has_content</code></em>&#160;:</span></td>
+<td>
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown: 
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>check_ns</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>start</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>end</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541164"></a><h3>
+<a name="GSF-XML-IN-NODE:CAPS"></a>GSF_XML_IN_NODE()</h3>
+<a class="indexterm" name="id2541175"></a><pre class="programlisting">#define     GSF_XML_IN_NODE(parent_id, id, ns, name, has_content, start, end)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent_id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>has_content</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>start</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>end</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541289"></a><h3>
+<a name="GsfXMLInNode"></a>GsfXMLInNode</h3>
+<a class="indexterm" name="id2541299"></a><pre class="programlisting">typedef struct {
+	char const *id;
+	int	    ns_id;
+	char const *name;
+	char const *parent_id;
+	gboolean parent_initialized;
+	GSList *groups;
+
+	unsigned	has_content;
+	gboolean	deprecated_unused_allow_unknown; /* remains here for binary compat */
+	gboolean	check_children_for_ns;
+
+	void (*start) (GsfXMLIn *state, xmlChar const **attrs);
+	void (*end)   (GsfXMLIn *state, GsfXMLBlob *unknown);
+
+	union {
+		int	    v_int;
+		gboolean    v_bool;
+		gpointer    v_blob;
+		char const *v_str;
+	} user_data;
+} GsfXMLInNode;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541322"></a><h3>
+<a name="GsfXMLInUnknownFunc"></a>GsfXMLInUnknownFunc ()</h3>
+<a class="indexterm" name="id2541333"></a><pre class="programlisting">gboolean    (*GsfXMLInUnknownFunc)          (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> *state,
+                                             xmlChar const *elem,
+                                             xmlChar const **attrs);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>elem</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>attrs</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541431"></a><h3>
+<a name="gsf-xml-parser-context"></a>gsf_xml_parser_context ()</h3>
+<a class="indexterm" name="id2541442"></a><pre class="programlisting">xmlParserCtxt* gsf_xml_parser_context       (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+Create a libxml2 pull style parser context wrapper around a gsf input.
+This signature will probably change to supply a SAX structure.
+</p>
+<p>
+NOTE : adds a reference to <em class="parameter"><code>input</code></em>
+NOTE : a simple wrapper around a cleaner implementation that will fold in
+ when we add other api changes.  Its not worth bumping just for this</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: A parser context or NULL
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541516"></a><h3>
+<a name="gsf-xml-in-doc-new"></a>gsf_xml_in_doc_new ()</h3>
+<a class="indexterm" name="id2541527"></a><pre class="programlisting"><a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a>* gsf_xml_in_doc_new             (<a href="gsf-XML-and-libxml.html#GsfXMLInNode">GsfXMLInNode</a> *root,
+                                             <a href="gsf-XML-and-libxml.html#GsfXMLInNS">GsfXMLInNS</a> *ns);</pre>
+<p>
+Put the nodes in the NULL terminated array starting at <em class="parameter"><code>root</code></em> and the name
+spaces in the NULL terminated array starting at <em class="parameter"><code>ns</code></em> together.  Link them up
+and prepare the static data structures necessary to validate a doument based
+on that description.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>root</code></em>&#160;:</span></td>
+<td> an array of node descriptors
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns</code></em>&#160;:</span></td>
+<td> an array of namespace identifiers
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>NULL on error
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541625"></a><h3>
+<a name="gsf-xml-in-namecmp"></a>gsf_xml_in_namecmp ()</h3>
+<a class="indexterm" name="id2541635"></a><pre class="programlisting">gboolean    gsf_xml_in_namecmp              (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> const *state,
+                                             char const *str,
+                                             unsigned int ns_id,
+                                             char const *name);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em>&#160;:</span></td>
+<td> The <a href="gsf-XML-and-libxml.html#GsfXMLIn"><span class="type">GsfXMLIn</span></a> we are reading from.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>str</code></em>&#160;:</span></td>
+<td> The potentially namespace qualified node name.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns_id</code></em>&#160;:</span></td>
+<td> The name space id to check
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td> The target node name
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>TRUE if <em class="parameter"><code>str</code></em> == <em class="parameter"><code>ns_id</code></em>:<em class="parameter"><code>name</code></em> according to <em class="parameter"><code>state</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541792"></a><h3>
+<a name="gsf-xml-in-parse"></a>gsf_xml_in_parse ()</h3>
+<a class="indexterm" name="id2541803"></a><pre class="programlisting">gboolean    gsf_xml_in_parse                (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> *state,
+                                             <a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input);</pre>
+<p>
+Read an xml document from <em class="parameter"><code>input</code></em> and parse based on the the descriptor in
+<em class="parameter"><code>state</code></em>::doc</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>FALSE on error
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2541897"></a><h3>
+<a name="gsf-xml-in-check-ns"></a>gsf_xml_in_check_ns ()</h3>
+<a class="indexterm" name="id2541907"></a><pre class="programlisting">charconst * gsf_xml_in_check_ns             (<a href="gsf-XML-and-libxml.html#GsfXMLIn">GsfXMLIn</a> const *state,
+                                             char const *str,
+                                             unsigned int ns_id);</pre>
+<p>
+According to <em class="parameter"><code>state</code></em> is <em class="parameter"><code>str</code></em> in the namespace <em class="parameter"><code>ns_id</code></em> ?</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>str</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns_id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a pointer to <em class="parameter"><code>str</code></em> after the namespace if successful,
+otherwise NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542033"></a><h3>
+<a name="gsf-xml-in-doc-extend"></a>gsf_xml_in_doc_extend ()</h3>
+<a class="indexterm" name="id2542043"></a><pre class="programlisting">void        gsf_xml_in_doc_extend           (<a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a> *doc,
+                                             <a href="gsf-XML-and-libxml.html#GsfXMLInNode">GsfXMLInNode</a> *nodes);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>doc</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>nodes</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542111"></a><h3>
+<a name="gsf-xml-in-doc-set-unknown-handler"></a>gsf_xml_in_doc_set_unknown_handler ()</h3>
+<a class="indexterm" name="id2542122"></a><pre class="programlisting">void        gsf_xml_in_doc_set_unknown_handler
+                                            (<a href="gsf-XML-and-libxml.html#GsfXMLInDoc">GsfXMLInDoc</a> *doc,
+                                             <a href="gsf-XML-and-libxml.html#GsfXMLInUnknownFunc">GsfXMLInUnknownFunc</a> handler);</pre>
+<p>
+Call the function <em class="parameter"><code>handler</code></em> when an unexpected child node is found</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>doc</code></em>&#160;:</span></td>
+<td> <a href="gsf-XML-and-libxml.html#GsfXMLInDoc"><span class="type">GsfXMLInDoc</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>handler</code></em>&#160;:</span></td>
+<td> The function to call
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542208"></a><h3>
+<a name="gsf-xml-out-new"></a>gsf_xml_out_new ()</h3>
+<a class="indexterm" name="id2542219"></a><pre class="programlisting"><a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a>*  gsf_xml_out_new                 (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *output);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>output</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542275"></a><h3>
+<a name="gsf-xml-out-set-doc-type"></a>gsf_xml_out_set_doc_type ()</h3>
+<a class="indexterm" name="id2542286"></a><pre class="programlisting">void        gsf_xml_out_set_doc_type        (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *type);</pre>
+<p>
+Store some optional some &lt;!DOCTYPE .. &gt; content</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td> <a href="gsf-XML-and-libxml.html#GsfXMLOut"><span class="type">GsfXMLOut</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>type</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542365"></a><h3>
+<a name="gsf-xml-out-start-element"></a>gsf_xml_out_start_element ()</h3>
+<a class="indexterm" name="id2542376"></a><pre class="programlisting">void        gsf_xml_out_start_element       (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542443"></a><h3>
+<a name="gsf-xml-out-end-element"></a>gsf_xml_out_end_element ()</h3>
+<a class="indexterm" name="id2542454"></a><pre class="programlisting">charconst * gsf_xml_out_end_element         (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542510"></a><h3>
+<a name="gsf-xml-out-add-cstr"></a>gsf_xml_out_add_cstr ()</h3>
+<a class="indexterm" name="id2542520"></a><pre class="programlisting">void        gsf_xml_out_add_cstr            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             char const *val_utf8);</pre>
+<p>
+dump <em class="parameter"><code>val_utf8</code></em> to an attribute named <em class="parameter"><code>id</code></em> or as the nodes content escaping
+characters as necessary.  If <em class="parameter"><code>val_utf8</code></em> is NULL do nothing (no warning, no
+output)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val_utf8</code></em>&#160;:</span></td>
+<td> a utf8 encoded string
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542632"></a><h3>
+<a name="gsf-xml-out-add-cstr-unchecked"></a>gsf_xml_out_add_cstr_unchecked ()</h3>
+<a class="indexterm" name="id2542644"></a><pre class="programlisting">void        gsf_xml_out_add_cstr_unchecked  (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             char const *val_utf8);</pre>
+<p>
+dump <em class="parameter"><code>val_utf8</code></em> to an attribute named <em class="parameter"><code>id</code></em> without checking to see if the
+content needs escaping.  A useful performance enhancement when the
+application knows that structure of the content well.  If <em class="parameter"><code>val_utf8</code></em> is NULL
+do nothing (no warning, no output)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val_utf8</code></em>&#160;:</span></td>
+<td> a utf8 encoded string to export
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542758"></a><h3>
+<a name="gsf-xml-out-add-bool"></a>gsf_xml_out_add_bool ()</h3>
+<a class="indexterm" name="id2542769"></a><pre class="programlisting">void        gsf_xml_out_add_bool            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             gboolean val);</pre>
+<p>
+dump boolean value <em class="parameter"><code>val</code></em> to an attribute named <em class="parameter"><code>id</code></em> or as the nodes content
+Use '1' or '0' to simplify import</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td> a boolean
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542874"></a><h3>
+<a name="gsf-xml-out-add-int"></a>gsf_xml_out_add_int ()</h3>
+<a class="indexterm" name="id2542885"></a><pre class="programlisting">void        gsf_xml_out_add_int             (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             int val);</pre>
+<p>
+dump integer value <em class="parameter"><code>val</code></em> to an attribute named <em class="parameter"><code>id</code></em> or as the nodes content</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td> the value
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2542988"></a><h3>
+<a name="gsf-xml-out-add-uint"></a>gsf_xml_out_add_uint ()</h3>
+<a class="indexterm" name="id2542999"></a><pre class="programlisting">void        gsf_xml_out_add_uint            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             unsigned int val);</pre>
+<p>
+dump unsigned integer value <em class="parameter"><code>val</code></em> to an attribute named <em class="parameter"><code>id</code></em> or as the nodes
+content</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td> the value
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2543103"></a><h3>
+<a name="gsf-xml-out-add-float"></a>gsf_xml_out_add_float ()</h3>
+<a class="indexterm" name="id2543114"></a><pre class="programlisting">void        gsf_xml_out_add_float           (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             double val,
+                                             int precision);</pre>
+<p>
+dump float value <em class="parameter"><code>val</code></em> to an attribute named <em class="parameter"><code>id</code></em> or as the nodes
+content with precision <em class="parameter"><code>precision</code></em>.  The number will be formattted
+according to the "C" locale.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td> the value
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>precision</code></em>&#160;:</span></td>
+<td> the number of significant digits to use, -1 meaning "enough".
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2543247"></a><h3>
+<a name="gsf-xml-out-add-enum"></a>gsf_xml_out_add_enum ()</h3>
+<a class="indexterm" name="id2543258"></a><pre class="programlisting">void        gsf_xml_out_add_enum            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             GType etype,
+                                             gint val);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>etype</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2543367"></a><h3>
+<a name="gsf-xml-out-add-color"></a>gsf_xml_out_add_color ()</h3>
+<a class="indexterm" name="id2543378"></a><pre class="programlisting">void        gsf_xml_out_add_color           (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             unsigned int r,
+                                             unsigned int g,
+                                             unsigned int b);</pre>
+<p>
+dump Color <em class="parameter"><code>r</code></em>.<em class="parameter"><code>g</code></em>.<em class="parameter"><code>b</code></em> to an attribute named <em class="parameter"><code>id</code></em> or as the nodes content</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>r</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>g</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>b</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2543534"></a><h3>
+<a name="gsf-xml-out-add-base64"></a>gsf_xml_out_add_base64 ()</h3>
+<a class="indexterm" name="id2543544"></a><pre class="programlisting">void        gsf_xml_out_add_base64          (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             guint8 const *data,
+                                             unsigned int len);</pre>
+<p>
+dump <em class="parameter"><code>len</code></em> bytes in <em class="parameter"><code>data</code></em> into the content of node <em class="parameter"><code>id</code></em> using base64</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2543675"></a><h3>
+<a name="gsf-xml-out-simple-element"></a>gsf_xml_out_simple_element ()</h3>
+<a class="indexterm" name="id2543686"></a><pre class="programlisting">void        gsf_xml_out_simple_element      (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             char const *content);</pre>
+<p>
+A convenience routine</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>content</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2543778"></a><h3>
+<a name="gsf-xml-out-simple-float-element"></a>gsf_xml_out_simple_float_element ()</h3>
+<a class="indexterm" name="id2543789"></a><pre class="programlisting">void        gsf_xml_out_simple_float_element
+                                            (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             double val,
+                                             int precision);</pre>
+<p>
+A convenience routine</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>precision</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2543902"></a><h3>
+<a name="gsf-xml-out-simple-int-element"></a>gsf_xml_out_simple_int_element ()</h3>
+<a class="indexterm" name="id2543914"></a><pre class="programlisting">void        gsf_xml_out_simple_int_element  (<a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a> *xml,
+                                             char const *id,
+                                             int val);</pre>
+<p>
+A convenience routine</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>xml</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Text.html"><b>&lt;&lt;&#160;Text</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Zip.html"><b>Zip&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Zip.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Zip.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-Zip.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1079 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Zip</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-XML-and-libxml.html" title="XML and libxml">
+<link rel="next" href="gsf-Compression.html" title="Compression">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-XML-and-libxml.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Compression.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-Zip"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">Zip</span></h2>
+<p>Zip &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInfileZip"></a><a name="GsfOutfileZip"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-Zip.html#GsfInfileZip-struct">GsfInfileZip</a>;
+<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  <a href="gsf-Zip.html#gsf-infile-zip-new">gsf_infile_zip_new</a>              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);
+            <a href="gsf-Zip.html#GsfOutfileZip-struct">GsfOutfileZip</a>;
+<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* <a href="gsf-Zip.html#gsf-outfile-zip-new">gsf_outfile_zip_new</a>             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             GError **err);
+gboolean    <a href="gsf-Zip.html#gsf-outfile-zip-set-compression-method">gsf_outfile_zip_set_compression_method</a>
+                                            (<a href="gsf-Zip.html#GsfOutfileZip">GsfOutfileZip</a> *zip,
+                                             <a href="gsf-Zip.html#GsfZipCompressionMethod">GsfZipCompressionMethod</a> method);
+
+
+            <a href="gsf-Zip.html#GsfZipDirent">GsfZipDirent</a>;
+<a href="gsf-Zip.html#GsfZipDirent">GsfZipDirent</a>* <a href="gsf-Zip.html#gsf-zip-dirent-new">gsf_zip_dirent_new</a>            (void);
+void        <a href="gsf-Zip.html#gsf-zip-dirent-free">gsf_zip_dirent_free</a>             (<a href="gsf-Zip.html#GsfZipDirent">GsfZipDirent</a> *dirent);
+            <a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a>;
+void        <a href="gsf-Zip.html#gsf-vdir-free">gsf_vdir_free</a>                   (<a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a> *vdir,
+                                             gboolean free_dirent);
+<a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a>* <a href="gsf-Zip.html#gsf-vdir-new">gsf_vdir_new</a>                    (char const *name,
+                                             gboolean is_directory,
+                                             <a href="gsf-Zip.html#GsfZipDirent">GsfZipDirent</a> *dirent);
+void        <a href="gsf-Zip.html#gsf-vdir-add-child">gsf_vdir_add_child</a>              (<a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a> *vdir,
+                                             <a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a> *child);
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-USIZE:CAPS">ZIP_DIRENT_USIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-OFFSET:CAPS">ZIP_DIRENT_OFFSET</a>
+enum        <a href="gsf-Zip.html#GsfZipCompressionMethod">GsfZipCompressionMethod</a>;
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-NAME-SIZE:CAPS">ZIP_FILE_HEADER_NAME_SIZE</a>
+#define     <a href="gsf-Zip.html#ZZIP-IS-STREAMED:CAPS">ZZIP_IS_STREAMED</a>                (p)
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-EXTRACT:CAPS">ZIP_FILE_HEADER_EXTRACT</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-SIZE:CAPS">ZIP_TRAILER_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-TIME:CAPS">ZIP_HEADER_TIME</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-SIZE:CAPS">ZIP_FILE_HEADER_SIZE</a>
+#define     <a href="gsf-Zip.html#ZZIP-IS-ENCRYPTED:CAPS">ZZIP_IS_ENCRYPTED</a>               (p)
+#define     <a href="gsf-Zip.html#ZIP-HEADER-VERSION:CAPS">ZIP_HEADER_VERSION</a>
+#define     <a href="gsf-Zip.html#ZIP-BUF-SIZE:CAPS">ZIP_BUF_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-CRC32:CAPS">ZIP_DIRENT_CRC32</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-COMP-SIZE:CAPS">ZIP_HEADER_COMP_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-COMPR-METHOD:CAPS">ZIP_DIRENT_COMPR_METHOD</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-FILE-TYPE:CAPS">ZIP_DIRENT_FILE_TYPE</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-EXTRAS-SIZE:CAPS">ZIP_FILE_HEADER_EXTRAS_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-EXTRACT:CAPS">ZIP_DIRENT_EXTRACT</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-FILE-MODE:CAPS">ZIP_DIRENT_FILE_MODE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-FLAGS:CAPS">ZIP_DIRENT_FLAGS</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-CSIZE:CAPS">ZIP_FILE_HEADER_CSIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-DIR-SIZE:CAPS">ZIP_TRAILER_DIR_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-COMMENT-SIZE:CAPS">ZIP_TRAILER_COMMENT_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-ENTRIES:CAPS">ZIP_TRAILER_ENTRIES</a>
+#define     <a href="gsf-Zip.html#ZIP-NAME-SEPARATOR:CAPS">ZIP_NAME_SEPARATOR</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-SIZE:CAPS">ZIP_HEADER_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-CRC:CAPS">ZIP_HEADER_CRC</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-FLAGS:CAPS">ZIP_FILE_HEADER_FLAGS</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-EXTRAS-SIZE:CAPS">ZIP_DIRENT_EXTRAS_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-COMP-METHOD:CAPS">ZIP_HEADER_COMP_METHOD</a>
+#define     <a href="gsf-Zip.html#ZZIP-IS-COMPRLEVEL:CAPS">ZZIP_IS_COMPRLEVEL</a>              (p)
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-DOSTIME:CAPS">ZIP_DIRENT_DOSTIME</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-ENCODER:CAPS">ZIP_DIRENT_ENCODER</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-OS:CAPS">ZIP_HEADER_OS</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-COMMENT-SIZE:CAPS">ZIP_DIRENT_COMMENT_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-CRC32:CAPS">ZIP_FILE_HEADER_CRC32</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-FLAGS:CAPS">ZIP_HEADER_FLAGS</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-DISK:CAPS">ZIP_TRAILER_DISK</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-USIZE:CAPS">ZIP_FILE_HEADER_USIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-TOTAL-ENTRIES:CAPS">ZIP_TRAILER_TOTAL_ENTRIES</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-NAME-LEN:CAPS">ZIP_HEADER_NAME_LEN</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-UNCOMP-SIZE:CAPS">ZIP_HEADER_UNCOMP_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-DIR-DISK:CAPS">ZIP_TRAILER_DIR_DISK</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-CSIZE:CAPS">ZIP_DIRENT_CSIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-TRAILER-DIR-POS:CAPS">ZIP_TRAILER_DIR_POS</a>
+#define     <a href="gsf-Zip.html#ZIP-BLOCK-SIZE:CAPS">ZIP_BLOCK_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-NAME-SIZE:CAPS">ZIP_DIRENT_NAME_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-SIZE:CAPS">ZIP_DIRENT_SIZE</a>
+#define     <a href="gsf-Zip.html#ZIP-DIRENT-DISKSTART:CAPS">ZIP_DIRENT_DISKSTART</a>
+#define     <a href="gsf-Zip.html#ZIP-HEADER-EXTRA-LEN:CAPS">ZIP_HEADER_EXTRA_LEN</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-COMPR-METHOD:CAPS">ZIP_FILE_HEADER_COMPR_METHOD</a>
+#define     <a href="gsf-Zip.html#ZIP-FILE-HEADER-DOSTIME:CAPS">ZIP_FILE_HEADER_DOSTIME</a>
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2549250"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----<a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>
+               +----GsfInfileZip
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----<a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>
+               +----GsfOutfileZip
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2549310"></a><h2>Properties</h2>
+<pre class="synopsis">
+
+  "<a href="gsf-Zip.html#GsfInfileZip--compression-level">compression-level</a>"    gint                  : Read
+  "<a href="gsf-Zip.html#GsfInfileZip--internal-parent">internal-parent</a>"      <a href="gsf-Zip.html#GsfInfileZip">GsfInfileZip</a>          : Write / Construct Only
+  "<a href="gsf-Zip.html#GsfInfileZip--source">source</a>"               <a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>              : Read / Write / Construct Only
+  "<a href="gsf-Zip.html#GsfOutfileZip--compression-level">compression-level</a>"    gint                  : Read / Write / Construct Only
+  "<a href="gsf-Zip.html#GsfOutfileZip--entry-name">entry-name</a>"           gchararray            : Read / Write / Construct Only
+  "<a href="gsf-Zip.html#GsfOutfileZip--sink">sink</a>"                 <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>             : Read / Write / Construct Only
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2549428"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2549437"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2549443"></a><h3>
+<a name="GsfInfileZip-struct"></a>GsfInfileZip</h3>
+<a class="indexterm" name="id2549453"></a><pre class="programlisting">typedef struct _GsfInfileZip GsfInfileZip;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549469"></a><h3>
+<a name="gsf-infile-zip-new"></a>gsf_infile_zip_new ()</h3>
+<a class="indexterm" name="id2549480"></a><pre class="programlisting"><a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>*  gsf_infile_zip_new              (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *source,
+                                             GError **err);</pre>
+<p>
+Opens the root directory of a Zip file.
+NOTE : adds a reference to <em class="parameter"><code>source</code></em></p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>source</code></em>&#160;:</span></td>
+<td> A base <a href="gsf-Input-from-unstructured-files.html#GsfInput"><span class="type">GsfInput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> A <span class="type">GError</span>, optionally <code class="literal">null</code>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: the new zip file handler
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549588"></a><h3>
+<a name="GsfOutfileZip-struct"></a>GsfOutfileZip</h3>
+<a class="indexterm" name="id2549599"></a><pre class="programlisting">typedef struct _GsfOutfileZip GsfOutfileZip;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549615"></a><h3>
+<a name="gsf-outfile-zip-new"></a>gsf_outfile_zip_new ()</h3>
+<a class="indexterm" name="id2549625"></a><pre class="programlisting"><a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>* gsf_outfile_zip_new             (<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a> *sink,
+                                             GError **err);</pre>
+<p>
+Creates the root directory of a Zip file and manages the addition of
+children.
+</p>
+<p>
+NOTE : adds a reference to <em class="parameter"><code>sink</code></em></p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sink</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>: the new zip file handler
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549715"></a><h3>
+<a name="gsf-outfile-zip-set-compression-method"></a>gsf_outfile_zip_set_compression_method ()</h3>
+<a class="indexterm" name="id2549726"></a><pre class="programlisting">gboolean    gsf_outfile_zip_set_compression_method
+                                            (<a href="gsf-Zip.html#GsfOutfileZip">GsfOutfileZip</a> *zip,
+                                             <a href="gsf-Zip.html#GsfZipCompressionMethod">GsfZipCompressionMethod</a> method);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>zip</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>method</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549806"></a><h3>
+<a name="GsfZipDirent"></a>GsfZipDirent</h3>
+<a class="indexterm" name="id2549816"></a><pre class="programlisting">typedef struct {
+	char                    *name;
+	GsfZipCompressionMethod  compr_method;
+	guint32                  crc32;
+	size_t                   csize;
+	size_t                   usize;
+	gsf_off_t                offset;
+	gsf_off_t                data_offset;
+	guint32                  dostime;
+} GsfZipDirent;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549836"></a><h3>
+<a name="gsf-zip-dirent-new"></a>gsf_zip_dirent_new ()</h3>
+<a class="indexterm" name="id2549846"></a><pre class="programlisting"><a href="gsf-Zip.html#GsfZipDirent">GsfZipDirent</a>* gsf_zip_dirent_new            (void);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549882"></a><h3>
+<a name="gsf-zip-dirent-free"></a>gsf_zip_dirent_free ()</h3>
+<a class="indexterm" name="id2549893"></a><pre class="programlisting">void        gsf_zip_dirent_free             (<a href="gsf-Zip.html#GsfZipDirent">GsfZipDirent</a> *dirent);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>dirent</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549939"></a><h3>
+<a name="GsfZipVDir"></a>GsfZipVDir</h3>
+<a class="indexterm" name="id2549949"></a><pre class="programlisting">typedef struct {
+	char *name;
+	gboolean is_directory;
+	GsfZipDirent *dirent;
+	GSList *children, *last_child;
+} GsfZipVDir;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2549966"></a><h3>
+<a name="gsf-vdir-free"></a>gsf_vdir_free ()</h3>
+<a class="indexterm" name="id2549976"></a><pre class="programlisting">void        gsf_vdir_free                   (<a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a> *vdir,
+                                             gboolean free_dirent);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>vdir</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>free_dirent</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550043"></a><h3>
+<a name="gsf-vdir-new"></a>gsf_vdir_new ()</h3>
+<a class="indexterm" name="id2550054"></a><pre class="programlisting"><a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a>* gsf_vdir_new                    (char const *name,
+                                             gboolean is_directory,
+                                             <a href="gsf-Zip.html#GsfZipDirent">GsfZipDirent</a> *dirent);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>is_directory</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dirent</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550152"></a><h3>
+<a name="gsf-vdir-add-child"></a>gsf_vdir_add_child ()</h3>
+<a class="indexterm" name="id2550164"></a><pre class="programlisting">void        gsf_vdir_add_child              (<a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a> *vdir,
+                                             <a href="gsf-Zip.html#GsfZipVDir">GsfZipVDir</a> *child);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>vdir</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>child</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550230"></a><h3>
+<a name="ZIP-DIRENT-USIZE:CAPS"></a>ZIP_DIRENT_USIZE</h3>
+<a class="indexterm" name="id2550241"></a><pre class="programlisting">#define ZIP_DIRENT_USIZE                24
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550257"></a><h3>
+<a name="ZIP-DIRENT-OFFSET:CAPS"></a>ZIP_DIRENT_OFFSET</h3>
+<a class="indexterm" name="id2550267"></a><pre class="programlisting">#define ZIP_DIRENT_OFFSET               42
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550283"></a><h3>
+<a name="GsfZipCompressionMethod"></a>enum GsfZipCompressionMethod</h3>
+<a class="indexterm" name="id2550293"></a><pre class="programlisting">typedef enum {
+	GSF_ZIP_STORED =          0,		/* supported for export */
+	GSF_ZIP_SHRUNK =          1,
+	GSF_ZIP_REDUCEDx1 =       2,
+	GSF_ZIP_REDUCEDx2 =       3,
+	GSF_ZIP_REDUCEDx3 =       4,
+	GSF_ZIP_REDUCEDx4 =       5,
+	GSF_ZIP_IMPLODED  =       6,
+	GSF_ZIP_TOKENIZED =       7,
+	GSF_ZIP_DEFLATED =        8,		/* supported for export */
+	GSF_ZIP_DEFLATED_BETTER = 9,
+	GSF_ZIP_IMPLODED_BETTER = 10
+} GsfZipCompressionMethod;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550315"></a><h3>
+<a name="ZIP-FILE-HEADER-NAME-SIZE:CAPS"></a>ZIP_FILE_HEADER_NAME_SIZE</h3>
+<a class="indexterm" name="id2550326"></a><pre class="programlisting">#define ZIP_FILE_HEADER_NAME_SIZE       26
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550342"></a><h3>
+<a name="ZZIP-IS-STREAMED:CAPS"></a>ZZIP_IS_STREAMED()</h3>
+<a class="indexterm" name="id2550353"></a><pre class="programlisting">#define ZZIP_IS_STREAMED(p)    (((*(unsigned char*)p)&gt;&gt;3)&amp;1)
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550388"></a><h3>
+<a name="ZIP-FILE-HEADER-EXTRACT:CAPS"></a>ZIP_FILE_HEADER_EXTRACT</h3>
+<a class="indexterm" name="id2550398"></a><pre class="programlisting">#define ZIP_FILE_HEADER_EXTRACT          4
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550414"></a><h3>
+<a name="ZIP-TRAILER-SIZE:CAPS"></a>ZIP_TRAILER_SIZE</h3>
+<a class="indexterm" name="id2550426"></a><pre class="programlisting">#define ZIP_TRAILER_SIZE 		22
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550440"></a><h3>
+<a name="ZIP-HEADER-TIME:CAPS"></a>ZIP_HEADER_TIME</h3>
+<a class="indexterm" name="id2550451"></a><pre class="programlisting">#define ZIP_HEADER_TIME                 10
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550467"></a><h3>
+<a name="ZIP-FILE-HEADER-SIZE:CAPS"></a>ZIP_FILE_HEADER_SIZE</h3>
+<a class="indexterm" name="id2550477"></a><pre class="programlisting">#define ZIP_FILE_HEADER_SIZE            30
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550493"></a><h3>
+<a name="ZZIP-IS-ENCRYPTED:CAPS"></a>ZZIP_IS_ENCRYPTED()</h3>
+<a class="indexterm" name="id2550504"></a><pre class="programlisting">#define ZZIP_IS_ENCRYPTED(p)    ((*(unsigned char*)p)&amp;1)
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550538"></a><h3>
+<a name="ZIP-HEADER-VERSION:CAPS"></a>ZIP_HEADER_VERSION</h3>
+<a class="indexterm" name="id2550548"></a><pre class="programlisting">#define ZIP_HEADER_VERSION 		 4
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550564"></a><h3>
+<a name="ZIP-BUF-SIZE:CAPS"></a>ZIP_BUF_SIZE</h3>
+<a class="indexterm" name="id2550573"></a><pre class="programlisting">#define ZIP_BUF_SIZE 512
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550588"></a><h3>
+<a name="ZIP-DIRENT-CRC32:CAPS"></a>ZIP_DIRENT_CRC32</h3>
+<a class="indexterm" name="id2550600"></a><pre class="programlisting">#define ZIP_DIRENT_CRC32                16
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550615"></a><h3>
+<a name="ZIP-HEADER-COMP-SIZE:CAPS"></a>ZIP_HEADER_COMP_SIZE</h3>
+<a class="indexterm" name="id2550626"></a><pre class="programlisting">#define ZIP_HEADER_COMP_SIZE		18
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550641"></a><h3>
+<a name="ZIP-DIRENT-COMPR-METHOD:CAPS"></a>ZIP_DIRENT_COMPR_METHOD</h3>
+<a class="indexterm" name="id2550653"></a><pre class="programlisting">#define ZIP_DIRENT_COMPR_METHOD         10
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550668"></a><h3>
+<a name="ZIP-DIRENT-FILE-TYPE:CAPS"></a>ZIP_DIRENT_FILE_TYPE</h3>
+<a class="indexterm" name="id2550679"></a><pre class="programlisting">#define ZIP_DIRENT_FILE_TYPE            36
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550695"></a><h3>
+<a name="ZIP-FILE-HEADER-EXTRAS-SIZE:CAPS"></a>ZIP_FILE_HEADER_EXTRAS_SIZE</h3>
+<a class="indexterm" name="id2550706"></a><pre class="programlisting">#define ZIP_FILE_HEADER_EXTRAS_SIZE     28
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550722"></a><h3>
+<a name="ZIP-DIRENT-EXTRACT:CAPS"></a>ZIP_DIRENT_EXTRACT</h3>
+<a class="indexterm" name="id2550733"></a><pre class="programlisting">#define ZIP_DIRENT_EXTRACT              6
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550748"></a><h3>
+<a name="ZIP-DIRENT-FILE-MODE:CAPS"></a>ZIP_DIRENT_FILE_MODE</h3>
+<a class="indexterm" name="id2550759"></a><pre class="programlisting">#define ZIP_DIRENT_FILE_MODE            38
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550775"></a><h3>
+<a name="ZIP-DIRENT-FLAGS:CAPS"></a>ZIP_DIRENT_FLAGS</h3>
+<a class="indexterm" name="id2550786"></a><pre class="programlisting">#define ZIP_DIRENT_FLAGS                8
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550802"></a><h3>
+<a name="ZIP-FILE-HEADER-CSIZE:CAPS"></a>ZIP_FILE_HEADER_CSIZE</h3>
+<a class="indexterm" name="id2550812"></a><pre class="programlisting">#define ZIP_FILE_HEADER_CSIZE           18
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550827"></a><h3>
+<a name="ZIP-TRAILER-DIR-SIZE:CAPS"></a>ZIP_TRAILER_DIR_SIZE</h3>
+<a class="indexterm" name="id2550838"></a><pre class="programlisting">#define ZIP_TRAILER_DIR_SIZE 		12
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550853"></a><h3>
+<a name="ZIP-TRAILER-COMMENT-SIZE:CAPS"></a>ZIP_TRAILER_COMMENT_SIZE</h3>
+<a class="indexterm" name="id2550865"></a><pre class="programlisting">#define ZIP_TRAILER_COMMENT_SIZE	20
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550881"></a><h3>
+<a name="ZIP-TRAILER-ENTRIES:CAPS"></a>ZIP_TRAILER_ENTRIES</h3>
+<a class="indexterm" name="id2550892"></a><pre class="programlisting">#define ZIP_TRAILER_ENTRIES 		8
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550907"></a><h3>
+<a name="ZIP-NAME-SEPARATOR:CAPS"></a>ZIP_NAME_SEPARATOR</h3>
+<a class="indexterm" name="id2550918"></a><pre class="programlisting">#define ZIP_NAME_SEPARATOR    '/'
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550933"></a><h3>
+<a name="ZIP-HEADER-SIZE:CAPS"></a>ZIP_HEADER_SIZE</h3>
+<a class="indexterm" name="id2550944"></a><pre class="programlisting">#define ZIP_HEADER_SIZE 		30
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550959"></a><h3>
+<a name="ZIP-HEADER-CRC:CAPS"></a>ZIP_HEADER_CRC</h3>
+<a class="indexterm" name="id2550969"></a><pre class="programlisting">#define ZIP_HEADER_CRC 			14
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2550985"></a><h3>
+<a name="ZIP-FILE-HEADER-FLAGS:CAPS"></a>ZIP_FILE_HEADER_FLAGS</h3>
+<a class="indexterm" name="id2550996"></a><pre class="programlisting">#define ZIP_FILE_HEADER_FLAGS            6
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551011"></a><h3>
+<a name="ZIP-DIRENT-EXTRAS-SIZE:CAPS"></a>ZIP_DIRENT_EXTRAS_SIZE</h3>
+<a class="indexterm" name="id2551022"></a><pre class="programlisting">#define ZIP_DIRENT_EXTRAS_SIZE          30
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551038"></a><h3>
+<a name="ZIP-HEADER-COMP-METHOD:CAPS"></a>ZIP_HEADER_COMP_METHOD</h3>
+<a class="indexterm" name="id2551049"></a><pre class="programlisting">#define ZIP_HEADER_COMP_METHOD           8
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551065"></a><h3>
+<a name="ZZIP-IS-COMPRLEVEL:CAPS"></a>ZZIP_IS_COMPRLEVEL()</h3>
+<a class="indexterm" name="id2551075"></a><pre class="programlisting">#define ZZIP_IS_COMPRLEVEL(p)  (((*(unsigned char*)p)&gt;&gt;1)&amp;3)
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551110"></a><h3>
+<a name="ZIP-DIRENT-DOSTIME:CAPS"></a>ZIP_DIRENT_DOSTIME</h3>
+<a class="indexterm" name="id2551121"></a><pre class="programlisting">#define ZIP_DIRENT_DOSTIME              12
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551136"></a><h3>
+<a name="ZIP-DIRENT-ENCODER:CAPS"></a>ZIP_DIRENT_ENCODER</h3>
+<a class="indexterm" name="id2551147"></a><pre class="programlisting">#define ZIP_DIRENT_ENCODER              4
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551162"></a><h3>
+<a name="ZIP-HEADER-OS:CAPS"></a>ZIP_HEADER_OS</h3>
+<a class="indexterm" name="id2551172"></a><pre class="programlisting">#define ZIP_HEADER_OS	 		 5
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551187"></a><h3>
+<a name="ZIP-DIRENT-COMMENT-SIZE:CAPS"></a>ZIP_DIRENT_COMMENT_SIZE</h3>
+<a class="indexterm" name="id2551199"></a><pre class="programlisting">#define ZIP_DIRENT_COMMENT_SIZE         32
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551215"></a><h3>
+<a name="ZIP-FILE-HEADER-CRC32:CAPS"></a>ZIP_FILE_HEADER_CRC32</h3>
+<a class="indexterm" name="id2551226"></a><pre class="programlisting">#define ZIP_FILE_HEADER_CRC32           14
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551242"></a><h3>
+<a name="ZIP-HEADER-FLAGS:CAPS"></a>ZIP_HEADER_FLAGS</h3>
+<a class="indexterm" name="id2551253"></a><pre class="programlisting">#define ZIP_HEADER_FLAGS 	         6
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551268"></a><h3>
+<a name="ZIP-TRAILER-DISK:CAPS"></a>ZIP_TRAILER_DISK</h3>
+<a class="indexterm" name="id2551279"></a><pre class="programlisting">#define ZIP_TRAILER_DISK 		4
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551294"></a><h3>
+<a name="ZIP-FILE-HEADER-USIZE:CAPS"></a>ZIP_FILE_HEADER_USIZE</h3>
+<a class="indexterm" name="id2551305"></a><pre class="programlisting">#define ZIP_FILE_HEADER_USIZE           22
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551320"></a><h3>
+<a name="ZIP-TRAILER-TOTAL-ENTRIES:CAPS"></a>ZIP_TRAILER_TOTAL_ENTRIES</h3>
+<a class="indexterm" name="id2551332"></a><pre class="programlisting">#define ZIP_TRAILER_TOTAL_ENTRIES 	10
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551347"></a><h3>
+<a name="ZIP-HEADER-NAME-LEN:CAPS"></a>ZIP_HEADER_NAME_LEN</h3>
+<a class="indexterm" name="id2551359"></a><pre class="programlisting">#define ZIP_HEADER_NAME_LEN		26
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551373"></a><h3>
+<a name="ZIP-HEADER-UNCOMP-SIZE:CAPS"></a>ZIP_HEADER_UNCOMP_SIZE</h3>
+<a class="indexterm" name="id2551384"></a><pre class="programlisting">#define ZIP_HEADER_UNCOMP_SIZE          22
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551400"></a><h3>
+<a name="ZIP-TRAILER-DIR-DISK:CAPS"></a>ZIP_TRAILER_DIR_DISK</h3>
+<a class="indexterm" name="id2551411"></a><pre class="programlisting">#define ZIP_TRAILER_DIR_DISK 		6
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551426"></a><h3>
+<a name="ZIP-DIRENT-CSIZE:CAPS"></a>ZIP_DIRENT_CSIZE</h3>
+<a class="indexterm" name="id2551438"></a><pre class="programlisting">#define ZIP_DIRENT_CSIZE                20
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551453"></a><h3>
+<a name="ZIP-TRAILER-DIR-POS:CAPS"></a>ZIP_TRAILER_DIR_POS</h3>
+<a class="indexterm" name="id2551464"></a><pre class="programlisting">#define ZIP_TRAILER_DIR_POS 		16
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551479"></a><h3>
+<a name="ZIP-BLOCK-SIZE:CAPS"></a>ZIP_BLOCK_SIZE</h3>
+<a class="indexterm" name="id2551489"></a><pre class="programlisting">#define ZIP_BLOCK_SIZE 32768
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551504"></a><h3>
+<a name="ZIP-DIRENT-NAME-SIZE:CAPS"></a>ZIP_DIRENT_NAME_SIZE</h3>
+<a class="indexterm" name="id2551515"></a><pre class="programlisting">#define ZIP_DIRENT_NAME_SIZE            28
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551530"></a><h3>
+<a name="ZIP-DIRENT-SIZE:CAPS"></a>ZIP_DIRENT_SIZE</h3>
+<a class="indexterm" name="id2551542"></a><pre class="programlisting">#define ZIP_DIRENT_SIZE                 46
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551557"></a><h3>
+<a name="ZIP-DIRENT-DISKSTART:CAPS"></a>ZIP_DIRENT_DISKSTART</h3>
+<a class="indexterm" name="id2551567"></a><pre class="programlisting">#define ZIP_DIRENT_DISKSTART            34
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551583"></a><h3>
+<a name="ZIP-HEADER-EXTRA-LEN:CAPS"></a>ZIP_HEADER_EXTRA_LEN</h3>
+<a class="indexterm" name="id2551594"></a><pre class="programlisting">#define ZIP_HEADER_EXTRA_LEN		28
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551609"></a><h3>
+<a name="ZIP-FILE-HEADER-COMPR-METHOD:CAPS"></a>ZIP_FILE_HEADER_COMPR_METHOD</h3>
+<a class="indexterm" name="id2551620"></a><pre class="programlisting">#define ZIP_FILE_HEADER_COMPR_METHOD     8
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551636"></a><h3>
+<a name="ZIP-FILE-HEADER-DOSTIME:CAPS"></a>ZIP_FILE_HEADER_DOSTIME</h3>
+<a class="indexterm" name="id2551648"></a><pre class="programlisting">#define ZIP_FILE_HEADER_DOSTIME         10
+</pre>
+<p>
+
+</p>
+</div>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2551665"></a><h2>Properties</h2>
+<div class="refsect2" lang="en">
+<a name="id2551670"></a><h3>
+<a name="GsfInfileZip--compression-level"></a>The "<code class="literal">compression-level</code>" property</h3>
+<pre class="programlisting">  "compression-level"    gint                  : Read</pre>
+<p>The level of compression used, zero meaning none.</p>
+<p>Allowed values: [0,10]</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551711"></a><h3>
+<a name="GsfInfileZip--internal-parent"></a>The "<code class="literal">internal-parent</code>" property</h3>
+<pre class="programlisting">  "internal-parent"      <a href="gsf-Zip.html#GsfInfileZip">GsfInfileZip</a>          : Write / Construct Only</pre>
+<p>Internal use only.</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551744"></a><h3>
+<a name="GsfInfileZip--source"></a>The "<code class="literal">source</code>" property</h3>
+<pre class="programlisting">  "source"               <a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>              : Read / Write / Construct Only</pre>
+<p>The archive being interpreted.</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551779"></a><h3>
+<a name="GsfOutfileZip--compression-level"></a>The "<code class="literal">compression-level</code>" property</h3>
+<pre class="programlisting">  "compression-level"    gint                  : Read / Write / Construct Only</pre>
+<p>The level of compression used, zero meaning none.</p>
+<p>Allowed values: [0,10]</p>
+<p>Default value: 8</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551821"></a><h3>
+<a name="GsfOutfileZip--entry-name"></a>The "<code class="literal">entry-name</code>" property</h3>
+<pre class="programlisting">  "entry-name"           gchararray            : Read / Write / Construct Only</pre>
+<p>The filename of this member in the archive without path.</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2551859"></a><h3>
+<a name="GsfOutfileZip--sink"></a>The "<code class="literal">sink</code>" property</h3>
+<pre class="programlisting">  "sink"                 <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>             : Read / Write / Construct Only</pre>
+<p>Where the archive is written.</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-XML-and-libxml.html"><b>&lt;&lt;&#160;XML and libxml</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Compression.html"><b>Compression&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-memory.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-memory.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-memory.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,423 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>memory</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="sources.html" title="Stream Sources">
+<link rel="prev" href="gsf-Reading-and-Writing-from-local-files-and-directories.html" title="Reading and Writing from local files and directories">
+<link rel="next" href="gsf-GIOChannel.html" title="GIOChannel">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Reading-and-Writing-from-local-files-and-directories.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="sources.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-GIOChannel.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-memory"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">memory</span></h2>
+<p>memory &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<a name="GsfInputMemory"></a><a name="GsfOutputMemory"></a><a name="GsfSharedMemory"></a><pre class="synopsis">
+
+
+
+            <a href="gsf-memory.html#GsfInputMemory-struct">GsfInputMemory</a>;
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-memory.html#gsf-input-mmap-new">gsf_input_mmap_new</a>              (char const *filename,
+                                             GError **err);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-memory.html#gsf-input-memory-new">gsf_input_memory_new</a>            (guint8 const *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> length,
+                                             gboolean needs_free);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-memory.html#gsf-input-memory-new-clone">gsf_input_memory_new_clone</a>      (guint8 const *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> length);
+<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   <a href="gsf-memory.html#gsf-input-memory-new-from-iochannel">gsf_input_memory_new_from_iochannel</a>
+                                            (GIOChannel *channel,
+                                             GError **error);
+            <a href="gsf-memory.html#GsfOutputMemory-struct">GsfOutputMemory</a>;
+const guint8* <a href="gsf-memory.html#gsf-output-memory-get-bytes">gsf_output_memory_get_bytes</a>   (<a href="gsf-memory.html#GsfOutputMemory">GsfOutputMemory</a> *mem);
+GType       <a href="gsf-memory.html#gsf-output-memory-get-type">gsf_output_memory_get_type</a>      (void);
+<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  <a href="gsf-memory.html#gsf-output-memory-new">gsf_output_memory_new</a>           (void);
+            <a href="gsf-memory.html#GsfSharedMemory-struct">GsfSharedMemory</a>;
+<a href="gsf-memory.html#GsfSharedMemory">GsfSharedMemory</a>* <a href="gsf-memory.html#gsf-shared-memory-new">gsf_shared_memory_new</a>      (void *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size,
+                                             gboolean needs_free);
+<a href="gsf-memory.html#GsfSharedMemory">GsfSharedMemory</a>* <a href="gsf-memory.html#gsf-shared-memory-mmapped-new">gsf_shared_memory_mmapped_new</a>
+                                            (void *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size);
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2532445"></a><h2>Object Hierarchy</h2>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+         +----GsfInputMemory
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----<a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+         +----GsfOutputMemory
+</pre>
+<pre class="synopsis">
+
+  GObject
+   +----GsfSharedMemory
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2532504"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2532514"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2532519"></a><h3>
+<a name="GsfInputMemory-struct"></a>GsfInputMemory</h3>
+<a class="indexterm" name="id2532531"></a><pre class="programlisting">typedef struct _GsfInputMemory GsfInputMemory;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2532546"></a><h3>
+<a name="gsf-input-mmap-new"></a>gsf_input_mmap_new ()</h3>
+<a class="indexterm" name="id2532557"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_mmap_new              (char const *filename,
+                                             GError **err);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> The file on disk that you want to mmap
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em>&#160;:</span></td>
+<td> A <span class="type">GError</span>, or optionally <code class="literal">null</code>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A new <a href="gsf-memory.html#GsfInputMemory"><span class="type">GsfInputMemory</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2532660"></a><h3>
+<a name="gsf-input-memory-new"></a>gsf_input_memory_new ()</h3>
+<a class="indexterm" name="id2532670"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_memory_new            (guint8 const *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> length,
+                                             gboolean needs_free);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buf</code></em>&#160;:</span></td>
+<td> The input bytes
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>length</code></em>&#160;:</span></td>
+<td> The length of <em class="parameter"><code>buf</code></em>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>needs_free</code></em>&#160;:</span></td>
+<td> Whether you want this memory to be free'd at object destruction
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A new <a href="gsf-memory.html#GsfInputMemory"><span class="type">GsfInputMemory</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2532788"></a><h3>
+<a name="gsf-input-memory-new-clone"></a>gsf_input_memory_new_clone ()</h3>
+<a class="indexterm" name="id2532799"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_memory_new_clone      (guint8 const *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> length);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buf</code></em>&#160;:</span></td>
+<td> The input bytes
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>length</code></em>&#160;:</span></td>
+<td> The length of <em class="parameter"><code>buf</code></em>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A new <a href="gsf-memory.html#GsfInputMemory"><span class="type">GsfInputMemory</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2532894"></a><h3>
+<a name="gsf-input-memory-new-from-iochannel"></a>gsf_input_memory_new_from_iochannel ()</h3>
+<a class="indexterm" name="id2532906"></a><pre class="programlisting"><a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>*   gsf_input_memory_new_from_iochannel
+                                            (GIOChannel *channel,
+                                             GError **error);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>channel</code></em>&#160;:</span></td>
+<td> a <span class="type">GIOChannel</span>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></td>
+<td> a <span class="type">GError</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new <a href="gsf-memory.html#GsfInputMemory"><span class="type">GsfInputMemory</span></a> or NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2533011"></a><h3>
+<a name="GsfOutputMemory-struct"></a>GsfOutputMemory</h3>
+<a class="indexterm" name="id2533022"></a><pre class="programlisting">typedef struct _GsfOutputMemory GsfOutputMemory;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2533037"></a><h3>
+<a name="gsf-output-memory-get-bytes"></a>gsf_output_memory_get_bytes ()</h3>
+<a class="indexterm" name="id2533048"></a><pre class="programlisting">const guint8* gsf_output_memory_get_bytes   (<a href="gsf-memory.html#GsfOutputMemory">GsfOutputMemory</a> *mem);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>mem</code></em>&#160;:</span></td>
+<td> the output device.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> The data that has been written to <em class="parameter"><code>mem</code></em>, or <code class="literal">null</code>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2533121"></a><h3>
+<a name="gsf-output-memory-get-type"></a>gsf_output_memory_get_type ()</h3>
+<a class="indexterm" name="id2533132"></a><pre class="programlisting">GType       gsf_output_memory_get_type      (void);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2533168"></a><h3>
+<a name="gsf-output-memory-new"></a>gsf_output_memory_new ()</h3>
+<a class="indexterm" name="id2533178"></a><pre class="programlisting"><a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>*  gsf_output_memory_new           (void);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new file or NULL.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2533218"></a><h3>
+<a name="GsfSharedMemory-struct"></a>GsfSharedMemory</h3>
+<a class="indexterm" name="id2533229"></a><pre class="programlisting">typedef struct _GsfSharedMemory GsfSharedMemory;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2533244"></a><h3>
+<a name="gsf-shared-memory-new"></a>gsf_shared_memory_new ()</h3>
+<a class="indexterm" name="id2533255"></a><pre class="programlisting"><a href="gsf-memory.html#GsfSharedMemory">GsfSharedMemory</a>* gsf_shared_memory_new      (void *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size,
+                                             gboolean needs_free);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buf</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>needs_free</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2533354"></a><h3>
+<a name="gsf-shared-memory-mmapped-new"></a>gsf_shared_memory_mmapped_new ()</h3>
+<a class="indexterm" name="id2533364"></a><pre class="programlisting"><a href="gsf-memory.html#GsfSharedMemory">GsfSharedMemory</a>* gsf_shared_memory_mmapped_new
+                                            (void *buf,
+                                             <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a> size);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>buf</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Reading-and-Writing-from-local-files-and-directories.html"><b>&lt;&lt;&#160;Reading and Writing from local files and directories</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GIOChannel.html"><b>GIOChannel&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-metadata.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-metadata.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-metadata.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1240 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>metadata</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="parsers.html" title="Stream Parsers">
+<link rel="prev" href="gsf-MS-OLE2.html" title="MS OLE2">
+<link rel="next" href="gsf-GsfBlob.html" title="GsfBlob">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-MS-OLE2.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="parsers.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-GsfBlob.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-metadata"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">metadata</span></h2>
+<p>metadata &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+            <a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a>;
+<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a>* <a href="gsf-metadata.html#gsf-doc-meta-data-new">gsf_doc_meta_data_new</a>       (void);
+<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a>* <a href="gsf-metadata.html#gsf-doc-meta-data-lookup">gsf_doc_meta_data_lookup</a>        (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta,
+                                             char const *name);
+void        <a href="gsf-metadata.html#gsf-doc-meta-data-insert">gsf_doc_meta_data_insert</a>        (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             char *name,
+                                             GValue *value);
+void        <a href="gsf-metadata.html#gsf-doc-meta-data-remove">gsf_doc_meta_data_remove</a>        (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             char const *name);
+<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a>* <a href="gsf-metadata.html#gsf-doc-meta-data-steal">gsf_doc_meta_data_steal</a>         (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             char const *name);
+void        <a href="gsf-metadata.html#gsf-doc-meta-data-store">gsf_doc_meta_data_store</a>         (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             <a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop);
+void        <a href="gsf-metadata.html#gsf-doc-meta-data-foreach">gsf_doc_meta_data_foreach</a>       (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta,
+                                             GHFunc func,
+                                             gpointer user_data);
+gsize       <a href="gsf-metadata.html#gsf-doc-meta-data-size">gsf_doc_meta_data_size</a>          (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta);
+            <a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a>;
+<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a>* <a href="gsf-metadata.html#gsf-doc-prop-new">gsf_doc_prop_new</a>                (char *name);
+void        <a href="gsf-metadata.html#gsf-doc-prop-free">gsf_doc_prop_free</a>               (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop);
+charconst   * <a href="gsf-metadata.html#gsf-doc-prop-get-name">gsf_doc_prop_get_name</a>         (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> const *prop);
+GValueconst * <a href="gsf-metadata.html#gsf-doc-prop-get-val">gsf_doc_prop_get_val</a>          (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> const *prop);
+void        <a href="gsf-metadata.html#gsf-doc-prop-set-val">gsf_doc_prop_set_val</a>            (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop,
+                                             GValue *val);
+charconst   * <a href="gsf-metadata.html#gsf-doc-prop-get-link">gsf_doc_prop_get_link</a>         (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> const *prop);
+void        <a href="gsf-metadata.html#gsf-doc-prop-set-link">gsf_doc_prop_set_link</a>           (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop,
+                                             char *link);
+            <a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a>;
+<a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a>* <a href="gsf-metadata.html#gsf-docprop-vector-new">gsf_docprop_vector_new</a>    (void);
+void        <a href="gsf-metadata.html#gsf-docprop-vector-append">gsf_docprop_vector_append</a>       (<a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a> *vector,
+                                             GValue *value);
+gchar*      <a href="gsf-metadata.html#gsf-docprop-vector-as-string">gsf_docprop_vector_as_string</a>    (<a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a> *vector);
+GValueArray* <a href="gsf-metadata.html#gsf-value-get-docprop-varray">gsf_value_get_docprop_varray</a>   (GValue const *value);
+<a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a>* <a href="gsf-metadata.html#gsf-value-get-docprop-vector">gsf_value_get_docprop_vector</a>
+                                            (GValue const *value);
+
+#define     <a href="gsf-metadata.html#GSF-META-NAME-TITLE:CAPS">GSF_META_NAME_TITLE</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-DESCRIPTION:CAPS">GSF_META_NAME_DESCRIPTION</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-SUBJECT:CAPS">GSF_META_NAME_SUBJECT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-DATE-MODIFIED:CAPS">GSF_META_NAME_DATE_MODIFIED</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-DATE-CREATED:CAPS">GSF_META_NAME_DATE_CREATED</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-KEYWORDS:CAPS">GSF_META_NAME_KEYWORDS</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-LANGUAGE:CAPS">GSF_META_NAME_LANGUAGE</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-REVISION-COUNT:CAPS">GSF_META_NAME_REVISION_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-EDITING-DURATION:CAPS">GSF_META_NAME_EDITING_DURATION</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-TABLE-COUNT:CAPS">GSF_META_NAME_TABLE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-IMAGE-COUNT:CAPS">GSF_META_NAME_IMAGE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-OBJECT-COUNT:CAPS">GSF_META_NAME_OBJECT_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-PAGE-COUNT:CAPS">GSF_META_NAME_PAGE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-PARAGRAPH-COUNT:CAPS">GSF_META_NAME_PARAGRAPH_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-WORD-COUNT:CAPS">GSF_META_NAME_WORD_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-CHARACTER-COUNT:CAPS">GSF_META_NAME_CHARACTER_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-CELL-COUNT:CAPS">GSF_META_NAME_CELL_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-SPREADSHEET-COUNT:CAPS">GSF_META_NAME_SPREADSHEET_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-CREATOR:CAPS">GSF_META_NAME_CREATOR</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-TEMPLATE:CAPS">GSF_META_NAME_TEMPLATE</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-LAST-SAVED-BY:CAPS">GSF_META_NAME_LAST_SAVED_BY</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-LAST-PRINTED:CAPS">GSF_META_NAME_LAST_PRINTED</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-SECURITY:CAPS">GSF_META_NAME_SECURITY</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-CATEGORY:CAPS">GSF_META_NAME_CATEGORY</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-PRESENTATION-FORMAT:CAPS">GSF_META_NAME_PRESENTATION_FORMAT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-THUMBNAIL:CAPS">GSF_META_NAME_THUMBNAIL</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-GENERATOR:CAPS">GSF_META_NAME_GENERATOR</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-LINE-COUNT:CAPS">GSF_META_NAME_LINE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-SLIDE-COUNT:CAPS">GSF_META_NAME_SLIDE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-NOTE-COUNT:CAPS">GSF_META_NAME_NOTE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-HIDDEN-SLIDE-COUNT:CAPS">GSF_META_NAME_HIDDEN_SLIDE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MM-CLIP-COUNT:CAPS">GSF_META_NAME_MM_CLIP_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-BYTE-COUNT:CAPS">GSF_META_NAME_BYTE_COUNT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-SCALE:CAPS">GSF_META_NAME_SCALE</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-HEADING-PAIRS:CAPS">GSF_META_NAME_HEADING_PAIRS</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-DOCUMENT-PARTS:CAPS">GSF_META_NAME_DOCUMENT_PARTS</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MANAGER:CAPS">GSF_META_NAME_MANAGER</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-COMPANY:CAPS">GSF_META_NAME_COMPANY</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-LINKS-DIRTY:CAPS">GSF_META_NAME_LINKS_DIRTY</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-DICTIONARY:CAPS">GSF_META_NAME_DICTIONARY</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-17:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_17</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-18:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_18</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-19:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_19</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-20:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_20</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-21:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_21</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-22:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_22</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-23:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_23</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-LOCALE-SYSTEM-DEFAULT:CAPS">GSF_META_NAME_LOCALE_SYSTEM_DEFAULT</a>
+#define     <a href="gsf-metadata.html#GSF-META-NAME-CASE-SENSITIVE:CAPS">GSF_META_NAME_CASE_SENSITIVE</a>
+
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2565946"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2565956"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2565961"></a><h3>
+<a name="GsfDocMetaData"></a>GsfDocMetaData</h3>
+<a class="indexterm" name="id2565971"></a><pre class="programlisting">typedef struct _GsfDocMetaData GsfDocMetaData;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2565987"></a><h3>
+<a name="gsf-doc-meta-data-new"></a>gsf_doc_meta_data_new ()</h3>
+<a class="indexterm" name="id2565998"></a><pre class="programlisting"><a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a>* gsf_doc_meta_data_new       (void);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new metadata property collection
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566037"></a><h3>
+<a name="gsf-doc-meta-data-lookup"></a>gsf_doc_meta_data_lookup ()</h3>
+<a class="indexterm" name="id2566048"></a><pre class="programlisting"><a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a>* gsf_doc_meta_data_lookup        (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta,
+                                             char const *name);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocMetaData"><span class="type">GsfDocMetaData</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the property with name <em class="parameter"><code>id</code></em> in <em class="parameter"><code>meta</code></em>.  The caller can modify the
+property value and link but not the name.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566151"></a><h3>
+<a name="gsf-doc-meta-data-insert"></a>gsf_doc_meta_data_insert ()</h3>
+<a class="indexterm" name="id2566161"></a><pre class="programlisting">void        gsf_doc_meta_data_insert        (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             char *name,
+                                             GValue *value);</pre>
+<p>
+Take ownership of <em class="parameter"><code>name</code></em> and <em class="parameter"><code>value</code></em> and insert a property into <em class="parameter"><code>meta</code></em>.
+If a property exists with <em class="parameter"><code>name</code></em>, it is replaced (The link is lost)</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocMetaData"><span class="type">GsfDocMetaData</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>value</code></em>&#160;:</span></td>
+<td> <span class="type">GValue</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566295"></a><h3>
+<a name="gsf-doc-meta-data-remove"></a>gsf_doc_meta_data_remove ()</h3>
+<a class="indexterm" name="id2566306"></a><pre class="programlisting">void        gsf_doc_meta_data_remove        (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             char const *name);</pre>
+<p>
+If <em class="parameter"><code>name</code></em> does not exist in the collection, do nothing. If <em class="parameter"><code>name</code></em> does exist,
+remove it and its value from the collection</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta</code></em>&#160;:</span></td>
+<td> the collection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td> the non-null string name of the property
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566392"></a><h3>
+<a name="gsf-doc-meta-data-steal"></a>gsf_doc_meta_data_steal ()</h3>
+<a class="indexterm" name="id2566403"></a><pre class="programlisting"><a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a>* gsf_doc_meta_data_steal         (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             char const *name);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566480"></a><h3>
+<a name="gsf-doc-meta-data-store"></a>gsf_doc_meta_data_store ()</h3>
+<a class="indexterm" name="id2566491"></a><pre class="programlisting">void        gsf_doc_meta_data_store         (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> *meta,
+                                             <a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocMetaData"><span class="type">GsfDocMetaData</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566578"></a><h3>
+<a name="gsf-doc-meta-data-foreach"></a>gsf_doc_meta_data_foreach ()</h3>
+<a class="indexterm" name="id2566589"></a><pre class="programlisting">void        gsf_doc_meta_data_foreach       (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta,
+                                             GHFunc func,
+                                             gpointer user_data);</pre>
+<p>
+Iterate through each (key, value) pair in this collection</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta</code></em>&#160;:</span></td>
+<td> the collection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>func</code></em>&#160;:</span></td>
+<td> the function called once for each element in the collection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user_data</code></em>&#160;:</span></td>
+<td> any supplied user data or NULL
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566684"></a><h3>
+<a name="gsf-doc-meta-data-size"></a>gsf_doc_meta_data_size ()</h3>
+<a class="indexterm" name="id2566695"></a><pre class="programlisting">gsize       gsf_doc_meta_data_size          (<a href="gsf-metadata.html#GsfDocMetaData">GsfDocMetaData</a> const *meta);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>meta</code></em>&#160;:</span></td>
+<td> the collection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the number of items in this collection
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566756"></a><h3>
+<a name="GsfDocProp"></a>GsfDocProp</h3>
+<a class="indexterm" name="id2566766"></a><pre class="programlisting">typedef struct _GsfDocProp GsfDocProp;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566781"></a><h3>
+<a name="gsf-doc-prop-new"></a>gsf_doc_prop_new ()</h3>
+<a class="indexterm" name="id2566792"></a><pre class="programlisting"><a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a>* gsf_doc_prop_new                (char *name);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>a new <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a> which the caller is responsible for freeing.
+Takes ownership of <em class="parameter"><code>name</code></em>.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566866"></a><h3>
+<a name="gsf-doc-prop-free"></a>gsf_doc_prop_free ()</h3>
+<a class="indexterm" name="id2566876"></a><pre class="programlisting">void        gsf_doc_prop_free               (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop);</pre>
+<p>
+If <em class="parameter"><code>prop</code></em> is non NULL free the memory assosociated with it</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2566940"></a><h3>
+<a name="gsf-doc-prop-get-name"></a>gsf_doc_prop_get_name ()</h3>
+<a class="indexterm" name="id2566951"></a><pre class="programlisting">charconst   * gsf_doc_prop_get_name         (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> const *prop);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the name of the property, the caller should not modify the result.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567019"></a><h3>
+<a name="gsf-doc-prop-get-val"></a>gsf_doc_prop_get_val ()</h3>
+<a class="indexterm" name="id2567030"></a><pre class="programlisting">GValueconst * gsf_doc_prop_get_val          (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> const *prop);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> the property
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the value of the property, the caller should not modify the result.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567091"></a><h3>
+<a name="gsf-doc-prop-set-val"></a>gsf_doc_prop_set_val ()</h3>
+<a class="indexterm" name="id2567102"></a><pre class="programlisting">void        gsf_doc_prop_set_val            (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop,
+                                             GValue *val);</pre>
+<p>
+Assigns <em class="parameter"><code>val</code></em> to <em class="parameter"><code>prop</code></em>, and unsets and frees the current value.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td> <span class="type">GValue</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567201"></a><h3>
+<a name="gsf-doc-prop-get-link"></a>gsf_doc_prop_get_link ()</h3>
+<a class="indexterm" name="id2567212"></a><pre class="programlisting">charconst   * gsf_doc_prop_get_link         (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> const *prop);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the current link descriptor of <em class="parameter"><code>prop</code></em>.  The result should not be
+	freed or modified.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567286"></a><h3>
+<a name="gsf-doc-prop-set-link"></a>gsf_doc_prop_set_link ()</h3>
+<a class="indexterm" name="id2567297"></a><pre class="programlisting">void        gsf_doc_prop_set_link           (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop,
+                                             char *link);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>link</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567375"></a><h3>
+<a name="GsfDocPropVector"></a>GsfDocPropVector</h3>
+<a class="indexterm" name="id2567386"></a><pre class="programlisting">typedef struct _GsfDocPropVector GsfDocPropVector;</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567401"></a><h3>
+<a name="gsf-docprop-vector-new"></a>gsf_docprop_vector_new ()</h3>
+<a class="indexterm" name="id2567412"></a><pre class="programlisting"><a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a>* gsf_docprop_vector_new    (void);</pre>
+<p>
+This function creates a new gsf_docprop_vector object.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> GsfDocPropVector*
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567453"></a><h3>
+<a name="gsf-docprop-vector-append"></a>gsf_docprop_vector_append ()</h3>
+<a class="indexterm" name="id2567465"></a><pre class="programlisting">void        gsf_docprop_vector_append       (<a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a> *vector,
+                                             GValue *value);</pre>
+<p>
+Insert a copy of <em class="parameter"><code>value</code></em> as the last element of <em class="parameter"><code>vector</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>vector</code></em>&#160;:</span></td>
+<td> The vector to which the GValue will be added
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>value</code></em>&#160;:</span></td>
+<td>  The GValue to add to <em class="parameter"><code>vector</code></em>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567554"></a><h3>
+<a name="gsf-docprop-vector-as-string"></a>gsf_docprop_vector_as_string ()</h3>
+<a class="indexterm" name="id2567566"></a><pre class="programlisting">gchar*      gsf_docprop_vector_as_string    (<a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a> *vector);</pre>
+<p>
+This function returns a string which represents all the GValues in <em class="parameter"><code>vector</code></em>.
+The caller is responsible for freeing the result.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>vector</code></em>&#160;:</span></td>
+<td> The <a href="gsf-metadata.html#GsfDocPropVector"><span class="type">GsfDocPropVector</span></a> from which GValues will be extracted.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> a string of comma-separated values
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567644"></a><h3>
+<a name="gsf-value-get-docprop-varray"></a>gsf_value_get_docprop_varray ()</h3>
+<a class="indexterm" name="id2567655"></a><pre class="programlisting">GValueArray* gsf_value_get_docprop_varray   (GValue const *value);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>value</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567712"></a><h3>
+<a name="gsf-value-get-docprop-vector"></a>gsf_value_get_docprop_vector ()</h3>
+<a class="indexterm" name="id2567723"></a><pre class="programlisting"><a href="gsf-metadata.html#GsfDocPropVector">GsfDocPropVector</a>* gsf_value_get_docprop_vector
+                                            (GValue const *value);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>value</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567780"></a><h3>
+<a name="GSF-META-NAME-TITLE:CAPS"></a>GSF_META_NAME_TITLE</h3>
+<a class="indexterm" name="id2567792"></a><pre class="programlisting">#define GSF_META_NAME_TITLE                 "dc:title"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567808"></a><h3>
+<a name="GSF-META-NAME-DESCRIPTION:CAPS"></a>GSF_META_NAME_DESCRIPTION</h3>
+<a class="indexterm" name="id2567819"></a><pre class="programlisting">#define GSF_META_NAME_DESCRIPTION           "dc:description"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567835"></a><h3>
+<a name="GSF-META-NAME-SUBJECT:CAPS"></a>GSF_META_NAME_SUBJECT</h3>
+<a class="indexterm" name="id2567846"></a><pre class="programlisting">#define GSF_META_NAME_SUBJECT               "dc:subject"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567862"></a><h3>
+<a name="GSF-META-NAME-DATE-MODIFIED:CAPS"></a>GSF_META_NAME_DATE_MODIFIED</h3>
+<a class="indexterm" name="id2567873"></a><pre class="programlisting">#define GSF_META_NAME_DATE_MODIFIED         "dc:date-modified"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567889"></a><h3>
+<a name="GSF-META-NAME-DATE-CREATED:CAPS"></a>GSF_META_NAME_DATE_CREATED</h3>
+<a class="indexterm" name="id2567900"></a><pre class="programlisting">#define GSF_META_NAME_DATE_CREATED          "gsf:date-created"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567916"></a><h3>
+<a name="GSF-META-NAME-KEYWORDS:CAPS"></a>GSF_META_NAME_KEYWORDS</h3>
+<a class="indexterm" name="id2567927"></a><pre class="programlisting">#define GSF_META_NAME_KEYWORDS              "dc:keywords"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567943"></a><h3>
+<a name="GSF-META-NAME-LANGUAGE:CAPS"></a>GSF_META_NAME_LANGUAGE</h3>
+<a class="indexterm" name="id2567954"></a><pre class="programlisting">#define GSF_META_NAME_LANGUAGE              "dc:language"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567970"></a><h3>
+<a name="GSF-META-NAME-REVISION-COUNT:CAPS"></a>GSF_META_NAME_REVISION_COUNT</h3>
+<a class="indexterm" name="id2567980"></a><pre class="programlisting">#define GSF_META_NAME_REVISION_COUNT        "gsf:revision-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2567996"></a><h3>
+<a name="GSF-META-NAME-EDITING-DURATION:CAPS"></a>GSF_META_NAME_EDITING_DURATION</h3>
+<a class="indexterm" name="id2568008"></a><pre class="programlisting">#define GSF_META_NAME_EDITING_DURATION      "gsf:editing-duration"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568024"></a><h3>
+<a name="GSF-META-NAME-TABLE-COUNT:CAPS"></a>GSF_META_NAME_TABLE_COUNT</h3>
+<a class="indexterm" name="id2568036"></a><pre class="programlisting">#define GSF_META_NAME_TABLE_COUNT           "gsf:table-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568052"></a><h3>
+<a name="GSF-META-NAME-IMAGE-COUNT:CAPS"></a>GSF_META_NAME_IMAGE_COUNT</h3>
+<a class="indexterm" name="id2568063"></a><pre class="programlisting">#define GSF_META_NAME_IMAGE_COUNT           "gsf:image-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568079"></a><h3>
+<a name="GSF-META-NAME-OBJECT-COUNT:CAPS"></a>GSF_META_NAME_OBJECT_COUNT</h3>
+<a class="indexterm" name="id2568091"></a><pre class="programlisting">#define GSF_META_NAME_OBJECT_COUNT          "gsf:object-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568107"></a><h3>
+<a name="GSF-META-NAME-PAGE-COUNT:CAPS"></a>GSF_META_NAME_PAGE_COUNT</h3>
+<a class="indexterm" name="id2568118"></a><pre class="programlisting">#define GSF_META_NAME_PAGE_COUNT            "gsf:page-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568134"></a><h3>
+<a name="GSF-META-NAME-PARAGRAPH-COUNT:CAPS"></a>GSF_META_NAME_PARAGRAPH_COUNT</h3>
+<a class="indexterm" name="id2568145"></a><pre class="programlisting">#define GSF_META_NAME_PARAGRAPH_COUNT       "gsf:paragraph-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568161"></a><h3>
+<a name="GSF-META-NAME-WORD-COUNT:CAPS"></a>GSF_META_NAME_WORD_COUNT</h3>
+<a class="indexterm" name="id2568173"></a><pre class="programlisting">#define GSF_META_NAME_WORD_COUNT            "gsf:word-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568189"></a><h3>
+<a name="GSF-META-NAME-CHARACTER-COUNT:CAPS"></a>GSF_META_NAME_CHARACTER_COUNT</h3>
+<a class="indexterm" name="id2568200"></a><pre class="programlisting">#define GSF_META_NAME_CHARACTER_COUNT       "gsf:character-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568216"></a><h3>
+<a name="GSF-META-NAME-CELL-COUNT:CAPS"></a>GSF_META_NAME_CELL_COUNT</h3>
+<a class="indexterm" name="id2568228"></a><pre class="programlisting">#define GSF_META_NAME_CELL_COUNT            "gsf:cell-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568244"></a><h3>
+<a name="GSF-META-NAME-SPREADSHEET-COUNT:CAPS"></a>GSF_META_NAME_SPREADSHEET_COUNT</h3>
+<a class="indexterm" name="id2568255"></a><pre class="programlisting">#define GSF_META_NAME_SPREADSHEET_COUNT     "gsf:spreadsheet-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568272"></a><h3>
+<a name="GSF-META-NAME-CREATOR:CAPS"></a>GSF_META_NAME_CREATOR</h3>
+<a class="indexterm" name="id2568283"></a><pre class="programlisting">#define GSF_META_NAME_CREATOR               "gsf:creator"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568298"></a><h3>
+<a name="GSF-META-NAME-TEMPLATE:CAPS"></a>GSF_META_NAME_TEMPLATE</h3>
+<a class="indexterm" name="id2568310"></a><pre class="programlisting">#define GSF_META_NAME_TEMPLATE              "gsf:template"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568325"></a><h3>
+<a name="GSF-META-NAME-LAST-SAVED-BY:CAPS"></a>GSF_META_NAME_LAST_SAVED_BY</h3>
+<a class="indexterm" name="id2568337"></a><pre class="programlisting">#define GSF_META_NAME_LAST_SAVED_BY         "gsf:last-saved-by"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568353"></a><h3>
+<a name="GSF-META-NAME-LAST-PRINTED:CAPS"></a>GSF_META_NAME_LAST_PRINTED</h3>
+<a class="indexterm" name="id2568365"></a><pre class="programlisting">#define GSF_META_NAME_LAST_PRINTED          "gsf:last-printed"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568381"></a><h3>
+<a name="GSF-META-NAME-SECURITY:CAPS"></a>GSF_META_NAME_SECURITY</h3>
+<a class="indexterm" name="id2568392"></a><pre class="programlisting">#define GSF_META_NAME_SECURITY              "gsf:security"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568408"></a><h3>
+<a name="GSF-META-NAME-CATEGORY:CAPS"></a>GSF_META_NAME_CATEGORY</h3>
+<a class="indexterm" name="id2568419"></a><pre class="programlisting">#define GSF_META_NAME_CATEGORY              "gsf:category"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568435"></a><h3>
+<a name="GSF-META-NAME-PRESENTATION-FORMAT:CAPS"></a>GSF_META_NAME_PRESENTATION_FORMAT</h3>
+<a class="indexterm" name="id2568446"></a><pre class="programlisting">#define GSF_META_NAME_PRESENTATION_FORMAT   "gsf:presentation-format"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568462"></a><h3>
+<a name="GSF-META-NAME-THUMBNAIL:CAPS"></a>GSF_META_NAME_THUMBNAIL</h3>
+<a class="indexterm" name="id2568474"></a><pre class="programlisting">#define GSF_META_NAME_THUMBNAIL             "gsf:thumbnail"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568490"></a><h3>
+<a name="GSF-META-NAME-GENERATOR:CAPS"></a>GSF_META_NAME_GENERATOR</h3>
+<a class="indexterm" name="id2568501"></a><pre class="programlisting">#define GSF_META_NAME_GENERATOR             "gsf:generator"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568517"></a><h3>
+<a name="GSF-META-NAME-LINE-COUNT:CAPS"></a>GSF_META_NAME_LINE_COUNT</h3>
+<a class="indexterm" name="id2568529"></a><pre class="programlisting">#define GSF_META_NAME_LINE_COUNT            "gsf:line-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568545"></a><h3>
+<a name="GSF-META-NAME-SLIDE-COUNT:CAPS"></a>GSF_META_NAME_SLIDE_COUNT</h3>
+<a class="indexterm" name="id2568556"></a><pre class="programlisting">#define GSF_META_NAME_SLIDE_COUNT           "gsf:slide-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568572"></a><h3>
+<a name="GSF-META-NAME-NOTE-COUNT:CAPS"></a>GSF_META_NAME_NOTE_COUNT</h3>
+<a class="indexterm" name="id2568583"></a><pre class="programlisting">#define GSF_META_NAME_NOTE_COUNT            "gsf:note-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568599"></a><h3>
+<a name="GSF-META-NAME-HIDDEN-SLIDE-COUNT:CAPS"></a>GSF_META_NAME_HIDDEN_SLIDE_COUNT</h3>
+<a class="indexterm" name="id2568610"></a><pre class="programlisting">#define GSF_META_NAME_HIDDEN_SLIDE_COUNT    "gsf:hidden-slide-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568627"></a><h3>
+<a name="GSF-META-NAME-MM-CLIP-COUNT:CAPS"></a>GSF_META_NAME_MM_CLIP_COUNT</h3>
+<a class="indexterm" name="id2568638"></a><pre class="programlisting">#define GSF_META_NAME_MM_CLIP_COUNT         "gsf:MM-clip-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568654"></a><h3>
+<a name="GSF-META-NAME-BYTE-COUNT:CAPS"></a>GSF_META_NAME_BYTE_COUNT</h3>
+<a class="indexterm" name="id2568665"></a><pre class="programlisting">#define GSF_META_NAME_BYTE_COUNT            "gsf:byte-count"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568681"></a><h3>
+<a name="GSF-META-NAME-SCALE:CAPS"></a>GSF_META_NAME_SCALE</h3>
+<a class="indexterm" name="id2568693"></a><pre class="programlisting">#define GSF_META_NAME_SCALE                 "gsf:scale"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568709"></a><h3>
+<a name="GSF-META-NAME-HEADING-PAIRS:CAPS"></a>GSF_META_NAME_HEADING_PAIRS</h3>
+<a class="indexterm" name="id2568719"></a><pre class="programlisting">#define GSF_META_NAME_HEADING_PAIRS         "gsf:heading-pairs"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568735"></a><h3>
+<a name="GSF-META-NAME-DOCUMENT-PARTS:CAPS"></a>GSF_META_NAME_DOCUMENT_PARTS</h3>
+<a class="indexterm" name="id2568746"></a><pre class="programlisting">#define GSF_META_NAME_DOCUMENT_PARTS        "gsf:document-parts"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568762"></a><h3>
+<a name="GSF-META-NAME-MANAGER:CAPS"></a>GSF_META_NAME_MANAGER</h3>
+<a class="indexterm" name="id2568773"></a><pre class="programlisting">#define GSF_META_NAME_MANAGER               "gsf:manager"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568789"></a><h3>
+<a name="GSF-META-NAME-COMPANY:CAPS"></a>GSF_META_NAME_COMPANY</h3>
+<a class="indexterm" name="id2568800"></a><pre class="programlisting">#define GSF_META_NAME_COMPANY               "gsf:company"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568816"></a><h3>
+<a name="GSF-META-NAME-LINKS-DIRTY:CAPS"></a>GSF_META_NAME_LINKS_DIRTY</h3>
+<a class="indexterm" name="id2568828"></a><pre class="programlisting">#define GSF_META_NAME_LINKS_DIRTY           "gsf:links-dirty"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568844"></a><h3>
+<a name="GSF-META-NAME-DICTIONARY:CAPS"></a>GSF_META_NAME_DICTIONARY</h3>
+<a class="indexterm" name="id2568855"></a><pre class="programlisting">#define GSF_META_NAME_DICTIONARY            "gsf:dictionary"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568871"></a><h3>
+<a name="GSF-META-NAME-MSOLE-UNKNOWN-17:CAPS"></a>GSF_META_NAME_MSOLE_UNKNOWN_17</h3>
+<a class="indexterm" name="id2568882"></a><pre class="programlisting">#define GSF_META_NAME_MSOLE_UNKNOWN_17		"msole:unknown-doc-17"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568898"></a><h3>
+<a name="GSF-META-NAME-MSOLE-UNKNOWN-18:CAPS"></a>GSF_META_NAME_MSOLE_UNKNOWN_18</h3>
+<a class="indexterm" name="id2568909"></a><pre class="programlisting">#define GSF_META_NAME_MSOLE_UNKNOWN_18		"msole:unknown-doc-18"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568926"></a><h3>
+<a name="GSF-META-NAME-MSOLE-UNKNOWN-19:CAPS"></a>GSF_META_NAME_MSOLE_UNKNOWN_19</h3>
+<a class="indexterm" name="id2568937"></a><pre class="programlisting">#define GSF_META_NAME_MSOLE_UNKNOWN_19		"msole:unknown-doc-19"	/* bool */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568953"></a><h3>
+<a name="GSF-META-NAME-MSOLE-UNKNOWN-20:CAPS"></a>GSF_META_NAME_MSOLE_UNKNOWN_20</h3>
+<a class="indexterm" name="id2568965"></a><pre class="programlisting">#define GSF_META_NAME_MSOLE_UNKNOWN_20		"msole:unknown-doc-20"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2568981"></a><h3>
+<a name="GSF-META-NAME-MSOLE-UNKNOWN-21:CAPS"></a>GSF_META_NAME_MSOLE_UNKNOWN_21</h3>
+<a class="indexterm" name="id2568992"></a><pre class="programlisting">#define GSF_META_NAME_MSOLE_UNKNOWN_21		"msole:unknown-doc-21"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2569008"></a><h3>
+<a name="GSF-META-NAME-MSOLE-UNKNOWN-22:CAPS"></a>GSF_META_NAME_MSOLE_UNKNOWN_22</h3>
+<a class="indexterm" name="id2569020"></a><pre class="programlisting">#define GSF_META_NAME_MSOLE_UNKNOWN_22		"msole:unknown-doc-22"	/* bool */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2569036"></a><h3>
+<a name="GSF-META-NAME-MSOLE-UNKNOWN-23:CAPS"></a>GSF_META_NAME_MSOLE_UNKNOWN_23</h3>
+<a class="indexterm" name="id2569048"></a><pre class="programlisting">#define GSF_META_NAME_MSOLE_UNKNOWN_23		"msole:unknown-doc-23"	/* i4 */
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2569064"></a><h3>
+<a name="GSF-META-NAME-LOCALE-SYSTEM-DEFAULT:CAPS"></a>GSF_META_NAME_LOCALE_SYSTEM_DEFAULT</h3>
+<a class="indexterm" name="id2569076"></a><pre class="programlisting">#define GSF_META_NAME_LOCALE_SYSTEM_DEFAULT	"gsf:default-locale"
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2569092"></a><h3>
+<a name="GSF-META-NAME-CASE-SENSITIVE:CAPS"></a>GSF_META_NAME_CASE_SENSITIVE</h3>
+<a class="indexterm" name="id2569103"></a><pre class="programlisting">#define GSF_META_NAME_CASE_SENSITIVE        "gsf:case-sensitivity"
+</pre>
+<p>
+
+</p>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-MS-OLE2.html"><b>&lt;&lt;&#160;MS OLE2</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GsfBlob.html"><b>GsfBlob&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-utils.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-utils.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf-utils.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2865 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>utils</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="misc.html" title="Miscellaneous">
+<link rel="prev" href="misc.html" title="Miscellaneous">
+<link rel="next" href="ix01.html" title="Index">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="misc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="misc.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry" lang="en">
+<a name="gsf-utils"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">utils</span></h2>
+<p>utils &#8212; </p>
+</td>
+<td valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<pre class="synopsis">
+
+
+
+
+void        <a href="gsf-utils.html#gsf-init">gsf_init</a>                        (void);
+void        <a href="gsf-utils.html#gsf-shutdown">gsf_shutdown</a>                    (void);
+void        <a href="gsf-utils.html#gsf-init-dynamic">gsf_init_dynamic</a>                (GTypeModule *module);
+void        <a href="gsf-utils.html#gsf-shutdown-dynamic">gsf_shutdown_dynamic</a>            (GTypeModule *module);
+extern      int <a href="gsf-utils.html#libgsf-major-version">libgsf_major_version</a>;
+extern      int <a href="gsf-utils.html#libgsf-minor-version">libgsf_minor_version</a>;
+extern      int <a href="gsf-utils.html#libgsf-micro-version">libgsf_micro_version</a>;
+
+#define     <a href="gsf-utils.html#GSF-CLASS:CAPS">GSF_CLASS</a>                       (name, prefix, class_init, instance_init, parent)
+#define     <a href="gsf-utils.html#GSF-CLASS-FULL:CAPS">GSF_CLASS_FULL</a>                  (name, prefix, base_init, base_finalize, \
+			   class_init, class_finalize, instance_init, parent_type, \
+		       abstract, interface_decl)
+#define     <a href="gsf-utils.html#GSF-CLASS-ABSTRACT:CAPS">GSF_CLASS_ABSTRACT</a>              (name, prefix, class_init, instance_init, parent)
+#define     <a href="gsf-utils.html#GSF-INTERFACE:CAPS">GSF_INTERFACE</a>                   (init_func, iface_type)
+#define     <a href="gsf-utils.html#GSF-INTERFACE-FULL:CAPS">GSF_INTERFACE_FULL</a>              (type, init_func, iface_type)
+#define     <a href="gsf-utils.html#GSF-DYNAMIC-CLASS:CAPS">GSF_DYNAMIC_CLASS</a>               (name, prefix, class_init, instance_init, parent)
+#define     <a href="gsf-utils.html#GSF-DYNAMIC-CLASS-FULL:CAPS">GSF_DYNAMIC_CLASS_FULL</a>          (name, prefix, base_init, base_finalize, \
+				   class_init,  class_finalize, instance_init, parent_type, \
+			       abstract, interface_decl)
+#define     <a href="gsf-utils.html#GSF-DYNAMIC-CLASS-ABSTRACT:CAPS">GSF_DYNAMIC_CLASS_ABSTRACT</a>      (name, prefix, class_init, instance_init, parent)
+#define     <a href="gsf-utils.html#GSF-DYNAMIC-INTERFACE:CAPS">GSF_DYNAMIC_INTERFACE</a>           (init_func, iface_type, module)
+#define     <a href="gsf-utils.html#GSF-DYNAMIC-INTERFACE-FULL:CAPS">GSF_DYNAMIC_INTERFACE_FULL</a>      (type, init_func, iface_type, module)
+#define     <a href="gsf-utils.html#GSF-PARAM-STATIC:CAPS">GSF_PARAM_STATIC</a>
+
+#define     <a href="gsf-utils.html#GSF-ERROR:CAPS">GSF_ERROR</a>
+enum        <a href="gsf-utils.html#GsfError">GsfError</a>;
+GQuark      <a href="gsf-utils.html#gsf-error-quark">gsf_error_quark</a>                 (void);
+
+void        <a href="gsf-utils.html#gsf-mem-dump">gsf_mem_dump</a>                    (guint8 const *ptr,
+                                             size_t len);
+void        <a href="gsf-utils.html#gsf-input-dump">gsf_input_dump</a>                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             gboolean dump_as_hex);
+
+#define     <a href="gsf-utils.html#GSF-OFF-T-FORMAT:CAPS">GSF_OFF_T_FORMAT</a>
+typedef     <a href="gsf-utils.html#gsf-off-t">gsf_off_t</a>;
+char*       <a href="gsf-utils.html#gsf-filename-to-utf8">gsf_filename_to_utf8</a>            (char const *filename,
+                                             gboolean quoted);
+void        <a href="gsf-utils.html#gsf-iconv-close">gsf_iconv_close</a>                 (GIConv handle);
+charconst * <a href="gsf-utils.html#gsf-extension-pointer">gsf_extension_pointer</a>           (char const *path);
+
+guint8*     <a href="gsf-utils.html#gsf-base64-encode-simple">gsf_base64_encode_simple</a>        (guint8 const *data,
+                                             size_t len);
+size_t      <a href="gsf-utils.html#gsf-base64-encode-close">gsf_base64_encode_close</a>         (guint8 const *in,
+                                             size_t inlen,
+                                             gboolean break_lines,
+                                             guint8 *out,
+                                             int *state,
+                                             guint *save);
+size_t      <a href="gsf-utils.html#gsf-base64-encode-step">gsf_base64_encode_step</a>          (guint8 const *in,
+                                             size_t len,
+                                             gboolean break_lines,
+                                             guint8 *out,
+                                             int *state,
+                                             guint *save);
+size_t      <a href="gsf-utils.html#gsf-base64-decode-simple">gsf_base64_decode_simple</a>        (guint8 *data,
+                                             size_t len);
+size_t      <a href="gsf-utils.html#gsf-base64-decode-step">gsf_base64_decode_step</a>          (guint8 const *in,
+                                             size_t len,
+                                             guint8 *out,
+                                             int *state,
+                                             guint *save);
+#define     <a href="gsf-utils.html#GSF-LE-GET-GINT8:CAPS">GSF_LE_GET_GINT8</a>                (p)
+#define     <a href="gsf-utils.html#GSF-LE-GET-GUINT64:CAPS">GSF_LE_GET_GUINT64</a>              (p)
+#define     <a href="gsf-utils.html#GSF-LE-GET-GINT16:CAPS">GSF_LE_GET_GINT16</a>               (p)
+#define     <a href="gsf-utils.html#GSF-LE-GET-GUINT8:CAPS">GSF_LE_GET_GUINT8</a>               (p)
+#define     <a href="gsf-utils.html#GSF-LE-GET-GINT32:CAPS">GSF_LE_GET_GINT32</a>               (p)
+#define     <a href="gsf-utils.html#GSF-LE-GET-GUINT16:CAPS">GSF_LE_GET_GUINT16</a>              (p)
+#define     <a href="gsf-utils.html#GSF-LE-GET-GUINT32:CAPS">GSF_LE_GET_GUINT32</a>              (p)
+#define     <a href="gsf-utils.html#GSF-LE-GET-GINT64:CAPS">GSF_LE_GET_GINT64</a>               (p)
+guint64     <a href="gsf-utils.html#gsf-le-get-guint64">gsf_le_get_guint64</a>              (void const *p);
+#define     <a href="gsf-utils.html#GSF-LE-GET-FLOAT:CAPS">GSF_LE_GET_FLOAT</a>                (p)
+float       <a href="gsf-utils.html#gsf-le-get-float">gsf_le_get_float</a>                (void const *p);
+#define     <a href="gsf-utils.html#GSF-LE-GET-DOUBLE:CAPS">GSF_LE_GET_DOUBLE</a>               (p)
+double      <a href="gsf-utils.html#gsf-le-get-double">gsf_le_get_double</a>               (void const *p);
+#define     <a href="gsf-utils.html#GSF-LE-SET-GUINT8:CAPS">GSF_LE_SET_GUINT8</a>               (p, dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-GUINT16:CAPS">GSF_LE_SET_GUINT16</a>              (p, dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-GUINT32:CAPS">GSF_LE_SET_GUINT32</a>              (p, dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-GINT8:CAPS">GSF_LE_SET_GINT8</a>                (p,dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-GINT16:CAPS">GSF_LE_SET_GINT16</a>               (p,dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-GINT32:CAPS">GSF_LE_SET_GINT32</a>               (p,dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-GINT64:CAPS">GSF_LE_SET_GINT64</a>               (p,dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-GUINT64:CAPS">GSF_LE_SET_GUINT64</a>              (p, dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-FLOAT:CAPS">GSF_LE_SET_FLOAT</a>                (p,dat)
+#define     <a href="gsf-utils.html#GSF-LE-SET-DOUBLE:CAPS">GSF_LE_SET_DOUBLE</a>               (p,dat)
+void        <a href="gsf-utils.html#gsf-le-set-float">gsf_le_set_float</a>                (void *p,
+                                             float f);
+void        <a href="gsf-utils.html#gsf-le-set-double">gsf_le_set_double</a>               (void *p,
+                                             double d);
+
+            <a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a>;
+<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a>* <a href="gsf-utils.html#gsf-timestamp-new">gsf_timestamp_new</a>             (GDate const *date,
+                                             glong seconds,
+                                             char const *tz);
+<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a>* <a href="gsf-utils.html#gsf-timestamp-new-now">gsf_timestamp_new_now</a>         (void);
+<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a>* <a href="gsf-utils.html#gsf-timestamp-copy">gsf_timestamp_copy</a>            (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);
+void        <a href="gsf-utils.html#gsf-timestamp-free">gsf_timestamp_free</a>              (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> *stamp);
+char*       <a href="gsf-utils.html#gsf-timestamp-as-string">gsf_timestamp_as_string</a>         (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);
+int         <a href="gsf-utils.html#gsf-timestamp-parse">gsf_timestamp_parse</a>             (char const *spec,
+                                             <a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> *stamp);
+guint       <a href="gsf-utils.html#gsf-timestamp-hash">gsf_timestamp_hash</a>              (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);
+gboolean    <a href="gsf-utils.html#gsf-timestamp-equal">gsf_timestamp_equal</a>             (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *a,
+                                             <a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *b);
+void        <a href="gsf-utils.html#gsf-value-set-timestamp">gsf_value_set_timestamp</a>         (GValue *value,
+                                             <a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);
+#define     <a href="gsf-utils.html#VAL-IS-GSF-TIMESTAMP:CAPS">VAL_IS_GSF_TIMESTAMP</a>            (v)
+
+
+GValue*     <a href="gsf-utils.html#gsf-doc-prop-swap-val">gsf_doc_prop_swap_val</a>           (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop,
+                                             GValue *val);
+void        <a href="gsf-utils.html#gsf-property-settings-collect">gsf_property_settings_collect</a>   (GType object_type,
+                                             GParameter **p_params,
+                                             size_t *p_n_params,
+                                             const gchar *first_property_name,
+                                             ...);
+void        <a href="gsf-utils.html#gsf-property-settings-collect-valist">gsf_property_settings_collect_valist</a>
+                                            (GType object_type,
+                                             GParameter **p_params,
+                                             size_t *p_n_params,
+                                             const gchar *first_property_name,
+                                             va_list var_args);
+void        <a href="gsf-utils.html#gsf-property-settings-free">gsf_property_settings_free</a>      (GParameter *params,
+                                             size_t n_params);
+</pre>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2579438"></a><h2>Description</h2>
+<p>
+
+</p>
+</div>
+<div class="refsect1" lang="en">
+<a name="id2579448"></a><h2>Details</h2>
+<div class="refsect2" lang="en">
+<a name="id2579454"></a><h3>
+<a name="gsf-init"></a>gsf_init ()</h3>
+<a class="indexterm" name="id2579464"></a><pre class="programlisting">void        gsf_init                        (void);</pre>
+<p>
+Initializes the GSF library</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579489"></a><h3>
+<a name="gsf-shutdown"></a>gsf_shutdown ()</h3>
+<a class="indexterm" name="id2579499"></a><pre class="programlisting">void        gsf_shutdown                    (void);</pre>
+<p>
+De-intializes the GSF library</p>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579524"></a><h3>
+<a name="gsf-init-dynamic"></a>gsf_init_dynamic ()</h3>
+<a class="indexterm" name="id2579535"></a><pre class="programlisting">void        gsf_init_dynamic                (GTypeModule *module);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>module</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579580"></a><h3>
+<a name="gsf-shutdown-dynamic"></a>gsf_shutdown_dynamic ()</h3>
+<a class="indexterm" name="id2579592"></a><pre class="programlisting">void        gsf_shutdown_dynamic            (GTypeModule *module);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>module</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579638"></a><h3>
+<a name="libgsf-major-version"></a>libgsf_major_version</h3>
+<a class="indexterm" name="id2579649"></a><pre class="programlisting">extern int libgsf_major_version;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579664"></a><h3>
+<a name="libgsf-minor-version"></a>libgsf_minor_version</h3>
+<a class="indexterm" name="id2579675"></a><pre class="programlisting">extern int libgsf_minor_version;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579691"></a><h3>
+<a name="libgsf-micro-version"></a>libgsf_micro_version</h3>
+<a class="indexterm" name="id2579701"></a><pre class="programlisting">extern int libgsf_micro_version;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579717"></a><h3>
+<a name="GSF-CLASS:CAPS"></a>GSF_CLASS()</h3>
+<a class="indexterm" name="id2579728"></a><pre class="programlisting">#define     GSF_CLASS(name, prefix, class_init, instance_init, parent)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2579815"></a><h3>
+<a name="GSF-CLASS-FULL:CAPS"></a>GSF_CLASS_FULL()</h3>
+<a class="indexterm" name="id2579825"></a><pre class="programlisting">#define     GSF_CLASS_FULL(name, prefix, base_init, base_finalize, \
+			   class_init, class_finalize, instance_init, parent_type, \
+		       abstract, interface_decl)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_finalize</code></em>&#160;:</span></td>
+<td>
+@\
+			   class_init:
+@\
+			   class_init: 
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_finalize</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent_type</code></em>&#160;:</span></td>
+<td>
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract: 
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>interface_decl</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580054"></a><h3>
+<a name="GSF-CLASS-ABSTRACT:CAPS"></a>GSF_CLASS_ABSTRACT()</h3>
+<a class="indexterm" name="id2580065"></a><pre class="programlisting">#define     GSF_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580153"></a><h3>
+<a name="GSF-INTERFACE:CAPS"></a>GSF_INTERFACE()</h3>
+<a class="indexterm" name="id2580164"></a><pre class="programlisting">#define     GSF_INTERFACE(init_func, iface_type)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>init_func</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580211"></a><h3>
+<a name="GSF-INTERFACE-FULL:CAPS"></a>GSF_INTERFACE_FULL()</h3>
+<a class="indexterm" name="id2580222"></a><pre class="programlisting">#define     GSF_INTERFACE_FULL(type, init_func, iface_type)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>type</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>init_func</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580282"></a><h3>
+<a name="GSF-DYNAMIC-CLASS:CAPS"></a>GSF_DYNAMIC_CLASS()</h3>
+<a class="indexterm" name="id2580294"></a><pre class="programlisting">#define     GSF_DYNAMIC_CLASS(name, prefix, class_init, instance_init, parent)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580382"></a><h3>
+<a name="GSF-DYNAMIC-CLASS-FULL:CAPS"></a>GSF_DYNAMIC_CLASS_FULL()</h3>
+<a class="indexterm" name="id2580392"></a><pre class="programlisting">#define     GSF_DYNAMIC_CLASS_FULL(name, prefix, base_init, base_finalize, \
+				   class_init,  class_finalize, instance_init, parent_type, \
+			       abstract, interface_decl)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_finalize</code></em>&#160;:</span></td>
+<td>
+@\
+				   class_init:
+@\
+				   class_init: 
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_finalize</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent_type</code></em>&#160;:</span></td>
+<td>
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract: 
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>interface_decl</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580625"></a><h3>
+<a name="GSF-DYNAMIC-CLASS-ABSTRACT:CAPS"></a>GSF_DYNAMIC_CLASS_ABSTRACT()</h3>
+<a class="indexterm" name="id2580636"></a><pre class="programlisting">#define     GSF_DYNAMIC_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580724"></a><h3>
+<a name="GSF-DYNAMIC-INTERFACE:CAPS"></a>GSF_DYNAMIC_INTERFACE()</h3>
+<a class="indexterm" name="id2580736"></a><pre class="programlisting">#define     GSF_DYNAMIC_INTERFACE(init_func, iface_type, module)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>init_func</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>module</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580796"></a><h3>
+<a name="GSF-DYNAMIC-INTERFACE-FULL:CAPS"></a>GSF_DYNAMIC_INTERFACE_FULL()</h3>
+<a class="indexterm" name="id2580807"></a><pre class="programlisting">#define     GSF_DYNAMIC_INTERFACE_FULL(type, init_func, iface_type, module)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>type</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>init_func</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>module</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580882"></a><h3>
+<a name="GSF-PARAM-STATIC:CAPS"></a>GSF_PARAM_STATIC</h3>
+<a class="indexterm" name="id2580893"></a><pre class="programlisting">#define     GSF_PARAM_STATIC</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580908"></a><h3>
+<a name="GSF-ERROR:CAPS"></a>GSF_ERROR</h3>
+<a class="indexterm" name="id2580919"></a><pre class="programlisting">#define GSF_ERROR (gsf_error_quark ())
+</pre>
+<p>
+  This convenience macro simply calls <a href="gsf-utils.html#gsf-error-quark"><code class="function">gsf_error_quark()</code></a>.  You can use
+  it in calls to <code class="function">g_error_matches()</code>, for example.  The macro returns
+  the <span class="type">GQuark</span> that is used to identify errors from libgsf functions.
+  Specific error codes come from the <a href="gsf-utils.html#GsfError"><span class="type">GsfError</span></a> enumeration.
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2580976"></a><h3>
+<a name="GsfError"></a>enum GsfError</h3>
+<a class="indexterm" name="id2580987"></a><pre class="programlisting">typedef enum {
+	GSF_ERROR_OUT_OF_MEMORY,
+	GSF_ERROR_INVALID_DATA
+} GsfError;
+</pre>
+<p>
+   Error codes that can be returned from libgsf functions in <span class="type">GError</span> structures.
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_ERROR_OUT_OF_MEMORY</code></span></td>
+<td>Not enough memory could be allocated to hold
+a structure or object.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><code class="literal">GSF_ERROR_INVALID_DATA</code></span></td>
+<td>A file being read contained invalid or
+inconsistent data.
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581048"></a><h3>
+<a name="gsf-error-quark"></a>gsf_error_quark ()</h3>
+<a class="indexterm" name="id2581058"></a><pre class="programlisting">GQuark      gsf_error_quark                 (void);</pre>
+<p>
+Returns the <span class="type">GQuark</span> used to identify libgsf errors in <span class="type">GError</span> structures.
+Specific error codes come from the <a href="gsf-utils.html#GsfError"><span class="type">GsfError</span></a> enumeration.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A <span class="type">GQuark</span>.
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581130"></a><h3>
+<a name="gsf-mem-dump"></a>gsf_mem_dump ()</h3>
+<a class="indexterm" name="id2581141"></a><pre class="programlisting">void        gsf_mem_dump                    (guint8 const *ptr,
+                                             size_t len);</pre>
+<p>
+Dump <em class="parameter"><code>len</code></em> bytes from the memory location given by <em class="parameter"><code>ptr</code></em>.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ptr</code></em>&#160;:</span></td>
+<td> memory area to be dumped.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em>&#160;:</span></td>
+<td> how many bytes will be dumped.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581224"></a><h3>
+<a name="gsf-input-dump"></a>gsf_input_dump ()</h3>
+<a class="indexterm" name="id2581235"></a><pre class="programlisting">void        gsf_input_dump                  (<a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a> *input,
+                                             gboolean dump_as_hex);</pre>
+<p>
+Dumps <em class="parameter"><code>input</code></em>'s contents to STDOUT, optionally in hex format.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em>&#160;:</span></td>
+<td> a <a href="gsf-Input-from-unstructured-files.html#GsfInput"><span class="type">GsfInput</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dump_as_hex</code></em>&#160;:</span></td>
+<td> If TRUE, dump in hexidecmal format
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581321"></a><h3>
+<a name="GSF-OFF-T-FORMAT:CAPS"></a>GSF_OFF_T_FORMAT</h3>
+<a class="indexterm" name="id2581332"></a><pre class="programlisting">#define GSF_OFF_T_FORMAT	G_GINT64_FORMAT
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581348"></a><h3>
+<a name="gsf-off-t"></a>gsf_off_t</h3>
+<a class="indexterm" name="id2581358"></a><pre class="programlisting">typedef gint64 gsf_off_t;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581373"></a><h3>
+<a name="gsf-filename-to-utf8"></a>gsf_filename_to_utf8 ()</h3>
+<a class="indexterm" name="id2581383"></a><pre class="programlisting">char*       gsf_filename_to_utf8            (char const *filename,
+                                             gboolean quoted);</pre>
+<p>
+A utility wrapper to make sure filenames are valid utf8.
+Caller must g_free the result.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em>&#160;:</span></td>
+<td> file name suitable for open(2).
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>quoted</code></em>&#160;:</span></td>
+<td> if TRUE, the resulting utf8 file name will be quoted
+   (unless it is invalid).
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+<em class="parameter"><code>filename</code></em> using utf-8 encoding for display
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581473"></a><h3>
+<a name="gsf-iconv-close"></a>gsf_iconv_close ()</h3>
+<a class="indexterm" name="id2581484"></a><pre class="programlisting">void        gsf_iconv_close                 (GIConv handle);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>handle</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581533"></a><h3>
+<a name="gsf-extension-pointer"></a>gsf_extension_pointer ()</h3>
+<a class="indexterm" name="id2581544"></a><pre class="programlisting">charconst * gsf_extension_pointer           (char const *path);</pre>
+<p>
+Extracts the extension from the end of a filename (the part after the final
+'.' in the filename).</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>path</code></em>&#160;:</span></td>
+<td> A filename or file path.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td> A pointer to the extension part of the filename, or a
+pointer to the end of the string if the filename does not
+have an extension.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581608"></a><h3>
+<a name="gsf-base64-encode-simple"></a>gsf_base64_encode_simple ()</h3>
+<a class="indexterm" name="id2581619"></a><pre class="programlisting">guint8*     gsf_base64_encode_simple        (guint8 const *data,
+                                             size_t len);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581696"></a><h3>
+<a name="gsf-base64-encode-close"></a>gsf_base64_encode_close ()</h3>
+<a class="indexterm" name="id2581707"></a><pre class="programlisting">size_t      gsf_base64_encode_close         (guint8 const *in,
+                                             size_t inlen,
+                                             gboolean break_lines,
+                                             guint8 *out,
+                                             int *state,
+                                             guint *save);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>in</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>inlen</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>break_lines</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>out</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>save</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2581868"></a><h3>
+<a name="gsf-base64-encode-step"></a>gsf_base64_encode_step ()</h3>
+<a class="indexterm" name="id2581879"></a><pre class="programlisting">size_t      gsf_base64_encode_step          (guint8 const *in,
+                                             size_t len,
+                                             gboolean break_lines,
+                                             guint8 *out,
+                                             int *state,
+                                             guint *save);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>in</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>break_lines</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>out</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>save</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582040"></a><h3>
+<a name="gsf-base64-decode-simple"></a>gsf_base64_decode_simple ()</h3>
+<a class="indexterm" name="id2582051"></a><pre class="programlisting">size_t      gsf_base64_decode_simple        (guint8 *data,
+                                             size_t len);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582128"></a><h3>
+<a name="gsf-base64-decode-step"></a>gsf_base64_decode_step ()</h3>
+<a class="indexterm" name="id2582139"></a><pre class="programlisting">size_t      gsf_base64_decode_step          (guint8 const *in,
+                                             size_t len,
+                                             guint8 *out,
+                                             int *state,
+                                             guint *save);</pre>
+<p>
+Decodes a chunk of base64 encoded data</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>in</code></em>&#160;:</span></td>
+<td> input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em>&#160;:</span></td>
+<td> max length of data to decode
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>out</code></em>&#160;:</span></td>
+<td> output stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em>&#160;:</span></td>
+<td> holds the number of bits that are stored in <em class="parameter"><code>save</code></em>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>save</code></em>&#160;:</span></td>
+<td> leftover bits that have not yet been decoded
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the number of bytes converted
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582292"></a><h3>
+<a name="GSF-LE-GET-GINT8:CAPS"></a>GSF_LE_GET_GINT8()</h3>
+<a class="indexterm" name="id2582304"></a><pre class="programlisting">#define GSF_LE_GET_GINT8(p) ((gint8)GSF_LE_GET_GUINT8(p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582337"></a><h3>
+<a name="GSF-LE-GET-GUINT64:CAPS"></a>GSF_LE_GET_GUINT64()</h3>
+<a class="indexterm" name="id2582347"></a><pre class="programlisting">#define GSF_LE_GET_GUINT64(p) (gsf_le_get_guint64 (p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582380"></a><h3>
+<a name="GSF-LE-GET-GINT16:CAPS"></a>GSF_LE_GET_GINT16()</h3>
+<a class="indexterm" name="id2582392"></a><pre class="programlisting">#define GSF_LE_GET_GINT16(p) ((gint16)GSF_LE_GET_GUINT16(p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582425"></a><h3>
+<a name="GSF-LE-GET-GUINT8:CAPS"></a>GSF_LE_GET_GUINT8()</h3>
+<a class="indexterm" name="id2582436"></a><pre class="programlisting">#define GSF_LE_GET_GUINT8(p) (*(guint8 const *)(p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582470"></a><h3>
+<a name="GSF-LE-GET-GINT32:CAPS"></a>GSF_LE_GET_GINT32()</h3>
+<a class="indexterm" name="id2582481"></a><pre class="programlisting">#define GSF_LE_GET_GINT32(p) ((gint32)GSF_LE_GET_GUINT32(p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582514"></a><h3>
+<a name="GSF-LE-GET-GUINT16:CAPS"></a>GSF_LE_GET_GUINT16()</h3>
+<a class="indexterm" name="id2582525"></a><pre class="programlisting">#define     GSF_LE_GET_GUINT16(p)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582558"></a><h3>
+<a name="GSF-LE-GET-GUINT32:CAPS"></a>GSF_LE_GET_GUINT32()</h3>
+<a class="indexterm" name="id2582569"></a><pre class="programlisting">#define     GSF_LE_GET_GUINT32(p)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582602"></a><h3>
+<a name="GSF-LE-GET-GINT64:CAPS"></a>GSF_LE_GET_GINT64()</h3>
+<a class="indexterm" name="id2582612"></a><pre class="programlisting">#define GSF_LE_GET_GINT64(p) ((gint64)GSF_LE_GET_GUINT64(p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582646"></a><h3>
+<a name="gsf-le-get-guint64"></a>gsf_le_get_guint64 ()</h3>
+<a class="indexterm" name="id2582656"></a><pre class="programlisting">guint64     gsf_le_get_guint64              (void const *p);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582711"></a><h3>
+<a name="GSF-LE-GET-FLOAT:CAPS"></a>GSF_LE_GET_FLOAT()</h3>
+<a class="indexterm" name="id2582723"></a><pre class="programlisting">#define GSF_LE_GET_FLOAT(p) (gsf_le_get_float (p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582756"></a><h3>
+<a name="gsf-le-get-float"></a>gsf_le_get_float ()</h3>
+<a class="indexterm" name="id2582766"></a><pre class="programlisting">float       gsf_le_get_float                (void const *p);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582822"></a><h3>
+<a name="GSF-LE-GET-DOUBLE:CAPS"></a>GSF_LE_GET_DOUBLE()</h3>
+<a class="indexterm" name="id2582833"></a><pre class="programlisting">#define GSF_LE_GET_DOUBLE(p) (gsf_le_get_double (p))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582867"></a><h3>
+<a name="gsf-le-get-double"></a>gsf_le_get_double ()</h3>
+<a class="indexterm" name="id2582877"></a><pre class="programlisting">double      gsf_le_get_double               (void const *p);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582932"></a><h3>
+<a name="GSF-LE-SET-GUINT8:CAPS"></a>GSF_LE_SET_GUINT8()</h3>
+<a class="indexterm" name="id2582944"></a><pre class="programlisting">#define     GSF_LE_SET_GUINT8(p, dat)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2582990"></a><h3>
+<a name="GSF-LE-SET-GUINT16:CAPS"></a>GSF_LE_SET_GUINT16()</h3>
+<a class="indexterm" name="id2583000"></a><pre class="programlisting">#define     GSF_LE_SET_GUINT16(p, dat)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583047"></a><h3>
+<a name="GSF-LE-SET-GUINT32:CAPS"></a>GSF_LE_SET_GUINT32()</h3>
+<a class="indexterm" name="id2583057"></a><pre class="programlisting">#define     GSF_LE_SET_GUINT32(p, dat)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583104"></a><h3>
+<a name="GSF-LE-SET-GINT8:CAPS"></a>GSF_LE_SET_GINT8()</h3>
+<a class="indexterm" name="id2583115"></a><pre class="programlisting">#define GSF_LE_SET_GINT8(p,dat) GSF_LE_SET_GUINT8((p),(dat))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583162"></a><h3>
+<a name="GSF-LE-SET-GINT16:CAPS"></a>GSF_LE_SET_GINT16()</h3>
+<a class="indexterm" name="id2583173"></a><pre class="programlisting">#define GSF_LE_SET_GINT16(p,dat) GSF_LE_SET_GUINT16((p),(dat))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583219"></a><h3>
+<a name="GSF-LE-SET-GINT32:CAPS"></a>GSF_LE_SET_GINT32()</h3>
+<a class="indexterm" name="id2583230"></a><pre class="programlisting">#define GSF_LE_SET_GINT32(p,dat) GSF_LE_SET_GUINT32((p),(dat))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583277"></a><h3>
+<a name="GSF-LE-SET-GINT64:CAPS"></a>GSF_LE_SET_GINT64()</h3>
+<a class="indexterm" name="id2583287"></a><pre class="programlisting">#define GSF_LE_SET_GINT64(p,dat) GSF_LE_SET_GUINT64((p),(dat))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583334"></a><h3>
+<a name="GSF-LE-SET-GUINT64:CAPS"></a>GSF_LE_SET_GUINT64()</h3>
+<a class="indexterm" name="id2583344"></a><pre class="programlisting">#define     GSF_LE_SET_GUINT64(p, dat)</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583391"></a><h3>
+<a name="GSF-LE-SET-FLOAT:CAPS"></a>GSF_LE_SET_FLOAT()</h3>
+<a class="indexterm" name="id2583402"></a><pre class="programlisting">#define GSF_LE_SET_FLOAT(p,dat) gsf_le_set_float((p),(dat))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583449"></a><h3>
+<a name="GSF-LE-SET-DOUBLE:CAPS"></a>GSF_LE_SET_DOUBLE()</h3>
+<a class="indexterm" name="id2583460"></a><pre class="programlisting">#define GSF_LE_SET_DOUBLE(p,dat) gsf_le_set_double((p),(dat))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583506"></a><h3>
+<a name="gsf-le-set-float"></a>gsf_le_set_float ()</h3>
+<a class="indexterm" name="id2583516"></a><pre class="programlisting">void        gsf_le_set_float                (void *p,
+                                             float f);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>f</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583582"></a><h3>
+<a name="gsf-le-set-double"></a>gsf_le_set_double ()</h3>
+<a class="indexterm" name="id2583594"></a><pre class="programlisting">void        gsf_le_set_double               (void *p,
+                                             double d);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>d</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583660"></a><h3>
+<a name="GsfTimestamp"></a>GsfTimestamp</h3>
+<a class="indexterm" name="id2583670"></a><pre class="programlisting">typedef struct {
+	GDate	  date;			/* In local timezone */
+	glong     seconds;		/* time of day */
+	GString	  time_zone;		/* possibly blank */
+
+	guint32	  timet;
+} GsfTimestamp;
+</pre>
+<p>
+
+</p>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583688"></a><h3>
+<a name="gsf-timestamp-new"></a>gsf_timestamp_new ()</h3>
+<a class="indexterm" name="id2583699"></a><pre class="programlisting"><a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a>* gsf_timestamp_new             (GDate const *date,
+                                             glong seconds,
+                                             char const *tz);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>date</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>seconds</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>tz</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583798"></a><h3>
+<a name="gsf-timestamp-new-now"></a>gsf_timestamp_new_now ()</h3>
+<a class="indexterm" name="id2583809"></a><pre class="programlisting"><a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a>* gsf_timestamp_new_now         (void);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583845"></a><h3>
+<a name="gsf-timestamp-copy"></a>gsf_timestamp_copy ()</h3>
+<a class="indexterm" name="id2583856"></a><pre class="programlisting"><a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a>* gsf_timestamp_copy            (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583913"></a><h3>
+<a name="gsf-timestamp-free"></a>gsf_timestamp_free ()</h3>
+<a class="indexterm" name="id2583924"></a><pre class="programlisting">void        gsf_timestamp_free              (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> *stamp);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2583970"></a><h3>
+<a name="gsf-timestamp-as-string"></a>gsf_timestamp_as_string ()</h3>
+<a class="indexterm" name="id2583981"></a><pre class="programlisting">char*       gsf_timestamp_as_string         (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584037"></a><h3>
+<a name="gsf-timestamp-parse"></a>gsf_timestamp_parse ()</h3>
+<a class="indexterm" name="id2584049"></a><pre class="programlisting">int         gsf_timestamp_parse             (char const *spec,
+                                             <a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> *stamp);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>spec</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584125"></a><h3>
+<a name="gsf-timestamp-hash"></a>gsf_timestamp_hash ()</h3>
+<a class="indexterm" name="id2584136"></a><pre class="programlisting">guint       gsf_timestamp_hash              (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584193"></a><h3>
+<a name="gsf-timestamp-equal"></a>gsf_timestamp_equal ()</h3>
+<a class="indexterm" name="id2584204"></a><pre class="programlisting">gboolean    gsf_timestamp_equal             (<a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *a,
+                                             <a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *b);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>a</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>b</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584281"></a><h3>
+<a name="gsf-value-set-timestamp"></a>gsf_value_set_timestamp ()</h3>
+<a class="indexterm" name="id2584291"></a><pre class="programlisting">void        gsf_value_set_timestamp         (GValue *value,
+                                             <a href="gsf-utils.html#GsfTimestamp">GsfTimestamp</a> const *stamp);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>value</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584359"></a><h3>
+<a name="VAL-IS-GSF-TIMESTAMP:CAPS"></a>VAL_IS_GSF_TIMESTAMP()</h3>
+<a class="indexterm" name="id2584370"></a><pre class="programlisting">#define VAL_IS_GSF_TIMESTAMP(v) (G_TYPE_CHECK_VALUE_TYPE((v), GSF_TIMESTAMP_TYPE))
+</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term"><em class="parameter"><code>v</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584404"></a><h3>
+<a name="gsf-doc-prop-swap-val"></a>gsf_doc_prop_swap_val ()</h3>
+<a class="indexterm" name="id2584415"></a><pre class="programlisting">GValue*     gsf_doc_prop_swap_val           (<a href="gsf-metadata.html#GsfDocProp">GsfDocProp</a> *prop,
+                                             GValue *val);</pre>
+<p>
+</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prop</code></em>&#160;:</span></td>
+<td> <a href="gsf-metadata.html#GsfDocProp"><span class="type">GsfDocProp</span></a>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em>&#160;:</span></td>
+<td> <span class="type">GValue</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></td>
+<td>the current value of <em class="parameter"><code>prop</code></em>, and replaces it with <em class="parameter"><code>val</code></em>
+	Caller is responsible for unsetting and freeing the result.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584524"></a><h3>
+<a name="gsf-property-settings-collect"></a>gsf_property_settings_collect ()</h3>
+<a class="indexterm" name="id2584536"></a><pre class="programlisting">void        gsf_property_settings_collect   (GType object_type,
+                                             GParameter **p_params,
+                                             size_t *p_n_params,
+                                             const gchar *first_property_name,
+                                             ...);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>object_type</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p_params</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p_n_params</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em>&#160;:</span></td>
+<td>
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584660"></a><h3>
+<a name="gsf-property-settings-collect-valist"></a>gsf_property_settings_collect_valist ()</h3>
+<a class="indexterm" name="id2584672"></a><pre class="programlisting">void        gsf_property_settings_collect_valist
+                                            (GType object_type,
+                                             GParameter **p_params,
+                                             size_t *p_n_params,
+                                             const gchar *first_property_name,
+                                             va_list var_args);</pre>
+<p>
+This function builds a GParameter array suitable for g_object_newv.</p>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>object_type</code></em>&#160;:</span></td>
+<td> the GType for which the properties are being set.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p_params</code></em>&#160;:</span></td>
+<td> a pointer to the GParameter array that holds the properties.
+  (Used for both input and output.  This may point to a NULL pointer if
+  there are no properties collected yet.)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p_n_params</code></em>&#160;:</span></td>
+<td> a pointer to the number of properties collected.  (Used for
+  both input and output.)
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em>&#160;:</span></td>
+<td> the name of the first property being set, or NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>var_args</code></em>&#160;:</span></td>
+<td> a va_list holding the remainder of the property names and
+  values, terminated by a NULL.
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2" lang="en">
+<a name="id2584817"></a><h3>
+<a name="gsf-property-settings-free"></a>gsf_property_settings_free ()</h3>
+<a class="indexterm" name="id2584829"></a><pre class="programlisting">void        gsf_property_settings_free      (GParameter *params,
+                                             size_t n_params);</pre>
+<p>
+
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>params</code></em>&#160;:</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>n_params</code></em>&#160;:</span></td>
+<td>
+
+
+
+
+
+
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="misc.html"><b>&lt;&lt;&#160;Miscellaneous</b></a></td>
+<td align="right"><a accesskey="n" href="ix01.html"><b>Index&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf.devhelp
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf.devhelp	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/gsf.devhelp	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<book xmlns="http://www.devhelp.net/book" title="GSF Reference Manual" link="index.html" author="" name="gsf">
+  <chapters>
+    <sub name="GSF Overview" link="into.html"/>
+    <sub name="API Reference" link="api.html">
+      <sub name="Basic Input/Output" link="io.html">
+        <sub name="Input from unstructured files" link="gsf-Input-from-unstructured-files.html"/>
+        <sub name="Output to unstructured files" link="gsf-Output-to-unstructured-files.html"/>
+      </sub>
+      <sub name="Stream Sources" link="sources.html">
+        <sub name="Infile reading structed files" link="gsf-Infile-reading-structed-files.html"/>
+        <sub name="Outfile writing structed files" link="gsf-Outfile-writing-structed-files.html"/>
+        <sub name="Reading and Writing from local files and directories" link="gsf-Reading-and-Writing-from-local-files-and-directories.html"/>
+        <sub name="memory" link="gsf-memory.html"/>
+        <sub name="GIOChannel" link="gsf-GIOChannel.html"/>
+        <sub name="GnomeVFS" link="gsf-GnomeVFS.html"/>
+        <sub name="Bononbo" link="gsf-Bononbo.html"/>
+      </sub>
+      <sub name="Stream Parsers" link="parsers.html">
+        <sub name="Text" link="gsf-Text.html"/>
+        <sub name="XML and libxml" link="gsf-XML-and-libxml.html"/>
+        <sub name="Zip" link="gsf-Zip.html"/>
+        <sub name="Compression" link="gsf-Compression.html"/>
+        <sub name="MS OLE2" link="gsf-MS-OLE2.html"/>
+        <sub name="metadata" link="gsf-metadata.html"/>
+        <sub name="GsfBlob" link="gsf-GsfBlob.html"/>
+        <sub name="GsfClipData" link="gsf-GsfClipData.html"/>
+        <sub name="Structured Blobs" link="gsf-Structured-Blobs.html"/>
+      </sub>
+      <sub name="Miscellaneous" link="misc.html">
+        <sub name="utils" link="gsf-utils.html"/>
+      </sub>
+    </sub>
+    <sub name="" link="ix01.html"/>
+  </chapters>
+  <functions>
+    <function name="GsfInput" link="gsf-Input-from-unstructured-files.html#GsfInput-struct"/>
+    <function name="gsf_input_read ()" link="gsf-Input-from-unstructured-files.html#gsf-input-read"/>
+    <function name="gsf_input_tell ()" link="gsf-Input-from-unstructured-files.html#gsf-input-tell"/>
+    <function name="gsf_input_seek ()" link="gsf-Input-from-unstructured-files.html#gsf-input-seek"/>
+    <function name="gsf_input_container ()" link="gsf-Input-from-unstructured-files.html#gsf-input-container"/>
+    <function name="gsf_input_dup ()" link="gsf-Input-from-unstructured-files.html#gsf-input-dup"/>
+    <function name="gsf_input_size ()" link="gsf-Input-from-unstructured-files.html#gsf-input-size"/>
+    <function name="gsf_input_eof ()" link="gsf-Input-from-unstructured-files.html#gsf-input-eof"/>
+    <function name="gsf_input_remaining ()" link="gsf-Input-from-unstructured-files.html#gsf-input-remaining"/>
+    <function name="gsf_input_error_id ()" link="gsf-Input-from-unstructured-files.html#gsf-input-error-id"/>
+    <function name="gsf_input_sibling ()" link="gsf-Input-from-unstructured-files.html#gsf-input-sibling"/>
+    <function name="gsf_input_error ()" link="gsf-Input-from-unstructured-files.html#gsf-input-error"/>
+    <function name="gsf_input_name ()" link="gsf-Input-from-unstructured-files.html#gsf-input-name"/>
+    <function name="gsf_input_set_name_from_filename ()" link="gsf-Input-from-unstructured-files.html#gsf-input-set-name-from-filename"/>
+    <function name="GsfInputProxy" link="gsf-Input-from-unstructured-files.html#GsfInputProxy"/>
+    <function name="gsf_input_proxy_new ()" link="gsf-Input-from-unstructured-files.html#gsf-input-proxy-new"/>
+    <function name="gsf_input_proxy_new_section ()" link="gsf-Input-from-unstructured-files.html#gsf-input-proxy-new-section"/>
+    <function name="gsf_input_copy ()" link="gsf-Input-from-unstructured-files.html#gsf-input-copy"/>
+    <function name="gsf_input_uncompress ()" link="gsf-Input-from-unstructured-files.html#gsf-input-uncompress"/>
+    <function name="gsf_input_set_name ()" link="gsf-Input-from-unstructured-files.html#gsf-input-set-name"/>
+    <function name="gsf_input_set_container ()" link="gsf-Input-from-unstructured-files.html#gsf-input-set-container"/>
+    <function name="gsf_input_set_size ()" link="gsf-Input-from-unstructured-files.html#gsf-input-set-size"/>
+    <function name="gsf_input_seek_emulate ()" link="gsf-Input-from-unstructured-files.html#gsf-input-seek-emulate"/>
+    <function name="The &quot;eof&quot; property" link="gsf-Input-from-unstructured-files.html#GsfInput--eof"/>
+    <function name="The &quot;name&quot; property" link="gsf-Input-from-unstructured-files.html#GsfInput--name"/>
+    <function name="The &quot;position&quot; property" link="gsf-Input-from-unstructured-files.html#GsfInput--position"/>
+    <function name="The &quot;remaining&quot; property" link="gsf-Input-from-unstructured-files.html#GsfInput--remaining"/>
+    <function name="The &quot;size&quot; property" link="gsf-Input-from-unstructured-files.html#GsfInput--size"/>
+    <function name="GsfOutput" link="gsf-Output-to-unstructured-files.html#GsfOutput-struct"/>
+    <function name="gsf_output_container ()" link="gsf-Output-to-unstructured-files.html#gsf-output-container"/>
+    <function name="gsf_output_size ()" link="gsf-Output-to-unstructured-files.html#gsf-output-size"/>
+    <function name="gsf_output_close ()" link="gsf-Output-to-unstructured-files.html#gsf-output-close"/>
+    <function name="gsf_output_tell ()" link="gsf-Output-to-unstructured-files.html#gsf-output-tell"/>
+    <function name="gsf_output_seek ()" link="gsf-Output-to-unstructured-files.html#gsf-output-seek"/>
+    <function name="gsf_output_write ()" link="gsf-Output-to-unstructured-files.html#gsf-output-write"/>
+    <function name="gsf_output_puts ()" link="gsf-Output-to-unstructured-files.html#gsf-output-puts"/>
+    <function name="gsf_output_printf ()" link="gsf-Output-to-unstructured-files.html#gsf-output-printf"/>
+    <function name="gsf_output_vprintf ()" link="gsf-Output-to-unstructured-files.html#gsf-output-vprintf"/>
+    <function name="gsf_output_name ()" link="gsf-Output-to-unstructured-files.html#gsf-output-name"/>
+    <function name="gsf_output_set_name_from_filename ()" link="gsf-Output-to-unstructured-files.html#gsf-output-set-name-from-filename"/>
+    <function name="gsf_output_error_id ()" link="gsf-Output-to-unstructured-files.html#gsf-output-error-id"/>
+    <function name="gsf_output_set_error ()" link="gsf-Output-to-unstructured-files.html#gsf-output-set-error"/>
+    <function name="gsf_output_error ()" link="gsf-Output-to-unstructured-files.html#gsf-output-error"/>
+    <function name="gsf_output_is_closed ()" link="gsf-Output-to-unstructured-files.html#gsf-output-is-closed"/>
+    <function name="gsf_output_wrap ()" link="gsf-Output-to-unstructured-files.html#gsf-output-wrap"/>
+    <function name="gsf_output_unwrap ()" link="gsf-Output-to-unstructured-files.html#gsf-output-unwrap"/>
+    <function name="gsf_output_set_name ()" link="gsf-Output-to-unstructured-files.html#gsf-output-set-name"/>
+    <function name="gsf_output_set_container ()" link="gsf-Output-to-unstructured-files.html#gsf-output-set-container"/>
+    <function name="The &quot;is-closed&quot; property" link="gsf-Output-to-unstructured-files.html#GsfOutput--is-closed"/>
+    <function name="The &quot;name&quot; property" link="gsf-Output-to-unstructured-files.html#GsfOutput--name"/>
+    <function name="The &quot;position&quot; property" link="gsf-Output-to-unstructured-files.html#GsfOutput--position"/>
+    <function name="The &quot;size&quot; property" link="gsf-Output-to-unstructured-files.html#GsfOutput--size"/>
+    <function name="GsfInfile" link="gsf-Infile-reading-structed-files.html#GsfInfile-struct"/>
+    <function name="gsf_infile_num_children ()" link="gsf-Infile-reading-structed-files.html#gsf-infile-num-children"/>
+    <function name="gsf_infile_child_by_index ()" link="gsf-Infile-reading-structed-files.html#gsf-infile-child-by-index"/>
+    <function name="gsf_infile_child_by_name ()" link="gsf-Infile-reading-structed-files.html#gsf-infile-child-by-name"/>
+    <function name="gsf_infile_child_by_vname ()" link="gsf-Infile-reading-structed-files.html#gsf-infile-child-by-vname"/>
+    <function name="gsf_infile_name_by_index ()" link="gsf-Infile-reading-structed-files.html#gsf-infile-name-by-index"/>
+    <function name="GsfOutfile" link="gsf-Outfile-writing-structed-files.html#GsfOutfile-struct"/>
+    <function name="gsf_outfile_new_child ()" link="gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child"/>
+    <function name="gsf_outfile_new_child_full ()" link="gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child-full"/>
+    <function name="gsf_outfile_new_child_varg ()" link="gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child-varg"/>
+    <function name="GsfInputStdio" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInputStdio-struct"/>
+    <function name="gsf_input_stdio_new ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-input-stdio-new"/>
+    <function name="GsfOutputStdio" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutputStdio-struct"/>
+    <function name="gsf_output_stdio_new ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new"/>
+    <function name="gsf_output_stdio_new_full ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-full"/>
+    <function name="gsf_output_stdio_new_valist ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-valist"/>
+    <function name="gsf_output_stdio_new_FILE ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-FILE"/>
+    <function name="GsfOutfileStdio" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutfileStdio-struct"/>
+    <function name="gsf_outfile_stdio_new ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new"/>
+    <function name="gsf_outfile_stdio_new_full ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new-full"/>
+    <function name="gsf_outfile_stdio_new_valist ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new-valist"/>
+    <function name="GsfInfileStdio" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInfileStdio-struct"/>
+    <function name="gsf_infile_stdio_new ()" link="gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-infile-stdio-new"/>
+    <function name="GsfInputMemory" link="gsf-memory.html#GsfInputMemory-struct"/>
+    <function name="gsf_input_mmap_new ()" link="gsf-memory.html#gsf-input-mmap-new"/>
+    <function name="gsf_input_memory_new ()" link="gsf-memory.html#gsf-input-memory-new"/>
+    <function name="gsf_input_memory_new_clone ()" link="gsf-memory.html#gsf-input-memory-new-clone"/>
+    <function name="gsf_input_memory_new_from_iochannel ()" link="gsf-memory.html#gsf-input-memory-new-from-iochannel"/>
+    <function name="GsfOutputMemory" link="gsf-memory.html#GsfOutputMemory-struct"/>
+    <function name="gsf_output_memory_get_bytes ()" link="gsf-memory.html#gsf-output-memory-get-bytes"/>
+    <function name="gsf_output_memory_get_type ()" link="gsf-memory.html#gsf-output-memory-get-type"/>
+    <function name="gsf_output_memory_new ()" link="gsf-memory.html#gsf-output-memory-new"/>
+    <function name="GsfSharedMemory" link="gsf-memory.html#GsfSharedMemory-struct"/>
+    <function name="gsf_shared_memory_new ()" link="gsf-memory.html#gsf-shared-memory-new"/>
+    <function name="gsf_shared_memory_mmapped_new ()" link="gsf-memory.html#gsf-shared-memory-mmapped-new"/>
+    <function name="GsfOutputIOChannel" link="gsf-GIOChannel.html#GsfOutputIOChannel-struct"/>
+    <function name="gsf_output_iochannel_new ()" link="gsf-GIOChannel.html#gsf-output-iochannel-new"/>
+    <function name="GsfInputGnomeVFS" link="gsf-GnomeVFS.html#GsfInputGnomeVFS"/>
+    <function name="gsf_input_gnomevfs_new ()" link="gsf-GnomeVFS.html#gsf-input-gnomevfs-new"/>
+    <function name="gsf_input_gnomevfs_new_uri ()" link="gsf-GnomeVFS.html#gsf-input-gnomevfs-new-uri"/>
+    <function name="gsf_input_gnomevfs_needs_local_copy ()" link="gsf-GnomeVFS.html#gsf-input-gnomevfs-needs-local-copy"/>
+    <function name="GsfOutputGnomeVFS" link="gsf-GnomeVFS.html#GsfOutputGnomeVFS"/>
+    <function name="gsf_output_gnomevfs_new ()" link="gsf-GnomeVFS.html#gsf-output-gnomevfs-new"/>
+    <function name="gsf_output_gnomevfs_new_uri ()" link="gsf-GnomeVFS.html#gsf-output-gnomevfs-new-uri"/>
+    <function name="GsfInputBonobo" link="gsf-Bononbo.html#GsfInputBonobo"/>
+    <function name="gsf_input_bonobo_new ()" link="gsf-Bononbo.html#gsf-input-bonobo-new"/>
+    <function name="GsfOutputBonobo" link="gsf-Bononbo.html#GsfOutputBonobo"/>
+    <function name="gsf_output_bonobo_new ()" link="gsf-Bononbo.html#gsf-output-bonobo-new"/>
+    <function name="GsfSharedBonoboStream" link="gsf-Bononbo.html#GsfSharedBonoboStream"/>
+    <function name="gsf_shared_bonobo_stream_new ()" link="gsf-Bononbo.html#gsf-shared-bonobo-stream-new"/>
+    <function name="GsfInputTextline" link="gsf-Text.html#GsfInputTextline-struct"/>
+    <function name="gsf_input_textline_new ()" link="gsf-Text.html#gsf-input-textline-new"/>
+    <function name="gsf_input_textline_ascii_gets ()" link="gsf-Text.html#gsf-input-textline-ascii-gets"/>
+    <function name="gsf_input_textline_utf8_gets ()" link="gsf-Text.html#gsf-input-textline-utf8-gets"/>
+    <function name="GsfOutputIconv" link="gsf-Text.html#GsfOutputIconv"/>
+    <function name="gsf_output_iconv_new ()" link="gsf-Text.html#gsf-output-iconv-new"/>
+    <function name="GsfOutputCsv" link="gsf-Text.html#GsfOutputCsv"/>
+    <function name="gsf_output_csv_write_eol ()" link="gsf-Text.html#gsf-output-csv-write-eol"/>
+    <function name="gsf_output_csv_write_field ()" link="gsf-Text.html#gsf-output-csv-write-field"/>
+    <function name="enum GsfOutputCsvQuotingMode" link="gsf-Text.html#GsfOutputCsvQuotingMode"/>
+    <function name="GSF_XML_IN_NS()" link="gsf-XML-and-libxml.html#GSF-XML-IN-NS:CAPS"/>
+    <function name="enum GsfXMLContent" link="gsf-XML-and-libxml.html#GsfXMLContent"/>
+    <function name="GsfXMLIn" link="gsf-XML-and-libxml.html#GsfXMLIn"/>
+    <function name="gsf_xmlDocFormatDump ()" link="gsf-XML-and-libxml.html#gsf-xmlDocFormatDump"/>
+    <function name="gsf_xml_in_doc_free ()" link="gsf-XML-and-libxml.html#gsf-xml-in-doc-free"/>
+    <function name="GsfXMLBlob" link="gsf-XML-and-libxml.html#GsfXMLBlob"/>
+    <function name="GsfXMLOut" link="gsf-XML-and-libxml.html#GsfXMLOut-struct"/>
+    <function name="GsfXMLInDoc" link="gsf-XML-and-libxml.html#GsfXMLInDoc"/>
+    <function name="GsfXMLInNS" link="gsf-XML-and-libxml.html#GsfXMLInNS"/>
+    <function name="GSF_XML_IN_NODE_FULL()" link="gsf-XML-and-libxml.html#GSF-XML-IN-NODE-FULL:CAPS"/>
+    <function name="GSF_XML_IN_NODE()" link="gsf-XML-and-libxml.html#GSF-XML-IN-NODE:CAPS"/>
+    <function name="GsfXMLInNode" link="gsf-XML-and-libxml.html#GsfXMLInNode"/>
+    <function name="GsfXMLInUnknownFunc ()" link="gsf-XML-and-libxml.html#GsfXMLInUnknownFunc"/>
+    <function name="gsf_xml_parser_context ()" link="gsf-XML-and-libxml.html#gsf-xml-parser-context"/>
+    <function name="gsf_xml_in_doc_new ()" link="gsf-XML-and-libxml.html#gsf-xml-in-doc-new"/>
+    <function name="gsf_xml_in_namecmp ()" link="gsf-XML-and-libxml.html#gsf-xml-in-namecmp"/>
+    <function name="gsf_xml_in_parse ()" link="gsf-XML-and-libxml.html#gsf-xml-in-parse"/>
+    <function name="gsf_xml_in_check_ns ()" link="gsf-XML-and-libxml.html#gsf-xml-in-check-ns"/>
+    <function name="gsf_xml_in_doc_extend ()" link="gsf-XML-and-libxml.html#gsf-xml-in-doc-extend"/>
+    <function name="gsf_xml_in_doc_set_unknown_handler ()" link="gsf-XML-and-libxml.html#gsf-xml-in-doc-set-unknown-handler"/>
+    <function name="gsf_xml_out_new ()" link="gsf-XML-and-libxml.html#gsf-xml-out-new"/>
+    <function name="gsf_xml_out_set_doc_type ()" link="gsf-XML-and-libxml.html#gsf-xml-out-set-doc-type"/>
+    <function name="gsf_xml_out_start_element ()" link="gsf-XML-and-libxml.html#gsf-xml-out-start-element"/>
+    <function name="gsf_xml_out_end_element ()" link="gsf-XML-and-libxml.html#gsf-xml-out-end-element"/>
+    <function name="gsf_xml_out_add_cstr ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-cstr"/>
+    <function name="gsf_xml_out_add_cstr_unchecked ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-cstr-unchecked"/>
+    <function name="gsf_xml_out_add_bool ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-bool"/>
+    <function name="gsf_xml_out_add_int ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-int"/>
+    <function name="gsf_xml_out_add_uint ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-uint"/>
+    <function name="gsf_xml_out_add_float ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-float"/>
+    <function name="gsf_xml_out_add_enum ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-enum"/>
+    <function name="gsf_xml_out_add_color ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-color"/>
+    <function name="gsf_xml_out_add_base64 ()" link="gsf-XML-and-libxml.html#gsf-xml-out-add-base64"/>
+    <function name="gsf_xml_out_simple_element ()" link="gsf-XML-and-libxml.html#gsf-xml-out-simple-element"/>
+    <function name="gsf_xml_out_simple_float_element ()" link="gsf-XML-and-libxml.html#gsf-xml-out-simple-float-element"/>
+    <function name="gsf_xml_out_simple_int_element ()" link="gsf-XML-and-libxml.html#gsf-xml-out-simple-int-element"/>
+    <function name="GsfInfileZip" link="gsf-Zip.html#GsfInfileZip-struct"/>
+    <function name="gsf_infile_zip_new ()" link="gsf-Zip.html#gsf-infile-zip-new"/>
+    <function name="GsfOutfileZip" link="gsf-Zip.html#GsfOutfileZip-struct"/>
+    <function name="gsf_outfile_zip_new ()" link="gsf-Zip.html#gsf-outfile-zip-new"/>
+    <function name="gsf_outfile_zip_set_compression_method ()" link="gsf-Zip.html#gsf-outfile-zip-set-compression-method"/>
+    <function name="GsfZipDirent" link="gsf-Zip.html#GsfZipDirent"/>
+    <function name="gsf_zip_dirent_new ()" link="gsf-Zip.html#gsf-zip-dirent-new"/>
+    <function name="gsf_zip_dirent_free ()" link="gsf-Zip.html#gsf-zip-dirent-free"/>
+    <function name="GsfZipVDir" link="gsf-Zip.html#GsfZipVDir"/>
+    <function name="gsf_vdir_free ()" link="gsf-Zip.html#gsf-vdir-free"/>
+    <function name="gsf_vdir_new ()" link="gsf-Zip.html#gsf-vdir-new"/>
+    <function name="gsf_vdir_add_child ()" link="gsf-Zip.html#gsf-vdir-add-child"/>
+    <function name="ZIP_DIRENT_USIZE" link="gsf-Zip.html#ZIP-DIRENT-USIZE:CAPS"/>
+    <function name="ZIP_DIRENT_OFFSET" link="gsf-Zip.html#ZIP-DIRENT-OFFSET:CAPS"/>
+    <function name="enum GsfZipCompressionMethod" link="gsf-Zip.html#GsfZipCompressionMethod"/>
+    <function name="ZIP_FILE_HEADER_NAME_SIZE" link="gsf-Zip.html#ZIP-FILE-HEADER-NAME-SIZE:CAPS"/>
+    <function name="ZZIP_IS_STREAMED()" link="gsf-Zip.html#ZZIP-IS-STREAMED:CAPS"/>
+    <function name="ZIP_FILE_HEADER_EXTRACT" link="gsf-Zip.html#ZIP-FILE-HEADER-EXTRACT:CAPS"/>
+    <function name="ZIP_TRAILER_SIZE" link="gsf-Zip.html#ZIP-TRAILER-SIZE:CAPS"/>
+    <function name="ZIP_HEADER_TIME" link="gsf-Zip.html#ZIP-HEADER-TIME:CAPS"/>
+    <function name="ZIP_FILE_HEADER_SIZE" link="gsf-Zip.html#ZIP-FILE-HEADER-SIZE:CAPS"/>
+    <function name="ZZIP_IS_ENCRYPTED()" link="gsf-Zip.html#ZZIP-IS-ENCRYPTED:CAPS"/>
+    <function name="ZIP_HEADER_VERSION" link="gsf-Zip.html#ZIP-HEADER-VERSION:CAPS"/>
+    <function name="ZIP_BUF_SIZE" link="gsf-Zip.html#ZIP-BUF-SIZE:CAPS"/>
+    <function name="ZIP_DIRENT_CRC32" link="gsf-Zip.html#ZIP-DIRENT-CRC32:CAPS"/>
+    <function name="ZIP_HEADER_COMP_SIZE" link="gsf-Zip.html#ZIP-HEADER-COMP-SIZE:CAPS"/>
+    <function name="ZIP_DIRENT_COMPR_METHOD" link="gsf-Zip.html#ZIP-DIRENT-COMPR-METHOD:CAPS"/>
+    <function name="ZIP_DIRENT_FILE_TYPE" link="gsf-Zip.html#ZIP-DIRENT-FILE-TYPE:CAPS"/>
+    <function name="ZIP_FILE_HEADER_EXTRAS_SIZE" link="gsf-Zip.html#ZIP-FILE-HEADER-EXTRAS-SIZE:CAPS"/>
+    <function name="ZIP_DIRENT_EXTRACT" link="gsf-Zip.html#ZIP-DIRENT-EXTRACT:CAPS"/>
+    <function name="ZIP_DIRENT_FILE_MODE" link="gsf-Zip.html#ZIP-DIRENT-FILE-MODE:CAPS"/>
+    <function name="ZIP_DIRENT_FLAGS" link="gsf-Zip.html#ZIP-DIRENT-FLAGS:CAPS"/>
+    <function name="ZIP_FILE_HEADER_CSIZE" link="gsf-Zip.html#ZIP-FILE-HEADER-CSIZE:CAPS"/>
+    <function name="ZIP_TRAILER_DIR_SIZE" link="gsf-Zip.html#ZIP-TRAILER-DIR-SIZE:CAPS"/>
+    <function name="ZIP_TRAILER_COMMENT_SIZE" link="gsf-Zip.html#ZIP-TRAILER-COMMENT-SIZE:CAPS"/>
+    <function name="ZIP_TRAILER_ENTRIES" link="gsf-Zip.html#ZIP-TRAILER-ENTRIES:CAPS"/>
+    <function name="ZIP_NAME_SEPARATOR" link="gsf-Zip.html#ZIP-NAME-SEPARATOR:CAPS"/>
+    <function name="ZIP_HEADER_SIZE" link="gsf-Zip.html#ZIP-HEADER-SIZE:CAPS"/>
+    <function name="ZIP_HEADER_CRC" link="gsf-Zip.html#ZIP-HEADER-CRC:CAPS"/>
+    <function name="ZIP_FILE_HEADER_FLAGS" link="gsf-Zip.html#ZIP-FILE-HEADER-FLAGS:CAPS"/>
+    <function name="ZIP_DIRENT_EXTRAS_SIZE" link="gsf-Zip.html#ZIP-DIRENT-EXTRAS-SIZE:CAPS"/>
+    <function name="ZIP_HEADER_COMP_METHOD" link="gsf-Zip.html#ZIP-HEADER-COMP-METHOD:CAPS"/>
+    <function name="ZZIP_IS_COMPRLEVEL()" link="gsf-Zip.html#ZZIP-IS-COMPRLEVEL:CAPS"/>
+    <function name="ZIP_DIRENT_DOSTIME" link="gsf-Zip.html#ZIP-DIRENT-DOSTIME:CAPS"/>
+    <function name="ZIP_DIRENT_ENCODER" link="gsf-Zip.html#ZIP-DIRENT-ENCODER:CAPS"/>
+    <function name="ZIP_HEADER_OS" link="gsf-Zip.html#ZIP-HEADER-OS:CAPS"/>
+    <function name="ZIP_DIRENT_COMMENT_SIZE" link="gsf-Zip.html#ZIP-DIRENT-COMMENT-SIZE:CAPS"/>
+    <function name="ZIP_FILE_HEADER_CRC32" link="gsf-Zip.html#ZIP-FILE-HEADER-CRC32:CAPS"/>
+    <function name="ZIP_HEADER_FLAGS" link="gsf-Zip.html#ZIP-HEADER-FLAGS:CAPS"/>
+    <function name="ZIP_TRAILER_DISK" link="gsf-Zip.html#ZIP-TRAILER-DISK:CAPS"/>
+    <function name="ZIP_FILE_HEADER_USIZE" link="gsf-Zip.html#ZIP-FILE-HEADER-USIZE:CAPS"/>
+    <function name="ZIP_TRAILER_TOTAL_ENTRIES" link="gsf-Zip.html#ZIP-TRAILER-TOTAL-ENTRIES:CAPS"/>
+    <function name="ZIP_HEADER_NAME_LEN" link="gsf-Zip.html#ZIP-HEADER-NAME-LEN:CAPS"/>
+    <function name="ZIP_HEADER_UNCOMP_SIZE" link="gsf-Zip.html#ZIP-HEADER-UNCOMP-SIZE:CAPS"/>
+    <function name="ZIP_TRAILER_DIR_DISK" link="gsf-Zip.html#ZIP-TRAILER-DIR-DISK:CAPS"/>
+    <function name="ZIP_DIRENT_CSIZE" link="gsf-Zip.html#ZIP-DIRENT-CSIZE:CAPS"/>
+    <function name="ZIP_TRAILER_DIR_POS" link="gsf-Zip.html#ZIP-TRAILER-DIR-POS:CAPS"/>
+    <function name="ZIP_BLOCK_SIZE" link="gsf-Zip.html#ZIP-BLOCK-SIZE:CAPS"/>
+    <function name="ZIP_DIRENT_NAME_SIZE" link="gsf-Zip.html#ZIP-DIRENT-NAME-SIZE:CAPS"/>
+    <function name="ZIP_DIRENT_SIZE" link="gsf-Zip.html#ZIP-DIRENT-SIZE:CAPS"/>
+    <function name="ZIP_DIRENT_DISKSTART" link="gsf-Zip.html#ZIP-DIRENT-DISKSTART:CAPS"/>
+    <function name="ZIP_HEADER_EXTRA_LEN" link="gsf-Zip.html#ZIP-HEADER-EXTRA-LEN:CAPS"/>
+    <function name="ZIP_FILE_HEADER_COMPR_METHOD" link="gsf-Zip.html#ZIP-FILE-HEADER-COMPR-METHOD:CAPS"/>
+    <function name="ZIP_FILE_HEADER_DOSTIME" link="gsf-Zip.html#ZIP-FILE-HEADER-DOSTIME:CAPS"/>
+    <function name="The &quot;compression-level&quot; property" link="gsf-Zip.html#GsfInfileZip--compression-level"/>
+    <function name="The &quot;internal-parent&quot; property" link="gsf-Zip.html#GsfInfileZip--internal-parent"/>
+    <function name="The &quot;source&quot; property" link="gsf-Zip.html#GsfInfileZip--source"/>
+    <function name="The &quot;compression-level&quot; property" link="gsf-Zip.html#GsfOutfileZip--compression-level"/>
+    <function name="The &quot;entry-name&quot; property" link="gsf-Zip.html#GsfOutfileZip--entry-name"/>
+    <function name="The &quot;sink&quot; property" link="gsf-Zip.html#GsfOutfileZip--sink"/>
+    <function name="GsfInputGZip" link="gsf-Compression.html#GsfInputGZip-struct"/>
+    <function name="gsf_input_gzip_new ()" link="gsf-Compression.html#gsf-input-gzip-new"/>
+    <function name="gsf_input_memory_new_from_bzip ()" link="gsf-Compression.html#gsf-input-memory-new-from-bzip"/>
+    <function name="GsfOutputGZip" link="gsf-Compression.html#GsfOutputGZip"/>
+    <function name="gsf_output_gzip_new ()" link="gsf-Compression.html#gsf-output-gzip-new"/>
+    <function name="GsfOutputBzip" link="gsf-Compression.html#GsfOutputBzip-struct"/>
+    <function name="gsf_output_bzip_new ()" link="gsf-Compression.html#gsf-output-bzip-new"/>
+    <function name="The &quot;raw&quot; property" link="gsf-Compression.html#GsfInputGZip--raw"/>
+    <function name="The &quot;source&quot; property" link="gsf-Compression.html#GsfInputGZip--source"/>
+    <function name="The &quot;uncompressed-size&quot; property" link="gsf-Compression.html#GsfInputGZip--uncompressed-size"/>
+    <function name="GsfInfileMSOle" link="gsf-MS-OLE2.html#GsfInfileMSOle-struct"/>
+    <function name="gsf_infile_msole_new ()" link="gsf-MS-OLE2.html#gsf-infile-msole-new"/>
+    <function name="gsf_infile_msole_get_class_id ()" link="gsf-MS-OLE2.html#gsf-infile-msole-get-class-id"/>
+    <function name="GsfOutfileMSOle" link="gsf-MS-OLE2.html#GsfOutfileMSOle-struct"/>
+    <function name="gsf_outfile_msole_new ()" link="gsf-MS-OLE2.html#gsf-outfile-msole-new"/>
+    <function name="gsf_outfile_msole_new_full ()" link="gsf-MS-OLE2.html#gsf-outfile-msole-new-full"/>
+    <function name="gsf_outfile_msole_set_class_id ()" link="gsf-MS-OLE2.html#gsf-outfile-msole-set-class-id"/>
+    <function name="gsf_msole_metadata_read ()" link="gsf-MS-OLE2.html#gsf-msole-metadata-read"/>
+    <function name="gsf_msole_metadata_write ()" link="gsf-MS-OLE2.html#gsf-msole-metadata-write"/>
+    <function name="gsf_msole_iconv_open_codepages_for_export ()" link="gsf-MS-OLE2.html#gsf-msole-iconv-open-codepages-for-export"/>
+    <function name="gsf_msole_iconv_open_codepage_for_import ()" link="gsf-MS-OLE2.html#gsf-msole-iconv-open-codepage-for-import"/>
+    <function name="gsf_msole_iconv_open_for_export ()" link="gsf-MS-OLE2.html#gsf-msole-iconv-open-for-export"/>
+    <function name="gsf_msole_iconv_open_codepage_for_export ()" link="gsf-MS-OLE2.html#gsf-msole-iconv-open-codepage-for-export"/>
+    <function name="gsf_msole_iconv_open_for_import ()" link="gsf-MS-OLE2.html#gsf-msole-iconv-open-for-import"/>
+    <function name="gsf_msole_iconv_win_codepage ()" link="gsf-MS-OLE2.html#gsf-msole-iconv-win-codepage"/>
+    <function name="gsf_msole_codepage_to_lid ()" link="gsf-MS-OLE2.html#gsf-msole-codepage-to-lid"/>
+    <function name="gsf_msole_lid_to_codepage ()" link="gsf-MS-OLE2.html#gsf-msole-lid-to-codepage"/>
+    <function name="gsf_msole_lid_to_codepage_str ()" link="gsf-MS-OLE2.html#gsf-msole-lid-to-codepage-str"/>
+    <function name="gsf_msole_lid_for_language ()" link="gsf-MS-OLE2.html#gsf-msole-lid-for-language"/>
+    <function name="gsf_msole_language_for_lid ()" link="gsf-MS-OLE2.html#gsf-msole-language-for-lid"/>
+    <function name="gsf_msole_inflate ()" link="gsf-MS-OLE2.html#gsf-msole-inflate"/>
+    <function name="OLE_HEADER_START_BAT" link="gsf-MS-OLE2.html#OLE-HEADER-START-BAT:CAPS"/>
+    <function name="OLE_HEADER_MAJOR_VER" link="gsf-MS-OLE2.html#OLE-HEADER-MAJOR-VER:CAPS"/>
+    <function name="OLE_HEADER_METABAT_SIZE" link="gsf-MS-OLE2.html#OLE-HEADER-METABAT-SIZE:CAPS"/>
+    <function name="OLE_HEADER_DIRENT_START" link="gsf-MS-OLE2.html#OLE-HEADER-DIRENT-START:CAPS"/>
+    <function name="OLE_HEADER_NUM_SBAT" link="gsf-MS-OLE2.html#OLE-HEADER-NUM-SBAT:CAPS"/>
+    <function name="OLE_HEADER_BB_SHIFT" link="gsf-MS-OLE2.html#OLE-HEADER-BB-SHIFT:CAPS"/>
+    <function name="OLE_HEADER_CSECTDIR" link="gsf-MS-OLE2.html#OLE-HEADER-CSECTDIR:CAPS"/>
+    <function name="OLE_HEADER_NUM_BAT" link="gsf-MS-OLE2.html#OLE-HEADER-NUM-BAT:CAPS"/>
+    <function name="OLE_HEADER_THRESHOLD" link="gsf-MS-OLE2.html#OLE-HEADER-THRESHOLD:CAPS"/>
+    <function name="OLE_HEADER_METABAT_BLOCK" link="gsf-MS-OLE2.html#OLE-HEADER-METABAT-BLOCK:CAPS"/>
+    <function name="OLE_HEADER_SBAT_START" link="gsf-MS-OLE2.html#OLE-HEADER-SBAT-START:CAPS"/>
+    <function name="OLE_HEADER_SIGNATURE" link="gsf-MS-OLE2.html#OLE-HEADER-SIGNATURE:CAPS"/>
+    <function name="OLE_HEADER_BYTE_ORDER" link="gsf-MS-OLE2.html#OLE-HEADER-BYTE-ORDER:CAPS"/>
+    <function name="OLE_HEADER_SB_SHIFT" link="gsf-MS-OLE2.html#OLE-HEADER-SB-SHIFT:CAPS"/>
+    <function name="OLE_HEADER_NUM_METABAT" link="gsf-MS-OLE2.html#OLE-HEADER-NUM-METABAT:CAPS"/>
+    <function name="OLE_HEADER_SIZE" link="gsf-MS-OLE2.html#OLE-HEADER-SIZE:CAPS"/>
+    <function name="OLE_HEADER_CLSID" link="gsf-MS-OLE2.html#OLE-HEADER-CLSID:CAPS"/>
+    <function name="OLE_HEADER_MINOR_VER" link="gsf-MS-OLE2.html#OLE-HEADER-MINOR-VER:CAPS"/>
+    <function name="OLE_DEFAULT_BB_SHIFT" link="gsf-MS-OLE2.html#OLE-DEFAULT-BB-SHIFT:CAPS"/>
+    <function name="OLE_DEFAULT_SB_SHIFT" link="gsf-MS-OLE2.html#OLE-DEFAULT-SB-SHIFT:CAPS"/>
+    <function name="DIRENT_DETAILS_SIZE" link="gsf-MS-OLE2.html#DIRENT-DETAILS-SIZE:CAPS"/>
+    <function name="DIRENT_SIZE" link="gsf-MS-OLE2.html#DIRENT-SIZE:CAPS"/>
+    <function name="DIRENT_NAME_LEN" link="gsf-MS-OLE2.html#DIRENT-NAME-LEN:CAPS"/>
+    <function name="DIRENT_TYPE_PROPERTY" link="gsf-MS-OLE2.html#DIRENT-TYPE-PROPERTY:CAPS"/>
+    <function name="DIRENT_TYPE_FILE" link="gsf-MS-OLE2.html#DIRENT-TYPE-FILE:CAPS"/>
+    <function name="DIRENT_MAGIC_END" link="gsf-MS-OLE2.html#DIRENT-MAGIC-END:CAPS"/>
+    <function name="DIRENT_TYPE_DIR" link="gsf-MS-OLE2.html#DIRENT-TYPE-DIR:CAPS"/>
+    <function name="DIRENT_MAX_NAME_SIZE" link="gsf-MS-OLE2.html#DIRENT-MAX-NAME-SIZE:CAPS"/>
+    <function name="DIRENT_FILE_SIZE" link="gsf-MS-OLE2.html#DIRENT-FILE-SIZE:CAPS"/>
+    <function name="DIRENT_FIRSTBLOCK" link="gsf-MS-OLE2.html#DIRENT-FIRSTBLOCK:CAPS"/>
+    <function name="DIRENT_TYPE_INVALID" link="gsf-MS-OLE2.html#DIRENT-TYPE-INVALID:CAPS"/>
+    <function name="DIRENT_USERFLAGS" link="gsf-MS-OLE2.html#DIRENT-USERFLAGS:CAPS"/>
+    <function name="DIRENT_COLOUR" link="gsf-MS-OLE2.html#DIRENT-COLOUR:CAPS"/>
+    <function name="DIRENT_MODIFY_TIME" link="gsf-MS-OLE2.html#DIRENT-MODIFY-TIME:CAPS"/>
+    <function name="DIRENT_TYPE_LOCKBYTES" link="gsf-MS-OLE2.html#DIRENT-TYPE-LOCKBYTES:CAPS"/>
+    <function name="DIRENT_CREATE_TIME" link="gsf-MS-OLE2.html#DIRENT-CREATE-TIME:CAPS"/>
+    <function name="DIRENT_PREV" link="gsf-MS-OLE2.html#DIRENT-PREV:CAPS"/>
+    <function name="DIRENT_NEXT" link="gsf-MS-OLE2.html#DIRENT-NEXT:CAPS"/>
+    <function name="DIRENT_CHILD" link="gsf-MS-OLE2.html#DIRENT-CHILD:CAPS"/>
+    <function name="DIRENT_TYPE" link="gsf-MS-OLE2.html#DIRENT-TYPE:CAPS"/>
+    <function name="DIRENT_CLSID" link="gsf-MS-OLE2.html#DIRENT-CLSID:CAPS"/>
+    <function name="DIRENT_TYPE_ROOTDIR" link="gsf-MS-OLE2.html#DIRENT-TYPE-ROOTDIR:CAPS"/>
+    <function name="BAT_MAGIC_METABAT" link="gsf-MS-OLE2.html#BAT-MAGIC-METABAT:CAPS"/>
+    <function name="BAT_MAGIC_BAT" link="gsf-MS-OLE2.html#BAT-MAGIC-BAT:CAPS"/>
+    <function name="BAT_INDEX_SIZE" link="gsf-MS-OLE2.html#BAT-INDEX-SIZE:CAPS"/>
+    <function name="BAT_MAGIC_END_OF_CHAIN" link="gsf-MS-OLE2.html#BAT-MAGIC-END-OF-CHAIN:CAPS"/>
+    <function name="BAT_MAGIC_UNUSED" link="gsf-MS-OLE2.html#BAT-MAGIC-UNUSED:CAPS"/>
+    <function name="GsfDocMetaData" link="gsf-metadata.html#GsfDocMetaData"/>
+    <function name="gsf_doc_meta_data_new ()" link="gsf-metadata.html#gsf-doc-meta-data-new"/>
+    <function name="gsf_doc_meta_data_lookup ()" link="gsf-metadata.html#gsf-doc-meta-data-lookup"/>
+    <function name="gsf_doc_meta_data_insert ()" link="gsf-metadata.html#gsf-doc-meta-data-insert"/>
+    <function name="gsf_doc_meta_data_remove ()" link="gsf-metadata.html#gsf-doc-meta-data-remove"/>
+    <function name="gsf_doc_meta_data_steal ()" link="gsf-metadata.html#gsf-doc-meta-data-steal"/>
+    <function name="gsf_doc_meta_data_store ()" link="gsf-metadata.html#gsf-doc-meta-data-store"/>
+    <function name="gsf_doc_meta_data_foreach ()" link="gsf-metadata.html#gsf-doc-meta-data-foreach"/>
+    <function name="gsf_doc_meta_data_size ()" link="gsf-metadata.html#gsf-doc-meta-data-size"/>
+    <function name="GsfDocProp" link="gsf-metadata.html#GsfDocProp"/>
+    <function name="gsf_doc_prop_new ()" link="gsf-metadata.html#gsf-doc-prop-new"/>
+    <function name="gsf_doc_prop_free ()" link="gsf-metadata.html#gsf-doc-prop-free"/>
+    <function name="gsf_doc_prop_get_name ()" link="gsf-metadata.html#gsf-doc-prop-get-name"/>
+    <function name="gsf_doc_prop_get_val ()" link="gsf-metadata.html#gsf-doc-prop-get-val"/>
+    <function name="gsf_doc_prop_set_val ()" link="gsf-metadata.html#gsf-doc-prop-set-val"/>
+    <function name="gsf_doc_prop_get_link ()" link="gsf-metadata.html#gsf-doc-prop-get-link"/>
+    <function name="gsf_doc_prop_set_link ()" link="gsf-metadata.html#gsf-doc-prop-set-link"/>
+    <function name="GsfDocPropVector" link="gsf-metadata.html#GsfDocPropVector"/>
+    <function name="gsf_docprop_vector_new ()" link="gsf-metadata.html#gsf-docprop-vector-new"/>
+    <function name="gsf_docprop_vector_append ()" link="gsf-metadata.html#gsf-docprop-vector-append"/>
+    <function name="gsf_docprop_vector_as_string ()" link="gsf-metadata.html#gsf-docprop-vector-as-string"/>
+    <function name="gsf_value_get_docprop_varray ()" link="gsf-metadata.html#gsf-value-get-docprop-varray"/>
+    <function name="gsf_value_get_docprop_vector ()" link="gsf-metadata.html#gsf-value-get-docprop-vector"/>
+    <function name="GSF_META_NAME_TITLE" link="gsf-metadata.html#GSF-META-NAME-TITLE:CAPS"/>
+    <function name="GSF_META_NAME_DESCRIPTION" link="gsf-metadata.html#GSF-META-NAME-DESCRIPTION:CAPS"/>
+    <function name="GSF_META_NAME_SUBJECT" link="gsf-metadata.html#GSF-META-NAME-SUBJECT:CAPS"/>
+    <function name="GSF_META_NAME_DATE_MODIFIED" link="gsf-metadata.html#GSF-META-NAME-DATE-MODIFIED:CAPS"/>
+    <function name="GSF_META_NAME_DATE_CREATED" link="gsf-metadata.html#GSF-META-NAME-DATE-CREATED:CAPS"/>
+    <function name="GSF_META_NAME_KEYWORDS" link="gsf-metadata.html#GSF-META-NAME-KEYWORDS:CAPS"/>
+    <function name="GSF_META_NAME_LANGUAGE" link="gsf-metadata.html#GSF-META-NAME-LANGUAGE:CAPS"/>
+    <function name="GSF_META_NAME_REVISION_COUNT" link="gsf-metadata.html#GSF-META-NAME-REVISION-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_EDITING_DURATION" link="gsf-metadata.html#GSF-META-NAME-EDITING-DURATION:CAPS"/>
+    <function name="GSF_META_NAME_TABLE_COUNT" link="gsf-metadata.html#GSF-META-NAME-TABLE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_IMAGE_COUNT" link="gsf-metadata.html#GSF-META-NAME-IMAGE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_OBJECT_COUNT" link="gsf-metadata.html#GSF-META-NAME-OBJECT-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_PAGE_COUNT" link="gsf-metadata.html#GSF-META-NAME-PAGE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_PARAGRAPH_COUNT" link="gsf-metadata.html#GSF-META-NAME-PARAGRAPH-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_WORD_COUNT" link="gsf-metadata.html#GSF-META-NAME-WORD-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_CHARACTER_COUNT" link="gsf-metadata.html#GSF-META-NAME-CHARACTER-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_CELL_COUNT" link="gsf-metadata.html#GSF-META-NAME-CELL-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_SPREADSHEET_COUNT" link="gsf-metadata.html#GSF-META-NAME-SPREADSHEET-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_CREATOR" link="gsf-metadata.html#GSF-META-NAME-CREATOR:CAPS"/>
+    <function name="GSF_META_NAME_TEMPLATE" link="gsf-metadata.html#GSF-META-NAME-TEMPLATE:CAPS"/>
+    <function name="GSF_META_NAME_LAST_SAVED_BY" link="gsf-metadata.html#GSF-META-NAME-LAST-SAVED-BY:CAPS"/>
+    <function name="GSF_META_NAME_LAST_PRINTED" link="gsf-metadata.html#GSF-META-NAME-LAST-PRINTED:CAPS"/>
+    <function name="GSF_META_NAME_SECURITY" link="gsf-metadata.html#GSF-META-NAME-SECURITY:CAPS"/>
+    <function name="GSF_META_NAME_CATEGORY" link="gsf-metadata.html#GSF-META-NAME-CATEGORY:CAPS"/>
+    <function name="GSF_META_NAME_PRESENTATION_FORMAT" link="gsf-metadata.html#GSF-META-NAME-PRESENTATION-FORMAT:CAPS"/>
+    <function name="GSF_META_NAME_THUMBNAIL" link="gsf-metadata.html#GSF-META-NAME-THUMBNAIL:CAPS"/>
+    <function name="GSF_META_NAME_GENERATOR" link="gsf-metadata.html#GSF-META-NAME-GENERATOR:CAPS"/>
+    <function name="GSF_META_NAME_LINE_COUNT" link="gsf-metadata.html#GSF-META-NAME-LINE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_SLIDE_COUNT" link="gsf-metadata.html#GSF-META-NAME-SLIDE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_NOTE_COUNT" link="gsf-metadata.html#GSF-META-NAME-NOTE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_HIDDEN_SLIDE_COUNT" link="gsf-metadata.html#GSF-META-NAME-HIDDEN-SLIDE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_MM_CLIP_COUNT" link="gsf-metadata.html#GSF-META-NAME-MM-CLIP-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_BYTE_COUNT" link="gsf-metadata.html#GSF-META-NAME-BYTE-COUNT:CAPS"/>
+    <function name="GSF_META_NAME_SCALE" link="gsf-metadata.html#GSF-META-NAME-SCALE:CAPS"/>
+    <function name="GSF_META_NAME_HEADING_PAIRS" link="gsf-metadata.html#GSF-META-NAME-HEADING-PAIRS:CAPS"/>
+    <function name="GSF_META_NAME_DOCUMENT_PARTS" link="gsf-metadata.html#GSF-META-NAME-DOCUMENT-PARTS:CAPS"/>
+    <function name="GSF_META_NAME_MANAGER" link="gsf-metadata.html#GSF-META-NAME-MANAGER:CAPS"/>
+    <function name="GSF_META_NAME_COMPANY" link="gsf-metadata.html#GSF-META-NAME-COMPANY:CAPS"/>
+    <function name="GSF_META_NAME_LINKS_DIRTY" link="gsf-metadata.html#GSF-META-NAME-LINKS-DIRTY:CAPS"/>
+    <function name="GSF_META_NAME_DICTIONARY" link="gsf-metadata.html#GSF-META-NAME-DICTIONARY:CAPS"/>
+    <function name="GSF_META_NAME_MSOLE_UNKNOWN_17" link="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-17:CAPS"/>
+    <function name="GSF_META_NAME_MSOLE_UNKNOWN_18" link="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-18:CAPS"/>
+    <function name="GSF_META_NAME_MSOLE_UNKNOWN_19" link="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-19:CAPS"/>
+    <function name="GSF_META_NAME_MSOLE_UNKNOWN_20" link="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-20:CAPS"/>
+    <function name="GSF_META_NAME_MSOLE_UNKNOWN_21" link="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-21:CAPS"/>
+    <function name="GSF_META_NAME_MSOLE_UNKNOWN_22" link="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-22:CAPS"/>
+    <function name="GSF_META_NAME_MSOLE_UNKNOWN_23" link="gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-23:CAPS"/>
+    <function name="GSF_META_NAME_LOCALE_SYSTEM_DEFAULT" link="gsf-metadata.html#GSF-META-NAME-LOCALE-SYSTEM-DEFAULT:CAPS"/>
+    <function name="GSF_META_NAME_CASE_SENSITIVE" link="gsf-metadata.html#GSF-META-NAME-CASE-SENSITIVE:CAPS"/>
+    <function name="GsfBlob" link="gsf-GsfBlob.html#GsfBlob"/>
+    <function name="GsfBlobClass" link="gsf-GsfBlob.html#GsfBlobClass"/>
+    <function name="gsf_blob_new ()" link="gsf-GsfBlob.html#gsf-blob-new"/>
+    <function name="gsf_blob_get_size ()" link="gsf-GsfBlob.html#gsf-blob-get-size"/>
+    <function name="gsf_blob_peek_data ()" link="gsf-GsfBlob.html#gsf-blob-peek-data"/>
+    <function name="enum GsfClipFormat" link="gsf-GsfClipData.html#GsfClipFormat"/>
+    <function name="enum GsfClipFormatWindows" link="gsf-GsfClipData.html#GsfClipFormatWindows"/>
+    <function name="GsfClipData" link="gsf-GsfClipData.html#GsfClipData"/>
+    <function name="GsfClipDataClass" link="gsf-GsfClipData.html#GsfClipDataClass"/>
+    <function name="gsf_clip_data_new ()" link="gsf-GsfClipData.html#gsf-clip-data-new"/>
+    <function name="gsf_clip_data_get_format ()" link="gsf-GsfClipData.html#gsf-clip-data-get-format"/>
+    <function name="gsf_clip_data_get_data_blob ()" link="gsf-GsfClipData.html#gsf-clip-data-get-data-blob"/>
+    <function name="gsf_clip_data_get_windows_clipboard_format ()" link="gsf-GsfClipData.html#gsf-clip-data-get-windows-clipboard-format"/>
+    <function name="gsf_clip_data_peek_real_data ()" link="gsf-GsfClipData.html#gsf-clip-data-peek-real-data"/>
+    <function name="GsfStructuredBlob" link="gsf-Structured-Blobs.html#GsfStructuredBlob-struct"/>
+    <function name="gsf_structured_blob_write ()" link="gsf-Structured-Blobs.html#gsf-structured-blob-write"/>
+    <function name="gsf_structured_blob_read ()" link="gsf-Structured-Blobs.html#gsf-structured-blob-read"/>
+    <function name="gsf_init ()" link="gsf-utils.html#gsf-init"/>
+    <function name="gsf_shutdown ()" link="gsf-utils.html#gsf-shutdown"/>
+    <function name="gsf_init_dynamic ()" link="gsf-utils.html#gsf-init-dynamic"/>
+    <function name="gsf_shutdown_dynamic ()" link="gsf-utils.html#gsf-shutdown-dynamic"/>
+    <function name="libgsf_major_version" link="gsf-utils.html#libgsf-major-version"/>
+    <function name="libgsf_minor_version" link="gsf-utils.html#libgsf-minor-version"/>
+    <function name="libgsf_micro_version" link="gsf-utils.html#libgsf-micro-version"/>
+    <function name="GSF_CLASS()" link="gsf-utils.html#GSF-CLASS:CAPS"/>
+    <function name="GSF_CLASS_FULL()" link="gsf-utils.html#GSF-CLASS-FULL:CAPS"/>
+    <function name="GSF_CLASS_ABSTRACT()" link="gsf-utils.html#GSF-CLASS-ABSTRACT:CAPS"/>
+    <function name="GSF_INTERFACE()" link="gsf-utils.html#GSF-INTERFACE:CAPS"/>
+    <function name="GSF_INTERFACE_FULL()" link="gsf-utils.html#GSF-INTERFACE-FULL:CAPS"/>
+    <function name="GSF_DYNAMIC_CLASS()" link="gsf-utils.html#GSF-DYNAMIC-CLASS:CAPS"/>
+    <function name="GSF_DYNAMIC_CLASS_FULL()" link="gsf-utils.html#GSF-DYNAMIC-CLASS-FULL:CAPS"/>
+    <function name="GSF_DYNAMIC_CLASS_ABSTRACT()" link="gsf-utils.html#GSF-DYNAMIC-CLASS-ABSTRACT:CAPS"/>
+    <function name="GSF_DYNAMIC_INTERFACE()" link="gsf-utils.html#GSF-DYNAMIC-INTERFACE:CAPS"/>
+    <function name="GSF_DYNAMIC_INTERFACE_FULL()" link="gsf-utils.html#GSF-DYNAMIC-INTERFACE-FULL:CAPS"/>
+    <function name="GSF_PARAM_STATIC" link="gsf-utils.html#GSF-PARAM-STATIC:CAPS"/>
+    <function name="GSF_ERROR" link="gsf-utils.html#GSF-ERROR:CAPS"/>
+    <function name="enum GsfError" link="gsf-utils.html#GsfError"/>
+    <function name="gsf_error_quark ()" link="gsf-utils.html#gsf-error-quark"/>
+    <function name="gsf_mem_dump ()" link="gsf-utils.html#gsf-mem-dump"/>
+    <function name="gsf_input_dump ()" link="gsf-utils.html#gsf-input-dump"/>
+    <function name="GSF_OFF_T_FORMAT" link="gsf-utils.html#GSF-OFF-T-FORMAT:CAPS"/>
+    <function name="gsf_off_t" link="gsf-utils.html#gsf-off-t"/>
+    <function name="gsf_filename_to_utf8 ()" link="gsf-utils.html#gsf-filename-to-utf8"/>
+    <function name="gsf_iconv_close ()" link="gsf-utils.html#gsf-iconv-close"/>
+    <function name="gsf_extension_pointer ()" link="gsf-utils.html#gsf-extension-pointer"/>
+    <function name="gsf_base64_encode_simple ()" link="gsf-utils.html#gsf-base64-encode-simple"/>
+    <function name="gsf_base64_encode_close ()" link="gsf-utils.html#gsf-base64-encode-close"/>
+    <function name="gsf_base64_encode_step ()" link="gsf-utils.html#gsf-base64-encode-step"/>
+    <function name="gsf_base64_decode_simple ()" link="gsf-utils.html#gsf-base64-decode-simple"/>
+    <function name="gsf_base64_decode_step ()" link="gsf-utils.html#gsf-base64-decode-step"/>
+    <function name="GSF_LE_GET_GINT8()" link="gsf-utils.html#GSF-LE-GET-GINT8:CAPS"/>
+    <function name="GSF_LE_GET_GUINT64()" link="gsf-utils.html#GSF-LE-GET-GUINT64:CAPS"/>
+    <function name="GSF_LE_GET_GINT16()" link="gsf-utils.html#GSF-LE-GET-GINT16:CAPS"/>
+    <function name="GSF_LE_GET_GUINT8()" link="gsf-utils.html#GSF-LE-GET-GUINT8:CAPS"/>
+    <function name="GSF_LE_GET_GINT32()" link="gsf-utils.html#GSF-LE-GET-GINT32:CAPS"/>
+    <function name="GSF_LE_GET_GUINT16()" link="gsf-utils.html#GSF-LE-GET-GUINT16:CAPS"/>
+    <function name="GSF_LE_GET_GUINT32()" link="gsf-utils.html#GSF-LE-GET-GUINT32:CAPS"/>
+    <function name="GSF_LE_GET_GINT64()" link="gsf-utils.html#GSF-LE-GET-GINT64:CAPS"/>
+    <function name="gsf_le_get_guint64 ()" link="gsf-utils.html#gsf-le-get-guint64"/>
+    <function name="GSF_LE_GET_FLOAT()" link="gsf-utils.html#GSF-LE-GET-FLOAT:CAPS"/>
+    <function name="gsf_le_get_float ()" link="gsf-utils.html#gsf-le-get-float"/>
+    <function name="GSF_LE_GET_DOUBLE()" link="gsf-utils.html#GSF-LE-GET-DOUBLE:CAPS"/>
+    <function name="gsf_le_get_double ()" link="gsf-utils.html#gsf-le-get-double"/>
+    <function name="GSF_LE_SET_GUINT8()" link="gsf-utils.html#GSF-LE-SET-GUINT8:CAPS"/>
+    <function name="GSF_LE_SET_GUINT16()" link="gsf-utils.html#GSF-LE-SET-GUINT16:CAPS"/>
+    <function name="GSF_LE_SET_GUINT32()" link="gsf-utils.html#GSF-LE-SET-GUINT32:CAPS"/>
+    <function name="GSF_LE_SET_GINT8()" link="gsf-utils.html#GSF-LE-SET-GINT8:CAPS"/>
+    <function name="GSF_LE_SET_GINT16()" link="gsf-utils.html#GSF-LE-SET-GINT16:CAPS"/>
+    <function name="GSF_LE_SET_GINT32()" link="gsf-utils.html#GSF-LE-SET-GINT32:CAPS"/>
+    <function name="GSF_LE_SET_GINT64()" link="gsf-utils.html#GSF-LE-SET-GINT64:CAPS"/>
+    <function name="GSF_LE_SET_GUINT64()" link="gsf-utils.html#GSF-LE-SET-GUINT64:CAPS"/>
+    <function name="GSF_LE_SET_FLOAT()" link="gsf-utils.html#GSF-LE-SET-FLOAT:CAPS"/>
+    <function name="GSF_LE_SET_DOUBLE()" link="gsf-utils.html#GSF-LE-SET-DOUBLE:CAPS"/>
+    <function name="gsf_le_set_float ()" link="gsf-utils.html#gsf-le-set-float"/>
+    <function name="gsf_le_set_double ()" link="gsf-utils.html#gsf-le-set-double"/>
+    <function name="GsfTimestamp" link="gsf-utils.html#GsfTimestamp"/>
+    <function name="gsf_timestamp_new ()" link="gsf-utils.html#gsf-timestamp-new"/>
+    <function name="gsf_timestamp_new_now ()" link="gsf-utils.html#gsf-timestamp-new-now"/>
+    <function name="gsf_timestamp_copy ()" link="gsf-utils.html#gsf-timestamp-copy"/>
+    <function name="gsf_timestamp_free ()" link="gsf-utils.html#gsf-timestamp-free"/>
+    <function name="gsf_timestamp_as_string ()" link="gsf-utils.html#gsf-timestamp-as-string"/>
+    <function name="gsf_timestamp_parse ()" link="gsf-utils.html#gsf-timestamp-parse"/>
+    <function name="gsf_timestamp_hash ()" link="gsf-utils.html#gsf-timestamp-hash"/>
+    <function name="gsf_timestamp_equal ()" link="gsf-utils.html#gsf-timestamp-equal"/>
+    <function name="gsf_value_set_timestamp ()" link="gsf-utils.html#gsf-value-set-timestamp"/>
+    <function name="VAL_IS_GSF_TIMESTAMP()" link="gsf-utils.html#VAL-IS-GSF-TIMESTAMP:CAPS"/>
+    <function name="gsf_doc_prop_swap_val ()" link="gsf-utils.html#gsf-doc-prop-swap-val"/>
+    <function name="gsf_property_settings_collect ()" link="gsf-utils.html#gsf-property-settings-collect"/>
+    <function name="gsf_property_settings_collect_valist ()" link="gsf-utils.html#gsf-property-settings-collect-valist"/>
+    <function name="gsf_property_settings_free ()" link="gsf-utils.html#gsf-property-settings-free"/>
+  </functions>
+</book>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/home.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/home.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,107 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>GSF Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="next" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<div class="book" lang="en">
+<div class="titlepage">
+<div><div><table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GSF Reference Manual</p></th></tr></table></div></div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="part"><a href="into.html">I. GSF Overview</a></span></dt>
+<dt><span class="part"><a href="api.html">II. API Reference</a></span></dt>
+<dd><dl>
+<dt><span class="chapter"><a href="io.html">Basic Input/Output</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="gsf-Input-from-unstructured-files.html">Input from unstructured files</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Output-to-unstructured-files.html">Output to unstructured files</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="sources.html">Stream Sources</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="gsf-Infile-reading-structed-files.html">Infile reading structed files</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Outfile-writing-structed-files.html">Outfile writing structed files</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Reading-and-Writing-from-local-files-and-directories.html">Reading and Writing from local files and directories</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-memory.html">memory</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GIOChannel.html">GIOChannel</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GnomeVFS.html">GnomeVFS</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Bononbo.html">Bononbo</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="parsers.html">Stream Parsers</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="gsf-Text.html">Text</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-XML-and-libxml.html">XML and libxml</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Zip.html">Zip</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Compression.html">Compression</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-MS-OLE2.html">MS OLE2</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-metadata.html">metadata</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GsfBlob.html">GsfBlob</a></span><span class="refpurpose"> - A generic, unstructured block of binary data</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GsfClipData.html">GsfClipData</a></span><span class="refpurpose"> - Object to hold clipboard data from a VT_CF section</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Structured-Blobs.html">Structured Blobs</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></dd>
+<dt><span class="chapter"><a href="misc.html">Miscellaneous</a></span></dt>
+<dd><dl><dt>
+<span class="refentrytitle"><a href="gsf-utils.html">utils</a></span><span class="refpurpose"> - </span>
+</dt></dl></dd>
+</dl></dd>
+<dt><span class="index"><a href="ix01.html">Index</a></span></dt>
+</dl>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"></td>
+<td align="right"><a accesskey="n" href="into.html"><b>Part&#160;I.&#160;GSF Overview&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/index.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,498 @@
+<ANCHOR id="gsf-Input-from-unstructured-files" href="gsf/gsf-Input-from-unstructured-files.html">
+<ANCHOR id="GsfInput" href="gsf/gsf-Input-from-unstructured-files.html#GsfInput">
+<ANCHOR id="GsfInput-struct" href="gsf/gsf-Input-from-unstructured-files.html#GsfInput-struct">
+<ANCHOR id="gsf-input-read" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-read">
+<ANCHOR id="gsf-input-tell" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-tell">
+<ANCHOR id="gsf-input-seek" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-seek">
+<ANCHOR id="gsf-input-container" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-container">
+<ANCHOR id="gsf-input-dup" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-dup">
+<ANCHOR id="gsf-input-size" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-size">
+<ANCHOR id="gsf-input-eof" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-eof">
+<ANCHOR id="gsf-input-remaining" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-remaining">
+<ANCHOR id="gsf-input-error-id" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-error-id">
+<ANCHOR id="gsf-input-sibling" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-sibling">
+<ANCHOR id="gsf-input-error" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-error">
+<ANCHOR id="gsf-input-name" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-name">
+<ANCHOR id="gsf-input-set-name-from-filename" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-set-name-from-filename">
+<ANCHOR id="GsfInputProxy" href="gsf/gsf-Input-from-unstructured-files.html#GsfInputProxy">
+<ANCHOR id="gsf-input-proxy-new" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-proxy-new">
+<ANCHOR id="gsf-input-proxy-new-section" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-proxy-new-section">
+<ANCHOR id="gsf-input-copy" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-copy">
+<ANCHOR id="gsf-input-uncompress" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-uncompress">
+<ANCHOR id="gsf-input-set-name" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-set-name">
+<ANCHOR id="gsf-input-set-container" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-set-container">
+<ANCHOR id="gsf-input-set-size" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-set-size">
+<ANCHOR id="gsf-input-seek-emulate" href="gsf/gsf-Input-from-unstructured-files.html#gsf-input-seek-emulate">
+<ANCHOR id="GsfInput--eof" href="gsf/gsf-Input-from-unstructured-files.html#GsfInput--eof">
+<ANCHOR id="GsfInput--name" href="gsf/gsf-Input-from-unstructured-files.html#GsfInput--name">
+<ANCHOR id="GsfInput--position" href="gsf/gsf-Input-from-unstructured-files.html#GsfInput--position">
+<ANCHOR id="GsfInput--remaining" href="gsf/gsf-Input-from-unstructured-files.html#GsfInput--remaining">
+<ANCHOR id="GsfInput--size" href="gsf/gsf-Input-from-unstructured-files.html#GsfInput--size">
+<ANCHOR id="gsf-Output-to-unstructured-files" href="gsf/gsf-Output-to-unstructured-files.html">
+<ANCHOR id="GsfOutput" href="gsf/gsf-Output-to-unstructured-files.html#GsfOutput">
+<ANCHOR id="GsfOutput-struct" href="gsf/gsf-Output-to-unstructured-files.html#GsfOutput-struct">
+<ANCHOR id="gsf-output-container" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-container">
+<ANCHOR id="gsf-output-size" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-size">
+<ANCHOR id="gsf-output-close" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-close">
+<ANCHOR id="gsf-output-tell" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-tell">
+<ANCHOR id="gsf-output-seek" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-seek">
+<ANCHOR id="gsf-output-write" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-write">
+<ANCHOR id="gsf-output-puts" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-puts">
+<ANCHOR id="gsf-output-printf" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-printf">
+<ANCHOR id="gsf-output-vprintf" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-vprintf">
+<ANCHOR id="gsf-output-name" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-name">
+<ANCHOR id="gsf-output-set-name-from-filename" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-set-name-from-filename">
+<ANCHOR id="gsf-output-error-id" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-error-id">
+<ANCHOR id="gsf-output-set-error" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-set-error">
+<ANCHOR id="gsf-output-error" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-error">
+<ANCHOR id="gsf-output-is-closed" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-is-closed">
+<ANCHOR id="gsf-output-wrap" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-wrap">
+<ANCHOR id="gsf-output-unwrap" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-unwrap">
+<ANCHOR id="gsf-output-set-name" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-set-name">
+<ANCHOR id="gsf-output-set-container" href="gsf/gsf-Output-to-unstructured-files.html#gsf-output-set-container">
+<ANCHOR id="GsfOutput--is-closed" href="gsf/gsf-Output-to-unstructured-files.html#GsfOutput--is-closed">
+<ANCHOR id="GsfOutput--name" href="gsf/gsf-Output-to-unstructured-files.html#GsfOutput--name">
+<ANCHOR id="GsfOutput--position" href="gsf/gsf-Output-to-unstructured-files.html#GsfOutput--position">
+<ANCHOR id="GsfOutput--size" href="gsf/gsf-Output-to-unstructured-files.html#GsfOutput--size">
+<ANCHOR id="gsf-Infile-reading-structed-files" href="gsf/gsf-Infile-reading-structed-files.html">
+<ANCHOR id="GsfInfile" href="gsf/gsf-Infile-reading-structed-files.html#GsfInfile">
+<ANCHOR id="GsfInfile-struct" href="gsf/gsf-Infile-reading-structed-files.html#GsfInfile-struct">
+<ANCHOR id="gsf-infile-num-children" href="gsf/gsf-Infile-reading-structed-files.html#gsf-infile-num-children">
+<ANCHOR id="gsf-infile-child-by-index" href="gsf/gsf-Infile-reading-structed-files.html#gsf-infile-child-by-index">
+<ANCHOR id="gsf-infile-child-by-name" href="gsf/gsf-Infile-reading-structed-files.html#gsf-infile-child-by-name">
+<ANCHOR id="gsf-infile-child-by-vname" href="gsf/gsf-Infile-reading-structed-files.html#gsf-infile-child-by-vname">
+<ANCHOR id="gsf-infile-name-by-index" href="gsf/gsf-Infile-reading-structed-files.html#gsf-infile-name-by-index">
+<ANCHOR id="gsf-Outfile-writing-structed-files" href="gsf/gsf-Outfile-writing-structed-files.html">
+<ANCHOR id="GsfOutfile" href="gsf/gsf-Outfile-writing-structed-files.html#GsfOutfile">
+<ANCHOR id="GsfOutfile-struct" href="gsf/gsf-Outfile-writing-structed-files.html#GsfOutfile-struct">
+<ANCHOR id="gsf-outfile-new-child" href="gsf/gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child">
+<ANCHOR id="gsf-outfile-new-child-full" href="gsf/gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child-full">
+<ANCHOR id="gsf-outfile-new-child-varg" href="gsf/gsf-Outfile-writing-structed-files.html#gsf-outfile-new-child-varg">
+<ANCHOR id="gsf-Reading-and-Writing-from-local-files-and-directories" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html">
+<ANCHOR id="GsfInputStdio" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInputStdio">
+<ANCHOR id="GsfOutputStdio" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutputStdio">
+<ANCHOR id="GsfOutfileStdio" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutfileStdio">
+<ANCHOR id="GsfInfileStdio" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInfileStdio">
+<ANCHOR id="GsfInputStdio-struct" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInputStdio-struct">
+<ANCHOR id="gsf-input-stdio-new" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-input-stdio-new">
+<ANCHOR id="GsfOutputStdio-struct" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutputStdio-struct">
+<ANCHOR id="gsf-output-stdio-new" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new">
+<ANCHOR id="gsf-output-stdio-new-full" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-full">
+<ANCHOR id="gsf-output-stdio-new-valist" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-valist">
+<ANCHOR id="gsf-output-stdio-new-FILE" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-output-stdio-new-FILE">
+<ANCHOR id="GsfOutfileStdio-struct" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutfileStdio-struct">
+<ANCHOR id="gsf-outfile-stdio-new" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new">
+<ANCHOR id="gsf-outfile-stdio-new-full" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new-full">
+<ANCHOR id="gsf-outfile-stdio-new-valist" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-outfile-stdio-new-valist">
+<ANCHOR id="GsfInfileStdio-struct" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInfileStdio-struct">
+<ANCHOR id="gsf-infile-stdio-new" href="gsf/gsf-Reading-and-Writing-from-local-files-and-directories.html#gsf-infile-stdio-new">
+<ANCHOR id="gsf-memory" href="gsf/gsf-memory.html">
+<ANCHOR id="GsfInputMemory" href="gsf/gsf-memory.html#GsfInputMemory">
+<ANCHOR id="GsfOutputMemory" href="gsf/gsf-memory.html#GsfOutputMemory">
+<ANCHOR id="GsfSharedMemory" href="gsf/gsf-memory.html#GsfSharedMemory">
+<ANCHOR id="GsfInputMemory-struct" href="gsf/gsf-memory.html#GsfInputMemory-struct">
+<ANCHOR id="gsf-input-mmap-new" href="gsf/gsf-memory.html#gsf-input-mmap-new">
+<ANCHOR id="gsf-input-memory-new" href="gsf/gsf-memory.html#gsf-input-memory-new">
+<ANCHOR id="gsf-input-memory-new-clone" href="gsf/gsf-memory.html#gsf-input-memory-new-clone">
+<ANCHOR id="gsf-input-memory-new-from-iochannel" href="gsf/gsf-memory.html#gsf-input-memory-new-from-iochannel">
+<ANCHOR id="GsfOutputMemory-struct" href="gsf/gsf-memory.html#GsfOutputMemory-struct">
+<ANCHOR id="gsf-output-memory-get-bytes" href="gsf/gsf-memory.html#gsf-output-memory-get-bytes">
+<ANCHOR id="gsf-output-memory-get-type" href="gsf/gsf-memory.html#gsf-output-memory-get-type">
+<ANCHOR id="gsf-output-memory-new" href="gsf/gsf-memory.html#gsf-output-memory-new">
+<ANCHOR id="GsfSharedMemory-struct" href="gsf/gsf-memory.html#GsfSharedMemory-struct">
+<ANCHOR id="gsf-shared-memory-new" href="gsf/gsf-memory.html#gsf-shared-memory-new">
+<ANCHOR id="gsf-shared-memory-mmapped-new" href="gsf/gsf-memory.html#gsf-shared-memory-mmapped-new">
+<ANCHOR id="gsf-GIOChannel" href="gsf/gsf-GIOChannel.html">
+<ANCHOR id="GsfOutputIOChannel" href="gsf/gsf-GIOChannel.html#GsfOutputIOChannel">
+<ANCHOR id="GsfOutputIOChannel-struct" href="gsf/gsf-GIOChannel.html#GsfOutputIOChannel-struct">
+<ANCHOR id="gsf-output-iochannel-new" href="gsf/gsf-GIOChannel.html#gsf-output-iochannel-new">
+<ANCHOR id="gsf-GnomeVFS" href="gsf/gsf-GnomeVFS.html">
+<ANCHOR id="GsfInputGnomeVFS" href="gsf/gsf-GnomeVFS.html#GsfInputGnomeVFS">
+<ANCHOR id="gsf-input-gnomevfs-new" href="gsf/gsf-GnomeVFS.html#gsf-input-gnomevfs-new">
+<ANCHOR id="gsf-input-gnomevfs-new-uri" href="gsf/gsf-GnomeVFS.html#gsf-input-gnomevfs-new-uri">
+<ANCHOR id="gsf-input-gnomevfs-needs-local-copy" href="gsf/gsf-GnomeVFS.html#gsf-input-gnomevfs-needs-local-copy">
+<ANCHOR id="GsfOutputGnomeVFS" href="gsf/gsf-GnomeVFS.html#GsfOutputGnomeVFS">
+<ANCHOR id="gsf-output-gnomevfs-new" href="gsf/gsf-GnomeVFS.html#gsf-output-gnomevfs-new">
+<ANCHOR id="gsf-output-gnomevfs-new-uri" href="gsf/gsf-GnomeVFS.html#gsf-output-gnomevfs-new-uri">
+<ANCHOR id="gsf-Bononbo" href="gsf/gsf-Bononbo.html">
+<ANCHOR id="GsfInputBonobo" href="gsf/gsf-Bononbo.html#GsfInputBonobo">
+<ANCHOR id="gsf-input-bonobo-new" href="gsf/gsf-Bononbo.html#gsf-input-bonobo-new">
+<ANCHOR id="GsfOutputBonobo" href="gsf/gsf-Bononbo.html#GsfOutputBonobo">
+<ANCHOR id="gsf-output-bonobo-new" href="gsf/gsf-Bononbo.html#gsf-output-bonobo-new">
+<ANCHOR id="GsfSharedBonoboStream" href="gsf/gsf-Bononbo.html#GsfSharedBonoboStream">
+<ANCHOR id="gsf-shared-bonobo-stream-new" href="gsf/gsf-Bononbo.html#gsf-shared-bonobo-stream-new">
+<ANCHOR id="gsf-Text" href="gsf/gsf-Text.html">
+<ANCHOR id="GsfInputTextline" href="gsf/gsf-Text.html#GsfInputTextline">
+<ANCHOR id="GsfInputTextline-struct" href="gsf/gsf-Text.html#GsfInputTextline-struct">
+<ANCHOR id="gsf-input-textline-new" href="gsf/gsf-Text.html#gsf-input-textline-new">
+<ANCHOR id="gsf-input-textline-ascii-gets" href="gsf/gsf-Text.html#gsf-input-textline-ascii-gets">
+<ANCHOR id="gsf-input-textline-utf8-gets" href="gsf/gsf-Text.html#gsf-input-textline-utf8-gets">
+<ANCHOR id="GsfOutputIconv" href="gsf/gsf-Text.html#GsfOutputIconv">
+<ANCHOR id="gsf-output-iconv-new" href="gsf/gsf-Text.html#gsf-output-iconv-new">
+<ANCHOR id="GsfOutputCsv" href="gsf/gsf-Text.html#GsfOutputCsv">
+<ANCHOR id="gsf-output-csv-write-eol" href="gsf/gsf-Text.html#gsf-output-csv-write-eol">
+<ANCHOR id="gsf-output-csv-write-field" href="gsf/gsf-Text.html#gsf-output-csv-write-field">
+<ANCHOR id="GsfOutputCsvQuotingMode" href="gsf/gsf-Text.html#GsfOutputCsvQuotingMode">
+<ANCHOR id="gsf-XML-and-libxml" href="gsf/gsf-XML-and-libxml.html">
+<ANCHOR id="GsfXMLOut" href="gsf/gsf-XML-and-libxml.html#GsfXMLOut">
+<ANCHOR id="GSF-XML-IN-NS:CAPS" href="gsf/gsf-XML-and-libxml.html#GSF-XML-IN-NS:CAPS">
+<ANCHOR id="GsfXMLContent" href="gsf/gsf-XML-and-libxml.html#GsfXMLContent">
+<ANCHOR id="GsfXMLIn" href="gsf/gsf-XML-and-libxml.html#GsfXMLIn">
+<ANCHOR id="gsf-xmlDocFormatDump" href="gsf/gsf-XML-and-libxml.html#gsf-xmlDocFormatDump">
+<ANCHOR id="gsf-xml-in-doc-free" href="gsf/gsf-XML-and-libxml.html#gsf-xml-in-doc-free">
+<ANCHOR id="GsfXMLBlob" href="gsf/gsf-XML-and-libxml.html#GsfXMLBlob">
+<ANCHOR id="GsfXMLOut-struct" href="gsf/gsf-XML-and-libxml.html#GsfXMLOut-struct">
+<ANCHOR id="GsfXMLInDoc" href="gsf/gsf-XML-and-libxml.html#GsfXMLInDoc">
+<ANCHOR id="GsfXMLInNS" href="gsf/gsf-XML-and-libxml.html#GsfXMLInNS">
+<ANCHOR id="GSF-XML-IN-NODE-FULL:CAPS" href="gsf/gsf-XML-and-libxml.html#GSF-XML-IN-NODE-FULL:CAPS">
+<ANCHOR id="GSF-XML-IN-NODE:CAPS" href="gsf/gsf-XML-and-libxml.html#GSF-XML-IN-NODE:CAPS">
+<ANCHOR id="GsfXMLInNode" href="gsf/gsf-XML-and-libxml.html#GsfXMLInNode">
+<ANCHOR id="GsfXMLInUnknownFunc" href="gsf/gsf-XML-and-libxml.html#GsfXMLInUnknownFunc">
+<ANCHOR id="gsf-xml-parser-context" href="gsf/gsf-XML-and-libxml.html#gsf-xml-parser-context">
+<ANCHOR id="gsf-xml-in-doc-new" href="gsf/gsf-XML-and-libxml.html#gsf-xml-in-doc-new">
+<ANCHOR id="gsf-xml-in-namecmp" href="gsf/gsf-XML-and-libxml.html#gsf-xml-in-namecmp">
+<ANCHOR id="gsf-xml-in-parse" href="gsf/gsf-XML-and-libxml.html#gsf-xml-in-parse">
+<ANCHOR id="gsf-xml-in-check-ns" href="gsf/gsf-XML-and-libxml.html#gsf-xml-in-check-ns">
+<ANCHOR id="gsf-xml-in-doc-extend" href="gsf/gsf-XML-and-libxml.html#gsf-xml-in-doc-extend">
+<ANCHOR id="gsf-xml-in-doc-set-unknown-handler" href="gsf/gsf-XML-and-libxml.html#gsf-xml-in-doc-set-unknown-handler">
+<ANCHOR id="gsf-xml-out-new" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-new">
+<ANCHOR id="gsf-xml-out-set-doc-type" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-set-doc-type">
+<ANCHOR id="gsf-xml-out-start-element" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-start-element">
+<ANCHOR id="gsf-xml-out-end-element" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-end-element">
+<ANCHOR id="gsf-xml-out-add-cstr" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-cstr">
+<ANCHOR id="gsf-xml-out-add-cstr-unchecked" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-cstr-unchecked">
+<ANCHOR id="gsf-xml-out-add-bool" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-bool">
+<ANCHOR id="gsf-xml-out-add-int" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-int">
+<ANCHOR id="gsf-xml-out-add-uint" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-uint">
+<ANCHOR id="gsf-xml-out-add-float" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-float">
+<ANCHOR id="gsf-xml-out-add-enum" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-enum">
+<ANCHOR id="gsf-xml-out-add-color" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-color">
+<ANCHOR id="gsf-xml-out-add-base64" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-add-base64">
+<ANCHOR id="gsf-xml-out-simple-element" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-simple-element">
+<ANCHOR id="gsf-xml-out-simple-float-element" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-simple-float-element">
+<ANCHOR id="gsf-xml-out-simple-int-element" href="gsf/gsf-XML-and-libxml.html#gsf-xml-out-simple-int-element">
+<ANCHOR id="gsf-Zip" href="gsf/gsf-Zip.html">
+<ANCHOR id="GsfInfileZip" href="gsf/gsf-Zip.html#GsfInfileZip">
+<ANCHOR id="GsfOutfileZip" href="gsf/gsf-Zip.html#GsfOutfileZip">
+<ANCHOR id="GsfInfileZip-struct" href="gsf/gsf-Zip.html#GsfInfileZip-struct">
+<ANCHOR id="gsf-infile-zip-new" href="gsf/gsf-Zip.html#gsf-infile-zip-new">
+<ANCHOR id="GsfOutfileZip-struct" href="gsf/gsf-Zip.html#GsfOutfileZip-struct">
+<ANCHOR id="gsf-outfile-zip-new" href="gsf/gsf-Zip.html#gsf-outfile-zip-new">
+<ANCHOR id="gsf-outfile-zip-set-compression-method" href="gsf/gsf-Zip.html#gsf-outfile-zip-set-compression-method">
+<ANCHOR id="GsfZipDirent" href="gsf/gsf-Zip.html#GsfZipDirent">
+<ANCHOR id="gsf-zip-dirent-new" href="gsf/gsf-Zip.html#gsf-zip-dirent-new">
+<ANCHOR id="gsf-zip-dirent-free" href="gsf/gsf-Zip.html#gsf-zip-dirent-free">
+<ANCHOR id="GsfZipVDir" href="gsf/gsf-Zip.html#GsfZipVDir">
+<ANCHOR id="gsf-vdir-free" href="gsf/gsf-Zip.html#gsf-vdir-free">
+<ANCHOR id="gsf-vdir-new" href="gsf/gsf-Zip.html#gsf-vdir-new">
+<ANCHOR id="gsf-vdir-add-child" href="gsf/gsf-Zip.html#gsf-vdir-add-child">
+<ANCHOR id="ZIP-DIRENT-USIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-USIZE:CAPS">
+<ANCHOR id="ZIP-DIRENT-OFFSET:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-OFFSET:CAPS">
+<ANCHOR id="GsfZipCompressionMethod" href="gsf/gsf-Zip.html#GsfZipCompressionMethod">
+<ANCHOR id="ZIP-FILE-HEADER-NAME-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-NAME-SIZE:CAPS">
+<ANCHOR id="ZZIP-IS-STREAMED:CAPS" href="gsf/gsf-Zip.html#ZZIP-IS-STREAMED:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-EXTRACT:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-EXTRACT:CAPS">
+<ANCHOR id="ZIP-TRAILER-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-SIZE:CAPS">
+<ANCHOR id="ZIP-HEADER-TIME:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-TIME:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-SIZE:CAPS">
+<ANCHOR id="ZZIP-IS-ENCRYPTED:CAPS" href="gsf/gsf-Zip.html#ZZIP-IS-ENCRYPTED:CAPS">
+<ANCHOR id="ZIP-HEADER-VERSION:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-VERSION:CAPS">
+<ANCHOR id="ZIP-BUF-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-BUF-SIZE:CAPS">
+<ANCHOR id="ZIP-DIRENT-CRC32:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-CRC32:CAPS">
+<ANCHOR id="ZIP-HEADER-COMP-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-COMP-SIZE:CAPS">
+<ANCHOR id="ZIP-DIRENT-COMPR-METHOD:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-COMPR-METHOD:CAPS">
+<ANCHOR id="ZIP-DIRENT-FILE-TYPE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-FILE-TYPE:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-EXTRAS-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-EXTRAS-SIZE:CAPS">
+<ANCHOR id="ZIP-DIRENT-EXTRACT:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-EXTRACT:CAPS">
+<ANCHOR id="ZIP-DIRENT-FILE-MODE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-FILE-MODE:CAPS">
+<ANCHOR id="ZIP-DIRENT-FLAGS:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-FLAGS:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-CSIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-CSIZE:CAPS">
+<ANCHOR id="ZIP-TRAILER-DIR-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-DIR-SIZE:CAPS">
+<ANCHOR id="ZIP-TRAILER-COMMENT-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-COMMENT-SIZE:CAPS">
+<ANCHOR id="ZIP-TRAILER-ENTRIES:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-ENTRIES:CAPS">
+<ANCHOR id="ZIP-NAME-SEPARATOR:CAPS" href="gsf/gsf-Zip.html#ZIP-NAME-SEPARATOR:CAPS">
+<ANCHOR id="ZIP-HEADER-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-SIZE:CAPS">
+<ANCHOR id="ZIP-HEADER-CRC:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-CRC:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-FLAGS:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-FLAGS:CAPS">
+<ANCHOR id="ZIP-DIRENT-EXTRAS-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-EXTRAS-SIZE:CAPS">
+<ANCHOR id="ZIP-HEADER-COMP-METHOD:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-COMP-METHOD:CAPS">
+<ANCHOR id="ZZIP-IS-COMPRLEVEL:CAPS" href="gsf/gsf-Zip.html#ZZIP-IS-COMPRLEVEL:CAPS">
+<ANCHOR id="ZIP-DIRENT-DOSTIME:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-DOSTIME:CAPS">
+<ANCHOR id="ZIP-DIRENT-ENCODER:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-ENCODER:CAPS">
+<ANCHOR id="ZIP-HEADER-OS:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-OS:CAPS">
+<ANCHOR id="ZIP-DIRENT-COMMENT-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-COMMENT-SIZE:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-CRC32:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-CRC32:CAPS">
+<ANCHOR id="ZIP-HEADER-FLAGS:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-FLAGS:CAPS">
+<ANCHOR id="ZIP-TRAILER-DISK:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-DISK:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-USIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-USIZE:CAPS">
+<ANCHOR id="ZIP-TRAILER-TOTAL-ENTRIES:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-TOTAL-ENTRIES:CAPS">
+<ANCHOR id="ZIP-HEADER-NAME-LEN:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-NAME-LEN:CAPS">
+<ANCHOR id="ZIP-HEADER-UNCOMP-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-UNCOMP-SIZE:CAPS">
+<ANCHOR id="ZIP-TRAILER-DIR-DISK:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-DIR-DISK:CAPS">
+<ANCHOR id="ZIP-DIRENT-CSIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-CSIZE:CAPS">
+<ANCHOR id="ZIP-TRAILER-DIR-POS:CAPS" href="gsf/gsf-Zip.html#ZIP-TRAILER-DIR-POS:CAPS">
+<ANCHOR id="ZIP-BLOCK-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-BLOCK-SIZE:CAPS">
+<ANCHOR id="ZIP-DIRENT-NAME-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-NAME-SIZE:CAPS">
+<ANCHOR id="ZIP-DIRENT-SIZE:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-SIZE:CAPS">
+<ANCHOR id="ZIP-DIRENT-DISKSTART:CAPS" href="gsf/gsf-Zip.html#ZIP-DIRENT-DISKSTART:CAPS">
+<ANCHOR id="ZIP-HEADER-EXTRA-LEN:CAPS" href="gsf/gsf-Zip.html#ZIP-HEADER-EXTRA-LEN:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-COMPR-METHOD:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-COMPR-METHOD:CAPS">
+<ANCHOR id="ZIP-FILE-HEADER-DOSTIME:CAPS" href="gsf/gsf-Zip.html#ZIP-FILE-HEADER-DOSTIME:CAPS">
+<ANCHOR id="GsfInfileZip--compression-level" href="gsf/gsf-Zip.html#GsfInfileZip--compression-level">
+<ANCHOR id="GsfInfileZip--internal-parent" href="gsf/gsf-Zip.html#GsfInfileZip--internal-parent">
+<ANCHOR id="GsfInfileZip--source" href="gsf/gsf-Zip.html#GsfInfileZip--source">
+<ANCHOR id="GsfOutfileZip--compression-level" href="gsf/gsf-Zip.html#GsfOutfileZip--compression-level">
+<ANCHOR id="GsfOutfileZip--entry-name" href="gsf/gsf-Zip.html#GsfOutfileZip--entry-name">
+<ANCHOR id="GsfOutfileZip--sink" href="gsf/gsf-Zip.html#GsfOutfileZip--sink">
+<ANCHOR id="gsf-Compression" href="gsf/gsf-Compression.html">
+<ANCHOR id="GsfInputGZip" href="gsf/gsf-Compression.html#GsfInputGZip">
+<ANCHOR id="GsfOutputBzip" href="gsf/gsf-Compression.html#GsfOutputBzip">
+<ANCHOR id="GsfInputGZip-struct" href="gsf/gsf-Compression.html#GsfInputGZip-struct">
+<ANCHOR id="gsf-input-gzip-new" href="gsf/gsf-Compression.html#gsf-input-gzip-new">
+<ANCHOR id="gsf-input-memory-new-from-bzip" href="gsf/gsf-Compression.html#gsf-input-memory-new-from-bzip">
+<ANCHOR id="GsfOutputGZip" href="gsf/gsf-Compression.html#GsfOutputGZip">
+<ANCHOR id="gsf-output-gzip-new" href="gsf/gsf-Compression.html#gsf-output-gzip-new">
+<ANCHOR id="GsfOutputBzip-struct" href="gsf/gsf-Compression.html#GsfOutputBzip-struct">
+<ANCHOR id="gsf-output-bzip-new" href="gsf/gsf-Compression.html#gsf-output-bzip-new">
+<ANCHOR id="GsfInputGZip--raw" href="gsf/gsf-Compression.html#GsfInputGZip--raw">
+<ANCHOR id="GsfInputGZip--source" href="gsf/gsf-Compression.html#GsfInputGZip--source">
+<ANCHOR id="GsfInputGZip--uncompressed-size" href="gsf/gsf-Compression.html#GsfInputGZip--uncompressed-size">
+<ANCHOR id="gsf-MS-OLE2" href="gsf/gsf-MS-OLE2.html">
+<ANCHOR id="GsfInfileMSOle" href="gsf/gsf-MS-OLE2.html#GsfInfileMSOle">
+<ANCHOR id="GsfOutfileMSOle" href="gsf/gsf-MS-OLE2.html#GsfOutfileMSOle">
+<ANCHOR id="GsfInfileMSOle-struct" href="gsf/gsf-MS-OLE2.html#GsfInfileMSOle-struct">
+<ANCHOR id="gsf-infile-msole-new" href="gsf/gsf-MS-OLE2.html#gsf-infile-msole-new">
+<ANCHOR id="gsf-infile-msole-get-class-id" href="gsf/gsf-MS-OLE2.html#gsf-infile-msole-get-class-id">
+<ANCHOR id="GsfOutfileMSOle-struct" href="gsf/gsf-MS-OLE2.html#GsfOutfileMSOle-struct">
+<ANCHOR id="gsf-outfile-msole-new" href="gsf/gsf-MS-OLE2.html#gsf-outfile-msole-new">
+<ANCHOR id="gsf-outfile-msole-new-full" href="gsf/gsf-MS-OLE2.html#gsf-outfile-msole-new-full">
+<ANCHOR id="gsf-outfile-msole-set-class-id" href="gsf/gsf-MS-OLE2.html#gsf-outfile-msole-set-class-id">
+<ANCHOR id="gsf-msole-metadata-read" href="gsf/gsf-MS-OLE2.html#gsf-msole-metadata-read">
+<ANCHOR id="gsf-msole-metadata-write" href="gsf/gsf-MS-OLE2.html#gsf-msole-metadata-write">
+<ANCHOR id="gsf-msole-iconv-open-codepages-for-export" href="gsf/gsf-MS-OLE2.html#gsf-msole-iconv-open-codepages-for-export">
+<ANCHOR id="gsf-msole-iconv-open-codepage-for-import" href="gsf/gsf-MS-OLE2.html#gsf-msole-iconv-open-codepage-for-import">
+<ANCHOR id="gsf-msole-iconv-open-for-export" href="gsf/gsf-MS-OLE2.html#gsf-msole-iconv-open-for-export">
+<ANCHOR id="gsf-msole-iconv-open-codepage-for-export" href="gsf/gsf-MS-OLE2.html#gsf-msole-iconv-open-codepage-for-export">
+<ANCHOR id="gsf-msole-iconv-open-for-import" href="gsf/gsf-MS-OLE2.html#gsf-msole-iconv-open-for-import">
+<ANCHOR id="gsf-msole-iconv-win-codepage" href="gsf/gsf-MS-OLE2.html#gsf-msole-iconv-win-codepage">
+<ANCHOR id="gsf-msole-codepage-to-lid" href="gsf/gsf-MS-OLE2.html#gsf-msole-codepage-to-lid">
+<ANCHOR id="gsf-msole-lid-to-codepage" href="gsf/gsf-MS-OLE2.html#gsf-msole-lid-to-codepage">
+<ANCHOR id="gsf-msole-lid-to-codepage-str" href="gsf/gsf-MS-OLE2.html#gsf-msole-lid-to-codepage-str">
+<ANCHOR id="gsf-msole-lid-for-language" href="gsf/gsf-MS-OLE2.html#gsf-msole-lid-for-language">
+<ANCHOR id="gsf-msole-language-for-lid" href="gsf/gsf-MS-OLE2.html#gsf-msole-language-for-lid">
+<ANCHOR id="gsf-msole-inflate" href="gsf/gsf-MS-OLE2.html#gsf-msole-inflate">
+<ANCHOR id="OLE-HEADER-START-BAT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-START-BAT:CAPS">
+<ANCHOR id="OLE-HEADER-MAJOR-VER:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-MAJOR-VER:CAPS">
+<ANCHOR id="OLE-HEADER-METABAT-SIZE:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-METABAT-SIZE:CAPS">
+<ANCHOR id="OLE-HEADER-DIRENT-START:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-DIRENT-START:CAPS">
+<ANCHOR id="OLE-HEADER-NUM-SBAT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-NUM-SBAT:CAPS">
+<ANCHOR id="OLE-HEADER-BB-SHIFT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-BB-SHIFT:CAPS">
+<ANCHOR id="OLE-HEADER-CSECTDIR:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-CSECTDIR:CAPS">
+<ANCHOR id="OLE-HEADER-NUM-BAT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-NUM-BAT:CAPS">
+<ANCHOR id="OLE-HEADER-THRESHOLD:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-THRESHOLD:CAPS">
+<ANCHOR id="OLE-HEADER-METABAT-BLOCK:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-METABAT-BLOCK:CAPS">
+<ANCHOR id="OLE-HEADER-SBAT-START:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-SBAT-START:CAPS">
+<ANCHOR id="OLE-HEADER-SIGNATURE:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-SIGNATURE:CAPS">
+<ANCHOR id="OLE-HEADER-BYTE-ORDER:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-BYTE-ORDER:CAPS">
+<ANCHOR id="OLE-HEADER-SB-SHIFT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-SB-SHIFT:CAPS">
+<ANCHOR id="OLE-HEADER-NUM-METABAT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-NUM-METABAT:CAPS">
+<ANCHOR id="OLE-HEADER-SIZE:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-SIZE:CAPS">
+<ANCHOR id="OLE-HEADER-CLSID:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-CLSID:CAPS">
+<ANCHOR id="OLE-HEADER-MINOR-VER:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-HEADER-MINOR-VER:CAPS">
+<ANCHOR id="OLE-DEFAULT-BB-SHIFT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-DEFAULT-BB-SHIFT:CAPS">
+<ANCHOR id="OLE-DEFAULT-SB-SHIFT:CAPS" href="gsf/gsf-MS-OLE2.html#OLE-DEFAULT-SB-SHIFT:CAPS">
+<ANCHOR id="DIRENT-DETAILS-SIZE:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-DETAILS-SIZE:CAPS">
+<ANCHOR id="DIRENT-SIZE:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-SIZE:CAPS">
+<ANCHOR id="DIRENT-NAME-LEN:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-NAME-LEN:CAPS">
+<ANCHOR id="DIRENT-TYPE-PROPERTY:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-TYPE-PROPERTY:CAPS">
+<ANCHOR id="DIRENT-TYPE-FILE:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-TYPE-FILE:CAPS">
+<ANCHOR id="DIRENT-MAGIC-END:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-MAGIC-END:CAPS">
+<ANCHOR id="DIRENT-TYPE-DIR:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-TYPE-DIR:CAPS">
+<ANCHOR id="DIRENT-MAX-NAME-SIZE:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-MAX-NAME-SIZE:CAPS">
+<ANCHOR id="DIRENT-FILE-SIZE:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-FILE-SIZE:CAPS">
+<ANCHOR id="DIRENT-FIRSTBLOCK:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-FIRSTBLOCK:CAPS">
+<ANCHOR id="DIRENT-TYPE-INVALID:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-TYPE-INVALID:CAPS">
+<ANCHOR id="DIRENT-USERFLAGS:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-USERFLAGS:CAPS">
+<ANCHOR id="DIRENT-COLOUR:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-COLOUR:CAPS">
+<ANCHOR id="DIRENT-MODIFY-TIME:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-MODIFY-TIME:CAPS">
+<ANCHOR id="DIRENT-TYPE-LOCKBYTES:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-TYPE-LOCKBYTES:CAPS">
+<ANCHOR id="DIRENT-CREATE-TIME:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-CREATE-TIME:CAPS">
+<ANCHOR id="DIRENT-PREV:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-PREV:CAPS">
+<ANCHOR id="DIRENT-NEXT:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-NEXT:CAPS">
+<ANCHOR id="DIRENT-CHILD:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-CHILD:CAPS">
+<ANCHOR id="DIRENT-TYPE:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-TYPE:CAPS">
+<ANCHOR id="DIRENT-CLSID:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-CLSID:CAPS">
+<ANCHOR id="DIRENT-TYPE-ROOTDIR:CAPS" href="gsf/gsf-MS-OLE2.html#DIRENT-TYPE-ROOTDIR:CAPS">
+<ANCHOR id="BAT-MAGIC-METABAT:CAPS" href="gsf/gsf-MS-OLE2.html#BAT-MAGIC-METABAT:CAPS">
+<ANCHOR id="BAT-MAGIC-BAT:CAPS" href="gsf/gsf-MS-OLE2.html#BAT-MAGIC-BAT:CAPS">
+<ANCHOR id="BAT-INDEX-SIZE:CAPS" href="gsf/gsf-MS-OLE2.html#BAT-INDEX-SIZE:CAPS">
+<ANCHOR id="BAT-MAGIC-END-OF-CHAIN:CAPS" href="gsf/gsf-MS-OLE2.html#BAT-MAGIC-END-OF-CHAIN:CAPS">
+<ANCHOR id="BAT-MAGIC-UNUSED:CAPS" href="gsf/gsf-MS-OLE2.html#BAT-MAGIC-UNUSED:CAPS">
+<ANCHOR id="gsf-metadata" href="gsf/gsf-metadata.html">
+<ANCHOR id="GsfDocMetaData" href="gsf/gsf-metadata.html#GsfDocMetaData">
+<ANCHOR id="gsf-doc-meta-data-new" href="gsf/gsf-metadata.html#gsf-doc-meta-data-new">
+<ANCHOR id="gsf-doc-meta-data-lookup" href="gsf/gsf-metadata.html#gsf-doc-meta-data-lookup">
+<ANCHOR id="gsf-doc-meta-data-insert" href="gsf/gsf-metadata.html#gsf-doc-meta-data-insert">
+<ANCHOR id="gsf-doc-meta-data-remove" href="gsf/gsf-metadata.html#gsf-doc-meta-data-remove">
+<ANCHOR id="gsf-doc-meta-data-steal" href="gsf/gsf-metadata.html#gsf-doc-meta-data-steal">
+<ANCHOR id="gsf-doc-meta-data-store" href="gsf/gsf-metadata.html#gsf-doc-meta-data-store">
+<ANCHOR id="gsf-doc-meta-data-foreach" href="gsf/gsf-metadata.html#gsf-doc-meta-data-foreach">
+<ANCHOR id="gsf-doc-meta-data-size" href="gsf/gsf-metadata.html#gsf-doc-meta-data-size">
+<ANCHOR id="GsfDocProp" href="gsf/gsf-metadata.html#GsfDocProp">
+<ANCHOR id="gsf-doc-prop-new" href="gsf/gsf-metadata.html#gsf-doc-prop-new">
+<ANCHOR id="gsf-doc-prop-free" href="gsf/gsf-metadata.html#gsf-doc-prop-free">
+<ANCHOR id="gsf-doc-prop-get-name" href="gsf/gsf-metadata.html#gsf-doc-prop-get-name">
+<ANCHOR id="gsf-doc-prop-get-val" href="gsf/gsf-metadata.html#gsf-doc-prop-get-val">
+<ANCHOR id="gsf-doc-prop-set-val" href="gsf/gsf-metadata.html#gsf-doc-prop-set-val">
+<ANCHOR id="gsf-doc-prop-get-link" href="gsf/gsf-metadata.html#gsf-doc-prop-get-link">
+<ANCHOR id="gsf-doc-prop-set-link" href="gsf/gsf-metadata.html#gsf-doc-prop-set-link">
+<ANCHOR id="GsfDocPropVector" href="gsf/gsf-metadata.html#GsfDocPropVector">
+<ANCHOR id="gsf-docprop-vector-new" href="gsf/gsf-metadata.html#gsf-docprop-vector-new">
+<ANCHOR id="gsf-docprop-vector-append" href="gsf/gsf-metadata.html#gsf-docprop-vector-append">
+<ANCHOR id="gsf-docprop-vector-as-string" href="gsf/gsf-metadata.html#gsf-docprop-vector-as-string">
+<ANCHOR id="gsf-value-get-docprop-varray" href="gsf/gsf-metadata.html#gsf-value-get-docprop-varray">
+<ANCHOR id="gsf-value-get-docprop-vector" href="gsf/gsf-metadata.html#gsf-value-get-docprop-vector">
+<ANCHOR id="GSF-META-NAME-TITLE:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-TITLE:CAPS">
+<ANCHOR id="GSF-META-NAME-DESCRIPTION:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-DESCRIPTION:CAPS">
+<ANCHOR id="GSF-META-NAME-SUBJECT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-SUBJECT:CAPS">
+<ANCHOR id="GSF-META-NAME-DATE-MODIFIED:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-DATE-MODIFIED:CAPS">
+<ANCHOR id="GSF-META-NAME-DATE-CREATED:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-DATE-CREATED:CAPS">
+<ANCHOR id="GSF-META-NAME-KEYWORDS:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-KEYWORDS:CAPS">
+<ANCHOR id="GSF-META-NAME-LANGUAGE:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-LANGUAGE:CAPS">
+<ANCHOR id="GSF-META-NAME-REVISION-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-REVISION-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-EDITING-DURATION:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-EDITING-DURATION:CAPS">
+<ANCHOR id="GSF-META-NAME-TABLE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-TABLE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-IMAGE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-IMAGE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-OBJECT-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-OBJECT-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-PAGE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-PAGE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-PARAGRAPH-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-PARAGRAPH-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-WORD-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-WORD-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-CHARACTER-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-CHARACTER-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-CELL-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-CELL-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-SPREADSHEET-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-SPREADSHEET-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-CREATOR:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-CREATOR:CAPS">
+<ANCHOR id="GSF-META-NAME-TEMPLATE:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-TEMPLATE:CAPS">
+<ANCHOR id="GSF-META-NAME-LAST-SAVED-BY:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-LAST-SAVED-BY:CAPS">
+<ANCHOR id="GSF-META-NAME-LAST-PRINTED:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-LAST-PRINTED:CAPS">
+<ANCHOR id="GSF-META-NAME-SECURITY:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-SECURITY:CAPS">
+<ANCHOR id="GSF-META-NAME-CATEGORY:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-CATEGORY:CAPS">
+<ANCHOR id="GSF-META-NAME-PRESENTATION-FORMAT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-PRESENTATION-FORMAT:CAPS">
+<ANCHOR id="GSF-META-NAME-THUMBNAIL:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-THUMBNAIL:CAPS">
+<ANCHOR id="GSF-META-NAME-GENERATOR:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-GENERATOR:CAPS">
+<ANCHOR id="GSF-META-NAME-LINE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-LINE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-SLIDE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-SLIDE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-NOTE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-NOTE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-HIDDEN-SLIDE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-HIDDEN-SLIDE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-MM-CLIP-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MM-CLIP-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-BYTE-COUNT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-BYTE-COUNT:CAPS">
+<ANCHOR id="GSF-META-NAME-SCALE:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-SCALE:CAPS">
+<ANCHOR id="GSF-META-NAME-HEADING-PAIRS:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-HEADING-PAIRS:CAPS">
+<ANCHOR id="GSF-META-NAME-DOCUMENT-PARTS:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-DOCUMENT-PARTS:CAPS">
+<ANCHOR id="GSF-META-NAME-MANAGER:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MANAGER:CAPS">
+<ANCHOR id="GSF-META-NAME-COMPANY:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-COMPANY:CAPS">
+<ANCHOR id="GSF-META-NAME-LINKS-DIRTY:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-LINKS-DIRTY:CAPS">
+<ANCHOR id="GSF-META-NAME-DICTIONARY:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-DICTIONARY:CAPS">
+<ANCHOR id="GSF-META-NAME-MSOLE-UNKNOWN-17:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-17:CAPS">
+<ANCHOR id="GSF-META-NAME-MSOLE-UNKNOWN-18:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-18:CAPS">
+<ANCHOR id="GSF-META-NAME-MSOLE-UNKNOWN-19:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-19:CAPS">
+<ANCHOR id="GSF-META-NAME-MSOLE-UNKNOWN-20:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-20:CAPS">
+<ANCHOR id="GSF-META-NAME-MSOLE-UNKNOWN-21:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-21:CAPS">
+<ANCHOR id="GSF-META-NAME-MSOLE-UNKNOWN-22:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-22:CAPS">
+<ANCHOR id="GSF-META-NAME-MSOLE-UNKNOWN-23:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-MSOLE-UNKNOWN-23:CAPS">
+<ANCHOR id="GSF-META-NAME-LOCALE-SYSTEM-DEFAULT:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-LOCALE-SYSTEM-DEFAULT:CAPS">
+<ANCHOR id="GSF-META-NAME-CASE-SENSITIVE:CAPS" href="gsf/gsf-metadata.html#GSF-META-NAME-CASE-SENSITIVE:CAPS">
+<ANCHOR id="gsf-GsfBlob" href="gsf/gsf-GsfBlob.html">
+<ANCHOR id="GsfBlob" href="gsf/gsf-GsfBlob.html#GsfBlob">
+<ANCHOR id="GsfBlobClass" href="gsf/gsf-GsfBlob.html#GsfBlobClass">
+<ANCHOR id="gsf-blob-new" href="gsf/gsf-GsfBlob.html#gsf-blob-new">
+<ANCHOR id="gsf-blob-get-size" href="gsf/gsf-GsfBlob.html#gsf-blob-get-size">
+<ANCHOR id="gsf-blob-peek-data" href="gsf/gsf-GsfBlob.html#gsf-blob-peek-data">
+<ANCHOR id="gsf-GsfClipData" href="gsf/gsf-GsfClipData.html">
+<ANCHOR id="GsfClipFormat" href="gsf/gsf-GsfClipData.html#GsfClipFormat">
+<ANCHOR id="GsfClipFormatWindows" href="gsf/gsf-GsfClipData.html#GsfClipFormatWindows">
+<ANCHOR id="GsfClipData" href="gsf/gsf-GsfClipData.html#GsfClipData">
+<ANCHOR id="GsfClipDataClass" href="gsf/gsf-GsfClipData.html#GsfClipDataClass">
+<ANCHOR id="gsf-clip-data-new" href="gsf/gsf-GsfClipData.html#gsf-clip-data-new">
+<ANCHOR id="gsf-clip-data-get-format" href="gsf/gsf-GsfClipData.html#gsf-clip-data-get-format">
+<ANCHOR id="gsf-clip-data-get-data-blob" href="gsf/gsf-GsfClipData.html#gsf-clip-data-get-data-blob">
+<ANCHOR id="gsf-clip-data-get-windows-clipboard-format" href="gsf/gsf-GsfClipData.html#gsf-clip-data-get-windows-clipboard-format">
+<ANCHOR id="gsf-clip-data-peek-real-data" href="gsf/gsf-GsfClipData.html#gsf-clip-data-peek-real-data">
+<ANCHOR id="gsf-Structured-Blobs" href="gsf/gsf-Structured-Blobs.html">
+<ANCHOR id="GsfStructuredBlob" href="gsf/gsf-Structured-Blobs.html#GsfStructuredBlob">
+<ANCHOR id="GsfStructuredBlob-struct" href="gsf/gsf-Structured-Blobs.html#GsfStructuredBlob-struct">
+<ANCHOR id="gsf-structured-blob-write" href="gsf/gsf-Structured-Blobs.html#gsf-structured-blob-write">
+<ANCHOR id="gsf-structured-blob-read" href="gsf/gsf-Structured-Blobs.html#gsf-structured-blob-read">
+<ANCHOR id="gsf-utils" href="gsf/gsf-utils.html">
+<ANCHOR id="gsf-init" href="gsf/gsf-utils.html#gsf-init">
+<ANCHOR id="gsf-shutdown" href="gsf/gsf-utils.html#gsf-shutdown">
+<ANCHOR id="gsf-init-dynamic" href="gsf/gsf-utils.html#gsf-init-dynamic">
+<ANCHOR id="gsf-shutdown-dynamic" href="gsf/gsf-utils.html#gsf-shutdown-dynamic">
+<ANCHOR id="libgsf-major-version" href="gsf/gsf-utils.html#libgsf-major-version">
+<ANCHOR id="libgsf-minor-version" href="gsf/gsf-utils.html#libgsf-minor-version">
+<ANCHOR id="libgsf-micro-version" href="gsf/gsf-utils.html#libgsf-micro-version">
+<ANCHOR id="GSF-CLASS:CAPS" href="gsf/gsf-utils.html#GSF-CLASS:CAPS">
+<ANCHOR id="GSF-CLASS-FULL:CAPS" href="gsf/gsf-utils.html#GSF-CLASS-FULL:CAPS">
+<ANCHOR id="GSF-CLASS-ABSTRACT:CAPS" href="gsf/gsf-utils.html#GSF-CLASS-ABSTRACT:CAPS">
+<ANCHOR id="GSF-INTERFACE:CAPS" href="gsf/gsf-utils.html#GSF-INTERFACE:CAPS">
+<ANCHOR id="GSF-INTERFACE-FULL:CAPS" href="gsf/gsf-utils.html#GSF-INTERFACE-FULL:CAPS">
+<ANCHOR id="GSF-DYNAMIC-CLASS:CAPS" href="gsf/gsf-utils.html#GSF-DYNAMIC-CLASS:CAPS">
+<ANCHOR id="GSF-DYNAMIC-CLASS-FULL:CAPS" href="gsf/gsf-utils.html#GSF-DYNAMIC-CLASS-FULL:CAPS">
+<ANCHOR id="GSF-DYNAMIC-CLASS-ABSTRACT:CAPS" href="gsf/gsf-utils.html#GSF-DYNAMIC-CLASS-ABSTRACT:CAPS">
+<ANCHOR id="GSF-DYNAMIC-INTERFACE:CAPS" href="gsf/gsf-utils.html#GSF-DYNAMIC-INTERFACE:CAPS">
+<ANCHOR id="GSF-DYNAMIC-INTERFACE-FULL:CAPS" href="gsf/gsf-utils.html#GSF-DYNAMIC-INTERFACE-FULL:CAPS">
+<ANCHOR id="GSF-PARAM-STATIC:CAPS" href="gsf/gsf-utils.html#GSF-PARAM-STATIC:CAPS">
+<ANCHOR id="GSF-ERROR:CAPS" href="gsf/gsf-utils.html#GSF-ERROR:CAPS">
+<ANCHOR id="GsfError" href="gsf/gsf-utils.html#GsfError">
+<ANCHOR id="gsf-error-quark" href="gsf/gsf-utils.html#gsf-error-quark">
+<ANCHOR id="gsf-mem-dump" href="gsf/gsf-utils.html#gsf-mem-dump">
+<ANCHOR id="gsf-input-dump" href="gsf/gsf-utils.html#gsf-input-dump">
+<ANCHOR id="GSF-OFF-T-FORMAT:CAPS" href="gsf/gsf-utils.html#GSF-OFF-T-FORMAT:CAPS">
+<ANCHOR id="gsf-off-t" href="gsf/gsf-utils.html#gsf-off-t">
+<ANCHOR id="gsf-filename-to-utf8" href="gsf/gsf-utils.html#gsf-filename-to-utf8">
+<ANCHOR id="gsf-iconv-close" href="gsf/gsf-utils.html#gsf-iconv-close">
+<ANCHOR id="gsf-extension-pointer" href="gsf/gsf-utils.html#gsf-extension-pointer">
+<ANCHOR id="gsf-base64-encode-simple" href="gsf/gsf-utils.html#gsf-base64-encode-simple">
+<ANCHOR id="gsf-base64-encode-close" href="gsf/gsf-utils.html#gsf-base64-encode-close">
+<ANCHOR id="gsf-base64-encode-step" href="gsf/gsf-utils.html#gsf-base64-encode-step">
+<ANCHOR id="gsf-base64-decode-simple" href="gsf/gsf-utils.html#gsf-base64-decode-simple">
+<ANCHOR id="gsf-base64-decode-step" href="gsf/gsf-utils.html#gsf-base64-decode-step">
+<ANCHOR id="GSF-LE-GET-GINT8:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GINT8:CAPS">
+<ANCHOR id="GSF-LE-GET-GUINT64:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GUINT64:CAPS">
+<ANCHOR id="GSF-LE-GET-GINT16:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GINT16:CAPS">
+<ANCHOR id="GSF-LE-GET-GUINT8:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GUINT8:CAPS">
+<ANCHOR id="GSF-LE-GET-GINT32:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GINT32:CAPS">
+<ANCHOR id="GSF-LE-GET-GUINT16:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GUINT16:CAPS">
+<ANCHOR id="GSF-LE-GET-GUINT32:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GUINT32:CAPS">
+<ANCHOR id="GSF-LE-GET-GINT64:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-GINT64:CAPS">
+<ANCHOR id="gsf-le-get-guint64" href="gsf/gsf-utils.html#gsf-le-get-guint64">
+<ANCHOR id="GSF-LE-GET-FLOAT:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-FLOAT:CAPS">
+<ANCHOR id="gsf-le-get-float" href="gsf/gsf-utils.html#gsf-le-get-float">
+<ANCHOR id="GSF-LE-GET-DOUBLE:CAPS" href="gsf/gsf-utils.html#GSF-LE-GET-DOUBLE:CAPS">
+<ANCHOR id="gsf-le-get-double" href="gsf/gsf-utils.html#gsf-le-get-double">
+<ANCHOR id="GSF-LE-SET-GUINT8:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GUINT8:CAPS">
+<ANCHOR id="GSF-LE-SET-GUINT16:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GUINT16:CAPS">
+<ANCHOR id="GSF-LE-SET-GUINT32:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GUINT32:CAPS">
+<ANCHOR id="GSF-LE-SET-GINT8:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GINT8:CAPS">
+<ANCHOR id="GSF-LE-SET-GINT16:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GINT16:CAPS">
+<ANCHOR id="GSF-LE-SET-GINT32:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GINT32:CAPS">
+<ANCHOR id="GSF-LE-SET-GINT64:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GINT64:CAPS">
+<ANCHOR id="GSF-LE-SET-GUINT64:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-GUINT64:CAPS">
+<ANCHOR id="GSF-LE-SET-FLOAT:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-FLOAT:CAPS">
+<ANCHOR id="GSF-LE-SET-DOUBLE:CAPS" href="gsf/gsf-utils.html#GSF-LE-SET-DOUBLE:CAPS">
+<ANCHOR id="gsf-le-set-float" href="gsf/gsf-utils.html#gsf-le-set-float">
+<ANCHOR id="gsf-le-set-double" href="gsf/gsf-utils.html#gsf-le-set-double">
+<ANCHOR id="GsfTimestamp" href="gsf/gsf-utils.html#GsfTimestamp">
+<ANCHOR id="gsf-timestamp-new" href="gsf/gsf-utils.html#gsf-timestamp-new">
+<ANCHOR id="gsf-timestamp-new-now" href="gsf/gsf-utils.html#gsf-timestamp-new-now">
+<ANCHOR id="gsf-timestamp-copy" href="gsf/gsf-utils.html#gsf-timestamp-copy">
+<ANCHOR id="gsf-timestamp-free" href="gsf/gsf-utils.html#gsf-timestamp-free">
+<ANCHOR id="gsf-timestamp-as-string" href="gsf/gsf-utils.html#gsf-timestamp-as-string">
+<ANCHOR id="gsf-timestamp-parse" href="gsf/gsf-utils.html#gsf-timestamp-parse">
+<ANCHOR id="gsf-timestamp-hash" href="gsf/gsf-utils.html#gsf-timestamp-hash">
+<ANCHOR id="gsf-timestamp-equal" href="gsf/gsf-utils.html#gsf-timestamp-equal">
+<ANCHOR id="gsf-value-set-timestamp" href="gsf/gsf-utils.html#gsf-value-set-timestamp">
+<ANCHOR id="VAL-IS-GSF-TIMESTAMP:CAPS" href="gsf/gsf-utils.html#VAL-IS-GSF-TIMESTAMP:CAPS">
+<ANCHOR id="gsf-doc-prop-swap-val" href="gsf/gsf-utils.html#gsf-doc-prop-swap-val">
+<ANCHOR id="gsf-property-settings-collect" href="gsf/gsf-utils.html#gsf-property-settings-collect">
+<ANCHOR id="gsf-property-settings-collect-valist" href="gsf/gsf-utils.html#gsf-property-settings-collect-valist">
+<ANCHOR id="gsf-property-settings-free" href="gsf/gsf-utils.html#gsf-property-settings-free">

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/into.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/into.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/into.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Part&#160;I.&#160;GSF Overview</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="index.html" title="GSF Reference Manual">
+<link rel="prev" href="index.html" title="GSF Reference Manual">
+<link rel="next" href="api.html" title="Part&#160;II.&#160;API Reference">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="api.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="part" lang="en">
+<div class="titlepage"><div><div><h1 class="title">
+<a name="into"></a>GSF Overview</h1></div></div></div>
+<div class="partintro" lang="en">
+<div></div>
+<p>
+The GNOME Structured File Library (GSF) is an I/O abstraction for
+reading/writing compound files.  GSF is released under the GNU Lesser General
+Public License (GNU LGPL), which allows for flexible licensing of client
+applications.
+    </p>
+<p>
+GSF depends on the following libraries:
+</p>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody><tr>
+<td>
+<span class="term">GLib</span></td>
+<td><p>
+A general-purpose utility library, not specific to graphical user interfaces.
+GLib provides many useful data types, macros, type conversions,
+string utilities, file utilities, a main loop abstraction, and so on.
+</p></td>
+</tr></tbody>
+</table></div>
+<p>
+</p>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="index.html"><b>&lt;&lt;&#160;GSF Reference Manual</b></a></td>
+<td align="right"><a accesskey="n" href="api.html"><b>Part&#160;II.&#160;API Reference&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/io.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/io.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/io.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Basic Input/Output</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="prev" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="next" href="gsf-Input-from-unstructured-files.html" title="Input from unstructured files">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="api.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Input-from-unstructured-files.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="io"></a>Basic Input/Output</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="gsf-Input-from-unstructured-files.html">Input from unstructured files</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Output-to-unstructured-files.html">Output to unstructured files</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="api.html"><b>&lt;&lt;&#160;Part&#160;II.&#160;API Reference</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Input-from-unstructured-files.html"><b>Input from unstructured files&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/ix01.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/ix01.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/ix01.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,973 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Index</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="index.html" title="GSF Reference Manual">
+<link rel="prev" href="gsf-utils.html" title="utils">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-utils.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+</tr></table>
+<div class="index">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="id2590869"></a>Index</h2></div></div></div>
+<pre class="screen">
+    GObject
+        <a href="gsf-Input-from-unstructured-files.html#GsfInput">GsfInput</a>
+            <a href="gsf-Infile-reading-structed-files.html#GsfInfile">GsfInfile</a>
+                <a href="gsf-MS-OLE2.html#GsfInfileMSOle">GsfInfileMSOle</a>
+                <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInfileStdio">GsfInfileStdio</a>
+                <a href="gsf-Zip.html#GsfInfileZip">GsfInfileZip</a>
+                <a href="gsf-Structured-Blobs.html#GsfStructuredBlob">GsfStructuredBlob</a>
+            <a href="gsf-Compression.html#GsfInputGZip">GsfInputGZip</a>
+            <a href="gsf-memory.html#GsfInputMemory">GsfInputMemory</a>
+            <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfInputStdio">GsfInputStdio</a>
+            <a href="gsf-Text.html#GsfInputTextline">GsfInputTextline</a>
+        <a href="gsf-XML-and-libxml.html#GsfXMLOut">GsfXMLOut</a>
+        <a href="gsf-Output-to-unstructured-files.html#GsfOutput">GsfOutput</a>
+            <a href="gsf-Outfile-writing-structed-files.html#GsfOutfile">GsfOutfile</a>
+                <a href="gsf-MS-OLE2.html#GsfOutfileMSOle">GsfOutfileMSOle</a>
+                <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutfileStdio">GsfOutfileStdio</a>
+                <a href="gsf-Zip.html#GsfOutfileZip">GsfOutfileZip</a>
+            <a href="gsf-Compression.html#GsfOutputBzip">GsfOutputBzip</a>
+            <a href="gsf-GIOChannel.html#GsfOutputIOChannel">GsfOutputIOChannel</a>
+            <a href="gsf-memory.html#GsfOutputMemory">GsfOutputMemory</a>
+            <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#GsfOutputStdio">GsfOutputStdio</a>
+        <a href="gsf-memory.html#GsfSharedMemory">GsfSharedMemory</a>
+</pre>
+<div class="index">
+<div class="indexdiv">
+<h3>B</h3>
+<dl>
+<dt>BAT_INDEX_SIZE, <a href="gsf-MS-OLE2.html#id2560931">BAT_INDEX_SIZE</a>
+</dt>
+<dt>BAT_MAGIC_BAT, <a href="gsf-MS-OLE2.html#id2560905">BAT_MAGIC_BAT</a>
+</dt>
+<dt>BAT_MAGIC_END_OF_CHAIN, <a href="gsf-MS-OLE2.html#id2560957">BAT_MAGIC_END_OF_CHAIN</a>
+</dt>
+<dt>BAT_MAGIC_METABAT, <a href="gsf-MS-OLE2.html#id2560879">BAT_MAGIC_METABAT</a>
+</dt>
+<dt>BAT_MAGIC_UNUSED, <a href="gsf-MS-OLE2.html#id2560984">BAT_MAGIC_UNUSED</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>D</h3>
+<dl>
+<dt>DIRENT_CHILD, <a href="gsf-MS-OLE2.html#id2560775">DIRENT_CHILD</a>
+</dt>
+<dt>DIRENT_CLSID, <a href="gsf-MS-OLE2.html#id2560826">DIRENT_CLSID</a>
+</dt>
+<dt>DIRENT_COLOUR, <a href="gsf-MS-OLE2.html#id2560620">DIRENT_COLOUR</a>
+</dt>
+<dt>DIRENT_CREATE_TIME, <a href="gsf-MS-OLE2.html#id2560698">DIRENT_CREATE_TIME</a>
+</dt>
+<dt>DIRENT_DETAILS_SIZE, <a href="gsf-MS-OLE2.html#id2560304">DIRENT_DETAILS_SIZE</a>
+</dt>
+<dt>DIRENT_FILE_SIZE, <a href="gsf-MS-OLE2.html#id2560515">DIRENT_FILE_SIZE</a>
+</dt>
+<dt>DIRENT_FIRSTBLOCK, <a href="gsf-MS-OLE2.html#id2560542">DIRENT_FIRSTBLOCK</a>
+</dt>
+<dt>DIRENT_MAGIC_END, <a href="gsf-MS-OLE2.html#id2560436">DIRENT_MAGIC_END</a>
+</dt>
+<dt>DIRENT_MAX_NAME_SIZE, <a href="gsf-MS-OLE2.html#id2560488">DIRENT_MAX_NAME_SIZE</a>
+</dt>
+<dt>DIRENT_MODIFY_TIME, <a href="gsf-MS-OLE2.html#id2560646">DIRENT_MODIFY_TIME</a>
+</dt>
+<dt>DIRENT_NAME_LEN, <a href="gsf-MS-OLE2.html#id2560356">DIRENT_NAME_LEN</a>
+</dt>
+<dt>DIRENT_NEXT, <a href="gsf-MS-OLE2.html#id2560750">DIRENT_NEXT</a>
+</dt>
+<dt>DIRENT_PREV, <a href="gsf-MS-OLE2.html#id2560725">DIRENT_PREV</a>
+</dt>
+<dt>DIRENT_SIZE, <a href="gsf-MS-OLE2.html#id2560331">DIRENT_SIZE</a>
+</dt>
+<dt>DIRENT_TYPE, <a href="gsf-MS-OLE2.html#id2560801">DIRENT_TYPE</a>
+</dt>
+<dt>DIRENT_TYPE_DIR, <a href="gsf-MS-OLE2.html#id2560463">DIRENT_TYPE_DIR</a>
+</dt>
+<dt>DIRENT_TYPE_FILE, <a href="gsf-MS-OLE2.html#id2560410">DIRENT_TYPE_FILE</a>
+</dt>
+<dt>DIRENT_TYPE_INVALID, <a href="gsf-MS-OLE2.html#id2560567">DIRENT_TYPE_INVALID</a>
+</dt>
+<dt>DIRENT_TYPE_LOCKBYTES, <a href="gsf-MS-OLE2.html#id2560672">DIRENT_TYPE_LOCKBYTES</a>
+</dt>
+<dt>DIRENT_TYPE_PROPERTY, <a href="gsf-MS-OLE2.html#id2560384">DIRENT_TYPE_PROPERTY</a>
+</dt>
+<dt>DIRENT_TYPE_ROOTDIR, <a href="gsf-MS-OLE2.html#id2560853">DIRENT_TYPE_ROOTDIR</a>
+</dt>
+<dt>DIRENT_USERFLAGS, <a href="gsf-MS-OLE2.html#id2560594">DIRENT_USERFLAGS</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>G</h3>
+<dl>
+<dt>GsfBlob, <a href="gsf-GsfBlob.html#id2573272">GsfBlob</a>
+</dt>
+<dt>GsfBlobClass, <a href="gsf-GsfBlob.html#id2573300">GsfBlobClass</a>
+</dt>
+<dt>GsfClipData, <a href="gsf-GsfClipData.html#id2575056">GsfClipData</a>
+</dt>
+<dt>GsfClipDataClass, <a href="gsf-GsfClipData.html#id2575083">GsfClipDataClass</a>
+</dt>
+<dt>GsfClipFormat, <a href="gsf-GsfClipData.html#id2574684">enum GsfClipFormat</a>
+</dt>
+<dt>GsfClipFormatWindows, <a href="gsf-GsfClipData.html#id2574885">enum GsfClipFormatWindows</a>
+</dt>
+<dt>GsfDocMetaData, <a href="gsf-metadata.html#id2565961">GsfDocMetaData</a>
+</dt>
+<dt>GsfDocProp, <a href="gsf-metadata.html#id2566756">GsfDocProp</a>
+</dt>
+<dt>GsfDocPropVector, <a href="gsf-metadata.html#id2567375">GsfDocPropVector</a>
+</dt>
+<dt>GsfError, <a href="gsf-utils.html#id2580976">enum GsfError</a>
+</dt>
+<dt>GsfInfile, <a href="gsf-Infile-reading-structed-files.html#id2526136">GsfInfile</a>
+</dt>
+<dt>GsfInfileMSOle, <a href="gsf-MS-OLE2.html#id2558003">GsfInfileMSOle</a>
+</dt>
+<dt>GsfInfileStdio, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2530359">GsfInfileStdio</a>
+</dt>
+<dt>GsfInfileZip, <a href="gsf-Zip.html#id2549443">GsfInfileZip</a>
+</dt>
+<dt>GsfInput, <a href="gsf-Input-from-unstructured-files.html#id2515753">GsfInput</a>
+</dt>
+<dt>GsfInputBonobo, <a href="gsf-Bononbo.html#id2536694">GsfInputBonobo</a>
+</dt>
+<dt>GsfInputGnomeVFS, <a href="gsf-GnomeVFS.html#id2535386">GsfInputGnomeVFS</a>
+</dt>
+<dt>GsfInputGZip, <a href="gsf-Compression.html#id2555429">GsfInputGZip</a>
+</dt>
+<dt>GsfInputMemory, <a href="gsf-memory.html#id2532519">GsfInputMemory</a>
+</dt>
+<dt>GsfInputProxy, <a href="gsf-Input-from-unstructured-files.html#id2516860">GsfInputProxy</a>
+</dt>
+<dt>GsfInputStdio, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529327">GsfInputStdio</a>
+</dt>
+<dt>GsfInputTextline, <a href="gsf-Text.html#id2537799">GsfInputTextline</a>
+</dt>
+<dt>GsfOutfile, <a href="gsf-Outfile-writing-structed-files.html#id2527632">GsfOutfile</a>
+</dt>
+<dt>GsfOutfileMSOle, <a href="gsf-MS-OLE2.html#id2558243">GsfOutfileMSOle</a>
+</dt>
+<dt>GsfOutfileStdio, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529986">GsfOutfileStdio</a>
+</dt>
+<dt>GsfOutfileZip, <a href="gsf-Zip.html#id2549588">GsfOutfileZip</a>
+</dt>
+<dt>GsfOutput, <a href="gsf-Output-to-unstructured-files.html#id2521368">GsfOutput</a>
+</dt>
+<dt>GsfOutputBonobo, <a href="gsf-Bononbo.html#id2536808">GsfOutputBonobo</a>
+</dt>
+<dt>GsfOutputBzip, <a href="gsf-Compression.html#id2555793">GsfOutputBzip</a>
+</dt>
+<dt>GsfOutputCsv, <a href="gsf-Text.html#id2538199">GsfOutputCsv</a>
+</dt>
+<dt>GsfOutputCsvQuotingMode, <a href="gsf-Text.html#id2538406">enum GsfOutputCsvQuotingMode</a>
+</dt>
+<dt>GsfOutputGnomeVFS, <a href="gsf-GnomeVFS.html#id2535657">GsfOutputGnomeVFS</a>
+</dt>
+<dt>GsfOutputGZip, <a href="gsf-Compression.html#id2555669">GsfOutputGZip</a>
+</dt>
+<dt>GsfOutputIconv, <a href="gsf-Text.html#id2538053">GsfOutputIconv</a>
+</dt>
+<dt>GsfOutputIOChannel, <a href="gsf-GIOChannel.html#id2534841">GsfOutputIOChannel</a>
+</dt>
+<dt>GsfOutputMemory, <a href="gsf-memory.html#id2533011">GsfOutputMemory</a>
+</dt>
+<dt>GsfOutputStdio, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529445">GsfOutputStdio</a>
+</dt>
+<dt>GsfSharedBonoboStream, <a href="gsf-Bononbo.html#id2536923">GsfSharedBonoboStream</a>
+</dt>
+<dt>GsfSharedMemory, <a href="gsf-memory.html#id2533218">GsfSharedMemory</a>
+</dt>
+<dt>GsfStructuredBlob, <a href="gsf-Structured-Blobs.html#id2577453">GsfStructuredBlob</a>
+</dt>
+<dt>GsfTimestamp, <a href="gsf-utils.html#id2583660">GsfTimestamp</a>
+</dt>
+<dt>GsfXMLBlob, <a href="gsf-XML-and-libxml.html#id2540749">GsfXMLBlob</a>
+</dt>
+<dt>GsfXMLContent, <a href="gsf-XML-and-libxml.html#id2540500">enum GsfXMLContent</a>
+</dt>
+<dt>GsfXMLIn, <a href="gsf-XML-and-libxml.html#id2540527">GsfXMLIn</a>
+</dt>
+<dt>GsfXMLInDoc, <a href="gsf-XML-and-libxml.html#id2540800">GsfXMLInDoc</a>
+</dt>
+<dt>GsfXMLInNode, <a href="gsf-XML-and-libxml.html#id2541289">GsfXMLInNode</a>
+</dt>
+<dt>GsfXMLInNS, <a href="gsf-XML-and-libxml.html#id2540825">GsfXMLInNS</a>
+</dt>
+<dt>GsfXMLInUnknownFunc, <a href="gsf-XML-and-libxml.html#id2541322">GsfXMLInUnknownFunc ()</a>
+</dt>
+<dt>GsfXMLOut, <a href="gsf-XML-and-libxml.html#id2540774">GsfXMLOut</a>
+</dt>
+<dt>GsfZipCompressionMethod, <a href="gsf-Zip.html#id2550283">enum GsfZipCompressionMethod</a>
+</dt>
+<dt>GsfZipDirent, <a href="gsf-Zip.html#id2549806">GsfZipDirent</a>
+</dt>
+<dt>GsfZipVDir, <a href="gsf-Zip.html#id2549939">GsfZipVDir</a>
+</dt>
+<dt>gsf_base64_decode_simple, <a href="gsf-utils.html#id2582040">gsf_base64_decode_simple ()</a>
+</dt>
+<dt>gsf_base64_decode_step, <a href="gsf-utils.html#id2582128">gsf_base64_decode_step ()</a>
+</dt>
+<dt>gsf_base64_encode_close, <a href="gsf-utils.html#id2581696">gsf_base64_encode_close ()</a>
+</dt>
+<dt>gsf_base64_encode_simple, <a href="gsf-utils.html#id2581608">gsf_base64_encode_simple ()</a>
+</dt>
+<dt>gsf_base64_encode_step, <a href="gsf-utils.html#id2581868">gsf_base64_encode_step ()</a>
+</dt>
+<dt>gsf_blob_get_size, <a href="gsf-GsfBlob.html#id2573513">gsf_blob_get_size ()</a>
+</dt>
+<dt>gsf_blob_new, <a href="gsf-GsfBlob.html#id2573326">gsf_blob_new ()</a>
+</dt>
+<dt>gsf_blob_peek_data, <a href="gsf-GsfBlob.html#id2573598">gsf_blob_peek_data ()</a>
+</dt>
+<dt>GSF_CLASS, <a href="gsf-utils.html#id2579717">GSF_CLASS()</a>
+</dt>
+<dt>GSF_CLASS_ABSTRACT, <a href="gsf-utils.html#id2580054">GSF_CLASS_ABSTRACT()</a>
+</dt>
+<dt>GSF_CLASS_FULL, <a href="gsf-utils.html#id2579815">GSF_CLASS_FULL()</a>
+</dt>
+<dt>gsf_clip_data_get_data_blob, <a href="gsf-GsfClipData.html#id2575355">gsf_clip_data_get_data_blob ()</a>
+</dt>
+<dt>gsf_clip_data_get_format, <a href="gsf-GsfClipData.html#id2575240">gsf_clip_data_get_format ()</a>
+</dt>
+<dt>gsf_clip_data_get_windows_clipboard_format, <a href="gsf-GsfClipData.html#id2575470">gsf_clip_data_get_windows_clipboard_format ()</a>
+</dt>
+<dt>gsf_clip_data_new, <a href="gsf-GsfClipData.html#id2575109">gsf_clip_data_new ()</a>
+</dt>
+<dt>gsf_clip_data_peek_real_data, <a href="gsf-GsfClipData.html#id2575632">gsf_clip_data_peek_real_data ()</a>
+</dt>
+<dt>gsf_docprop_vector_append, <a href="gsf-metadata.html#id2567453">gsf_docprop_vector_append ()</a>
+</dt>
+<dt>gsf_docprop_vector_as_string, <a href="gsf-metadata.html#id2567554">gsf_docprop_vector_as_string ()</a>
+</dt>
+<dt>gsf_docprop_vector_new, <a href="gsf-metadata.html#id2567401">gsf_docprop_vector_new ()</a>
+</dt>
+<dt>gsf_doc_meta_data_foreach, <a href="gsf-metadata.html#id2566578">gsf_doc_meta_data_foreach ()</a>
+</dt>
+<dt>gsf_doc_meta_data_insert, <a href="gsf-metadata.html#id2566151">gsf_doc_meta_data_insert ()</a>
+</dt>
+<dt>gsf_doc_meta_data_lookup, <a href="gsf-metadata.html#id2566037">gsf_doc_meta_data_lookup ()</a>
+</dt>
+<dt>gsf_doc_meta_data_new, <a href="gsf-metadata.html#id2565987">gsf_doc_meta_data_new ()</a>
+</dt>
+<dt>gsf_doc_meta_data_remove, <a href="gsf-metadata.html#id2566295">gsf_doc_meta_data_remove ()</a>
+</dt>
+<dt>gsf_doc_meta_data_size, <a href="gsf-metadata.html#id2566684">gsf_doc_meta_data_size ()</a>
+</dt>
+<dt>gsf_doc_meta_data_steal, <a href="gsf-metadata.html#id2566392">gsf_doc_meta_data_steal ()</a>
+</dt>
+<dt>gsf_doc_meta_data_store, <a href="gsf-metadata.html#id2566480">gsf_doc_meta_data_store ()</a>
+</dt>
+<dt>gsf_doc_prop_free, <a href="gsf-metadata.html#id2566866">gsf_doc_prop_free ()</a>
+</dt>
+<dt>gsf_doc_prop_get_link, <a href="gsf-metadata.html#id2567201">gsf_doc_prop_get_link ()</a>
+</dt>
+<dt>gsf_doc_prop_get_name, <a href="gsf-metadata.html#id2566940">gsf_doc_prop_get_name ()</a>
+</dt>
+<dt>gsf_doc_prop_get_val, <a href="gsf-metadata.html#id2567019">gsf_doc_prop_get_val ()</a>
+</dt>
+<dt>gsf_doc_prop_new, <a href="gsf-metadata.html#id2566781">gsf_doc_prop_new ()</a>
+</dt>
+<dt>gsf_doc_prop_set_link, <a href="gsf-metadata.html#id2567286">gsf_doc_prop_set_link ()</a>
+</dt>
+<dt>gsf_doc_prop_set_val, <a href="gsf-metadata.html#id2567091">gsf_doc_prop_set_val ()</a>
+</dt>
+<dt>gsf_doc_prop_swap_val, <a href="gsf-utils.html#id2584404">gsf_doc_prop_swap_val ()</a>
+</dt>
+<dt>GSF_DYNAMIC_CLASS, <a href="gsf-utils.html#id2580282">GSF_DYNAMIC_CLASS()</a>
+</dt>
+<dt>GSF_DYNAMIC_CLASS_ABSTRACT, <a href="gsf-utils.html#id2580625">GSF_DYNAMIC_CLASS_ABSTRACT()</a>
+</dt>
+<dt>GSF_DYNAMIC_CLASS_FULL, <a href="gsf-utils.html#id2580382">GSF_DYNAMIC_CLASS_FULL()</a>
+</dt>
+<dt>GSF_DYNAMIC_INTERFACE, <a href="gsf-utils.html#id2580724">GSF_DYNAMIC_INTERFACE()</a>
+</dt>
+<dt>GSF_DYNAMIC_INTERFACE_FULL, <a href="gsf-utils.html#id2580796">GSF_DYNAMIC_INTERFACE_FULL()</a>
+</dt>
+<dt>GSF_ERROR, <a href="gsf-utils.html#id2580908">GSF_ERROR</a>
+</dt>
+<dt>gsf_error_quark, <a href="gsf-utils.html#id2581048">gsf_error_quark ()</a>
+</dt>
+<dt>gsf_extension_pointer, <a href="gsf-utils.html#id2581533">gsf_extension_pointer ()</a>
+</dt>
+<dt>gsf_filename_to_utf8, <a href="gsf-utils.html#id2581373">gsf_filename_to_utf8 ()</a>
+</dt>
+<dt>gsf_iconv_close, <a href="gsf-utils.html#id2581473">gsf_iconv_close ()</a>
+</dt>
+<dt>gsf_infile_child_by_index, <a href="gsf-Infile-reading-structed-files.html#id2526232">gsf_infile_child_by_index ()</a>
+</dt>
+<dt>gsf_infile_child_by_name, <a href="gsf-Infile-reading-structed-files.html#id2526325">gsf_infile_child_by_name ()</a>
+</dt>
+<dt>gsf_infile_child_by_vname, <a href="gsf-Infile-reading-structed-files.html#id2526418">gsf_infile_child_by_vname ()</a>
+</dt>
+<dt>gsf_infile_msole_get_class_id, <a href="gsf-MS-OLE2.html#id2558127">gsf_infile_msole_get_class_id ()</a>
+</dt>
+<dt>gsf_infile_msole_new, <a href="gsf-MS-OLE2.html#id2558030">gsf_infile_msole_new ()</a>
+</dt>
+<dt>gsf_infile_name_by_index, <a href="gsf-Infile-reading-structed-files.html#id2526532">gsf_infile_name_by_index ()</a>
+</dt>
+<dt>gsf_infile_num_children, <a href="gsf-Infile-reading-structed-files.html#id2526161">gsf_infile_num_children ()</a>
+</dt>
+<dt>gsf_infile_stdio_new, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2530386">gsf_infile_stdio_new ()</a>
+</dt>
+<dt>gsf_infile_zip_new, <a href="gsf-Zip.html#id2549469">gsf_infile_zip_new ()</a>
+</dt>
+<dt>gsf_init, <a href="gsf-utils.html#id2579454">gsf_init ()</a>
+</dt>
+<dt>gsf_init_dynamic, <a href="gsf-utils.html#id2579524">gsf_init_dynamic ()</a>
+</dt>
+<dt>gsf_input_bonobo_new, <a href="gsf-Bononbo.html#id2536720">gsf_input_bonobo_new ()</a>
+</dt>
+<dt>gsf_input_container, <a href="gsf-Input-from-unstructured-files.html#id2516091">gsf_input_container ()</a>
+</dt>
+<dt>gsf_input_copy, <a href="gsf-Input-from-unstructured-files.html#id2517084">gsf_input_copy ()</a>
+</dt>
+<dt>gsf_input_dump, <a href="gsf-utils.html#id2581224">gsf_input_dump ()</a>
+</dt>
+<dt>gsf_input_dup, <a href="gsf-Input-from-unstructured-files.html#id2516167">gsf_input_dup ()</a>
+</dt>
+<dt>gsf_input_eof, <a href="gsf-Input-from-unstructured-files.html#id2516338">gsf_input_eof ()</a>
+</dt>
+<dt>gsf_input_error, <a href="gsf-Input-from-unstructured-files.html#id2516638">gsf_input_error ()</a>
+</dt>
+<dt>gsf_input_error_id, <a href="gsf-Input-from-unstructured-files.html#id2516480">gsf_input_error_id ()</a>
+</dt>
+<dt>gsf_input_gnomevfs_needs_local_copy, <a href="gsf-GnomeVFS.html#id2535589">gsf_input_gnomevfs_needs_local_copy ()</a>
+</dt>
+<dt>gsf_input_gnomevfs_new, <a href="gsf-GnomeVFS.html#id2535412">gsf_input_gnomevfs_new ()</a>
+</dt>
+<dt>gsf_input_gnomevfs_new_uri, <a href="gsf-GnomeVFS.html#id2535500">gsf_input_gnomevfs_new_uri ()</a>
+</dt>
+<dt>gsf_input_gzip_new, <a href="gsf-Compression.html#id2555455">gsf_input_gzip_new ()</a>
+</dt>
+<dt>gsf_input_memory_new, <a href="gsf-memory.html#id2532660">gsf_input_memory_new ()</a>
+</dt>
+<dt>gsf_input_memory_new_clone, <a href="gsf-memory.html#id2532788">gsf_input_memory_new_clone ()</a>
+</dt>
+<dt>gsf_input_memory_new_from_bzip, <a href="gsf-Compression.html#id2555553">gsf_input_memory_new_from_bzip ()</a>
+</dt>
+<dt>gsf_input_memory_new_from_iochannel, <a href="gsf-memory.html#id2532894">gsf_input_memory_new_from_iochannel ()</a>
+</dt>
+<dt>gsf_input_mmap_new, <a href="gsf-memory.html#id2532546">gsf_input_mmap_new ()</a>
+</dt>
+<dt>gsf_input_name, <a href="gsf-Input-from-unstructured-files.html#id2516689">gsf_input_name ()</a>
+</dt>
+<dt>gsf_input_proxy_new, <a href="gsf-Input-from-unstructured-files.html#id2516885">gsf_input_proxy_new ()</a>
+</dt>
+<dt>gsf_input_proxy_new_section, <a href="gsf-Input-from-unstructured-files.html#id2516958">gsf_input_proxy_new_section ()</a>
+</dt>
+<dt>gsf_input_read, <a href="gsf-Input-from-unstructured-files.html#id2515779">gsf_input_read ()</a>
+</dt>
+<dt>gsf_input_remaining, <a href="gsf-Input-from-unstructured-files.html#id2516409">gsf_input_remaining ()</a>
+</dt>
+<dt>gsf_input_seek, <a href="gsf-Input-from-unstructured-files.html#id2515976">gsf_input_seek ()</a>
+</dt>
+<dt>gsf_input_seek_emulate, <a href="gsf-Input-from-unstructured-files.html#id2517558">gsf_input_seek_emulate ()</a>
+</dt>
+<dt>gsf_input_set_container, <a href="gsf-Input-from-unstructured-files.html#id2517374">gsf_input_set_container ()</a>
+</dt>
+<dt>gsf_input_set_name, <a href="gsf-Input-from-unstructured-files.html#id2517281">gsf_input_set_name ()</a>
+</dt>
+<dt>gsf_input_set_name_from_filename, <a href="gsf-Input-from-unstructured-files.html#id2516765">gsf_input_set_name_from_filename ()</a>
+</dt>
+<dt>gsf_input_set_size, <a href="gsf-Input-from-unstructured-files.html#id2517466">gsf_input_set_size ()</a>
+</dt>
+<dt>gsf_input_sibling, <a href="gsf-Input-from-unstructured-files.html#id2516530">gsf_input_sibling ()</a>
+</dt>
+<dt>gsf_input_size, <a href="gsf-Input-from-unstructured-files.html#id2516267">gsf_input_size ()</a>
+</dt>
+<dt>gsf_input_stdio_new, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529354">gsf_input_stdio_new ()</a>
+</dt>
+<dt>gsf_input_tell, <a href="gsf-Input-from-unstructured-files.html#id2515907">gsf_input_tell ()</a>
+</dt>
+<dt>gsf_input_textline_ascii_gets, <a href="gsf-Text.html#id2537902">gsf_input_textline_ascii_gets ()</a>
+</dt>
+<dt>gsf_input_textline_new, <a href="gsf-Text.html#id2537826">gsf_input_textline_new ()</a>
+</dt>
+<dt>gsf_input_textline_utf8_gets, <a href="gsf-Text.html#id2537978">gsf_input_textline_utf8_gets ()</a>
+</dt>
+<dt>gsf_input_uncompress, <a href="gsf-Input-from-unstructured-files.html#id2517207">gsf_input_uncompress ()</a>
+</dt>
+<dt>GSF_INTERFACE, <a href="gsf-utils.html#id2580153">GSF_INTERFACE()</a>
+</dt>
+<dt>GSF_INTERFACE_FULL, <a href="gsf-utils.html#id2580211">GSF_INTERFACE_FULL()</a>
+</dt>
+<dt>GSF_LE_GET_DOUBLE, <a href="gsf-utils.html#id2582822">GSF_LE_GET_DOUBLE()</a>
+</dt>
+<dt>gsf_le_get_double, <a href="gsf-utils.html#id2582867">gsf_le_get_double ()</a>
+</dt>
+<dt>GSF_LE_GET_FLOAT, <a href="gsf-utils.html#id2582711">GSF_LE_GET_FLOAT()</a>
+</dt>
+<dt>gsf_le_get_float, <a href="gsf-utils.html#id2582756">gsf_le_get_float ()</a>
+</dt>
+<dt>GSF_LE_GET_GINT16, <a href="gsf-utils.html#id2582380">GSF_LE_GET_GINT16()</a>
+</dt>
+<dt>GSF_LE_GET_GINT32, <a href="gsf-utils.html#id2582470">GSF_LE_GET_GINT32()</a>
+</dt>
+<dt>GSF_LE_GET_GINT64, <a href="gsf-utils.html#id2582602">GSF_LE_GET_GINT64()</a>
+</dt>
+<dt>GSF_LE_GET_GINT8, <a href="gsf-utils.html#id2582292">GSF_LE_GET_GINT8()</a>
+</dt>
+<dt>GSF_LE_GET_GUINT16, <a href="gsf-utils.html#id2582514">GSF_LE_GET_GUINT16()</a>
+</dt>
+<dt>GSF_LE_GET_GUINT32, <a href="gsf-utils.html#id2582558">GSF_LE_GET_GUINT32()</a>
+</dt>
+<dt>GSF_LE_GET_GUINT64, <a href="gsf-utils.html#id2582337">GSF_LE_GET_GUINT64()</a>
+</dt>
+<dt>gsf_le_get_guint64, <a href="gsf-utils.html#id2582646">gsf_le_get_guint64 ()</a>
+</dt>
+<dt>GSF_LE_GET_GUINT8, <a href="gsf-utils.html#id2582425">GSF_LE_GET_GUINT8()</a>
+</dt>
+<dt>GSF_LE_SET_DOUBLE, <a href="gsf-utils.html#id2583449">GSF_LE_SET_DOUBLE()</a>
+</dt>
+<dt>gsf_le_set_double, <a href="gsf-utils.html#id2583582">gsf_le_set_double ()</a>
+</dt>
+<dt>GSF_LE_SET_FLOAT, <a href="gsf-utils.html#id2583391">GSF_LE_SET_FLOAT()</a>
+</dt>
+<dt>gsf_le_set_float, <a href="gsf-utils.html#id2583506">gsf_le_set_float ()</a>
+</dt>
+<dt>GSF_LE_SET_GINT16, <a href="gsf-utils.html#id2583162">GSF_LE_SET_GINT16()</a>
+</dt>
+<dt>GSF_LE_SET_GINT32, <a href="gsf-utils.html#id2583219">GSF_LE_SET_GINT32()</a>
+</dt>
+<dt>GSF_LE_SET_GINT64, <a href="gsf-utils.html#id2583277">GSF_LE_SET_GINT64()</a>
+</dt>
+<dt>GSF_LE_SET_GINT8, <a href="gsf-utils.html#id2583104">GSF_LE_SET_GINT8()</a>
+</dt>
+<dt>GSF_LE_SET_GUINT16, <a href="gsf-utils.html#id2582990">GSF_LE_SET_GUINT16()</a>
+</dt>
+<dt>GSF_LE_SET_GUINT32, <a href="gsf-utils.html#id2583047">GSF_LE_SET_GUINT32()</a>
+</dt>
+<dt>GSF_LE_SET_GUINT64, <a href="gsf-utils.html#id2583334">GSF_LE_SET_GUINT64()</a>
+</dt>
+<dt>GSF_LE_SET_GUINT8, <a href="gsf-utils.html#id2582932">GSF_LE_SET_GUINT8()</a>
+</dt>
+<dt>gsf_mem_dump, <a href="gsf-utils.html#id2581130">gsf_mem_dump ()</a>
+</dt>
+<dt>GSF_META_NAME_BYTE_COUNT, <a href="gsf-metadata.html#id2568654">GSF_META_NAME_BYTE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_CASE_SENSITIVE, <a href="gsf-metadata.html#id2569092">GSF_META_NAME_CASE_SENSITIVE</a>
+</dt>
+<dt>GSF_META_NAME_CATEGORY, <a href="gsf-metadata.html#id2568408">GSF_META_NAME_CATEGORY</a>
+</dt>
+<dt>GSF_META_NAME_CELL_COUNT, <a href="gsf-metadata.html#id2568216">GSF_META_NAME_CELL_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_CHARACTER_COUNT, <a href="gsf-metadata.html#id2568189">GSF_META_NAME_CHARACTER_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_COMPANY, <a href="gsf-metadata.html#id2568789">GSF_META_NAME_COMPANY</a>
+</dt>
+<dt>GSF_META_NAME_CREATOR, <a href="gsf-metadata.html#id2568272">GSF_META_NAME_CREATOR</a>
+</dt>
+<dt>GSF_META_NAME_DATE_CREATED, <a href="gsf-metadata.html#id2567889">GSF_META_NAME_DATE_CREATED</a>
+</dt>
+<dt>GSF_META_NAME_DATE_MODIFIED, <a href="gsf-metadata.html#id2567862">GSF_META_NAME_DATE_MODIFIED</a>
+</dt>
+<dt>GSF_META_NAME_DESCRIPTION, <a href="gsf-metadata.html#id2567808">GSF_META_NAME_DESCRIPTION</a>
+</dt>
+<dt>GSF_META_NAME_DICTIONARY, <a href="gsf-metadata.html#id2568844">GSF_META_NAME_DICTIONARY</a>
+</dt>
+<dt>GSF_META_NAME_DOCUMENT_PARTS, <a href="gsf-metadata.html#id2568735">GSF_META_NAME_DOCUMENT_PARTS</a>
+</dt>
+<dt>GSF_META_NAME_EDITING_DURATION, <a href="gsf-metadata.html#id2567996">GSF_META_NAME_EDITING_DURATION</a>
+</dt>
+<dt>GSF_META_NAME_GENERATOR, <a href="gsf-metadata.html#id2568490">GSF_META_NAME_GENERATOR</a>
+</dt>
+<dt>GSF_META_NAME_HEADING_PAIRS, <a href="gsf-metadata.html#id2568709">GSF_META_NAME_HEADING_PAIRS</a>
+</dt>
+<dt>GSF_META_NAME_HIDDEN_SLIDE_COUNT, <a href="gsf-metadata.html#id2568599">GSF_META_NAME_HIDDEN_SLIDE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_IMAGE_COUNT, <a href="gsf-metadata.html#id2568052">GSF_META_NAME_IMAGE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_KEYWORDS, <a href="gsf-metadata.html#id2567916">GSF_META_NAME_KEYWORDS</a>
+</dt>
+<dt>GSF_META_NAME_LANGUAGE, <a href="gsf-metadata.html#id2567943">GSF_META_NAME_LANGUAGE</a>
+</dt>
+<dt>GSF_META_NAME_LAST_PRINTED, <a href="gsf-metadata.html#id2568353">GSF_META_NAME_LAST_PRINTED</a>
+</dt>
+<dt>GSF_META_NAME_LAST_SAVED_BY, <a href="gsf-metadata.html#id2568325">GSF_META_NAME_LAST_SAVED_BY</a>
+</dt>
+<dt>GSF_META_NAME_LINE_COUNT, <a href="gsf-metadata.html#id2568517">GSF_META_NAME_LINE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_LINKS_DIRTY, <a href="gsf-metadata.html#id2568816">GSF_META_NAME_LINKS_DIRTY</a>
+</dt>
+<dt>GSF_META_NAME_LOCALE_SYSTEM_DEFAULT, <a href="gsf-metadata.html#id2569064">GSF_META_NAME_LOCALE_SYSTEM_DEFAULT</a>
+</dt>
+<dt>GSF_META_NAME_MANAGER, <a href="gsf-metadata.html#id2568762">GSF_META_NAME_MANAGER</a>
+</dt>
+<dt>GSF_META_NAME_MM_CLIP_COUNT, <a href="gsf-metadata.html#id2568627">GSF_META_NAME_MM_CLIP_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_MSOLE_UNKNOWN_17, <a href="gsf-metadata.html#id2568871">GSF_META_NAME_MSOLE_UNKNOWN_17</a>
+</dt>
+<dt>GSF_META_NAME_MSOLE_UNKNOWN_18, <a href="gsf-metadata.html#id2568898">GSF_META_NAME_MSOLE_UNKNOWN_18</a>
+</dt>
+<dt>GSF_META_NAME_MSOLE_UNKNOWN_19, <a href="gsf-metadata.html#id2568926">GSF_META_NAME_MSOLE_UNKNOWN_19</a>
+</dt>
+<dt>GSF_META_NAME_MSOLE_UNKNOWN_20, <a href="gsf-metadata.html#id2568953">GSF_META_NAME_MSOLE_UNKNOWN_20</a>
+</dt>
+<dt>GSF_META_NAME_MSOLE_UNKNOWN_21, <a href="gsf-metadata.html#id2568981">GSF_META_NAME_MSOLE_UNKNOWN_21</a>
+</dt>
+<dt>GSF_META_NAME_MSOLE_UNKNOWN_22, <a href="gsf-metadata.html#id2569008">GSF_META_NAME_MSOLE_UNKNOWN_22</a>
+</dt>
+<dt>GSF_META_NAME_MSOLE_UNKNOWN_23, <a href="gsf-metadata.html#id2569036">GSF_META_NAME_MSOLE_UNKNOWN_23</a>
+</dt>
+<dt>GSF_META_NAME_NOTE_COUNT, <a href="gsf-metadata.html#id2568572">GSF_META_NAME_NOTE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_OBJECT_COUNT, <a href="gsf-metadata.html#id2568079">GSF_META_NAME_OBJECT_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_PAGE_COUNT, <a href="gsf-metadata.html#id2568107">GSF_META_NAME_PAGE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_PARAGRAPH_COUNT, <a href="gsf-metadata.html#id2568134">GSF_META_NAME_PARAGRAPH_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_PRESENTATION_FORMAT, <a href="gsf-metadata.html#id2568435">GSF_META_NAME_PRESENTATION_FORMAT</a>
+</dt>
+<dt>GSF_META_NAME_REVISION_COUNT, <a href="gsf-metadata.html#id2567970">GSF_META_NAME_REVISION_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_SCALE, <a href="gsf-metadata.html#id2568681">GSF_META_NAME_SCALE</a>
+</dt>
+<dt>GSF_META_NAME_SECURITY, <a href="gsf-metadata.html#id2568381">GSF_META_NAME_SECURITY</a>
+</dt>
+<dt>GSF_META_NAME_SLIDE_COUNT, <a href="gsf-metadata.html#id2568545">GSF_META_NAME_SLIDE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_SPREADSHEET_COUNT, <a href="gsf-metadata.html#id2568244">GSF_META_NAME_SPREADSHEET_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_SUBJECT, <a href="gsf-metadata.html#id2567835">GSF_META_NAME_SUBJECT</a>
+</dt>
+<dt>GSF_META_NAME_TABLE_COUNT, <a href="gsf-metadata.html#id2568024">GSF_META_NAME_TABLE_COUNT</a>
+</dt>
+<dt>GSF_META_NAME_TEMPLATE, <a href="gsf-metadata.html#id2568298">GSF_META_NAME_TEMPLATE</a>
+</dt>
+<dt>GSF_META_NAME_THUMBNAIL, <a href="gsf-metadata.html#id2568462">GSF_META_NAME_THUMBNAIL</a>
+</dt>
+<dt>GSF_META_NAME_TITLE, <a href="gsf-metadata.html#id2567780">GSF_META_NAME_TITLE</a>
+</dt>
+<dt>GSF_META_NAME_WORD_COUNT, <a href="gsf-metadata.html#id2568161">GSF_META_NAME_WORD_COUNT</a>
+</dt>
+<dt>gsf_msole_codepage_to_lid, <a href="gsf-MS-OLE2.html#id2559308">gsf_msole_codepage_to_lid ()</a>
+</dt>
+<dt>gsf_msole_iconv_open_codepages_for_export, <a href="gsf-MS-OLE2.html#id2558858">gsf_msole_iconv_open_codepages_for_export ()</a>
+</dt>
+<dt>gsf_msole_iconv_open_codepage_for_export, <a href="gsf-MS-OLE2.html#id2559104">gsf_msole_iconv_open_codepage_for_export ()</a>
+</dt>
+<dt>gsf_msole_iconv_open_codepage_for_import, <a href="gsf-MS-OLE2.html#id2558952">gsf_msole_iconv_open_codepage_for_import ()</a>
+</dt>
+<dt>gsf_msole_iconv_open_for_export, <a href="gsf-MS-OLE2.html#id2559052">gsf_msole_iconv_open_for_export ()</a>
+</dt>
+<dt>gsf_msole_iconv_open_for_import, <a href="gsf-MS-OLE2.html#id2559177">gsf_msole_iconv_open_for_import ()</a>
+</dt>
+<dt>gsf_msole_iconv_win_codepage, <a href="gsf-MS-OLE2.html#id2559256">gsf_msole_iconv_win_codepage ()</a>
+</dt>
+<dt>gsf_msole_inflate, <a href="gsf-MS-OLE2.html#id2559680">gsf_msole_inflate ()</a>
+</dt>
+<dt>gsf_msole_language_for_lid, <a href="gsf-MS-OLE2.html#id2559607">gsf_msole_language_for_lid ()</a>
+</dt>
+<dt>gsf_msole_lid_for_language, <a href="gsf-MS-OLE2.html#id2559528">gsf_msole_lid_for_language ()</a>
+</dt>
+<dt>gsf_msole_lid_to_codepage, <a href="gsf-MS-OLE2.html#id2559375">gsf_msole_lid_to_codepage ()</a>
+</dt>
+<dt>gsf_msole_lid_to_codepage_str, <a href="gsf-MS-OLE2.html#id2559445">gsf_msole_lid_to_codepage_str ()</a>
+</dt>
+<dt>gsf_msole_metadata_read, <a href="gsf-MS-OLE2.html#id2558605">gsf_msole_metadata_read ()</a>
+</dt>
+<dt>gsf_msole_metadata_write, <a href="gsf-MS-OLE2.html#id2558727">gsf_msole_metadata_write ()</a>
+</dt>
+<dt>gsf_off_t, <a href="gsf-utils.html#id2581348">gsf_off_t</a>
+</dt>
+<dt>GSF_OFF_T_FORMAT, <a href="gsf-utils.html#id2581321">GSF_OFF_T_FORMAT</a>
+</dt>
+<dt>gsf_outfile_msole_new, <a href="gsf-MS-OLE2.html#id2558270">gsf_outfile_msole_new ()</a>
+</dt>
+<dt>gsf_outfile_msole_new_full, <a href="gsf-MS-OLE2.html#id2558358">gsf_outfile_msole_new_full ()</a>
+</dt>
+<dt>gsf_outfile_msole_set_class_id, <a href="gsf-MS-OLE2.html#id2558491">gsf_outfile_msole_set_class_id ()</a>
+</dt>
+<dt>gsf_outfile_new_child, <a href="gsf-Outfile-writing-structed-files.html#id2527658">gsf_outfile_new_child ()</a>
+</dt>
+<dt>gsf_outfile_new_child_full, <a href="gsf-Outfile-writing-structed-files.html#id2527780">gsf_outfile_new_child_full ()</a>
+</dt>
+<dt>gsf_outfile_new_child_varg, <a href="gsf-Outfile-writing-structed-files.html#id2527938">gsf_outfile_new_child_varg ()</a>
+</dt>
+<dt>gsf_outfile_stdio_new, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2530013">gsf_outfile_stdio_new ()</a>
+</dt>
+<dt>gsf_outfile_stdio_new_full, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2530104">gsf_outfile_stdio_new_full ()</a>
+</dt>
+<dt>gsf_outfile_stdio_new_valist, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2530228">gsf_outfile_stdio_new_valist ()</a>
+</dt>
+<dt>gsf_outfile_zip_new, <a href="gsf-Zip.html#id2549615">gsf_outfile_zip_new ()</a>
+</dt>
+<dt>gsf_outfile_zip_set_compression_method, <a href="gsf-Zip.html#id2549715">gsf_outfile_zip_set_compression_method ()</a>
+</dt>
+<dt>gsf_output_bonobo_new, <a href="gsf-Bononbo.html#id2536835">gsf_output_bonobo_new ()</a>
+</dt>
+<dt>gsf_output_bzip_new, <a href="gsf-Compression.html#id2555820">gsf_output_bzip_new ()</a>
+</dt>
+<dt>gsf_output_close, <a href="gsf-Output-to-unstructured-files.html#id2521542">gsf_output_close ()</a>
+</dt>
+<dt>gsf_output_container, <a href="gsf-Output-to-unstructured-files.html#id2521394">gsf_output_container ()</a>
+</dt>
+<dt>gsf_output_csv_write_eol, <a href="gsf-Text.html#id2538230">gsf_output_csv_write_eol ()</a>
+</dt>
+<dt>gsf_output_csv_write_field, <a href="gsf-Text.html#id2538296">gsf_output_csv_write_field ()</a>
+</dt>
+<dt>gsf_output_error, <a href="gsf-Output-to-unstructured-files.html#id2522611">gsf_output_error ()</a>
+</dt>
+<dt>gsf_output_error_id, <a href="gsf-Output-to-unstructured-files.html#id2522434">gsf_output_error_id ()</a>
+</dt>
+<dt>gsf_output_gnomevfs_new, <a href="gsf-GnomeVFS.html#id2535683">gsf_output_gnomevfs_new ()</a>
+</dt>
+<dt>gsf_output_gnomevfs_new_uri, <a href="gsf-GnomeVFS.html#id2535771">gsf_output_gnomevfs_new_uri ()</a>
+</dt>
+<dt>gsf_output_gzip_new, <a href="gsf-Compression.html#id2555695">gsf_output_gzip_new ()</a>
+</dt>
+<dt>gsf_output_iconv_new, <a href="gsf-Text.html#id2538079">gsf_output_iconv_new ()</a>
+</dt>
+<dt>gsf_output_iochannel_new, <a href="gsf-GIOChannel.html#id2534868">gsf_output_iochannel_new ()</a>
+</dt>
+<dt>gsf_output_is_closed, <a href="gsf-Output-to-unstructured-files.html#id2522681">gsf_output_is_closed ()</a>
+</dt>
+<dt>gsf_output_memory_get_bytes, <a href="gsf-memory.html#id2533037">gsf_output_memory_get_bytes ()</a>
+</dt>
+<dt>gsf_output_memory_get_type, <a href="gsf-memory.html#id2533121">gsf_output_memory_get_type ()</a>
+</dt>
+<dt>gsf_output_memory_new, <a href="gsf-memory.html#id2533168">gsf_output_memory_new ()</a>
+</dt>
+<dt>gsf_output_name, <a href="gsf-Output-to-unstructured-files.html#id2522261">gsf_output_name ()</a>
+</dt>
+<dt>gsf_output_printf, <a href="gsf-Output-to-unstructured-files.html#id2522013">gsf_output_printf ()</a>
+</dt>
+<dt>gsf_output_puts, <a href="gsf-Output-to-unstructured-files.html#id2521906">gsf_output_puts ()</a>
+</dt>
+<dt>gsf_output_seek, <a href="gsf-Output-to-unstructured-files.html#id2521682">gsf_output_seek ()</a>
+</dt>
+<dt>gsf_output_set_container, <a href="gsf-Output-to-unstructured-files.html#id2523035">gsf_output_set_container ()</a>
+</dt>
+<dt>gsf_output_set_error, <a href="gsf-Output-to-unstructured-files.html#id2522480">gsf_output_set_error ()</a>
+</dt>
+<dt>gsf_output_set_name, <a href="gsf-Output-to-unstructured-files.html#id2522940">gsf_output_set_name ()</a>
+</dt>
+<dt>gsf_output_set_name_from_filename, <a href="gsf-Output-to-unstructured-files.html#id2522336">gsf_output_set_name_from_filename ()</a>
+</dt>
+<dt>gsf_output_size, <a href="gsf-Output-to-unstructured-files.html#id2521471">gsf_output_size ()</a>
+</dt>
+<dt>gsf_output_stdio_new, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529472">gsf_output_stdio_new ()</a>
+</dt>
+<dt>gsf_output_stdio_new_FILE, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529824">gsf_output_stdio_new_FILE ()</a>
+</dt>
+<dt>gsf_output_stdio_new_full, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529564">gsf_output_stdio_new_full ()</a>
+</dt>
+<dt>gsf_output_stdio_new_valist, <a href="gsf-Reading-and-Writing-from-local-files-and-directories.html#id2529694">gsf_output_stdio_new_valist ()</a>
+</dt>
+<dt>gsf_output_tell, <a href="gsf-Output-to-unstructured-files.html#id2521612">gsf_output_tell ()</a>
+</dt>
+<dt>gsf_output_unwrap, <a href="gsf-Output-to-unstructured-files.html#id2522849">gsf_output_unwrap ()</a>
+</dt>
+<dt>gsf_output_vprintf, <a href="gsf-Output-to-unstructured-files.html#id2522133">gsf_output_vprintf ()</a>
+</dt>
+<dt>gsf_output_wrap, <a href="gsf-Output-to-unstructured-files.html#id2522758">gsf_output_wrap ()</a>
+</dt>
+<dt>gsf_output_write, <a href="gsf-Output-to-unstructured-files.html#id2521794">gsf_output_write ()</a>
+</dt>
+<dt>GSF_PARAM_STATIC, <a href="gsf-utils.html#id2580882">GSF_PARAM_STATIC</a>
+</dt>
+<dt>gsf_property_settings_collect, <a href="gsf-utils.html#id2584524">gsf_property_settings_collect ()</a>
+</dt>
+<dt>gsf_property_settings_collect_valist, <a href="gsf-utils.html#id2584660">gsf_property_settings_collect_valist ()</a>
+</dt>
+<dt>gsf_property_settings_free, <a href="gsf-utils.html#id2584817">gsf_property_settings_free ()</a>
+</dt>
+<dt>gsf_shared_bonobo_stream_new, <a href="gsf-Bononbo.html#id2536950">gsf_shared_bonobo_stream_new ()</a>
+</dt>
+<dt>gsf_shared_memory_mmapped_new, <a href="gsf-memory.html#id2533354">gsf_shared_memory_mmapped_new ()</a>
+</dt>
+<dt>gsf_shared_memory_new, <a href="gsf-memory.html#id2533244">gsf_shared_memory_new ()</a>
+</dt>
+<dt>gsf_shutdown, <a href="gsf-utils.html#id2579489">gsf_shutdown ()</a>
+</dt>
+<dt>gsf_shutdown_dynamic, <a href="gsf-utils.html#id2579580">gsf_shutdown_dynamic ()</a>
+</dt>
+<dt>gsf_structured_blob_read, <a href="gsf-Structured-Blobs.html#id2577586">gsf_structured_blob_read ()</a>
+</dt>
+<dt>gsf_structured_blob_write, <a href="gsf-Structured-Blobs.html#id2577480">gsf_structured_blob_write ()</a>
+</dt>
+<dt>gsf_timestamp_as_string, <a href="gsf-utils.html#id2583970">gsf_timestamp_as_string ()</a>
+</dt>
+<dt>gsf_timestamp_copy, <a href="gsf-utils.html#id2583845">gsf_timestamp_copy ()</a>
+</dt>
+<dt>gsf_timestamp_equal, <a href="gsf-utils.html#id2584193">gsf_timestamp_equal ()</a>
+</dt>
+<dt>gsf_timestamp_free, <a href="gsf-utils.html#id2583913">gsf_timestamp_free ()</a>
+</dt>
+<dt>gsf_timestamp_hash, <a href="gsf-utils.html#id2584125">gsf_timestamp_hash ()</a>
+</dt>
+<dt>gsf_timestamp_new, <a href="gsf-utils.html#id2583688">gsf_timestamp_new ()</a>
+</dt>
+<dt>gsf_timestamp_new_now, <a href="gsf-utils.html#id2583798">gsf_timestamp_new_now ()</a>
+</dt>
+<dt>gsf_timestamp_parse, <a href="gsf-utils.html#id2584037">gsf_timestamp_parse ()</a>
+</dt>
+<dt>gsf_value_get_docprop_varray, <a href="gsf-metadata.html#id2567644">gsf_value_get_docprop_varray ()</a>
+</dt>
+<dt>gsf_value_get_docprop_vector, <a href="gsf-metadata.html#id2567712">gsf_value_get_docprop_vector ()</a>
+</dt>
+<dt>gsf_value_set_timestamp, <a href="gsf-utils.html#id2584281">gsf_value_set_timestamp ()</a>
+</dt>
+<dt>gsf_vdir_add_child, <a href="gsf-Zip.html#id2550152">gsf_vdir_add_child ()</a>
+</dt>
+<dt>gsf_vdir_free, <a href="gsf-Zip.html#id2549966">gsf_vdir_free ()</a>
+</dt>
+<dt>gsf_vdir_new, <a href="gsf-Zip.html#id2550043">gsf_vdir_new ()</a>
+</dt>
+<dt>gsf_xmlDocFormatDump, <a href="gsf-XML-and-libxml.html#id2540559">gsf_xmlDocFormatDump ()</a>
+</dt>
+<dt>gsf_xml_in_check_ns, <a href="gsf-XML-and-libxml.html#id2541897">gsf_xml_in_check_ns ()</a>
+</dt>
+<dt>gsf_xml_in_doc_extend, <a href="gsf-XML-and-libxml.html#id2542033">gsf_xml_in_doc_extend ()</a>
+</dt>
+<dt>gsf_xml_in_doc_free, <a href="gsf-XML-and-libxml.html#id2540689">gsf_xml_in_doc_free ()</a>
+</dt>
+<dt>gsf_xml_in_doc_new, <a href="gsf-XML-and-libxml.html#id2541516">gsf_xml_in_doc_new ()</a>
+</dt>
+<dt>gsf_xml_in_doc_set_unknown_handler, <a href="gsf-XML-and-libxml.html#id2542111">gsf_xml_in_doc_set_unknown_handler ()</a>
+</dt>
+<dt>gsf_xml_in_namecmp, <a href="gsf-XML-and-libxml.html#id2541625">gsf_xml_in_namecmp ()</a>
+</dt>
+<dt>GSF_XML_IN_NODE, <a href="gsf-XML-and-libxml.html#id2541164">GSF_XML_IN_NODE()</a>
+</dt>
+<dt>GSF_XML_IN_NODE_FULL, <a href="gsf-XML-and-libxml.html#id2540850">GSF_XML_IN_NODE_FULL()</a>
+</dt>
+<dt>GSF_XML_IN_NS, <a href="gsf-XML-and-libxml.html#id2540444">GSF_XML_IN_NS()</a>
+</dt>
+<dt>gsf_xml_in_parse, <a href="gsf-XML-and-libxml.html#id2541792">gsf_xml_in_parse ()</a>
+</dt>
+<dt>gsf_xml_out_add_base64, <a href="gsf-XML-and-libxml.html#id2543534">gsf_xml_out_add_base64 ()</a>
+</dt>
+<dt>gsf_xml_out_add_bool, <a href="gsf-XML-and-libxml.html#id2542758">gsf_xml_out_add_bool ()</a>
+</dt>
+<dt>gsf_xml_out_add_color, <a href="gsf-XML-and-libxml.html#id2543367">gsf_xml_out_add_color ()</a>
+</dt>
+<dt>gsf_xml_out_add_cstr, <a href="gsf-XML-and-libxml.html#id2542510">gsf_xml_out_add_cstr ()</a>
+</dt>
+<dt>gsf_xml_out_add_cstr_unchecked, <a href="gsf-XML-and-libxml.html#id2542632">gsf_xml_out_add_cstr_unchecked ()</a>
+</dt>
+<dt>gsf_xml_out_add_enum, <a href="gsf-XML-and-libxml.html#id2543247">gsf_xml_out_add_enum ()</a>
+</dt>
+<dt>gsf_xml_out_add_float, <a href="gsf-XML-and-libxml.html#id2543103">gsf_xml_out_add_float ()</a>
+</dt>
+<dt>gsf_xml_out_add_int, <a href="gsf-XML-and-libxml.html#id2542874">gsf_xml_out_add_int ()</a>
+</dt>
+<dt>gsf_xml_out_add_uint, <a href="gsf-XML-and-libxml.html#id2542988">gsf_xml_out_add_uint ()</a>
+</dt>
+<dt>gsf_xml_out_end_element, <a href="gsf-XML-and-libxml.html#id2542443">gsf_xml_out_end_element ()</a>
+</dt>
+<dt>gsf_xml_out_new, <a href="gsf-XML-and-libxml.html#id2542208">gsf_xml_out_new ()</a>
+</dt>
+<dt>gsf_xml_out_set_doc_type, <a href="gsf-XML-and-libxml.html#id2542275">gsf_xml_out_set_doc_type ()</a>
+</dt>
+<dt>gsf_xml_out_simple_element, <a href="gsf-XML-and-libxml.html#id2543675">gsf_xml_out_simple_element ()</a>
+</dt>
+<dt>gsf_xml_out_simple_float_element, <a href="gsf-XML-and-libxml.html#id2543778">gsf_xml_out_simple_float_element ()</a>
+</dt>
+<dt>gsf_xml_out_simple_int_element, <a href="gsf-XML-and-libxml.html#id2543902">gsf_xml_out_simple_int_element ()</a>
+</dt>
+<dt>gsf_xml_out_start_element, <a href="gsf-XML-and-libxml.html#id2542365">gsf_xml_out_start_element ()</a>
+</dt>
+<dt>gsf_xml_parser_context, <a href="gsf-XML-and-libxml.html#id2541431">gsf_xml_parser_context ()</a>
+</dt>
+<dt>gsf_zip_dirent_free, <a href="gsf-Zip.html#id2549882">gsf_zip_dirent_free ()</a>
+</dt>
+<dt>gsf_zip_dirent_new, <a href="gsf-Zip.html#id2549836">gsf_zip_dirent_new ()</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>L</h3>
+<dl>
+<dt>libgsf_major_version, <a href="gsf-utils.html#id2579638">libgsf_major_version</a>
+</dt>
+<dt>libgsf_micro_version, <a href="gsf-utils.html#id2579691">libgsf_micro_version</a>
+</dt>
+<dt>libgsf_minor_version, <a href="gsf-utils.html#id2579664">libgsf_minor_version</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>O</h3>
+<dl>
+<dt>OLE_DEFAULT_BB_SHIFT, <a href="gsf-MS-OLE2.html#id2560252">OLE_DEFAULT_BB_SHIFT</a>
+</dt>
+<dt>OLE_DEFAULT_SB_SHIFT, <a href="gsf-MS-OLE2.html#id2560278">OLE_DEFAULT_SB_SHIFT</a>
+</dt>
+<dt>OLE_HEADER_BB_SHIFT, <a href="gsf-MS-OLE2.html#id2559909">OLE_HEADER_BB_SHIFT</a>
+</dt>
+<dt>OLE_HEADER_BYTE_ORDER, <a href="gsf-MS-OLE2.html#id2560092">OLE_HEADER_BYTE_ORDER</a>
+</dt>
+<dt>OLE_HEADER_CLSID, <a href="gsf-MS-OLE2.html#id2560200">OLE_HEADER_CLSID</a>
+</dt>
+<dt>OLE_HEADER_CSECTDIR, <a href="gsf-MS-OLE2.html#id2559936">OLE_HEADER_CSECTDIR</a>
+</dt>
+<dt>OLE_HEADER_DIRENT_START, <a href="gsf-MS-OLE2.html#id2559856">OLE_HEADER_DIRENT_START</a>
+</dt>
+<dt>OLE_HEADER_MAJOR_VER, <a href="gsf-MS-OLE2.html#id2559801">OLE_HEADER_MAJOR_VER</a>
+</dt>
+<dt>OLE_HEADER_METABAT_BLOCK, <a href="gsf-MS-OLE2.html#id2560013">OLE_HEADER_METABAT_BLOCK</a>
+</dt>
+<dt>OLE_HEADER_METABAT_SIZE, <a href="gsf-MS-OLE2.html#id2559828">OLE_HEADER_METABAT_SIZE</a>
+</dt>
+<dt>OLE_HEADER_MINOR_VER, <a href="gsf-MS-OLE2.html#id2560226">OLE_HEADER_MINOR_VER</a>
+</dt>
+<dt>OLE_HEADER_NUM_BAT, <a href="gsf-MS-OLE2.html#id2559961">OLE_HEADER_NUM_BAT</a>
+</dt>
+<dt>OLE_HEADER_NUM_METABAT, <a href="gsf-MS-OLE2.html#id2560146">OLE_HEADER_NUM_METABAT</a>
+</dt>
+<dt>OLE_HEADER_NUM_SBAT, <a href="gsf-MS-OLE2.html#id2559882">OLE_HEADER_NUM_SBAT</a>
+</dt>
+<dt>OLE_HEADER_SBAT_START, <a href="gsf-MS-OLE2.html#id2560040">OLE_HEADER_SBAT_START</a>
+</dt>
+<dt>OLE_HEADER_SB_SHIFT, <a href="gsf-MS-OLE2.html#id2560120">OLE_HEADER_SB_SHIFT</a>
+</dt>
+<dt>OLE_HEADER_SIGNATURE, <a href="gsf-MS-OLE2.html#id2560067">OLE_HEADER_SIGNATURE</a>
+</dt>
+<dt>OLE_HEADER_SIZE, <a href="gsf-MS-OLE2.html#id2560172">OLE_HEADER_SIZE</a>
+</dt>
+<dt>OLE_HEADER_START_BAT, <a href="gsf-MS-OLE2.html#id2559775">OLE_HEADER_START_BAT</a>
+</dt>
+<dt>OLE_HEADER_THRESHOLD, <a href="gsf-MS-OLE2.html#id2559987">OLE_HEADER_THRESHOLD</a>
+</dt>
+</dl>
+</div>
+<div class="indexdiv">
+<h3>V</h3>
+<dl><dt>VAL_IS_GSF_TIMESTAMP, <a href="gsf-utils.html#id2584359">VAL_IS_GSF_TIMESTAMP()</a>
+</dt></dl>
+</div>
+<div class="indexdiv">
+<h3>Z</h3>
+<dl>
+<dt>ZIP_BLOCK_SIZE, <a href="gsf-Zip.html#id2551479">ZIP_BLOCK_SIZE</a>
+</dt>
+<dt>ZIP_BUF_SIZE, <a href="gsf-Zip.html#id2550564">ZIP_BUF_SIZE</a>
+</dt>
+<dt>ZIP_DIRENT_COMMENT_SIZE, <a href="gsf-Zip.html#id2551187">ZIP_DIRENT_COMMENT_SIZE</a>
+</dt>
+<dt>ZIP_DIRENT_COMPR_METHOD, <a href="gsf-Zip.html#id2550641">ZIP_DIRENT_COMPR_METHOD</a>
+</dt>
+<dt>ZIP_DIRENT_CRC32, <a href="gsf-Zip.html#id2550588">ZIP_DIRENT_CRC32</a>
+</dt>
+<dt>ZIP_DIRENT_CSIZE, <a href="gsf-Zip.html#id2551426">ZIP_DIRENT_CSIZE</a>
+</dt>
+<dt>ZIP_DIRENT_DISKSTART, <a href="gsf-Zip.html#id2551557">ZIP_DIRENT_DISKSTART</a>
+</dt>
+<dt>ZIP_DIRENT_DOSTIME, <a href="gsf-Zip.html#id2551110">ZIP_DIRENT_DOSTIME</a>
+</dt>
+<dt>ZIP_DIRENT_ENCODER, <a href="gsf-Zip.html#id2551136">ZIP_DIRENT_ENCODER</a>
+</dt>
+<dt>ZIP_DIRENT_EXTRACT, <a href="gsf-Zip.html#id2550722">ZIP_DIRENT_EXTRACT</a>
+</dt>
+<dt>ZIP_DIRENT_EXTRAS_SIZE, <a href="gsf-Zip.html#id2551011">ZIP_DIRENT_EXTRAS_SIZE</a>
+</dt>
+<dt>ZIP_DIRENT_FILE_MODE, <a href="gsf-Zip.html#id2550748">ZIP_DIRENT_FILE_MODE</a>
+</dt>
+<dt>ZIP_DIRENT_FILE_TYPE, <a href="gsf-Zip.html#id2550668">ZIP_DIRENT_FILE_TYPE</a>
+</dt>
+<dt>ZIP_DIRENT_FLAGS, <a href="gsf-Zip.html#id2550775">ZIP_DIRENT_FLAGS</a>
+</dt>
+<dt>ZIP_DIRENT_NAME_SIZE, <a href="gsf-Zip.html#id2551504">ZIP_DIRENT_NAME_SIZE</a>
+</dt>
+<dt>ZIP_DIRENT_OFFSET, <a href="gsf-Zip.html#id2550257">ZIP_DIRENT_OFFSET</a>
+</dt>
+<dt>ZIP_DIRENT_SIZE, <a href="gsf-Zip.html#id2551530">ZIP_DIRENT_SIZE</a>
+</dt>
+<dt>ZIP_DIRENT_USIZE, <a href="gsf-Zip.html#id2550230">ZIP_DIRENT_USIZE</a>
+</dt>
+<dt>ZIP_FILE_HEADER_COMPR_METHOD, <a href="gsf-Zip.html#id2551609">ZIP_FILE_HEADER_COMPR_METHOD</a>
+</dt>
+<dt>ZIP_FILE_HEADER_CRC32, <a href="gsf-Zip.html#id2551215">ZIP_FILE_HEADER_CRC32</a>
+</dt>
+<dt>ZIP_FILE_HEADER_CSIZE, <a href="gsf-Zip.html#id2550802">ZIP_FILE_HEADER_CSIZE</a>
+</dt>
+<dt>ZIP_FILE_HEADER_DOSTIME, <a href="gsf-Zip.html#id2551636">ZIP_FILE_HEADER_DOSTIME</a>
+</dt>
+<dt>ZIP_FILE_HEADER_EXTRACT, <a href="gsf-Zip.html#id2550388">ZIP_FILE_HEADER_EXTRACT</a>
+</dt>
+<dt>ZIP_FILE_HEADER_EXTRAS_SIZE, <a href="gsf-Zip.html#id2550695">ZIP_FILE_HEADER_EXTRAS_SIZE</a>
+</dt>
+<dt>ZIP_FILE_HEADER_FLAGS, <a href="gsf-Zip.html#id2550985">ZIP_FILE_HEADER_FLAGS</a>
+</dt>
+<dt>ZIP_FILE_HEADER_NAME_SIZE, <a href="gsf-Zip.html#id2550315">ZIP_FILE_HEADER_NAME_SIZE</a>
+</dt>
+<dt>ZIP_FILE_HEADER_SIZE, <a href="gsf-Zip.html#id2550467">ZIP_FILE_HEADER_SIZE</a>
+</dt>
+<dt>ZIP_FILE_HEADER_USIZE, <a href="gsf-Zip.html#id2551294">ZIP_FILE_HEADER_USIZE</a>
+</dt>
+<dt>ZIP_HEADER_COMP_METHOD, <a href="gsf-Zip.html#id2551038">ZIP_HEADER_COMP_METHOD</a>
+</dt>
+<dt>ZIP_HEADER_COMP_SIZE, <a href="gsf-Zip.html#id2550615">ZIP_HEADER_COMP_SIZE</a>
+</dt>
+<dt>ZIP_HEADER_CRC, <a href="gsf-Zip.html#id2550959">ZIP_HEADER_CRC</a>
+</dt>
+<dt>ZIP_HEADER_EXTRA_LEN, <a href="gsf-Zip.html#id2551583">ZIP_HEADER_EXTRA_LEN</a>
+</dt>
+<dt>ZIP_HEADER_FLAGS, <a href="gsf-Zip.html#id2551242">ZIP_HEADER_FLAGS</a>
+</dt>
+<dt>ZIP_HEADER_NAME_LEN, <a href="gsf-Zip.html#id2551347">ZIP_HEADER_NAME_LEN</a>
+</dt>
+<dt>ZIP_HEADER_OS, <a href="gsf-Zip.html#id2551162">ZIP_HEADER_OS</a>
+</dt>
+<dt>ZIP_HEADER_SIZE, <a href="gsf-Zip.html#id2550933">ZIP_HEADER_SIZE</a>
+</dt>
+<dt>ZIP_HEADER_TIME, <a href="gsf-Zip.html#id2550440">ZIP_HEADER_TIME</a>
+</dt>
+<dt>ZIP_HEADER_UNCOMP_SIZE, <a href="gsf-Zip.html#id2551373">ZIP_HEADER_UNCOMP_SIZE</a>
+</dt>
+<dt>ZIP_HEADER_VERSION, <a href="gsf-Zip.html#id2550538">ZIP_HEADER_VERSION</a>
+</dt>
+<dt>ZIP_NAME_SEPARATOR, <a href="gsf-Zip.html#id2550907">ZIP_NAME_SEPARATOR</a>
+</dt>
+<dt>ZIP_TRAILER_COMMENT_SIZE, <a href="gsf-Zip.html#id2550853">ZIP_TRAILER_COMMENT_SIZE</a>
+</dt>
+<dt>ZIP_TRAILER_DIR_DISK, <a href="gsf-Zip.html#id2551400">ZIP_TRAILER_DIR_DISK</a>
+</dt>
+<dt>ZIP_TRAILER_DIR_POS, <a href="gsf-Zip.html#id2551453">ZIP_TRAILER_DIR_POS</a>
+</dt>
+<dt>ZIP_TRAILER_DIR_SIZE, <a href="gsf-Zip.html#id2550827">ZIP_TRAILER_DIR_SIZE</a>
+</dt>
+<dt>ZIP_TRAILER_DISK, <a href="gsf-Zip.html#id2551268">ZIP_TRAILER_DISK</a>
+</dt>
+<dt>ZIP_TRAILER_ENTRIES, <a href="gsf-Zip.html#id2550881">ZIP_TRAILER_ENTRIES</a>
+</dt>
+<dt>ZIP_TRAILER_SIZE, <a href="gsf-Zip.html#id2550414">ZIP_TRAILER_SIZE</a>
+</dt>
+<dt>ZIP_TRAILER_TOTAL_ENTRIES, <a href="gsf-Zip.html#id2551320">ZIP_TRAILER_TOTAL_ENTRIES</a>
+</dt>
+<dt>ZZIP_IS_COMPRLEVEL, <a href="gsf-Zip.html#id2551065">ZZIP_IS_COMPRLEVEL()</a>
+</dt>
+<dt>ZZIP_IS_ENCRYPTED, <a href="gsf-Zip.html#id2550493">ZZIP_IS_ENCRYPTED()</a>
+</dt>
+<dt>ZZIP_IS_STREAMED, <a href="gsf-Zip.html#id2550342">ZZIP_IS_STREAMED()</a>
+</dt>
+</dl>
+</div>
+</div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-utils.html"><b>&lt;&lt;&#160;utils</b></a></td>
+<td align="right"></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/left.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/left.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/misc.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/misc.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/misc.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Miscellaneous</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="prev" href="gsf-Structured-Blobs.html" title="Structured Blobs">
+<link rel="next" href="gsf-utils.html" title="utils">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Structured-Blobs.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-utils.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="misc"></a>Miscellaneous</h2></div></div></div>
+<div class="toc"><dl><dt>
+<span class="refentrytitle"><a href="gsf-utils.html">utils</a></span><span class="refpurpose"> - </span>
+</dt></dl></div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Structured-Blobs.html"><b>&lt;&lt;&#160;Structured Blobs</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-utils.html"><b>utils&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/parsers.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/parsers.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/parsers.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,66 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Stream Parsers</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="prev" href="gsf-Bononbo.html" title="Bononbo">
+<link rel="next" href="gsf-Text.html" title="Text">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Bononbo.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Text.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="parsers"></a>Stream Parsers</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="gsf-Text.html">Text</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-XML-and-libxml.html">XML and libxml</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Zip.html">Zip</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Compression.html">Compression</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-MS-OLE2.html">MS OLE2</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-metadata.html">metadata</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GsfBlob.html">GsfBlob</a></span><span class="refpurpose"> - A generic, unstructured block of binary data</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GsfClipData.html">GsfClipData</a></span><span class="refpurpose"> - Object to hold clipboard data from a VT_CF section</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Structured-Blobs.html">Structured Blobs</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Bononbo.html"><b>&lt;&lt;&#160;Bononbo</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Text.html"><b>Text&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/right.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/right.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/sources.html
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/sources.html	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/sources.html	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,60 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Stream Sources</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
+<link rel="start" href="index.html" title="GSF Reference Manual">
+<link rel="up" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="prev" href="gsf-Output-to-unstructured-files.html" title="Output to unstructured files">
+<link rel="next" href="gsf-Infile-reading-structed-files.html" title="Infile reading structed files">
+<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+<link rel="part" href="into.html" title="Part&#160;I.&#160;GSF Overview">
+<link rel="part" href="api.html" title="Part&#160;II.&#160;API Reference">
+<link rel="chapter" href="io.html" title="Basic Input/Output">
+<link rel="chapter" href="sources.html" title="Stream Sources">
+<link rel="chapter" href="parsers.html" title="Stream Parsers">
+<link rel="chapter" href="misc.html" title="Miscellaneous">
+<link rel="index" href="ix01.html" title="Index">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
+<td><a accesskey="p" href="gsf-Output-to-unstructured-files.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
+<td><a accesskey="u" href="api.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
+<th width="100%" align="center">GSF Reference Manual</th>
+<td><a accesskey="n" href="gsf-Infile-reading-structed-files.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="chapter" lang="en">
+<div class="titlepage"><div><div><h2 class="title">
+<a name="sources"></a>Stream Sources</h2></div></div></div>
+<div class="toc"><dl>
+<dt>
+<span class="refentrytitle"><a href="gsf-Infile-reading-structed-files.html">Infile reading structed files</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Outfile-writing-structed-files.html">Outfile writing structed files</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Reading-and-Writing-from-local-files-and-directories.html">Reading and Writing from local files and directories</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-memory.html">memory</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GIOChannel.html">GIOChannel</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-GnomeVFS.html">GnomeVFS</a></span><span class="refpurpose"> - </span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gsf-Bononbo.html">Bononbo</a></span><span class="refpurpose"> - </span>
+</dt>
+</dl></div>
+</div>
+<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
+<td align="left"><a accesskey="p" href="gsf-Output-to-unstructured-files.html"><b>&lt;&lt;&#160;Output to unstructured files</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Infile-reading-structed-files.html"><b>Infile reading structed files&#160;&gt;&gt;</b></a></td>
+</tr></table>
+</body>
+</html>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/style.css
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/style.css	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/style.css	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,66 @@
+.synopsis, .classsynopsis 
+{
+  background: #eeeeee;
+  border: solid 1px #aaaaaa;
+  padding: 0.5em;
+}
+.programlisting 
+{
+  background: #eeeeff;
+  border: solid 1px #aaaaff;
+  padding: 0.5em;
+}
+.variablelist 
+{
+  padding: 4px;
+  margin-left: 3em;
+}
+.variablelist td:first-child
+{
+  vertical-align: top;
+}
+table.navigation 
+{
+  background: #ffeeee;
+  border: solid 1px #ffaaaa;
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+}
+.navigation a 
+{
+  color: #770000;
+}
+.navigation a:visited 
+{
+  color: #550000;
+}
+.navigation .title 
+{
+  font-size: 200%;
+}
+div.refnamediv 
+{
+  margin-top: 2em;
+}
+div.gallery-float 
+{
+  float: left;
+  padding: 10px;
+}
+div.gallery-float img 
+{
+  border-style: none;
+}
+div.gallery-spacer 
+{
+  clear: both;
+}
+a
+{
+  text-decoration: none;
+}
+a:hover
+{
+  text-decoration: underline;
+  color: #FF0000;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/up.png
===================================================================
(Binary files differ)


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/html/up.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/blob.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/blob.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/blob.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+<!-- ##### SECTION Title ##### -->
+Structured Blobs
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfStructuredBlob ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_structured_blob_write ##### -->
+<para>
+
+</para>
+
+ at blob: 
+ at container: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_structured_blob_read ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/bonobo.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/bonobo.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/bonobo.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,69 @@
+<!-- ##### SECTION Title ##### -->
+Bononbo
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInputBonobo ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_bonobo_new ##### -->
+<para>
+
+</para>
+
+ at stream: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputBonobo ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_bonobo_new ##### -->
+<para>
+
+</para>
+
+ at stream: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfSharedBonoboStream ##### -->
+<para>
+
+</para>
+
+ at g_object: 
+ at stream: 
+ at pos: 
+
+<!-- ##### FUNCTION gsf_shared_bonobo_stream_new ##### -->
+<para>
+
+</para>
+
+ at stream: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/compression.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/compression.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/compression.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,96 @@
+<!-- ##### SECTION Title ##### -->
+Compression
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInputGZip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG GsfInputGZip:raw ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInputGZip:source ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInputGZip:uncompressed-size ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION gsf_input_gzip_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_memory_new_from_bzip ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputGZip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_gzip_new ##### -->
+<para>
+
+</para>
+
+ at sink: 
+ at err: 
+ at Returns: 
+<!-- # Unused Parameters # -->
+ at source: 
+
+
+<!-- ##### STRUCT GsfOutputBzip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_bzip_new ##### -->
+<para>
+
+</para>
+
+ at sink: 
+ at err: 
+ at Returns: 
+<!-- # Unused Parameters # -->
+ at source: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnome-vfs.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnome-vfs.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnome-vfs.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,80 @@
+<!-- ##### SECTION Title ##### -->
+GnomeVFS
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInputGnomeVFS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_gnomevfs_new ##### -->
+<para>
+
+</para>
+
+ at uri: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_gnomevfs_new_uri ##### -->
+<para>
+
+</para>
+
+ at uri: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_gnomevfs_needs_local_copy ##### -->
+<para>
+
+</para>
+
+ at vfs_input: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputGnomeVFS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_gnomevfs_new ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_gnomevfs_new_uri ##### -->
+<para>
+
+</para>
+
+ at uri: 
+ at err: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,79 @@
+<!-- ##### SECTION Title ##### -->
+GnomeVFS
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfInputGnomeVFS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_gnomevfs_new ##### -->
+<para>
+
+</para>
+
+ at uri: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_gnomevfs_new_uri ##### -->
+<para>
+
+</para>
+
+ at uri: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_gnomevfs_needs_local_copy ##### -->
+<para>
+
+</para>
+
+ at vfs_input: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputGnomeVFS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_gnomevfs_new ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_gnomevfs_new_uri ##### -->
+<para>
+
+</para>
+
+ at uri: 
+ at err: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gnomevfs.sgml.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,76 @@
+<!-- ##### SECTION Title ##### -->
+compression
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfInputGZip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_gzip_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_memory_new_from_bzip ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputGZip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_gzip_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputBzip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_bzip_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-blob.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-blob.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-blob.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,78 @@
+<!-- ##### SECTION Title ##### -->
+GsfBlob
+
+<!-- ##### SECTION Short_Description ##### -->
+A generic, unstructured block of binary data
+
+<!-- ##### SECTION Long_Description ##### -->
+  <para>
+    Some libgsf functions, in particular the <link
+    linkend="GsfDocMetaData">metadata</link> functions, can generate
+    unstructured blocks of data, or <firstterm>blobs</firstterm>.
+    Libgsf represents these blobs using a
+    <classname>GsfBlob</classname> object.
+  </para>
+
+<!-- ##### SECTION See_Also ##### -->
+  <para>
+    #GsfClipData, #GsfMetadata
+  </para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfBlob ##### -->
+  <para>
+    Represents an unstructured block of binary data, that is, a
+    sequence of bytes and an integer specifying the size of the
+    sequence.
+  </para>
+
+ at object: 
+ at priv: 
+
+<!-- ##### STRUCT GsfBlobClass ##### -->
+<para>
+
+</para>
+
+ at parent_class: 
+
+<!-- ##### FUNCTION gsf_blob_new ##### -->
+<para>
+
+</para>
+
+ at size: 
+ at data_to_copy: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_blob_get_size ##### -->
+<para>
+
+</para>
+
+ at blob: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_blob_peek_data ##### -->
+<para>
+
+</para>
+
+ at blob: 
+ at Returns: 
+
+
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("../gsf-docs.sgml" "book" "refsect1")
+End:
+-->
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-clip-data.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-clip-data.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-clip-data.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,169 @@
+<!-- ##### SECTION Title ##### -->
+GsfClipData
+
+<!-- ##### SECTION Short_Description ##### -->
+Object to hold clipboard data from a VT_CF section
+
+<!-- ##### SECTION Long_Description ##### -->
+  <para>
+    OLE2 files may contain clipboard data in the
+    <literal>VT_CF</literal> property of the metadata in a
+    <literal>SummaryInfo</literal> section.  This data is used, among
+    other things, to represent a thumbnail or pre-rendered version of
+    the data in the file.  <classname>GsfClipData</classname> is an
+    object that holds such clipboard data.
+  </para>
+
+  <para>
+    You can get a <classname>GsfClipData</classname> object from the
+    #GValue returned by gsf_doc_prop_get_val(), after you have done
+    <literal>gsf_doc_meta_data_lookup (meta_data,
+    GSF_META_NAME_THUMBNAIL)</literal>.  The resulting #GsfClipData
+    object, if it exists, contains the thumbnail data.  In turn, the
+    thumbnail data may be in different formats, as specified by the
+    #GsfClipFormat enumeration.
+  </para>
+
+  <para>
+    Internally, #GsfClipData stores the thumbnail data plus any extra
+    information in a #GsfBlob object.  #GsfClipData provides a
+    convenience function, gsf_clip_data_peek_real_data(), to extract
+    the thumbnail data directly.  If you need to use the raw binary
+    data instead of the data specific to the thumbnail, you can use
+    gsf_clip_data_get_data_blob() to get the #GsfBlob object and
+    handle it yourself.
+  </para>
+
+<!-- ##### SECTION See_Also ##### -->
+  <para>
+    #GsfBlob, #GsfDocMetaData
+  </para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### ENUM GsfClipFormat ##### -->
+  <para>
+    A #GsfClipData stores all its thumbnail data and associated
+    information in an internal #GsfBlob object.  The
+    <type>GsfClipFormat</type> enumeration represents the possible
+    formats for this data blob.
+  </para>
+
+ at GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD: The thumbnail data is stored in
+  Windows clipboard format.  The particular sub-format can be in any of
+  the values in the #GsfClipFormatWindows enumeration.  When a
+  #GsfClipData is in @GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD, you can use
+  gsf_clip_data_get_windows_clipboard_format() to get the sub-format
+  in which the data is actually stored.
+ at GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD: The thumbnail data is stored in
+  Macintosh clipboard format, usually PICT.
+ at GSF_CLIP_FORMAT_GUID: The thumbnail data contains a GUID specifying
+  the OLE component which can be used to render it.  Please refer to
+  the OLE2 format documentation for details.
+ at GSF_CLIP_FORMAT_NO_DATA: There is no thumbnail data.
+ at GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME: The thumbnail data contains a
+  null-terminated string with a Windows clipboard format name.  Please refer to
+  the OLE2 format documentation for details.
+ at GSF_CLIP_FORMAT_UNKNOWN: The thumbnail data is in an unknown format,
+  but is nevertheless stored in a #GsfBlob.
+
+<!-- ##### ENUM GsfClipFormatWindows ##### -->
+  <para>
+    When a #GsfClipData is in GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD
+    format, it can be in any of the subformats specified by the
+    <type>GsfClipFormatWindows</type> enumeration.  Use
+    gsf_clip_data_get_windows_clipboard_format() to determine this
+    sub-format.
+  </para>
+
+  <para>
+    For all of these values, the gsf_clip_data_peek_real_data()
+    function lets you access the data directly.
+  </para>
+
+ at GSF_CLIP_FORMAT_WINDOWS_ERROR: The OLE file is probably corrupt.
+ at GSF_CLIP_FORMAT_WINDOWS_UNKNOWN: The specific clipboard format is
+  unknown to libgsf.
+ at GSF_CLIP_FORMAT_WINDOWS_METAFILE: The data is in Windows Metafile
+  format.  While OLE files store extra header data in this case, the
+  gsf_clip_data_peek_real_data() function will let you access the WMF
+  data directly, and it will ignore the extra header bytes.
+ at GSF_CLIP_FORMAT_WINDOWS_DIB: The data is in Windows
+  Device-Independent Bitmap format.
+ at GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE: The data is in Windows
+  Enhanced Metaflie format.
+
+<!-- ##### STRUCT GsfClipData ##### -->
+  <para>
+    Object used to represent a VT_CF property in the OLE stream.
+  </para>
+
+ at object: 
+ at priv: 
+
+<!-- ##### STRUCT GsfClipDataClass ##### -->
+<para>
+
+</para>
+
+ at parent_class: 
+
+<!-- ##### FUNCTION gsf_clip_data_new ##### -->
+<para>
+
+</para>
+
+ at format: 
+ at data_blob: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_clip_data_get_format ##### -->
+<para>
+
+</para>
+
+ at clip_data: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_clip_data_get_data_blob ##### -->
+<para>
+
+</para>
+
+ at clip_data: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_clip_data_get_windows_clipboard_format ##### -->
+<para>
+
+</para>
+
+ at clip_data: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_clip_data_peek_real_data ##### -->
+<para>
+
+</para>
+
+ at clip_data: 
+ at ret_size: 
+ at error: 
+ at Returns: 
+
+
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("../gsf-docs.sgml" "book" "refsect1")
+End:
+-->
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-unused.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-unused.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf-unused.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1225 @@
+<!-- ##### SECTION ./tmpl/gnome-vfs.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gnome-vfs.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gnome-vfs.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gnome-vfs.sgml.sgml:Title ##### -->
+compression
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml.sgml:Title ##### -->
+compression
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gnomevfs.sgml:Title ##### -->
+GnomeVFS
+
+
+<!-- ##### SECTION ./tmpl/gsf-impl-utils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-impl-utils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-impl-utils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-impl-utils.sgml:Title ##### -->
+gsf-impl-utils
+
+
+<!-- ##### SECTION ./tmpl/gsf-infile-impl.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-infile-impl.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-infile-impl.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-infile-impl.sgml:Title ##### -->
+GsfInfile
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gnomevfs.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gnomevfs.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gnomevfs.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gnomevfs.sgml:Title ##### -->
+gsf-input-gnomevfs
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gzip.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gzip.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gzip.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-gzip.sgml:Title ##### -->
+gsf-input-gzip
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-impl.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-impl.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-impl.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-impl.sgml:Title ##### -->
+GsfInput
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-memory.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-memory.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-memory.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-memory.sgml:Title ##### -->
+gsf-input-memory
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-stdio.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-stdio.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-stdio.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-stdio.sgml:Title ##### -->
+gsf-input-stdio
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-textline.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-textline.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-textline.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-input-textline.sgml:Title ##### -->
+gsf-input-textline
+
+
+<!-- ##### SECTION ./tmpl/gsf-input.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-input.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-input.sgml:Title ##### -->
+gsf-input
+
+
+<!-- ##### SECTION ./tmpl/gsf-output-impl.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-output-impl.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-output-impl.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-output-impl.sgml:Title ##### -->
+GsfOutput
+
+
+<!-- ##### SECTION ./tmpl/gsf-unused.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-utils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-utils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf-utils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf-utils.sgml:Title ##### -->
+gsf-utils
+
+
+<!-- ##### SECTION ./tmpl/gsf.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/gsf.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/gsf.sgml:Title ##### -->
+gsf
+
+
+<!-- ##### MACRO GSF_INFILE ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_INFILE_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_INFILE_MSOLE ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_INFILE_MSOLE_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_INFILE_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_INFILE_ZIP ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_INFILE_ZIP_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_INPUT ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_INPUT_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_INPUT_MEMORY ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_INPUT_MEMORY_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_INPUT_MMAP ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_INPUT_MMAP_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_INPUT_STDIO ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_INPUT_STDIO_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_INPUT_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_IS_INFILE_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_IS_INPUT_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_IS_OUTFILE_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_IS_OUTPUT_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_IS_OUTPUT_CSV ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_IS_OUTPUT_ICONV ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_IS_XML_OUT ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_META_KEY_CONTRIBUTOR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_COUNT_CHARACTERS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_COUNT_PAGES ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_COUNT_WORDS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_COVERAGE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_CREATOR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_DATE_CREATED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_DATE_LAST_MODIFIED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_DATE_LAST_PRINTED ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_DESCRIPTION ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_FORMAT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_GENERATOR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_KEYWORDS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_LANGUAGE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_PUBLISHER ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_RELATION ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_REVISION_TAG ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_RIGHTS ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_SOURCE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_SUBJECT ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_TITLE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_KEY_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_NAME_USER_DEFINED_1 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_NAME_USER_DEFINED_2 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_NAME_USER_DEFINED_3 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_NAME_USER_DEFINED_4 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_NAME_USER_DEFINED_5 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_NAME_USER_DEFINED_6 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_META_NAME_USER_DEFINED_7 ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_OLE_GET_GUINT16 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+<!-- ##### MACRO GSF_OLE_GET_GUINT32 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+<!-- ##### MACRO GSF_OLE_GET_GUINT8 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+<!-- ##### MACRO GSF_OUTFILE_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_OUTPUT_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO GSF_OUTPUT_CSV ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_OUTPUT_CSV_QUOTING_MODE_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_OUTPUT_CSV_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_OUTPUT_ICONV ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_OUTPUT_ICONV_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_TIMESTAMP_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_XML_OUT ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO GSF_XML_OUT_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfBlobPrivate ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfClipDataPrivate ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfInfileClass ##### -->
+<para>
+
+</para>
+
+ at input_class: 
+ at num_children: 
+ at name_by_index: 
+ at child_by_index: 
+ at child_by_name: 
+
+<!-- ##### STRUCT GsfInputClass ##### -->
+<para>
+
+</para>
+
+ at g_object_class: 
+ at Dup: 
+ at Read: 
+ at Seek: 
+ at OpenSibling: 
+ at _gsf_reserved0: 
+ at _gsf_reserved1: 
+ at _gsf_reserved2: 
+ at _gsf_reserved3: 
+
+<!-- ##### STRUCT GsfInputMMap ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM GsfMSOleProperty ##### -->
+<para>
+
+</para>
+
+ at GSF_MSOLE_PROP_STRING_MASK: 
+ at GSF_MSOLE_PROP_TIME_MASK: 
+ at GSF_MSOLE_PROP_WORD_MASK: 
+ at GSF_MSOLE_PROP_DWORD_MASK: 
+ at GSF_MSOLE_PROP_CLIPBOARD_MASK: 
+ at GSF_MSOLE_PROP_TYPE_MASK: 
+ at GSF_MSOLE_PROP_INDEX_MASK: 
+ at GSF_MSOLE_PROP_CODEPAGE: 
+ at GSF_MSOLE_PROP_TITLE: 
+ at GSF_MSOLE_PROP_SUBJECT: 
+ at GSF_MSOLE_PROP_AUTHOR: 
+ at GSF_MSOLE_PROP_KEYWORDS: 
+ at GSF_MSOLE_PROP_COMMENTS: 
+ at GSF_MSOLE_PROP_TEMPLATE: 
+ at GSF_MSOLE_PROP_LASTAUTHOR: 
+ at GSF_MSOLE_PROP_REVNUMBER: 
+ at GSF_MSOLE_PROP_EDITTIME: 
+ at GSF_MSOLE_PROP_LASTPRINTED: 
+ at GSF_MSOLE_PROP_CREATED: 
+ at GSF_MSOLE_PROP_LASTSAVED: 
+ at GSF_MSOLE_PROP_PAGECOUNT: 
+ at GSF_MSOLE_PROP_WORDCOUNT: 
+ at GSF_MSOLE_PROP_CHARCOUNT: 
+ at GSF_MSOLE_PROP_THUMBNAIL: 
+ at GSF_MSOLE_PROP_APPNAME: 
+ at GSF_MSOLE_PROP_SECURITY: 
+
+<!-- ##### ENUM GsfOff_t ##### -->
+<para>
+
+</para>
+
+ at GSF_SEEK_SET: 
+ at GSF_SEEK_CUR: 
+ at GSF_SEEK_END: 
+
+<!-- ##### STRUCT GsfOutfileClass ##### -->
+<para>
+
+</para>
+
+ at output_class: 
+ at new_child: 
+
+<!-- ##### STRUCT GsfOutputClass ##### -->
+<para>
+
+</para>
+
+ at g_object_class: 
+ at Close: 
+ at Seek: 
+ at Write: 
+ at Vprintf: 
+
+<!-- ##### STRUCT GsfOutputCsvClass ##### -->
+<para>
+
+</para>
+
+ at output_class: 
+
+<!-- ##### STRUCT GsfOutputIconvClass ##### -->
+<para>
+
+</para>
+
+ at output_class: 
+
+<!-- ##### MACRO IS_GSF_INFILE ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INFILE_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO IS_GSF_INFILE_MSOLE ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INFILE_ZIP ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INPUT ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INPUT_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO IS_GSF_INPUT_GZIP ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INPUT_MEMORY ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INPUT_MMAP ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INPUT_STDIO ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_INPUT_TEXTLINE ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_OUTFILE ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_OUTPUT ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_GSF_OUTPUT_CLASS ##### -->
+<para>
+
+</para>
+
+ at k: 
+
+<!-- ##### MACRO IS_GSF_SHARED_MEMORY ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO IS_MS_OLE_INPUT_GNOMEVFS ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO MS_OLE_INPUT_GNOMEVFS ##### -->
+<para>
+
+</para>
+
+ at o: 
+
+<!-- ##### MACRO MS_OLE_INPUT_GNOMEVFS_TYPE ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM ZipCompressionMethod ##### -->
+<para>
+
+</para>
+
+ at ZIP_STORED: 
+ at ZIP_SHRUNK: 
+ at ZIP_REDUCEDx1: 
+ at ZIP_REDUCEDx2: 
+ at ZIP_REDUCEDx3: 
+ at ZIP_REDUCEDx4: 
+ at ZIP_IMPLODED: 
+ at ZIP_TOKENIZED: 
+ at ZIP_DEFLATED: 
+ at ZIP_DEFLATED_BETTER: 
+ at ZIP_IMPLODED_BETTER: 
+
+<!-- ##### STRUCT ZipDirent ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at compr_method: 
+ at crc32: 
+ at csize: 
+ at usize: 
+ at offset: 
+ at data_offset: 
+ at dostime: 
+
+<!-- ##### STRUCT ZipVDir ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at is_directory: 
+ at dirent: 
+ at children: 
+
+<!-- ##### FUNCTION g_value_set_timestamp ##### -->
+<para>
+
+</para>
+
+ at value: 
+ at stamp: 
+
+<!-- ##### FUNCTION gsf_doc_meta_data_error ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_doc_meta_data_remove_prop ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at name: 
+ at prop: 
+
+<!-- ##### FUNCTION gsf_doc_meta_data_set_prop ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at name: 
+ at value: 
+ at prop_name: 
+ at prop: 
+
+<!-- ##### FUNCTION gsf_get_prop_get_link ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_get_prop_get_name ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_get_prop_get_val ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_get_prop_set_link ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at link: 
+
+<!-- ##### FUNCTION gsf_get_prop_set_val ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at val: 
+
+<!-- ##### FUNCTION gsf_infile_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_infile_zip_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_input_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_input_gnomevfs_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_input_memory_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_input_mmap_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_input_stdio_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_outfile_add_child ##### -->
+<para>
+
+</para>
+
+ at outfile: 
+ at name: 
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_outfile_error ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_output_csv_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_output_csv_quoting_mode_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_output_iconv_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_timestamp_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION gsf_value_set_docprop_vector ##### -->
+<para>
+
+</para>
+
+ at value: 
+ at vector: 
+
+<!-- ##### FUNCTION gsf_xml_out_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+<!-- ##### FUNCTION vdir_add_child ##### -->
+<para>
+
+</para>
+
+ at vdir: 
+ at child: 
+
+<!-- ##### FUNCTION vdir_free ##### -->
+<para>
+
+</para>
+
+ at vdir: 
+ at free_dirent: 
+
+<!-- ##### FUNCTION vdir_new ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at is_directory: 
+ at dirent: 
+ at Returns: 
+
+<!-- ##### FUNCTION zip_dirent_free ##### -->
+<para>
+
+</para>
+
+ at dirent: 
+
+<!-- ##### FUNCTION zip_dirent_new ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/gsf.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,22 @@
+<!-- ##### SECTION Title ##### -->
+gsf
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### TYPEDEF gsf_off_t ##### -->
+<para>
+
+</para>
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/infile.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/infile.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/infile.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,75 @@
+<!-- ##### SECTION Title ##### -->
+Infile reading structed files
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInfile ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_infile_num_children ##### -->
+<para>
+
+</para>
+
+ at infile: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_infile_child_by_index ##### -->
+<para>
+
+</para>
+
+ at infile: 
+ at i: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_infile_child_by_name ##### -->
+<para>
+
+</para>
+
+ at infile: 
+ at name: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_infile_child_by_vname ##### -->
+<para>
+
+</para>
+
+ at infile: 
+ at name: 
+ at Varargs: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_infile_name_by_index ##### -->
+<para>
+
+</para>
+
+ at infile: 
+ at i: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/input.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/input.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/input.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,258 @@
+<!-- ##### SECTION Title ##### -->
+Input from unstructured files
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInput ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG GsfInput:eof ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInput:name ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInput:position ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInput:remaining ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInput:size ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION gsf_input_read ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at num_bytes: 
+ at optional_buffer: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_tell ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_seek ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at offset: 
+ at whence: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_container ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_dup ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_size ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_eof ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_remaining ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_error_id ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_sibling ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at name: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_error ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_name ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_set_name_from_filename ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at filename: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfInputProxy ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_proxy_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_proxy_new_section ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at offset: 
+ at size: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_copy ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_uncompress ##### -->
+<para>
+
+</para>
+
+ at src: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_set_name ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at name: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_set_container ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at container: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_set_size ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at size: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_seek_emulate ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at pos: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/iochannel.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/iochannel.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/iochannel.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+<!-- ##### SECTION Title ##### -->
+GIOChannel
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfOutputIOChannel ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_iochannel_new ##### -->
+<para>
+
+</para>
+
+ at channel: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/memory.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/memory.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/memory.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,124 @@
+<!-- ##### SECTION Title ##### -->
+memory
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInputMemory ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_mmap_new ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_memory_new ##### -->
+<para>
+
+</para>
+
+ at buf: 
+ at length: 
+ at needs_free: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_memory_new_clone ##### -->
+<para>
+
+</para>
+
+ at buf: 
+ at length: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_memory_new_from_iochannel ##### -->
+<para>
+
+</para>
+
+ at channel: 
+ at error: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputMemory ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_memory_get_bytes ##### -->
+<para>
+
+</para>
+
+ at mem: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_memory_get_type ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_memory_new ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfSharedMemory ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_shared_memory_new ##### -->
+<para>
+
+</para>
+
+ at buf: 
+ at size: 
+ at needs_free: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_shared_memory_mmapped_new ##### -->
+<para>
+
+</para>
+
+ at buf: 
+ at size: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/metadata.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/metadata.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/metadata.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,561 @@
+<!-- ##### SECTION Title ##### -->
+metadata
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfDocMetaData ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_new ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_lookup ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at name: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_insert ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at name: 
+ at value: 
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_remove ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at name: 
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_steal ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at name: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_store ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at prop: 
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_foreach ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at func: 
+ at user_data: 
+
+
+<!-- ##### FUNCTION gsf_doc_meta_data_size ##### -->
+<para>
+
+</para>
+
+ at meta: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfDocProp ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_doc_prop_new ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_doc_prop_free ##### -->
+<para>
+
+</para>
+
+ at prop: 
+
+
+<!-- ##### FUNCTION gsf_doc_prop_get_name ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_doc_prop_get_val ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_doc_prop_set_val ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at val: 
+
+
+<!-- ##### FUNCTION gsf_doc_prop_get_link ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_doc_prop_set_link ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at link: 
+
+
+<!-- ##### STRUCT GsfDocPropVector ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_docprop_vector_new ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_docprop_vector_append ##### -->
+<para>
+
+</para>
+
+ at vector: 
+ at value: 
+
+
+<!-- ##### FUNCTION gsf_docprop_vector_as_string ##### -->
+<para>
+
+</para>
+
+ at vector: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_value_get_docprop_varray ##### -->
+<para>
+
+</para>
+
+ at value: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_value_get_docprop_vector ##### -->
+<para>
+
+</para>
+
+ at value: 
+ at Returns: 
+
+
+<!-- ##### MACRO GSF_META_NAME_TITLE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_DESCRIPTION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_SUBJECT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_DATE_MODIFIED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_DATE_CREATED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_KEYWORDS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_LANGUAGE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_REVISION_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_EDITING_DURATION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_TABLE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_IMAGE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_OBJECT_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_PAGE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_PARAGRAPH_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_WORD_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_CHARACTER_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_CELL_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_SPREADSHEET_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_CREATOR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_TEMPLATE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_LAST_SAVED_BY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_LAST_PRINTED ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_SECURITY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_CATEGORY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_PRESENTATION_FORMAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_THUMBNAIL ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_GENERATOR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_LINE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_SLIDE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_NOTE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_HIDDEN_SLIDE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MM_CLIP_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_BYTE_COUNT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_SCALE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_HEADING_PAIRS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_DOCUMENT_PARTS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MANAGER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_COMPANY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_LINKS_DIRTY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_DICTIONARY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MSOLE_UNKNOWN_17 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MSOLE_UNKNOWN_18 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MSOLE_UNKNOWN_19 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MSOLE_UNKNOWN_20 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MSOLE_UNKNOWN_21 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MSOLE_UNKNOWN_22 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_MSOLE_UNKNOWN_23 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_LOCALE_SYSTEM_DEFAULT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_META_NAME_CASE_SENSITIVE ##### -->
+<para>
+
+</para>
+
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/msole.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/msole.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/msole.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,547 @@
+<!-- ##### SECTION Title ##### -->
+MS OLE2
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInfileMSOle ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_infile_msole_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_infile_msole_get_class_id ##### -->
+<para>
+
+</para>
+
+ at ole: 
+ at res: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutfileMSOle ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_outfile_msole_new ##### -->
+<para>
+
+</para>
+
+ at sink: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_outfile_msole_new_full ##### -->
+<para>
+
+</para>
+
+ at sink: 
+ at bb_size: 
+ at sb_size: 
+ at Returns: 
+<!-- # Unused Parameters # -->
+ at Param2: 
+ at Param3: 
+
+
+<!-- ##### FUNCTION gsf_outfile_msole_set_class_id ##### -->
+<para>
+
+</para>
+
+ at ole: 
+ at clsid: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_metadata_read ##### -->
+<para>
+
+</para>
+
+ at in: 
+ at accum: 
+ at Returns: 
+<!-- # Unused Parameters # -->
+ at err: 
+
+
+<!-- ##### FUNCTION gsf_msole_metadata_write ##### -->
+<para>
+
+</para>
+
+ at out: 
+ at meta_data: 
+ at doc_not_component: 
+ at Returns: 
+<!-- # Unused Parameters # -->
+ at err: 
+
+
+<!-- ##### FUNCTION gsf_msole_iconv_open_codepages_for_export ##### -->
+<para>
+
+</para>
+
+ at codepage_to: 
+ at from: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_iconv_open_codepage_for_import ##### -->
+<para>
+
+</para>
+
+ at to: 
+ at codepage: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_iconv_open_for_export ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_iconv_open_codepage_for_export ##### -->
+<para>
+
+</para>
+
+ at codepage_to: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_iconv_open_for_import ##### -->
+<para>
+
+</para>
+
+ at codepage: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_iconv_win_codepage ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_codepage_to_lid ##### -->
+<para>
+
+</para>
+
+ at codepage: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_lid_to_codepage ##### -->
+<para>
+
+</para>
+
+ at lid: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_lid_to_codepage_str ##### -->
+<para>
+
+</para>
+
+ at lid: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_lid_for_language ##### -->
+<para>
+
+</para>
+
+ at lang: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_language_for_lid ##### -->
+<para>
+
+</para>
+
+ at lid: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_msole_inflate ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at offset: 
+ at Returns: 
+
+
+<!-- ##### MACRO OLE_HEADER_START_BAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_MAJOR_VER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_METABAT_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_DIRENT_START ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_NUM_SBAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_BB_SHIFT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_CSECTDIR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_NUM_BAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_THRESHOLD ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_METABAT_BLOCK ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_SBAT_START ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_SIGNATURE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_BYTE_ORDER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_SB_SHIFT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_NUM_METABAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_CLSID ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_HEADER_MINOR_VER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_DEFAULT_BB_SHIFT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO OLE_DEFAULT_SB_SHIFT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_DETAILS_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_NAME_LEN ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_TYPE_PROPERTY ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_TYPE_FILE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_MAGIC_END ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_TYPE_DIR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_MAX_NAME_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_FILE_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_FIRSTBLOCK ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_TYPE_INVALID ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_USERFLAGS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_COLOUR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_MODIFY_TIME ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_TYPE_LOCKBYTES ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_CREATE_TIME ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_PREV ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_NEXT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_CHILD ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_TYPE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_CLSID ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO DIRENT_TYPE_ROOTDIR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO BAT_MAGIC_METABAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO BAT_MAGIC_BAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO BAT_INDEX_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO BAT_MAGIC_END_OF_CHAIN ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO BAT_MAGIC_UNUSED ##### -->
+<para>
+
+</para>
+
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/outfile.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/outfile.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/outfile.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,62 @@
+<!-- ##### SECTION Title ##### -->
+Outfile writing structed files
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfOutfile ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_outfile_new_child ##### -->
+<para>
+
+</para>
+
+ at outfile: 
+ at name: 
+ at is_dir: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_outfile_new_child_full ##### -->
+<para>
+
+</para>
+
+ at outfile: 
+ at name: 
+ at is_dir: 
+ at first_property_name: 
+ at Varargs: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_outfile_new_child_varg ##### -->
+<para>
+
+</para>
+
+ at outfile: 
+ at name: 
+ at is_dir: 
+ at first_property_name: 
+ at args: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/output.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/output.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/output.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,232 @@
+<!-- ##### SECTION Title ##### -->
+Output to unstructured files
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfOutput ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG GsfOutput:is-closed ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfOutput:name ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfOutput:position ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfOutput:size ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION gsf_output_container ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_size ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_close ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_tell ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_seek ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at offset: 
+ at whence: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_write ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at num_bytes: 
+ at data: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_puts ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at line: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_printf ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at format: 
+ at Varargs: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_vprintf ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at format: 
+ at args: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_name ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_set_name_from_filename ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at filename: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_error_id ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_set_error ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at code: 
+ at format: 
+ at Varargs: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_error ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_is_closed ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_wrap ##### -->
+<para>
+
+</para>
+
+ at wrapper: 
+ at wrapee: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_unwrap ##### -->
+<para>
+
+</para>
+
+ at wrapper: 
+ at wrapee: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_set_name ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at name: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_set_container ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at container: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/stdio.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/stdio.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/stdio.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,142 @@
+<!-- ##### SECTION Title ##### -->
+Reading and Writing from local files and directories
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInputStdio ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_stdio_new ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputStdio ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_stdio_new ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_stdio_new_full ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at err: 
+ at first_property_name: 
+ at Varargs: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_stdio_new_valist ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at err: 
+ at first_property_name: 
+ at var_args: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_stdio_new_FILE ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at file: 
+ at keep_open: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutfileStdio ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_outfile_stdio_new ##### -->
+<para>
+
+</para>
+
+ at root: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_outfile_stdio_new_full ##### -->
+<para>
+
+</para>
+
+ at root: 
+ at err: 
+ at first_property_name: 
+ at Varargs: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_outfile_stdio_new_valist ##### -->
+<para>
+
+</para>
+
+ at root: 
+ at err: 
+ at first_property_name: 
+ at var_args: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfInfileStdio ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_infile_stdio_new ##### -->
+<para>
+
+</para>
+
+ at root: 
+ at err: 
+ at Returns: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/text.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/text.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/text.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,116 @@
+<!-- ##### SECTION Title ##### -->
+Text
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInputTextline ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_input_textline_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_textline_ascii_gets ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_input_textline_utf8_gets ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputIconv ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_output_iconv_new ##### -->
+<para>
+
+</para>
+
+ at sink: 
+ at dst: 
+ at src: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutputCsv ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at sink: 
+ at quote: 
+ at quote_len: 
+ at quoting_mode: 
+ at quoting_triggers: 
+ at eol: 
+ at eol_len: 
+ at separator: 
+ at separator_len: 
+ at fields_on_line: 
+ at buf: 
+
+<!-- ##### FUNCTION gsf_output_csv_write_eol ##### -->
+<para>
+
+</para>
+
+ at csv: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_output_csv_write_field ##### -->
+<para>
+
+</para>
+
+ at csv: 
+ at field: 
+ at len: 
+ at Returns: 
+
+
+<!-- ##### ENUM GsfOutputCsvQuotingMode ##### -->
+<para>
+
+</para>
+
+ at GSF_OUTPUT_CSV_QUOTING_MODE_NEVER: 
+ at GSF_OUTPUT_CSV_QUOTING_MODE_AUTO: 
+ at GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS: 
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/utils.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/utils.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/utils.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1261 @@
+<!-- ##### SECTION Title ##### -->
+utils
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### FUNCTION gsf_init ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION gsf_shutdown ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### FUNCTION gsf_init_dynamic ##### -->
+<para>
+
+</para>
+
+ at module: 
+
+
+<!-- ##### FUNCTION gsf_shutdown_dynamic ##### -->
+<para>
+
+</para>
+
+ at module: 
+
+
+<!-- ##### VARIABLE libgsf_major_version ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE libgsf_minor_version ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### VARIABLE libgsf_micro_version ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO GSF_CLASS ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at prefix: 
+ at class_init: 
+ at instance_init: 
+ at parent: 
+
+
+<!-- ##### MACRO GSF_CLASS_FULL ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at prefix: 
+ at base_init: 
+ at base_finalize: 
+@\
+			   class_init:
+@\
+			   class_init: 
+ at class_finalize: 
+ at instance_init: 
+ at parent_type: 
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract: 
+ at interface_decl: 
+<!-- # Unused Parameters # -->
+ at class_init: 
+
+
+<!-- ##### MACRO GSF_CLASS_ABSTRACT ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at prefix: 
+ at class_init: 
+ at instance_init: 
+ at parent: 
+
+
+<!-- ##### MACRO GSF_INTERFACE ##### -->
+<para>
+
+</para>
+
+ at init_func: 
+ at iface_type: 
+
+
+<!-- ##### MACRO GSF_INTERFACE_FULL ##### -->
+<para>
+
+</para>
+
+ at type: 
+ at init_func: 
+ at iface_type: 
+
+
+<!-- ##### MACRO GSF_DYNAMIC_CLASS ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at prefix: 
+ at class_init: 
+ at instance_init: 
+ at parent: 
+<!-- # Unused Parameters # -->
+ at plugin: 
+ at type: 
+
+
+<!-- ##### MACRO GSF_DYNAMIC_CLASS_FULL ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at prefix: 
+ at base_init: 
+ at base_finalize: 
+@\
+				   class_init:
+@\
+				   class_init: 
+ at class_finalize: 
+ at instance_init: 
+ at parent_type: 
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract: 
+ at interface_decl: 
+<!-- # Unused Parameters # -->
+ at class_init: 
+ at module: 
+ at plugin: 
+ at type: 
+
+
+<!-- ##### MACRO GSF_DYNAMIC_CLASS_ABSTRACT ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at prefix: 
+ at class_init: 
+ at instance_init: 
+ at parent: 
+<!-- # Unused Parameters # -->
+ at module: 
+ at plugin: 
+ at type: 
+
+
+<!-- ##### MACRO GSF_DYNAMIC_INTERFACE ##### -->
+<para>
+
+</para>
+
+ at init_func: 
+ at iface_type: 
+ at module: 
+
+
+<!-- ##### MACRO GSF_DYNAMIC_INTERFACE_FULL ##### -->
+<para>
+
+</para>
+
+ at type: 
+ at init_func: 
+ at iface_type: 
+ at module: 
+
+
+<!-- ##### MACRO GSF_PARAM_STATIC ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO GSF_ERROR ##### -->
+<para>
+  This convenience macro simply calls gsf_error_quark().  You can use
+  it in calls to g_error_matches(), for example.  The macro returns
+  the #GQuark that is used to identify errors from libgsf functions.
+  Specific error codes come from the #GsfError enumeration.
+</para>
+
+
+
+<!-- ##### ENUM GsfError ##### -->
+<para>
+   Error codes that can be returned from libgsf functions in #GError structures.
+</para>
+
+ at GSF_ERROR_OUT_OF_MEMORY: Not enough memory could be allocated to hold
+a structure or object.
+ at GSF_ERROR_INVALID_DATA: A file being read contained invalid or
+inconsistent data.
+
+<!-- ##### FUNCTION gsf_error_quark ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_mem_dump ##### -->
+<para>
+
+</para>
+
+ at ptr: 
+ at len: 
+
+
+<!-- ##### FUNCTION gsf_input_dump ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at dump_as_hex: 
+
+
+<!-- ##### MACRO GSF_OFF_T_FORMAT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### TYPEDEF gsf_off_t ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### FUNCTION gsf_filename_to_utf8 ##### -->
+<para>
+
+</para>
+
+ at filename: 
+ at quoted: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_iconv_close ##### -->
+<para>
+
+</para>
+
+ at handle: 
+
+
+<!-- ##### FUNCTION gsf_extension_pointer ##### -->
+<para>
+
+</para>
+
+ at path: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_base64_encode_simple ##### -->
+<para>
+
+</para>
+
+ at data: 
+ at len: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_base64_encode_close ##### -->
+<para>
+
+</para>
+
+ at in: 
+ at inlen: 
+ at break_lines: 
+ at out: 
+ at state: 
+ at save: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_base64_encode_step ##### -->
+<para>
+
+</para>
+
+ at in: 
+ at len: 
+ at break_lines: 
+ at out: 
+ at state: 
+ at save: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_base64_decode_simple ##### -->
+<para>
+
+</para>
+
+ at data: 
+ at len: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_base64_decode_step ##### -->
+<para>
+
+</para>
+
+ at in: 
+ at len: 
+ at out: 
+ at state: 
+ at save: 
+ at Returns: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GINT8 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GUINT64 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GINT16 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GUINT8 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GINT32 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GUINT16 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GUINT32 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO GSF_LE_GET_GINT64 ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### FUNCTION gsf_le_get_guint64 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at Returns: 
+
+
+<!-- ##### MACRO GSF_LE_GET_FLOAT ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### FUNCTION gsf_le_get_float ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at Returns: 
+
+
+<!-- ##### MACRO GSF_LE_GET_DOUBLE ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### FUNCTION gsf_le_get_double ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at Returns: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GUINT8 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GUINT16 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GUINT32 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GINT8 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GINT16 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GINT32 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GINT64 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_GUINT64 ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_FLOAT ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### MACRO GSF_LE_SET_DOUBLE ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at dat: 
+
+
+<!-- ##### FUNCTION gsf_le_set_float ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at f: 
+
+
+<!-- ##### FUNCTION gsf_le_set_double ##### -->
+<para>
+
+</para>
+
+ at p: 
+ at d: 
+
+
+<!-- ##### STRUCT GsfTimestamp ##### -->
+<para>
+
+</para>
+
+ at date: 
+ at seconds: 
+ at time_zone: 
+ at timet: 
+
+<!-- ##### FUNCTION gsf_timestamp_new ##### -->
+<para>
+
+</para>
+
+ at date: 
+ at seconds: 
+ at tz: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_timestamp_new_now ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_timestamp_copy ##### -->
+<para>
+
+</para>
+
+ at stamp: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_timestamp_free ##### -->
+<para>
+
+</para>
+
+ at stamp: 
+
+
+<!-- ##### FUNCTION gsf_timestamp_as_string ##### -->
+<para>
+
+</para>
+
+ at stamp: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_timestamp_parse ##### -->
+<para>
+
+</para>
+
+ at spec: 
+ at stamp: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_timestamp_hash ##### -->
+<para>
+
+</para>
+
+ at stamp: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_timestamp_equal ##### -->
+<para>
+
+</para>
+
+ at a: 
+ at b: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_value_set_timestamp ##### -->
+<para>
+
+</para>
+
+ at value: 
+ at stamp: 
+
+
+<!-- ##### MACRO VAL_IS_GSF_TIMESTAMP ##### -->
+<para>
+
+</para>
+
+ at v: 
+
+
+<!-- ##### FUNCTION gsf_doc_prop_swap_val ##### -->
+<para>
+
+</para>
+
+ at prop: 
+ at val: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_property_settings_collect ##### -->
+<para>
+
+</para>
+
+ at object_type: 
+ at p_params: 
+ at p_n_params: 
+ at first_property_name: 
+ at Varargs: 
+
+
+<!-- ##### FUNCTION gsf_property_settings_collect_valist ##### -->
+<para>
+
+</para>
+
+ at object_type: 
+ at p_params: 
+ at p_n_params: 
+ at first_property_name: 
+ at var_args: 
+
+
+<!-- ##### FUNCTION gsf_property_settings_free ##### -->
+<para>
+
+</para>
+
+ at params: 
+ at n_params: 
+
+
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("../gsf-docs.sgml" "book" "refsect1")
+End:
+-->
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/xml.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/xml.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/xml.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,666 @@
+<!-- ##### SECTION Title ##### -->
+XML and libxml
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### MACRO GSF_XML_IN_NS ##### -->
+<para>
+
+</para>
+
+ at id: 
+ at uri: 
+
+
+<!-- ##### ENUM GsfXMLContent ##### -->
+<para>
+
+</para>
+
+ at GSF_XML_NO_CONTENT: 
+ at GSF_XML_CONTENT: 
+ at GSF_XML_SHARED_CONTENT: 
+
+<!-- ##### STRUCT GsfXMLIn ##### -->
+<para>
+
+</para>
+
+ at doc: 
+ at node: 
+ at state_stack: 
+ at default_ns: 
+ at ns_stack: 
+ at content: 
+ at unknown_depth: 
+ at ns_prefixes: 
+ at ns_by_id: 
+
+<!-- ##### FUNCTION gsf_xmlDocFormatDump ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at cur: 
+ at encoding: 
+ at format: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_in_doc_free ##### -->
+<para>
+
+</para>
+
+ at doc: 
+
+
+<!-- ##### STRUCT GsfXMLBlob ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfXMLOut ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfXMLInDoc ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### STRUCT GsfXMLInNS ##### -->
+<para>
+
+</para>
+
+ at uri: 
+
+<!-- ##### MACRO GSF_XML_IN_NODE_FULL ##### -->
+<para>
+
+</para>
+
+ at parent_id: 
+ at id: 
+ at ns: 
+ at name: 
+ at has_content: 
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown: 
+ at check_ns: 
+ at start: 
+ at end: 
+ at user: 
+
+
+<!-- ##### MACRO GSF_XML_IN_NODE ##### -->
+<para>
+
+</para>
+
+ at parent_id: 
+ at id: 
+ at ns: 
+ at name: 
+ at has_content: 
+ at start: 
+ at end: 
+
+
+<!-- ##### STRUCT GsfXMLInNode ##### -->
+<para>
+
+</para>
+
+ at id: 
+ at ns_id: 
+ at name: 
+ at parent_id: 
+ at parent_initialized: 
+ at groups: 
+ at deprecated_unused_allow_unknown: 
+ at check_children_for_ns: 
+ at start: 
+ at end: 
+
+<!-- ##### USER_FUNCTION GsfXMLInUnknownFunc ##### -->
+<para>
+
+</para>
+
+ at state: 
+ at elem: 
+ at attrs: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_parser_context ##### -->
+<para>
+
+</para>
+
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_in_doc_new ##### -->
+<para>
+
+</para>
+
+ at root: 
+ at ns: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_in_namecmp ##### -->
+<para>
+
+</para>
+
+ at state: 
+ at str: 
+ at ns_id: 
+ at name: 
+ at Returns: 
+<!-- # Unused Parameters # -->
+ at Param3: 
+
+
+<!-- ##### FUNCTION gsf_xml_in_parse ##### -->
+<para>
+
+</para>
+
+ at state: 
+ at input: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_in_check_ns ##### -->
+<para>
+
+</para>
+
+ at state: 
+ at str: 
+ at ns_id: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_in_doc_extend ##### -->
+<para>
+
+</para>
+
+ at doc: 
+ at nodes: 
+
+
+<!-- ##### FUNCTION gsf_xml_in_doc_set_unknown_handler ##### -->
+<para>
+
+</para>
+
+ at doc: 
+ at handler: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_new ##### -->
+<para>
+
+</para>
+
+ at output: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_set_doc_type ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at type: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_start_element ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_end_element ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_cstr ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val_utf8: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_cstr_unchecked ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val_utf8: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_bool ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_int ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_uint ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val: 
+<!-- # Unused Parameters # -->
+ at Param3: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_float ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val: 
+ at precision: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_enum ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at etype: 
+ at val: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_color ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at r: 
+ at g: 
+ at b: 
+<!-- # Unused Parameters # -->
+ at Param3: 
+ at Param4: 
+ at Param5: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_add_base64 ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at data: 
+ at len: 
+<!-- # Unused Parameters # -->
+ at Param4: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_simple_element ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at content: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_simple_float_element ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val: 
+ at precision: 
+
+
+<!-- ##### FUNCTION gsf_xml_out_simple_int_element ##### -->
+<para>
+
+</para>
+
+ at xml: 
+ at id: 
+ at val: 
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/zip.sgml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/zip.sgml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/tmpl/zip.sgml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,538 @@
+<!-- ##### SECTION Title ##### -->
+Zip
+
+<!-- ##### SECTION Short_Description ##### -->
+
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### STRUCT GsfInfileZip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG GsfInfileZip:compression-level ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInfileZip:internal-parent ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfInfileZip:source ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION gsf_infile_zip_new ##### -->
+<para>
+
+</para>
+
+ at source: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfOutfileZip ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG GsfOutfileZip:compression-level ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfOutfileZip:entry-name ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG GsfOutfileZip:sink ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION gsf_outfile_zip_new ##### -->
+<para>
+
+</para>
+
+ at sink: 
+ at err: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_outfile_zip_set_compression_method ##### -->
+<para>
+
+</para>
+
+ at zip: 
+ at method: 
+ at Returns: 
+
+
+<!-- ##### STRUCT GsfZipDirent ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at compr_method: 
+ at crc32: 
+ at csize: 
+ at usize: 
+ at offset: 
+ at data_offset: 
+ at dostime: 
+
+<!-- ##### FUNCTION gsf_zip_dirent_new ##### -->
+<para>
+
+</para>
+
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_zip_dirent_free ##### -->
+<para>
+
+</para>
+
+ at dirent: 
+
+
+<!-- ##### STRUCT GsfZipVDir ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at is_directory: 
+ at dirent: 
+ at children: 
+ at last_child: 
+
+<!-- ##### FUNCTION gsf_vdir_free ##### -->
+<para>
+
+</para>
+
+ at vdir: 
+ at free_dirent: 
+
+
+<!-- ##### FUNCTION gsf_vdir_new ##### -->
+<para>
+
+</para>
+
+ at name: 
+ at is_directory: 
+ at dirent: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gsf_vdir_add_child ##### -->
+<para>
+
+</para>
+
+ at vdir: 
+ at child: 
+
+
+<!-- ##### MACRO ZIP_DIRENT_USIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_OFFSET ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### ENUM GsfZipCompressionMethod ##### -->
+<para>
+
+</para>
+
+ at GSF_ZIP_STORED: 
+ at GSF_ZIP_SHRUNK: 
+ at GSF_ZIP_REDUCEDx1: 
+ at GSF_ZIP_REDUCEDx2: 
+ at GSF_ZIP_REDUCEDx3: 
+ at GSF_ZIP_REDUCEDx4: 
+ at GSF_ZIP_IMPLODED: 
+ at GSF_ZIP_TOKENIZED: 
+ at GSF_ZIP_DEFLATED: 
+ at GSF_ZIP_DEFLATED_BETTER: 
+ at GSF_ZIP_IMPLODED_BETTER: 
+
+<!-- ##### MACRO ZIP_FILE_HEADER_NAME_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZZIP_IS_STREAMED ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_EXTRACT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_TIME ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZZIP_IS_ENCRYPTED ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO ZIP_HEADER_VERSION ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_BUF_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_CRC32 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_COMP_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_COMPR_METHOD ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_FILE_TYPE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_EXTRAS_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_EXTRACT ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_FILE_MODE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_FLAGS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_CSIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_DIR_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_COMMENT_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_ENTRIES ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_NAME_SEPARATOR ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_CRC ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_FLAGS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_EXTRAS_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_COMP_METHOD ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZZIP_IS_COMPRLEVEL ##### -->
+<para>
+
+</para>
+
+ at p: 
+
+
+<!-- ##### MACRO ZIP_DIRENT_DOSTIME ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_ENCODER ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_OS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_COMMENT_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_CRC32 ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_FLAGS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_DISK ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_USIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_TOTAL_ENTRIES ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_NAME_LEN ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_UNCOMP_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_DIR_DISK ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_CSIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_TRAILER_DIR_POS ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_BLOCK_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_NAME_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_SIZE ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_DIRENT_DISKSTART ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_HEADER_EXTRA_LEN ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_COMPR_METHOD ##### -->
+<para>
+
+</para>
+
+
+
+<!-- ##### MACRO ZIP_FILE_HEADER_DOSTIME ##### -->
+<para>
+
+</para>
+
+
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/version.xml.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/version.xml.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/version.xml.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1 @@
+ at GLIB_VERSION@

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/blob.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/blob.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/blob.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,99 @@
+<refentry id="gsf-Structured-Blobs">
+<refmeta>
+<refentrytitle>Structured Blobs</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Structured Blobs</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfStructuredBlob"/>
+<synopsis>
+
+
+
+            <link linkend="GsfStructuredBlob-struct">GsfStructuredBlob</link>;
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-structured-blob-write">gsf_structured_blob_write</link>       (<link linkend="GsfStructuredBlob">GsfStructuredBlob</link> *blob,
+                                             <link linkend="GsfOutfile">GsfOutfile</link> *container);
+<link linkend="GsfStructuredBlob">GsfStructuredBlob</link>* <link linkend="gsf-structured-blob-read">gsf_structured_blob_read</link> (<link linkend="GsfInput">GsfInput</link> *input);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----<link linkend="GsfInfile">GsfInfile</link>
+               +----GsfStructuredBlob
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfStructuredBlob-struct"/>GsfStructuredBlob</title>
+<indexterm><primary>GsfStructuredBlob</primary></indexterm><programlisting>typedef struct _GsfStructuredBlob GsfStructuredBlob;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-structured-blob-write"/>gsf_structured_blob_write ()</title>
+<indexterm><primary>gsf_structured_blob_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_structured_blob_write       (<link linkend="GsfStructuredBlob">GsfStructuredBlob</link> *blob,
+                                             <link linkend="GsfOutfile">GsfOutfile</link> *container);</programlisting>
+<para>
+Dumps structured blob <parameter>blob</parameter> onto the <parameter>container</parameter>.  Will fail if the output is
+not an Outfile and blob has multiple streams.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>blob</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>container</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE on success.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-structured-blob-read"/>gsf_structured_blob_read ()</title>
+<indexterm><primary>gsf_structured_blob_read</primary></indexterm><programlisting><link linkend="GsfStructuredBlob">GsfStructuredBlob</link>* gsf_structured_blob_read (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> An input (potentially a GsfInfile) holding the blob
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a freshly created tree of blobs
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/bonobo.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/bonobo.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/bonobo.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,128 @@
+<refentry id="gsf-Bononbo">
+<refmeta>
+<refentrytitle>Bononbo</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Bononbo</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+            <link linkend="GsfInputBonobo">GsfInputBonobo</link>;
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-bonobo-new">gsf_input_bonobo_new</link>            (<link linkend="Bonobo-Stream">Bonobo_Stream</link> const stream,
+                                             <link linkend="GError">GError</link> **err);
+            <link linkend="GsfOutputBonobo">GsfOutputBonobo</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-bonobo-new">gsf_output_bonobo_new</link>           (<link linkend="Bonobo-Stream">Bonobo_Stream</link> const stream,
+                                             <link linkend="GError">GError</link> **err);
+            <link linkend="GsfSharedBonoboStream">GsfSharedBonoboStream</link>;
+<link linkend="GsfSharedBonoboStream">GsfSharedBonoboStream</link>* <link linkend="gsf-shared-bonobo-stream-new">gsf_shared_bonobo_stream_new</link>
+                                            (<link linkend="Bonobo-Stream">Bonobo_Stream</link> stream);
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInputBonobo"/>GsfInputBonobo</title>
+<indexterm><primary>GsfInputBonobo</primary></indexterm><programlisting>typedef struct _GsfInputBonobo GsfInputBonobo;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-bonobo-new"/>gsf_input_bonobo_new ()</title>
+<indexterm><primary>gsf_input_bonobo_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_bonobo_new            (<link linkend="Bonobo-Stream">Bonobo_Stream</link> const stream,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>stream</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputBonobo"/>GsfOutputBonobo</title>
+<indexterm><primary>GsfOutputBonobo</primary></indexterm><programlisting>typedef struct _GsfOutputBonobo GsfOutputBonobo;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-bonobo-new"/>gsf_output_bonobo_new ()</title>
+<indexterm><primary>gsf_output_bonobo_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_bonobo_new           (<link linkend="Bonobo-Stream">Bonobo_Stream</link> const stream,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>stream</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfSharedBonoboStream"/>GsfSharedBonoboStream</title>
+<indexterm><primary>GsfSharedBonoboStream</primary></indexterm><programlisting>typedef struct {
+	GObject g_object;
+	Bonobo_Stream stream;
+	CORBA_long pos;
+} GsfSharedBonoboStream;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-shared-bonobo-stream-new"/>gsf_shared_bonobo_stream_new ()</title>
+<indexterm><primary>gsf_shared_bonobo_stream_new</primary></indexterm><programlisting><link linkend="GsfSharedBonoboStream">GsfSharedBonoboStream</link>* gsf_shared_bonobo_stream_new
+                                            (<link linkend="Bonobo-Stream">Bonobo_Stream</link> stream);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>stream</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/compression.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/compression.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/compression.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,187 @@
+<refentry id="gsf-Compression">
+<refmeta>
+<refentrytitle>Compression</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Compression</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInputGZip"/><anchor id="GsfOutputBzip"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInputGZip-struct">GsfInputGZip</link>;
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-gzip-new">gsf_input_gzip_new</link>              (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-memory-new-from-bzip">gsf_input_memory_new_from_bzip</link>  (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);
+            <link linkend="GsfOutputGZip">GsfOutputGZip</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-gzip-new">gsf_output_gzip_new</link>             (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="GError">GError</link> **err);
+            <link linkend="GsfOutputBzip-struct">GsfOutputBzip</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-bzip-new">gsf_output_bzip_new</link>             (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="GError">GError</link> **err);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----GsfInputGZip
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----GsfOutputBzip
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+  &quot;<link linkend="GsfInputGZip--raw">raw</link>&quot;                  <link linkend="gboolean">gboolean</link>              : Read / Write / Construct Only
+  &quot;<link linkend="GsfInputGZip--source">source</link>&quot;               <link linkend="GsfInput">GsfInput</link>              : Read / Write / Construct Only
+  &quot;<link linkend="GsfInputGZip--uncompressed-size">uncompressed-size</link>&quot;    <link linkend="gint64">gint64</link>                : Read / Write / Construct Only
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInputGZip-struct"/>GsfInputGZip</title>
+<indexterm><primary>GsfInputGZip</primary></indexterm><programlisting>typedef struct _GsfInputGZip GsfInputGZip;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-gzip-new"/>gsf_input_gzip_new ()</title>
+<indexterm><primary>gsf_input_gzip_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_gzip_new              (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+Adds a reference to <parameter>source</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-memory-new-from-bzip"/>gsf_input_memory_new_from_bzip ()</title>
+<indexterm><primary>gsf_input_memory_new_from_bzip</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_memory_new_from_bzip  (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GError"><type>GError</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new <link linkend="GsfInputMemory"><type>GsfInputMemory</type></link> or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputGZip"/>GsfOutputGZip</title>
+<indexterm><primary>GsfOutputGZip</primary></indexterm><programlisting>typedef struct _GsfOutputGZip GsfOutputGZip;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-gzip-new"/>gsf_output_gzip_new ()</title>
+<indexterm><primary>gsf_output_gzip_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_gzip_new             (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+Adds a reference to <parameter>sink</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>sink</parameter>&nbsp;:</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputBzip-struct"/>GsfOutputBzip</title>
+<indexterm><primary>GsfOutputBzip</primary></indexterm><programlisting>typedef struct _GsfOutputBzip GsfOutputBzip;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-bzip-new"/>gsf_output_bzip_new ()</title>
+<indexterm><primary>gsf_output_bzip_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_bzip_new             (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+Adds a reference to <parameter>sink</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>sink</parameter>&nbsp;:</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="GsfInputGZip--raw"/>The &quot;<literal>raw</literal>&quot; property</title>
+<programlisting>  &quot;raw&quot;                  <link linkend="gboolean">gboolean</link>              : Read / Write / Construct Only</programlisting>
+<para>Whether to read compressed data with no header and no trailer.</para><para>Default value: FALSE</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInputGZip--source"/>The &quot;<literal>source</literal>&quot; property</title>
+<programlisting>  &quot;source&quot;               <link linkend="GsfInput">GsfInput</link>              : Read / Write / Construct Only</programlisting>
+<para>Where the compressed data comes from.</para></refsect2>
+<refsect2><title><anchor id="GsfInputGZip--uncompressed-size"/>The &quot;<literal>uncompressed-size</literal>&quot; property</title>
+<programlisting>  &quot;uncompressed-size&quot;    <link linkend="gint64">gint64</link>                : Read / Write / Construct Only</programlisting>
+<para>The source's uncompressed size.</para><para>Allowed values: &gt;= -1</para>
+<para>Default value: -1</para>
+</refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gnome-vfs.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gnome-vfs.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gnome-vfs.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,156 @@
+<refentry id="gsf-GnomeVFS">
+<refmeta>
+<refentrytitle>GnomeVFS</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>GnomeVFS</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+            <link linkend="GsfInputGnomeVFS">GsfInputGnomeVFS</link>;
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-gnomevfs-new">gsf_input_gnomevfs_new</link>          (<link linkend="char">char</link> const *uri,
+                                             <link linkend="GError">GError</link> **error);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-gnomevfs-new-uri">gsf_input_gnomevfs_new_uri</link>      (<link linkend="GnomeVFSURI">GnomeVFSURI</link> *uri,
+                                             <link linkend="GError">GError</link> **error);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-gnomevfs-needs-local-copy">gsf_input_gnomevfs_needs_local_copy</link>
+                                            (<link linkend="GsfInputGnomeVFS">GsfInputGnomeVFS</link> *vfs_input);
+            <link linkend="GsfOutputGnomeVFS">GsfOutputGnomeVFS</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-gnomevfs-new">gsf_output_gnomevfs_new</link>         (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-gnomevfs-new-uri">gsf_output_gnomevfs_new_uri</link>     (<link linkend="GnomeVFSURI">GnomeVFSURI</link> *uri,
+                                             <link linkend="GError">GError</link> **err);
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInputGnomeVFS"/>GsfInputGnomeVFS</title>
+<indexterm><primary>GsfInputGnomeVFS</primary></indexterm><programlisting>typedef struct _GsfInputGnomeVFS GsfInputGnomeVFS;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-gnomevfs-new"/>gsf_input_gnomevfs_new ()</title>
+<indexterm><primary>gsf_input_gnomevfs_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_gnomevfs_new          (<link linkend="char">char</link> const *uri,
+                                             <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-gnomevfs-new-uri"/>gsf_input_gnomevfs_new_uri ()</title>
+<indexterm><primary>gsf_input_gnomevfs_new_uri</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_gnomevfs_new_uri      (<link linkend="GnomeVFSURI">GnomeVFSURI</link> *uri,
+                                             <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-gnomevfs-needs-local-copy"/>gsf_input_gnomevfs_needs_local_copy ()</title>
+<indexterm><primary>gsf_input_gnomevfs_needs_local_copy</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_gnomevfs_needs_local_copy
+                                            (<link linkend="GsfInputGnomeVFS">GsfInputGnomeVFS</link> *vfs_input);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>vfs_input</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputGnomeVFS"/>GsfOutputGnomeVFS</title>
+<indexterm><primary>GsfOutputGnomeVFS</primary></indexterm><programlisting>typedef struct _GsfOutputGnomeVFS GsfOutputGnomeVFS;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-gnomevfs-new"/>gsf_output_gnomevfs_new ()</title>
+<indexterm><primary>gsf_output_gnomevfs_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_gnomevfs_new         (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-gnomevfs-new-uri"/>gsf_output_gnomevfs_new_uri ()</title>
+<indexterm><primary>gsf_output_gnomevfs_new_uri</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_gnomevfs_new_uri     (<link linkend="GnomeVFSURI">GnomeVFSURI</link> *uri,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>uri</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-blob.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-blob.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-blob.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,144 @@
+<refentry id="gsf-GsfBlob">
+<refmeta>
+<refentrytitle>GsfBlob</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>GsfBlob</refname><refpurpose>A generic, unstructured block of binary data</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+            <link linkend="GsfBlob">GsfBlob</link>;
+            <link linkend="GsfBlobClass">GsfBlobClass</link>;
+<link linkend="GsfBlob">GsfBlob</link>*    <link linkend="gsf-blob-new">gsf_blob_new</link>                    (<link linkend="gsize">gsize</link> size,
+                                             <link linkend="gconstpointer">gconstpointer</link> data_to_copy,
+                                             <link linkend="GError">GError</link> **error);
+<link linkend="gsize">gsize</link>       <link linkend="gsf-blob-get-size">gsf_blob_get_size</link>               (<link linkend="GsfBlob">GsfBlob</link> *blob);
+<link linkend="gconstpointer">gconstpointer</link> <link linkend="gsf-blob-peek-data">gsf_blob_peek_data</link>            (<link linkend="GsfBlob">GsfBlob</link> *blob);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+  <para>
+    Some libgsf functions, in particular the <link
+    linkend="GsfDocMetaData">metadata</link> functions, can generate
+    unstructured blocks of data, or <firstterm>blobs</firstterm>.
+    Libgsf represents these blobs using a
+    <classname>GsfBlob</classname> object.
+  </para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfBlob"/>GsfBlob</title>
+<indexterm><primary>GsfBlob</primary></indexterm><programlisting>typedef struct {
+	GObject object;
+	GsfBlobPrivate *priv;
+} GsfBlob;
+</programlisting>
+  <para>
+    Represents an unstructured block of binary data, that is, a
+    sequence of bytes and an integer specifying the size of the
+    sequence.
+  </para></refsect2>
+<refsect2>
+<title><anchor id="GsfBlobClass"/>GsfBlobClass</title>
+<indexterm><primary>GsfBlobClass</primary></indexterm><programlisting>typedef struct {
+	GObjectClass parent_class;
+} GsfBlobClass;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-blob-new"/>gsf_blob_new ()</title>
+<indexterm><primary>gsf_blob_new</primary></indexterm><programlisting><link linkend="GsfBlob">GsfBlob</link>*    gsf_blob_new                    (<link linkend="gsize">gsize</link> size,
+                                             <link linkend="gconstpointer">gconstpointer</link> data_to_copy,
+                                             <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Creates a new <link linkend="GsfBlob"><type>GsfBlob</type></link> object to hold the specified data.  The blob can then
+be used as a facility for reference-counting for the data.  The data is
+copied internally, so the blob does not hold references to external chunks
+of memory.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>size</parameter>&nbsp;:</term>
+<listitem><simpara> Size of the data in bytes.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data_to_copy</parameter>&nbsp;:</term>
+<listitem><simpara> Data which will be copied into the blob, or <literal>NULL</literal> if <parameter>size</parameter> is zero.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> location to store error, or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A newly-created <link linkend="GsfBlob"><type>GsfBlob</type></link>, or <literal>NULL</literal> if the data could not be copied.
+
+Error domain: <link linkend="GSF-ERROR:CAPS"><type>GSF_ERROR</type></link>
+
+Possible errors: <link linkend="GSF-ERROR-OUT-OF-MEMORY:CAPS"><type>GSF_ERROR_OUT_OF_MEMORY</type></link> if the <parameter>data_to_copy</parameter> could not be copied.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-blob-get-size"/>gsf_blob_get_size ()</title>
+<indexterm><primary>gsf_blob_get_size</primary></indexterm><programlisting><link linkend="gsize">gsize</link>       gsf_blob_get_size               (<link linkend="GsfBlob">GsfBlob</link> *blob);</programlisting>
+<para>
+Queries the size in bytes of the data stored in the blob.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>blob</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfBlob"><type>GsfBlob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> Size in bytes, or 0 if the data is <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-blob-peek-data"/>gsf_blob_peek_data ()</title>
+<indexterm><primary>gsf_blob_peek_data</primary></indexterm><programlisting><link linkend="gconstpointer">gconstpointer</link> gsf_blob_peek_data            (<link linkend="GsfBlob">GsfBlob</link> *blob);</programlisting>
+<para>
+Queries a pointer to the data stored in the blob.  This does not copy the data
+for you; it returns a pointer to the actual buffer which the blob uses internally,
+so you should not free this buffer on your own.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>blob</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfBlob"><type>GsfBlob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> Pointer to the data stored in the blob, or <literal>NULL</literal> if the size
+of the data is zero.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+<refsect1>
+<title>See Also</title>
+  <para>
+    <link linkend="GsfClipData"><type>GsfClipData</type></link>, <link linkend="GsfMetadata"><type>GsfMetadata</type></link>
+  </para>
+</refsect1>
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-clip-data.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-clip-data.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf-clip-data.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,328 @@
+<refentry id="gsf-GsfClipData">
+<refmeta>
+<refentrytitle>GsfClipData</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>GsfClipData</refname><refpurpose>Object to hold clipboard data from a VT_CF section</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+enum        <link linkend="GsfClipFormat">GsfClipFormat</link>;
+enum        <link linkend="GsfClipFormatWindows">GsfClipFormatWindows</link>;
+            <link linkend="GsfClipData">GsfClipData</link>;
+            <link linkend="GsfClipDataClass">GsfClipDataClass</link>;
+<link linkend="GsfClipData">GsfClipData</link>* <link linkend="gsf-clip-data-new">gsf_clip_data_new</link>              (<link linkend="GsfClipFormat">GsfClipFormat</link> format,
+                                             <link linkend="GsfBlob">GsfBlob</link> *data_blob);
+<link linkend="GsfClipFormat">GsfClipFormat</link> <link linkend="gsf-clip-data-get-format">gsf_clip_data_get_format</link>      (<link linkend="GsfClipData">GsfClipData</link> *clip_data);
+<link linkend="GsfBlob">GsfBlob</link>*    <link linkend="gsf-clip-data-get-data-blob">gsf_clip_data_get_data_blob</link>     (<link linkend="GsfClipData">GsfClipData</link> *clip_data);
+<link linkend="GsfClipFormatWindows">GsfClipFormatWindows</link> <link linkend="gsf-clip-data-get-windows-clipboard-format">gsf_clip_data_get_windows_clipboard_format</link>
+                                            (<link linkend="GsfClipData">GsfClipData</link> *clip_data,
+                                             <link linkend="GError">GError</link> **error);
+<link linkend="gconstpointer">gconstpointer</link> <link linkend="gsf-clip-data-peek-real-data">gsf_clip_data_peek_real_data</link>  (<link linkend="GsfClipData">GsfClipData</link> *clip_data,
+                                             <link linkend="gsize">gsize</link> *ret_size,
+                                             <link linkend="GError">GError</link> **error);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+  <para>
+    OLE2 files may contain clipboard data in the
+    <literal>VT_CF</literal> property of the metadata in a
+    <literal>SummaryInfo</literal> section.  This data is used, among
+    other things, to represent a thumbnail or pre-rendered version of
+    the data in the file.  <classname>GsfClipData</classname> is an
+    object that holds such clipboard data.
+  </para>
+
+  <para>
+    You can get a <classname>GsfClipData</classname> object from the
+    <link linkend="GValue"><type>GValue</type></link> returned by <link linkend="gsf-doc-prop-get-val"><function>gsf_doc_prop_get_val()</function></link>, after you have done
+    <literal>gsf_doc_meta_data_lookup (meta_data,
+    GSF_META_NAME_THUMBNAIL)</literal>.  The resulting <link linkend="GsfClipData"><type>GsfClipData</type></link>
+    object, if it exists, contains the thumbnail data.  In turn, the
+    thumbnail data may be in different formats, as specified by the
+    <link linkend="GsfClipFormat"><type>GsfClipFormat</type></link> enumeration.
+  </para>
+
+  <para>
+    Internally, <link linkend="GsfClipData"><type>GsfClipData</type></link> stores the thumbnail data plus any extra
+    information in a <link linkend="GsfBlob"><type>GsfBlob</type></link> object.  <link linkend="GsfClipData"><type>GsfClipData</type></link> provides a
+    convenience function, <link linkend="gsf-clip-data-peek-real-data"><function>gsf_clip_data_peek_real_data()</function></link>, to extract
+    the thumbnail data directly.  If you need to use the raw binary
+    data instead of the data specific to the thumbnail, you can use
+    <link linkend="gsf-clip-data-get-data-blob"><function>gsf_clip_data_get_data_blob()</function></link> to get the <link linkend="GsfBlob"><type>GsfBlob</type></link> object and
+    handle it yourself.
+  </para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfClipFormat"/>enum GsfClipFormat</title>
+<indexterm><primary>GsfClipFormat</primary></indexterm><programlisting>typedef enum {
+	GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD = -1,
+	GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD = -2,
+	GSF_CLIP_FORMAT_GUID = -3,
+	GSF_CLIP_FORMAT_NO_DATA = 0,
+	GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME = 1, /* in the file it's actually any positive integer */
+	GSF_CLIP_FORMAT_UNKNOWN /* this is our own value for unknown types or invalid data */
+} GsfClipFormat;
+</programlisting>
+  <para>
+    A <link linkend="GsfClipData"><type>GsfClipData</type></link> stores all its thumbnail data and associated
+    information in an internal <link linkend="GsfBlob"><type>GsfBlob</type></link> object.  The
+    <type>GsfClipFormat</type> enumeration represents the possible
+    formats for this data blob.
+  </para><variablelist role="enum">
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</literal></term>
+<listitem><simpara>The thumbnail data is stored in
+  Windows clipboard format.  The particular sub-format can be in any of
+  the values in the <link linkend="GsfClipFormatWindows"><type>GsfClipFormatWindows</type></link> enumeration.  When a
+  <link linkend="GsfClipData"><type>GsfClipData</type></link> is in <parameter>GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</parameter>, you can use
+  <link linkend="gsf-clip-data-get-windows-clipboard-format"><function>gsf_clip_data_get_windows_clipboard_format()</function></link> to get the sub-format
+  in which the data is actually stored.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD</literal></term>
+<listitem><simpara>The thumbnail data is stored in
+  Macintosh clipboard format, usually PICT.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_GUID</literal></term>
+<listitem><simpara>The thumbnail data contains a GUID specifying
+  the OLE component which can be used to render it.  Please refer to
+  the OLE2 format documentation for details.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_NO_DATA</literal></term>
+<listitem><simpara>There is no thumbnail data.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME</literal></term>
+<listitem><simpara>The thumbnail data contains a
+  null-terminated string with a Windows clipboard format name.  Please refer to
+  the OLE2 format documentation for details.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_UNKNOWN</literal></term>
+<listitem><simpara>The thumbnail data is in an unknown format,
+  but is nevertheless stored in a <link linkend="GsfBlob"><type>GsfBlob</type></link>.
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfClipFormatWindows"/>enum GsfClipFormatWindows</title>
+<indexterm><primary>GsfClipFormatWindows</primary></indexterm><programlisting>typedef enum {
+	GSF_CLIP_FORMAT_WINDOWS_ERROR = -1,		/* our own value */
+	GSF_CLIP_FORMAT_WINDOWS_UNKNOWN = -2,		/* our own value */
+	GSF_CLIP_FORMAT_WINDOWS_METAFILE = 3,		/* CF_METAFILEPICT */
+	GSF_CLIP_FORMAT_WINDOWS_DIB = 8,		/* CF_DIB */
+	GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE = 14	/* CF_ENHMETAFILE */
+} GsfClipFormatWindows;
+</programlisting>
+  <para>
+    When a <link linkend="GsfClipData"><type>GsfClipData</type></link> is in GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD
+    format, it can be in any of the subformats specified by the
+    <type>GsfClipFormatWindows</type> enumeration.  Use
+    <link linkend="gsf-clip-data-get-windows-clipboard-format"><function>gsf_clip_data_get_windows_clipboard_format()</function></link> to determine this
+    sub-format.
+  </para>
+
+  <para>
+    For all of these values, the <link linkend="gsf-clip-data-peek-real-data"><function>gsf_clip_data_peek_real_data()</function></link>
+    function lets you access the data directly.
+  </para><variablelist role="enum">
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_WINDOWS_ERROR</literal></term>
+<listitem><simpara>The OLE file is probably corrupt.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_WINDOWS_UNKNOWN</literal></term>
+<listitem><simpara>The specific clipboard format is
+  unknown to libgsf.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_WINDOWS_METAFILE</literal></term>
+<listitem><simpara>The data is in Windows Metafile
+  format.  While OLE files store extra header data in this case, the
+  <link linkend="gsf-clip-data-peek-real-data"><function>gsf_clip_data_peek_real_data()</function></link> function will let you access the WMF
+  data directly, and it will ignore the extra header bytes.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_WINDOWS_DIB</literal></term>
+<listitem><simpara>The data is in Windows
+  Device-Independent Bitmap format.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE</literal></term>
+<listitem><simpara>The data is in Windows
+  Enhanced Metaflie format.
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfClipData"/>GsfClipData</title>
+<indexterm><primary>GsfClipData</primary></indexterm><programlisting>typedef struct {
+	GObject object;
+
+	GsfClipDataPrivate *priv;
+} GsfClipData;
+</programlisting>
+  <para>
+    Object used to represent a VT_CF property in the OLE stream.
+  </para></refsect2>
+<refsect2>
+<title><anchor id="GsfClipDataClass"/>GsfClipDataClass</title>
+<indexterm><primary>GsfClipDataClass</primary></indexterm><programlisting>typedef struct {
+	GObjectClass parent_class;
+} GsfClipDataClass;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-clip-data-new"/>gsf_clip_data_new ()</title>
+<indexterm><primary>gsf_clip_data_new</primary></indexterm><programlisting><link linkend="GsfClipData">GsfClipData</link>* gsf_clip_data_new              (<link linkend="GsfClipFormat">GsfClipFormat</link> format,
+                                             <link linkend="GsfBlob">GsfBlob</link> *data_blob);</programlisting>
+<para>
+Creates a new <link linkend="GsfClipData"><type>GsfClipData</type></link> object.  This function acquires a reference to the
+<parameter>data_blob</parameter>, so you should unref the blob on your own if you no longer need it
+directly.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
+<listitem><simpara> Format for the data inside the <parameter>data_blob</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data_blob</parameter>&nbsp;:</term>
+<listitem><simpara> Object which holds the binary contents for the <link linkend="GsfClipData"><type>GsfClipData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A newly-created <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-clip-data-get-format"/>gsf_clip_data_get_format ()</title>
+<indexterm><primary>gsf_clip_data_get_format</primary></indexterm><programlisting><link linkend="GsfClipFormat">GsfClipFormat</link> gsf_clip_data_get_format      (<link linkend="GsfClipData">GsfClipData</link> *clip_data);</programlisting>
+<para>
+Queries the clipboard data format of a <link linkend="GsfClipData"><type>GsfClipData</type></link>.  The format refers to the data
+blob inside the <parameter>clip_data</parameter>; use <link linkend="gsf-clip-data-get-data-blob"><function>gsf_clip_data_get_data_blob()</function></link> to get that data blob.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>clip_data</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The format in which the <link linkend="GsfClipData"><type>GsfClipData</type></link>'s data blob is stored.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-clip-data-get-data-blob"/>gsf_clip_data_get_data_blob ()</title>
+<indexterm><primary>gsf_clip_data_get_data_blob</primary></indexterm><programlisting><link linkend="GsfBlob">GsfBlob</link>*    gsf_clip_data_get_data_blob     (<link linkend="GsfClipData">GsfClipData</link> *clip_data);</programlisting>
+<para>
+Queries the data blob that actually stores a <link linkend="GsfClipData"><type>GsfClipData</type></link>'s binary data.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>clip_data</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A new reference to the <link linkend="GsfBlob"><type>GsfBlob</type></link> that stores this <parameter>clip_data</parameter>'s
+binary data.  You must use <link linkend="g-object-unref"><function>g_object_unref()</function></link> to dispose of that data blob when
+you are done with it.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-clip-data-get-windows-clipboard-format"/>gsf_clip_data_get_windows_clipboard_format ()</title>
+<indexterm><primary>gsf_clip_data_get_windows_clipboard_format</primary></indexterm><programlisting><link linkend="GsfClipFormatWindows">GsfClipFormatWindows</link> gsf_clip_data_get_windows_clipboard_format
+                                            (<link linkend="GsfClipData">GsfClipData</link> *clip_data,
+                                             <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Queries the Windows clipboard data format for a <link linkend="GsfClipData"><type>GsfClipData</type></link>.  The <parameter>clip_data</parameter> must
+have been created with <link linkend="GSF-CLIP-FORMAT-WINDOWS-CLIPBOARD:CAPS"><type>GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</type></link>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>clip_data</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> Location to store error, or <literal>NULL</literal>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A <link linkend="GsfClipFormatWindows"><type>GsfClipFormatWindows</type></link> value.
+
+Possible errors: <link linkend="GSF-ERROR-INVALID-DATA:CAPS"><type>GSF_ERROR_INVALID_DATA</type></link> if the data blob in the <parameter>clip_data</parameter> is
+smaller than it should be; in this case GSF_CLIP_FORMAT_WINDOWS_ERROR will be returned.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-clip-data-peek-real-data"/>gsf_clip_data_peek_real_data ()</title>
+<indexterm><primary>gsf_clip_data_peek_real_data</primary></indexterm><programlisting><link linkend="gconstpointer">gconstpointer</link> gsf_clip_data_peek_real_data  (<link linkend="GsfClipData">GsfClipData</link> *clip_data,
+                                             <link linkend="gsize">gsize</link> *ret_size,
+                                             <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+Queries a pointer directly to the clipboard data of a <link linkend="GsfClipData"><type>GsfClipData</type></link>.  The
+resulting pointer is not necessarily the same data pointer that was passed to
+<link linkend="gsf-blob-new"><function>gsf_blob_new()</function></link> prior to creating the <parameter>clip_data</parameter>.  For example, if the data is
+in <link linkend="GSF-CLIP-FORMAT-WINDOWS-CLIPBOARD:CAPS"><type>GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD</type></link> format, then it will have extra header
+bytes in front of the actual metafile data.  This function will skip over
+those header bytes if necessary and return a pointer to the "real" data.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>clip_data</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ret_size</parameter>&nbsp;:</term>
+<listitem><simpara> Location to return the size of the returned data buffer.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> Location to store error, or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> Pointer to the real clipboard data.  The size in bytes of this
+buffer is returned in the <parameter>ret_size</parameter> argument.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+<refsect1>
+<title>See Also</title>
+  <para>
+    <link linkend="GsfBlob"><type>GsfBlob</type></link>, <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+  </para>
+</refsect1>
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/gsf.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,52 @@
+<refentry id="gsf-gsf">
+<refmeta>
+<refentrytitle>gsf</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>gsf</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+typedef     <link linkend="gsf-off-t">gsf_off_t</link>;
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="gsf-off-t"/>gsf_off_t</title>
+<indexterm><primary>gsf_off_t</primary></indexterm><programlisting>typedef gint64 gsf_off_t;
+</programlisting>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/infile.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/infile.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/infile.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,168 @@
+<refentry id="gsf-Infile-reading-structed-files">
+<refmeta>
+<refentrytitle>Infile reading structed files</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Infile reading structed files</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInfile"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInfile-struct">GsfInfile</link>;
+<link linkend="int">int</link>         <link linkend="gsf-infile-num-children">gsf_infile_num_children</link>         (<link linkend="GsfInfile">GsfInfile</link> *infile);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-infile-child-by-index">gsf_infile_child_by_index</link>       (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="int">int</link> i);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-infile-child-by-name">gsf_infile_child_by_name</link>        (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="char">char</link> const *name);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-infile-child-by-vname">gsf_infile_child_by_vname</link>       (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="char">char</link> const *name,
+                                             ...);
+<link linkend="char">char</link>const * <link linkend="gsf-infile-name-by-index">gsf_infile_name_by_index</link>        (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="int">int</link> i);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----GsfInfile
+               +----<link linkend="GsfInfileMSOle">GsfInfileMSOle</link>
+               +----<link linkend="GsfInfileStdio">GsfInfileStdio</link>
+               +----<link linkend="GsfInfileZip">GsfInfileZip</link>
+               +----<link linkend="GsfStructuredBlob">GsfStructuredBlob</link>
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInfile-struct"/>GsfInfile</title>
+<indexterm><primary>GsfInfile</primary></indexterm><programlisting>typedef struct _GsfInfile GsfInfile;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-num-children"/>gsf_infile_num_children ()</title>
+<indexterm><primary>gsf_infile_num_children</primary></indexterm><programlisting><link linkend="int">int</link>         gsf_infile_num_children         (<link linkend="GsfInfile">GsfInfile</link> *infile);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>infile</parameter>&nbsp;:</term>
+<listitem><simpara> the structured storage
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the number of children the storage has, or -1 if the storage can not
+	have children.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-child-by-index"/>gsf_infile_child_by_index ()</title>
+<indexterm><primary>gsf_infile_child_by_index</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_infile_child_by_index       (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="int">int</link> i);</programlisting>
+<para>
+TODO : For 2.0 api will change to include a GError.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>infile</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>i</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a newly created child which must be unrefed.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-child-by-name"/>gsf_infile_child_by_name ()</title>
+<indexterm><primary>gsf_infile_child_by_name</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_infile_child_by_name        (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="char">char</link> const *name);</programlisting>
+<para>
+TODO : For 2.0 api will change to include a GError.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>infile</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a newly created child which must be unrefed.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-child-by-vname"/>gsf_infile_child_by_vname ()</title>
+<indexterm><primary>gsf_infile_child_by_vname</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_infile_child_by_vname       (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="char">char</link> const *name,
+                                             ...);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>infile</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara> A <literal>null</literal> terminated list of names
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
+<listitem><simpara> the rest of the names
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a newly created child which must be unrefed.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-name-by-index"/>gsf_infile_name_by_index ()</title>
+<indexterm><primary>gsf_infile_name_by_index</primary></indexterm><programlisting><link linkend="char">char</link>const * gsf_infile_name_by_index        (<link linkend="GsfInfile">GsfInfile</link> *infile,
+                                             <link linkend="int">int</link> i);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>infile</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>i</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the utf8 encoded name of the <parameter>i</parameter>-th child
+NOTE : DO NOT FREE THE STRING
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/input.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/input.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/input.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,521 @@
+<refentry id="gsf-Input-from-unstructured-files">
+<refmeta>
+<refentrytitle>Input from unstructured files</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Input from unstructured files</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInput"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInput-struct">GsfInput</link>;
+<link linkend="guint8">guint8</link>const * <link linkend="gsf-input-read">gsf_input_read</link>                (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="size-t">size_t</link> num_bytes,
+                                             <link linkend="guint8">guint8</link> *optional_buffer);
+<link linkend="gsf-off-t">gsf_off_t</link>   <link linkend="gsf-input-tell">gsf_input_tell</link>                  (<link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-seek">gsf_input_seek</link>                  (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset,
+                                             <link linkend="GSeekType">GSeekType</link> whence);
+<link linkend="GsfInfile">GsfInfile</link>*  <link linkend="gsf-input-container">gsf_input_container</link>             (<link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-dup">gsf_input_dup</link>                   (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="gsf-off-t">gsf_off_t</link>   <link linkend="gsf-input-size">gsf_input_size</link>                  (<link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-eof">gsf_input_eof</link>                   (<link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="gsf-off-t">gsf_off_t</link>   <link linkend="gsf-input-remaining">gsf_input_remaining</link>             (<link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="GQuark">GQuark</link>      <link linkend="gsf-input-error-id">gsf_input_error_id</link>              (void);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-sibling">gsf_input_sibling</link>               (<link linkend="GsfInput">GsfInput</link> const *input,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="GQuark">GQuark</link>      <link linkend="gsf-input-error">gsf_input_error</link>                 (void);
+<link linkend="char">char</link>const   * <link linkend="gsf-input-name">gsf_input_name</link>                (<link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-set-name-from-filename">gsf_input_set_name_from_filename</link>
+                                            (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="char">char</link> const *filename);
+            <link linkend="GsfInputProxy">GsfInputProxy</link>;
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-proxy-new">gsf_input_proxy_new</link>             (<link linkend="GsfInput">GsfInput</link> *source);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-proxy-new-section">gsf_input_proxy_new_section</link>     (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size);
+
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-copy">gsf_input_copy</link>                  (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="GsfOutput">GsfOutput</link> *output);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-uncompress">gsf_input_uncompress</link>            (<link linkend="GsfInput">GsfInput</link> *src);
+
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-set-name">gsf_input_set_name</link>              (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="char">char</link> const *name);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-set-container">gsf_input_set_container</link>         (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="GsfInfile">GsfInfile</link> *container);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-set-size">gsf_input_set_size</link>              (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-input-seek-emulate">gsf_input_seek_emulate</link>          (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> pos);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----GsfInput
+         +----<link linkend="GsfInfile">GsfInfile</link>
+         +----<link linkend="GsfInputGZip">GsfInputGZip</link>
+         +----<link linkend="GsfInputMemory">GsfInputMemory</link>
+         +----<link linkend="GsfInputStdio">GsfInputStdio</link>
+         +----<link linkend="GsfInputTextline">GsfInputTextline</link>
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+  &quot;<link linkend="GsfInput--eof">eof</link>&quot;                  <link linkend="gboolean">gboolean</link>              : Read
+  &quot;<link linkend="GsfInput--name">name</link>&quot;                 <link linkend="gchararray">gchararray</link>            : Read
+  &quot;<link linkend="GsfInput--position">position</link>&quot;             <link linkend="gint64">gint64</link>                : Read
+  &quot;<link linkend="GsfInput--remaining">remaining</link>&quot;            <link linkend="gint64">gint64</link>                : Read
+  &quot;<link linkend="GsfInput--size">size</link>&quot;                 <link linkend="gint64">gint64</link>                : Read
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInput-struct"/>GsfInput</title>
+<indexterm><primary>GsfInput</primary></indexterm><programlisting>typedef struct _GsfInput GsfInput;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-read"/>gsf_input_read ()</title>
+<indexterm><primary>gsf_input_read</primary></indexterm><programlisting><link linkend="guint8">guint8</link>const * gsf_input_read                (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="size-t">size_t</link> num_bytes,
+                                             <link linkend="guint8">guint8</link> *optional_buffer);</programlisting>
+<para>
+Read at least <parameter>num_bytes</parameter>.  Does not change the current position if there
+is an error.  Will only read if the entire amount can be read.  Invalidates
+the buffer associated with previous calls to gsf_input_read.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>num_bytes</parameter>&nbsp;:</term>
+<listitem><simpara> number of bytes to read
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>optional_buffer</parameter>&nbsp;:</term>
+<listitem><simpara> NULL, or pointer to destination memory area
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: pointer to the buffer or NULL if there is an error or 0 bytes are
+	requested.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-tell"/>gsf_input_tell ()</title>
+<indexterm><primary>gsf_input_tell</primary></indexterm><programlisting><link linkend="gsf-off-t">gsf_off_t</link>   gsf_input_tell                  (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the current offset in the file.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-seek"/>gsf_input_seek ()</title>
+<indexterm><primary>gsf_input_seek</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_seek                  (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset,
+                                             <link linkend="GSeekType">GSeekType</link> whence);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter>&nbsp;:</term>
+<listitem><simpara> target offset
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>whence</parameter>&nbsp;:</term>
+<listitem><simpara> determines whether the offset is relative to the beginning or
+          the end of the stream, or to the current location.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-container"/>gsf_input_container ()</title>
+<indexterm><primary>gsf_input_container</primary></indexterm><programlisting><link linkend="GsfInfile">GsfInfile</link>*  gsf_input_container             (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>, but does not add a reference to <parameter>input</parameter>'s container.
+Potentially NULL
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-dup"/>gsf_input_dup ()</title>
+<indexterm><primary>gsf_input_dup</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_dup                   (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+Duplicates input <parameter>src</parameter> leaving the new one at the same offset.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> The input to duplicate
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: the duplicate, or NULL on error
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-size"/>gsf_input_size ()</title>
+<indexterm><primary>gsf_input_size</primary></indexterm><programlisting><link linkend="gsf-off-t">gsf_off_t</link>   gsf_input_size                  (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+Looks up and caches the number of bytes in the input</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> The input
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>:  the size or -1 on error
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-eof"/>gsf_input_eof ()</title>
+<indexterm><primary>gsf_input_eof</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_eof                   (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+Are we at the end of the file ?</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the input is at the eof.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-remaining"/>gsf_input_remaining ()</title>
+<indexterm><primary>gsf_input_remaining</primary></indexterm><programlisting><link linkend="gsf-off-t">gsf_off_t</link>   gsf_input_remaining             (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the number of bytes left in the file.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-error-id"/>gsf_input_error_id ()</title>
+<indexterm><primary>gsf_input_error_id</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link>      gsf_input_error_id              (void);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: A utility quark to flag a GError as being an input problem.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-sibling"/>gsf_input_sibling ()</title>
+<indexterm><primary>gsf_input_sibling</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_sibling               (<link linkend="GsfInput">GsfInput</link> const *input,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-error"/>gsf_input_error ()</title>
+<indexterm><primary>gsf_input_error</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link>      gsf_input_error                 (void);</programlisting>
+<para>
+Deprecated in 1.12.0</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: A utility quark to flag a GError as being an input problem.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-name"/>gsf_input_name ()</title>
+<indexterm><primary>gsf_input_name</primary></indexterm><programlisting><link linkend="char">char</link>const   * gsf_input_name                (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara><parameter>input</parameter>'s name in utf8 form, or NULL if it has no name.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-set-name-from-filename"/>gsf_input_set_name_from_filename ()</title>
+<indexterm><primary>gsf_input_set_name_from_filename</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_set_name_from_filename
+                                            (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="char">char</link> const *filename);</programlisting>
+<para>
+protected.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> the (fs-sys encoded) filename
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the assignment was ok.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfInputProxy"/>GsfInputProxy</title>
+<indexterm><primary>GsfInputProxy</primary></indexterm><programlisting>typedef struct _GsfInputProxy GsfInputProxy;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-proxy-new"/>gsf_input_proxy_new ()</title>
+<indexterm><primary>gsf_input_proxy_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_proxy_new             (<link linkend="GsfInput">GsfInput</link> *source);</programlisting>
+<para>
+This creates a new proxy to the entire, given input source.  See
+gsf_input_proxy_new_section for details.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new input object.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-proxy-new-section"/>gsf_input_proxy_new_section ()</title>
+<indexterm><primary>gsf_input_proxy_new_section</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_proxy_new_section     (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size);</programlisting>
+<para>
+This creates a new proxy to a section of the given source.  The new
+object will have its own current position, but any operation on it
+can change the source's position.
+</para>
+<para>
+If a proxy to a proxy is created, the intermediate proxy is short-
+circuited.
+</para>
+<para>
+This function will ref the source.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter>&nbsp;:</term>
+<listitem><simpara> Offset into source for start of section.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter>&nbsp;:</term>
+<listitem><simpara> Length of section.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new input object.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-copy"/>gsf_input_copy ()</title>
+<indexterm><primary>gsf_input_copy</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_copy                  (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="GsfOutput">GsfOutput</link> *output);</programlisting>
+<para>
+Copy the contents from <parameter>input</parameter> to <parameter>output</parameter> from their respective
+current positions. So if you want to be sure to copy *everything*,
+make sure to call gsf_input_seek (input, 0, G_SEEK_SET) and
+gsf_output_seek (output, 0, G_SEEK_SET) first, if applicable.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> a non-null <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara> a non-null <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE on Success
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-uncompress"/>gsf_input_uncompress ()</title>
+<indexterm><primary>gsf_input_uncompress</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_uncompress            (<link linkend="GsfInput">GsfInput</link> *src);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>src</parameter>&nbsp;:</term>
+<listitem><simpara> stream to be uncompressed.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A stream equivalent to the source stream, but uncompressed if
+the source was compressed.
+
+This functions takes ownership of the incoming reference and yields a
+new one as its output.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-set-name"/>gsf_input_set_name ()</title>
+<indexterm><primary>gsf_input_set_name</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_set_name              (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="char">char</link> const *name);</programlisting>
+<para>
+protected.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara> the new name of the stream, or NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the assignment was ok.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-set-container"/>gsf_input_set_container ()</title>
+<indexterm><primary>gsf_input_set_container</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_set_container         (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="GsfInfile">GsfInfile</link> *container);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>container</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the assignment was ok.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-set-size"/>gsf_input_set_size ()</title>
+<indexterm><primary>gsf_input_set_size</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_set_size              (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter>&nbsp;:</term>
+<listitem><simpara> the size of the stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the assignment was ok.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-seek-emulate"/>gsf_input_seek_emulate ()</title>
+<indexterm><primary>gsf_input_seek_emulate</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_input_seek_emulate          (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> pos);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> stream to emulate seek for
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>pos</parameter>&nbsp;:</term>
+<listitem><simpara> absolute position to seek to
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the emulation failed.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="GsfInput--eof"/>The &quot;<literal>eof</literal>&quot; property</title>
+<programlisting>  &quot;eof&quot;                  <link linkend="gboolean">gboolean</link>              : Read</programlisting>
+<para>End Of File.</para><para>Default value: FALSE</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInput--name"/>The &quot;<literal>name</literal>&quot; property</title>
+<programlisting>  &quot;name&quot;                 <link linkend="gchararray">gchararray</link>            : Read</programlisting>
+<para>The Input's Name.</para><para>Default value: NULL</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInput--position"/>The &quot;<literal>position</literal>&quot; property</title>
+<programlisting>  &quot;position&quot;             <link linkend="gint64">gint64</link>                : Read</programlisting>
+<para>The Output's Current Position.</para><para>Allowed values: &gt;= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInput--remaining"/>The &quot;<literal>remaining</literal>&quot; property</title>
+<programlisting>  &quot;remaining&quot;            <link linkend="gint64">gint64</link>                : Read</programlisting>
+<para>Amount of Data Remaining.</para><para>Allowed values: &gt;= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInput--size"/>The &quot;<literal>size</literal>&quot; property</title>
+<programlisting>  &quot;size&quot;                 <link linkend="gint64">gint64</link>                : Read</programlisting>
+<para>The Input's Size.</para><para>Allowed values: &gt;= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/iochannel.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/iochannel.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/iochannel.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,77 @@
+<refentry id="gsf-GIOChannel">
+<refmeta>
+<refentrytitle>GIOChannel</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>GIOChannel</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfOutputIOChannel"/>
+<synopsis>
+
+
+
+            <link linkend="GsfOutputIOChannel-struct">GsfOutputIOChannel</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-iochannel-new">gsf_output_iochannel_new</link>        (<link linkend="GIOChannel">GIOChannel</link> *channel);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----GsfOutputIOChannel
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfOutputIOChannel-struct"/>GsfOutputIOChannel</title>
+<indexterm><primary>GsfOutputIOChannel</primary></indexterm><programlisting>typedef struct _GsfOutputIOChannel GsfOutputIOChannel;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-iochannel-new"/>gsf_output_iochannel_new ()</title>
+<indexterm><primary>gsf_output_iochannel_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_iochannel_new        (<link linkend="GIOChannel">GIOChannel</link> *channel);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>channel</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GIOChannel"><type>GIOChannel</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/memory.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/memory.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/memory.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,260 @@
+<refentry id="gsf-memory">
+<refmeta>
+<refentrytitle>memory</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>memory</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInputMemory"/><anchor id="GsfOutputMemory"/><anchor id="GsfSharedMemory"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInputMemory-struct">GsfInputMemory</link>;
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-mmap-new">gsf_input_mmap_new</link>              (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-memory-new">gsf_input_memory_new</link>            (<link linkend="guint8">guint8</link> const *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> length,
+                                             <link linkend="gboolean">gboolean</link> needs_free);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-memory-new-clone">gsf_input_memory_new_clone</link>      (<link linkend="guint8">guint8</link> const *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> length);
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-memory-new-from-iochannel">gsf_input_memory_new_from_iochannel</link>
+                                            (<link linkend="GIOChannel">GIOChannel</link> *channel,
+                                             <link linkend="GError">GError</link> **error);
+            <link linkend="GsfOutputMemory-struct">GsfOutputMemory</link>;
+const <link linkend="guint8">guint8</link>* <link linkend="gsf-output-memory-get-bytes">gsf_output_memory_get_bytes</link>   (<link linkend="GsfOutputMemory">GsfOutputMemory</link> *mem);
+<link linkend="GType">GType</link>       <link linkend="gsf-output-memory-get-type">gsf_output_memory_get_type</link>      (void);
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-memory-new">gsf_output_memory_new</link>           (void);
+            <link linkend="GsfSharedMemory-struct">GsfSharedMemory</link>;
+<link linkend="GsfSharedMemory">GsfSharedMemory</link>* <link linkend="gsf-shared-memory-new">gsf_shared_memory_new</link>      (<link linkend="void">void</link> *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size,
+                                             <link linkend="gboolean">gboolean</link> needs_free);
+<link linkend="GsfSharedMemory">GsfSharedMemory</link>* <link linkend="gsf-shared-memory-mmapped-new">gsf_shared_memory_mmapped_new</link>
+                                            (<link linkend="void">void</link> *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----GsfInputMemory
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----GsfOutputMemory
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----GsfSharedMemory
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInputMemory-struct"/>GsfInputMemory</title>
+<indexterm><primary>GsfInputMemory</primary></indexterm><programlisting>typedef struct _GsfInputMemory GsfInputMemory;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-mmap-new"/>gsf_input_mmap_new ()</title>
+<indexterm><primary>gsf_input_mmap_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_mmap_new              (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> The file on disk that you want to mmap
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GError"><type>GError</type></link>, or optionally <literal>null</literal>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A new <link linkend="GsfInputMemory"><type>GsfInputMemory</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-memory-new"/>gsf_input_memory_new ()</title>
+<indexterm><primary>gsf_input_memory_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_memory_new            (<link linkend="guint8">guint8</link> const *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> length,
+                                             <link linkend="gboolean">gboolean</link> needs_free);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>buf</parameter>&nbsp;:</term>
+<listitem><simpara> The input bytes
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>length</parameter>&nbsp;:</term>
+<listitem><simpara> The length of <parameter>buf</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>needs_free</parameter>&nbsp;:</term>
+<listitem><simpara> Whether you want this memory to be free'd at object destruction
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A new <link linkend="GsfInputMemory"><type>GsfInputMemory</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-memory-new-clone"/>gsf_input_memory_new_clone ()</title>
+<indexterm><primary>gsf_input_memory_new_clone</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_memory_new_clone      (<link linkend="guint8">guint8</link> const *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> length);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>buf</parameter>&nbsp;:</term>
+<listitem><simpara> The input bytes
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>length</parameter>&nbsp;:</term>
+<listitem><simpara> The length of <parameter>buf</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A new <link linkend="GsfInputMemory"><type>GsfInputMemory</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-memory-new-from-iochannel"/>gsf_input_memory_new_from_iochannel ()</title>
+<indexterm><primary>gsf_input_memory_new_from_iochannel</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_memory_new_from_iochannel
+                                            (<link linkend="GIOChannel">GIOChannel</link> *channel,
+                                             <link linkend="GError">GError</link> **error);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>channel</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GIOChannel"><type>GIOChannel</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GError"><type>GError</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new <link linkend="GsfInputMemory"><type>GsfInputMemory</type></link> or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputMemory-struct"/>GsfOutputMemory</title>
+<indexterm><primary>GsfOutputMemory</primary></indexterm><programlisting>typedef struct _GsfOutputMemory GsfOutputMemory;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-memory-get-bytes"/>gsf_output_memory_get_bytes ()</title>
+<indexterm><primary>gsf_output_memory_get_bytes</primary></indexterm><programlisting>const <link linkend="guint8">guint8</link>* gsf_output_memory_get_bytes   (<link linkend="GsfOutputMemory">GsfOutputMemory</link> *mem);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>mem</parameter>&nbsp;:</term>
+<listitem><simpara> the output device.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> The data that has been written to <parameter>mem</parameter>, or <literal>null</literal>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-memory-get-type"/>gsf_output_memory_get_type ()</title>
+<indexterm><primary>gsf_output_memory_get_type</primary></indexterm><programlisting><link linkend="GType">GType</link>       gsf_output_memory_get_type      (void);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-memory-new"/>gsf_output_memory_new ()</title>
+<indexterm><primary>gsf_output_memory_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_memory_new           (void);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfSharedMemory-struct"/>GsfSharedMemory</title>
+<indexterm><primary>GsfSharedMemory</primary></indexterm><programlisting>typedef struct _GsfSharedMemory GsfSharedMemory;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-shared-memory-new"/>gsf_shared_memory_new ()</title>
+<indexterm><primary>gsf_shared_memory_new</primary></indexterm><programlisting><link linkend="GsfSharedMemory">GsfSharedMemory</link>* gsf_shared_memory_new      (<link linkend="void">void</link> *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size,
+                                             <link linkend="gboolean">gboolean</link> needs_free);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>buf</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>needs_free</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-shared-memory-mmapped-new"/>gsf_shared_memory_mmapped_new ()</title>
+<indexterm><primary>gsf_shared_memory_mmapped_new</primary></indexterm><programlisting><link linkend="GsfSharedMemory">GsfSharedMemory</link>* gsf_shared_memory_mmapped_new
+                                            (<link linkend="void">void</link> *buf,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> size);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>buf</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/metadata.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/metadata.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/metadata.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,800 @@
+<refentry id="gsf-metadata">
+<refmeta>
+<refentrytitle>metadata</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>metadata</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+            <link linkend="GsfDocMetaData">GsfDocMetaData</link>;
+<link linkend="GsfDocMetaData">GsfDocMetaData</link>* <link linkend="gsf-doc-meta-data-new">gsf_doc_meta_data_new</link>       (void);
+<link linkend="GsfDocProp">GsfDocProp</link>* <link linkend="gsf-doc-meta-data-lookup">gsf_doc_meta_data_lookup</link>        (<link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta,
+                                             <link linkend="char">char</link> const *name);
+<link linkend="void">void</link>        <link linkend="gsf-doc-meta-data-insert">gsf_doc_meta_data_insert</link>        (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="char">char</link> *name,
+                                             <link linkend="GValue">GValue</link> *value);
+<link linkend="void">void</link>        <link linkend="gsf-doc-meta-data-remove">gsf_doc_meta_data_remove</link>        (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="char">char</link> const *name);
+<link linkend="GsfDocProp">GsfDocProp</link>* <link linkend="gsf-doc-meta-data-steal">gsf_doc_meta_data_steal</link>         (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="char">char</link> const *name);
+<link linkend="void">void</link>        <link linkend="gsf-doc-meta-data-store">gsf_doc_meta_data_store</link>         (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="GsfDocProp">GsfDocProp</link> *prop);
+<link linkend="void">void</link>        <link linkend="gsf-doc-meta-data-foreach">gsf_doc_meta_data_foreach</link>       (<link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta,
+                                             <link linkend="GHFunc">GHFunc</link> func,
+                                             <link linkend="gpointer">gpointer</link> user_data);
+<link linkend="gsize">gsize</link>       <link linkend="gsf-doc-meta-data-size">gsf_doc_meta_data_size</link>          (<link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta);
+            <link linkend="GsfDocProp">GsfDocProp</link>;
+<link linkend="GsfDocProp">GsfDocProp</link>* <link linkend="gsf-doc-prop-new">gsf_doc_prop_new</link>                (<link linkend="char">char</link> *name);
+<link linkend="void">void</link>        <link linkend="gsf-doc-prop-free">gsf_doc_prop_free</link>               (<link linkend="GsfDocProp">GsfDocProp</link> *prop);
+<link linkend="char">char</link>const   * <link linkend="gsf-doc-prop-get-name">gsf_doc_prop_get_name</link>         (<link linkend="GsfDocProp">GsfDocProp</link> const *prop);
+<link linkend="GValue">GValue</link>const * <link linkend="gsf-doc-prop-get-val">gsf_doc_prop_get_val</link>          (<link linkend="GsfDocProp">GsfDocProp</link> const *prop);
+<link linkend="void">void</link>        <link linkend="gsf-doc-prop-set-val">gsf_doc_prop_set_val</link>            (<link linkend="GsfDocProp">GsfDocProp</link> *prop,
+                                             <link linkend="GValue">GValue</link> *val);
+<link linkend="char">char</link>const   * <link linkend="gsf-doc-prop-get-link">gsf_doc_prop_get_link</link>         (<link linkend="GsfDocProp">GsfDocProp</link> const *prop);
+<link linkend="void">void</link>        <link linkend="gsf-doc-prop-set-link">gsf_doc_prop_set_link</link>           (<link linkend="GsfDocProp">GsfDocProp</link> *prop,
+                                             <link linkend="char">char</link> *link);
+            <link linkend="GsfDocPropVector">GsfDocPropVector</link>;
+<link linkend="GsfDocPropVector">GsfDocPropVector</link>* <link linkend="gsf-docprop-vector-new">gsf_docprop_vector_new</link>    (void);
+<link linkend="void">void</link>        <link linkend="gsf-docprop-vector-append">gsf_docprop_vector_append</link>       (<link linkend="GsfDocPropVector">GsfDocPropVector</link> *vector,
+                                             <link linkend="GValue">GValue</link> *value);
+<link linkend="gchar">gchar</link>*      <link linkend="gsf-docprop-vector-as-string">gsf_docprop_vector_as_string</link>    (<link linkend="GsfDocPropVector">GsfDocPropVector</link> *vector);
+<link linkend="GValueArray">GValueArray</link>* <link linkend="gsf-value-get-docprop-varray">gsf_value_get_docprop_varray</link>   (<link linkend="GValue">GValue</link> const *value);
+<link linkend="GsfDocPropVector">GsfDocPropVector</link>* <link linkend="gsf-value-get-docprop-vector">gsf_value_get_docprop_vector</link>
+                                            (<link linkend="GValue">GValue</link> const *value);
+
+#define     <link linkend="GSF-META-NAME-TITLE:CAPS">GSF_META_NAME_TITLE</link>
+#define     <link linkend="GSF-META-NAME-DESCRIPTION:CAPS">GSF_META_NAME_DESCRIPTION</link>
+#define     <link linkend="GSF-META-NAME-SUBJECT:CAPS">GSF_META_NAME_SUBJECT</link>
+#define     <link linkend="GSF-META-NAME-DATE-MODIFIED:CAPS">GSF_META_NAME_DATE_MODIFIED</link>
+#define     <link linkend="GSF-META-NAME-DATE-CREATED:CAPS">GSF_META_NAME_DATE_CREATED</link>
+#define     <link linkend="GSF-META-NAME-KEYWORDS:CAPS">GSF_META_NAME_KEYWORDS</link>
+#define     <link linkend="GSF-META-NAME-LANGUAGE:CAPS">GSF_META_NAME_LANGUAGE</link>
+#define     <link linkend="GSF-META-NAME-REVISION-COUNT:CAPS">GSF_META_NAME_REVISION_COUNT</link>
+#define     <link linkend="GSF-META-NAME-EDITING-DURATION:CAPS">GSF_META_NAME_EDITING_DURATION</link>
+#define     <link linkend="GSF-META-NAME-TABLE-COUNT:CAPS">GSF_META_NAME_TABLE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-IMAGE-COUNT:CAPS">GSF_META_NAME_IMAGE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-OBJECT-COUNT:CAPS">GSF_META_NAME_OBJECT_COUNT</link>
+#define     <link linkend="GSF-META-NAME-PAGE-COUNT:CAPS">GSF_META_NAME_PAGE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-PARAGRAPH-COUNT:CAPS">GSF_META_NAME_PARAGRAPH_COUNT</link>
+#define     <link linkend="GSF-META-NAME-WORD-COUNT:CAPS">GSF_META_NAME_WORD_COUNT</link>
+#define     <link linkend="GSF-META-NAME-CHARACTER-COUNT:CAPS">GSF_META_NAME_CHARACTER_COUNT</link>
+#define     <link linkend="GSF-META-NAME-CELL-COUNT:CAPS">GSF_META_NAME_CELL_COUNT</link>
+#define     <link linkend="GSF-META-NAME-SPREADSHEET-COUNT:CAPS">GSF_META_NAME_SPREADSHEET_COUNT</link>
+#define     <link linkend="GSF-META-NAME-CREATOR:CAPS">GSF_META_NAME_CREATOR</link>
+#define     <link linkend="GSF-META-NAME-TEMPLATE:CAPS">GSF_META_NAME_TEMPLATE</link>
+#define     <link linkend="GSF-META-NAME-LAST-SAVED-BY:CAPS">GSF_META_NAME_LAST_SAVED_BY</link>
+#define     <link linkend="GSF-META-NAME-LAST-PRINTED:CAPS">GSF_META_NAME_LAST_PRINTED</link>
+#define     <link linkend="GSF-META-NAME-SECURITY:CAPS">GSF_META_NAME_SECURITY</link>
+#define     <link linkend="GSF-META-NAME-CATEGORY:CAPS">GSF_META_NAME_CATEGORY</link>
+#define     <link linkend="GSF-META-NAME-PRESENTATION-FORMAT:CAPS">GSF_META_NAME_PRESENTATION_FORMAT</link>
+#define     <link linkend="GSF-META-NAME-THUMBNAIL:CAPS">GSF_META_NAME_THUMBNAIL</link>
+#define     <link linkend="GSF-META-NAME-GENERATOR:CAPS">GSF_META_NAME_GENERATOR</link>
+#define     <link linkend="GSF-META-NAME-LINE-COUNT:CAPS">GSF_META_NAME_LINE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-SLIDE-COUNT:CAPS">GSF_META_NAME_SLIDE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-NOTE-COUNT:CAPS">GSF_META_NAME_NOTE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-HIDDEN-SLIDE-COUNT:CAPS">GSF_META_NAME_HIDDEN_SLIDE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-MM-CLIP-COUNT:CAPS">GSF_META_NAME_MM_CLIP_COUNT</link>
+#define     <link linkend="GSF-META-NAME-BYTE-COUNT:CAPS">GSF_META_NAME_BYTE_COUNT</link>
+#define     <link linkend="GSF-META-NAME-SCALE:CAPS">GSF_META_NAME_SCALE</link>
+#define     <link linkend="GSF-META-NAME-HEADING-PAIRS:CAPS">GSF_META_NAME_HEADING_PAIRS</link>
+#define     <link linkend="GSF-META-NAME-DOCUMENT-PARTS:CAPS">GSF_META_NAME_DOCUMENT_PARTS</link>
+#define     <link linkend="GSF-META-NAME-MANAGER:CAPS">GSF_META_NAME_MANAGER</link>
+#define     <link linkend="GSF-META-NAME-COMPANY:CAPS">GSF_META_NAME_COMPANY</link>
+#define     <link linkend="GSF-META-NAME-LINKS-DIRTY:CAPS">GSF_META_NAME_LINKS_DIRTY</link>
+#define     <link linkend="GSF-META-NAME-DICTIONARY:CAPS">GSF_META_NAME_DICTIONARY</link>
+#define     <link linkend="GSF-META-NAME-MSOLE-UNKNOWN-17:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_17</link>
+#define     <link linkend="GSF-META-NAME-MSOLE-UNKNOWN-18:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_18</link>
+#define     <link linkend="GSF-META-NAME-MSOLE-UNKNOWN-19:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_19</link>
+#define     <link linkend="GSF-META-NAME-MSOLE-UNKNOWN-20:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_20</link>
+#define     <link linkend="GSF-META-NAME-MSOLE-UNKNOWN-21:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_21</link>
+#define     <link linkend="GSF-META-NAME-MSOLE-UNKNOWN-22:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_22</link>
+#define     <link linkend="GSF-META-NAME-MSOLE-UNKNOWN-23:CAPS">GSF_META_NAME_MSOLE_UNKNOWN_23</link>
+#define     <link linkend="GSF-META-NAME-LOCALE-SYSTEM-DEFAULT:CAPS">GSF_META_NAME_LOCALE_SYSTEM_DEFAULT</link>
+#define     <link linkend="GSF-META-NAME-CASE-SENSITIVE:CAPS">GSF_META_NAME_CASE_SENSITIVE</link>
+
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfDocMetaData"/>GsfDocMetaData</title>
+<indexterm><primary>GsfDocMetaData</primary></indexterm><programlisting>typedef struct _GsfDocMetaData GsfDocMetaData;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-new"/>gsf_doc_meta_data_new ()</title>
+<indexterm><primary>gsf_doc_meta_data_new</primary></indexterm><programlisting><link linkend="GsfDocMetaData">GsfDocMetaData</link>* gsf_doc_meta_data_new       (void);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new metadata property collection
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-lookup"/>gsf_doc_meta_data_lookup ()</title>
+<indexterm><primary>gsf_doc_meta_data_lookup</primary></indexterm><programlisting><link linkend="GsfDocProp">GsfDocProp</link>* gsf_doc_meta_data_lookup        (<link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta,
+                                             <link linkend="char">char</link> const *name);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>meta</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the property with name <parameter>id</parameter> in <parameter>meta</parameter>.  The caller can modify the
+property value and link but not the name.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-insert"/>gsf_doc_meta_data_insert ()</title>
+<indexterm><primary>gsf_doc_meta_data_insert</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_doc_meta_data_insert        (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="char">char</link> *name,
+                                             <link linkend="GValue">GValue</link> *value);</programlisting>
+<para>
+Take ownership of <parameter>name</parameter> and <parameter>value</parameter> and insert a property into <parameter>meta</parameter>.
+If a property exists with <parameter>name</parameter>, it is replaced (The link is lost)</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>meta</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GValue"><type>GValue</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-remove"/>gsf_doc_meta_data_remove ()</title>
+<indexterm><primary>gsf_doc_meta_data_remove</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_doc_meta_data_remove        (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="char">char</link> const *name);</programlisting>
+<para>
+If <parameter>name</parameter> does not exist in the collection, do nothing. If <parameter>name</parameter> does exist,
+remove it and its value from the collection</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>meta</parameter>&nbsp;:</term>
+<listitem><simpara> the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara> the non-null string name of the property
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-steal"/>gsf_doc_meta_data_steal ()</title>
+<indexterm><primary>gsf_doc_meta_data_steal</primary></indexterm><programlisting><link linkend="GsfDocProp">GsfDocProp</link>* gsf_doc_meta_data_steal         (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="char">char</link> const *name);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>meta</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-store"/>gsf_doc_meta_data_store ()</title>
+<indexterm><primary>gsf_doc_meta_data_store</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_doc_meta_data_store         (<link linkend="GsfDocMetaData">GsfDocMetaData</link> *meta,
+                                             <link linkend="GsfDocProp">GsfDocProp</link> *prop);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>meta</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-foreach"/>gsf_doc_meta_data_foreach ()</title>
+<indexterm><primary>gsf_doc_meta_data_foreach</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_doc_meta_data_foreach       (<link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta,
+                                             <link linkend="GHFunc">GHFunc</link> func,
+                                             <link linkend="gpointer">gpointer</link> user_data);</programlisting>
+<para>
+Iterate through each (key, value) pair in this collection</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>meta</parameter>&nbsp;:</term>
+<listitem><simpara> the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>func</parameter>&nbsp;:</term>
+<listitem><simpara> the function called once for each element in the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter>&nbsp;:</term>
+<listitem><simpara> any supplied user data or NULL
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-meta-data-size"/>gsf_doc_meta_data_size ()</title>
+<indexterm><primary>gsf_doc_meta_data_size</primary></indexterm><programlisting><link linkend="gsize">gsize</link>       gsf_doc_meta_data_size          (<link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>meta</parameter>&nbsp;:</term>
+<listitem><simpara> the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the number of items in this collection
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfDocProp"/>GsfDocProp</title>
+<indexterm><primary>GsfDocProp</primary></indexterm><programlisting>typedef struct _GsfDocProp GsfDocProp;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-new"/>gsf_doc_prop_new ()</title>
+<indexterm><primary>gsf_doc_prop_new</primary></indexterm><programlisting><link linkend="GsfDocProp">GsfDocProp</link>* gsf_doc_prop_new                (<link linkend="char">char</link> *name);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new <link linkend="GsfDocProp"><type>GsfDocProp</type></link> which the caller is responsible for freeing.
+Takes ownership of <parameter>name</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-free"/>gsf_doc_prop_free ()</title>
+<indexterm><primary>gsf_doc_prop_free</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_doc_prop_free               (<link linkend="GsfDocProp">GsfDocProp</link> *prop);</programlisting>
+<para>
+If <parameter>prop</parameter> is non NULL free the memory assosociated with it</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-get-name"/>gsf_doc_prop_get_name ()</title>
+<indexterm><primary>gsf_doc_prop_get_name</primary></indexterm><programlisting><link linkend="char">char</link>const   * gsf_doc_prop_get_name         (<link linkend="GsfDocProp">GsfDocProp</link> const *prop);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the name of the property, the caller should not modify the result.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-get-val"/>gsf_doc_prop_get_val ()</title>
+<indexterm><primary>gsf_doc_prop_get_val</primary></indexterm><programlisting><link linkend="GValue">GValue</link>const * gsf_doc_prop_get_val          (<link linkend="GsfDocProp">GsfDocProp</link> const *prop);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> the property
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the value of the property, the caller should not modify the result.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-set-val"/>gsf_doc_prop_set_val ()</title>
+<indexterm><primary>gsf_doc_prop_set_val</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_doc_prop_set_val            (<link linkend="GsfDocProp">GsfDocProp</link> *prop,
+                                             <link linkend="GValue">GValue</link> *val);</programlisting>
+<para>
+Assigns <parameter>val</parameter> to <parameter>prop</parameter>, and unsets and frees the current value.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GValue"><type>GValue</type></link>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-get-link"/>gsf_doc_prop_get_link ()</title>
+<indexterm><primary>gsf_doc_prop_get_link</primary></indexterm><programlisting><link linkend="char">char</link>const   * gsf_doc_prop_get_link         (<link linkend="GsfDocProp">GsfDocProp</link> const *prop);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the current link descriptor of <parameter>prop</parameter>.  The result should not be
+	freed or modified.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-set-link"/>gsf_doc_prop_set_link ()</title>
+<indexterm><primary>gsf_doc_prop_set_link</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_doc_prop_set_link           (<link linkend="GsfDocProp">GsfDocProp</link> *prop,
+                                             <link linkend="char">char</link> *link);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>link</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfDocPropVector"/>GsfDocPropVector</title>
+<indexterm><primary>GsfDocPropVector</primary></indexterm><programlisting>typedef struct _GsfDocPropVector GsfDocPropVector;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-docprop-vector-new"/>gsf_docprop_vector_new ()</title>
+<indexterm><primary>gsf_docprop_vector_new</primary></indexterm><programlisting><link linkend="GsfDocPropVector">GsfDocPropVector</link>* gsf_docprop_vector_new    (void);</programlisting>
+<para>
+This function creates a new gsf_docprop_vector object.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> GsfDocPropVector*
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-docprop-vector-append"/>gsf_docprop_vector_append ()</title>
+<indexterm><primary>gsf_docprop_vector_append</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_docprop_vector_append       (<link linkend="GsfDocPropVector">GsfDocPropVector</link> *vector,
+                                             <link linkend="GValue">GValue</link> *value);</programlisting>
+<para>
+Insert a copy of <parameter>value</parameter> as the last element of <parameter>vector</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>vector</parameter>&nbsp;:</term>
+<listitem><simpara> The vector to which the GValue will be added
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
+<listitem><simpara>  The GValue to add to <parameter>vector</parameter>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-docprop-vector-as-string"/>gsf_docprop_vector_as_string ()</title>
+<indexterm><primary>gsf_docprop_vector_as_string</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      gsf_docprop_vector_as_string    (<link linkend="GsfDocPropVector">GsfDocPropVector</link> *vector);</programlisting>
+<para>
+This function returns a string which represents all the GValues in <parameter>vector</parameter>.
+The caller is responsible for freeing the result.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>vector</parameter>&nbsp;:</term>
+<listitem><simpara> The <link linkend="GsfDocPropVector"><type>GsfDocPropVector</type></link> from which GValues will be extracted.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> a string of comma-separated values
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-value-get-docprop-varray"/>gsf_value_get_docprop_varray ()</title>
+<indexterm><primary>gsf_value_get_docprop_varray</primary></indexterm><programlisting><link linkend="GValueArray">GValueArray</link>* gsf_value_get_docprop_varray   (<link linkend="GValue">GValue</link> const *value);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-value-get-docprop-vector"/>gsf_value_get_docprop_vector ()</title>
+<indexterm><primary>gsf_value_get_docprop_vector</primary></indexterm><programlisting><link linkend="GsfDocPropVector">GsfDocPropVector</link>* gsf_value_get_docprop_vector
+                                            (<link linkend="GValue">GValue</link> const *value);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-TITLE:CAPS"/>GSF_META_NAME_TITLE</title>
+<indexterm><primary>GSF_META_NAME_TITLE</primary></indexterm><programlisting>#define GSF_META_NAME_TITLE                 "dc:title"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-DESCRIPTION:CAPS"/>GSF_META_NAME_DESCRIPTION</title>
+<indexterm><primary>GSF_META_NAME_DESCRIPTION</primary></indexterm><programlisting>#define GSF_META_NAME_DESCRIPTION           "dc:description"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-SUBJECT:CAPS"/>GSF_META_NAME_SUBJECT</title>
+<indexterm><primary>GSF_META_NAME_SUBJECT</primary></indexterm><programlisting>#define GSF_META_NAME_SUBJECT               "dc:subject"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-DATE-MODIFIED:CAPS"/>GSF_META_NAME_DATE_MODIFIED</title>
+<indexterm><primary>GSF_META_NAME_DATE_MODIFIED</primary></indexterm><programlisting>#define GSF_META_NAME_DATE_MODIFIED         "dc:date-modified"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-DATE-CREATED:CAPS"/>GSF_META_NAME_DATE_CREATED</title>
+<indexterm><primary>GSF_META_NAME_DATE_CREATED</primary></indexterm><programlisting>#define GSF_META_NAME_DATE_CREATED          "gsf:date-created"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-KEYWORDS:CAPS"/>GSF_META_NAME_KEYWORDS</title>
+<indexterm><primary>GSF_META_NAME_KEYWORDS</primary></indexterm><programlisting>#define GSF_META_NAME_KEYWORDS              "dc:keywords"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-LANGUAGE:CAPS"/>GSF_META_NAME_LANGUAGE</title>
+<indexterm><primary>GSF_META_NAME_LANGUAGE</primary></indexterm><programlisting>#define GSF_META_NAME_LANGUAGE              "dc:language"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-REVISION-COUNT:CAPS"/>GSF_META_NAME_REVISION_COUNT</title>
+<indexterm><primary>GSF_META_NAME_REVISION_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_REVISION_COUNT        "gsf:revision-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-EDITING-DURATION:CAPS"/>GSF_META_NAME_EDITING_DURATION</title>
+<indexterm><primary>GSF_META_NAME_EDITING_DURATION</primary></indexterm><programlisting>#define GSF_META_NAME_EDITING_DURATION      "gsf:editing-duration"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-TABLE-COUNT:CAPS"/>GSF_META_NAME_TABLE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_TABLE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_TABLE_COUNT           "gsf:table-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-IMAGE-COUNT:CAPS"/>GSF_META_NAME_IMAGE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_IMAGE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_IMAGE_COUNT           "gsf:image-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-OBJECT-COUNT:CAPS"/>GSF_META_NAME_OBJECT_COUNT</title>
+<indexterm><primary>GSF_META_NAME_OBJECT_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_OBJECT_COUNT          "gsf:object-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-PAGE-COUNT:CAPS"/>GSF_META_NAME_PAGE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_PAGE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_PAGE_COUNT            "gsf:page-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-PARAGRAPH-COUNT:CAPS"/>GSF_META_NAME_PARAGRAPH_COUNT</title>
+<indexterm><primary>GSF_META_NAME_PARAGRAPH_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_PARAGRAPH_COUNT       "gsf:paragraph-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-WORD-COUNT:CAPS"/>GSF_META_NAME_WORD_COUNT</title>
+<indexterm><primary>GSF_META_NAME_WORD_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_WORD_COUNT            "gsf:word-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-CHARACTER-COUNT:CAPS"/>GSF_META_NAME_CHARACTER_COUNT</title>
+<indexterm><primary>GSF_META_NAME_CHARACTER_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_CHARACTER_COUNT       "gsf:character-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-CELL-COUNT:CAPS"/>GSF_META_NAME_CELL_COUNT</title>
+<indexterm><primary>GSF_META_NAME_CELL_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_CELL_COUNT            "gsf:cell-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-SPREADSHEET-COUNT:CAPS"/>GSF_META_NAME_SPREADSHEET_COUNT</title>
+<indexterm><primary>GSF_META_NAME_SPREADSHEET_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_SPREADSHEET_COUNT     "gsf:spreadsheet-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-CREATOR:CAPS"/>GSF_META_NAME_CREATOR</title>
+<indexterm><primary>GSF_META_NAME_CREATOR</primary></indexterm><programlisting>#define GSF_META_NAME_CREATOR               "gsf:creator"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-TEMPLATE:CAPS"/>GSF_META_NAME_TEMPLATE</title>
+<indexterm><primary>GSF_META_NAME_TEMPLATE</primary></indexterm><programlisting>#define GSF_META_NAME_TEMPLATE              "gsf:template"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-LAST-SAVED-BY:CAPS"/>GSF_META_NAME_LAST_SAVED_BY</title>
+<indexterm><primary>GSF_META_NAME_LAST_SAVED_BY</primary></indexterm><programlisting>#define GSF_META_NAME_LAST_SAVED_BY         "gsf:last-saved-by"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-LAST-PRINTED:CAPS"/>GSF_META_NAME_LAST_PRINTED</title>
+<indexterm><primary>GSF_META_NAME_LAST_PRINTED</primary></indexterm><programlisting>#define GSF_META_NAME_LAST_PRINTED          "gsf:last-printed"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-SECURITY:CAPS"/>GSF_META_NAME_SECURITY</title>
+<indexterm><primary>GSF_META_NAME_SECURITY</primary></indexterm><programlisting>#define GSF_META_NAME_SECURITY              "gsf:security"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-CATEGORY:CAPS"/>GSF_META_NAME_CATEGORY</title>
+<indexterm><primary>GSF_META_NAME_CATEGORY</primary></indexterm><programlisting>#define GSF_META_NAME_CATEGORY              "gsf:category"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-PRESENTATION-FORMAT:CAPS"/>GSF_META_NAME_PRESENTATION_FORMAT</title>
+<indexterm><primary>GSF_META_NAME_PRESENTATION_FORMAT</primary></indexterm><programlisting>#define GSF_META_NAME_PRESENTATION_FORMAT   "gsf:presentation-format"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-THUMBNAIL:CAPS"/>GSF_META_NAME_THUMBNAIL</title>
+<indexterm><primary>GSF_META_NAME_THUMBNAIL</primary></indexterm><programlisting>#define GSF_META_NAME_THUMBNAIL             "gsf:thumbnail"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-GENERATOR:CAPS"/>GSF_META_NAME_GENERATOR</title>
+<indexterm><primary>GSF_META_NAME_GENERATOR</primary></indexterm><programlisting>#define GSF_META_NAME_GENERATOR             "gsf:generator"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-LINE-COUNT:CAPS"/>GSF_META_NAME_LINE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_LINE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_LINE_COUNT            "gsf:line-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-SLIDE-COUNT:CAPS"/>GSF_META_NAME_SLIDE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_SLIDE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_SLIDE_COUNT           "gsf:slide-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-NOTE-COUNT:CAPS"/>GSF_META_NAME_NOTE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_NOTE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_NOTE_COUNT            "gsf:note-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-HIDDEN-SLIDE-COUNT:CAPS"/>GSF_META_NAME_HIDDEN_SLIDE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_HIDDEN_SLIDE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_HIDDEN_SLIDE_COUNT    "gsf:hidden-slide-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MM-CLIP-COUNT:CAPS"/>GSF_META_NAME_MM_CLIP_COUNT</title>
+<indexterm><primary>GSF_META_NAME_MM_CLIP_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_MM_CLIP_COUNT         "gsf:MM-clip-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-BYTE-COUNT:CAPS"/>GSF_META_NAME_BYTE_COUNT</title>
+<indexterm><primary>GSF_META_NAME_BYTE_COUNT</primary></indexterm><programlisting>#define GSF_META_NAME_BYTE_COUNT            "gsf:byte-count"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-SCALE:CAPS"/>GSF_META_NAME_SCALE</title>
+<indexterm><primary>GSF_META_NAME_SCALE</primary></indexterm><programlisting>#define GSF_META_NAME_SCALE                 "gsf:scale"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-HEADING-PAIRS:CAPS"/>GSF_META_NAME_HEADING_PAIRS</title>
+<indexterm><primary>GSF_META_NAME_HEADING_PAIRS</primary></indexterm><programlisting>#define GSF_META_NAME_HEADING_PAIRS         "gsf:heading-pairs"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-DOCUMENT-PARTS:CAPS"/>GSF_META_NAME_DOCUMENT_PARTS</title>
+<indexterm><primary>GSF_META_NAME_DOCUMENT_PARTS</primary></indexterm><programlisting>#define GSF_META_NAME_DOCUMENT_PARTS        "gsf:document-parts"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MANAGER:CAPS"/>GSF_META_NAME_MANAGER</title>
+<indexterm><primary>GSF_META_NAME_MANAGER</primary></indexterm><programlisting>#define GSF_META_NAME_MANAGER               "gsf:manager"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-COMPANY:CAPS"/>GSF_META_NAME_COMPANY</title>
+<indexterm><primary>GSF_META_NAME_COMPANY</primary></indexterm><programlisting>#define GSF_META_NAME_COMPANY               "gsf:company"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-LINKS-DIRTY:CAPS"/>GSF_META_NAME_LINKS_DIRTY</title>
+<indexterm><primary>GSF_META_NAME_LINKS_DIRTY</primary></indexterm><programlisting>#define GSF_META_NAME_LINKS_DIRTY           "gsf:links-dirty"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-DICTIONARY:CAPS"/>GSF_META_NAME_DICTIONARY</title>
+<indexterm><primary>GSF_META_NAME_DICTIONARY</primary></indexterm><programlisting>#define GSF_META_NAME_DICTIONARY            "gsf:dictionary"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MSOLE-UNKNOWN-17:CAPS"/>GSF_META_NAME_MSOLE_UNKNOWN_17</title>
+<indexterm><primary>GSF_META_NAME_MSOLE_UNKNOWN_17</primary></indexterm><programlisting>#define GSF_META_NAME_MSOLE_UNKNOWN_17		"msole:unknown-doc-17"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MSOLE-UNKNOWN-18:CAPS"/>GSF_META_NAME_MSOLE_UNKNOWN_18</title>
+<indexterm><primary>GSF_META_NAME_MSOLE_UNKNOWN_18</primary></indexterm><programlisting>#define GSF_META_NAME_MSOLE_UNKNOWN_18		"msole:unknown-doc-18"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MSOLE-UNKNOWN-19:CAPS"/>GSF_META_NAME_MSOLE_UNKNOWN_19</title>
+<indexterm><primary>GSF_META_NAME_MSOLE_UNKNOWN_19</primary></indexterm><programlisting>#define GSF_META_NAME_MSOLE_UNKNOWN_19		"msole:unknown-doc-19"	/* bool */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MSOLE-UNKNOWN-20:CAPS"/>GSF_META_NAME_MSOLE_UNKNOWN_20</title>
+<indexterm><primary>GSF_META_NAME_MSOLE_UNKNOWN_20</primary></indexterm><programlisting>#define GSF_META_NAME_MSOLE_UNKNOWN_20		"msole:unknown-doc-20"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MSOLE-UNKNOWN-21:CAPS"/>GSF_META_NAME_MSOLE_UNKNOWN_21</title>
+<indexterm><primary>GSF_META_NAME_MSOLE_UNKNOWN_21</primary></indexterm><programlisting>#define GSF_META_NAME_MSOLE_UNKNOWN_21		"msole:unknown-doc-21"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MSOLE-UNKNOWN-22:CAPS"/>GSF_META_NAME_MSOLE_UNKNOWN_22</title>
+<indexterm><primary>GSF_META_NAME_MSOLE_UNKNOWN_22</primary></indexterm><programlisting>#define GSF_META_NAME_MSOLE_UNKNOWN_22		"msole:unknown-doc-22"	/* bool */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-MSOLE-UNKNOWN-23:CAPS"/>GSF_META_NAME_MSOLE_UNKNOWN_23</title>
+<indexterm><primary>GSF_META_NAME_MSOLE_UNKNOWN_23</primary></indexterm><programlisting>#define GSF_META_NAME_MSOLE_UNKNOWN_23		"msole:unknown-doc-23"	/* i4 */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-LOCALE-SYSTEM-DEFAULT:CAPS"/>GSF_META_NAME_LOCALE_SYSTEM_DEFAULT</title>
+<indexterm><primary>GSF_META_NAME_LOCALE_SYSTEM_DEFAULT</primary></indexterm><programlisting>#define GSF_META_NAME_LOCALE_SYSTEM_DEFAULT	"gsf:default-locale"
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-META-NAME-CASE-SENSITIVE:CAPS"/>GSF_META_NAME_CASE_SENSITIVE</title>
+<indexterm><primary>GSF_META_NAME_CASE_SENSITIVE</primary></indexterm><programlisting>#define GSF_META_NAME_CASE_SENSITIVE        "gsf:case-sensitivity"
+</programlisting>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/msole.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/msole.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/msole.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,815 @@
+<refentry id="gsf-MS-OLE2">
+<refmeta>
+<refentrytitle>MS OLE2</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>MS OLE2</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInfileMSOle"/><anchor id="GsfOutfileMSOle"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInfileMSOle-struct">GsfInfileMSOle</link>;
+<link linkend="GsfInfile">GsfInfile</link>*  <link linkend="gsf-infile-msole-new">gsf_infile_msole_new</link>            (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-infile-msole-get-class-id">gsf_infile_msole_get_class_id</link>   (<link linkend="GsfInfileMSOle">GsfInfileMSOle</link> const *ole,
+                                             <link linkend="guint8">guint8</link> *res);
+            <link linkend="GsfOutfileMSOle-struct">GsfOutfileMSOle</link>;
+<link linkend="GsfOutfile">GsfOutfile</link>* <link linkend="gsf-outfile-msole-new">gsf_outfile_msole_new</link>           (<link linkend="GsfOutput">GsfOutput</link> *sink);
+<link linkend="GsfOutfile">GsfOutfile</link>* <link linkend="gsf-outfile-msole-new-full">gsf_outfile_msole_new_full</link>      (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="guint">guint</link> bb_size,
+                                             <link linkend="guint">guint</link> sb_size);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-outfile-msole-set-class-id">gsf_outfile_msole_set_class_id</link>  (<link linkend="GsfOutfileMSOle">GsfOutfileMSOle</link> *ole,
+                                             <link linkend="guint8">guint8</link> const *clsid);
+<link linkend="GError">GError</link>*     <link linkend="gsf-msole-metadata-read">gsf_msole_metadata_read</link>         (<link linkend="GsfInput">GsfInput</link> *in,
+                                             <link linkend="GsfDocMetaData">GsfDocMetaData</link> *accum);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-msole-metadata-write">gsf_msole_metadata_write</link>        (<link linkend="GsfOutput">GsfOutput</link> *out,
+                                             <link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta_data,
+                                             <link linkend="gboolean">gboolean</link> doc_not_component);
+<link linkend="GIConv">GIConv</link>      <link linkend="gsf-msole-iconv-open-codepages-for-export">gsf_msole_iconv_open_codepages_for_export</link>
+                                            (<link linkend="int">int</link> codepage_to,
+                                             <link linkend="char">char</link> const *from);
+<link linkend="GIConv">GIConv</link>      <link linkend="gsf-msole-iconv-open-codepage-for-import">gsf_msole_iconv_open_codepage_for_import</link>
+                                            (<link linkend="char">char</link> const *to,
+                                             <link linkend="int">int</link> codepage);
+<link linkend="GIConv">GIConv</link>      <link linkend="gsf-msole-iconv-open-for-export">gsf_msole_iconv_open_for_export</link> (void);
+<link linkend="GIConv">GIConv</link>      <link linkend="gsf-msole-iconv-open-codepage-for-export">gsf_msole_iconv_open_codepage_for_export</link>
+                                            (<link linkend="int">int</link> codepage_to);
+<link linkend="GIConv">GIConv</link>      <link linkend="gsf-msole-iconv-open-for-import">gsf_msole_iconv_open_for_import</link> (<link linkend="int">int</link> codepage);
+<link linkend="int">int</link>         <link linkend="gsf-msole-iconv-win-codepage">gsf_msole_iconv_win_codepage</link>    (void);
+<link linkend="guint">guint</link>       <link linkend="gsf-msole-codepage-to-lid">gsf_msole_codepage_to_lid</link>       (<link linkend="int">int</link> codepage);
+<link linkend="int">int</link>         <link linkend="gsf-msole-lid-to-codepage">gsf_msole_lid_to_codepage</link>       (<link linkend="guint">guint</link> lid);
+<link linkend="gchar">gchar</link>*      <link linkend="gsf-msole-lid-to-codepage-str">gsf_msole_lid_to_codepage_str</link>   (<link linkend="guint">guint</link> lid);
+<link linkend="guint">guint</link>       <link linkend="gsf-msole-lid-for-language">gsf_msole_lid_for_language</link>      (<link linkend="char">char</link> const *lang);
+<link linkend="char">char</link>const * <link linkend="gsf-msole-language-for-lid">gsf_msole_language_for_lid</link>      (<link linkend="guint">guint</link> lid);
+<link linkend="GByteArray">GByteArray</link>* <link linkend="gsf-msole-inflate">gsf_msole_inflate</link>               (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset);
+
+
+#define     <link linkend="OLE-HEADER-START-BAT:CAPS">OLE_HEADER_START_BAT</link>
+#define     <link linkend="OLE-HEADER-MAJOR-VER:CAPS">OLE_HEADER_MAJOR_VER</link>
+#define     <link linkend="OLE-HEADER-METABAT-SIZE:CAPS">OLE_HEADER_METABAT_SIZE</link>
+#define     <link linkend="OLE-HEADER-DIRENT-START:CAPS">OLE_HEADER_DIRENT_START</link>
+#define     <link linkend="OLE-HEADER-NUM-SBAT:CAPS">OLE_HEADER_NUM_SBAT</link>
+#define     <link linkend="OLE-HEADER-BB-SHIFT:CAPS">OLE_HEADER_BB_SHIFT</link>
+#define     <link linkend="OLE-HEADER-CSECTDIR:CAPS">OLE_HEADER_CSECTDIR</link>
+#define     <link linkend="OLE-HEADER-NUM-BAT:CAPS">OLE_HEADER_NUM_BAT</link>
+#define     <link linkend="OLE-HEADER-THRESHOLD:CAPS">OLE_HEADER_THRESHOLD</link>
+#define     <link linkend="OLE-HEADER-METABAT-BLOCK:CAPS">OLE_HEADER_METABAT_BLOCK</link>
+#define     <link linkend="OLE-HEADER-SBAT-START:CAPS">OLE_HEADER_SBAT_START</link>
+#define     <link linkend="OLE-HEADER-SIGNATURE:CAPS">OLE_HEADER_SIGNATURE</link>
+#define     <link linkend="OLE-HEADER-BYTE-ORDER:CAPS">OLE_HEADER_BYTE_ORDER</link>
+#define     <link linkend="OLE-HEADER-SB-SHIFT:CAPS">OLE_HEADER_SB_SHIFT</link>
+#define     <link linkend="OLE-HEADER-NUM-METABAT:CAPS">OLE_HEADER_NUM_METABAT</link>
+#define     <link linkend="OLE-HEADER-SIZE:CAPS">OLE_HEADER_SIZE</link>
+#define     <link linkend="OLE-HEADER-CLSID:CAPS">OLE_HEADER_CLSID</link>
+#define     <link linkend="OLE-HEADER-MINOR-VER:CAPS">OLE_HEADER_MINOR_VER</link>
+#define     <link linkend="OLE-DEFAULT-BB-SHIFT:CAPS">OLE_DEFAULT_BB_SHIFT</link>
+#define     <link linkend="OLE-DEFAULT-SB-SHIFT:CAPS">OLE_DEFAULT_SB_SHIFT</link>
+#define     <link linkend="DIRENT-DETAILS-SIZE:CAPS">DIRENT_DETAILS_SIZE</link>
+#define     <link linkend="DIRENT-SIZE:CAPS">DIRENT_SIZE</link>
+#define     <link linkend="DIRENT-NAME-LEN:CAPS">DIRENT_NAME_LEN</link>
+#define     <link linkend="DIRENT-TYPE-PROPERTY:CAPS">DIRENT_TYPE_PROPERTY</link>
+#define     <link linkend="DIRENT-TYPE-FILE:CAPS">DIRENT_TYPE_FILE</link>
+#define     <link linkend="DIRENT-MAGIC-END:CAPS">DIRENT_MAGIC_END</link>
+#define     <link linkend="DIRENT-TYPE-DIR:CAPS">DIRENT_TYPE_DIR</link>
+#define     <link linkend="DIRENT-MAX-NAME-SIZE:CAPS">DIRENT_MAX_NAME_SIZE</link>
+#define     <link linkend="DIRENT-FILE-SIZE:CAPS">DIRENT_FILE_SIZE</link>
+#define     <link linkend="DIRENT-FIRSTBLOCK:CAPS">DIRENT_FIRSTBLOCK</link>
+#define     <link linkend="DIRENT-TYPE-INVALID:CAPS">DIRENT_TYPE_INVALID</link>
+#define     <link linkend="DIRENT-USERFLAGS:CAPS">DIRENT_USERFLAGS</link>
+#define     <link linkend="DIRENT-COLOUR:CAPS">DIRENT_COLOUR</link>
+#define     <link linkend="DIRENT-MODIFY-TIME:CAPS">DIRENT_MODIFY_TIME</link>
+#define     <link linkend="DIRENT-TYPE-LOCKBYTES:CAPS">DIRENT_TYPE_LOCKBYTES</link>
+#define     <link linkend="DIRENT-CREATE-TIME:CAPS">DIRENT_CREATE_TIME</link>
+#define     <link linkend="DIRENT-PREV:CAPS">DIRENT_PREV</link>
+#define     <link linkend="DIRENT-NEXT:CAPS">DIRENT_NEXT</link>
+#define     <link linkend="DIRENT-CHILD:CAPS">DIRENT_CHILD</link>
+#define     <link linkend="DIRENT-TYPE:CAPS">DIRENT_TYPE</link>
+#define     <link linkend="DIRENT-CLSID:CAPS">DIRENT_CLSID</link>
+#define     <link linkend="DIRENT-TYPE-ROOTDIR:CAPS">DIRENT_TYPE_ROOTDIR</link>
+#define     <link linkend="BAT-MAGIC-METABAT:CAPS">BAT_MAGIC_METABAT</link>
+#define     <link linkend="BAT-MAGIC-BAT:CAPS">BAT_MAGIC_BAT</link>
+#define     <link linkend="BAT-INDEX-SIZE:CAPS">BAT_INDEX_SIZE</link>
+#define     <link linkend="BAT-MAGIC-END-OF-CHAIN:CAPS">BAT_MAGIC_END_OF_CHAIN</link>
+#define     <link linkend="BAT-MAGIC-UNUSED:CAPS">BAT_MAGIC_UNUSED</link>
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----<link linkend="GsfInfile">GsfInfile</link>
+               +----GsfInfileMSOle
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----<link linkend="GsfOutfile">GsfOutfile</link>
+               +----GsfOutfileMSOle
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInfileMSOle-struct"/>GsfInfileMSOle</title>
+<indexterm><primary>GsfInfileMSOle</primary></indexterm><programlisting>typedef struct _GsfInfileMSOle GsfInfileMSOle;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-msole-new"/>gsf_infile_msole_new ()</title>
+<indexterm><primary>gsf_infile_msole_new</primary></indexterm><programlisting><link linkend="GsfInfile">GsfInfile</link>*  gsf_infile_msole_new            (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+Opens the root directory of an MS OLE file.
+NOTE : adds a reference to <parameter>source</parameter></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: the new ole file handler
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-msole-get-class-id"/>gsf_infile_msole_get_class_id ()</title>
+<indexterm><primary>gsf_infile_msole_get_class_id</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_infile_msole_get_class_id   (<link linkend="GsfInfileMSOle">GsfInfileMSOle</link> const *ole,
+                                             <link linkend="guint8">guint8</link> *res);</programlisting>
+<para>
+Retrieves the 16 byte indentifier (often a GUID in MS Windows apps)
+stored within the directory associated with <parameter>ole</parameter> and stores it in <parameter>res</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>ole</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GsfInfileMSOle"><type>GsfInfileMSOle</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>res</parameter>&nbsp;:</term>
+<listitem><simpara> 16 byte identifier (often a GUID in MS Windows apps)
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE on success
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutfileMSOle-struct"/>GsfOutfileMSOle</title>
+<indexterm><primary>GsfOutfileMSOle</primary></indexterm><programlisting>typedef struct _GsfOutfileMSOle GsfOutfileMSOle;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-msole-new"/>gsf_outfile_msole_new ()</title>
+<indexterm><primary>gsf_outfile_msole_new</primary></indexterm><programlisting><link linkend="GsfOutfile">GsfOutfile</link>* gsf_outfile_msole_new           (<link linkend="GsfOutput">GsfOutput</link> *sink);</programlisting>
+<para>
+Creates the root directory of an MS OLE file and manages the addition of
+children.
+</para>
+<para>
+NOTE : adds a reference to <parameter>sink</parameter></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>sink</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GsfOutput"><type>GsfOutput</type></link> to hold the OLE2 file
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the new ole file handler
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-msole-new-full"/>gsf_outfile_msole_new_full ()</title>
+<indexterm><primary>gsf_outfile_msole_new_full</primary></indexterm><programlisting><link linkend="GsfOutfile">GsfOutfile</link>* gsf_outfile_msole_new_full      (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="guint">guint</link> bb_size,
+                                             <link linkend="guint">guint</link> sb_size);</programlisting>
+<para>
+Creates the root directory of an MS OLE file and manages the addition of
+children.
+</para>
+<para>
+NOTE : adds a reference to <parameter>sink</parameter></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>sink</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GsfOutput"><type>GsfOutput</type></link> to hold the OLE2 file.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>bb_size</parameter>&nbsp;:</term>
+<listitem><simpara> size of large blocks.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>sb_size</parameter>&nbsp;:</term>
+<listitem><simpara> size of small blocks.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the new ole file handler
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-msole-set-class-id"/>gsf_outfile_msole_set_class_id ()</title>
+<indexterm><primary>gsf_outfile_msole_set_class_id</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_outfile_msole_set_class_id  (<link linkend="GsfOutfileMSOle">GsfOutfileMSOle</link> *ole,
+                                             <link linkend="guint8">guint8</link> const *clsid);</programlisting>
+<para>
+Write <parameter>clsid</parameter> to the directory associated with <parameter>ole</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>ole</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GsfOutfileMSOle"><type>GsfOutfileMSOle</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>clsid</parameter>&nbsp;:</term>
+<listitem><simpara> 16 byte identifier (often a GUID in MS Windows apps)
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE on success.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-metadata-read"/>gsf_msole_metadata_read ()</title>
+<indexterm><primary>gsf_msole_metadata_read</primary></indexterm><programlisting><link linkend="GError">GError</link>*     gsf_msole_metadata_read         (<link linkend="GsfInput">GsfInput</link> *in,
+                                             <link linkend="GsfDocMetaData">GsfDocMetaData</link> *accum);</programlisting>
+<para>
+Read a stream formated as a set of MS OLE properties from <parameter>in</parameter> and store the
+results in <parameter>accum</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>accum</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>GError which the caller must free on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-metadata-write"/>gsf_msole_metadata_write ()</title>
+<indexterm><primary>gsf_msole_metadata_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_msole_metadata_write        (<link linkend="GsfOutput">GsfOutput</link> *out,
+                                             <link linkend="GsfDocMetaData">GsfDocMetaData</link> const *meta_data,
+                                             <link linkend="gboolean">gboolean</link> doc_not_component);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>out</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>meta_data</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>doc_not_component</parameter>&nbsp;:</term>
+<listitem><simpara> a kludge to differentiate DocumentSummary from Summary
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE on success;
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-iconv-open-codepages-for-export"/>gsf_msole_iconv_open_codepages_for_export ()</title>
+<indexterm><primary>gsf_msole_iconv_open_codepages_for_export</primary></indexterm><programlisting><link linkend="GIConv">GIConv</link>      gsf_msole_iconv_open_codepages_for_export
+                                            (<link linkend="int">int</link> codepage_to,
+                                             <link linkend="char">char</link> const *from);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>codepage_to</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>from</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>an iconv converter to go from utf8 -> to our best guess at a useful
+	windows codepage.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-iconv-open-codepage-for-import"/>gsf_msole_iconv_open_codepage_for_import ()</title>
+<indexterm><primary>gsf_msole_iconv_open_codepage_for_import</primary></indexterm><programlisting><link linkend="GIConv">GIConv</link>      gsf_msole_iconv_open_codepage_for_import
+                                            (<link linkend="char">char</link> const *to,
+                                             <link linkend="int">int</link> codepage);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>to</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>codepage</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>an iconv converter for <parameter>codepage</parameter> -> utf8.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-iconv-open-for-export"/>gsf_msole_iconv_open_for_export ()</title>
+<indexterm><primary>gsf_msole_iconv_open_for_export</primary></indexterm><programlisting><link linkend="GIConv">GIConv</link>      gsf_msole_iconv_open_for_export (void);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>an iconv convert to go from utf8 -> to our best guess at a useful
+	windows codepage.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-iconv-open-codepage-for-export"/>gsf_msole_iconv_open_codepage_for_export ()</title>
+<indexterm><primary>gsf_msole_iconv_open_codepage_for_export</primary></indexterm><programlisting><link linkend="GIConv">GIConv</link>      gsf_msole_iconv_open_codepage_for_export
+                                            (<link linkend="int">int</link> codepage_to);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>codepage_to</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>an iconv converter to go from utf8 -> to our best guess at a useful
+	windows codepage.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-iconv-open-for-import"/>gsf_msole_iconv_open_for_import ()</title>
+<indexterm><primary>gsf_msole_iconv_open_for_import</primary></indexterm><programlisting><link linkend="GIConv">GIConv</link>      gsf_msole_iconv_open_for_import (<link linkend="int">int</link> codepage);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>codepage</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>an iconv converter for single byte encodings <parameter>codepage</parameter> -> utf8.
+	Attempt to handle the semantics of a specification for multibyte encodings
+	since this is only supposed to be used for single bytes.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-iconv-win-codepage"/>gsf_msole_iconv_win_codepage ()</title>
+<indexterm><primary>gsf_msole_iconv_win_codepage</primary></indexterm><programlisting><link linkend="int">int</link>         gsf_msole_iconv_win_codepage    (void);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>our best guess at the applicable windows code page based on an
+	environment variable or the current locale.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-codepage-to-lid"/>gsf_msole_codepage_to_lid ()</title>
+<indexterm><primary>gsf_msole_codepage_to_lid</primary></indexterm><programlisting><link linkend="guint">guint</link>       gsf_msole_codepage_to_lid       (<link linkend="int">int</link> codepage);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>codepage</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-lid-to-codepage"/>gsf_msole_lid_to_codepage ()</title>
+<indexterm><primary>gsf_msole_lid_to_codepage</primary></indexterm><programlisting><link linkend="int">int</link>         gsf_msole_lid_to_codepage       (<link linkend="guint">guint</link> lid);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>lid</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>our best guess at the codepage for the given language id
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-lid-to-codepage-str"/>gsf_msole_lid_to_codepage_str ()</title>
+<indexterm><primary>gsf_msole_lid_to_codepage_str</primary></indexterm><programlisting><link linkend="gchar">gchar</link>*      gsf_msole_lid_to_codepage_str   (<link linkend="guint">guint</link> lid);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>lid</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the Iconv codepage string for the given LID.
+Return value must be <link linkend="g-free"><function>g_free()</function></link>'d
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-lid-for-language"/>gsf_msole_lid_for_language ()</title>
+<indexterm><primary>gsf_msole_lid_for_language</primary></indexterm><programlisting><link linkend="guint">guint</link>       gsf_msole_lid_for_language      (<link linkend="char">char</link> const *lang);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>lang</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the LID (Language Identifier) for the input language.
+If lang is <literal>null</literal>, return 0x0400 ("-none-"), and not 0x0000 ("no proofing")
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-language-for-lid"/>gsf_msole_language_for_lid ()</title>
+<indexterm><primary>gsf_msole_language_for_lid</primary></indexterm><programlisting><link linkend="char">char</link>const * gsf_msole_language_for_lid      (<link linkend="guint">guint</link> lid);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>lid</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the xx_YY style string (can be just xx or xxx) for the given LID.
+Return value must not be freed. If the LID is not found, is set to 0x0400,
+or is set to 0x0000, will return "-none-"
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-msole-inflate"/>gsf_msole_inflate ()</title>
+<indexterm><primary>gsf_msole_inflate</primary></indexterm><programlisting><link linkend="GByteArray">GByteArray</link>* gsf_msole_inflate               (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset);</programlisting>
+<para>
+Decompresses an LZ compressed stream.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> stream to read from
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter>&nbsp;:</term>
+<listitem><simpara> offset into it for start byte of compresse stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A GByteArray that the caller is responsible for freeing
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-START-BAT:CAPS"/>OLE_HEADER_START_BAT</title>
+<indexterm><primary>OLE_HEADER_START_BAT</primary></indexterm><programlisting>#define OLE_HEADER_START_BAT	 0x4c
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-MAJOR-VER:CAPS"/>OLE_HEADER_MAJOR_VER</title>
+<indexterm><primary>OLE_HEADER_MAJOR_VER</primary></indexterm><programlisting>#define OLE_HEADER_MAJOR_VER	 0x1a	/* 0x3 been seen in wild */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-METABAT-SIZE:CAPS"/>OLE_HEADER_METABAT_SIZE</title>
+<indexterm><primary>OLE_HEADER_METABAT_SIZE</primary></indexterm><programlisting>#define OLE_HEADER_METABAT_SIZE	 ((OLE_HEADER_SIZE - OLE_HEADER_START_BAT) / BAT_INDEX_SIZE)
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-DIRENT-START:CAPS"/>OLE_HEADER_DIRENT_START</title>
+<indexterm><primary>OLE_HEADER_DIRENT_START</primary></indexterm><programlisting>#define OLE_HEADER_DIRENT_START  0x30
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-NUM-SBAT:CAPS"/>OLE_HEADER_NUM_SBAT</title>
+<indexterm><primary>OLE_HEADER_NUM_SBAT</primary></indexterm><programlisting>#define OLE_HEADER_NUM_SBAT      0x40
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-BB-SHIFT:CAPS"/>OLE_HEADER_BB_SHIFT</title>
+<indexterm><primary>OLE_HEADER_BB_SHIFT</primary></indexterm><programlisting>#define OLE_HEADER_BB_SHIFT      0x1e
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-CSECTDIR:CAPS"/>OLE_HEADER_CSECTDIR</title>
+<indexterm><primary>OLE_HEADER_CSECTDIR</primary></indexterm><programlisting>#define OLE_HEADER_CSECTDIR	 0x28
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-NUM-BAT:CAPS"/>OLE_HEADER_NUM_BAT</title>
+<indexterm><primary>OLE_HEADER_NUM_BAT</primary></indexterm><programlisting>#define OLE_HEADER_NUM_BAT	 0x2c
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-THRESHOLD:CAPS"/>OLE_HEADER_THRESHOLD</title>
+<indexterm><primary>OLE_HEADER_THRESHOLD</primary></indexterm><programlisting>#define OLE_HEADER_THRESHOLD	 0x38
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-METABAT-BLOCK:CAPS"/>OLE_HEADER_METABAT_BLOCK</title>
+<indexterm><primary>OLE_HEADER_METABAT_BLOCK</primary></indexterm><programlisting>#define OLE_HEADER_METABAT_BLOCK 0x44
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-SBAT-START:CAPS"/>OLE_HEADER_SBAT_START</title>
+<indexterm><primary>OLE_HEADER_SBAT_START</primary></indexterm><programlisting>#define OLE_HEADER_SBAT_START    0x3c
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-SIGNATURE:CAPS"/>OLE_HEADER_SIGNATURE</title>
+<indexterm><primary>OLE_HEADER_SIGNATURE</primary></indexterm><programlisting>#define OLE_HEADER_SIGNATURE	 0x00
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-BYTE-ORDER:CAPS"/>OLE_HEADER_BYTE_ORDER</title>
+<indexterm><primary>OLE_HEADER_BYTE_ORDER</primary></indexterm><programlisting>#define OLE_HEADER_BYTE_ORDER	 0x1c	/* 0xfe 0xff == Intel Little Endian */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-SB-SHIFT:CAPS"/>OLE_HEADER_SB_SHIFT</title>
+<indexterm><primary>OLE_HEADER_SB_SHIFT</primary></indexterm><programlisting>#define OLE_HEADER_SB_SHIFT      0x20
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-NUM-METABAT:CAPS"/>OLE_HEADER_NUM_METABAT</title>
+<indexterm><primary>OLE_HEADER_NUM_METABAT</primary></indexterm><programlisting>#define OLE_HEADER_NUM_METABAT   0x48
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-SIZE:CAPS"/>OLE_HEADER_SIZE</title>
+<indexterm><primary>OLE_HEADER_SIZE</primary></indexterm><programlisting>#define OLE_HEADER_SIZE		 0x200	/* independent of big block size size */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-CLSID:CAPS"/>OLE_HEADER_CLSID</title>
+<indexterm><primary>OLE_HEADER_CLSID</primary></indexterm><programlisting>#define OLE_HEADER_CLSID	 0x08	/* See ReadClassStg */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-HEADER-MINOR-VER:CAPS"/>OLE_HEADER_MINOR_VER</title>
+<indexterm><primary>OLE_HEADER_MINOR_VER</primary></indexterm><programlisting>#define OLE_HEADER_MINOR_VER	 0x18	/* 0x33 and 0x3e have been seen */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-DEFAULT-BB-SHIFT:CAPS"/>OLE_DEFAULT_BB_SHIFT</title>
+<indexterm><primary>OLE_DEFAULT_BB_SHIFT</primary></indexterm><programlisting>#define OLE_DEFAULT_BB_SHIFT	 9
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="OLE-DEFAULT-SB-SHIFT:CAPS"/>OLE_DEFAULT_SB_SHIFT</title>
+<indexterm><primary>OLE_DEFAULT_SB_SHIFT</primary></indexterm><programlisting>#define OLE_DEFAULT_SB_SHIFT	 6
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-DETAILS-SIZE:CAPS"/>DIRENT_DETAILS_SIZE</title>
+<indexterm><primary>DIRENT_DETAILS_SIZE</primary></indexterm><programlisting>#define DIRENT_DETAILS_SIZE	0x40
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-SIZE:CAPS"/>DIRENT_SIZE</title>
+<indexterm><primary>DIRENT_SIZE</primary></indexterm><programlisting>#define DIRENT_SIZE		(DIRENT_MAX_NAME_SIZE + DIRENT_DETAILS_SIZE)
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-NAME-LEN:CAPS"/>DIRENT_NAME_LEN</title>
+<indexterm><primary>DIRENT_NAME_LEN</primary></indexterm><programlisting>#define DIRENT_NAME_LEN		0x40	/* length in bytes incl 0 terminator */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-TYPE-PROPERTY:CAPS"/>DIRENT_TYPE_PROPERTY</title>
+<indexterm><primary>DIRENT_TYPE_PROPERTY</primary></indexterm><programlisting>#define DIRENT_TYPE_PROPERTY	4	/* ? */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-TYPE-FILE:CAPS"/>DIRENT_TYPE_FILE</title>
+<indexterm><primary>DIRENT_TYPE_FILE</primary></indexterm><programlisting>#define DIRENT_TYPE_FILE	2
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-MAGIC-END:CAPS"/>DIRENT_MAGIC_END</title>
+<indexterm><primary>DIRENT_MAGIC_END</primary></indexterm><programlisting>#define DIRENT_MAGIC_END	0xffffffff
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-TYPE-DIR:CAPS"/>DIRENT_TYPE_DIR</title>
+<indexterm><primary>DIRENT_TYPE_DIR</primary></indexterm><programlisting>#define DIRENT_TYPE_DIR		1
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-MAX-NAME-SIZE:CAPS"/>DIRENT_MAX_NAME_SIZE</title>
+<indexterm><primary>DIRENT_MAX_NAME_SIZE</primary></indexterm><programlisting>#define DIRENT_MAX_NAME_SIZE	0x40
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-FILE-SIZE:CAPS"/>DIRENT_FILE_SIZE</title>
+<indexterm><primary>DIRENT_FILE_SIZE</primary></indexterm><programlisting>#define DIRENT_FILE_SIZE	0x78
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-FIRSTBLOCK:CAPS"/>DIRENT_FIRSTBLOCK</title>
+<indexterm><primary>DIRENT_FIRSTBLOCK</primary></indexterm><programlisting>#define DIRENT_FIRSTBLOCK	0x74
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-TYPE-INVALID:CAPS"/>DIRENT_TYPE_INVALID</title>
+<indexterm><primary>DIRENT_TYPE_INVALID</primary></indexterm><programlisting>#define DIRENT_TYPE_INVALID	0
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-USERFLAGS:CAPS"/>DIRENT_USERFLAGS</title>
+<indexterm><primary>DIRENT_USERFLAGS</primary></indexterm><programlisting>#define DIRENT_USERFLAGS	0x60	/* only for dirs */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-COLOUR:CAPS"/>DIRENT_COLOUR</title>
+<indexterm><primary>DIRENT_COLOUR</primary></indexterm><programlisting>#define DIRENT_COLOUR		0x43
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-MODIFY-TIME:CAPS"/>DIRENT_MODIFY_TIME</title>
+<indexterm><primary>DIRENT_MODIFY_TIME</primary></indexterm><programlisting>#define DIRENT_MODIFY_TIME	0x6c	/* for files */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-TYPE-LOCKBYTES:CAPS"/>DIRENT_TYPE_LOCKBYTES</title>
+<indexterm><primary>DIRENT_TYPE_LOCKBYTES</primary></indexterm><programlisting>#define DIRENT_TYPE_LOCKBYTES	3	/* ? */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-CREATE-TIME:CAPS"/>DIRENT_CREATE_TIME</title>
+<indexterm><primary>DIRENT_CREATE_TIME</primary></indexterm><programlisting>#define DIRENT_CREATE_TIME	0x64	/* for files */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-PREV:CAPS"/>DIRENT_PREV</title>
+<indexterm><primary>DIRENT_PREV</primary></indexterm><programlisting>#define DIRENT_PREV		0x44
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-NEXT:CAPS"/>DIRENT_NEXT</title>
+<indexterm><primary>DIRENT_NEXT</primary></indexterm><programlisting>#define DIRENT_NEXT		0x48
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-CHILD:CAPS"/>DIRENT_CHILD</title>
+<indexterm><primary>DIRENT_CHILD</primary></indexterm><programlisting>#define DIRENT_CHILD		0x4c
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-TYPE:CAPS"/>DIRENT_TYPE</title>
+<indexterm><primary>DIRENT_TYPE</primary></indexterm><programlisting>#define DIRENT_TYPE		0x42
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-CLSID:CAPS"/>DIRENT_CLSID</title>
+<indexterm><primary>DIRENT_CLSID</primary></indexterm><programlisting>#define DIRENT_CLSID		0x50	/* only for dirs */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="DIRENT-TYPE-ROOTDIR:CAPS"/>DIRENT_TYPE_ROOTDIR</title>
+<indexterm><primary>DIRENT_TYPE_ROOTDIR</primary></indexterm><programlisting>#define DIRENT_TYPE_ROOTDIR	5
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="BAT-MAGIC-METABAT:CAPS"/>BAT_MAGIC_METABAT</title>
+<indexterm><primary>BAT_MAGIC_METABAT</primary></indexterm><programlisting>#define BAT_MAGIC_METABAT	0xfffffffc	/* a metabat block -4 */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="BAT-MAGIC-BAT:CAPS"/>BAT_MAGIC_BAT</title>
+<indexterm><primary>BAT_MAGIC_BAT</primary></indexterm><programlisting>#define BAT_MAGIC_BAT		0xfffffffd	/* a bat block,    -3 */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="BAT-INDEX-SIZE:CAPS"/>BAT_INDEX_SIZE</title>
+<indexterm><primary>BAT_INDEX_SIZE</primary></indexterm><programlisting>#define BAT_INDEX_SIZE		 4
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="BAT-MAGIC-END-OF-CHAIN:CAPS"/>BAT_MAGIC_END_OF_CHAIN</title>
+<indexterm><primary>BAT_MAGIC_END_OF_CHAIN</primary></indexterm><programlisting>#define BAT_MAGIC_END_OF_CHAIN	0xfffffffe	/*		   -2 */
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="BAT-MAGIC-UNUSED:CAPS"/>BAT_MAGIC_UNUSED</title>
+<indexterm><primary>BAT_MAGIC_UNUSED</primary></indexterm><programlisting>#define BAT_MAGIC_UNUSED	0xffffffff	/*		   -1 */
+</programlisting>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/outfile.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/outfile.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/outfile.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,160 @@
+<refentry id="gsf-Outfile-writing-structed-files">
+<refmeta>
+<refentrytitle>Outfile writing structed files</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Outfile writing structed files</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfOutfile"/>
+<synopsis>
+
+
+
+            <link linkend="GsfOutfile-struct">GsfOutfile</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-outfile-new-child">gsf_outfile_new_child</link>           (<link linkend="GsfOutfile">GsfOutfile</link> *outfile,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_dir);
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-outfile-new-child-full">gsf_outfile_new_child_full</link>      (<link linkend="GsfOutfile">GsfOutfile</link> *outfile,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_dir,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             ...);
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-outfile-new-child-varg">gsf_outfile_new_child_varg</link>      (<link linkend="GsfOutfile">GsfOutfile</link> *outfile,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_dir,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             <link linkend="va-list">va_list</link> args);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----GsfOutfile
+               +----<link linkend="GsfOutfileMSOle">GsfOutfileMSOle</link>
+               +----<link linkend="GsfOutfileStdio">GsfOutfileStdio</link>
+               +----<link linkend="GsfOutfileZip">GsfOutfileZip</link>
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfOutfile-struct"/>GsfOutfile</title>
+<indexterm><primary>GsfOutfile</primary></indexterm><programlisting>typedef struct _GsfOutfile GsfOutfile;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-new-child"/>gsf_outfile_new_child ()</title>
+<indexterm><primary>gsf_outfile_new_child</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_outfile_new_child           (<link linkend="GsfOutfile">GsfOutfile</link> *outfile,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_dir);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>outfile</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfOutfile"><type>GsfOutfile</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara> The name of the new child to create
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_dir</parameter>&nbsp;:</term>
+<listitem><simpara> TRUE to create a directory, FALSE to create a plain file
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a newly created child
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-new-child-full"/>gsf_outfile_new_child_full ()</title>
+<indexterm><primary>gsf_outfile_new_child_full</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_outfile_new_child_full      (<link linkend="GsfOutfile">GsfOutfile</link> *outfile,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_dir,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             ...);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>outfile</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfOutfile"><type>GsfOutfile</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara> The name of the new child to create
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_dir</parameter>&nbsp;:</term>
+<listitem><simpara> TRUE to create a directory, FALSE to create a plain file
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a newly created child
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-new-child-varg"/>gsf_outfile_new_child_varg ()</title>
+<indexterm><primary>gsf_outfile_new_child_varg</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_outfile_new_child_varg      (<link linkend="GsfOutfile">GsfOutfile</link> *outfile,
+                                             <link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_dir,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             <link linkend="va-list">va_list</link> args);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>outfile</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_dir</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>args</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/output.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/output.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/output.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,473 @@
+<refentry id="gsf-Output-to-unstructured-files">
+<refmeta>
+<refentrytitle>Output to unstructured files</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Output to unstructured files</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfOutput"/>
+<synopsis>
+
+
+
+            <link linkend="GsfOutput-struct">GsfOutput</link>;
+<link linkend="GsfOutfile">GsfOutfile</link>* <link linkend="gsf-output-container">gsf_output_container</link>            (<link linkend="GsfOutput">GsfOutput</link> const *output);
+<link linkend="gsf-off-t">gsf_off_t</link>   <link linkend="gsf-output-size">gsf_output_size</link>                 (<link linkend="GsfOutput">GsfOutput</link> *output);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-close">gsf_output_close</link>                (<link linkend="GsfOutput">GsfOutput</link> *output);
+<link linkend="gsf-off-t">gsf_off_t</link>   <link linkend="gsf-output-tell">gsf_output_tell</link>                 (<link linkend="GsfOutput">GsfOutput</link> *output);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-seek">gsf_output_seek</link>                 (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset,
+                                             <link linkend="GSeekType">GSeekType</link> whence);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-write">gsf_output_write</link>                (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="size-t">size_t</link> num_bytes,
+                                             <link linkend="guint8">guint8</link> const *data);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-puts">gsf_output_puts</link>                 (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *line);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-printf">gsf_output_printf</link>               (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *format,
+                                             ...);
+<link linkend="gsf-off-t">gsf_off_t</link>   <link linkend="gsf-output-vprintf">gsf_output_vprintf</link>              (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *format,
+                                             <link linkend="va-list">va_list</link> args);
+<link linkend="char">char</link>const   * <link linkend="gsf-output-name">gsf_output_name</link>               (<link linkend="GsfOutput">GsfOutput</link> const *output);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-set-name-from-filename">gsf_output_set_name_from_filename</link>
+                                            (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *filename);
+<link linkend="GQuark">GQuark</link>      <link linkend="gsf-output-error-id">gsf_output_error_id</link>             (void);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-set-error">gsf_output_set_error</link>            (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="gint">gint</link> code,
+                                             <link linkend="char">char</link> const *format,
+                                             ...);
+<link linkend="GError">GError</link>const * <link linkend="gsf-output-error">gsf_output_error</link>              (<link linkend="GsfOutput">GsfOutput</link> const *output);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-is-closed">gsf_output_is_closed</link>            (<link linkend="GsfOutput">GsfOutput</link> const *output);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-wrap">gsf_output_wrap</link>                 (<link linkend="GObject">GObject</link> *wrapper,
+                                             <link linkend="GsfOutput">GsfOutput</link> *wrapee);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-unwrap">gsf_output_unwrap</link>               (<link linkend="GObject">GObject</link> *wrapper,
+                                             <link linkend="GsfOutput">GsfOutput</link> *wrapee);
+
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-set-name">gsf_output_set_name</link>             (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *name);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-set-container">gsf_output_set_container</link>        (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="GsfOutfile">GsfOutfile</link> *container);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----GsfOutput
+         +----<link linkend="GsfOutfile">GsfOutfile</link>
+         +----<link linkend="GsfOutputBzip">GsfOutputBzip</link>
+         +----<link linkend="GsfOutputIOChannel">GsfOutputIOChannel</link>
+         +----<link linkend="GsfOutputMemory">GsfOutputMemory</link>
+         +----<link linkend="GsfOutputStdio">GsfOutputStdio</link>
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+  &quot;<link linkend="GsfOutput--is-closed">is-closed</link>&quot;            <link linkend="gboolean">gboolean</link>              : Read
+  &quot;<link linkend="GsfOutput--name">name</link>&quot;                 <link linkend="gchararray">gchararray</link>            : Read
+  &quot;<link linkend="GsfOutput--position">position</link>&quot;             <link linkend="gint64">gint64</link>                : Read
+  &quot;<link linkend="GsfOutput--size">size</link>&quot;                 <link linkend="gint64">gint64</link>                : Read
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfOutput-struct"/>GsfOutput</title>
+<indexterm><primary>GsfOutput</primary></indexterm><programlisting>typedef struct _GsfOutput GsfOutput;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-container"/>gsf_output_container ()</title>
+<indexterm><primary>gsf_output_container</primary></indexterm><programlisting><link linkend="GsfOutfile">GsfOutfile</link>* gsf_output_container            (<link linkend="GsfOutput">GsfOutput</link> const *output);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>, but does not add a reference to <parameter>output</parameter>'s container.
+Potentially NULL
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-size"/>gsf_output_size ()</title>
+<indexterm><primary>gsf_output_size</primary></indexterm><programlisting><link linkend="gsf-off-t">gsf_off_t</link>   gsf_output_size                 (<link linkend="GsfOutput">GsfOutput</link> *output);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the size of the output, or -1 if it does not have a size.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-close"/>gsf_output_close ()</title>
+<indexterm><primary>gsf_output_close</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_close                (<link linkend="GsfOutput">GsfOutput</link> *output);</programlisting>
+<para>
+Close a stream.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>FALSE on error
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-tell"/>gsf_output_tell ()</title>
+<indexterm><primary>gsf_output_tell</primary></indexterm><programlisting><link linkend="gsf-off-t">gsf_off_t</link>   gsf_output_tell                 (<link linkend="GsfOutput">GsfOutput</link> *output);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the current position in the file
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-seek"/>gsf_output_seek ()</title>
+<indexterm><primary>gsf_output_seek</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_seek                 (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="gsf-off-t">gsf_off_t</link> offset,
+                                             <link linkend="GSeekType">GSeekType</link> whence);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>whence</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>FALSE on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-write"/>gsf_output_write ()</title>
+<indexterm><primary>gsf_output_write</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_write                (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="size-t">size_t</link> num_bytes,
+                                             <link linkend="guint8">guint8</link> const *data);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>num_bytes</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>FALSE on error.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-puts"/>gsf_output_puts ()</title>
+<indexterm><primary>gsf_output_puts</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_puts                 (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *line);</programlisting>
+<para>
+Like fputs, this assumes that the line already ends with a newline</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>line</parameter>&nbsp;:</term>
+<listitem><simpara> <literal>null</literal> terminated string to write
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> TRUE if successful, FALSE if not
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-printf"/>gsf_output_printf ()</title>
+<indexterm><primary>gsf_output_printf</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_printf               (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *format,
+                                             ...);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
+<listitem><simpara> The printf-style format string
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
+<listitem><simpara> the arguments for <parameter>format</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> TRUE if successful, FALSE if not
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-vprintf"/>gsf_output_vprintf ()</title>
+<indexterm><primary>gsf_output_vprintf</primary></indexterm><programlisting><link linkend="gsf-off-t">gsf_off_t</link>   gsf_output_vprintf              (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *format,
+                                             <link linkend="va-list">va_list</link> args);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
+<listitem><simpara> The printf-style format string
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>args</parameter>&nbsp;:</term>
+<listitem><simpara> the arguments for <parameter>format</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> number of bytes printed, a negative value if not successful
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-name"/>gsf_output_name ()</title>
+<indexterm><primary>gsf_output_name</primary></indexterm><programlisting><link linkend="char">char</link>const   * gsf_output_name               (<link linkend="GsfOutput">GsfOutput</link> const *output);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara><parameter>output</parameter>'s name in utf8 form, DO NOT FREE THIS STRING
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-set-name-from-filename"/>gsf_output_set_name_from_filename ()</title>
+<indexterm><primary>gsf_output_set_name_from_filename</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_set_name_from_filename
+                                            (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *filename);</programlisting>
+<para>
+<note>This is a utility routine that should only be used by derived
+outputs.</note></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara> the output stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> the (fs-sys encoded) filename
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the assignment was ok.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-error-id"/>gsf_output_error_id ()</title>
+<indexterm><primary>gsf_output_error_id</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link>      gsf_output_error_id             (void);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-set-error"/>gsf_output_set_error ()</title>
+<indexterm><primary>gsf_output_set_error</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_set_error            (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="gint">gint</link> code,
+                                             <link linkend="char">char</link> const *format,
+                                             ...);</programlisting>
+<para>
+<note>This is a utility routine that should only be used by derived
+outputs.</note></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>code</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>Always returns FALSE to facilitate its use.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-error"/>gsf_output_error ()</title>
+<indexterm><primary>gsf_output_error</primary></indexterm><programlisting><link linkend="GError">GError</link>const * gsf_output_error              (<link linkend="GsfOutput">GsfOutput</link> const *output);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the last error logged on the output, or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-is-closed"/>gsf_output_is_closed ()</title>
+<indexterm><primary>gsf_output_is_closed</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_is_closed            (<link linkend="GsfOutput">GsfOutput</link> const *output);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE if <parameter>output</parameter> has already been closed.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-wrap"/>gsf_output_wrap ()</title>
+<indexterm><primary>gsf_output_wrap</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_wrap                 (<link linkend="GObject">GObject</link> *wrapper,
+                                             <link linkend="GsfOutput">GsfOutput</link> *wrapee);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>wrapper</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>wrapee</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE if the wrapping succeeded.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-unwrap"/>gsf_output_unwrap ()</title>
+<indexterm><primary>gsf_output_unwrap</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_unwrap               (<link linkend="GObject">GObject</link> *wrapper,
+                                             <link linkend="GsfOutput">GsfOutput</link> *wrapee);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>wrapper</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>wrapee</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE if the unwrapping succeeded.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-set-name"/>gsf_output_set_name ()</title>
+<indexterm><primary>gsf_output_set_name</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_set_name             (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="char">char</link> const *name);</programlisting>
+<para>
+<note>This is a utility routine that should only be used by derived
+outputs.</note></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the assignment was ok.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-set-container"/>gsf_output_set_container ()</title>
+<indexterm><primary>gsf_output_set_container</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_set_container        (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="GsfOutfile">GsfOutfile</link> *container);</programlisting>
+<para>
+<note>This is a utility routine that should only be used by derived
+outputs.</note></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>container</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: TRUE if the assignment was ok.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="GsfOutput--is-closed"/>The &quot;<literal>is-closed</literal>&quot; property</title>
+<programlisting>  &quot;is-closed&quot;            <link linkend="gboolean">gboolean</link>              : Read</programlisting>
+<para>Whether the Output is Closed.</para><para>Default value: FALSE</para>
+</refsect2>
+<refsect2><title><anchor id="GsfOutput--name"/>The &quot;<literal>name</literal>&quot; property</title>
+<programlisting>  &quot;name&quot;                 <link linkend="gchararray">gchararray</link>            : Read</programlisting>
+<para>The Output's Name.</para><para>Default value: NULL</para>
+</refsect2>
+<refsect2><title><anchor id="GsfOutput--position"/>The &quot;<literal>position</literal>&quot; property</title>
+<programlisting>  &quot;position&quot;             <link linkend="gint64">gint64</link>                : Read</programlisting>
+<para>The Output's Current Position.</para><para>Allowed values: &gt;= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+<refsect2><title><anchor id="GsfOutput--size"/>The &quot;<literal>size</literal>&quot; property</title>
+<programlisting>  &quot;size&quot;                 <link linkend="gint64">gint64</link>                : Read</programlisting>
+<para>The Output's Size.</para><para>Allowed values: &gt;= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/stdio.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/stdio.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/stdio.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,333 @@
+<refentry id="gsf-Reading-and-Writing-from-local-files-and-directories">
+<refmeta>
+<refentrytitle>Reading and Writing from local files and directories</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Reading and Writing from local files and directories</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInputStdio"/><anchor id="GsfOutputStdio"/><anchor id="GsfOutfileStdio"/><anchor id="GsfInfileStdio"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInputStdio-struct">GsfInputStdio</link>;
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-stdio-new">gsf_input_stdio_new</link>             (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);
+            <link linkend="GsfOutputStdio-struct">GsfOutputStdio</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-stdio-new">gsf_output_stdio_new</link>            (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-stdio-new-full">gsf_output_stdio_new_full</link>       (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             ...);
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-stdio-new-valist">gsf_output_stdio_new_valist</link>     (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             <link linkend="va-list">va_list</link> var_args);
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-stdio-new-FILE">gsf_output_stdio_new_FILE</link>       (<link linkend="char">char</link> const *filename,
+                                             <link linkend="FILE:CAPS">FILE</link> *file,
+                                             <link linkend="gboolean">gboolean</link> keep_open);
+            <link linkend="GsfOutfileStdio-struct">GsfOutfileStdio</link>;
+<link linkend="GsfOutfile">GsfOutfile</link>* <link linkend="gsf-outfile-stdio-new">gsf_outfile_stdio_new</link>           (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="GsfOutfile">GsfOutfile</link>* <link linkend="gsf-outfile-stdio-new-full">gsf_outfile_stdio_new_full</link>      (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             ...);
+<link linkend="GsfOutfile">GsfOutfile</link>* <link linkend="gsf-outfile-stdio-new-valist">gsf_outfile_stdio_new_valist</link>    (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             <link linkend="va-list">va_list</link> var_args);
+            <link linkend="GsfInfileStdio-struct">GsfInfileStdio</link>;
+<link linkend="GsfInfile">GsfInfile</link>*  <link linkend="gsf-infile-stdio-new">gsf_infile_stdio_new</link>            (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err);
+
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----GsfInputStdio
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----GsfOutputStdio
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----<link linkend="GsfOutfile">GsfOutfile</link>
+               +----GsfOutfileStdio
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----<link linkend="GsfInfile">GsfInfile</link>
+               +----GsfInfileStdio
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInputStdio-struct"/>GsfInputStdio</title>
+<indexterm><primary>GsfInputStdio</primary></indexterm><programlisting>typedef struct _GsfInputStdio GsfInputStdio;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-stdio-new"/>gsf_input_stdio_new ()</title>
+<indexterm><primary>gsf_input_stdio_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_stdio_new             (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> in utf8.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputStdio-struct"/>GsfOutputStdio</title>
+<indexterm><primary>GsfOutputStdio</primary></indexterm><programlisting>typedef struct _GsfOutputStdio GsfOutputStdio;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-stdio-new"/>gsf_output_stdio_new ()</title>
+<indexterm><primary>gsf_output_stdio_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_stdio_new            (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> name of file to create or replace.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-stdio-new-full"/>gsf_output_stdio_new_full ()</title>
+<indexterm><primary>gsf_output_stdio_new_full</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_stdio_new_full       (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             ...);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> name of file to create or replace.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara> NULL terminated list of properties
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
+<listitem><simpara> 
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-stdio-new-valist"/>gsf_output_stdio_new_valist ()</title>
+<indexterm><primary>gsf_output_stdio_new_valist</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_stdio_new_valist     (<link linkend="char">char</link> const *filename,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             <link linkend="va-list">va_list</link> var_args);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>var_args</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-stdio-new-FILE"/>gsf_output_stdio_new_FILE ()</title>
+<indexterm><primary>gsf_output_stdio_new_FILE</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_stdio_new_FILE       (<link linkend="char">char</link> const *filename,
+                                             <link linkend="FILE:CAPS">FILE</link> *file,
+                                             <link linkend="gboolean">gboolean</link> keep_open);</programlisting>
+<para>
+Assumes ownership of <parameter>file</parameter>.  If <parameter>keep_open</parameter> is true, ownership reverts
+to caller when the GsfObject is closed.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> The filename corresponding to <parameter>file</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>file</parameter>&nbsp;:</term>
+<listitem><simpara> an existing stdio FILE *
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>keep_open</parameter>&nbsp;:</term>
+<listitem><simpara> Should <parameter>file</parameter> be closed when the wrapper is closed
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new GsfOutput wrapper for <parameter>file</parameter>.  Warning: the result will be
+seekable only if <parameter>file</parameter> is seekable.  If it is seekable, the resulting
+GsfOutput object will seek relative to <parameter>file</parameter>'s beginning, not its
+current location at the time the GsfOutput object is created.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutfileStdio-struct"/>GsfOutfileStdio</title>
+<indexterm><primary>GsfOutfileStdio</primary></indexterm><programlisting>typedef struct _GsfOutfileStdio GsfOutfileStdio;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-stdio-new"/>gsf_outfile_stdio_new ()</title>
+<indexterm><primary>gsf_outfile_stdio_new</primary></indexterm><programlisting><link linkend="GsfOutfile">GsfOutfile</link>* gsf_outfile_stdio_new           (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>root</parameter>&nbsp;:</term>
+<listitem><simpara> root directory in utf8.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new outfile or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-stdio-new-full"/>gsf_outfile_stdio_new_full ()</title>
+<indexterm><primary>gsf_outfile_stdio_new_full</primary></indexterm><programlisting><link linkend="GsfOutfile">GsfOutfile</link>* gsf_outfile_stdio_new_full      (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             ...);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>root</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-stdio-new-valist"/>gsf_outfile_stdio_new_valist ()</title>
+<indexterm><primary>gsf_outfile_stdio_new_valist</primary></indexterm><programlisting><link linkend="GsfOutfile">GsfOutfile</link>* gsf_outfile_stdio_new_valist    (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err,
+                                             <link linkend="char">char</link> const *first_property_name,
+                                             <link linkend="va-list">va_list</link> var_args);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>root</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>var_args</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfInfileStdio-struct"/>GsfInfileStdio</title>
+<indexterm><primary>GsfInfileStdio</primary></indexterm><programlisting>typedef struct _GsfInfileStdio GsfInfileStdio;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-stdio-new"/>gsf_infile_stdio_new ()</title>
+<indexterm><primary>gsf_infile_stdio_new</primary></indexterm><programlisting><link linkend="GsfInfile">GsfInfile</link>*  gsf_infile_stdio_new            (<link linkend="char">char</link> const *root,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>root</parameter>&nbsp;:</term>
+<listitem><simpara> in locale dependent encoding
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/text.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/text.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/text.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,222 @@
+<refentry id="gsf-Text">
+<refmeta>
+<refentrytitle>Text</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Text</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInputTextline"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInputTextline-struct">GsfInputTextline</link>;
+<link linkend="GsfInput">GsfInput</link>*   <link linkend="gsf-input-textline-new">gsf_input_textline_new</link>          (<link linkend="GsfInput">GsfInput</link> *source);
+unsigned <link linkend="char">char</link>* <link linkend="gsf-input-textline-ascii-gets">gsf_input_textline_ascii_gets</link>
+                                            (<link linkend="GsfInputTextline">GsfInputTextline</link> *input);
+<link linkend="guint8">guint8</link>*     <link linkend="gsf-input-textline-utf8-gets">gsf_input_textline_utf8_gets</link>    (<link linkend="GsfInputTextline">GsfInputTextline</link> *input);
+            <link linkend="GsfOutputIconv">GsfOutputIconv</link>;
+<link linkend="GsfOutput">GsfOutput</link>*  <link linkend="gsf-output-iconv-new">gsf_output_iconv_new</link>            (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="char">char</link> const *dst,
+                                             <link linkend="char">char</link> const *src);
+            <link linkend="GsfOutputCsv">GsfOutputCsv</link>;
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-csv-write-eol">gsf_output_csv_write_eol</link>        (<link linkend="GsfOutputCsv">GsfOutputCsv</link> *csv);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-output-csv-write-field">gsf_output_csv_write_field</link>      (<link linkend="GsfOutputCsv">GsfOutputCsv</link> *csv,
+                                             <link linkend="char">char</link> const *field,
+                                             <link linkend="size-t">size_t</link> len);
+enum        <link linkend="GsfOutputCsvQuotingMode">GsfOutputCsvQuotingMode</link>;
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----GsfInputTextline
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInputTextline-struct"/>GsfInputTextline</title>
+<indexterm><primary>GsfInputTextline</primary></indexterm><programlisting>typedef struct _GsfInputTextline GsfInputTextline;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-textline-new"/>gsf_input_textline_new ()</title>
+<indexterm><primary>gsf_input_textline_new</primary></indexterm><programlisting><link linkend="GsfInput">GsfInput</link>*   gsf_input_textline_new          (<link linkend="GsfInput">GsfInput</link> *source);</programlisting>
+<para>
+NOTE : adds a reference to <parameter>source</parameter></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara> in some combination of ascii and utf8
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new file or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-textline-ascii-gets"/>gsf_input_textline_ascii_gets ()</title>
+<indexterm><primary>gsf_input_textline_ascii_gets</primary></indexterm><programlisting>unsigned <link linkend="char">char</link>* gsf_input_textline_ascii_gets
+                                            (<link linkend="GsfInputTextline">GsfInputTextline</link> *input);</programlisting>
+<para>
+A utility routine to read things line by line from the underlying source.
+Trailing newlines and carriage returns are stripped, and the resultant buffer
+can be edited.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the string read, or NULL on eof.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-textline-utf8-gets"/>gsf_input_textline_utf8_gets ()</title>
+<indexterm><primary>gsf_input_textline_utf8_gets</primary></indexterm><programlisting><link linkend="guint8">guint8</link>*     gsf_input_textline_utf8_gets    (<link linkend="GsfInputTextline">GsfInputTextline</link> *input);</programlisting>
+<para>
+A utility routine to read things line by line from the underlying source.
+Trailing newlines and carriage returns are stripped, and the resultant buffer
+can be edited.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the string read, or NULL on eof.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputIconv"/>GsfOutputIconv</title>
+<indexterm><primary>GsfOutputIconv</primary></indexterm><programlisting>typedef struct _GsfOutputIconv GsfOutputIconv;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-iconv-new"/>gsf_output_iconv_new ()</title>
+<indexterm><primary>gsf_output_iconv_new</primary></indexterm><programlisting><link linkend="GsfOutput">GsfOutput</link>*  gsf_output_iconv_new            (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="char">char</link> const *dst,
+                                             <link linkend="char">char</link> const *src);</programlisting>
+<para>
+Adds a reference to <parameter>sink</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>sink</parameter>&nbsp;:</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dst</parameter>&nbsp;:</term>
+<listitem><simpara> The target character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>src</parameter>&nbsp;:</term>
+<listitem><simpara> The source character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a new GsfOutput object or NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputCsv"/>GsfOutputCsv</title>
+<indexterm><primary>GsfOutputCsv</primary></indexterm><programlisting>typedef struct {
+	GsfOutput output;
+
+	GsfOutput *sink;
+
+	char *quote;
+	size_t quote_len;
+	GsfOutputCsvQuotingMode quoting_mode;
+	char *quoting_triggers;
+
+	char *eol;
+	size_t eol_len;
+	char *separator;
+	size_t separator_len;
+	gboolean fields_on_line;
+
+	GString *buf;
+} GsfOutputCsv;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-csv-write-eol"/>gsf_output_csv_write_eol ()</title>
+<indexterm><primary>gsf_output_csv_write_eol</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_csv_write_eol        (<link linkend="GsfOutputCsv">GsfOutputCsv</link> *csv);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>csv</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-output-csv-write-field"/>gsf_output_csv_write_field ()</title>
+<indexterm><primary>gsf_output_csv_write_field</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_output_csv_write_field      (<link linkend="GsfOutputCsv">GsfOutputCsv</link> *csv,
+                                             <link linkend="char">char</link> const *field,
+                                             <link linkend="size-t">size_t</link> len);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>csv</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>field</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutputCsvQuotingMode"/>enum GsfOutputCsvQuotingMode</title>
+<indexterm><primary>GsfOutputCsvQuotingMode</primary></indexterm><programlisting>typedef enum {
+	GSF_OUTPUT_CSV_QUOTING_MODE_NEVER,
+	GSF_OUTPUT_CSV_QUOTING_MODE_AUTO,
+	GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS
+} GsfOutputCsvQuotingMode;
+</programlisting>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/utils.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/utils.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/utils.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1907 @@
+<refentry id="gsf-utils">
+<refmeta>
+<refentrytitle>utils</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>utils</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+
+<synopsis>
+
+
+
+
+<link linkend="void">void</link>        <link linkend="gsf-init">gsf_init</link>                        (void);
+<link linkend="void">void</link>        <link linkend="gsf-shutdown">gsf_shutdown</link>                    (void);
+<link linkend="void">void</link>        <link linkend="gsf-init-dynamic">gsf_init_dynamic</link>                (<link linkend="GTypeModule">GTypeModule</link> *module);
+<link linkend="void">void</link>        <link linkend="gsf-shutdown-dynamic">gsf_shutdown_dynamic</link>            (<link linkend="GTypeModule">GTypeModule</link> *module);
+extern      int <link linkend="libgsf-major-version">libgsf_major_version</link>;
+extern      int <link linkend="libgsf-minor-version">libgsf_minor_version</link>;
+extern      int <link linkend="libgsf-micro-version">libgsf_micro_version</link>;
+
+#define     <link linkend="GSF-CLASS:CAPS">GSF_CLASS</link>                       (name, prefix, class_init, instance_init, parent)
+#define     <link linkend="GSF-CLASS-FULL:CAPS">GSF_CLASS_FULL</link>                  (name, prefix, base_init, base_finalize, \
+			   class_init, class_finalize, instance_init, parent_type, \
+		       abstract, interface_decl)
+#define     <link linkend="GSF-CLASS-ABSTRACT:CAPS">GSF_CLASS_ABSTRACT</link>              (name, prefix, class_init, instance_init, parent)
+#define     <link linkend="GSF-INTERFACE:CAPS">GSF_INTERFACE</link>                   (init_func, iface_type)
+#define     <link linkend="GSF-INTERFACE-FULL:CAPS">GSF_INTERFACE_FULL</link>              (type, init_func, iface_type)
+#define     <link linkend="GSF-DYNAMIC-CLASS:CAPS">GSF_DYNAMIC_CLASS</link>               (name, prefix, class_init, instance_init, parent)
+#define     <link linkend="GSF-DYNAMIC-CLASS-FULL:CAPS">GSF_DYNAMIC_CLASS_FULL</link>          (name, prefix, base_init, base_finalize, \
+				   class_init,  class_finalize, instance_init, parent_type, \
+			       abstract, interface_decl)
+#define     <link linkend="GSF-DYNAMIC-CLASS-ABSTRACT:CAPS">GSF_DYNAMIC_CLASS_ABSTRACT</link>      (name, prefix, class_init, instance_init, parent)
+#define     <link linkend="GSF-DYNAMIC-INTERFACE:CAPS">GSF_DYNAMIC_INTERFACE</link>           (init_func, iface_type, module)
+#define     <link linkend="GSF-DYNAMIC-INTERFACE-FULL:CAPS">GSF_DYNAMIC_INTERFACE_FULL</link>      (type, init_func, iface_type, module)
+#define     <link linkend="GSF-PARAM-STATIC:CAPS">GSF_PARAM_STATIC</link>
+
+#define     <link linkend="GSF-ERROR:CAPS">GSF_ERROR</link>
+enum        <link linkend="GsfError">GsfError</link>;
+<link linkend="GQuark">GQuark</link>      <link linkend="gsf-error-quark">gsf_error_quark</link>                 (void);
+
+<link linkend="void">void</link>        <link linkend="gsf-mem-dump">gsf_mem_dump</link>                    (<link linkend="guint8">guint8</link> const *ptr,
+                                             <link linkend="size-t">size_t</link> len);
+<link linkend="void">void</link>        <link linkend="gsf-input-dump">gsf_input_dump</link>                  (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gboolean">gboolean</link> dump_as_hex);
+
+#define     <link linkend="GSF-OFF-T-FORMAT:CAPS">GSF_OFF_T_FORMAT</link>
+typedef     <link linkend="gsf-off-t">gsf_off_t</link>;
+<link linkend="char">char</link>*       <link linkend="gsf-filename-to-utf8">gsf_filename_to_utf8</link>            (<link linkend="char">char</link> const *filename,
+                                             <link linkend="gboolean">gboolean</link> quoted);
+<link linkend="void">void</link>        <link linkend="gsf-iconv-close">gsf_iconv_close</link>                 (<link linkend="GIConv">GIConv</link> handle);
+<link linkend="char">char</link>const * <link linkend="gsf-extension-pointer">gsf_extension_pointer</link>           (<link linkend="char">char</link> const *path);
+
+<link linkend="guint8">guint8</link>*     <link linkend="gsf-base64-encode-simple">gsf_base64_encode_simple</link>        (<link linkend="guint8">guint8</link> const *data,
+                                             <link linkend="size-t">size_t</link> len);
+<link linkend="size-t">size_t</link>      <link linkend="gsf-base64-encode-close">gsf_base64_encode_close</link>         (<link linkend="guint8">guint8</link> const *in,
+                                             <link linkend="size-t">size_t</link> inlen,
+                                             <link linkend="gboolean">gboolean</link> break_lines,
+                                             <link linkend="guint8">guint8</link> *out,
+                                             <link linkend="int">int</link> *state,
+                                             <link linkend="guint">guint</link> *save);
+<link linkend="size-t">size_t</link>      <link linkend="gsf-base64-encode-step">gsf_base64_encode_step</link>          (<link linkend="guint8">guint8</link> const *in,
+                                             <link linkend="size-t">size_t</link> len,
+                                             <link linkend="gboolean">gboolean</link> break_lines,
+                                             <link linkend="guint8">guint8</link> *out,
+                                             <link linkend="int">int</link> *state,
+                                             <link linkend="guint">guint</link> *save);
+<link linkend="size-t">size_t</link>      <link linkend="gsf-base64-decode-simple">gsf_base64_decode_simple</link>        (<link linkend="guint8">guint8</link> *data,
+                                             <link linkend="size-t">size_t</link> len);
+<link linkend="size-t">size_t</link>      <link linkend="gsf-base64-decode-step">gsf_base64_decode_step</link>          (<link linkend="guint8">guint8</link> const *in,
+                                             <link linkend="size-t">size_t</link> len,
+                                             <link linkend="guint8">guint8</link> *out,
+                                             <link linkend="int">int</link> *state,
+                                             <link linkend="guint">guint</link> *save);
+#define     <link linkend="GSF-LE-GET-GINT8:CAPS">GSF_LE_GET_GINT8</link>                (p)
+#define     <link linkend="GSF-LE-GET-GUINT64:CAPS">GSF_LE_GET_GUINT64</link>              (p)
+#define     <link linkend="GSF-LE-GET-GINT16:CAPS">GSF_LE_GET_GINT16</link>               (p)
+#define     <link linkend="GSF-LE-GET-GUINT8:CAPS">GSF_LE_GET_GUINT8</link>               (p)
+#define     <link linkend="GSF-LE-GET-GINT32:CAPS">GSF_LE_GET_GINT32</link>               (p)
+#define     <link linkend="GSF-LE-GET-GUINT16:CAPS">GSF_LE_GET_GUINT16</link>              (p)
+#define     <link linkend="GSF-LE-GET-GUINT32:CAPS">GSF_LE_GET_GUINT32</link>              (p)
+#define     <link linkend="GSF-LE-GET-GINT64:CAPS">GSF_LE_GET_GINT64</link>               (p)
+<link linkend="guint64">guint64</link>     <link linkend="gsf-le-get-guint64">gsf_le_get_guint64</link>              (<link linkend="void">void</link> const *p);
+#define     <link linkend="GSF-LE-GET-FLOAT:CAPS">GSF_LE_GET_FLOAT</link>                (p)
+<link linkend="float">float</link>       <link linkend="gsf-le-get-float">gsf_le_get_float</link>                (<link linkend="void">void</link> const *p);
+#define     <link linkend="GSF-LE-GET-DOUBLE:CAPS">GSF_LE_GET_DOUBLE</link>               (p)
+<link linkend="double">double</link>      <link linkend="gsf-le-get-double">gsf_le_get_double</link>               (<link linkend="void">void</link> const *p);
+#define     <link linkend="GSF-LE-SET-GUINT8:CAPS">GSF_LE_SET_GUINT8</link>               (p, dat)
+#define     <link linkend="GSF-LE-SET-GUINT16:CAPS">GSF_LE_SET_GUINT16</link>              (p, dat)
+#define     <link linkend="GSF-LE-SET-GUINT32:CAPS">GSF_LE_SET_GUINT32</link>              (p, dat)
+#define     <link linkend="GSF-LE-SET-GINT8:CAPS">GSF_LE_SET_GINT8</link>                (p,dat)
+#define     <link linkend="GSF-LE-SET-GINT16:CAPS">GSF_LE_SET_GINT16</link>               (p,dat)
+#define     <link linkend="GSF-LE-SET-GINT32:CAPS">GSF_LE_SET_GINT32</link>               (p,dat)
+#define     <link linkend="GSF-LE-SET-GINT64:CAPS">GSF_LE_SET_GINT64</link>               (p,dat)
+#define     <link linkend="GSF-LE-SET-GUINT64:CAPS">GSF_LE_SET_GUINT64</link>              (p, dat)
+#define     <link linkend="GSF-LE-SET-FLOAT:CAPS">GSF_LE_SET_FLOAT</link>                (p,dat)
+#define     <link linkend="GSF-LE-SET-DOUBLE:CAPS">GSF_LE_SET_DOUBLE</link>               (p,dat)
+<link linkend="void">void</link>        <link linkend="gsf-le-set-float">gsf_le_set_float</link>                (<link linkend="void">void</link> *p,
+                                             <link linkend="float">float</link> f);
+<link linkend="void">void</link>        <link linkend="gsf-le-set-double">gsf_le_set_double</link>               (<link linkend="void">void</link> *p,
+                                             <link linkend="double">double</link> d);
+
+            <link linkend="GsfTimestamp">GsfTimestamp</link>;
+<link linkend="GsfTimestamp">GsfTimestamp</link>* <link linkend="gsf-timestamp-new">gsf_timestamp_new</link>             (<link linkend="GDate">GDate</link> const *date,
+                                             <link linkend="glong">glong</link> seconds,
+                                             <link linkend="char">char</link> const *tz);
+<link linkend="GsfTimestamp">GsfTimestamp</link>* <link linkend="gsf-timestamp-new-now">gsf_timestamp_new_now</link>         (void);
+<link linkend="GsfTimestamp">GsfTimestamp</link>* <link linkend="gsf-timestamp-copy">gsf_timestamp_copy</link>            (<link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);
+<link linkend="void">void</link>        <link linkend="gsf-timestamp-free">gsf_timestamp_free</link>              (<link linkend="GsfTimestamp">GsfTimestamp</link> *stamp);
+<link linkend="char">char</link>*       <link linkend="gsf-timestamp-as-string">gsf_timestamp_as_string</link>         (<link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);
+<link linkend="int">int</link>         <link linkend="gsf-timestamp-parse">gsf_timestamp_parse</link>             (<link linkend="char">char</link> const *spec,
+                                             <link linkend="GsfTimestamp">GsfTimestamp</link> *stamp);
+<link linkend="guint">guint</link>       <link linkend="gsf-timestamp-hash">gsf_timestamp_hash</link>              (<link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-timestamp-equal">gsf_timestamp_equal</link>             (<link linkend="GsfTimestamp">GsfTimestamp</link> const *a,
+                                             <link linkend="GsfTimestamp">GsfTimestamp</link> const *b);
+<link linkend="void">void</link>        <link linkend="gsf-value-set-timestamp">gsf_value_set_timestamp</link>         (<link linkend="GValue">GValue</link> *value,
+                                             <link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);
+#define     <link linkend="VAL-IS-GSF-TIMESTAMP:CAPS">VAL_IS_GSF_TIMESTAMP</link>            (v)
+
+
+<link linkend="GValue">GValue</link>*     <link linkend="gsf-doc-prop-swap-val">gsf_doc_prop_swap_val</link>           (<link linkend="GsfDocProp">GsfDocProp</link> *prop,
+                                             <link linkend="GValue">GValue</link> *val);
+<link linkend="void">void</link>        <link linkend="gsf-property-settings-collect">gsf_property_settings_collect</link>   (<link linkend="GType">GType</link> object_type,
+                                             <link linkend="GParameter">GParameter</link> **p_params,
+                                             <link linkend="size-t">size_t</link> *p_n_params,
+                                             const <link linkend="gchar">gchar</link> *first_property_name,
+                                             ...);
+<link linkend="void">void</link>        <link linkend="gsf-property-settings-collect-valist">gsf_property_settings_collect_valist</link>
+                                            (<link linkend="GType">GType</link> object_type,
+                                             <link linkend="GParameter">GParameter</link> **p_params,
+                                             <link linkend="size-t">size_t</link> *p_n_params,
+                                             const <link linkend="gchar">gchar</link> *first_property_name,
+                                             <link linkend="va-list">va_list</link> var_args);
+<link linkend="void">void</link>        <link linkend="gsf-property-settings-free">gsf_property_settings_free</link>      (<link linkend="GParameter">GParameter</link> *params,
+                                             <link linkend="size-t">size_t</link> n_params);
+</synopsis>
+</refsynopsisdiv>
+
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="gsf-init"/>gsf_init ()</title>
+<indexterm><primary>gsf_init</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_init                        (void);</programlisting>
+<para>
+Initializes the GSF library</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-shutdown"/>gsf_shutdown ()</title>
+<indexterm><primary>gsf_shutdown</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_shutdown                    (void);</programlisting>
+<para>
+De-intializes the GSF library</para>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-init-dynamic"/>gsf_init_dynamic ()</title>
+<indexterm><primary>gsf_init_dynamic</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_init_dynamic                (<link linkend="GTypeModule">GTypeModule</link> *module);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>module</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-shutdown-dynamic"/>gsf_shutdown_dynamic ()</title>
+<indexterm><primary>gsf_shutdown_dynamic</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_shutdown_dynamic            (<link linkend="GTypeModule">GTypeModule</link> *module);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>module</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="libgsf-major-version"/>libgsf_major_version</title>
+<indexterm><primary>libgsf_major_version</primary></indexterm><programlisting>extern int libgsf_major_version;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="libgsf-minor-version"/>libgsf_minor_version</title>
+<indexterm><primary>libgsf_minor_version</primary></indexterm><programlisting>extern int libgsf_minor_version;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="libgsf-micro-version"/>libgsf_micro_version</title>
+<indexterm><primary>libgsf_micro_version</primary></indexterm><programlisting>extern int libgsf_micro_version;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-CLASS:CAPS"/>GSF_CLASS()</title>
+<indexterm><primary>GSF_CLASS</primary></indexterm><programlisting>#define     GSF_CLASS(name, prefix, class_init, instance_init, parent)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-CLASS-FULL:CAPS"/>GSF_CLASS_FULL()</title>
+<indexterm><primary>GSF_CLASS_FULL</primary></indexterm><programlisting>#define     GSF_CLASS_FULL(name, prefix, base_init, base_finalize, \
+			   class_init, class_finalize, instance_init, parent_type, \
+		       abstract, interface_decl)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_finalize</parameter>&nbsp;:</term>
+<listitem><simpara>
+@\
+			   class_init:
+@\
+			   class_init: 
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_finalize</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent_type</parameter>&nbsp;:</term>
+<listitem><simpara>
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract:
+@\
+		       abstract: 
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>interface_decl</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-CLASS-ABSTRACT:CAPS"/>GSF_CLASS_ABSTRACT()</title>
+<indexterm><primary>GSF_CLASS_ABSTRACT</primary></indexterm><programlisting>#define     GSF_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-INTERFACE:CAPS"/>GSF_INTERFACE()</title>
+<indexterm><primary>GSF_INTERFACE</primary></indexterm><programlisting>#define     GSF_INTERFACE(init_func, iface_type)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>init_func</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-INTERFACE-FULL:CAPS"/>GSF_INTERFACE_FULL()</title>
+<indexterm><primary>GSF_INTERFACE_FULL</primary></indexterm><programlisting>#define     GSF_INTERFACE_FULL(type, init_func, iface_type)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>init_func</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-DYNAMIC-CLASS:CAPS"/>GSF_DYNAMIC_CLASS()</title>
+<indexterm><primary>GSF_DYNAMIC_CLASS</primary></indexterm><programlisting>#define     GSF_DYNAMIC_CLASS(name, prefix, class_init, instance_init, parent)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-DYNAMIC-CLASS-FULL:CAPS"/>GSF_DYNAMIC_CLASS_FULL()</title>
+<indexterm><primary>GSF_DYNAMIC_CLASS_FULL</primary></indexterm><programlisting>#define     GSF_DYNAMIC_CLASS_FULL(name, prefix, base_init, base_finalize, \
+				   class_init,  class_finalize, instance_init, parent_type, \
+			       abstract, interface_decl)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_finalize</parameter>&nbsp;:</term>
+<listitem><simpara>
+@\
+				   class_init:
+@\
+				   class_init: 
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_finalize</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent_type</parameter>&nbsp;:</term>
+<listitem><simpara>
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract:
+@\
+			       abstract: 
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>interface_decl</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-DYNAMIC-CLASS-ABSTRACT:CAPS"/>GSF_DYNAMIC_CLASS_ABSTRACT()</title>
+<indexterm><primary>GSF_DYNAMIC_CLASS_ABSTRACT</primary></indexterm><programlisting>#define     GSF_DYNAMIC_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-DYNAMIC-INTERFACE:CAPS"/>GSF_DYNAMIC_INTERFACE()</title>
+<indexterm><primary>GSF_DYNAMIC_INTERFACE</primary></indexterm><programlisting>#define     GSF_DYNAMIC_INTERFACE(init_func, iface_type, module)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>init_func</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>module</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-DYNAMIC-INTERFACE-FULL:CAPS"/>GSF_DYNAMIC_INTERFACE_FULL()</title>
+<indexterm><primary>GSF_DYNAMIC_INTERFACE_FULL</primary></indexterm><programlisting>#define     GSF_DYNAMIC_INTERFACE_FULL(type, init_func, iface_type, module)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>init_func</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>module</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-PARAM-STATIC:CAPS"/>GSF_PARAM_STATIC</title>
+<indexterm><primary>GSF_PARAM_STATIC</primary></indexterm><programlisting>#define     GSF_PARAM_STATIC</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-ERROR:CAPS"/>GSF_ERROR</title>
+<indexterm><primary>GSF_ERROR</primary></indexterm><programlisting>#define GSF_ERROR (gsf_error_quark ())
+</programlisting>
+<para>
+  This convenience macro simply calls <link linkend="gsf-error-quark"><function>gsf_error_quark()</function></link>.  You can use
+  it in calls to <link linkend="g-error-matches"><function>g_error_matches()</function></link>, for example.  The macro returns
+  the <link linkend="GQuark"><type>GQuark</type></link> that is used to identify errors from libgsf functions.
+  Specific error codes come from the <link linkend="GsfError"><type>GsfError</type></link> enumeration.
+</para></refsect2>
+<refsect2>
+<title><anchor id="GsfError"/>enum GsfError</title>
+<indexterm><primary>GsfError</primary></indexterm><programlisting>typedef enum {
+	GSF_ERROR_OUT_OF_MEMORY,
+	GSF_ERROR_INVALID_DATA
+} GsfError;
+</programlisting>
+<para>
+   Error codes that can be returned from libgsf functions in <link linkend="GError"><type>GError</type></link> structures.
+</para><variablelist role="enum">
+<varlistentry>
+<term><literal>GSF_ERROR_OUT_OF_MEMORY</literal></term>
+<listitem><simpara>Not enough memory could be allocated to hold
+a structure or object.
+</simpara></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>GSF_ERROR_INVALID_DATA</literal></term>
+<listitem><simpara>A file being read contained invalid or
+inconsistent data.
+
+</simpara></listitem>
+</varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-error-quark"/>gsf_error_quark ()</title>
+<indexterm><primary>gsf_error_quark</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link>      gsf_error_quark                 (void);</programlisting>
+<para>
+Returns the <link linkend="GQuark"><type>GQuark</type></link> used to identify libgsf errors in <link linkend="GError"><type>GError</type></link> structures.
+Specific error codes come from the <link linkend="GsfError"><type>GsfError</type></link> enumeration.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A <link linkend="GQuark"><type>GQuark</type></link>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-mem-dump"/>gsf_mem_dump ()</title>
+<indexterm><primary>gsf_mem_dump</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_mem_dump                    (<link linkend="guint8">guint8</link> const *ptr,
+                                             <link linkend="size-t">size_t</link> len);</programlisting>
+<para>
+Dump <parameter>len</parameter> bytes from the memory location given by <parameter>ptr</parameter>.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>ptr</parameter>&nbsp;:</term>
+<listitem><simpara> memory area to be dumped.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
+<listitem><simpara> how many bytes will be dumped.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-input-dump"/>gsf_input_dump ()</title>
+<indexterm><primary>gsf_input_dump</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_input_dump                  (<link linkend="GsfInput">GsfInput</link> *input,
+                                             <link linkend="gboolean">gboolean</link> dump_as_hex);</programlisting>
+<para>
+Dumps <parameter>input</parameter>'s contents to STDOUT, optionally in hex format.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara> a <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dump_as_hex</parameter>&nbsp;:</term>
+<listitem><simpara> If TRUE, dump in hexidecmal format
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-OFF-T-FORMAT:CAPS"/>GSF_OFF_T_FORMAT</title>
+<indexterm><primary>GSF_OFF_T_FORMAT</primary></indexterm><programlisting>#define GSF_OFF_T_FORMAT	G_GINT64_FORMAT
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-off-t"/>gsf_off_t</title>
+<indexterm><primary>gsf_off_t</primary></indexterm><programlisting>typedef gint64 gsf_off_t;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-filename-to-utf8"/>gsf_filename_to_utf8 ()</title>
+<indexterm><primary>gsf_filename_to_utf8</primary></indexterm><programlisting><link linkend="char">char</link>*       gsf_filename_to_utf8            (<link linkend="char">char</link> const *filename,
+                                             <link linkend="gboolean">gboolean</link> quoted);</programlisting>
+<para>
+A utility wrapper to make sure filenames are valid utf8.
+Caller must g_free the result.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>filename</parameter>&nbsp;:</term>
+<listitem><simpara> file name suitable for open(2).
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>quoted</parameter>&nbsp;:</term>
+<listitem><simpara> if TRUE, the resulting utf8 file name will be quoted
+   (unless it is invalid).
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara><parameter>filename</parameter> using utf-8 encoding for display
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-iconv-close"/>gsf_iconv_close ()</title>
+<indexterm><primary>gsf_iconv_close</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_iconv_close                 (<link linkend="GIConv">GIConv</link> handle);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>handle</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-extension-pointer"/>gsf_extension_pointer ()</title>
+<indexterm><primary>gsf_extension_pointer</primary></indexterm><programlisting><link linkend="char">char</link>const * gsf_extension_pointer           (<link linkend="char">char</link> const *path);</programlisting>
+<para>
+Extracts the extension from the end of a filename (the part after the final
+'.' in the filename).</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>path</parameter>&nbsp;:</term>
+<listitem><simpara> A filename or file path.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> A pointer to the extension part of the filename, or a
+pointer to the end of the string if the filename does not
+have an extension.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-base64-encode-simple"/>gsf_base64_encode_simple ()</title>
+<indexterm><primary>gsf_base64_encode_simple</primary></indexterm><programlisting><link linkend="guint8">guint8</link>*     gsf_base64_encode_simple        (<link linkend="guint8">guint8</link> const *data,
+                                             <link linkend="size-t">size_t</link> len);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-base64-encode-close"/>gsf_base64_encode_close ()</title>
+<indexterm><primary>gsf_base64_encode_close</primary></indexterm><programlisting><link linkend="size-t">size_t</link>      gsf_base64_encode_close         (<link linkend="guint8">guint8</link> const *in,
+                                             <link linkend="size-t">size_t</link> inlen,
+                                             <link linkend="gboolean">gboolean</link> break_lines,
+                                             <link linkend="guint8">guint8</link> *out,
+                                             <link linkend="int">int</link> *state,
+                                             <link linkend="guint">guint</link> *save);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>inlen</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>break_lines</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>state</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>save</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-base64-encode-step"/>gsf_base64_encode_step ()</title>
+<indexterm><primary>gsf_base64_encode_step</primary></indexterm><programlisting><link linkend="size-t">size_t</link>      gsf_base64_encode_step          (<link linkend="guint8">guint8</link> const *in,
+                                             <link linkend="size-t">size_t</link> len,
+                                             <link linkend="gboolean">gboolean</link> break_lines,
+                                             <link linkend="guint8">guint8</link> *out,
+                                             <link linkend="int">int</link> *state,
+                                             <link linkend="guint">guint</link> *save);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>break_lines</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>state</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>save</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-base64-decode-simple"/>gsf_base64_decode_simple ()</title>
+<indexterm><primary>gsf_base64_decode_simple</primary></indexterm><programlisting><link linkend="size-t">size_t</link>      gsf_base64_decode_simple        (<link linkend="guint8">guint8</link> *data,
+                                             <link linkend="size-t">size_t</link> len);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-base64-decode-step"/>gsf_base64_decode_step ()</title>
+<indexterm><primary>gsf_base64_decode_step</primary></indexterm><programlisting><link linkend="size-t">size_t</link>      gsf_base64_decode_step          (<link linkend="guint8">guint8</link> const *in,
+                                             <link linkend="size-t">size_t</link> len,
+                                             <link linkend="guint8">guint8</link> *out,
+                                             <link linkend="int">int</link> *state,
+                                             <link linkend="guint">guint</link> *save);</programlisting>
+<para>
+Decodes a chunk of base64 encoded data</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>in</parameter>&nbsp;:</term>
+<listitem><simpara> input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
+<listitem><simpara> max length of data to decode
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter>&nbsp;:</term>
+<listitem><simpara> output stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>state</parameter>&nbsp;:</term>
+<listitem><simpara> holds the number of bits that are stored in <parameter>save</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>save</parameter>&nbsp;:</term>
+<listitem><simpara> leftover bits that have not yet been decoded
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the number of bytes converted
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GINT8:CAPS"/>GSF_LE_GET_GINT8()</title>
+<indexterm><primary>GSF_LE_GET_GINT8</primary></indexterm><programlisting>#define GSF_LE_GET_GINT8(p) ((gint8)GSF_LE_GET_GUINT8(p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GUINT64:CAPS"/>GSF_LE_GET_GUINT64()</title>
+<indexterm><primary>GSF_LE_GET_GUINT64</primary></indexterm><programlisting>#define GSF_LE_GET_GUINT64(p) (gsf_le_get_guint64 (p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GINT16:CAPS"/>GSF_LE_GET_GINT16()</title>
+<indexterm><primary>GSF_LE_GET_GINT16</primary></indexterm><programlisting>#define GSF_LE_GET_GINT16(p) ((gint16)GSF_LE_GET_GUINT16(p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GUINT8:CAPS"/>GSF_LE_GET_GUINT8()</title>
+<indexterm><primary>GSF_LE_GET_GUINT8</primary></indexterm><programlisting>#define GSF_LE_GET_GUINT8(p) (*(guint8 const *)(p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GINT32:CAPS"/>GSF_LE_GET_GINT32()</title>
+<indexterm><primary>GSF_LE_GET_GINT32</primary></indexterm><programlisting>#define GSF_LE_GET_GINT32(p) ((gint32)GSF_LE_GET_GUINT32(p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GUINT16:CAPS"/>GSF_LE_GET_GUINT16()</title>
+<indexterm><primary>GSF_LE_GET_GUINT16</primary></indexterm><programlisting>#define     GSF_LE_GET_GUINT16(p)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GUINT32:CAPS"/>GSF_LE_GET_GUINT32()</title>
+<indexterm><primary>GSF_LE_GET_GUINT32</primary></indexterm><programlisting>#define     GSF_LE_GET_GUINT32(p)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-GINT64:CAPS"/>GSF_LE_GET_GINT64()</title>
+<indexterm><primary>GSF_LE_GET_GINT64</primary></indexterm><programlisting>#define GSF_LE_GET_GINT64(p) ((gint64)GSF_LE_GET_GUINT64(p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-le-get-guint64"/>gsf_le_get_guint64 ()</title>
+<indexterm><primary>gsf_le_get_guint64</primary></indexterm><programlisting><link linkend="guint64">guint64</link>     gsf_le_get_guint64              (<link linkend="void">void</link> const *p);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-FLOAT:CAPS"/>GSF_LE_GET_FLOAT()</title>
+<indexterm><primary>GSF_LE_GET_FLOAT</primary></indexterm><programlisting>#define GSF_LE_GET_FLOAT(p) (gsf_le_get_float (p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-le-get-float"/>gsf_le_get_float ()</title>
+<indexterm><primary>gsf_le_get_float</primary></indexterm><programlisting><link linkend="float">float</link>       gsf_le_get_float                (<link linkend="void">void</link> const *p);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-GET-DOUBLE:CAPS"/>GSF_LE_GET_DOUBLE()</title>
+<indexterm><primary>GSF_LE_GET_DOUBLE</primary></indexterm><programlisting>#define GSF_LE_GET_DOUBLE(p) (gsf_le_get_double (p))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-le-get-double"/>gsf_le_get_double ()</title>
+<indexterm><primary>gsf_le_get_double</primary></indexterm><programlisting><link linkend="double">double</link>      gsf_le_get_double               (<link linkend="void">void</link> const *p);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GUINT8:CAPS"/>GSF_LE_SET_GUINT8()</title>
+<indexterm><primary>GSF_LE_SET_GUINT8</primary></indexterm><programlisting>#define     GSF_LE_SET_GUINT8(p, dat)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GUINT16:CAPS"/>GSF_LE_SET_GUINT16()</title>
+<indexterm><primary>GSF_LE_SET_GUINT16</primary></indexterm><programlisting>#define     GSF_LE_SET_GUINT16(p, dat)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GUINT32:CAPS"/>GSF_LE_SET_GUINT32()</title>
+<indexterm><primary>GSF_LE_SET_GUINT32</primary></indexterm><programlisting>#define     GSF_LE_SET_GUINT32(p, dat)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GINT8:CAPS"/>GSF_LE_SET_GINT8()</title>
+<indexterm><primary>GSF_LE_SET_GINT8</primary></indexterm><programlisting>#define GSF_LE_SET_GINT8(p,dat) GSF_LE_SET_GUINT8((p),(dat))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GINT16:CAPS"/>GSF_LE_SET_GINT16()</title>
+<indexterm><primary>GSF_LE_SET_GINT16</primary></indexterm><programlisting>#define GSF_LE_SET_GINT16(p,dat) GSF_LE_SET_GUINT16((p),(dat))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GINT32:CAPS"/>GSF_LE_SET_GINT32()</title>
+<indexterm><primary>GSF_LE_SET_GINT32</primary></indexterm><programlisting>#define GSF_LE_SET_GINT32(p,dat) GSF_LE_SET_GUINT32((p),(dat))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GINT64:CAPS"/>GSF_LE_SET_GINT64()</title>
+<indexterm><primary>GSF_LE_SET_GINT64</primary></indexterm><programlisting>#define GSF_LE_SET_GINT64(p,dat) GSF_LE_SET_GUINT64((p),(dat))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-GUINT64:CAPS"/>GSF_LE_SET_GUINT64()</title>
+<indexterm><primary>GSF_LE_SET_GUINT64</primary></indexterm><programlisting>#define     GSF_LE_SET_GUINT64(p, dat)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-FLOAT:CAPS"/>GSF_LE_SET_FLOAT()</title>
+<indexterm><primary>GSF_LE_SET_FLOAT</primary></indexterm><programlisting>#define GSF_LE_SET_FLOAT(p,dat) gsf_le_set_float((p),(dat))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-LE-SET-DOUBLE:CAPS"/>GSF_LE_SET_DOUBLE()</title>
+<indexterm><primary>GSF_LE_SET_DOUBLE</primary></indexterm><programlisting>#define GSF_LE_SET_DOUBLE(p,dat) gsf_le_set_double((p),(dat))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-le-set-float"/>gsf_le_set_float ()</title>
+<indexterm><primary>gsf_le_set_float</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_le_set_float                (<link linkend="void">void</link> *p,
+                                             <link linkend="float">float</link> f);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>f</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-le-set-double"/>gsf_le_set_double ()</title>
+<indexterm><primary>gsf_le_set_double</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_le_set_double               (<link linkend="void">void</link> *p,
+                                             <link linkend="double">double</link> d);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>d</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfTimestamp"/>GsfTimestamp</title>
+<indexterm><primary>GsfTimestamp</primary></indexterm><programlisting>typedef struct {
+	GDate	  date;			/* In local timezone */
+	glong     seconds;		/* time of day */
+	GString	  time_zone;		/* possibly blank */
+
+	guint32	  timet;
+} GsfTimestamp;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-new"/>gsf_timestamp_new ()</title>
+<indexterm><primary>gsf_timestamp_new</primary></indexterm><programlisting><link linkend="GsfTimestamp">GsfTimestamp</link>* gsf_timestamp_new             (<link linkend="GDate">GDate</link> const *date,
+                                             <link linkend="glong">glong</link> seconds,
+                                             <link linkend="char">char</link> const *tz);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>date</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>seconds</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>tz</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-new-now"/>gsf_timestamp_new_now ()</title>
+<indexterm><primary>gsf_timestamp_new_now</primary></indexterm><programlisting><link linkend="GsfTimestamp">GsfTimestamp</link>* gsf_timestamp_new_now         (void);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-copy"/>gsf_timestamp_copy ()</title>
+<indexterm><primary>gsf_timestamp_copy</primary></indexterm><programlisting><link linkend="GsfTimestamp">GsfTimestamp</link>* gsf_timestamp_copy            (<link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>stamp</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-free"/>gsf_timestamp_free ()</title>
+<indexterm><primary>gsf_timestamp_free</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_timestamp_free              (<link linkend="GsfTimestamp">GsfTimestamp</link> *stamp);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>stamp</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-as-string"/>gsf_timestamp_as_string ()</title>
+<indexterm><primary>gsf_timestamp_as_string</primary></indexterm><programlisting><link linkend="char">char</link>*       gsf_timestamp_as_string         (<link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>stamp</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-parse"/>gsf_timestamp_parse ()</title>
+<indexterm><primary>gsf_timestamp_parse</primary></indexterm><programlisting><link linkend="int">int</link>         gsf_timestamp_parse             (<link linkend="char">char</link> const *spec,
+                                             <link linkend="GsfTimestamp">GsfTimestamp</link> *stamp);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>spec</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>stamp</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-hash"/>gsf_timestamp_hash ()</title>
+<indexterm><primary>gsf_timestamp_hash</primary></indexterm><programlisting><link linkend="guint">guint</link>       gsf_timestamp_hash              (<link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>stamp</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-timestamp-equal"/>gsf_timestamp_equal ()</title>
+<indexterm><primary>gsf_timestamp_equal</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_timestamp_equal             (<link linkend="GsfTimestamp">GsfTimestamp</link> const *a,
+                                             <link linkend="GsfTimestamp">GsfTimestamp</link> const *b);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>a</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-value-set-timestamp"/>gsf_value_set_timestamp ()</title>
+<indexterm><primary>gsf_value_set_timestamp</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_value_set_timestamp         (<link linkend="GValue">GValue</link> *value,
+                                             <link linkend="GsfTimestamp">GsfTimestamp</link> const *stamp);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>stamp</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="VAL-IS-GSF-TIMESTAMP:CAPS"/>VAL_IS_GSF_TIMESTAMP()</title>
+<indexterm><primary>VAL_IS_GSF_TIMESTAMP</primary></indexterm><programlisting>#define VAL_IS_GSF_TIMESTAMP(v) (G_TYPE_CHECK_VALUE_TYPE((v), GSF_TIMESTAMP_TYPE))
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>v</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-doc-prop-swap-val"/>gsf_doc_prop_swap_val ()</title>
+<indexterm><primary>gsf_doc_prop_swap_val</primary></indexterm><programlisting><link linkend="GValue">GValue</link>*     gsf_doc_prop_swap_val           (<link linkend="GsfDocProp">GsfDocProp</link> *prop,
+                                             <link linkend="GValue">GValue</link> *val);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>prop</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GValue"><type>GValue</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>the current value of <parameter>prop</parameter>, and replaces it with <parameter>val</parameter>
+	Caller is responsible for unsetting and freeing the result.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-property-settings-collect"/>gsf_property_settings_collect ()</title>
+<indexterm><primary>gsf_property_settings_collect</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_property_settings_collect   (<link linkend="GType">GType</link> object_type,
+                                             <link linkend="GParameter">GParameter</link> **p_params,
+                                             <link linkend="size-t">size_t</link> *p_n_params,
+                                             const <link linkend="gchar">gchar</link> *first_property_name,
+                                             ...);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>object_type</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>p_params</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>p_n_params</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-property-settings-collect-valist"/>gsf_property_settings_collect_valist ()</title>
+<indexterm><primary>gsf_property_settings_collect_valist</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_property_settings_collect_valist
+                                            (<link linkend="GType">GType</link> object_type,
+                                             <link linkend="GParameter">GParameter</link> **p_params,
+                                             <link linkend="size-t">size_t</link> *p_n_params,
+                                             const <link linkend="gchar">gchar</link> *first_property_name,
+                                             <link linkend="va-list">va_list</link> var_args);</programlisting>
+<para>
+This function builds a GParameter array suitable for g_object_newv.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>object_type</parameter>&nbsp;:</term>
+<listitem><simpara> the GType for which the properties are being set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>p_params</parameter>&nbsp;:</term>
+<listitem><simpara> a pointer to the GParameter array that holds the properties.
+  (Used for both input and output.  This may point to a NULL pointer if
+  there are no properties collected yet.)
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>p_n_params</parameter>&nbsp;:</term>
+<listitem><simpara> a pointer to the number of properties collected.  (Used for
+  both input and output.)
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter>&nbsp;:</term>
+<listitem><simpara> the name of the first property being set, or NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>var_args</parameter>&nbsp;:</term>
+<listitem><simpara> a va_list holding the remainder of the property names and
+  values, terminated by a NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-property-settings-free"/>gsf_property_settings_free ()</title>
+<indexterm><primary>gsf_property_settings_free</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_property_settings_free      (<link linkend="GParameter">GParameter</link> *params,
+                                             <link linkend="size-t">size_t</link> n_params);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>params</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>n_params</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+
+<!--
+Local variables:
+mode: sgml
+sgml-parent-document: ("../gsf-docs.sgml" "book" "refsect1")
+End:
+-->
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/xml.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/xml.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/xml.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1115 @@
+<refentry id="gsf-XML-and-libxml">
+<refmeta>
+<refentrytitle>XML and libxml</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>XML and libxml</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfXMLOut"/>
+<synopsis>
+
+
+
+#define     <link linkend="GSF-XML-IN-NS:CAPS">GSF_XML_IN_NS</link>                   (id, uri)
+enum        <link linkend="GsfXMLContent">GsfXMLContent</link>;
+            <link linkend="GsfXMLIn">GsfXMLIn</link>;
+<link linkend="int">int</link>         <link linkend="gsf-xmlDocFormatDump">gsf_xmlDocFormatDump</link>            (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="xmlDoc">xmlDoc</link> *cur,
+                                             <link linkend="char">char</link> const *encoding,
+                                             <link linkend="gboolean">gboolean</link> format);
+<link linkend="void">void</link>        <link linkend="gsf-xml-in-doc-free">gsf_xml_in_doc_free</link>             (<link linkend="GsfXMLInDoc">GsfXMLInDoc</link> *doc);
+            <link linkend="GsfXMLBlob">GsfXMLBlob</link>;
+            <link linkend="GsfXMLOut-struct">GsfXMLOut</link>;
+            <link linkend="GsfXMLInDoc">GsfXMLInDoc</link>;
+            <link linkend="GsfXMLInNS">GsfXMLInNS</link>;
+#define     <link linkend="GSF-XML-IN-NODE-FULL:CAPS">GSF_XML_IN_NODE_FULL</link>            (parent_id, id, ns, name, has_content, 	\
+			     deprecated_unused_allow_unknown, check_ns, start, end, user)
+#define     <link linkend="GSF-XML-IN-NODE:CAPS">GSF_XML_IN_NODE</link>                 (parent_id, id, ns, name, has_content, start, end)
+            <link linkend="GsfXMLInNode">GsfXMLInNode</link>;
+<link linkend="gboolean">gboolean</link>    (<link linkend="GsfXMLInUnknownFunc">*GsfXMLInUnknownFunc</link>)          (<link linkend="GsfXMLIn">GsfXMLIn</link> *state,
+                                             <link linkend="xmlChar">xmlChar</link> const *elem,
+                                             <link linkend="xmlChar">xmlChar</link> const **attrs);
+<link linkend="xmlParserCtxt">xmlParserCtxt</link>* <link linkend="gsf-xml-parser-context">gsf_xml_parser_context</link>       (<link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="GsfXMLInDoc">GsfXMLInDoc</link>* <link linkend="gsf-xml-in-doc-new">gsf_xml_in_doc_new</link>             (<link linkend="GsfXMLInNode">GsfXMLInNode</link> *root,
+                                             <link linkend="GsfXMLInNS">GsfXMLInNS</link> *ns);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-xml-in-namecmp">gsf_xml_in_namecmp</link>              (<link linkend="GsfXMLIn">GsfXMLIn</link> const *state,
+                                             <link linkend="char">char</link> const *str,
+                                             unsigned <link linkend="int">int</link> ns_id,
+                                             <link linkend="char">char</link> const *name);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-xml-in-parse">gsf_xml_in_parse</link>                (<link linkend="GsfXMLIn">GsfXMLIn</link> *state,
+                                             <link linkend="GsfInput">GsfInput</link> *input);
+<link linkend="char">char</link>const * <link linkend="gsf-xml-in-check-ns">gsf_xml_in_check_ns</link>             (<link linkend="GsfXMLIn">GsfXMLIn</link> const *state,
+                                             <link linkend="char">char</link> const *str,
+                                             unsigned <link linkend="int">int</link> ns_id);
+<link linkend="void">void</link>        <link linkend="gsf-xml-in-doc-extend">gsf_xml_in_doc_extend</link>           (<link linkend="GsfXMLInDoc">GsfXMLInDoc</link> *doc,
+                                             <link linkend="GsfXMLInNode">GsfXMLInNode</link> *nodes);
+<link linkend="void">void</link>        <link linkend="gsf-xml-in-doc-set-unknown-handler">gsf_xml_in_doc_set_unknown_handler</link>
+                                            (<link linkend="GsfXMLInDoc">GsfXMLInDoc</link> *doc,
+                                             <link linkend="GsfXMLInUnknownFunc">GsfXMLInUnknownFunc</link> handler);
+<link linkend="GsfXMLOut">GsfXMLOut</link>*  <link linkend="gsf-xml-out-new">gsf_xml_out_new</link>                 (<link linkend="GsfOutput">GsfOutput</link> *output);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-set-doc-type">gsf_xml_out_set_doc_type</link>        (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *type);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-start-element">gsf_xml_out_start_element</link>       (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id);
+<link linkend="char">char</link>const * <link linkend="gsf-xml-out-end-element">gsf_xml_out_end_element</link>         (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-cstr">gsf_xml_out_add_cstr</link>            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="char">char</link> const *val_utf8);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-cstr-unchecked">gsf_xml_out_add_cstr_unchecked</link>  (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="char">char</link> const *val_utf8);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-bool">gsf_xml_out_add_bool</link>            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="gboolean">gboolean</link> val);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-int">gsf_xml_out_add_int</link>             (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="int">int</link> val);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-uint">gsf_xml_out_add_uint</link>            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             unsigned <link linkend="int">int</link> val);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-float">gsf_xml_out_add_float</link>           (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="double">double</link> val,
+                                             <link linkend="int">int</link> precision);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-enum">gsf_xml_out_add_enum</link>            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="GType">GType</link> etype,
+                                             <link linkend="gint">gint</link> val);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-color">gsf_xml_out_add_color</link>           (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             unsigned <link linkend="int">int</link> r,
+                                             unsigned <link linkend="int">int</link> g,
+                                             unsigned <link linkend="int">int</link> b);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-add-base64">gsf_xml_out_add_base64</link>          (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="guint8">guint8</link> const *data,
+                                             unsigned <link linkend="int">int</link> len);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-simple-element">gsf_xml_out_simple_element</link>      (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="char">char</link> const *content);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-simple-float-element">gsf_xml_out_simple_float_element</link>
+                                            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="double">double</link> val,
+                                             <link linkend="int">int</link> precision);
+<link linkend="void">void</link>        <link linkend="gsf-xml-out-simple-int-element">gsf_xml_out_simple_int_element</link>  (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="int">int</link> val);
+
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----GsfXMLOut
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GSF-XML-IN-NS:CAPS"/>GSF_XML_IN_NS()</title>
+<indexterm><primary>GSF_XML_IN_NS</primary></indexterm><programlisting>#define     GSF_XML_IN_NS(id, uri)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLContent"/>enum GsfXMLContent</title>
+<indexterm><primary>GsfXMLContent</primary></indexterm><programlisting>typedef enum {
+	GSF_XML_NO_CONTENT,
+	GSF_XML_CONTENT,
+	GSF_XML_SHARED_CONTENT
+} GsfXMLContent;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLIn"/>GsfXMLIn</title>
+<indexterm><primary>GsfXMLIn</primary></indexterm><programlisting>typedef struct {
+	GsfXMLInDoc  const *doc;	/* init before parsing */
+
+    /* look but do not change */
+	GsfXMLInNode const *node;	/* current node */
+	GSList	 	   *state_stack;
+
+	GsfXMLInNS   const *default_ns;	/* optionally NULL */
+	GSList	 	   *ns_stack;
+
+	GString		*content;
+	gint		 unknown_depth;	/* handle recursive unknown tags */
+	GHashTable	*ns_prefixes;	/* current ns prefixes */
+	GPtrArray	*ns_by_id;		/* indexed by id */
+} GsfXMLIn;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-xmlDocFormatDump"/>gsf_xmlDocFormatDump ()</title>
+<indexterm><primary>gsf_xmlDocFormatDump</primary></indexterm><programlisting><link linkend="int">int</link>         gsf_xmlDocFormatDump            (<link linkend="GsfOutput">GsfOutput</link> *output,
+                                             <link linkend="xmlDoc">xmlDoc</link> *cur,
+                                             <link linkend="char">char</link> const *encoding,
+                                             <link linkend="gboolean">gboolean</link> format);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>cur</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>encoding</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-in-doc-free"/>gsf_xml_in_doc_free ()</title>
+<indexterm><primary>gsf_xml_in_doc_free</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_in_doc_free             (<link linkend="GsfXMLInDoc">GsfXMLInDoc</link> *doc);</programlisting>
+<para>
+Free up resources</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>doc</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLBlob"/>GsfXMLBlob</title>
+<indexterm><primary>GsfXMLBlob</primary></indexterm><programlisting>typedef struct _GsfXMLBlob GsfXMLBlob;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLOut-struct"/>GsfXMLOut</title>
+<indexterm><primary>GsfXMLOut</primary></indexterm><programlisting>typedef struct _GsfXMLOut GsfXMLOut;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLInDoc"/>GsfXMLInDoc</title>
+<indexterm><primary>GsfXMLInDoc</primary></indexterm><programlisting>typedef struct _GsfXMLInDoc GsfXMLInDoc;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLInNS"/>GsfXMLInNS</title>
+<indexterm><primary>GsfXMLInNS</primary></indexterm><programlisting>typedef struct {
+	char const *uri;
+	unsigned    ns_id;
+} GsfXMLInNS;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GSF-XML-IN-NODE-FULL:CAPS"/>GSF_XML_IN_NODE_FULL()</title>
+<indexterm><primary>GSF_XML_IN_NODE_FULL</primary></indexterm><programlisting>#define     GSF_XML_IN_NODE_FULL(parent_id, id, ns, name, has_content, 	\
+			     deprecated_unused_allow_unknown, check_ns, start, end, user)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>parent_id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>has_content</parameter>&nbsp;:</term>
+<listitem><simpara>
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown:
+@\
+			     deprecated_unused_allow_unknown: 
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>check_ns</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>start</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>end</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GSF-XML-IN-NODE:CAPS"/>GSF_XML_IN_NODE()</title>
+<indexterm><primary>GSF_XML_IN_NODE</primary></indexterm><programlisting>#define     GSF_XML_IN_NODE(parent_id, id, ns, name, has_content, start, end)</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>parent_id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>has_content</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>start</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>end</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLInNode"/>GsfXMLInNode</title>
+<indexterm><primary>GsfXMLInNode</primary></indexterm><programlisting>typedef struct {
+	char const *id;
+	int	    ns_id;
+	char const *name;
+	char const *parent_id;
+	gboolean parent_initialized;
+	GSList *groups;
+
+	unsigned	has_content;
+	gboolean	deprecated_unused_allow_unknown; /* remains here for binary compat */
+	gboolean	check_children_for_ns;
+
+	void (*start) (GsfXMLIn *state, xmlChar const **attrs);
+	void (*end)   (GsfXMLIn *state, GsfXMLBlob *unknown);
+
+	union {
+		int	    v_int;
+		gboolean    v_bool;
+		gpointer    v_blob;
+		char const *v_str;
+	} user_data;
+} GsfXMLInNode;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GsfXMLInUnknownFunc"/>GsfXMLInUnknownFunc ()</title>
+<indexterm><primary>GsfXMLInUnknownFunc</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    (*GsfXMLInUnknownFunc)          (<link linkend="GsfXMLIn">GsfXMLIn</link> *state,
+                                             <link linkend="xmlChar">xmlChar</link> const *elem,
+                                             <link linkend="xmlChar">xmlChar</link> const **attrs);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>state</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>elem</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>attrs</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-parser-context"/>gsf_xml_parser_context ()</title>
+<indexterm><primary>gsf_xml_parser_context</primary></indexterm><programlisting><link linkend="xmlParserCtxt">xmlParserCtxt</link>* gsf_xml_parser_context       (<link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+Create a libxml2 pull style parser context wrapper around a gsf input.
+This signature will probably change to supply a SAX structure.
+</para>
+<para>
+NOTE : adds a reference to <parameter>input</parameter>
+NOTE : a simple wrapper around a cleaner implementation that will fold in
+ when we add other api changes.  Its not worth bumping just for this</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: A parser context or NULL
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-in-doc-new"/>gsf_xml_in_doc_new ()</title>
+<indexterm><primary>gsf_xml_in_doc_new</primary></indexterm><programlisting><link linkend="GsfXMLInDoc">GsfXMLInDoc</link>* gsf_xml_in_doc_new             (<link linkend="GsfXMLInNode">GsfXMLInNode</link> *root,
+                                             <link linkend="GsfXMLInNS">GsfXMLInNS</link> *ns);</programlisting>
+<para>
+Put the nodes in the NULL terminated array starting at <parameter>root</parameter> and the name
+spaces in the NULL terminated array starting at <parameter>ns</parameter> together.  Link them up
+and prepare the static data structures necessary to validate a doument based
+on that description.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>root</parameter>&nbsp;:</term>
+<listitem><simpara> an array of node descriptors
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns</parameter>&nbsp;:</term>
+<listitem><simpara> an array of namespace identifiers
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>NULL on error
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-in-namecmp"/>gsf_xml_in_namecmp ()</title>
+<indexterm><primary>gsf_xml_in_namecmp</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_xml_in_namecmp              (<link linkend="GsfXMLIn">GsfXMLIn</link> const *state,
+                                             <link linkend="char">char</link> const *str,
+                                             unsigned <link linkend="int">int</link> ns_id,
+                                             <link linkend="char">char</link> const *name);</programlisting>
+<para>
+</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>state</parameter>&nbsp;:</term>
+<listitem><simpara> The <link linkend="GsfXMLIn"><type>GsfXMLIn</type></link> we are reading from.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>str</parameter>&nbsp;:</term>
+<listitem><simpara> The potentially namespace qualified node name.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns_id</parameter>&nbsp;:</term>
+<listitem><simpara> The name space id to check
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara> The target node name
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>TRUE if <parameter>str</parameter> == <parameter>ns_id</parameter>:<parameter>name</parameter> according to <parameter>state</parameter>.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-in-parse"/>gsf_xml_in_parse ()</title>
+<indexterm><primary>gsf_xml_in_parse</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_xml_in_parse                (<link linkend="GsfXMLIn">GsfXMLIn</link> *state,
+                                             <link linkend="GsfInput">GsfInput</link> *input);</programlisting>
+<para>
+Read an xml document from <parameter>input</parameter> and parse based on the the descriptor in
+<parameter>state</parameter>::doc</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>state</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>input</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>FALSE on error
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-in-check-ns"/>gsf_xml_in_check_ns ()</title>
+<indexterm><primary>gsf_xml_in_check_ns</primary></indexterm><programlisting><link linkend="char">char</link>const * gsf_xml_in_check_ns             (<link linkend="GsfXMLIn">GsfXMLIn</link> const *state,
+                                             <link linkend="char">char</link> const *str,
+                                             unsigned <link linkend="int">int</link> ns_id);</programlisting>
+<para>
+According to <parameter>state</parameter> is <parameter>str</parameter> in the namespace <parameter>ns_id</parameter> ?</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>state</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>str</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns_id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>a pointer to <parameter>str</parameter> after the namespace if successful,
+otherwise NULL.
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-in-doc-extend"/>gsf_xml_in_doc_extend ()</title>
+<indexterm><primary>gsf_xml_in_doc_extend</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_in_doc_extend           (<link linkend="GsfXMLInDoc">GsfXMLInDoc</link> *doc,
+                                             <link linkend="GsfXMLInNode">GsfXMLInNode</link> *nodes);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>doc</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>nodes</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-in-doc-set-unknown-handler"/>gsf_xml_in_doc_set_unknown_handler ()</title>
+<indexterm><primary>gsf_xml_in_doc_set_unknown_handler</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_in_doc_set_unknown_handler
+                                            (<link linkend="GsfXMLInDoc">GsfXMLInDoc</link> *doc,
+                                             <link linkend="GsfXMLInUnknownFunc">GsfXMLInUnknownFunc</link> handler);</programlisting>
+<para>
+Call the function <parameter>handler</parameter> when an unexpected child node is found</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>doc</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfXMLInDoc"><type>GsfXMLInDoc</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>handler</parameter>&nbsp;:</term>
+<listitem><simpara> The function to call
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-new"/>gsf_xml_out_new ()</title>
+<indexterm><primary>gsf_xml_out_new</primary></indexterm><programlisting><link linkend="GsfXMLOut">GsfXMLOut</link>*  gsf_xml_out_new                 (<link linkend="GsfOutput">GsfOutput</link> *output);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-set-doc-type"/>gsf_xml_out_set_doc_type ()</title>
+<indexterm><primary>gsf_xml_out_set_doc_type</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_set_doc_type        (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *type);</programlisting>
+<para>
+Store some optional some &lt;!DOCTYPE .. &gt; content</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara> <link linkend="GsfXMLOut"><type>GsfXMLOut</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-start-element"/>gsf_xml_out_start_element ()</title>
+<indexterm><primary>gsf_xml_out_start_element</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_start_element       (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-end-element"/>gsf_xml_out_end_element ()</title>
+<indexterm><primary>gsf_xml_out_end_element</primary></indexterm><programlisting><link linkend="char">char</link>const * gsf_xml_out_end_element         (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-cstr"/>gsf_xml_out_add_cstr ()</title>
+<indexterm><primary>gsf_xml_out_add_cstr</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_cstr            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="char">char</link> const *val_utf8);</programlisting>
+<para>
+dump <parameter>val_utf8</parameter> to an attribute named <parameter>id</parameter> or as the nodes content escaping
+characters as necessary.  If <parameter>val_utf8</parameter> is NULL do nothing (no warning, no
+output)</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val_utf8</parameter>&nbsp;:</term>
+<listitem><simpara> a utf8 encoded string
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-cstr-unchecked"/>gsf_xml_out_add_cstr_unchecked ()</title>
+<indexterm><primary>gsf_xml_out_add_cstr_unchecked</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_cstr_unchecked  (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="char">char</link> const *val_utf8);</programlisting>
+<para>
+dump <parameter>val_utf8</parameter> to an attribute named <parameter>id</parameter> without checking to see if the
+content needs escaping.  A useful performance enhancement when the
+application knows that structure of the content well.  If <parameter>val_utf8</parameter> is NULL
+do nothing (no warning, no output)</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val_utf8</parameter>&nbsp;:</term>
+<listitem><simpara> a utf8 encoded string to export
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-bool"/>gsf_xml_out_add_bool ()</title>
+<indexterm><primary>gsf_xml_out_add_bool</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_bool            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="gboolean">gboolean</link> val);</programlisting>
+<para>
+dump boolean value <parameter>val</parameter> to an attribute named <parameter>id</parameter> or as the nodes content
+Use '1' or '0' to simplify import</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara> a boolean
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-int"/>gsf_xml_out_add_int ()</title>
+<indexterm><primary>gsf_xml_out_add_int</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_int             (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="int">int</link> val);</programlisting>
+<para>
+dump integer value <parameter>val</parameter> to an attribute named <parameter>id</parameter> or as the nodes content</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara> the value
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-uint"/>gsf_xml_out_add_uint ()</title>
+<indexterm><primary>gsf_xml_out_add_uint</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_uint            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             unsigned <link linkend="int">int</link> val);</programlisting>
+<para>
+dump unsigned integer value <parameter>val</parameter> to an attribute named <parameter>id</parameter> or as the nodes
+content</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara> the value
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-float"/>gsf_xml_out_add_float ()</title>
+<indexterm><primary>gsf_xml_out_add_float</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_float           (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="double">double</link> val,
+                                             <link linkend="int">int</link> precision);</programlisting>
+<para>
+dump float value <parameter>val</parameter> to an attribute named <parameter>id</parameter> or as the nodes
+content with precision <parameter>precision</parameter>.  The number will be formattted
+according to the "C" locale.</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara> the value
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>precision</parameter>&nbsp;:</term>
+<listitem><simpara> the number of significant digits to use, -1 meaning "enough".
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-enum"/>gsf_xml_out_add_enum ()</title>
+<indexterm><primary>gsf_xml_out_add_enum</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_enum            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="GType">GType</link> etype,
+                                             <link linkend="gint">gint</link> val);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>etype</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-color"/>gsf_xml_out_add_color ()</title>
+<indexterm><primary>gsf_xml_out_add_color</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_color           (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             unsigned <link linkend="int">int</link> r,
+                                             unsigned <link linkend="int">int</link> g,
+                                             unsigned <link linkend="int">int</link> b);</programlisting>
+<para>
+dump Color <parameter>r</parameter>.<parameter>g</parameter>.<parameter>b</parameter> to an attribute named <parameter>id</parameter> or as the nodes content</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>r</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>g</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-add-base64"/>gsf_xml_out_add_base64 ()</title>
+<indexterm><primary>gsf_xml_out_add_base64</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_add_base64          (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="guint8">guint8</link> const *data,
+                                             unsigned <link linkend="int">int</link> len);</programlisting>
+<para>
+dump <parameter>len</parameter> bytes in <parameter>data</parameter> into the content of node <parameter>id</parameter> using base64</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-simple-element"/>gsf_xml_out_simple_element ()</title>
+<indexterm><primary>gsf_xml_out_simple_element</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_simple_element      (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="char">char</link> const *content);</programlisting>
+<para>
+A convenience routine</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>content</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-simple-float-element"/>gsf_xml_out_simple_float_element ()</title>
+<indexterm><primary>gsf_xml_out_simple_float_element</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_simple_float_element
+                                            (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="double">double</link> val,
+                                             <link linkend="int">int</link> precision);</programlisting>
+<para>
+A convenience routine</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>precision</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-xml-out-simple-int-element"/>gsf_xml_out_simple_int_element ()</title>
+<indexterm><primary>gsf_xml_out_simple_int_element</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_xml_out_simple_int_element  (<link linkend="GsfXMLOut">GsfXMLOut</link> *xml,
+                                             <link linkend="char">char</link> const *id,
+                                             <link linkend="int">int</link> val);</programlisting>
+<para>
+A convenience routine</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/zip.xml
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/zip.xml	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/doc/xml/zip.xml	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,746 @@
+<refentry id="gsf-Zip">
+<refmeta>
+<refentrytitle>Zip</refentrytitle>
+<manvolnum>3</manvolnum>
+<refmiscinfo>GSF Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Zip</refname><refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv><title>Synopsis</title>
+<anchor id="GsfInfileZip"/><anchor id="GsfOutfileZip"/>
+<synopsis>
+
+
+
+            <link linkend="GsfInfileZip-struct">GsfInfileZip</link>;
+<link linkend="GsfInfile">GsfInfile</link>*  <link linkend="gsf-infile-zip-new">gsf_infile_zip_new</link>              (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);
+            <link linkend="GsfOutfileZip-struct">GsfOutfileZip</link>;
+<link linkend="GsfOutfile">GsfOutfile</link>* <link linkend="gsf-outfile-zip-new">gsf_outfile_zip_new</link>             (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="GError">GError</link> **err);
+<link linkend="gboolean">gboolean</link>    <link linkend="gsf-outfile-zip-set-compression-method">gsf_outfile_zip_set_compression_method</link>
+                                            (<link linkend="GsfOutfileZip">GsfOutfileZip</link> *zip,
+                                             <link linkend="GsfZipCompressionMethod">GsfZipCompressionMethod</link> method);
+
+
+            <link linkend="GsfZipDirent">GsfZipDirent</link>;
+<link linkend="GsfZipDirent">GsfZipDirent</link>* <link linkend="gsf-zip-dirent-new">gsf_zip_dirent_new</link>            (void);
+<link linkend="void">void</link>        <link linkend="gsf-zip-dirent-free">gsf_zip_dirent_free</link>             (<link linkend="GsfZipDirent">GsfZipDirent</link> *dirent);
+            <link linkend="GsfZipVDir">GsfZipVDir</link>;
+<link linkend="void">void</link>        <link linkend="gsf-vdir-free">gsf_vdir_free</link>                   (<link linkend="GsfZipVDir">GsfZipVDir</link> *vdir,
+                                             <link linkend="gboolean">gboolean</link> free_dirent);
+<link linkend="GsfZipVDir">GsfZipVDir</link>* <link linkend="gsf-vdir-new">gsf_vdir_new</link>                    (<link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_directory,
+                                             <link linkend="GsfZipDirent">GsfZipDirent</link> *dirent);
+<link linkend="void">void</link>        <link linkend="gsf-vdir-add-child">gsf_vdir_add_child</link>              (<link linkend="GsfZipVDir">GsfZipVDir</link> *vdir,
+                                             <link linkend="GsfZipVDir">GsfZipVDir</link> *child);
+#define     <link linkend="ZIP-DIRENT-USIZE:CAPS">ZIP_DIRENT_USIZE</link>
+#define     <link linkend="ZIP-DIRENT-OFFSET:CAPS">ZIP_DIRENT_OFFSET</link>
+enum        <link linkend="GsfZipCompressionMethod">GsfZipCompressionMethod</link>;
+#define     <link linkend="ZIP-FILE-HEADER-NAME-SIZE:CAPS">ZIP_FILE_HEADER_NAME_SIZE</link>
+#define     <link linkend="ZZIP-IS-STREAMED:CAPS">ZZIP_IS_STREAMED</link>                (p)
+#define     <link linkend="ZIP-FILE-HEADER-EXTRACT:CAPS">ZIP_FILE_HEADER_EXTRACT</link>
+#define     <link linkend="ZIP-TRAILER-SIZE:CAPS">ZIP_TRAILER_SIZE</link>
+#define     <link linkend="ZIP-HEADER-TIME:CAPS">ZIP_HEADER_TIME</link>
+#define     <link linkend="ZIP-FILE-HEADER-SIZE:CAPS">ZIP_FILE_HEADER_SIZE</link>
+#define     <link linkend="ZZIP-IS-ENCRYPTED:CAPS">ZZIP_IS_ENCRYPTED</link>               (p)
+#define     <link linkend="ZIP-HEADER-VERSION:CAPS">ZIP_HEADER_VERSION</link>
+#define     <link linkend="ZIP-BUF-SIZE:CAPS">ZIP_BUF_SIZE</link>
+#define     <link linkend="ZIP-DIRENT-CRC32:CAPS">ZIP_DIRENT_CRC32</link>
+#define     <link linkend="ZIP-HEADER-COMP-SIZE:CAPS">ZIP_HEADER_COMP_SIZE</link>
+#define     <link linkend="ZIP-DIRENT-COMPR-METHOD:CAPS">ZIP_DIRENT_COMPR_METHOD</link>
+#define     <link linkend="ZIP-DIRENT-FILE-TYPE:CAPS">ZIP_DIRENT_FILE_TYPE</link>
+#define     <link linkend="ZIP-FILE-HEADER-EXTRAS-SIZE:CAPS">ZIP_FILE_HEADER_EXTRAS_SIZE</link>
+#define     <link linkend="ZIP-DIRENT-EXTRACT:CAPS">ZIP_DIRENT_EXTRACT</link>
+#define     <link linkend="ZIP-DIRENT-FILE-MODE:CAPS">ZIP_DIRENT_FILE_MODE</link>
+#define     <link linkend="ZIP-DIRENT-FLAGS:CAPS">ZIP_DIRENT_FLAGS</link>
+#define     <link linkend="ZIP-FILE-HEADER-CSIZE:CAPS">ZIP_FILE_HEADER_CSIZE</link>
+#define     <link linkend="ZIP-TRAILER-DIR-SIZE:CAPS">ZIP_TRAILER_DIR_SIZE</link>
+#define     <link linkend="ZIP-TRAILER-COMMENT-SIZE:CAPS">ZIP_TRAILER_COMMENT_SIZE</link>
+#define     <link linkend="ZIP-TRAILER-ENTRIES:CAPS">ZIP_TRAILER_ENTRIES</link>
+#define     <link linkend="ZIP-NAME-SEPARATOR:CAPS">ZIP_NAME_SEPARATOR</link>
+#define     <link linkend="ZIP-HEADER-SIZE:CAPS">ZIP_HEADER_SIZE</link>
+#define     <link linkend="ZIP-HEADER-CRC:CAPS">ZIP_HEADER_CRC</link>
+#define     <link linkend="ZIP-FILE-HEADER-FLAGS:CAPS">ZIP_FILE_HEADER_FLAGS</link>
+#define     <link linkend="ZIP-DIRENT-EXTRAS-SIZE:CAPS">ZIP_DIRENT_EXTRAS_SIZE</link>
+#define     <link linkend="ZIP-HEADER-COMP-METHOD:CAPS">ZIP_HEADER_COMP_METHOD</link>
+#define     <link linkend="ZZIP-IS-COMPRLEVEL:CAPS">ZZIP_IS_COMPRLEVEL</link>              (p)
+#define     <link linkend="ZIP-DIRENT-DOSTIME:CAPS">ZIP_DIRENT_DOSTIME</link>
+#define     <link linkend="ZIP-DIRENT-ENCODER:CAPS">ZIP_DIRENT_ENCODER</link>
+#define     <link linkend="ZIP-HEADER-OS:CAPS">ZIP_HEADER_OS</link>
+#define     <link linkend="ZIP-DIRENT-COMMENT-SIZE:CAPS">ZIP_DIRENT_COMMENT_SIZE</link>
+#define     <link linkend="ZIP-FILE-HEADER-CRC32:CAPS">ZIP_FILE_HEADER_CRC32</link>
+#define     <link linkend="ZIP-HEADER-FLAGS:CAPS">ZIP_HEADER_FLAGS</link>
+#define     <link linkend="ZIP-TRAILER-DISK:CAPS">ZIP_TRAILER_DISK</link>
+#define     <link linkend="ZIP-FILE-HEADER-USIZE:CAPS">ZIP_FILE_HEADER_USIZE</link>
+#define     <link linkend="ZIP-TRAILER-TOTAL-ENTRIES:CAPS">ZIP_TRAILER_TOTAL_ENTRIES</link>
+#define     <link linkend="ZIP-HEADER-NAME-LEN:CAPS">ZIP_HEADER_NAME_LEN</link>
+#define     <link linkend="ZIP-HEADER-UNCOMP-SIZE:CAPS">ZIP_HEADER_UNCOMP_SIZE</link>
+#define     <link linkend="ZIP-TRAILER-DIR-DISK:CAPS">ZIP_TRAILER_DIR_DISK</link>
+#define     <link linkend="ZIP-DIRENT-CSIZE:CAPS">ZIP_DIRENT_CSIZE</link>
+#define     <link linkend="ZIP-TRAILER-DIR-POS:CAPS">ZIP_TRAILER_DIR_POS</link>
+#define     <link linkend="ZIP-BLOCK-SIZE:CAPS">ZIP_BLOCK_SIZE</link>
+#define     <link linkend="ZIP-DIRENT-NAME-SIZE:CAPS">ZIP_DIRENT_NAME_SIZE</link>
+#define     <link linkend="ZIP-DIRENT-SIZE:CAPS">ZIP_DIRENT_SIZE</link>
+#define     <link linkend="ZIP-DIRENT-DISKSTART:CAPS">ZIP_DIRENT_DISKSTART</link>
+#define     <link linkend="ZIP-HEADER-EXTRA-LEN:CAPS">ZIP_HEADER_EXTRA_LEN</link>
+#define     <link linkend="ZIP-FILE-HEADER-COMPR-METHOD:CAPS">ZIP_FILE_HEADER_COMPR_METHOD</link>
+#define     <link linkend="ZIP-FILE-HEADER-DOSTIME:CAPS">ZIP_FILE_HEADER_DOSTIME</link>
+</synopsis>
+</refsynopsisdiv>
+
+<refsect1>
+<title>Object Hierarchy</title>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfInput">GsfInput</link>
+         +----<link linkend="GsfInfile">GsfInfile</link>
+               +----GsfInfileZip
+</synopsis>
+<synopsis>
+
+  <link linkend="GObject">GObject</link>
+   +----<link linkend="GsfOutput">GsfOutput</link>
+         +----<link linkend="GsfOutfile">GsfOutfile</link>
+               +----GsfOutfileZip
+</synopsis>
+
+</refsect1>
+
+
+
+
+
+<refsect1>
+<title>Properties</title>
+<synopsis>
+
+  &quot;<link linkend="GsfInfileZip--compression-level">compression-level</link>&quot;    <link linkend="gint">gint</link>                  : Read
+  &quot;<link linkend="GsfInfileZip--internal-parent">internal-parent</link>&quot;      <link linkend="GsfInfileZip">GsfInfileZip</link>          : Write / Construct Only
+  &quot;<link linkend="GsfInfileZip--source">source</link>&quot;               <link linkend="GsfInput">GsfInput</link>              : Read / Write / Construct Only
+  &quot;<link linkend="GsfOutfileZip--compression-level">compression-level</link>&quot;    <link linkend="gint">gint</link>                  : Read / Write / Construct Only
+  &quot;<link linkend="GsfOutfileZip--entry-name">entry-name</link>&quot;           <link linkend="gchararray">gchararray</link>            : Read / Write / Construct Only
+  &quot;<link linkend="GsfOutfileZip--sink">sink</link>&quot;                 <link linkend="GsfOutput">GsfOutput</link>             : Read / Write / Construct Only
+</synopsis>
+</refsect1>
+
+
+
+<refsect1>
+<title>Description</title>
+<para>
+
+</para>
+</refsect1>
+
+<refsect1>
+<title>Details</title>
+<refsect2>
+<title><anchor id="GsfInfileZip-struct"/>GsfInfileZip</title>
+<indexterm><primary>GsfInfileZip</primary></indexterm><programlisting>typedef struct _GsfInfileZip GsfInfileZip;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-infile-zip-new"/>gsf_infile_zip_new ()</title>
+<indexterm><primary>gsf_infile_zip_new</primary></indexterm><programlisting><link linkend="GsfInfile">GsfInfile</link>*  gsf_infile_zip_new              (<link linkend="GsfInput">GsfInput</link> *source,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+Opens the root directory of a Zip file.
+NOTE : adds a reference to <parameter>source</parameter></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>source</parameter>&nbsp;:</term>
+<listitem><simpara> A base <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara> A <link linkend="GError"><type>GError</type></link>, optionally <literal>null</literal>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: the new zip file handler
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfOutfileZip-struct"/>GsfOutfileZip</title>
+<indexterm><primary>GsfOutfileZip</primary></indexterm><programlisting>typedef struct _GsfOutfileZip GsfOutfileZip;</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-zip-new"/>gsf_outfile_zip_new ()</title>
+<indexterm><primary>gsf_outfile_zip_new</primary></indexterm><programlisting><link linkend="GsfOutfile">GsfOutfile</link>* gsf_outfile_zip_new             (<link linkend="GsfOutput">GsfOutput</link> *sink,
+                                             <link linkend="GError">GError</link> **err);</programlisting>
+<para>
+Creates the root directory of a Zip file and manages the addition of
+children.
+</para>
+<para>
+NOTE : adds a reference to <parameter>sink</parameter></para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>sink</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>: the new zip file handler
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-outfile-zip-set-compression-method"/>gsf_outfile_zip_set_compression_method ()</title>
+<indexterm><primary>gsf_outfile_zip_set_compression_method</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    gsf_outfile_zip_set_compression_method
+                                            (<link linkend="GsfOutfileZip">GsfOutfileZip</link> *zip,
+                                             <link linkend="GsfZipCompressionMethod">GsfZipCompressionMethod</link> method);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>zip</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>method</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfZipDirent"/>GsfZipDirent</title>
+<indexterm><primary>GsfZipDirent</primary></indexterm><programlisting>typedef struct {
+	char                    *name;
+	GsfZipCompressionMethod  compr_method;
+	guint32                  crc32;
+	size_t                   csize;
+	size_t                   usize;
+	gsf_off_t                offset;
+	gsf_off_t                data_offset;
+	guint32                  dostime;
+} GsfZipDirent;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-zip-dirent-new"/>gsf_zip_dirent_new ()</title>
+<indexterm><primary>gsf_zip_dirent_new</primary></indexterm><programlisting><link linkend="GsfZipDirent">GsfZipDirent</link>* gsf_zip_dirent_new            (void);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-zip-dirent-free"/>gsf_zip_dirent_free ()</title>
+<indexterm><primary>gsf_zip_dirent_free</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_zip_dirent_free             (<link linkend="GsfZipDirent">GsfZipDirent</link> *dirent);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>dirent</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="GsfZipVDir"/>GsfZipVDir</title>
+<indexterm><primary>GsfZipVDir</primary></indexterm><programlisting>typedef struct {
+	char *name;
+	gboolean is_directory;
+	GsfZipDirent *dirent;
+	GSList *children, *last_child;
+} GsfZipVDir;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="gsf-vdir-free"/>gsf_vdir_free ()</title>
+<indexterm><primary>gsf_vdir_free</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_vdir_free                   (<link linkend="GsfZipVDir">GsfZipVDir</link> *vdir,
+                                             <link linkend="gboolean">gboolean</link> free_dirent);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>vdir</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>free_dirent</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-vdir-new"/>gsf_vdir_new ()</title>
+<indexterm><primary>gsf_vdir_new</primary></indexterm><programlisting><link linkend="GsfZipVDir">GsfZipVDir</link>* gsf_vdir_new                    (<link linkend="char">char</link> const *name,
+                                             <link linkend="gboolean">gboolean</link> is_directory,
+                                             <link linkend="GsfZipDirent">GsfZipDirent</link> *dirent);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_directory</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dirent</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="gsf-vdir-add-child"/>gsf_vdir_add_child ()</title>
+<indexterm><primary>gsf_vdir_add_child</primary></indexterm><programlisting><link linkend="void">void</link>        gsf_vdir_add_child              (<link linkend="GsfZipVDir">GsfZipVDir</link> *vdir,
+                                             <link linkend="GsfZipVDir">GsfZipVDir</link> *child);</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>vdir</parameter>&nbsp;:</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>child</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-USIZE:CAPS"/>ZIP_DIRENT_USIZE</title>
+<indexterm><primary>ZIP_DIRENT_USIZE</primary></indexterm><programlisting>#define ZIP_DIRENT_USIZE                24
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-OFFSET:CAPS"/>ZIP_DIRENT_OFFSET</title>
+<indexterm><primary>ZIP_DIRENT_OFFSET</primary></indexterm><programlisting>#define ZIP_DIRENT_OFFSET               42
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="GsfZipCompressionMethod"/>enum GsfZipCompressionMethod</title>
+<indexterm><primary>GsfZipCompressionMethod</primary></indexterm><programlisting>typedef enum {
+	GSF_ZIP_STORED =          0,		/* supported for export */
+	GSF_ZIP_SHRUNK =          1,
+	GSF_ZIP_REDUCEDx1 =       2,
+	GSF_ZIP_REDUCEDx2 =       3,
+	GSF_ZIP_REDUCEDx3 =       4,
+	GSF_ZIP_REDUCEDx4 =       5,
+	GSF_ZIP_IMPLODED  =       6,
+	GSF_ZIP_TOKENIZED =       7,
+	GSF_ZIP_DEFLATED =        8,		/* supported for export */
+	GSF_ZIP_DEFLATED_BETTER = 9,
+	GSF_ZIP_IMPLODED_BETTER = 10
+} GsfZipCompressionMethod;
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-NAME-SIZE:CAPS"/>ZIP_FILE_HEADER_NAME_SIZE</title>
+<indexterm><primary>ZIP_FILE_HEADER_NAME_SIZE</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_NAME_SIZE       26
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZZIP-IS-STREAMED:CAPS"/>ZZIP_IS_STREAMED()</title>
+<indexterm><primary>ZZIP_IS_STREAMED</primary></indexterm><programlisting>#define ZZIP_IS_STREAMED(p)    (((*(unsigned char*)p)&gt;&gt;3)&amp;1)
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-EXTRACT:CAPS"/>ZIP_FILE_HEADER_EXTRACT</title>
+<indexterm><primary>ZIP_FILE_HEADER_EXTRACT</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_EXTRACT          4
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-SIZE:CAPS"/>ZIP_TRAILER_SIZE</title>
+<indexterm><primary>ZIP_TRAILER_SIZE</primary></indexterm><programlisting>#define ZIP_TRAILER_SIZE 		22
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-TIME:CAPS"/>ZIP_HEADER_TIME</title>
+<indexterm><primary>ZIP_HEADER_TIME</primary></indexterm><programlisting>#define ZIP_HEADER_TIME                 10
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-SIZE:CAPS"/>ZIP_FILE_HEADER_SIZE</title>
+<indexterm><primary>ZIP_FILE_HEADER_SIZE</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_SIZE            30
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZZIP-IS-ENCRYPTED:CAPS"/>ZZIP_IS_ENCRYPTED()</title>
+<indexterm><primary>ZZIP_IS_ENCRYPTED</primary></indexterm><programlisting>#define ZZIP_IS_ENCRYPTED(p)    ((*(unsigned char*)p)&amp;1)
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-VERSION:CAPS"/>ZIP_HEADER_VERSION</title>
+<indexterm><primary>ZIP_HEADER_VERSION</primary></indexterm><programlisting>#define ZIP_HEADER_VERSION 		 4
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-BUF-SIZE:CAPS"/>ZIP_BUF_SIZE</title>
+<indexterm><primary>ZIP_BUF_SIZE</primary></indexterm><programlisting>#define ZIP_BUF_SIZE 512
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-CRC32:CAPS"/>ZIP_DIRENT_CRC32</title>
+<indexterm><primary>ZIP_DIRENT_CRC32</primary></indexterm><programlisting>#define ZIP_DIRENT_CRC32                16
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-COMP-SIZE:CAPS"/>ZIP_HEADER_COMP_SIZE</title>
+<indexterm><primary>ZIP_HEADER_COMP_SIZE</primary></indexterm><programlisting>#define ZIP_HEADER_COMP_SIZE		18
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-COMPR-METHOD:CAPS"/>ZIP_DIRENT_COMPR_METHOD</title>
+<indexterm><primary>ZIP_DIRENT_COMPR_METHOD</primary></indexterm><programlisting>#define ZIP_DIRENT_COMPR_METHOD         10
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-FILE-TYPE:CAPS"/>ZIP_DIRENT_FILE_TYPE</title>
+<indexterm><primary>ZIP_DIRENT_FILE_TYPE</primary></indexterm><programlisting>#define ZIP_DIRENT_FILE_TYPE            36
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-EXTRAS-SIZE:CAPS"/>ZIP_FILE_HEADER_EXTRAS_SIZE</title>
+<indexterm><primary>ZIP_FILE_HEADER_EXTRAS_SIZE</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_EXTRAS_SIZE     28
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-EXTRACT:CAPS"/>ZIP_DIRENT_EXTRACT</title>
+<indexterm><primary>ZIP_DIRENT_EXTRACT</primary></indexterm><programlisting>#define ZIP_DIRENT_EXTRACT              6
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-FILE-MODE:CAPS"/>ZIP_DIRENT_FILE_MODE</title>
+<indexterm><primary>ZIP_DIRENT_FILE_MODE</primary></indexterm><programlisting>#define ZIP_DIRENT_FILE_MODE            38
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-FLAGS:CAPS"/>ZIP_DIRENT_FLAGS</title>
+<indexterm><primary>ZIP_DIRENT_FLAGS</primary></indexterm><programlisting>#define ZIP_DIRENT_FLAGS                8
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-CSIZE:CAPS"/>ZIP_FILE_HEADER_CSIZE</title>
+<indexterm><primary>ZIP_FILE_HEADER_CSIZE</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_CSIZE           18
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-DIR-SIZE:CAPS"/>ZIP_TRAILER_DIR_SIZE</title>
+<indexterm><primary>ZIP_TRAILER_DIR_SIZE</primary></indexterm><programlisting>#define ZIP_TRAILER_DIR_SIZE 		12
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-COMMENT-SIZE:CAPS"/>ZIP_TRAILER_COMMENT_SIZE</title>
+<indexterm><primary>ZIP_TRAILER_COMMENT_SIZE</primary></indexterm><programlisting>#define ZIP_TRAILER_COMMENT_SIZE	20
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-ENTRIES:CAPS"/>ZIP_TRAILER_ENTRIES</title>
+<indexterm><primary>ZIP_TRAILER_ENTRIES</primary></indexterm><programlisting>#define ZIP_TRAILER_ENTRIES 		8
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-NAME-SEPARATOR:CAPS"/>ZIP_NAME_SEPARATOR</title>
+<indexterm><primary>ZIP_NAME_SEPARATOR</primary></indexterm><programlisting>#define ZIP_NAME_SEPARATOR    '/'
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-SIZE:CAPS"/>ZIP_HEADER_SIZE</title>
+<indexterm><primary>ZIP_HEADER_SIZE</primary></indexterm><programlisting>#define ZIP_HEADER_SIZE 		30
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-CRC:CAPS"/>ZIP_HEADER_CRC</title>
+<indexterm><primary>ZIP_HEADER_CRC</primary></indexterm><programlisting>#define ZIP_HEADER_CRC 			14
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-FLAGS:CAPS"/>ZIP_FILE_HEADER_FLAGS</title>
+<indexterm><primary>ZIP_FILE_HEADER_FLAGS</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_FLAGS            6
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-EXTRAS-SIZE:CAPS"/>ZIP_DIRENT_EXTRAS_SIZE</title>
+<indexterm><primary>ZIP_DIRENT_EXTRAS_SIZE</primary></indexterm><programlisting>#define ZIP_DIRENT_EXTRAS_SIZE          30
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-COMP-METHOD:CAPS"/>ZIP_HEADER_COMP_METHOD</title>
+<indexterm><primary>ZIP_HEADER_COMP_METHOD</primary></indexterm><programlisting>#define ZIP_HEADER_COMP_METHOD           8
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZZIP-IS-COMPRLEVEL:CAPS"/>ZZIP_IS_COMPRLEVEL()</title>
+<indexterm><primary>ZZIP_IS_COMPRLEVEL</primary></indexterm><programlisting>#define ZZIP_IS_COMPRLEVEL(p)  (((*(unsigned char*)p)&gt;&gt;1)&amp;3)
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter>&nbsp;:</term>
+<listitem><simpara>
+
+
+</simpara></listitem></varlistentry>
+</variablelist></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-DOSTIME:CAPS"/>ZIP_DIRENT_DOSTIME</title>
+<indexterm><primary>ZIP_DIRENT_DOSTIME</primary></indexterm><programlisting>#define ZIP_DIRENT_DOSTIME              12
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-ENCODER:CAPS"/>ZIP_DIRENT_ENCODER</title>
+<indexterm><primary>ZIP_DIRENT_ENCODER</primary></indexterm><programlisting>#define ZIP_DIRENT_ENCODER              4
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-OS:CAPS"/>ZIP_HEADER_OS</title>
+<indexterm><primary>ZIP_HEADER_OS</primary></indexterm><programlisting>#define ZIP_HEADER_OS	 		 5
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-COMMENT-SIZE:CAPS"/>ZIP_DIRENT_COMMENT_SIZE</title>
+<indexterm><primary>ZIP_DIRENT_COMMENT_SIZE</primary></indexterm><programlisting>#define ZIP_DIRENT_COMMENT_SIZE         32
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-CRC32:CAPS"/>ZIP_FILE_HEADER_CRC32</title>
+<indexterm><primary>ZIP_FILE_HEADER_CRC32</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_CRC32           14
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-FLAGS:CAPS"/>ZIP_HEADER_FLAGS</title>
+<indexterm><primary>ZIP_HEADER_FLAGS</primary></indexterm><programlisting>#define ZIP_HEADER_FLAGS 	         6
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-DISK:CAPS"/>ZIP_TRAILER_DISK</title>
+<indexterm><primary>ZIP_TRAILER_DISK</primary></indexterm><programlisting>#define ZIP_TRAILER_DISK 		4
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-USIZE:CAPS"/>ZIP_FILE_HEADER_USIZE</title>
+<indexterm><primary>ZIP_FILE_HEADER_USIZE</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_USIZE           22
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-TOTAL-ENTRIES:CAPS"/>ZIP_TRAILER_TOTAL_ENTRIES</title>
+<indexterm><primary>ZIP_TRAILER_TOTAL_ENTRIES</primary></indexterm><programlisting>#define ZIP_TRAILER_TOTAL_ENTRIES 	10
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-NAME-LEN:CAPS"/>ZIP_HEADER_NAME_LEN</title>
+<indexterm><primary>ZIP_HEADER_NAME_LEN</primary></indexterm><programlisting>#define ZIP_HEADER_NAME_LEN		26
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-UNCOMP-SIZE:CAPS"/>ZIP_HEADER_UNCOMP_SIZE</title>
+<indexterm><primary>ZIP_HEADER_UNCOMP_SIZE</primary></indexterm><programlisting>#define ZIP_HEADER_UNCOMP_SIZE          22
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-DIR-DISK:CAPS"/>ZIP_TRAILER_DIR_DISK</title>
+<indexterm><primary>ZIP_TRAILER_DIR_DISK</primary></indexterm><programlisting>#define ZIP_TRAILER_DIR_DISK 		6
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-CSIZE:CAPS"/>ZIP_DIRENT_CSIZE</title>
+<indexterm><primary>ZIP_DIRENT_CSIZE</primary></indexterm><programlisting>#define ZIP_DIRENT_CSIZE                20
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-TRAILER-DIR-POS:CAPS"/>ZIP_TRAILER_DIR_POS</title>
+<indexterm><primary>ZIP_TRAILER_DIR_POS</primary></indexterm><programlisting>#define ZIP_TRAILER_DIR_POS 		16
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-BLOCK-SIZE:CAPS"/>ZIP_BLOCK_SIZE</title>
+<indexterm><primary>ZIP_BLOCK_SIZE</primary></indexterm><programlisting>#define ZIP_BLOCK_SIZE 32768
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-NAME-SIZE:CAPS"/>ZIP_DIRENT_NAME_SIZE</title>
+<indexterm><primary>ZIP_DIRENT_NAME_SIZE</primary></indexterm><programlisting>#define ZIP_DIRENT_NAME_SIZE            28
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-SIZE:CAPS"/>ZIP_DIRENT_SIZE</title>
+<indexterm><primary>ZIP_DIRENT_SIZE</primary></indexterm><programlisting>#define ZIP_DIRENT_SIZE                 46
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-DIRENT-DISKSTART:CAPS"/>ZIP_DIRENT_DISKSTART</title>
+<indexterm><primary>ZIP_DIRENT_DISKSTART</primary></indexterm><programlisting>#define ZIP_DIRENT_DISKSTART            34
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-HEADER-EXTRA-LEN:CAPS"/>ZIP_HEADER_EXTRA_LEN</title>
+<indexterm><primary>ZIP_HEADER_EXTRA_LEN</primary></indexterm><programlisting>#define ZIP_HEADER_EXTRA_LEN		28
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-COMPR-METHOD:CAPS"/>ZIP_FILE_HEADER_COMPR_METHOD</title>
+<indexterm><primary>ZIP_FILE_HEADER_COMPR_METHOD</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_COMPR_METHOD     8
+</programlisting>
+<para>
+
+</para></refsect2>
+<refsect2>
+<title><anchor id="ZIP-FILE-HEADER-DOSTIME:CAPS"/>ZIP_FILE_HEADER_DOSTIME</title>
+<indexterm><primary>ZIP_FILE_HEADER_DOSTIME</primary></indexterm><programlisting>#define ZIP_FILE_HEADER_DOSTIME         10
+</programlisting>
+<para>
+
+</para></refsect2>
+
+</refsect1>
+<refsect1>
+<title>Properties</title>
+<refsect2><title><anchor id="GsfInfileZip--compression-level"/>The &quot;<literal>compression-level</literal>&quot; property</title>
+<programlisting>  &quot;compression-level&quot;    <link linkend="gint">gint</link>                  : Read</programlisting>
+<para>The level of compression used, zero meaning none.</para><para>Allowed values: [0,10]</para>
+<para>Default value: 0</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInfileZip--internal-parent"/>The &quot;<literal>internal-parent</literal>&quot; property</title>
+<programlisting>  &quot;internal-parent&quot;      <link linkend="GsfInfileZip">GsfInfileZip</link>          : Write / Construct Only</programlisting>
+<para>Internal use only.</para></refsect2>
+<refsect2><title><anchor id="GsfInfileZip--source"/>The &quot;<literal>source</literal>&quot; property</title>
+<programlisting>  &quot;source&quot;               <link linkend="GsfInput">GsfInput</link>              : Read / Write / Construct Only</programlisting>
+<para>The archive being interpreted.</para></refsect2>
+<refsect2><title><anchor id="GsfOutfileZip--compression-level"/>The &quot;<literal>compression-level</literal>&quot; property</title>
+<programlisting>  &quot;compression-level&quot;    <link linkend="gint">gint</link>                  : Read / Write / Construct Only</programlisting>
+<para>The level of compression used, zero meaning none.</para><para>Allowed values: [0,10]</para>
+<para>Default value: 8</para>
+</refsect2>
+<refsect2><title><anchor id="GsfOutfileZip--entry-name"/>The &quot;<literal>entry-name</literal>&quot; property</title>
+<programlisting>  &quot;entry-name&quot;           <link linkend="gchararray">gchararray</link>            : Read / Write / Construct Only</programlisting>
+<para>The filename of this member in the archive without path.</para><para>Default value: NULL</para>
+</refsect2>
+<refsect2><title><anchor id="GsfOutfileZip--sink"/>The &quot;<literal>sink</literal>&quot; property</title>
+<programlisting>  &quot;sink&quot;                 <link linkend="GsfOutput">GsfOutput</link>             : Read / Write / Construct Only</programlisting>
+<para>Where the archive is written.</para></refsect2>
+
+</refsect1>
+
+
+
+
+</refentry>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,134 @@
+if OS_WIN32
+
+install-libtool-import-lib:
+	$(INSTALL) .libs/libgsf-1.dll.a $(DESTDIR)$(libdir)
+
+uninstall-libtool-import-lib:
+	-rm $(DESTDIR)$(libdir)/libgsf-1.dll.a
+else
+install-libtool-import-lib:
+uninstall-libtool-import-lib:
+endif
+
+AM_CPPFLAGS = -I$(top_srcdir)/lib/libgsf-1.12.3 $(LIBGSF_CFLAGS) $(Z_CPPFLAGS) \
+	-DGNOMELOCALEDIR=\"$(datadir)/locale\"
+
+lib_LTLIBRARIES = libgsf-1.la
+
+libgsf_1_la_LIBADD  = $(LIBGSF_LIBS) $(Z_LIBS) $(BZ2_LIBS)
+libgsf_1_la_LDFLAGS = -version-info $(VERSION_INFO)
+if PLATFORM_WIN32
+  libgsf_1_la_LDFLAGS += -no-undefined
+endif
+
+libgsf_1_la_SOURCES =		\
+	gsf-utils.c		\
+	gsf-libxml.c		\
+	gsf-doc-meta-data.c	\
+	gsf-docprop-vector.c	\
+	gsf-msole-impl.h	\
+	gsf-msole-utils.c	\
+	gsf-timestamp.c		\
+	gsf-zip-impl.h		\
+	gsf-zip-utils.c		\
+	\
+	gsf-input.c		\
+	gsf-input-bzip.c	\
+	gsf-input-gzip.c 	\
+	gsf-input-iochannel.c	\
+	gsf-input-memory.c 	\
+	gsf-input-proxy.c 	\
+	gsf-input-stdio.c 	\
+	gsf-input-textline.c 	\
+	\
+	gsf-infile.c 		\
+	gsf-infile-msole.c 	\
+	gsf-infile-msvba.c 	\
+	gsf-infile-stdio.c	\
+	gsf-infile-zip.c	\
+	\
+	gsf-output.c 		\
+	gsf-output-bzip.c	\
+	gsf-output-csv.c	\
+	gsf-output-gzip.c 	\
+	gsf-output-iconv.c	\
+	gsf-output-iochannel.c	\
+	gsf-output-memory.c	\
+	gsf-output-stdio.c	\
+	\
+	gsf-outfile.c 		\
+	gsf-outfile-msole.c 	\
+	gsf-outfile-stdio.c	\
+	gsf-outfile-zip.c	\
+	\
+	gsf-shared-memory.c	\
+	gsf-shared-memory.h	\
+	gsf-structured-blob.c	\
+	gsf-blob.c		\
+	gsf-clip-data.c
+#	gsf-output-transaction.c	\
+#	gsf-command-context.c	\
+#	gsf-io-context.c
+
+if !HAVE_GLIB26
+  libgsf_1_la_SOURCES += glib24_26-compat.c
+endif
+
+libgsf_1_includedir = $(includedir)/libgsf-1/gsf
+libgsf_1_include_HEADERS = 	\
+	gsf.h			\
+	gsf-utils.h		\
+	gsf-libxml.h		\
+	gsf-impl-utils.h	\
+	gsf-doc-meta-data.h	\
+	gsf-docprop-vector.h	\
+	gsf-msole-utils.h	\
+	gsf-timestamp.h		\
+	\
+	gsf-input.h		\
+	gsf-input-impl.h	\
+	gsf-input-bzip.h	\
+	gsf-input-gzip.h 	\
+	gsf-input-iochannel.h	\
+	gsf-input-memory.h 	\
+	gsf-input-proxy.h 	\
+	gsf-input-stdio.h 	\
+	gsf-input-textline.h 	\
+	\
+	gsf-infile.h 		\
+	gsf-infile-impl.h 	\
+	gsf-infile-msole.h 	\
+	gsf-infile-msvba.h 	\
+	gsf-infile-stdio.h	\
+	gsf-infile-zip.h	\
+	\
+	gsf-output.h		\
+	gsf-output-impl.h	\
+	gsf-output-bzip.h	\
+	gsf-output-csv.h	\
+	gsf-output-gzip.h 	\
+	gsf-output-iconv.h	\
+	gsf-output-iochannel.h	\
+	gsf-output-memory.h	\
+	gsf-output-stdio.h	\
+	\
+	gsf-outfile.h 		\
+	gsf-outfile-impl.h 	\
+	gsf-outfile-msole.h	\
+	gsf-outfile-stdio.h	\
+	gsf-outfile-zip.h	\
+	\
+	gsf-structured-blob.h   \
+	gsf-meta-names.h	\
+	gsf-blob.h		\
+	gsf-clip-data.h
+#	gsf-command-context.h	\
+#	gsf-io-context.h
+
+if !HAVE_GLIB26
+  libgsf_1_include_HEADERS += glib24_26-compat.h
+endif
+
+install-data-local: install-libtool-import-lib
+
+uninstall-local: uninstall-libtool-import-lib

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,746 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ at PLATFORM_WIN32_TRUE@am__append_1 = -no-undefined
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS) $(Z_CPPFLAGS) \
+	-DGNOMELOCALEDIR=\"$(datadir)/locale\"
+
+
+lib_LTLIBRARIES = libgsf-1.la
+
+libgsf_1_la_LIBADD = $(LIBGSF_LIBS) $(Z_LIBS) $(BZ2_LIBS)
+libgsf_1_la_LDFLAGS = -version-info $(VERSION_INFO) $(am__append_1)
+
+libgsf_1_la_SOURCES = \
+	gsf-utils.c		\
+	gsf-libxml.c		\
+	gsf-doc-meta-data.c	\
+	gsf-docprop-vector.c	\
+	gsf-msole-impl.h	\
+	gsf-msole-utils.c	\
+	gsf-timestamp.c		\
+	gsf-zip-impl.h		\
+	gsf-zip-utils.c		\
+	\
+	gsf-input.c		\
+	gsf-input-bzip.c	\
+	gsf-input-gzip.c 	\
+	gsf-input-iochannel.c	\
+	gsf-input-memory.c 	\
+	gsf-input-proxy.c 	\
+	gsf-input-stdio.c 	\
+	gsf-input-textline.c 	\
+	\
+	gsf-infile.c 		\
+	gsf-infile-msole.c 	\
+	gsf-infile-msvba.c 	\
+	gsf-infile-stdio.c	\
+	gsf-infile-zip.c	\
+	\
+	gsf-output.c 		\
+	gsf-output-bzip.c	\
+	gsf-output-csv.c	\
+	gsf-output-gzip.c 	\
+	gsf-output-iconv.c	\
+	gsf-output-iochannel.c	\
+	gsf-output-memory.c	\
+	gsf-output-stdio.c	\
+	\
+	gsf-outfile.c 		\
+	gsf-outfile-msole.c 	\
+	gsf-outfile-stdio.c	\
+	gsf-outfile-zip.c	\
+	\
+	gsf-shared-memory.c	\
+	gsf-shared-memory.h	\
+	gsf-structured-blob.c	\
+	gsf-blob.c		\
+	gsf-clip-data.c
+
+
+#	gsf-output-transaction.c	\
+#	gsf-command-context.c	\
+#	gsf-io-context.c
+libgsf_1_includedir = $(includedir)/libgsf-1/gsf
+libgsf_1_include_HEADERS = \
+	gsf.h			\
+	gsf-utils.h		\
+	gsf-libxml.h		\
+	gsf-impl-utils.h	\
+	gsf-doc-meta-data.h	\
+	gsf-docprop-vector.h	\
+	gsf-msole-utils.h	\
+	gsf-timestamp.h		\
+	\
+	gsf-input.h		\
+	gsf-input-impl.h	\
+	gsf-input-bzip.h	\
+	gsf-input-gzip.h 	\
+	gsf-input-iochannel.h	\
+	gsf-input-memory.h 	\
+	gsf-input-proxy.h 	\
+	gsf-input-stdio.h 	\
+	gsf-input-textline.h 	\
+	\
+	gsf-infile.h 		\
+	gsf-infile-impl.h 	\
+	gsf-infile-msole.h 	\
+	gsf-infile-msvba.h 	\
+	gsf-infile-stdio.h	\
+	gsf-infile-zip.h	\
+	\
+	gsf-output.h		\
+	gsf-output-impl.h	\
+	gsf-output-bzip.h	\
+	gsf-output-csv.h	\
+	gsf-output-gzip.h 	\
+	gsf-output-iconv.h	\
+	gsf-output-iochannel.h	\
+	gsf-output-memory.h	\
+	gsf-output-stdio.h	\
+	\
+	gsf-outfile.h 		\
+	gsf-outfile-impl.h 	\
+	gsf-outfile-msole.h	\
+	gsf-outfile-stdio.h	\
+	gsf-outfile-zip.h	\
+	\
+	gsf-structured-blob.h   \
+	gsf-meta-names.h	\
+	gsf-blob.h		\
+	gsf-clip-data.h
+
+subdir = gsf
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/gsf-config.h
+CONFIG_CLEAN_FILES = version.c
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+libgsf_1_la_DEPENDENCIES =
+am_libgsf_1_la_OBJECTS = gsf-utils.lo gsf-libxml.lo gsf-doc-meta-data.lo \
+	gsf-docprop-vector.lo gsf-msole-utils.lo gsf-timestamp.lo \
+	gsf-zip-utils.lo gsf-input.lo gsf-input-bzip.lo \
+	gsf-input-gzip.lo gsf-input-iochannel.lo gsf-input-memory.lo \
+	gsf-input-proxy.lo gsf-input-stdio.lo gsf-input-textline.lo \
+	gsf-infile.lo gsf-infile-msole.lo gsf-infile-msvba.lo \
+	gsf-infile-stdio.lo gsf-infile-zip.lo gsf-output.lo \
+	gsf-output-bzip.lo gsf-output-csv.lo gsf-output-gzip.lo \
+	gsf-output-iconv.lo gsf-output-iochannel.lo \
+	gsf-output-memory.lo gsf-output-stdio.lo gsf-outfile.lo \
+	gsf-outfile-msole.lo gsf-outfile-stdio.lo gsf-outfile-zip.lo \
+	gsf-shared-memory.lo gsf-structured-blob.lo gsf-blob.lo \
+	gsf-clip-data.lo
+libgsf_1_la_OBJECTS = $(am_libgsf_1_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsf-blob.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-clip-data.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-doc-meta-data.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-docprop-vector.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-infile-msole.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-infile-msvba.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-infile-stdio.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-infile-zip.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-infile.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-bzip.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-gzip.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-iochannel.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-memory.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-proxy.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-stdio.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-textline.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-libxml.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-msole-utils.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-outfile-msole.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-outfile-stdio.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-outfile-zip.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-outfile.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-bzip.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-csv.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-gzip.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-iconv.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-iochannel.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-memory.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-stdio.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-shared-memory.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-structured-blob.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-timestamp.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-utils.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-zip-utils.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libgsf_1_la_SOURCES)
+HEADERS = $(libgsf_1_include_HEADERS)
+
+DIST_COMMON = $(libgsf_1_include_HEADERS) $(srcdir)/Makefile.in \
+	Makefile.am version.c.in
+SOURCES = $(libgsf_1_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  gsf/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+version.c: $(top_builddir)/config.status version.c.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgsf-1.la: $(libgsf_1_la_OBJECTS) $(libgsf_1_la_DEPENDENCIES) 
+	$(LINK) -rpath $(libdir) $(libgsf_1_la_LDFLAGS) $(libgsf_1_la_OBJECTS) $(libgsf_1_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-blob.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-clip-data.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-doc-meta-data.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-docprop-vector.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-infile-msole.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-infile-msvba.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-infile-stdio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-infile-zip.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-infile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-bzip.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-gzip.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-iochannel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-memory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-proxy.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-stdio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-textline.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-libxml.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-msole-utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-outfile-msole.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-outfile-stdio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-outfile-zip.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-outfile.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-bzip.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-csv.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-gzip.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-iconv.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-iochannel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-memory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-stdio.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-shared-memory.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-structured-blob.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-timestamp.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-utils.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-zip-utils.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgsf_1_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgsf_1_includeHEADERS: $(libgsf_1_include_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgsf_1_includedir)
+	@list='$(libgsf_1_include_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgsf_1_includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgsf_1_includedir)/$$f"; \
+	  $(libgsf_1_includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgsf_1_includedir)/$$f; \
+	done
+
+uninstall-libgsf_1_includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgsf_1_include_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgsf_1_includedir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgsf_1_includedir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(libgsf_1_includedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-libgsf_1_includeHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgsf_1_includeHEADERS uninstall-local
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-data-local \
+	install-exec install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-libgsf_1_includeHEADERS \
+	install-man install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgsf_1_includeHEADERS uninstall-local
+
+
+ at OS_WIN32_TRUE@install-libtool-import-lib:
+ at OS_WIN32_TRUE@	$(INSTALL) .libs/libgsf-1.dll.a $(DESTDIR)$(libdir)
+
+ at OS_WIN32_TRUE@uninstall-libtool-import-lib:
+ at OS_WIN32_TRUE@	-rm $(DESTDIR)$(libdir)/libgsf-1.dll.a
+ at OS_WIN32_FALSE@install-libtool-import-lib:
+ at OS_WIN32_FALSE@uninstall-libtool-import-lib:
+#	gsf-command-context.h	\
+#	gsf-io-context.h
+
+install-data-local: install-libtool-import-lib
+
+uninstall-local: uninstall-libtool-import-lib
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,974 @@
+/** jsled, 2005-11-08: copied from glib-2.6.6 to support libgsf compilation
+    against glib-2.4.14. **/
+
+#include "glib24_26_compat.h"
+
+/* gstdio.c - wrappers for C library functions
+ *
+ * Copyright 2004 Tor Lillqvist
+ *
+ * GLib is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * GLib 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GLib; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#define G_STDIO_NO_WRAP_ON_UNIX
+
+#include "glib.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef G_OS_WIN32
+#include <errno.h>
+#include <wchar.h>
+#include <direct.h>
+#include <io.h>
+#endif
+
+//#include "gstdio.h"
+
+#include "galias.h"
+
+#if !defined (G_OS_UNIX) && !defined (G_OS_WIN32) && !defined (G_OS_BEOS)
+#error Please port this to your operating system
+#endif
+
+
+/**
+ * g_open:
+ * @filename: a pathname in the GLib file name encoding
+ * @flags: as in open()
+ * @mode: as in open()
+ *
+ * A wrapper for the POSIX open() function. The open() function is
+ * used to convert a pathname into a file descriptor. Note that on
+ * POSIX systems file descriptors are implemented by the operating
+ * system. On Windows, it's the C library that implements open() and
+ * file descriptors. The actual Windows API for opening files is
+ * something different.
+ *
+ * See the C library manual for more details about open().
+ *
+ * Returns: a new file descriptor, or -1 if an error occurred. The
+ * return value can be used exactly like the return value from open().
+ * 
+ * Since: 2.6
+ */
+int
+g_open (const gchar *filename,
+	int          flags,
+	int          mode)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+      
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = _wopen (wfilename, flags, mode);
+      save_errno = errno;
+
+      g_free (wfilename);
+
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {    
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = open (cp_filename, flags, mode);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return open (filename, flags, mode);
+#endif
+}
+
+/**
+ * g_rename:
+ * @oldfilename: a pathname in the GLib file name encoding
+ * @newfilename: a pathname in the GLib file name encoding
+ *
+ * A wrapper for the POSIX rename() function. The rename() function 
+ * renames a file, moving it between directories if required.
+ * 
+ * See your C library manual for more details about how rename() works
+ * on your system. Note in particular that on Windows, it is in
+ * general not possible to rename a file if a file with the new name
+ * already exists. Also it is not possible in general to rename an
+ * open file.
+ *
+ * Returns: 0 if the renaming succeeded, -1 if an error occurred
+ * 
+ * Since: 2.6
+ */
+int
+g_rename (const gchar *oldfilename,
+	  const gchar *newfilename)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *woldfilename = g_utf8_to_utf16 (oldfilename, -1, NULL, NULL, NULL);
+      wchar_t *wnewfilename;
+      int retval;
+      int save_errno;
+
+      if (woldfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      wnewfilename = g_utf8_to_utf16 (newfilename, -1, NULL, NULL, NULL);
+
+      if (wnewfilename == NULL)
+	{
+	  g_free (woldfilename);
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = _wrename (woldfilename, wnewfilename);
+      save_errno = errno;
+
+      g_free (woldfilename);
+      g_free (wnewfilename);
+      
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_oldfilename = g_locale_from_utf8 (oldfilename, -1, NULL, NULL, NULL);
+      gchar *cp_newfilename;
+      int retval;
+      int save_errno;
+
+      if (cp_oldfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      cp_newfilename = g_locale_from_utf8 (newfilename, -1, NULL, NULL, NULL);
+
+      if (cp_newfilename == NULL)
+	{
+	  g_free (cp_oldfilename);
+	  errno = EINVAL;
+	  return -1;
+	}
+	
+      retval = rename (cp_oldfilename, cp_newfilename);
+      save_errno = errno;
+
+      g_free (cp_oldfilename);
+      g_free (cp_newfilename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return rename (oldfilename, newfilename);
+#endif
+}
+
+/**
+ * g_mkdir: 
+ * @filename: a pathname in the GLib file name encoding
+ * @mode: permissions to use for the newly created directory
+ *
+ * A wrapper for the POSIX mkdir() function. The mkdir() function 
+ * attempts to create a directory with the given name and permissions.
+ * 
+ * See the C library manual for more details about mkdir().
+ *
+ * Returns: 0 if the directory was successfully created, -1 if an error 
+ *    occurred
+ * 
+ * Since: 2.6
+ */
+int
+g_mkdir (const gchar *filename,
+	 int          mode)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = _wmkdir (wfilename);
+      save_errno = errno;
+
+      g_free (wfilename);
+      
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = mkdir (cp_filename);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return mkdir (filename, mode);
+#endif
+}
+
+/**
+ * g_stat: 
+ * @filename: a pathname in the GLib file name encoding
+ * @buf: a pointer to a <structname>stat</structname> struct, which
+ *    will be filled with the file information
+ *
+ * A wrapper for the POSIX stat() function. The stat() function 
+ * returns information about a file.
+ * 
+ * See the C library manual for more details about stat().
+ *
+ * Returns: 0 if the information was successfully retrieved, -1 if an error 
+ *    occurred
+ * 
+ * Since: 2.6
+ */
+int
+g_stat (const gchar *filename,
+	struct stat *buf)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = _wstat (wfilename, (struct _stat *) buf);
+      save_errno = errno;
+
+      g_free (wfilename);
+
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = stat (cp_filename, buf);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return stat (filename, buf);
+#endif
+}
+
+/**
+ * g_lstat: 
+ * @filename: a pathname in the GLib file name encoding
+ * @buf: a pointer to a <structname>stat</structname> struct, which
+ *    will be filled with the file information
+ *
+ * A wrapper for the POSIX lstat() function. The lstat() function is
+ * like stat() except that in the case of symbolic links, it returns
+ * information about the symbolic link itself and not the file that it
+ * refers to. If the system does not support symbolic links g_lstat()
+ * is identical to g_stat().
+ * 
+ * See the C library manual for more details about lstat().
+ *
+ * Returns: 0 if the information was successfully retrieved, -1 if an error 
+ *    occurred
+ * 
+ * Since: 2.6
+ */
+int
+g_lstat (const gchar *filename,
+	 struct stat *buf)
+{
+#ifdef HAVE_LSTAT
+  /* This can't be Win32, so don't do the widechar dance. */
+  return lstat (filename, buf);
+#else
+  return g_stat (filename, buf);
+#endif
+}
+
+/**
+ * g_unlink:
+ * @filename: a pathname in the GLib file name encoding
+ *
+ * A wrapper for the POSIX unlink() function. The unlink() function 
+ * deletes a name from the filesystem. If this was the last link to the 
+ * file and no processes have it opened, the diskspace occupied by the
+ * file is freed.
+ * 
+ * See your C library manual for more details about unlink(). Note
+ * that on Windows, it is in general not possible to delete files that
+ * are open to some process, or mapped into memory.
+ *
+ * Returns: 0 if the name was successfully deleted, -1 if an error 
+ *    occurred
+ * 
+ * Since: 2.6
+ */
+int
+g_unlink (const gchar *filename)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = _wunlink (wfilename);
+      save_errno = errno;
+
+      g_free (wfilename);
+
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = unlink (cp_filename);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return unlink (filename);
+#endif
+}
+
+/**
+ * g_remove:
+ * @filename: a pathname in the GLib file name encoding
+ *
+ * A wrapper for the POSIX remove() function. The remove() function
+ * deletes a name from the filesystem.
+ * 
+ * See your C library manual for more details about how remove() works
+ * on your system. On Unix, remove() removes also directories, as it
+ * calls unlink() for files and rmdir() for directories. On Windows,
+ * although remove() in the C library only works for files, this
+ * function tries first remove() and then if that fails rmdir(), and
+ * thus works for both files and directories. Note however, that on
+ * Windows, it is in general not possible to remove a file that is
+ * open to some process, or mapped into memory.
+ *
+ * Returns: 0 if the file was successfully removed, -1 if an error 
+ *    occurred
+ * 
+ * Since: 2.6
+ */
+int
+g_remove (const gchar *filename)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = _wremove (wfilename);
+      if (retval == -1)
+	retval = _wrmdir (wfilename);
+      save_errno = errno;
+
+      g_free (wfilename);
+
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+      
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = remove (cp_filename);
+      if (retval == -1)
+	retval = rmdir (cp_filename);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return remove (filename);
+#endif
+}
+
+/**
+ * g_rmdir:
+ * @filename: a pathname in the GLib file name encoding
+ *
+ * A wrapper for the POSIX rmdir() function. The rmdir() function
+ * deletes a directory from the filesystem.
+ * 
+ * See your C library manual for more details about how rmdir() works
+ * on your system.
+ *
+ * Returns: 0 if the directory was successfully removed, -1 if an error 
+ *    occurred
+ * 
+ * Since: 2.6
+ */
+int
+g_rmdir (const gchar *filename)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+      
+      retval = _wrmdir (wfilename);
+      save_errno = errno;
+
+      g_free (wfilename);
+
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      int retval;
+      int save_errno;
+
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return -1;
+	}
+
+      retval = rmdir (cp_filename);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return rmdir (filename);
+#endif
+}
+
+/**
+ * g_fopen:
+ * @filename: a pathname in the GLib file name encoding
+ * @mode: a string describing the mode in which the file should be 
+ *   opened
+ *
+ * A wrapper for the POSIX fopen() function. The fopen() function opens
+ * a file and associates a new stream with it. 
+ * 
+ * See the C library manual for more details about fopen().
+ *
+ * Returns: A <typename>FILE</typename> pointer if the file was successfully
+ *    opened, or %NULL if an error occurred
+ * 
+ * Since: 2.6
+ */
+FILE *
+g_fopen (const gchar *filename,
+	 const gchar *mode)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      wchar_t *wmode;
+      FILE *retval;
+      int save_errno;
+
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return NULL;
+	}
+
+      wmode = g_utf8_to_utf16 (mode, -1, NULL, NULL, NULL);
+
+      if (wmode == NULL)
+	{
+	  g_free (wfilename);
+	  errno = EINVAL;
+	  return NULL;
+	}
+	
+      retval = _wfopen (wfilename, wmode);
+      save_errno = errno;
+
+      g_free (wfilename);
+      g_free (wmode);
+
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      FILE *retval;
+      int save_errno;
+
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return NULL;
+	}
+
+      retval = fopen (cp_filename, mode);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return fopen (filename, mode);
+#endif
+}
+
+/**
+ * g_freopen:
+ * @filename: a pathname in the GLib file name encoding
+ * @mode: a string describing the mode in which the file should be 
+ *   opened
+ * @stream: an existing stream which will be reused, or %NULL
+ *
+ * A wrapper for the POSIX freopen() function. The freopen() function
+ * opens a file and associates it with an existing stream.
+ * 
+ * See the C library manual for more details about freopen().
+ *
+ * Returns: A <typename>FILE</typename> pointer if the file was successfully
+ *    opened, or %NULL if an error occurred.
+ * 
+ * Since: 2.6
+ */
+FILE *
+g_freopen (const gchar *filename,
+	   const gchar *mode,
+	   FILE        *stream)
+{
+#ifdef G_OS_WIN32
+  if (G_WIN32_HAVE_WIDECHAR_API ())
+    {
+      wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+      wchar_t *wmode;
+      FILE *retval;
+      int save_errno;
+
+      if (wfilename == NULL)
+	{
+	  errno = EINVAL;
+	  return NULL;
+	}
+      
+      wmode = g_utf8_to_utf16 (mode, -1, NULL, NULL, NULL);
+
+      if (wmode == NULL)
+	{
+	  g_free (wfilename);
+	  errno = EINVAL;
+	  return NULL;
+	}
+      
+      retval = _wfreopen (wfilename, wmode, stream);
+      save_errno = errno;
+
+      g_free (wfilename);
+      g_free (wmode);
+
+      errno = save_errno;
+      return retval;
+    }
+  else
+    {
+      gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+      FILE *retval;
+      int save_errno;
+
+      if (cp_filename == NULL)
+	{
+	  errno = EINVAL;
+	  return NULL;
+	}
+
+      retval = freopen (cp_filename, mode, stream);
+      save_errno = errno;
+
+      g_free (cp_filename);
+
+      errno = save_errno;
+      return retval;
+    }
+#else
+  return freopen (filename, mode, stream);
+#endif
+}
+
+#define __G_STDIO_C__
+#include "galiasdef.c"
+
+/** ------------------------------------------------------------ **/
+/* START gconvert.c  */
+
+#include <glib/gunicode.h>
+#include <glib/gconvert.h>
+#include <glib/gthread.h>
+
+/**
+ * g_get_filename_charsets:
+ * @charsets: return location for the %NULL-terminated list of encoding names
+ *
+ * Determines the preferred character sets used for filenames.
+ * The first character set from the @charsets is the filename encoding, the
+ * subsequent character sets are used when trying to generate a displayable
+ * representation of a filename, see g_filename_display_name().
+ *
+ * On Unix, the character sets are determined by consulting the
+ * environment variables <envar>G_FILENAME_ENCODING</envar> and
+ * <envar>G_BROKEN_FILENAMES</envar>. On Windows, the character set
+ * used in the GLib API is always UTF-8 and said environment variables
+ * have no effect.
+ *
+ * <envar>G_FILENAME_ENCODING</envar> may be set to a comma-separated list 
+ * of character set names. The special token "@locale" is taken to mean the 
+ * character set for the current locale. If <envar>G_FILENAME_ENCODING</envar> 
+ * is not set, but <envar>G_BROKEN_FILENAMES</envar> is, the character set of 
+ * the current locale is taken as the filename encoding. If neither environment
+ * variable is set, UTF-8 is taken as the filename encoding, but the character
+ * set of the current locale is also put in the list of encodings.
+ *
+ * The returned @charsets belong to GLib and must not be freed.
+ *
+ * Note that on Unix, regardless of the locale character set or
+ * <envar>G_FILENAME_ENCODING</envar> value, the actual file names present on a
+ * system might be in any random encoding or just gibberish.
+ *
+ * Return value: %TRUE if the filename encoding is UTF-8.
+ * 
+ * Since: 2.6
+ */
+gboolean
+g_get_filename_charsets (G_CONST_RETURN gchar ***filename_charsets)
+{
+  static GStaticPrivate cache_private = G_STATIC_PRIVATE_INIT;
+  GFilenameCharsetCache *cache = g_static_private_get (&cache_private);
+  const gchar *charset;
+
+  if (!cache)
+    {
+      cache = g_new0 (GFilenameCharsetCache, 1);
+      g_static_private_set (&cache_private, cache, filename_charset_cache_free);
+    }
+
+  g_get_charset (&charset);
+
+  if (!(cache->charset && strcmp (cache->charset, charset) == 0))
+    {
+      const gchar *new_charset;
+      gchar *p;
+      gint i;
+
+      g_free (cache->charset);
+      g_strfreev (cache->filename_charsets);
+      cache->charset = g_strdup (charset);
+      
+      p = getenv ("G_FILENAME_ENCODING");
+      if (p != NULL && p[0] != '\0') 
+	{
+	  cache->filename_charsets = g_strsplit (p, ",", 0);
+	  cache->is_utf8 = (strcmp (cache->filename_charsets[0], "UTF-8") == 0);
+
+	  for (i = 0; cache->filename_charsets[i]; i++)
+	    {
+	      if (strcmp ("@locale", cache->filename_charsets[i]) == 0)
+		{
+		  g_get_charset (&new_charset);
+		  g_free (cache->filename_charsets[i]);
+		  cache->filename_charsets[i] = g_strdup (new_charset);
+		}
+	    }
+	}
+      else if (getenv ("G_BROKEN_FILENAMES") != NULL)
+	{
+	  cache->filename_charsets = g_new0 (gchar *, 2);
+	  cache->is_utf8 = g_get_charset (&new_charset);
+	  cache->filename_charsets[0] = g_strdup (new_charset);
+	}
+      else 
+	{
+	  cache->filename_charsets = g_new0 (gchar *, 3);
+	  cache->is_utf8 = TRUE;
+	  cache->filename_charsets[0] = g_strdup ("UTF-8");
+	  if (!g_get_charset (&new_charset))
+	    cache->filename_charsets[1] = g_strdup (new_charset);
+	}
+    }
+
+  if (filename_charsets)
+    *filename_charsets = (const gchar **)cache->filename_charsets;
+
+  return cache->is_utf8;
+}
+
+#else /* G_PLATFORM_WIN32 */
+
+gboolean
+g_get_filename_charsets (G_CONST_RETURN gchar ***filename_charsets) 
+{
+  static const gchar *charsets[] = {
+    "UTF-8",
+    NULL
+  };
+
+#ifdef G_OS_WIN32
+  /* On Windows GLib pretends that the filename charset is UTF-8 */
+  if (filename_charsets)
+    *filename_charsets = charsets;
+
+  return TRUE;
+#else
+  gboolean result;
+
+  /* Cygwin works like before */
+  result = g_get_charset (&(charsets[0]));
+
+  if (filename_charsets)
+    *filename_charsets = charsets;
+
+  return result;
+#endif
+}
+
+#endif /* G_PLATFORM_WIN32 */
+
+static gchar *
+make_valid_utf8 (const gchar *name)
+{
+  GString *string;
+  const gchar *remainder, *invalid;
+  gint remaining_bytes, valid_bytes;
+  
+  string = NULL;
+  remainder = name;
+  remaining_bytes = strlen (name);
+  
+  while (remaining_bytes != 0) 
+    {
+      if (g_utf8_validate (remainder, remaining_bytes, &invalid)) 
+	break;
+      valid_bytes = invalid - remainder;
+    
+      if (string == NULL) 
+	string = g_string_sized_new (remaining_bytes);
+
+      g_string_append_len (string, remainder, valid_bytes);
+      g_string_append_c (string, '?');
+      
+      remaining_bytes -= valid_bytes + 1;
+      remainder = invalid + 1;
+    }
+  
+  if (string == NULL)
+    return g_strdup (name);
+  
+  g_string_append (string, remainder);
+  g_string_append (string, " (invalid encoding)");
+
+  g_assert (g_utf8_validate (string->str, -1, NULL));
+  
+  return g_string_free (string, FALSE);
+}
+
+/**
+ * g_filename_display_name:
+ * @filename: a pathname hopefully in the GLib file name encoding
+ * 
+ * Converts a filename into a valid UTF-8 string. The 
+ * conversion is not necessarily reversible, so you 
+ * should keep the original around and use the return
+ * value of this function only for display purposes.
+ * Unlike g_filename_to_utf8(), the result is guaranteed 
+ * to be non-NULL even if the filename actually isn't in the GLib
+ * file name encoding.
+ *
+ * If you know the whole pathname of the file you should use
+ * g_filename_display_basename(), since that allows location-based
+ * translation of filenames.
+ *
+ * Return value: a newly allocated string containing
+ *   a rendition of the filename in valid UTF-8
+ *
+ * Since: 2.6
+ **/
+gchar *
+g_filename_display_name (const gchar *filename)
+{
+  gint i;
+  const gchar **charsets;
+  gchar *display_name = NULL;
+  gboolean is_utf8;
+ 
+  is_utf8 = g_get_filename_charsets (&charsets);
+
+  if (is_utf8)
+    {
+      if (g_utf8_validate (filename, -1, NULL))
+	display_name = g_strdup (filename);
+    }
+  
+  if (!display_name)
+    {
+      /* Try to convert from the filename charsets to UTF-8.
+       * Skip the first charset if it is UTF-8.
+       */
+      for (i = is_utf8 ? 1 : 0; charsets[i]; i++)
+	{
+	  display_name = g_convert (filename, -1, "UTF-8", charsets[i], 
+				    NULL, NULL, NULL);
+
+	  if (display_name)
+	    break;
+	}
+    }
+  
+  /* if all conversions failed, we replace invalid UTF-8
+   * by a question mark
+   */
+  if (!display_name) 
+    display_name = make_valid_utf8 (filename);
+
+  return display_name;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/glib24_26-compat.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,121 @@
+/* This file has been copied from glib-2.6.6 into libgsf-1.12.3 to support
+ * compilation against glib-2.4.14. -- jsled, 2005-11-08
+ */
+
+#ifndef __GLIB_24_26_COMPAT_H__
+#define __GLIB_24_26_COMPAT_H__
+
+// START from gstdio.h
+/* gstdio.h - GFilename wrappers for C library functions
+ *
+ * Copyright 2004 Tor Lillqvist
+ *
+ * GLib is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * GLib 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with GLib; see the file COPYING.LIB.  If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <sys/stat.h>
+
+#if defined(G_OS_UNIX) && !defined(G_STDIO_NO_WRAP_ON_UNIX)
+
+/* Just pass on to the system functions, so there's no potential for data
+ * format mismatches, especially with large file interfaces.
+ */
+
+#define g_open    open
+#define g_rename  rename
+#define g_mkdir   mkdir
+#define g_stat    stat
+#define g_lstat   lstat
+#define g_unlink  unlink
+#define g_remove  remove
+#define g_rmdir   rmdir
+#define g_fopen   fopen
+#define g_freopen freopen
+
+#else /* ! G_OS_UNIX */
+
+/* Wrappers for C library functions that take pathname arguments. On
+ * Unix, the pathname is a file name as it literally is in the file
+ * system. On well-maintained systems with consistent users who know
+ * what they are doing and no exchange of files with others this would
+ * be a well-defined encoding, preferrably UTF-8. On Windows, the
+ * pathname is always in UTF-8, even if that is not the on-disk
+ * encoding, and not the encoding accepted by the C library or Win32
+ * API.
+ */
+
+int g_open      (const gchar *filename,
+                 int          flags,
+                 int          mode);
+
+int g_rename    (const gchar *oldfilename,
+                 const gchar *newfilename);
+
+int g_mkdir     (const gchar *filename,
+                 int          mode);
+
+int g_stat      (const gchar *filename,
+                 struct stat *buf);
+
+int g_lstat     (const gchar *filename,
+                 struct stat *buf);
+
+int g_unlink    (const gchar *filename);
+
+int g_remove    (const gchar *filename);
+
+int g_rmdir (const gchar *filename);
+
+FILE *g_fopen   (const gchar *filename,
+                 const gchar *mode);
+
+FILE *g_freopen (const gchar *filename,
+                 const gchar *mode,
+                 FILE        *stream);
+
+#endif /* G_OS_UNIX */
+// END from gstdio.h
+
+// START from gconvert.h
+gchar *g_filename_display_name (const gchar *filename); // G_GNUC_MALLOC;
+// END from gconvert.h
+
+/* from glib-2.6[.6] gutils.h */
+#ifdef G_OS_WIN32
+
+/* On Win32, the canonical directory separator is the backslash, and
+ * the search path separator is the semicolon. Note that also the
+ * (forward) slash works as directory separator.
+ */
+#define G_DIR_SEPARATOR '\\'
+#define G_DIR_SEPARATOR_S "\\"
+#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
+#define G_SEARCHPATH_SEPARATOR ';'
+#define G_SEARCHPATH_SEPARATOR_S ";"
+
+#else  /* !G_OS_WIN32 */
+
+/* Unix */
+
+#define G_DIR_SEPARATOR '/'
+#define G_DIR_SEPARATOR_S "/"
+#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR)
+#define G_SEARCHPATH_SEPARATOR ':'
+#define G_SEARCHPATH_SEPARATOR_S ":"
+
+#endif /* !G_OS_WIN32 */
+
+#endif /* __GLIB_24_26_COMPAT_H__ */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,142 @@
+#include "gsf-config.h"
+#include <glib/gi18n-lib.h>
+#include <string.h>
+#include "gsf-utils.h"
+#include "gsf-blob.h"
+
+/* Private part of the GsfBlob structure */
+struct _GsfBlobPrivate {
+	gsize size;
+	gpointer data;
+};
+
+G_DEFINE_TYPE (GsfBlob, gsf_blob, G_TYPE_OBJECT);
+
+static void gsf_blob_finalize (GObject *object);
+
+static void
+gsf_blob_class_init (GsfBlobClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class = (GObjectClass *) class;
+
+	object_class->finalize = gsf_blob_finalize;
+}
+
+static void
+gsf_blob_init (GsfBlob *blob)
+{
+	GsfBlobPrivate *priv;
+
+	priv = g_new0 (GsfBlobPrivate, 1);
+	blob->priv = priv;
+}
+
+static void
+gsf_blob_finalize (GObject *object)
+{
+	GsfBlob *blob;
+	GsfBlobPrivate *priv;
+
+	blob = GSF_BLOB (object);
+	priv = blob->priv;
+
+	g_free (priv->data);
+	g_free (priv);
+
+	G_OBJECT_CLASS (gsf_blob_parent_class)->finalize (object);
+}
+
+/**
+ * gsf_blob_new:
+ * @size: Size of the data in bytes.
+ * @data_to_copy: Data which will be copied into the blob, or %NULL if @size is zero.
+ * @error: location to store error, or %NULL.
+ * 
+ * Creates a new #GsfBlob object to hold the specified data.  The blob can then
+ * be used as a facility for reference-counting for the data.  The data is
+ * copied internally, so the blob does not hold references to external chunks
+ * of memory.
+ * 
+ * Return value: A newly-created #GsfBlob, or %NULL if the data could not be copied.
+ *
+ * Error domain: #GSF_ERROR
+ *
+ * Possible errors: #GSF_ERROR_OUT_OF_MEMORY if the @data_to_copy could not be copied.
+ **/
+GsfBlob *
+gsf_blob_new (gsize size, gconstpointer data_to_copy, GError **error)
+{
+	GsfBlob *blob;
+	GsfBlobPrivate *priv;
+	gpointer data;
+
+	g_return_val_if_fail ((size > 0 && data_to_copy != NULL) || (size == 0 && data_to_copy == NULL), NULL);
+	g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+	if (data_to_copy) {
+		data = g_try_malloc (size);
+		if (!data) {
+			g_set_error (error,
+				     GSF_ERROR,
+				     GSF_ERROR_OUT_OF_MEMORY,
+				     _("Not enough memory to copy %" G_GSIZE_FORMAT " bytes of data"),
+				     size);
+			return NULL;
+		}
+
+		memcpy (data, data_to_copy, size);
+	} else
+		data = NULL;
+
+	blob = g_object_new (GSF_TYPE_BLOB,
+			     NULL);
+	priv = blob->priv;
+
+	priv->size = size;
+	priv->data = data;
+
+	return blob;
+}
+
+/**
+ * gsf_blob_get_size:
+ * @blob: A #GsfBlob.
+ * 
+ * Queries the size in bytes of the data stored in the blob.
+ * 
+ * Return value: Size in bytes, or 0 if the data is %NULL.
+ **/
+gsize
+gsf_blob_get_size (GsfBlob *blob)
+{
+	GsfBlobPrivate *priv;
+
+	g_return_val_if_fail (GSF_IS_BLOB (blob), 0);
+
+	priv = blob->priv;
+	return priv->size;
+}
+
+/**
+ * gsf_blob_peek_data:
+ * @blob: A #GsfBlob.
+ * 
+ * Queries a pointer to the data stored in the blob.  This does not copy the data
+ * for you; it returns a pointer to the actual buffer which the blob uses internally,
+ * so you should not free this buffer on your own.
+ * 
+ * Return value: Pointer to the data stored in the blob, or %NULL if the size
+ * of the data is zero.
+ **/
+gconstpointer
+gsf_blob_peek_data (GsfBlob *blob)
+{
+	GsfBlobPrivate *priv;
+
+	g_return_val_if_fail (GSF_IS_BLOB (blob), NULL);
+
+	priv = blob->priv;
+	return priv->data;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-blob.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+#include <glib-object.h>
+
+#ifndef GSF_BLOB_H
+#define GSF_BLOB_H
+
+G_BEGIN_DECLS
+
+#define GSF_TYPE_BLOB			(gsf_blob_get_type ())
+#define GSF_BLOB(obj)		  	(G_TYPE_CHECK_INSTANCE_CAST ((obj), GSF_TYPE_BLOB, GsfBlob))
+#define GSF_BLOB_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST ((klass), GSF_TYPE_BLOB, GsfBlobClass))
+#define GSF_IS_BLOB(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSF_TYPE_BLOB))
+#define GSF_IS_BLOB_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), GSF_TYPE_BLOB))
+#define GSF_BLOB_GET_CLASS(obj)         (G_TYPE_INSTANCE_GET_CLASS ((obj), GSF_TYPE_BLOB, GsfBlobClass))
+
+typedef struct _GsfBlob GsfBlob;
+typedef struct _GsfBlobClass GsfBlobClass;
+typedef struct _GsfBlobPrivate GsfBlobPrivate;
+
+struct _GsfBlob {
+	GObject object;
+	GsfBlobPrivate *priv;
+};
+
+struct _GsfBlobClass {
+	GObjectClass parent_class;
+};
+
+GType gsf_blob_get_type (void) G_GNUC_CONST;
+
+GsfBlob *gsf_blob_new (gsize size,
+		       gconstpointer data_to_copy,
+		       GError **error);
+
+gsize gsf_blob_get_size (GsfBlob *blob);
+
+gconstpointer gsf_blob_peek_data (GsfBlob *blob);
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,293 @@
+#include "gsf-config.h"
+#include <glib/gi18n-lib.h>
+#include "gsf-clip-data.h"
+#include "gsf-utils.h"
+
+/* Private part of the GsfClipData structure */
+struct _GsfClipDataPrivate {
+	GsfClipFormat format;
+	GsfBlob *data_blob;
+};
+
+G_DEFINE_TYPE (GsfClipData, gsf_clip_data, G_TYPE_OBJECT);
+
+static void gsf_clip_data_finalize (GObject *object);
+
+static void
+gsf_clip_data_class_init (GsfClipDataClass *class)
+{
+	GObjectClass *object_class;
+
+	object_class = (GObjectClass *) class;
+
+	object_class->finalize = gsf_clip_data_finalize;
+}
+
+static void
+gsf_clip_data_init (GsfClipData *clip_data)
+{
+	GsfClipDataPrivate *priv;
+
+	priv = g_new0 (GsfClipDataPrivate, 1);
+	clip_data->priv = priv;
+}
+
+static void
+gsf_clip_data_finalize (GObject *object)
+{
+	GsfClipData *clip_data;
+	GsfClipDataPrivate *priv;
+
+	clip_data = GSF_CLIP_DATA (object);
+	priv = clip_data->priv;
+
+	if (priv->data_blob)
+		g_object_unref (priv->data_blob);
+
+	G_OBJECT_CLASS (gsf_clip_data_parent_class)->finalize (object);
+}
+
+/**
+ * gsf_clip_data_new:
+ * @format: Format for the data inside the @data_blob
+ * @data_blob: Object which holds the binary contents for the #GsfClipData
+ *
+ * Creates a new #GsfClipData object.  This function acquires a reference to the
+ * @data_blob, so you should unref the blob on your own if you no longer need it
+ * directly.
+ *
+ * Return value: A newly-created #GsfClipData.
+ **/
+GsfClipData *
+gsf_clip_data_new (GsfClipFormat format, GsfBlob *data_blob)
+{
+	GsfClipData *clip_data;
+	GsfClipDataPrivate *priv;
+
+	g_return_val_if_fail (GSF_IS_BLOB (data_blob), NULL);
+
+	clip_data = g_object_new (GSF_TYPE_CLIP_DATA,
+				  NULL);
+	priv = clip_data->priv;
+
+	priv->format = format;
+	priv->data_blob = g_object_ref (data_blob);
+
+	return clip_data;
+}
+
+/**
+ * gsf_clip_data_get_format:
+ * @clip_data: A #GsfClipData.
+ *
+ * Queries the clipboard data format of a #GsfClipData.  The format refers to the data
+ * blob inside the @clip_data; use gsf_clip_data_get_data_blob() to get that data blob.
+ *
+ * Return value: The format in which the #GsfClipData's data blob is stored.
+ **/
+GsfClipFormat
+gsf_clip_data_get_format (GsfClipData *clip_data)
+{
+	GsfClipDataPrivate *priv;
+
+	g_return_val_if_fail (GSF_IS_CLIP_DATA (clip_data), GSF_CLIP_FORMAT_UNKNOWN);
+
+	priv = clip_data->priv;
+	return priv->format;
+}
+
+/**
+ * gsf_clip_data_get_data_blob:
+ * @clip_data: A #GsfClipData.
+ *
+ * Queries the data blob that actually stores a #GsfClipData's binary data.
+ *
+ * Return value: A new reference to the #GsfBlob that stores this @clip_data's
+ * binary data.  You must use g_object_unref() to dispose of that data blob when
+ * you are done with it.
+ **/
+GsfBlob *
+gsf_clip_data_get_data_blob (GsfClipData *clip_data)
+{
+	GsfClipDataPrivate *priv;
+
+	g_return_val_if_fail (GSF_IS_CLIP_DATA (clip_data), NULL);
+
+	priv = clip_data->priv;
+	return g_object_ref (priv->data_blob);
+}
+
+static void
+set_error_missing_clipboard_data (GError **error, const char *format_name, gsize at_least_size)
+{
+	g_set_error (error,
+		     GSF_ERROR,
+		     GSF_ERROR_INVALID_DATA,
+		     _("The clip_data is in %s, but it is smaller than "
+		       "at least %" G_GSIZE_FORMAT " bytes"),
+		     format_name,
+		     at_least_size);
+}
+
+static gsize
+get_windows_clipboard_data_offset (GsfClipFormatWindows format)
+{
+	struct format_offset_pair {
+		GsfClipFormatWindows format;
+		gsize offset;
+	};
+
+	static const struct format_offset_pair pairs[] = {
+		{ GSF_CLIP_FORMAT_WINDOWS_UNKNOWN, 4 },
+		{ GSF_CLIP_FORMAT_WINDOWS_METAFILE, 12 },
+		{ GSF_CLIP_FORMAT_WINDOWS_DIB, 4 },
+		{ GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE, 4 } /* FIXME: does this have a PACKEDMETA in front
+								  * as well, similar to GSF_CLIP_FORMAT_WINDOWS_METAFILE? */
+	};
+	static const int num_pairs = G_N_ELEMENTS (pairs);
+
+	int i;
+
+	for (i = 0; i < num_pairs; i++)
+		if (pairs[i].format == format)
+			return pairs[i].offset;
+
+	g_assert_not_reached ();
+	return 0;
+}
+
+/* Checks that the specified blob size matches the expected size for the format.
+ * Returns the same format if the size is correct, or
+ * GSF_CLIP_FORMAT_WINDOWS_ERROR if the size is too small.
+ */
+static GsfClipFormatWindows
+check_format_windows (GsfClipFormatWindows format, const char *format_name, gsize blob_size, GError **error)
+{
+	gsize offset;
+
+	offset = get_windows_clipboard_data_offset (format);
+	if (blob_size <= offset) {
+		set_error_missing_clipboard_data (error, format_name, offset + 1);
+		format = GSF_CLIP_FORMAT_WINDOWS_ERROR;
+	}
+
+	return format;
+}
+
+/**
+ * gsf_clip_data_get_windows_clipboard_format:
+ * @clip_data: A #GsfClipData.
+ * @error: Location to store error, or %NULL
+ *
+ * Queries the Windows clipboard data format for a #GsfClipData.  The @clip_data must
+ * have been created with #GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD.
+ *
+ * Return value: A #GsfClipFormatWindows value.
+ *
+ * Possible errors: #GSF_ERROR_INVALID_DATA if the data blob in the @clip_data is
+ * smaller than it should be; in this case GSF_CLIP_FORMAT_WINDOWS_ERROR will be returned.
+ **/
+GsfClipFormatWindows
+gsf_clip_data_get_windows_clipboard_format (GsfClipData *clip_data, GError **error)
+{
+	GsfClipDataPrivate *priv;
+	gsize size;
+	guint32 value;
+	gconstpointer data;
+	GsfClipFormatWindows format;
+
+	g_return_val_if_fail (GSF_IS_CLIP_DATA (clip_data), GSF_CLIP_FORMAT_WINDOWS_ERROR);
+	g_return_val_if_fail (error == NULL || *error == NULL, GSF_CLIP_FORMAT_WINDOWS_ERROR);
+
+	priv = clip_data->priv;
+	g_return_val_if_fail (priv->format == GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD, GSF_CLIP_FORMAT_WINDOWS_ERROR);
+
+	size = gsf_blob_get_size (priv->data_blob);
+
+	if (size < 4) {
+		g_set_error (error,
+			     GSF_ERROR,
+			     GSF_ERROR_INVALID_DATA,
+			     _("The clip_data is in Windows clipboard format, but it is smaller than "
+			       "the required 4 bytes."));
+		return GSF_CLIP_FORMAT_WINDOWS_ERROR;
+	}
+
+	data = gsf_blob_peek_data (priv->data_blob);
+
+	value = GSF_LE_GET_GUINT32 (data);
+
+	switch (value) {
+	case GSF_CLIP_FORMAT_WINDOWS_METAFILE:
+		format = check_format_windows (GSF_CLIP_FORMAT_WINDOWS_METAFILE, _("Windows Metafile format"),
+					       size, error);
+		break;
+
+	case GSF_CLIP_FORMAT_WINDOWS_DIB:
+	case 2: /* CF_BITMAP */
+		format = check_format_windows (GSF_CLIP_FORMAT_WINDOWS_DIB, _("Windows DIB or BITMAP format"),
+					       size, error);
+		break;
+
+	case GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE:
+		format = check_format_windows (GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE, _("Windows Enhanced Metafile format"),
+					       size, error);
+		break;
+
+	default:
+		format = GSF_CLIP_FORMAT_WINDOWS_UNKNOWN;
+		break;
+	}
+
+	return format;
+}
+
+/**
+ * gsf_clip_data_peek_real_data:
+ * @clip_data: A #GsfClipData.
+ * @ret_size: Location to return the size of the returned data buffer.
+ * @error: Location to store error, or %NULL.
+ * 
+ * Queries a pointer directly to the clipboard data of a #GsfClipData.  The
+ * resulting pointer is not necessarily the same data pointer that was passed to
+ * gsf_blob_new() prior to creating the @clip_data.  For example, if the data is
+ * in #GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD format, then it will have extra header
+ * bytes in front of the actual metafile data.  This function will skip over
+ * those header bytes if necessary and return a pointer to the "real" data.
+ * 
+ * Return value: Pointer to the real clipboard data.  The size in bytes of this
+ * buffer is returned in the @ret_size argument.
+ **/
+gconstpointer
+gsf_clip_data_peek_real_data (GsfClipData *clip_data, gsize *ret_size, GError **error)
+{
+	GsfClipDataPrivate *priv;
+	gconstpointer data;
+	gsize offset;
+
+	g_return_val_if_fail (GSF_IS_CLIP_DATA (clip_data), NULL);
+	g_return_val_if_fail (ret_size != NULL, NULL);
+	g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+	priv = clip_data->priv;
+
+	data = gsf_blob_peek_data (priv->data_blob);
+
+	if (priv->format == GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD) {
+		GsfClipFormatWindows win_format;
+
+		win_format = gsf_clip_data_get_windows_clipboard_format (clip_data, error);
+		if (win_format == GSF_CLIP_FORMAT_WINDOWS_ERROR)
+			return NULL;
+
+		/* gsf_clip_data_get_windows_clipboard_format() already did the size checks for us,
+		 * so we can jump to the offset right away without doing extra checks.
+		 */
+
+		offset = get_windows_clipboard_data_offset (win_format);
+	} else
+		offset = 0;
+
+	*ret_size = gsf_blob_get_size (priv->data_blob) - offset;
+	return (char *) data + offset; /* cast to avoid warning about void pointer arithmetic */
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-clip-data.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,65 @@
+#include <gsf/gsf-blob.h>
+
+#ifndef GSF_CLIP_DATA_H
+#define GSF_CLIP_DATA_H
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD = -1,
+	GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD = -2,
+	GSF_CLIP_FORMAT_GUID = -3,
+	GSF_CLIP_FORMAT_NO_DATA = 0,
+	GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME = 1, /* in the file it's actually any positive integer */
+	GSF_CLIP_FORMAT_UNKNOWN /* this is our own value for unknown types or invalid data */
+} GsfClipFormat;
+
+typedef enum {
+	GSF_CLIP_FORMAT_WINDOWS_ERROR = -1,		/* our own value */
+	GSF_CLIP_FORMAT_WINDOWS_UNKNOWN = -2,		/* our own value */
+	GSF_CLIP_FORMAT_WINDOWS_METAFILE = 3,		/* CF_METAFILEPICT */
+	GSF_CLIP_FORMAT_WINDOWS_DIB = 8,		/* CF_DIB */
+	GSF_CLIP_FORMAT_WINDOWS_ENHANCED_METAFILE = 14	/* CF_ENHMETAFILE */
+} GsfClipFormatWindows;
+
+#define GSF_TYPE_CLIP_DATA		(gsf_clip_data_get_type ())
+#define GSF_CLIP_DATA(obj)		(G_TYPE_CHECK_INSTANCE_CAST ((obj), GSF_TYPE_CLIP_DATA, GsfClipData))
+#define GSF_CLIP_DATA_CLASS(klass)	(G_TYPE_CHECK_CLASS_CAST ((klass), GSF_TYPE_CLIP_DATA, GsfClipDataClass))
+#define GSF_IS_CLIP_DATA(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSF_TYPE_CLIP_DATA))
+#define GSF_IS_CLIP_DATA_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), GSF_TYPE_CLIP_DATA))
+#define GSF_CLIP_DATA_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS ((obj), GSF_TYPE_CLIP_DATA, GsfClipDataClass))
+
+typedef struct _GsfClipData GsfClipData;
+typedef struct _GsfClipDataClass GsfClipDataClass;
+typedef struct _GsfClipDataPrivate GsfClipDataPrivate;
+
+struct _GsfClipData {
+	GObject object;
+
+	GsfClipDataPrivate *priv;
+};
+
+struct _GsfClipDataClass {
+	GObjectClass parent_class;
+};
+
+GType gsf_clip_data_get_type (void) G_GNUC_CONST;
+
+GsfClipData *gsf_clip_data_new (GsfClipFormat format,
+				GsfBlob *data_blob);
+
+GsfClipFormat gsf_clip_data_get_format (GsfClipData *clip_data);
+
+GsfBlob *gsf_clip_data_get_data_blob (GsfClipData *clip_data);
+
+GsfClipFormatWindows gsf_clip_data_get_windows_clipboard_format (GsfClipData *clip_data,
+								 GError **error);
+
+gconstpointer gsf_clip_data_peek_real_data (GsfClipData *clip_data,
+					    gsize *ret_size,
+					    GError **error);
+
+
+G_END_DECLS
+
+#endif

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,332 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-doc-meta-data.c:
+ *
+ * Copyright (C) 2002-2005 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-doc-meta-data.h>
+#include <gsf/gsf-impl-utils.h>
+
+struct _GsfDocMetaData {
+	GObject	base;
+
+	GHashTable *table;
+};
+typedef GObjectClass GsfDocMetaDataClass;
+
+struct _GsfDocProp {
+	char   *name;
+	GValue *val;
+	char   *linked_to; /* optionally NULL */
+};
+
+static GObjectClass *parent_class;
+
+static void
+gsf_doc_meta_data_finalize (GObject *obj)
+{
+	g_hash_table_destroy (GSF_DOC_META_DATA (obj)->table);
+	parent_class->finalize (obj);
+}
+
+static void
+gsf_doc_meta_data_init (GObject *obj)
+{
+	GsfDocMetaData *meta = GSF_DOC_META_DATA (obj);
+	meta->table = g_hash_table_new_full (g_str_hash, g_str_equal,
+		NULL, (GDestroyNotify) gsf_doc_prop_free);
+}
+
+static void
+gsf_doc_meta_data_class_init (GObjectClass *gobject_class)
+{
+	gobject_class->finalize = gsf_doc_meta_data_finalize;
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfDocMetaData, gsf_doc_meta_data,
+	   gsf_doc_meta_data_class_init, gsf_doc_meta_data_init,
+	   G_TYPE_OBJECT)
+
+/**********************************************************************/
+
+/**
+ * gsf_doc_meta_data_new :
+ *
+ * Returns a new metadata property collection
+ **/
+GsfDocMetaData *
+gsf_doc_meta_data_new (void)
+{
+	return g_object_new (GSF_DOC_META_DATA_TYPE, NULL);
+}
+
+/**
+ * gsf_doc_meta_data_lookup :
+ * @meta : #GsfDocMetaData
+ * @name :
+ *
+ * Returns the property with name @id in @meta.  The caller can modify the
+ * property value and link but not the name.
+ **/
+GsfDocProp *
+gsf_doc_meta_data_lookup (GsfDocMetaData const *meta, char const *name)
+{
+	g_return_val_if_fail (IS_GSF_DOC_META_DATA (meta), NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+	return g_hash_table_lookup (meta->table, name);
+}
+
+/**
+ * gsf_doc_meta_data_insert :
+ * @meta : #GsfDocMetaData
+ * @name :
+ * @value : #GValue
+ *
+ * Take ownership of @name and @value and insert a property into @meta.
+ * If a property exists with @name, it is replaced (The link is lost)
+ **/
+void
+gsf_doc_meta_data_insert (GsfDocMetaData *meta, char *name, GValue *value)
+{
+	GsfDocProp *prop;
+	
+	g_return_if_fail (IS_GSF_DOC_META_DATA (meta));
+	g_return_if_fail (name != NULL);
+	prop = g_new (GsfDocProp, 1);
+	prop->name = name;
+	prop->val  = value;
+	prop->linked_to = NULL;
+	g_hash_table_replace (meta->table, prop->name, prop);
+}
+
+/**
+ * gsf_doc_meta_data_remove :
+ * @meta : the collection
+ * @name : the non-null string name of the property
+ *
+ * If @name does not exist in the collection, do nothing. If @name does exist,
+ * remove it and its value from the collection
+ **/
+void
+gsf_doc_meta_data_remove (GsfDocMetaData *meta, char const *name)
+{
+	g_return_if_fail (IS_GSF_DOC_META_DATA (meta));
+	g_return_if_fail (name != NULL);
+	g_hash_table_remove (meta->table, name);
+}
+
+/**
+ * gsf_doc_meta_data_store :
+ * @meta : #GsfDocMetaData
+ * @name : 
+ *
+ **/
+GsfDocProp *
+gsf_doc_meta_data_steal (GsfDocMetaData *meta, char const *name)
+{
+	GsfDocProp *prop;
+	g_return_val_if_fail (IS_GSF_DOC_META_DATA (meta), NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+	prop = g_hash_table_lookup (meta->table, name);
+	if (NULL != prop)
+		g_hash_table_steal (meta->table, name);
+	return prop;
+}
+
+/**
+ * gsf_doc_meta_data_store :
+ * @meta : #GsfDocMetaData
+ * @prop : #GsfDocProp
+ *
+ **/
+void
+gsf_doc_meta_data_store (GsfDocMetaData *meta, GsfDocProp *prop)
+{
+	g_return_if_fail (IS_GSF_DOC_META_DATA (meta));
+	g_return_if_fail (prop != NULL);
+	g_return_if_fail (prop != g_hash_table_lookup (meta->table, prop->name));
+	g_hash_table_replace (meta->table, prop->name, prop);
+}
+
+/**
+ * gsf_doc_meta_data_foreach :
+ * @meta : the collection
+ * @func : the function called once for each element in the collection
+ * @user_data : any supplied user data or NULL
+ *
+ * Iterate through each (key, value) pair in this collection
+ **/
+void
+gsf_doc_meta_data_foreach (GsfDocMetaData const *meta, GHFunc func, gpointer user_data)
+{
+	g_return_if_fail (IS_GSF_DOC_META_DATA (meta));
+	g_hash_table_foreach (meta->table, func, user_data);
+}
+
+/**
+ * gsf_doc_meta_data_size :
+ * @meta : the collection
+ *
+ * Returns the number of items in this collection
+ **/
+gsize
+gsf_doc_meta_data_size (GsfDocMetaData const *meta)
+{
+	g_return_val_if_fail (meta != NULL, 0);
+	return (gsize) g_hash_table_size (meta->table);
+}
+
+/**********************************************************************/
+
+/**
+ * gsf_doc_prop_new :
+ * @name :
+ *
+ * Returns a new #GsfDocProp which the caller is responsible for freeing.
+ * Takes ownership of @name.
+ **/
+GsfDocProp *
+gsf_doc_prop_new  (char *name)
+{
+	GsfDocProp *prop;
+
+	g_return_val_if_fail (name != NULL, NULL);
+
+	prop = g_new (GsfDocProp, 1);
+	prop->name = name;
+	prop->val  = NULL;
+	prop->linked_to = NULL;
+
+	return prop;
+}
+
+/**
+ * gsf_doc_prop_free :
+ * @prop : #GsfDocProp
+ *
+ * If @prop is non NULL free the memory assosociated with it
+ **/
+void
+gsf_doc_prop_free (GsfDocProp *prop)
+{
+	if (NULL != prop) {
+		g_free (prop->linked_to);
+		if (prop->val) {
+			g_value_unset (prop->val);
+			g_free (prop->val);
+		}
+		g_free (prop->name);
+		g_free (prop);
+	}
+}
+
+/**
+ * gsf_doc_prop_get_name :
+ * @prop : #GsfDocProp
+ *
+ * Returns the name of the property, the caller should not modify the result.
+ **/
+char const *
+gsf_doc_prop_get_name (GsfDocProp const *prop)
+{
+	g_return_val_if_fail (prop != NULL, NULL);
+	return prop->name;
+}
+
+/**
+ * gsf_doc_prop_get_val :
+ * @prop : the property
+ *
+ * Returns the value of the property, the caller should not modify the result.
+ **/
+GValue const *
+gsf_doc_prop_get_val (GsfDocProp const *prop)
+{
+	g_return_val_if_fail (prop != NULL, NULL);
+	return prop->val;
+}
+
+/**
+ * gsf_doc_prop_set_val :
+ * @prop : #GsfDocProp
+ * @val  : #GValue
+ *
+ * Assigns @val to @prop, and unsets and frees the current value.
+ **/
+void
+gsf_doc_prop_set_val (GsfDocProp *prop, GValue *val)
+{
+	g_return_if_fail (prop != NULL);
+
+	if (val != prop->val) {
+		g_value_unset (prop->val);
+		g_free (prop->val);
+		prop->val = val;
+	}
+}
+
+/**
+ * gsf_doc_prop_swap_val :
+ * @prop : #GsfDocProp
+ * @val  : #GValue
+ *
+ * Returns the current value of @prop, and replaces it with @val
+ * 	Caller is responsible for unsetting and freeing the result.
+ **/
+GValue *
+gsf_doc_prop_swap_val (GsfDocProp *prop, GValue *val)
+{
+	GValue *old_val;
+	g_return_val_if_fail (prop != NULL, NULL);
+
+	old_val = prop->val;
+	prop->val = val;
+	return old_val;
+}
+
+/**
+ * gsf_doc_prop_get_link :
+ * @prop : #GsfDocProp
+ *
+ * Returns the current link descriptor of @prop.  The result should not be
+ * 	freed or modified.
+ **/
+char const *
+gsf_doc_prop_get_link (GsfDocProp const *prop)
+{
+	g_return_val_if_fail (prop != NULL, NULL);
+	return prop->linked_to;
+}
+
+/**
+ * gsf_doc_prop_set_link :
+ * @prop : #GsfDocProp
+ * @link :
+ **/
+void
+gsf_doc_prop_set_link (GsfDocProp *prop, char *link)
+{
+	g_return_if_fail (prop != NULL);
+	if (link != prop->linked_to) {
+		g_free (prop->linked_to);
+		prop->linked_to = link;
+	}
+}
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-doc-meta-data.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,62 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-doc-meta-data.h: get, set, remove custom meta properties associated with documents
+ *
+ * Copyright (C) 2002-2005 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_DOC_META_DATA_H
+#define GSF_DOC_META_DATA_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+#include <sys/types.h>
+
+G_BEGIN_DECLS
+
+#define GSF_DOC_META_DATA_TYPE  (gsf_doc_meta_data_get_type ())
+#define GSF_DOC_META_DATA(o)    (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_DOC_META_DATA_TYPE, GsfDocMetaData))
+#define IS_GSF_DOC_META_DATA(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_DOC_META_DATA_TYPE))
+
+GType  gsf_doc_meta_data_get_type (void);
+GsfDocMetaData *gsf_doc_meta_data_new	  (void);
+GsfDocProp     *gsf_doc_meta_data_lookup  (GsfDocMetaData const *meta,
+					   char const *name);
+void		gsf_doc_meta_data_insert  (GsfDocMetaData *meta,
+					   char *name, GValue *value);
+void		gsf_doc_meta_data_remove  (GsfDocMetaData *meta,
+					   char const *name);
+GsfDocProp     *gsf_doc_meta_data_steal   (GsfDocMetaData *meta,
+					   char const *name);
+void		gsf_doc_meta_data_store   (GsfDocMetaData *meta,
+					   GsfDocProp     *prop);
+void		gsf_doc_meta_data_foreach (GsfDocMetaData const *meta,
+					   GHFunc func, gpointer user_data);
+gsize		gsf_doc_meta_data_size	  (GsfDocMetaData const *meta);
+
+GsfDocProp   *gsf_doc_prop_new	    (char *name);
+void	      gsf_doc_prop_free	    (GsfDocProp *prop);
+char const   *gsf_doc_prop_get_name (GsfDocProp const *prop);
+GValue const *gsf_doc_prop_get_val  (GsfDocProp const *prop);
+void	      gsf_doc_prop_set_val  (GsfDocProp *prop, GValue *val);
+GValue 	     *gsf_doc_prop_swap_val (GsfDocProp *prop, GValue *val);
+char const   *gsf_doc_prop_get_link (GsfDocProp const *prop);
+void	      gsf_doc_prop_set_link (GsfDocProp *prop, char *link);
+
+G_END_DECLS
+
+#endif /* GSF_DOC_META_DATA_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,158 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-docprop-vector.c: A type implementing OLE Document Property vectors using a GValueArray
+ *
+ * Copyright (C) 2004-2005 Frank Chiulli (fc-linux at cox.net)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-docprop-vector.h>
+#include <gsf/gsf-impl-utils.h>
+#include <stdio.h>
+
+struct _GsfDocPropVector {
+	GObject      parent;
+
+	GValueArray *gva;
+};
+typedef GObjectClass  GsfDocPropVectorClass;
+
+#define GSF_DOCPROP_VECTOR_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), GSF_DOCPROP_VECTOR_TYPE, GsfDocPropVectorClass))
+#define GSF_DOCPROP_VECTOR_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), GSF_DOCPROP_VECTOR_TYPE, GsfDocPropVectorClass))
+#define IS_GSF_DOCPROP_VECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GSF_DOCPROP_VECTOR_TYPE))
+
+static GObjectClass *parent_class;
+
+GValueArray *
+gsf_value_get_docprop_varray (GValue const *value)
+{
+	GsfDocPropVector *v = gsf_value_get_docprop_vector (value);
+	return v ? v->gva : NULL;
+}
+
+/**
+ * gsf_docprop_value_get_vector
+ * @value: A GValue of type #GsfDocPropVector.
+ *
+ * This function returns a pointer to the GsfDocPropVector structure in @value.
+ * No additional references are created.
+ *
+ * Returns: A pointer to the #GsfDocPropVector structure in @value
+ **/
+GsfDocPropVector *
+gsf_value_get_docprop_vector (GValue const *value)
+{
+	g_return_val_if_fail (VAL_IS_GSF_DOCPROP_VECTOR (value), NULL);
+	
+	return (GsfDocPropVector *) g_value_get_object (value);
+}
+
+/**
+ * gsf_docprop_vector_append
+ * @vector: The vector to which the GValue will be added
+ * @value:  The GValue to add to @vector
+ *
+ * Insert a copy of @value as the last element of @vector.
+ **/
+void
+gsf_docprop_vector_append (GsfDocPropVector *vector, GValue *value)
+{
+	g_return_if_fail (vector != NULL);
+	g_return_if_fail (value != NULL);
+
+	if (G_IS_VALUE (value))
+		vector->gva = g_value_array_append (vector->gva, value);
+}
+
+/**
+ * gsf_docprop_vector_as_string
+ * @vector: The #GsfDocPropVector from which GValues will be extracted.
+ *
+ * This function returns a string which represents all the GValues in @vector.
+ * The caller is responsible for freeing the result.
+ *
+ * Returns: a string of comma-separated values
+ **/
+gchar*
+gsf_docprop_vector_as_string (GsfDocPropVector *vector)
+{
+	gchar		*rstring;
+
+	guint		 i;
+	guint		 num_values;
+
+	g_return_val_if_fail (vector != NULL, NULL);
+	g_return_val_if_fail (vector->gva != NULL, NULL);
+
+	rstring    = g_new0 (gchar, 1);
+	num_values = vector->gva->n_values;
+	
+	for (i = 0; i < num_values; i++) {
+		char    *str;
+		GValue	*v;
+		
+		v = g_value_array_get_nth (vector->gva, i);
+		str = g_strdup_value_contents (v);
+		rstring = g_strconcat (rstring, str, ",", NULL);
+		g_free (str);
+		g_value_unset (v);
+	}
+
+	return rstring;
+}
+
+static void
+gsf_docprop_vector_finalize (GObject *obj)
+{
+	GsfDocPropVector *vector = (GsfDocPropVector *) obj;
+	if (vector->gva != NULL) {
+		g_value_array_free (vector->gva);
+		vector->gva = NULL;
+	}
+	parent_class->finalize (obj);
+}
+
+static void
+gsf_docprop_vector_class_init (GObjectClass *gobject_class)
+{
+	parent_class = g_type_class_peek (G_TYPE_OBJECT);
+	gobject_class->finalize = gsf_docprop_vector_finalize;
+}
+
+static void
+gsf_docprop_vector_init (GsfDocPropVector *vector)
+{
+	vector->gva = g_value_array_new (0);
+}
+
+GSF_CLASS (GsfDocPropVector, gsf_docprop_vector,
+	   gsf_docprop_vector_class_init, gsf_docprop_vector_init,
+	   G_TYPE_OBJECT)
+
+/**
+ * gsf_docprop_vector_new
+ *
+ * This function creates a new gsf_docprop_vector object.
+ *
+ * Returns: GsfDocPropVector*
+ **/
+GsfDocPropVector*
+gsf_docprop_vector_new (void)
+{
+	return g_object_new (GSF_DOCPROP_VECTOR_TYPE, NULL);
+}
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-docprop-vector.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,46 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-docprop-vectors.h: A type implementing OLE Document Property vectors
+ *
+ * Copyright (C) 2004-2005 Frank Chiulli (fc-linux at cox.net)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_DOCPROP_VECTOR_H
+#define GSF_DOCPROP_VECTOR_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GSF_DOCPROP_VECTOR_TYPE	 (gsf_docprop_vector_get_type ())
+#define GSF_DOCPROP_VECTOR(o)	 (G_TYPE_CHECK_INSTANCE_CAST((o), GSF_DOCPROP_VECTOR, GsfDocPropVector))
+#define IS_GSF_DOCPROP_VECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), GSF_DOCPROP_VECTOR_TYPE))
+
+typedef struct _GsfDocPropVector      GsfDocPropVector;
+GType		      gsf_docprop_vector_get_type  (void);
+GsfDocPropVector *gsf_docprop_vector_new	   (void);
+void		      gsf_docprop_vector_append	   (GsfDocPropVector *vector, GValue *value);
+gchar		     *gsf_docprop_vector_as_string (GsfDocPropVector *vector);
+
+#define VAL_IS_GSF_DOCPROP_VECTOR(v) (G_TYPE_CHECK_VALUE_TYPE((v), GSF_DOCPROP_VECTOR_TYPE))
+GsfDocPropVector *gsf_value_get_docprop_vector	(GValue const *value);
+GValueArray	 *gsf_value_get_docprop_varray	(GValue const *value);
+
+G_END_DECLS
+
+#endif /* GSF_DOCPROP_VECTOR_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-impl-utils.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-impl-utils.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-impl-utils.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,140 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-impl-utils.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_IMPL_UTILS_H
+#define GSF_IMPL_UTILS_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* We need to do this with a version check as this header gets installed.  */
+#if GLIB_CHECK_VERSION(2,7,0)
+#define GSF_PARAM_STATIC (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
+#else
+#define GSF_PARAM_STATIC 0
+#endif
+
+/*************************************************************************/
+
+#define	GSF_CLASS_FULL(name, prefix, base_init, base_finalize, \
+			   class_init, class_finalize, instance_init, parent_type, \
+		       abstract, interface_decl) \
+GType									\
+prefix ## _get_type (void)						\
+{									\
+	static GType type = 0;						\
+	if (type == 0) {						\
+		static GTypeInfo const object_info = {			\
+			sizeof (name ## Class),				\
+			(GBaseInitFunc) base_init,			\
+			(GBaseFinalizeFunc) base_finalize,		\
+			(GClassInitFunc) class_init,			\
+			(GClassFinalizeFunc) class_finalize,		\
+			NULL,	/* class_data */			\
+			sizeof (name),					\
+			0,	/* n_preallocs */			\
+			(GInstanceInitFunc) instance_init,		\
+			NULL						\
+		};							\
+		type = g_type_register_static (parent_type, #name,	\
+			&object_info, (GTypeFlags) abstract);		\
+		interface_decl						\
+	}								\
+	return type;							\
+}
+
+#define	GSF_CLASS(name, prefix, class_init, instance_init, parent) \
+	GSF_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \
+				instance_init, parent, 0, {})
+#define	GSF_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent) \
+	GSF_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \
+		       instance_init, parent, G_TYPE_FLAG_ABSTRACT, {})
+
+#define GSF_INTERFACE_FULL(type, init_func, iface_type) {	\
+	static GInterfaceInfo const iface = {			\
+		(GInterfaceInitFunc) init_func, NULL, NULL };	\
+	g_type_add_interface_static (type, iface_type, &iface);	\
+}
+
+#define GSF_INTERFACE(init_func, iface_type)			\
+	GSF_INTERFACE_FULL(type, init_func, iface_type)
+
+/*************************************************************************/
+
+#define	GSF_DYNAMIC_CLASS_FULL(name, prefix, base_init, base_finalize, \
+				   class_init,  class_finalize, instance_init, parent_type, \
+			       abstract, interface_decl) 		\
+static GType prefix ## _type; 						\
+									\
+GType prefix ## _get_type (void);					\
+void  prefix ## _register_type (GTypeModule *module);			\
+									\
+GType									\
+prefix ## _get_type ()							\
+{									\
+	g_return_val_if_fail (prefix ## _type != 0, 0); 		\
+	return prefix ## _type;						\
+}									\
+void									\
+prefix ## _register_type (GTypeModule *module)				\
+{									\
+	static GTypeInfo const type_info = {				\
+		sizeof (name ## Class),					\
+		(GBaseInitFunc) base_init,				\
+		(GBaseFinalizeFunc) base_finalize,			\
+		(GClassInitFunc) class_init,				\
+		(GClassFinalizeFunc) class_finalize,			\
+		NULL,	/* class_data */				\
+		sizeof (name),						\
+		0,	/* n_preallocs */				\
+		(GInstanceInitFunc) instance_init,			\
+		NULL							\
+	};								\
+	GType type;							\
+									\
+	g_return_if_fail (prefix ## _type == 0); 			\
+									\
+	type = prefix ## _type = g_type_module_register_type (module,	\
+		parent_type, #name, &type_info, (GTypeFlags) abstract);	\
+	interface_decl							\
+}
+
+#define	GSF_DYNAMIC_CLASS(name, prefix, class_init, instance_init, parent)	\
+	GSF_DYNAMIC_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \
+				   instance_init, parent, 0, {})
+#define	GSF_DYNAMIC_CLASS_ABSTRACT(name, prefix, class_init, instance_init, parent) \
+	GSF_DYNAMIC_CLASS_FULL(name, prefix, NULL, NULL, class_init, NULL, \
+		       instance_init, parent, G_TYPE_FLAG_ABSTRACT, {})
+
+#define GSF_DYNAMIC_INTERFACE_FULL(type, init_func, iface_type, module) {	\
+	static GInterfaceInfo const iface = {					\
+		(GInterfaceInitFunc) init_func, NULL, NULL };			\
+	g_type_module_add_interface (module, type, iface_type, &iface);		\
+}
+
+#define GSF_DYNAMIC_INTERFACE(init_func, iface_type, module)			\
+	GSF_DYNAMIC_INTERFACE_FULL(type, init_func, iface_type, module)
+
+G_END_DECLS
+
+#endif /* GSF_IMPL_UTILS_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,50 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-impl.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INFILE_IMPL_H
+#define GSF_INFILE_IMPL_H
+
+#include <gsf/gsf.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-infile.h>
+
+G_BEGIN_DECLS
+
+struct _GsfInfile {
+	GsfInput parent;
+};
+
+typedef struct {
+	GsfInputClass input_class;
+	int	    (*num_children)   (GsfInfile *infile);
+	char const *(*name_by_index)  (GsfInfile *infile, int i);
+	GsfInput   *(*child_by_index) (GsfInfile *infile,
+				       int i, GError **err);
+	GsfInput   *(*child_by_name)  (GsfInfile *infile,
+				       char const *name, GError **err);
+} GsfInfileClass;
+
+#define GSF_INFILE_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_INFILE_TYPE, GsfInfileClass))
+#define GSF_IS_INFILE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_INFILE_TYPE))
+
+G_END_DECLS
+
+#endif /* GSF_INFILE_IMPL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,949 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-msole.c :
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+/* Lots of useful information in
+ *   http://www.aafassociation.org/html/specs/aafcontainerspec-v1.0.1.pdf
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-infile-impl.h>
+#include <gsf/gsf-infile-msole.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-msole-impl.h>
+#include <gsf/gsf-input-proxy.h>
+
+#include <string.h>
+#include <stdio.h>
+
+#undef G_LOG_DOMAIN
+#define G_LOG_DOMAIN "libgsf:msole"
+
+static GObjectClass *parent_class;
+
+typedef struct {
+	guint32 *block;
+	guint32  num_blocks;
+} MSOleBAT;
+
+typedef struct {
+	char	 *name;
+	char	 *collation_name;
+	int	  index;
+	size_t    size;
+	gboolean  use_sb;
+	guint32   first_block;
+	gboolean  is_directory;
+	GList	 *children;
+	unsigned char clsid[16];	/* 16 byte GUID used by some apps */
+} MSOleDirent;
+
+typedef struct {
+	struct {
+		MSOleBAT bat;
+		unsigned shift;
+		unsigned filter;
+		size_t   size;
+	} bb, sb;
+	gsf_off_t max_block;
+	guint32 threshold; /* transition between small and big blocks */
+        guint32 sbat_start, num_sbat;
+
+	MSOleDirent *root_dir;
+	GsfInput *sb_file;
+
+	int ref_count;
+} MSOleInfo;
+
+struct _GsfInfileMSOle {
+	GsfInfile parent;
+
+	GsfInput    *input;
+	MSOleInfo   *info;
+	MSOleDirent *dirent;
+	MSOleBAT     bat;
+	gsf_off_t    cur_block;
+
+	struct {
+		guint8  *buf;
+		size_t  buf_size;
+	} stream;
+};
+
+typedef struct {
+	GsfInfileClass  parent_class;
+} GsfInfileMSOleClass;
+
+#define GSF_INFILE_MSOLE_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_INFILE_MSOLE_TYPE, GsfInfileMSOleClass))
+#define GSF_IS_INFILE_MSOLE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_INFILE_MSOLE_TYPE))
+
+/* utility macros */
+#define OLE_BIG_BLOCK(index, ole)	((index) >> ole->info->bb.shift)
+
+static GsfInput *gsf_infile_msole_new_child (GsfInfileMSOle *parent,
+					     MSOleDirent *dirent, GError **err);
+static void ole_info_unref (MSOleInfo *info);
+
+/**
+ * ole_get_block :
+ * @ole    : the infile
+ * @block  :
+ * @buffer : optionally NULL
+ *
+ * Read a block of data from the underlying input.
+ * Be really anal.
+ **/
+static guint8 const *
+ole_get_block (GsfInfileMSOle const *ole, guint32 block, guint8 *buffer)
+{
+	g_return_val_if_fail (block < ole->info->max_block, NULL);
+
+	/* OLE_HEADER_SIZE is fixed at 512, but the sector containing the
+	 * header is padded out to bb.size (sector size) when bb.size > 512. */
+	if (gsf_input_seek (ole->input,
+		(gsf_off_t)(MAX (OLE_HEADER_SIZE, ole->info->bb.size) + (block << ole->info->bb.shift)),
+		G_SEEK_SET) < 0)
+		return NULL;
+
+	return gsf_input_read (ole->input, ole->info->bb.size, buffer);
+}
+
+/**
+ * ole_make_bat :
+ * @metabat	: a meta bat to connect to the raw blocks (small or large)
+ * @size_guess	: An optional guess as to how many blocks are in the file
+ * @block	: The first block in the list.
+ * @res		: where to store the result.
+ *
+ * Walk the linked list of the supplied block allocation table and build up a
+ * table for the list starting in @block.
+ *
+ * Retrurns TRUE on error.
+ */
+static gboolean
+ole_make_bat (MSOleBAT const *metabat, size_t size_guess, guint32 block,
+	      MSOleBAT *res)
+{
+	/* NOTE : Only use size as a suggestion, sometimes it is wrong */
+	GArray *bat = g_array_sized_new (FALSE, FALSE,
+		sizeof (guint32), size_guess);
+
+	guint8 *used = (guint8*)g_alloca (1 + metabat->num_blocks / 8);
+	memset (used, 0, 1 + metabat->num_blocks / 8);
+
+	if (block < metabat->num_blocks)
+		do {
+			/* Catch cycles in the bat list */
+			g_return_val_if_fail (0 == (used[block/8] & (1 << (block & 0x7))), TRUE);
+			used[block/8] |= 1 << (block & 0x7);
+
+			g_array_append_val (bat, block);
+			block = metabat->block [block];
+		} while (block < metabat->num_blocks);
+
+	res->block = NULL;
+
+	res->num_blocks = bat->len;
+	res->block = (guint32 *) (gpointer) g_array_free (bat, FALSE);
+
+	if (block != BAT_MAGIC_END_OF_CHAIN) {
+		g_warning ("This OLE2 file is invalid.\n"
+			   "The Block Allocation  Table for one of the streams had %x instead of a terminator (%x).\n"
+			   "We might still be able to extract some data, but you'll want to check the file.",
+			   block, BAT_MAGIC_END_OF_CHAIN);
+	}
+
+	return FALSE;
+}
+
+static void
+ols_bat_release (MSOleBAT *bat)
+{
+	if (bat->block != NULL) {
+		g_free (bat->block);
+		bat->block = NULL;
+		bat->num_blocks = 0;
+	}
+}
+
+/**
+ * ole_info_read_metabat :
+ * @ole  :
+ * @bats :
+ *
+ * A small utility routine to read a set of references to bat blocks
+ * either from the OLE header, or a meta-bat block.
+ *
+ * Returns a pointer to the element after the last position filled.
+ **/
+static guint32 *
+ole_info_read_metabat (GsfInfileMSOle *ole, guint32 *bats, guint32 max,
+		       guint32 const *metabat, guint32 const *metabat_end)
+{
+	guint8 const *bat, *end;
+
+	for (; metabat < metabat_end; metabat++) {
+		bat = ole_get_block (ole, *metabat, NULL);
+		if (bat == NULL)
+			return NULL;
+		end = bat + ole->info->bb.size;
+		for ( ; bat < end ; bat += BAT_INDEX_SIZE, bats++) {
+			*bats = GSF_LE_GET_GUINT32 (bat);
+			g_return_val_if_fail (*bats < max ||
+					      *bats >= BAT_MAGIC_METABAT, NULL);
+		}
+	}
+	return bats;
+}
+
+/**
+ * gsf_ole_get_guint32s :
+ * @dst :
+ * @src :
+ * @num_bytes :
+ *
+ * Copy some some raw data into an array of guint32.
+ **/
+static void
+gsf_ole_get_guint32s (guint32 *dst, guint8 const *src, int num_bytes)
+{
+	for (; (num_bytes -= BAT_INDEX_SIZE) >= 0 ; src += BAT_INDEX_SIZE)
+		*dst++ = GSF_LE_GET_GUINT32 (src);
+}
+
+static GsfInput *
+ole_info_get_sb_file (GsfInfileMSOle *parent)
+{
+	MSOleBAT meta_sbat;
+
+	if (parent->info->sb_file != NULL)
+		return parent->info->sb_file;
+
+	parent->info->sb_file = gsf_infile_msole_new_child (parent,
+		parent->info->root_dir, NULL);
+	if (!parent->info->sb_file)
+		return NULL;
+
+	/* avoid creating a circular reference */
+	ole_info_unref (((GsfInfileMSOle *)parent->info->sb_file)->info);
+
+	g_return_val_if_fail (parent->info->sb.bat.block == NULL, NULL);
+
+	if (ole_make_bat (&parent->info->bb.bat,
+			  parent->info->num_sbat, parent->info->sbat_start, &meta_sbat))
+		return NULL;
+
+	parent->info->sb.bat.num_blocks = meta_sbat.num_blocks * (parent->info->bb.size / BAT_INDEX_SIZE);
+	parent->info->sb.bat.block	= g_new0 (guint32, parent->info->sb.bat.num_blocks);
+	ole_info_read_metabat (parent, parent->info->sb.bat.block,
+		parent->info->sb.bat.num_blocks,
+		meta_sbat.block, meta_sbat.block + meta_sbat.num_blocks);
+	ols_bat_release (&meta_sbat);
+
+	return parent->info->sb_file;
+}
+
+static gint
+ole_dirent_cmp (MSOleDirent const *a, MSOleDirent const *b)
+{
+	g_return_val_if_fail (a, 0);
+	g_return_val_if_fail (b, 0);
+
+	g_return_val_if_fail (a->collation_name, 0);
+	g_return_val_if_fail (b->collation_name, 0);
+
+	return strcmp (b->collation_name, a->collation_name);
+}
+
+/**
+ * ole_dirent_new :
+ * @ole    :
+ * @entry  :
+ * @parent : optional
+ *
+ * Parse dirent number @entry and recursively handle its siblings and children.
+ **/
+static MSOleDirent *
+ole_dirent_new (GsfInfileMSOle *ole, guint32 entry, MSOleDirent *parent)
+{
+	MSOleDirent *dirent;
+	guint32 block, next, prev, child, size;
+	guint8 const *data;
+	guint8 type;
+	guint16 name_len;
+
+	if (entry >= DIRENT_MAGIC_END)
+		return NULL;
+
+	block = OLE_BIG_BLOCK (entry * DIRENT_SIZE, ole);
+
+	g_return_val_if_fail (block < ole->bat.num_blocks, NULL);
+	data = ole_get_block (ole, ole->bat.block [block], NULL);
+	if (data == NULL)
+		return NULL;
+	data += (DIRENT_SIZE * entry) % ole->info->bb.size;
+
+	type = GSF_LE_GET_GUINT8 (data + DIRENT_TYPE);
+	if (type != DIRENT_TYPE_DIR &&
+	    type != DIRENT_TYPE_FILE &&
+	    type != DIRENT_TYPE_ROOTDIR) {
+		g_warning ("Unknown stream type 0x%x", type);
+		return NULL;
+	}
+
+	/* It looks like directory (and root directory) sizes are sometimes bogus */
+	size = GSF_LE_GET_GUINT32 (data + DIRENT_FILE_SIZE);
+	g_return_val_if_fail (type == DIRENT_TYPE_DIR || type == DIRENT_TYPE_ROOTDIR ||
+			      size <= (guint32)ole->input->size, NULL);
+
+	dirent = g_new0 (MSOleDirent, 1);
+	dirent->index	     = entry;
+	dirent->size	     = size;
+	/* Store the class id which is 16 byte identifier used by some apps */
+	memcpy(dirent->clsid, data + DIRENT_CLSID, sizeof(dirent->clsid));
+
+	/* root dir is always big block */
+	dirent->use_sb	     = parent && (size < ole->info->threshold);
+	dirent->first_block  = (GSF_LE_GET_GUINT32 (data + DIRENT_FIRSTBLOCK));
+	dirent->is_directory = (type != DIRENT_TYPE_FILE);
+	dirent->children     = NULL;
+	prev  = GSF_LE_GET_GUINT32 (data + DIRENT_PREV);
+	next  = GSF_LE_GET_GUINT32 (data + DIRENT_NEXT);
+	child = GSF_LE_GET_GUINT32 (data + DIRENT_CHILD);
+	name_len = GSF_LE_GET_GUINT16 (data + DIRENT_NAME_LEN);
+	dirent->name = NULL;
+	if (0 < name_len && name_len <= DIRENT_MAX_NAME_SIZE) {
+		gunichar2 uni_name [DIRENT_MAX_NAME_SIZE+1];
+		gchar const *end;
+		int i;
+
+		/* !#%!@$#^
+		 * Sometimes, rarely, people store the stream name as ascii
+		 * rather than utf16.  Do a validation first just in case.
+		 */
+		if (!g_utf8_validate (data, -1, &end) ||
+		    ((guint8 const *)end - data + 1) != name_len) {
+			/* be wary about endianness */
+			for (i = 0 ; i < name_len ; i += 2)
+				uni_name [i/2] = GSF_LE_GET_GUINT16 (data + i);
+			uni_name [i/2] = 0;
+
+			dirent->name = g_utf16_to_utf8 (uni_name, -1, NULL, NULL, NULL);
+		} else
+			dirent->name = g_strndup ((gchar *)data, (gsize)((guint8 const *)end - data + 1));
+	}
+	/* be really anal in the face of screwups */
+	if (dirent->name == NULL)
+		dirent->name = g_strdup ("");
+	dirent->collation_name = g_utf8_collate_key (dirent->name, -1);
+
+#if 0
+	printf ("%c '%s' :\tsize = %d\tfirst_block = 0x%x\n",
+		dirent->is_directory ? 'd' : ' ',
+		dirent->name, dirent->size, dirent->first_block);
+#endif
+
+	if (parent != NULL)
+		parent->children = g_list_insert_sorted (parent->children,
+			dirent, (GCompareFunc)ole_dirent_cmp);
+
+	/* NOTE : These links are a tree, not a linked list */
+	if (prev == entry) {
+		g_warning ("Invalid OLE file with a cycle in its directory tree");
+	} else
+		ole_dirent_new (ole, prev, parent); 
+	if (next == entry) {
+		g_warning ("Invalid OLE file with a cycle in its directory tree");
+	} else
+		ole_dirent_new (ole, next, parent); 
+
+	if (dirent->is_directory)
+		ole_dirent_new (ole, child, dirent);
+	else if (child != DIRENT_MAGIC_END)
+		g_warning ("A non directory stream with children ?");
+
+	return dirent;
+}
+
+static void
+ole_dirent_free (MSOleDirent *dirent)
+{
+	GList *tmp;
+	g_return_if_fail (dirent != NULL);
+
+	g_free (dirent->name);
+	g_free (dirent->collation_name);
+
+	for (tmp = dirent->children; tmp; tmp = tmp->next)
+		ole_dirent_free ((MSOleDirent *)tmp->data);
+	g_list_free (dirent->children);
+	g_free (dirent);
+}
+
+/*****************************************************************************/
+
+static void
+ole_info_unref (MSOleInfo *info)
+{
+	if (info->ref_count-- != 1)
+		return;
+
+	ols_bat_release (&info->bb.bat);
+	ols_bat_release (&info->sb.bat);
+	if (info->root_dir != NULL) {
+		ole_dirent_free (info->root_dir);
+		info->root_dir = NULL;
+	}
+	if (info->sb_file != NULL)  {
+		g_object_unref (G_OBJECT (info->sb_file));
+		info->sb_file = NULL;
+	}
+	g_free (info);
+}
+
+static MSOleInfo *
+ole_info_ref (MSOleInfo *info)
+{
+	info->ref_count++;
+	return info;
+}
+
+/**
+ * ole_dup :
+ * @src :
+ *
+ * Utility routine to _partially_ replicate a file.  It does NOT copy the bat
+ * blocks, or init the dirent.
+ *
+ * Return value: the partial duplicate.
+ **/
+static GsfInfileMSOle *
+ole_dup (GsfInfileMSOle const *src, GError **err)
+{
+	GsfInfileMSOle	*dst;
+	GsfInput *input;
+
+	g_return_val_if_fail (src != NULL, NULL);
+
+	input = gsf_input_dup (src->input, err);
+	if (input == NULL) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "Failed to duplicate input stream");
+		return NULL;
+	}
+
+	dst = (GsfInfileMSOle *)g_object_new (GSF_INFILE_MSOLE_TYPE, NULL);
+	dst->input = input;
+	dst->info  = ole_info_ref (src->info);
+
+	/* buf and buf_size are initialized to NULL */
+
+	return dst;
+}
+
+/**
+ * ole_init_info :
+ * @ole :
+ * @err : optionally NULL
+ *
+ * Read an OLE header and do some sanity checking
+ * along the way.
+ *
+ * Return value: TRUE on error setting @err if it is supplied.
+ **/
+static gboolean
+ole_init_info (GsfInfileMSOle *ole, GError **err)
+{
+	static guint8 const signature[] =
+		{ 0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1 };
+	guint8 const *header, *tmp;
+	guint32 *metabat = NULL;
+	MSOleInfo *info;
+	guint32 bb_shift, sb_shift, num_bat, num_metabat, last, dirent_start;
+	guint32 metabat_block, *ptr;
+
+	/* check the header */
+	if (gsf_input_seek (ole->input, 0, G_SEEK_SET) ||
+	    NULL == (header = gsf_input_read (ole->input, OLE_HEADER_SIZE, NULL)) ||
+	    0 != memcmp (header, signature, sizeof (signature))) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"No OLE2 signature");
+		return TRUE;
+	}
+
+	bb_shift      = GSF_LE_GET_GUINT16 (header + OLE_HEADER_BB_SHIFT);
+	sb_shift      = GSF_LE_GET_GUINT16 (header + OLE_HEADER_SB_SHIFT);
+	num_bat	      = GSF_LE_GET_GUINT32 (header + OLE_HEADER_NUM_BAT);
+	dirent_start  = GSF_LE_GET_GUINT32 (header + OLE_HEADER_DIRENT_START);
+        metabat_block = GSF_LE_GET_GUINT32 (header + OLE_HEADER_METABAT_BLOCK);
+	num_metabat   = GSF_LE_GET_GUINT32 (header + OLE_HEADER_NUM_METABAT);
+
+	/* Some sanity checks
+	 * 1) There should always be at least 1 BAT block
+	 * 2) It makes no sense to have a block larger than 2^31 for now.
+	 *    Maybe relax this later, but not much.
+	 */
+	if (6 > bb_shift || bb_shift >= 31 || sb_shift > bb_shift) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Unreasonable block sizes");
+		return TRUE;
+	}
+
+	info = g_new0 (MSOleInfo, 1);
+	ole->info = info;
+
+	info->ref_count	     = 1;
+	info->bb.shift	     = bb_shift;
+	info->bb.size	     = 1 << info->bb.shift;
+	info->bb.filter	     = info->bb.size - 1;
+	info->sb.shift	     = sb_shift;
+	info->sb.size	     = 1 << info->sb.shift;
+	info->sb.filter	     = info->sb.size - 1;
+	info->threshold	     = GSF_LE_GET_GUINT32 (header + OLE_HEADER_THRESHOLD);
+        info->sbat_start     = GSF_LE_GET_GUINT32 (header + OLE_HEADER_SBAT_START);
+        info->num_sbat       = GSF_LE_GET_GUINT32 (header + OLE_HEADER_NUM_SBAT);
+	info->max_block	     = (gsf_input_size (ole->input) - OLE_HEADER_SIZE) / info->bb.size;
+	info->sb_file	     = NULL;
+
+	if (info->num_sbat == 0 && info->sbat_start != BAT_MAGIC_END_OF_CHAIN) {
+		g_warning ("There is are not supposed to be any blocks in the small block allocation table, yet there is a link to some.  Ignoring it.");
+	}
+
+	/* very rough heuristic, just in case */
+	if (num_bat < info->max_block) {
+		info->bb.bat.num_blocks = num_bat * (info->bb.size / BAT_INDEX_SIZE);
+		info->bb.bat.block	= g_new0 (guint32, info->bb.bat.num_blocks);
+
+		metabat = (guint32 *)g_alloca (MAX (info->bb.size, OLE_HEADER_SIZE));
+
+		/* Reading the elements invalidates this memory, make copy */
+		gsf_ole_get_guint32s (metabat, header + OLE_HEADER_START_BAT,
+			OLE_HEADER_SIZE - OLE_HEADER_START_BAT);
+		last = num_bat;
+		if (last > OLE_HEADER_METABAT_SIZE)
+			last = OLE_HEADER_METABAT_SIZE;
+
+		ptr = ole_info_read_metabat (ole, info->bb.bat.block,
+			info->bb.bat.num_blocks, metabat, metabat + last);
+		num_bat -= last;
+	} else
+		ptr = NULL;
+
+	last = (info->bb.size - BAT_INDEX_SIZE) / BAT_INDEX_SIZE;
+	while (ptr != NULL && num_metabat-- > 0) {
+		tmp = ole_get_block (ole, metabat_block, NULL);
+		if (tmp == NULL) {
+			ptr = NULL;
+			break;
+		}
+
+		/* Reading the elements invalidates this memory, make copy */
+		gsf_ole_get_guint32s (metabat, tmp, (int)info->bb.size);
+
+		if (num_metabat == 0) {
+			if (last < num_bat) {
+				/* there should be less that a full metabat block
+				 * remaining */
+				ptr = NULL;
+				break;
+			}
+			last = num_bat;
+		} else if (num_metabat > 0) {
+			metabat_block = metabat[last];
+			num_bat -= last;
+		}
+
+		ptr = ole_info_read_metabat (ole, ptr,
+			info->bb.bat.num_blocks, metabat, metabat + last);
+	}
+
+	if (ptr == NULL) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Inconsistent block allocation table");
+		return TRUE;
+	}
+
+	/* Read the directory's bat, we do not know the size */
+	if (ole_make_bat (&info->bb.bat, 0, dirent_start, &ole->bat)) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Problems making block allocation table");
+		return TRUE;
+	}
+
+	/* Read the directory */
+	ole->dirent = info->root_dir = ole_dirent_new (ole, 0, NULL);
+	if (ole->dirent == NULL) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Problems reading directory");
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static void
+gsf_infile_msole_finalize (GObject *obj)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (obj);
+
+	if (ole->input != NULL) {
+		g_object_unref (G_OBJECT (ole->input));
+		ole->input = NULL;
+	}
+	if (ole->info != NULL &&
+	    ole->info->sb_file != (GsfInput *)ole) {
+		ole_info_unref (ole->info);
+		ole->info = NULL;
+	}
+	ols_bat_release (&ole->bat);
+
+	g_free (ole->stream.buf);
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_infile_msole_dup (GsfInput *src_input, GError **err)
+{
+	GsfInfileMSOle const *src = GSF_INFILE_MSOLE (src_input);
+	GsfInfileMSOle *dst = ole_dup (src, err);
+
+	if (dst == NULL)
+		return NULL;
+
+	if (src->bat.block != NULL) {
+		dst->bat.block = g_new (guint32, src->bat.num_blocks),
+		memcpy (dst->bat.block, src->bat.block,
+			sizeof (guint32) * src->bat.num_blocks);
+	}
+	dst->bat.num_blocks = src->bat.num_blocks;
+	dst->dirent = src->dirent;
+
+	return GSF_INPUT (dst);
+}
+
+static guint8 const *
+gsf_infile_msole_read (GsfInput *input, size_t num_bytes, guint8 *buffer)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (input);
+	gsf_off_t first_block, last_block, raw_block, offset, i;
+	guint8 const *data;
+	guint8 *ptr;
+	size_t count;
+
+	/* small block files are preload */
+	if (ole->dirent != NULL && ole->dirent->use_sb) {
+		if (buffer != NULL) {
+			memcpy (buffer, ole->stream.buf + input->cur_offset, num_bytes);
+			return buffer;
+		}
+		return ole->stream.buf + input->cur_offset;
+	}
+
+	/* GsfInput guarantees that num_bytes > 0 */
+	first_block = OLE_BIG_BLOCK (input->cur_offset, ole);
+	last_block = OLE_BIG_BLOCK (input->cur_offset + num_bytes - 1, ole);
+	offset = input->cur_offset & ole->info->bb.filter;
+
+	/* optimization : are all the raw blocks contiguous */
+	i = first_block;
+	raw_block = ole->bat.block [i];
+	while (++i <= last_block && ++raw_block == ole->bat.block [i])
+		;
+	if (i > last_block) {
+		/* optimization don't seek if we don't need to */
+		if (ole->cur_block != first_block) {
+			if (gsf_input_seek (ole->input,
+				(gsf_off_t)(MAX (OLE_HEADER_SIZE, ole->info->bb.size) + (ole->bat.block [first_block] << ole->info->bb.shift) + offset),
+				G_SEEK_SET) < 0)
+				return NULL;
+		}
+		ole->cur_block = last_block;
+		return gsf_input_read (ole->input, num_bytes, buffer);
+	}
+
+	/* damn, we need to copy it block by block */
+	if (buffer == NULL) {
+		if (ole->stream.buf_size < num_bytes) {
+			if (ole->stream.buf != NULL)
+				g_free (ole->stream.buf);
+			ole->stream.buf_size = num_bytes;
+			ole->stream.buf = g_new (guint8, num_bytes);
+		}
+		buffer = ole->stream.buf;
+	}
+
+	ptr = buffer;
+	for (i = first_block ; i <= last_block ; i++ , ptr += count, num_bytes -= count) {
+		count = ole->info->bb.size - offset;
+		if (count > num_bytes)
+			count = num_bytes;
+		data = ole_get_block (ole, ole->bat.block [i], NULL);
+		if (data == NULL)
+			return NULL;
+
+		/* TODO : this could be optimized to avoid the copy */
+		memcpy (ptr, data + offset, count);
+		offset = 0;
+	}
+	ole->cur_block = BAT_MAGIC_UNUSED;
+
+	return buffer;
+}
+
+static gboolean
+gsf_infile_msole_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (input);
+
+	(void) offset; 
+	(void) whence;
+
+	ole->cur_block = BAT_MAGIC_UNUSED;
+	return FALSE;
+}
+
+static GsfInput *
+gsf_infile_msole_new_child (GsfInfileMSOle *parent,
+			    MSOleDirent *dirent, GError **err)
+{
+	GsfInfileMSOle *child;
+	MSOleInfo *info;
+	MSOleBAT const *metabat;
+	GsfInput *sb_file = NULL;
+	size_t size_guess;
+
+	child = ole_dup (parent, err);
+	if (!child)
+		return NULL;
+
+	child->dirent = dirent;
+	gsf_input_set_size (GSF_INPUT (child), (gsf_off_t) dirent->size);
+
+	/* The root dirent defines the small block file */
+	if (dirent->index != 0) {
+		gsf_input_set_name (GSF_INPUT (child), dirent->name);
+		gsf_input_set_container (GSF_INPUT (child), GSF_INFILE (parent));
+
+		if (dirent->is_directory) {
+			/* be wary.  It seems as if some implementations pretend that the
+			 * directories contain data */
+			gsf_input_set_size (GSF_INPUT (child), 0);
+			return GSF_INPUT (child);
+		}
+	}
+
+	info = parent->info;
+
+	/* build the bat */
+	if (dirent->use_sb) {
+		metabat = &info->sb.bat;
+		size_guess = dirent->size >> info->sb.shift;
+		sb_file = ole_info_get_sb_file (parent);
+		if (!sb_file) {
+			if (err != NULL)
+				*err = g_error_new (gsf_input_error_id (), 0,
+						    "Failed to access child");
+			g_object_unref (G_OBJECT (child));
+			return NULL;
+		}
+	} else {
+		metabat = &info->bb.bat;
+		size_guess = dirent->size >> info->bb.shift;
+	}
+	if (ole_make_bat (metabat, size_guess + 1, dirent->first_block, &child->bat)) {
+		g_object_unref (G_OBJECT (child));
+		return NULL;
+	}
+
+	if (dirent->use_sb) {
+		unsigned i;
+		guint8 const *data;
+
+		g_return_val_if_fail (sb_file != NULL, NULL);
+
+		child->stream.buf_size = info->threshold;
+		child->stream.buf = g_new (guint8, info->threshold);
+
+		for (i = 0 ; i < child->bat.num_blocks; i++)
+			if (gsf_input_seek (GSF_INPUT (sb_file),
+				(gsf_off_t)(child->bat.block [i] << info->sb.shift), G_SEEK_SET) < 0 ||
+			    (data = gsf_input_read (GSF_INPUT (sb_file),
+				info->sb.size, 
+				child->stream.buf + (i << info->sb.shift))) == NULL) {
+
+				g_warning ("failure reading block %d", i);
+
+				g_object_unref (G_OBJECT (child));
+				return NULL;
+			}
+	}
+
+	return GSF_INPUT (child);
+}
+
+static GsfInput *
+gsf_infile_msole_child_by_index (GsfInfile *infile, int target, GError **err)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (infile);
+	GList *p;
+
+	for (p = ole->dirent->children; p != NULL ; p = p->next)
+		if (target-- <= 0)
+			return gsf_infile_msole_new_child (ole,
+				(MSOleDirent *)p->data, err);
+	return NULL;
+}
+
+static char const *
+gsf_infile_msole_name_by_index (GsfInfile *infile, int target)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (infile);
+	GList *p;
+
+	for (p = ole->dirent->children; p != NULL ; p = p->next)
+		if (target-- <= 0)
+			return ((MSOleDirent *)p->data)->name;
+	return NULL;
+}
+
+static GsfInput *
+gsf_infile_msole_child_by_name (GsfInfile *infile, char const *name, GError **err)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (infile);
+	GList *p;
+
+	for (p = ole->dirent->children; p != NULL ; p = p->next) {
+		MSOleDirent *dirent = p->data;
+		if (dirent->name != NULL && !strcmp (name, dirent->name))
+			return gsf_infile_msole_new_child (ole, dirent, err);
+	}
+	return NULL;
+}
+
+static int
+gsf_infile_msole_num_children (GsfInfile *infile)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (infile);
+
+	g_return_val_if_fail (ole->dirent != NULL, -1);
+
+	if (!ole->dirent->is_directory)
+		return -1;
+	return g_list_length (ole->dirent->children);
+}
+
+static void
+gsf_infile_msole_init (GObject *obj)
+{
+	GsfInfileMSOle *ole = GSF_INFILE_MSOLE (obj);
+
+	ole->input		= NULL;
+	ole->info		= NULL;
+	ole->bat.block		= NULL;
+	ole->bat.num_blocks	= 0;
+	ole->cur_block		= BAT_MAGIC_UNUSED;
+	ole->stream.buf		= NULL;
+	ole->stream.buf_size	= 0; 
+}
+
+static void
+gsf_infile_msole_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass  *input_class  = GSF_INPUT_CLASS (gobject_class);
+	GsfInfileClass *infile_class = GSF_INFILE_CLASS (gobject_class);
+
+	gobject_class->finalize		= gsf_infile_msole_finalize;
+	input_class->Dup		= gsf_infile_msole_dup;
+	input_class->Read		= gsf_infile_msole_read;
+	input_class->Seek		= gsf_infile_msole_seek;
+	infile_class->num_children	= gsf_infile_msole_num_children;
+	infile_class->name_by_index	= gsf_infile_msole_name_by_index;
+	infile_class->child_by_index	= gsf_infile_msole_child_by_index;
+	infile_class->child_by_name	= gsf_infile_msole_child_by_name;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfInfileMSOle, gsf_infile_msole,
+	   gsf_infile_msole_class_init, gsf_infile_msole_init,
+	   GSF_INFILE_TYPE)
+
+/**
+ * gsf_infile_msole_new :
+ * @source :
+ * @err   :
+ *
+ * Opens the root directory of an MS OLE file.
+ * NOTE : adds a reference to @source
+ *
+ * Returns : the new ole file handler
+ **/
+GsfInfile *
+gsf_infile_msole_new (GsfInput *source, GError **err)
+{
+	GsfInfileMSOle *ole;
+	gsf_off_t calling_pos;
+
+	g_return_val_if_fail (GSF_IS_INPUT (source), NULL);
+
+	ole = (GsfInfileMSOle *)g_object_new (GSF_INFILE_MSOLE_TYPE, NULL);
+	ole->input = gsf_input_proxy_new (source);
+	gsf_input_set_size (GSF_INPUT (ole), 0);
+
+	calling_pos = gsf_input_tell (source);
+	if (ole_init_info (ole, err)) {
+		/* It's not clear to me why we do this.  And if this
+		   fails, there's really nothing we can do.  */
+		(void)gsf_input_seek (source, calling_pos, G_SEEK_SET);
+
+		g_object_unref (G_OBJECT (ole));
+		return NULL;
+	}
+
+	return GSF_INFILE (ole);
+}
+
+/**
+ * gsf_infile_msole_get_class_id :
+ * @ole: a #GsfInfileMSOle
+ * @res: 16 byte identifier (often a GUID in MS Windows apps)
+ *
+ * Retrieves the 16 byte indentifier (often a GUID in MS Windows apps)
+ * stored within the directory associated with @ole and stores it in @res.
+ *
+ * Returns TRUE on success
+ **/
+gboolean
+gsf_infile_msole_get_class_id (GsfInfileMSOle const *ole, guint8 *res)
+{
+	g_return_val_if_fail (ole != NULL && ole->dirent != NULL, FALSE);
+
+	memcpy (res, ole->dirent->clsid,
+		sizeof(ole->dirent->clsid));
+	return TRUE;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msole.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,42 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-msole.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INFILE_MSOLE_H
+#define GSF_INFILE_MSOLE_H
+
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GsfInfileMSOle GsfInfileMSOle;
+
+#define GSF_INFILE_MSOLE_TYPE        (gsf_infile_msole_get_type ())
+#define GSF_INFILE_MSOLE(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_MSOLE_TYPE, GsfInfileMSOle))
+#define GSF_IS_INFILE_MSOLE(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_MSOLE_TYPE))
+
+GType	   gsf_infile_msole_get_type	 (void);
+GsfInfile *gsf_infile_msole_new		 (GsfInput *source, GError **err);
+gboolean   gsf_infile_msole_get_class_id (GsfInfileMSOle const *ole,
+					  guint8 *res);
+
+G_END_DECLS
+
+#endif /* GSF_INFILE_MSOLE_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,441 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-msvba.c :
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+/* Info extracted from
+ *	svx/source/msfilter/msvbasic.cxx
+ *	Costin Raiu, Kaspersky Labs, 'Apple of Discord'
+ *	Virus bulletin's bontchev.pdf, svajcer.pdf
+ *
+ * and lots and lots of reading.  There are lots of pieces missing still
+ * but the structure seems to hold together.
+ */
+#include <gsf-config.h>
+#include <gsf/gsf-infile-msvba.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-msole-utils.h>
+#include <gsf/gsf-utils.h>
+
+#include <stdio.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct _GsfInfileMSVBA {
+	GObject parent;
+
+	GsfInfile *source;
+	GList *children;
+};
+typedef GObjectClass GsfInfileMSVBAClass;
+
+#define GSF_INFILE_MSVBA_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_INFILE_MSVBA_TYPE, GsfInfileMSVBAClass))
+#define GSF_IS_INFILE_MSVBA_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_INFILE_MSVBA_TYPE))
+
+
+static guint8 *
+gsf_vba_inflate (GsfInput *input, gsf_off_t offset, int *size, gboolean add_null_terminator)
+{
+	GByteArray *res = gsf_msole_inflate (input, offset + 3);
+	if (res == NULL)
+		return NULL;
+	*size = res->len;
+	if (add_null_terminator)
+		g_byte_array_append (res, "", 1);
+	return g_byte_array_free (res, FALSE);
+}
+
+static void
+vba_extract_module_source (GsfInfileMSVBA *vba, char const *name, guint32 src_offset)
+{
+	GsfInput *module;
+	guint8 *src_code;
+	int inflated_size;
+
+	g_return_if_fail (name != NULL);
+
+	module = gsf_infile_child_by_name (vba->source, name);
+	if (module == NULL)
+		return;
+
+	src_code = gsf_vba_inflate (module, (gsf_off_t) src_offset, &inflated_size, TRUE);
+	if (src_code != NULL) {
+		printf ("======================\n%s\n>>>>>>\n%s<<<<<<\n", name, src_code);
+		g_free (src_code);
+	} else
+		g_warning ("Problems extracting the source for %s @ %u", name, src_offset);
+
+	g_object_unref (module);
+	module = NULL;
+}
+
+/**
+ * vba_dir_read :
+ * @vba :
+ * @err : optionally NULL
+ *
+ * Read an VBA dirctory and its project file.
+ * along the way.
+ *
+ * Return value: FALSE on error setting @err if it is supplied.
+ **/
+static gboolean
+vba_dir_read (GsfInfileMSVBA *vba, GError **err)
+{
+	int inflated_size, element_count = -1;
+	char const *msg = NULL;
+	char *name, *elem_stream = NULL;
+	guint32 len;
+	guint16 tag;
+	guint8   *inflated_data, *end, *ptr;
+	GsfInput *dir;
+	gboolean  failed = TRUE;
+
+	/* 0. get the stream */
+	dir = gsf_infile_child_by_name (vba->source, "dir");
+	if (dir == NULL) {
+		msg = "Can't find the VBA directory stream.";
+		goto fail_stream;
+	}
+
+	/* 1. decompress it */
+	ptr = inflated_data = gsf_vba_inflate (dir, 0, &inflated_size, FALSE);
+	if (inflated_data == NULL)
+		goto fail_compression;
+	end = inflated_data + inflated_size;
+
+	/* 2. GUESS : based on several xls with macros and XL8GARY this looks like a
+	 * series of sized records.  Be _extra_ careful */
+	do {
+		/* I have seen
+		 * type		len	data
+		 *  1		 4	 1 0 0 0
+		 *  2		 4	 9 4 0 0
+		 *  3		 2	 4 e4
+		 *  4		<var>	 project name
+		 *  5		 0
+		 *  6		 0
+		 *  7		 4
+		 *  8		 4
+		 *  0x3d	 0
+		 *  0x40	 0
+		 *  0x14	 4	 9 4 0 0
+		 *
+		 *  0x0f == number of elements
+		 *  0x1c == (Size 0)
+		 *  0x1e == (Size 4)
+		 *  0x48 == (Size 0)
+		 *  0x31 == stream offset of the compressed source !
+		 *
+		 *  0x16 == an ascii dependency name
+		 *  0x3e == a unicode dependency name
+		 *  0x33 == a classid for a dependency with no trialing data
+		 *
+		 *  0x2f == a dummy classid
+		 *  0x30 == a classid
+		 *  0x0d == the classid
+		 *  0x2f, and 0x0d appear contain
+		 * 	uint32 classid_size;
+		 * 	<classid>
+		 *	00 00 00 00 00 00
+		 *	and sometimes some trailing junk
+		 **/
+		if ((ptr + 6) > end) {
+			msg = "vba project header problem";
+			goto fail_content;
+		}
+		tag = GSF_LE_GET_GUINT16 (ptr);
+		len = GSF_LE_GET_GUINT32 (ptr + 2);
+
+		ptr += 6;
+		if ((ptr + len) > end) {
+			msg = "vba project header problem";
+			goto fail_content;
+		}
+
+		switch (tag) {
+		case 4:
+			name = g_strndup (ptr, len);
+			g_print ("Project Name : '%s'\n", name);
+			g_free (name);
+			break;
+		case 9:
+			g_print ("Quirk - duff tag length");
+			len += 2;
+			break;
+		case 0xf  :
+			if (len != 2) {
+				g_warning ("element count is not what we expected");
+				break;
+			}
+			if (element_count >= 0) {
+				g_warning ("More than one element count ??");
+				break;
+			}
+			element_count = GSF_LE_GET_GUINT16 (ptr);
+			break;
+
+		/* dependencies */
+		case 0x0d : break;
+		case 0x2f : break;
+		case 0x30 : break;
+		case 0x33 : break;
+		case 0x3e : break;
+		case 0x16:
+#if 0
+			name = g_strndup (ptr, len);
+			g_print ("Depend Name : '%s'\n", name);
+			g_free (name);
+#endif
+			break;
+
+		/* elements */
+		case 0x47 : break;
+		case 0x32 : break;
+		case 0x1a:
+#if 0
+			name = g_strndup (ptr, len);
+			g_print ("Element Name : '%s'\n", name);
+			g_free (name);
+#endif
+			break;
+		case 0x19: elem_stream = g_strndup (ptr, len); break;
+
+		case 0x31:
+			if (len != 4) {
+				g_warning ("source offset property is not what we expected");
+				break;
+			}
+			vba_extract_module_source (vba, elem_stream,
+				GSF_LE_GET_GUINT32 (ptr));
+			g_free (elem_stream); elem_stream = NULL;
+			element_count--;
+			break;
+
+		default :
+#if 0
+			g_print ("tag %hx : len %u\n", tag, len);
+			gsf_mem_dump (ptr, len);
+#endif
+			break;
+		}
+
+		ptr += len;
+	} while (tag != 0x10);
+	g_free (elem_stream);
+
+	if (element_count != 0)
+		g_warning ("Number of elements differs from expectations");
+
+	failed = FALSE;
+
+fail_content :
+	g_free (inflated_data);
+fail_compression :
+	g_object_unref (G_OBJECT (dir));
+fail_stream :
+
+	if (failed) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0, msg);
+		return FALSE;
+	}
+	return TRUE;
+}
+
+#define VBA56_DIRENT_RECORD_COUNT (2 + /* magic */		\
+				   4 + /* version */		\
+				   2 + /* 0x00 0xff */		\
+				  22)  /* unknown */
+#define VBA56_DIRENT_HEADER_SIZE (VBA56_DIRENT_RECORD_COUNT +	\
+				  2 +  /* type1 record count */	\
+				  2)   /* unknown */
+
+#if 0
+/**
+ * vba_project_read :
+ * @vba :
+ * @err : optionally NULL
+ *
+ * Read an VBA dirctory and its project file.
+ * along the way.
+ *
+ * Return value: FALSE on error setting @err if it is supplied.
+ **/
+static gboolean
+vba_project_read (GsfInfileMSVBA *vba, GError **err)
+{
+	/* NOTE : This seems constant, find some confirmation */
+	static guint8 const signature[]	  = { 0xcc, 0x61 };
+	static struct {
+		guint8 const signature[4];
+		char const * const name;
+		int const vba_version;
+		gboolean const is_mac;
+	} const  versions [] = {
+		{ { 0x5e, 0x00, 0x00, 0x01 }, "Office 97",              5, FALSE},
+		{ { 0x5f, 0x00, 0x00, 0x01 }, "Office 97 SR1",          5, FALSE },
+		{ { 0x65, 0x00, 0x00, 0x01 }, "Office 2000 alpha?",     6, FALSE },
+		{ { 0x6b, 0x00, 0x00, 0x01 }, "Office 2000 beta?",      6, FALSE },
+		{ { 0x6d, 0x00, 0x00, 0x01 }, "Office 2000",            6, FALSE },
+		{ { 0x6f, 0x00, 0x00, 0x01 }, "Office 2000",            6, FALSE },
+		{ { 0x70, 0x00, 0x00, 0x01 }, "Office XP beta 1/2",     6, FALSE },
+		{ { 0x73, 0x00, 0x00, 0x01 }, "Office XP",              6, FALSE },
+		{ { 0x76, 0x00, 0x00, 0x01 }, "Office 2003",            6, FALSE },
+		{ { 0x79, 0x00, 0x00, 0x01 }, "Office 2003",            6, FALSE },
+		{ { 0x60, 0x00, 0x00, 0x0e }, "MacOffice 98",           5, TRUE },
+		{ { 0x62, 0x00, 0x00, 0x0e }, "MacOffice 2001",         5, TRUE },
+		{ { 0x63, 0x00, 0x00, 0x0e }, "MacOffice X",		6, TRUE },
+		{ { 0x64, 0x00, 0x00, 0x0e }, "MacOffice 2004",         6, TRUE },
+	};
+
+	guint8 const *data;
+	unsigned i, count, len;
+	gunichar2 *uni_name;
+	char *name;
+	GsfInput *dir;
+
+	dir = gsf_infile_child_by_name (vba->source, "dir");
+	if (dir == NULL) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Can't find the VBA directory stream.");
+		return FALSE;
+	}
+
+	if (gsf_input_seek (dir, 0, G_SEEK_SET) ||
+	    NULL == (data = gsf_input_read (dir, VBA56_DIRENT_HEADER_SIZE, NULL)) ||
+	    0 != memcmp (data, signature, sizeof (signature))) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"No VBA signature");
+		return FALSE;
+	}
+
+	for (i = 0 ; i < G_N_ELEMENTS (versions); i++)
+		if (!memcmp (data+2, versions[i].signature, 4))
+			break;
+
+	if (i >= G_N_ELEMENTS (versions)) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Unknown VBA version signature 0x%x%x%x%x",
+				data[2], data[3], data[4], data[5]);
+		return FALSE;
+	}
+
+	puts (versions[i].name);
+
+	/* these depend strings seem to come in 2 blocks */
+	count = GSF_LE_GET_GUINT16 (data + VBA56_DIRENT_RECORD_COUNT);
+	for (; count > 0 ; count--) {
+		if (NULL == ((data = gsf_input_read (dir, 2, NULL))))
+			break;
+		len = GSF_LE_GET_GUINT16 (data);
+		if (NULL == ((data = gsf_input_read (dir, len, NULL)))) {
+			printf ("len == 0x%x ??\n", len);
+			break;
+		}
+
+		uni_name = g_new0 (gunichar2, len/2 + 1);
+
+		/* be wary about endianness */
+		for (i = 0 ; i < len ; i += 2)
+			uni_name [i/2] = GSF_LE_GET_GUINT16 (data + i);
+		name = g_utf16_to_utf8 (uni_name, -1, NULL, NULL, NULL);
+		g_free (uni_name);
+
+		printf ("%d %s\n", count, name);
+
+		/* ignore this blob ???? */
+		if (!strncmp ("*\\G", name, 3)) {
+			if (NULL == ((data = gsf_input_read (dir, 12, NULL)))) {
+				printf ("len == 0x%x ??\n", len);
+				break;
+			}
+		}
+
+		g_free (name);
+	}
+
+	g_return_val_if_fail (count == 0, FALSE);
+
+	return TRUE;
+}
+#endif
+
+static void
+gsf_infile_msvba_finalize (GObject *obj)
+{
+	GsfInfileMSVBA *vba = GSF_INFILE_MSVBA (obj);
+
+	if (vba->source != NULL) {
+		g_object_unref (G_OBJECT (vba->source));
+		vba->source = NULL;
+	}
+	parent_class->finalize (obj);
+}
+
+static void
+gsf_infile_msvba_init (GObject *obj)
+{
+	GsfInfileMSVBA *vba = GSF_INFILE_MSVBA (obj);
+
+	vba->source		= NULL;
+	vba->children		= NULL;
+}
+
+static void
+gsf_infile_msvba_class_init (GObjectClass *gobject_class)
+{
+	gobject_class->finalize		= gsf_infile_msvba_finalize;
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfInfileMSVBA, gsf_infile_msvba,
+	   gsf_infile_msvba_class_init, gsf_infile_msvba_init,
+	   G_TYPE_OBJECT)
+
+GsfInfile *
+gsf_infile_msvba_new (GsfInfile *source, GError **err)
+{
+	GsfInfileMSVBA *vba;
+
+	g_return_val_if_fail (GSF_IS_INFILE (source), NULL);
+
+	vba = g_object_new (GSF_INFILE_MSVBA_TYPE, NULL);
+	g_object_ref (G_OBJECT (source));
+	vba->source = source;
+
+	/* vba_project_read (vba, err); */
+
+	/* find the name offset pairs */
+	if (vba_dir_read (vba, err))
+		return GSF_INFILE (vba);
+
+	if (err != NULL && *err == NULL)
+		*err = g_error_new (gsf_input_error_id (), 0,
+				"Unable to parse VBA header");
+
+	g_object_unref (G_OBJECT (vba));
+	return NULL;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-msvba.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,42 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-msvba.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INFILE_MSVBA_H
+#define GSF_INFILE_MSVBA_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GsfInfileMSVBA GsfInfileMSVBA;
+
+#define GSF_INFILE_MSVBA_TYPE        (gsf_infile_msvba_get_type ())
+#define GSF_INFILE_MSVBA(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_MSVBA_TYPE, GsfInfileMSVBA))
+#define GSF_IS_INFILE_MSVBA(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_MSVBA_TYPE))
+
+GType gsf_infile_msvba_get_type (void);
+
+GsfInfile *gsf_infile_msvba_new (GsfInfile *source, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INFILE_MSVBA_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,201 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-stdio.c: read a directory tree
+ *
+ * Copyright (C) 2004 Novell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-impl.h>
+#include <gsf/gsf-infile-stdio.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <glib/gdir.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct _GsfInfileStdio {
+	GsfInfile parent;
+	char     *root;
+	GList    *children;
+};
+
+typedef GsfInfileClass GsfInfileStdioClass;
+
+static void
+gsf_infile_stdio_finalize (GObject *obj)
+{
+	GsfInfileStdio *ifs = GSF_INFILE_STDIO (obj);
+
+	g_free (ifs->root);
+	g_list_foreach (ifs->children, (GFunc) g_free, NULL);
+	g_list_free (ifs->children);
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_infile_stdio_dup (GsfInput *src_input, G_GNUC_UNUSED GError **err)
+{
+	GsfInfileStdio *src = GSF_INFILE_STDIO (src_input);
+	GsfInfileStdio *dst = g_object_new (gsf_infile_stdio_get_type(), NULL);
+	GList *ptr;
+
+	dst->root = g_strdup (src->root);
+
+	for (ptr = src->children; ptr != NULL ; ptr = ptr->next)
+		dst->children = g_list_prepend (dst->children,
+			g_strdup (ptr->data));
+	dst->children = g_list_reverse (dst->children);
+	return GSF_INPUT (dst);
+}
+
+static guint8 const *
+gsf_infile_stdio_read (G_GNUC_UNUSED GsfInput *input, G_GNUC_UNUSED size_t num_bytes,
+		       G_GNUC_UNUSED guint8 *buffer)
+{
+	return NULL;
+}
+
+static GsfInput *
+open_child (GsfInfileStdio *ifs, char const *name, GError **err)
+{
+	GsfInput *child;
+	char *path = g_build_filename (ifs->root, name, NULL);
+
+	if (g_file_test (path, G_FILE_TEST_IS_DIR))
+		child = (GsfInput *) gsf_infile_stdio_new (path, err);
+	else
+		child = gsf_input_stdio_new (path, err);
+	g_free (path);
+
+	return child;
+}
+
+static GsfInput *
+gsf_infile_stdio_child_by_index (GsfInfile *infile, int target, GError **err)
+{
+	GsfInfileStdio *ifs = GSF_INFILE_STDIO (infile);
+	char const *name = g_list_nth_data (ifs->children, target);
+
+	if (!name)
+		return NULL;
+
+	return open_child (ifs, name, err);
+}
+
+static char const *
+gsf_infile_stdio_name_by_index (GsfInfile *infile, int target)
+{
+	GsfInfileStdio *ifs = GSF_INFILE_STDIO (infile);
+
+	return g_list_nth_data (ifs->children, target);
+}
+
+static GsfInput *
+gsf_infile_stdio_child_by_name (GsfInfile *infile, char const *name, GError **err)
+{
+	GsfInfileStdio *ifs = GSF_INFILE_STDIO (infile);
+	GList *ptr;
+
+	for (ptr = ifs->children; ptr != NULL; ptr = ptr->next)
+		if (!strcmp (ptr->data, name))
+			return open_child (ifs, name, err);
+
+	return NULL;
+}
+
+static int
+gsf_infile_stdio_num_children (GsfInfile *infile)
+{
+	GsfInfileStdio *ifs = GSF_INFILE_STDIO (infile);
+
+	return g_list_length (ifs->children);
+}
+
+static void
+gsf_infile_stdio_init (GsfInfileStdio *ifs)
+{
+	ifs->root = NULL;
+	ifs->children = NULL;
+}
+
+static void
+gsf_infile_stdio_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass  *input_class  = GSF_INPUT_CLASS (gobject_class);
+	GsfInfileClass *infile_class = GSF_INFILE_CLASS (gobject_class);
+
+	parent_class = g_type_class_peek (GSF_INFILE_TYPE);
+
+	gobject_class->finalize		= gsf_infile_stdio_finalize;
+	input_class->Dup		= gsf_infile_stdio_dup;
+	input_class->Read		= gsf_infile_stdio_read;
+	input_class->Seek		= NULL;
+	infile_class->num_children	= gsf_infile_stdio_num_children;
+	infile_class->name_by_index	= gsf_infile_stdio_name_by_index;
+	infile_class->child_by_index	= gsf_infile_stdio_child_by_index;
+	infile_class->child_by_name	= gsf_infile_stdio_child_by_name;
+}
+
+GSF_CLASS (GsfInfileStdio, gsf_infile_stdio,
+	   gsf_infile_stdio_class_init, gsf_infile_stdio_init,
+	   GSF_INFILE_TYPE)
+
+/**
+ * gsf_infile_stdio_new :
+ * @root : in locale dependent encoding
+ * @err	 : optionally NULL.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfInfile *
+gsf_infile_stdio_new (char const *root, GError **err)
+{
+	GsfInfileStdio *ifs;
+	GDir *dir;
+	char const *child;
+
+	dir = g_dir_open (root, 0, err);
+	if (dir == NULL)
+		return NULL;
+
+	ifs = g_object_new (gsf_infile_stdio_get_type(), NULL);
+	ifs->root = g_strdup (root);
+
+	while ((child = g_dir_read_name (dir)))
+		ifs->children = g_list_prepend (ifs->children,
+						g_strdup (child));
+	g_dir_close (dir);
+
+	gsf_input_set_name_from_filename (GSF_INPUT (ifs), root);
+
+	return GSF_INFILE (ifs);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-stdio.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-stdio.h: 
+ *
+ * Copyright (C) 2004 Novell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INFILE_STDIO_H
+#define GSF_INFILE_STDIO_H
+
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GsfInfileStdio GsfInfileStdio;
+
+#define GSF_INFILE_STDIO_TYPE        (gsf_infile_stdio_get_type ())
+#define GSF_INFILE_STDIO(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_STDIO_TYPE, GsfInfileStdio))
+#define GSF_IS_INFILE_STDIO(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_STDIO_TYPE))
+
+GType	   gsf_infile_stdio_get_type (void);
+GsfInfile *gsf_infile_stdio_new      (char const *root, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INFILE_STDIO_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,866 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-zip.c :
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *                    Tambet Ingo   (tambet at ximian.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-infile-impl.h>
+#include <gsf/gsf-infile-zip.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-zip-impl.h>
+#include <gsf/gsf-input-proxy.h>
+
+#include <string.h>
+#include <zlib.h>
+
+#undef G_LOG_DOMAIN
+#define G_LOG_DOMAIN "libgsf:zip"
+
+enum {
+	PROP_0,
+	PROP_SOURCE,
+	PROP_COMPRESSION_LEVEL,
+	PROP_INTERNAL_PARENT,
+};
+
+static GObjectClass *parent_class;
+
+typedef struct {
+	guint16     entries;
+	guint32     dir_pos;
+	GList	   *dirent_list;
+	GsfZipVDir *vdir;
+
+	int ref_count;
+} ZipInfo;
+
+struct _GsfInfileZip {
+	GsfInfile parent;
+
+	GsfInput  *source;
+	ZipInfo	  *info;
+
+	GsfZipVDir   *vdir;
+
+	z_stream  *stream;
+	guint32   restlen;
+	guint32   crestlen;
+	
+	guint8   *buf;
+	size_t    buf_size;
+	gsf_off_t seek_skipped;
+
+	GError *err;
+	GsfInfileZip *dup_parent;
+};
+
+typedef struct {
+	GsfInfileClass  parent_class;
+} GsfInfileZipClass;
+
+#define GSF_INFILE_ZIP_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_INFILE_ZIP_TYPE, GsfInfileZipClass))
+#define GSF_IS_INFILE_ZIP_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_INFILE_ZIP_TYPE))
+
+static GsfZipVDir *
+vdir_child_by_name (GsfZipVDir *vdir, char const *name)
+{
+	GSList *l;
+
+	for (l = vdir->children; l; l = l->next) {
+		GsfZipVDir *child = (GsfZipVDir *) l->data;
+		if (strcmp (child->name, name) == 0)
+			return child;
+	}
+	return NULL;
+}
+
+static GsfZipVDir *
+vdir_child_by_index (GsfZipVDir *vdir, int target)
+{
+	return g_slist_nth_data (vdir->children, target);
+}
+
+static void
+vdir_insert (GsfZipVDir *vdir, char const * name, GsfZipDirent *dirent)
+{
+	char const *p;
+	char *dirname;
+	GsfZipVDir *child;
+	
+	p = strchr (name, ZIP_NAME_SEPARATOR);
+	if (p) {	/* A directory */
+		dirname = g_strndup (name, (gsize) (p - name));
+		child = vdir_child_by_name (vdir, dirname);
+		if (!child) {
+			child = gsf_vdir_new (dirname, TRUE, NULL);
+			gsf_vdir_add_child (vdir, child);
+		}
+		g_free (dirname);
+		if (*(p+1) != '\0') {
+			name = p+1;
+			vdir_insert (child, name, dirent);
+		}
+	} else { /* A simple file name */
+		child = gsf_vdir_new (name, FALSE, dirent);
+		gsf_vdir_add_child (vdir, child);
+	}
+}
+
+static gsf_off_t
+zip_find_trailer (GsfInfileZip *zip)
+{
+	static guint8 const trailer_signature[] =
+		{ 'P', 'K', 0x05, 0x06 };
+	gsf_off_t offset, trailer_offset, filesize;
+	gsf_off_t maplen;
+	guint8 const *data;
+
+	filesize = gsf_input_size (zip->source);
+	if (filesize < ZIP_TRAILER_SIZE)
+		return -1;
+
+	trailer_offset = filesize;
+	maplen = filesize & (ZIP_BUF_SIZE - 1);
+	if (maplen == 0)
+		maplen = ZIP_BUF_SIZE;
+	offset = filesize - maplen; /* offset is now BUFSIZ aligned */
+
+	while (TRUE) {
+		guchar *p, *s;
+
+		if (gsf_input_seek (zip->source, offset, G_SEEK_SET))
+			return -1;
+
+		if ((data = gsf_input_read (zip->source, maplen, NULL)) == NULL)
+			return -1;
+
+		p = (guchar *) data;
+        
+		for (s = p + maplen - 1; (s >= p); s--, trailer_offset--) {
+			if ((*s == 'P') &&
+			    (p + maplen - 1 - s > ZIP_TRAILER_SIZE - 2) &&
+			    !memcmp (s, trailer_signature, sizeof (trailer_signature))) {
+				return --trailer_offset;
+			}
+		}
+        
+		/* not found in currently mapped block, so update it if
+		 * there is some room in before. The requirements are..
+		 * (a) mappings should overlap so that trailer can cross BUFSIZ-boundary
+		 * (b) trailer cannot be farther away than 64K from fileend
+		 */
+
+		/* outer loop cond */
+		if (offset <= 0)
+			return -1;
+
+		/* outer loop step */
+		offset -= ZIP_BUF_SIZE / 2;
+		maplen = MIN (filesize - offset, ZIP_BUF_SIZE);
+		trailer_offset = offset + maplen;
+
+		if (filesize - offset > 64 * 1024)
+			return -1;
+	} /*outer loop*/
+
+	return -1;
+}
+
+static GsfZipDirent *
+zip_dirent_new_in (GsfInfileZip *zip, gsf_off_t *offset)
+{
+	static guint8 const dirent_signature[] =
+		{ 'P', 'K', 0x01, 0x02 };
+	GsfZipDirent *dirent;
+	guint8 const *data;
+	guint16 name_len, extras_len, comment_len, compr_method;
+	guint32 crc32, csize, usize, off;
+	gchar *name;
+
+	/* Read data and check the header */
+	if (gsf_input_seek (zip->source, *offset, G_SEEK_SET) ||
+	    NULL == (data = gsf_input_read (zip->source, ZIP_DIRENT_SIZE, NULL)) ||
+	    0 != memcmp (data, dirent_signature, sizeof (dirent_signature))) {
+		return NULL;
+	}
+
+	name_len =      GSF_LE_GET_GUINT16 (data + ZIP_DIRENT_NAME_SIZE);
+	extras_len =    GSF_LE_GET_GUINT16 (data + ZIP_DIRENT_EXTRAS_SIZE);
+	comment_len =   GSF_LE_GET_GUINT16 (data + ZIP_DIRENT_COMMENT_SIZE);
+
+	compr_method =  GSF_LE_GET_GUINT16 (data + ZIP_DIRENT_COMPR_METHOD);
+	crc32 =         GSF_LE_GET_GUINT32 (data + ZIP_DIRENT_CRC32);
+	csize =         GSF_LE_GET_GUINT32 (data + ZIP_DIRENT_CSIZE);
+	usize =         GSF_LE_GET_GUINT32 (data + ZIP_DIRENT_USIZE);
+	off =           GSF_LE_GET_GUINT32 (data + ZIP_DIRENT_OFFSET);
+
+	if ((data = gsf_input_read (zip->source, name_len, NULL)) == NULL)
+		return NULL;
+
+	name = g_new (gchar, (gulong) (name_len + 1));
+	memcpy (name, data, name_len);
+	name[name_len] = '\0';
+
+	dirent = gsf_zip_dirent_new ();
+	dirent->name = name;
+
+	dirent->compr_method =  compr_method;
+	dirent->crc32 =         crc32;
+	dirent->csize =         csize;
+	dirent->usize =         usize;
+	dirent->offset =        off;
+
+	*offset += ZIP_DIRENT_SIZE + name_len + extras_len + comment_len;
+
+	return dirent;
+}
+
+/*****************************************************************************/
+static ZipInfo *
+zip_info_ref (ZipInfo *info)
+{
+	info->ref_count++;
+	return info;
+}
+
+static void
+zip_info_unref (ZipInfo *info)
+{
+	GList *p;
+
+	if (info->ref_count-- != 1)
+		return;
+
+	gsf_vdir_free (info->vdir, FALSE);
+	for (p = info->dirent_list; p != NULL; p = p->next)
+		gsf_zip_dirent_free ((GsfZipDirent *) p->data);
+
+	g_list_free (info->dirent_list);
+
+	g_free (info);
+}
+
+/**
+ * zip_dup :
+ * @src :
+ *
+ * Return value: the partial duplicate.
+ **/
+static GsfInfileZip *
+zip_dup (GsfInfileZip const *src, GError **err)
+{
+	GsfInfileZip *dst;
+
+	g_return_val_if_fail (src != NULL, NULL);
+
+	dst = g_object_new (GSF_INFILE_ZIP_TYPE,
+			    "internal-parent", src,
+			    NULL);
+
+	if (dst->err) {
+		if (err)
+			*err = g_error_copy (dst->err);
+		g_object_unref (dst);
+		return NULL;
+	}
+
+	return dst;
+}
+
+/**
+ * zip_read_dirents:
+ * @zip :
+ *
+ * Read zip headers and do some sanity checking
+ * along the way.
+ *
+ * Return value: TRUE on error setting zip->err.
+ **/
+static gboolean
+zip_read_dirents (GsfInfileZip *zip)
+{
+	guint8 const *trailer;
+	guint16 entries, i;
+	guint32 dir_pos;
+	ZipInfo *info;
+	gsf_off_t offset;
+
+	/* Find and check the trailing header */
+	offset = zip_find_trailer (zip);
+	if (offset < 0) {
+		zip->err = g_error_new (gsf_input_error_id (), 0,
+					"No Zip trailer");
+		return TRUE;
+	}
+
+	if (gsf_input_seek (zip->source, offset, G_SEEK_SET) ||
+	    NULL == (trailer = gsf_input_read (zip->source, ZIP_TRAILER_SIZE, NULL))) {
+		zip->err = g_error_new (gsf_input_error_id (), 0,
+					"Error reading Zip signature");
+		return TRUE;
+	}
+
+	entries      = GSF_LE_GET_GUINT32 (trailer + ZIP_TRAILER_ENTRIES);
+	dir_pos      = GSF_LE_GET_GUINT32 (trailer + ZIP_TRAILER_DIR_POS);
+
+	info = g_new0 (ZipInfo, 1);
+	zip->info = info;
+
+	info->ref_count    = 1;
+	info->entries      = entries;
+	info->dir_pos      = dir_pos;
+
+	/* Read the directory */
+	for (i = 0, offset = dir_pos; i < entries; i++) {
+		GsfZipDirent *d;
+
+		d = zip_dirent_new_in (zip, &offset);
+		if (d == NULL) {
+			zip->err = g_error_new (gsf_input_error_id (), 0,
+						"Error reading zip dirent");
+			return TRUE;
+		}
+
+		info->dirent_list = g_list_append (info->dirent_list, d);
+	}
+
+	return FALSE;
+}
+
+static void
+zip_build_vdirs (GsfInfileZip *zip)
+{
+	GList *l;
+	GsfZipDirent *dirent;
+	ZipInfo *info = zip->info;
+
+	info->vdir = gsf_vdir_new ("", TRUE, NULL);
+	for (l = info->dirent_list; l; l = l->next) {
+		dirent = (GsfZipDirent *) l->data;
+		vdir_insert (info->vdir, dirent->name, dirent);
+	}
+}
+
+/**
+ * zip_init_info :
+ * @zip :
+ *
+ * Read zip headers and do some sanity checking
+ * along the way.
+ *
+ * Return value: TRUE on error setting zip->err.
+ **/
+static gboolean
+zip_init_info (GsfInfileZip *zip)
+{
+	gboolean ret;
+	
+	ret = zip_read_dirents (zip);
+	if (ret != FALSE)
+		return ret;
+	zip_build_vdirs (zip);
+
+	return FALSE;
+}
+
+/* returns TRUE on error */
+static gboolean
+zip_child_init (GsfInfileZip *child, GError **errmsg)
+{
+	static guint8 const header_signature[] =
+		{ 'P', 'K', 0x03, 0x04 };
+	guint8 const *data;
+	guint16 name_len, extras_len;
+	GsfZipDirent *dirent = child->vdir->dirent;
+
+	/* skip local header
+	 * should test tons of other info, but trust that those are correct
+	 **/
+
+	if (gsf_input_seek (child->source, (gsf_off_t) dirent->offset, G_SEEK_SET) ||
+	    NULL == (data = gsf_input_read (child->source, ZIP_FILE_HEADER_SIZE, NULL)) ||
+	    0 != memcmp (data, header_signature, sizeof (header_signature))) {
+		if (errmsg != NULL)
+			*errmsg = g_error_new (gsf_input_error_id (), 0,
+					       "Unable to read zip header.");
+		return TRUE;
+	}
+
+	name_len =   GSF_LE_GET_GUINT16 (data + ZIP_FILE_HEADER_NAME_SIZE);
+	extras_len = GSF_LE_GET_GUINT16 (data + ZIP_FILE_HEADER_EXTRAS_SIZE);
+
+	dirent->data_offset = dirent->offset + ZIP_FILE_HEADER_SIZE + name_len + extras_len;
+	child->restlen  = dirent->usize;
+	child->crestlen = dirent->csize;
+
+	if (dirent->compr_method != GSF_ZIP_STORED) {
+		int err;
+
+		if (!child->stream)
+			child->stream = g_new0 (z_stream, 1);
+
+		err = inflateInit2 (child->stream, -MAX_WBITS);
+		if (err != Z_OK) {
+			if (errmsg != NULL)
+				*errmsg = g_error_new (gsf_input_error_id (), 0,
+						       "problem uncompressing stream");
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
+/* GsfInput class functions */
+
+static GsfInput *
+gsf_infile_zip_dup (GsfInput *src_input, GError **err)
+{
+	GsfInfileZip const *src = GSF_INFILE_ZIP (src_input);
+	GsfInfileZip *dst = zip_dup (src, err);
+
+	if (dst == NULL)
+		return NULL;
+
+	dst->vdir = src->vdir;
+
+	if (dst->vdir->dirent && zip_child_init (dst, err)) {
+		g_object_unref (dst);
+		return NULL;
+	}
+
+	return GSF_INPUT (dst);
+}
+
+static gboolean
+zip_update_stream_in (GsfInfileZip *zip)
+{
+	guint32 read_now;
+	guint8 const *data;
+	gsf_off_t pos;
+	
+	if (zip->crestlen == 0)
+		return FALSE;
+
+	read_now = MIN (zip->crestlen, ZIP_BLOCK_SIZE);
+
+	pos = zip->vdir->dirent->data_offset + zip->stream->total_in;
+	if (gsf_input_seek (zip->source, pos, G_SEEK_SET))
+		return FALSE;
+	if ((data = gsf_input_read (zip->source, read_now, NULL)) == NULL)
+		return FALSE;
+
+	zip->crestlen -= read_now;
+	zip->stream->next_in  = (unsigned char *) data;      /* next input byte */
+	zip->stream->avail_in = read_now;  /* number of bytes available at next_in */
+
+	return TRUE;
+}
+
+static guint8 const *
+gsf_infile_zip_read (GsfInput *input, size_t num_bytes, guint8 *buffer)
+{
+	GsfInfileZip *zip = GSF_INFILE_ZIP (input);
+	GsfZipVDir      *vdir = zip->vdir;
+	gsf_off_t pos;
+
+	if (zip->restlen < num_bytes)
+		return NULL;
+
+	switch (vdir->dirent->compr_method) {
+	case GSF_ZIP_STORED:
+		zip->restlen -= num_bytes;
+		pos = zip->vdir->dirent->data_offset + input->cur_offset;
+		if (gsf_input_seek (zip->source, pos, G_SEEK_SET))
+			return NULL;
+		return gsf_input_read (zip->source, num_bytes, buffer);
+
+	case GSF_ZIP_DEFLATED:
+		if (buffer == NULL) {
+			if (zip->buf_size < num_bytes) {
+				zip->buf_size = MAX (num_bytes, 256);
+				g_free (zip->buf);
+				zip->buf = g_new (guint8, zip->buf_size);
+			}
+			buffer = zip->buf;
+		}
+
+		zip->stream->avail_out = num_bytes;
+		zip->stream->next_out = (unsigned char *)buffer;
+
+		do {
+			int err;
+			int startlen;
+
+			if (zip->crestlen > 0 && zip->stream->avail_in == 0)
+				if (!zip_update_stream_in (zip))
+					break;
+
+			startlen = zip->stream->total_out;
+			err = inflate(zip->stream, Z_NO_FLUSH);
+
+			if (err == Z_STREAM_END) 
+				zip->restlen = 0;
+			else if (err == Z_OK)
+				zip->restlen -= (zip->stream->total_out - startlen);
+			else
+				break;
+
+		} while (zip->restlen && zip->stream->avail_out);
+
+		return buffer;
+
+	default:
+		break;
+	}
+
+	return NULL;
+}
+
+static gboolean
+gsf_infile_zip_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInfileZip *zip = GSF_INFILE_ZIP (input);
+	/* Global flag -- we don't want one per stream.  */
+	static gboolean warned = FALSE;
+	gsf_off_t pos = offset;
+
+	/* Note, that pos has already been sanity checked.  */
+	switch (whence) {
+	case G_SEEK_SET : break;
+	case G_SEEK_CUR : pos += input->cur_offset;	break;
+	case G_SEEK_END : pos += input->size;		break;
+	default : return TRUE;
+	}
+
+	if (zip->stream) {
+		zip->stream->next_in  = NULL;
+		zip->stream->avail_in = 0;
+		zip->stream->total_in = 0;
+	}
+
+	if (zip_child_init (zip, NULL)) {
+		g_warning ("failure initializing zip child");
+		return TRUE;
+	}
+
+	input->cur_offset = 0;
+	if (gsf_input_seek_emulate (input, pos))
+		return TRUE;
+
+	zip->seek_skipped += pos;
+	if (!warned &&
+	    zip->seek_skipped != pos && /* Don't warn for single seek.  */
+	    zip->seek_skipped >= 1000000) {
+		warned = TRUE;
+		g_warning ("Seeking in zip child streams is awfully slow.");
+	}
+
+	return FALSE;
+}
+
+/* GsfInfile class functions */
+
+/*****************************************************************************/
+
+
+static GsfInput *
+gsf_infile_zip_new_child (GsfInfileZip *parent, GsfZipVDir *vdir, GError **err)
+{
+	GsfInfileZip *child;
+	GsfZipDirent *dirent = vdir->dirent;
+	child = zip_dup (parent, err);
+
+	if (child == NULL)
+		return NULL;
+
+	gsf_input_set_name (GSF_INPUT (child), vdir->name);
+	gsf_input_set_container (GSF_INPUT (child), GSF_INFILE (parent));
+
+	child->vdir = vdir;
+
+	if (dirent) {
+		gsf_input_set_size (GSF_INPUT (child),
+				    (gsf_off_t) dirent->usize);
+		if (zip_child_init (child, err) != FALSE) {
+			g_object_unref (child);
+			return NULL;
+		}
+	} else
+		gsf_input_set_size (GSF_INPUT (child), 0);
+
+	return GSF_INPUT (child);
+}
+
+static GsfInput *
+gsf_infile_zip_child_by_index (GsfInfile *infile, int target, GError **err)
+{
+	GsfInfileZip *zip = GSF_INFILE_ZIP (infile);
+	GsfZipVDir *child_vdir = vdir_child_by_index (zip->vdir, target);
+
+	if (child_vdir)
+		return gsf_infile_zip_new_child (zip, child_vdir, err);
+
+	return NULL;
+}
+
+static char const *
+gsf_infile_zip_name_by_index (GsfInfile *infile, int target)
+{
+	GsfInfileZip *zip = GSF_INFILE_ZIP (infile);
+	GsfZipVDir *child_vdir = vdir_child_by_index (zip->vdir, target);
+
+	if (child_vdir)
+		return child_vdir->name;
+
+	return NULL;
+}
+
+static GsfInput *
+gsf_infile_zip_child_by_name (GsfInfile *infile, char const *name, GError **err)
+{
+	GsfInfileZip *zip = GSF_INFILE_ZIP (infile);
+	GsfZipVDir *child_vdir = vdir_child_by_name (zip->vdir, name);
+
+	if (child_vdir)
+		return gsf_infile_zip_new_child (zip, child_vdir, err);
+
+	return NULL;
+}
+
+static int
+gsf_infile_zip_num_children (GsfInfile *infile)
+{
+	GsfInfileZip *zip = GSF_INFILE_ZIP (infile);
+
+	g_return_val_if_fail (zip->vdir != NULL, -1);
+
+	if (!zip->vdir->is_directory)
+		return -1;
+	return g_slist_length (zip->vdir->children);
+}
+
+static void
+gsf_infile_zip_finalize (GObject *obj)
+{
+	GsfInfileZip *zip = GSF_INFILE_ZIP (obj);
+
+	if (zip->source != NULL) {
+		g_object_unref (G_OBJECT (zip->source));
+		zip->source = NULL;
+	}
+	if (zip->info != NULL) {
+		zip_info_unref (zip->info);
+		zip->info = NULL;
+	}
+
+	if (zip->stream)
+		(void) inflateEnd (zip->stream);
+	g_free (zip->stream);
+	g_free (zip->buf);
+
+	g_clear_error (&zip->err);
+
+	parent_class->finalize (obj);
+}
+
+static GObject*
+gsf_infile_zip_constructor (GType                  type,
+			    guint                  n_construct_properties,
+			    GObjectConstructParam *construct_params)
+{
+	GsfInfileZip *zip;
+
+	zip = (GsfInfileZip *)(parent_class->constructor (type,
+							  n_construct_properties,
+							  construct_params));
+	if (zip->dup_parent) {
+		/* Special call from zip_dup.  */
+		zip->source = gsf_input_dup (zip->dup_parent->source, &zip->err);
+		zip->info = zip_info_ref (zip->dup_parent->info);
+		zip->dup_parent = NULL;
+	} else {
+		if (!zip_init_info (zip))
+			zip->vdir = zip->info->vdir;
+	}
+
+	return (GObject *)zip;
+}
+
+
+static void
+gsf_infile_zip_init (GObject *obj)
+{
+	GsfInfileZip *zip = (GsfInfileZip *)obj;
+	zip->source = NULL;
+	zip->info = NULL;
+	zip->vdir = NULL;
+	zip->stream = NULL;
+	zip->restlen = 0;
+	zip->crestlen = 0;
+	zip->buf = NULL;
+	zip->buf_size = 0;
+	zip->seek_skipped = 0;
+	zip->err = NULL;
+}
+
+static void
+gsf_infile_zip_get_property (GObject     *object,
+			     guint        property_id,
+			     GValue      *value,
+			     GParamSpec  *pspec)
+{
+	GsfInfileZip *zip = (GsfInfileZip *)object;
+
+	switch (property_id) {
+	case PROP_SOURCE:
+		g_value_set_object (value, zip->source);
+		break;
+	case PROP_COMPRESSION_LEVEL:
+		g_value_set_int (value,
+				 zip->vdir->dirent
+				 ? zip->vdir->dirent->compr_method
+				 : 0);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_infile_zip_set_source (GsfInfileZip *zip, GsfInput *src)
+{
+	if (src)
+		src = gsf_input_proxy_new (src);
+	if (zip->source)
+		g_object_unref (zip->source);
+	zip->source = src;
+}
+
+static void
+gsf_infile_zip_set_property (GObject      *object,
+			     guint         property_id,
+			     GValue const *value,
+			     GParamSpec   *pspec)
+{
+	GsfInfileZip *zip = (GsfInfileZip *)object;
+
+	switch (property_id) {
+	case PROP_SOURCE:
+		gsf_infile_zip_set_source (zip, g_value_get_object (value));
+		break;
+	case PROP_INTERNAL_PARENT:
+		zip->dup_parent = g_value_get_object (value);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+
+static void
+gsf_infile_zip_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass  *input_class  = GSF_INPUT_CLASS (gobject_class);
+	GsfInfileClass *infile_class = GSF_INFILE_CLASS (gobject_class);
+
+	gobject_class->constructor      = gsf_infile_zip_constructor;
+	gobject_class->finalize		= gsf_infile_zip_finalize;
+	gobject_class->get_property     = gsf_infile_zip_get_property;
+	gobject_class->set_property     = gsf_infile_zip_set_property;
+
+	input_class->Dup		= gsf_infile_zip_dup;
+	input_class->Read		= gsf_infile_zip_read;
+	input_class->Seek		= gsf_infile_zip_seek;
+	infile_class->num_children	= gsf_infile_zip_num_children;
+	infile_class->name_by_index	= gsf_infile_zip_name_by_index;
+	infile_class->child_by_index	= gsf_infile_zip_child_by_index;
+	infile_class->child_by_name	= gsf_infile_zip_child_by_name;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SOURCE,
+		 g_param_spec_object ("source",
+				      "Source",
+				      "The archive being interpreted.",
+				      GSF_INPUT_TYPE,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_COMPRESSION_LEVEL,
+		 g_param_spec_int ("compression-level",
+				   "Compression Level",
+				   "The level of compression used, zero meaning none.",
+				   0, 10,
+				   0,
+				   GSF_PARAM_STATIC |
+				   G_PARAM_READABLE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_INTERNAL_PARENT,
+		 g_param_spec_object ("internal-parent",
+				      "",
+				      "Internal use only",
+				      GSF_INFILE_ZIP_TYPE,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_WRITABLE |
+				      G_PARAM_CONSTRUCT_ONLY));
+}
+
+GSF_CLASS (GsfInfileZip, gsf_infile_zip,
+	   gsf_infile_zip_class_init, gsf_infile_zip_init,
+	   GSF_INFILE_TYPE)
+
+/**
+ * gsf_infile_zip_new :
+ * @source : A base #GsfInput
+ * @err   : A #GError, optionally %null
+ *
+ * Opens the root directory of a Zip file.
+ * NOTE : adds a reference to @source
+ *
+ * Returns : the new zip file handler
+ **/
+GsfInfile *
+gsf_infile_zip_new (GsfInput *source, GError **err)
+{
+	GsfInfileZip *zip;
+
+	g_return_val_if_fail (GSF_IS_INPUT (source), NULL);
+
+	zip = g_object_new (GSF_INFILE_ZIP_TYPE,
+			    "source", source,
+			    NULL);
+	if (zip->err) {
+		if (err)
+			*err = g_error_copy (zip->err);
+		g_object_unref (zip);
+		return NULL;
+	}
+
+	return GSF_INFILE (zip);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile-zip.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile-zip.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INFILE_ZIP_H
+#define GSF_INFILE_ZIP_H
+
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GsfInfileZip GsfInfileZip;
+
+#define GSF_INFILE_ZIP_TYPE        (gsf_infile_zip_get_type ())
+#define GSF_INFILE_ZIP(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_ZIP_TYPE, GsfInfileZip))
+#define GSF_IS_INFILE_ZIP(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_ZIP_TYPE))
+
+GType	   gsf_infile_zip_get_type (void);
+GsfInfile *gsf_infile_zip_new      (GsfInput *source, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INFILE_ZIP_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,159 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile.c :
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-infile-impl.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <stdarg.h>
+
+#define GET_CLASS(instance) G_TYPE_INSTANCE_GET_CLASS (instance, GSF_INFILE_TYPE, GsfInfileClass)
+
+/**
+ * gsf_infile_num_children :
+ * @infile : the structured storage
+ *
+ * Returns the number of children the storage has, or -1 if the storage can not
+ * 	have children.
+ **/
+int
+gsf_infile_num_children (GsfInfile *infile)
+{
+	g_return_val_if_fail (infile != NULL, -1);
+
+	return GET_CLASS (infile)->num_children (infile);
+}
+
+/**
+ * gsf_infile_name_by_index :
+ * @infile :
+ * @i      :
+ *
+ * Returns the utf8 encoded name of the @i-th child
+ * NOTE : DO NOT FREE THE STRING
+ **/
+char const *
+gsf_infile_name_by_index (GsfInfile *infile, int i)
+{
+	g_return_val_if_fail (infile != NULL, NULL);
+
+	return GET_CLASS (infile)->name_by_index (infile, i);
+}
+
+/**
+ * gsf_infile_child_by_index :
+ * @infile :
+ * @i :
+ *
+ * TODO : For 2.0 api will change to include a GError.
+ * Returns a newly created child which must be unrefed.
+ **/
+GsfInput *
+gsf_infile_child_by_index (GsfInfile *infile, int i)
+{
+	GError *err = NULL;
+	GsfInput *res;
+
+	g_return_val_if_fail (GSF_INFILE (infile) != NULL, NULL);
+
+	res = GET_CLASS (infile)->child_by_index (infile, i, &err);
+
+	if (err != NULL) {
+		char const *iname = gsf_input_name (GSF_INPUT (infile));
+		g_warning ("Unable to get child[%d] for infile '%s' because : %s",
+			   i, iname ? iname : "?", err->message);
+		g_error_free (err);
+		g_return_val_if_fail (res == NULL, NULL); /* be anal */
+	}
+
+	return res;
+}
+
+/**
+ * gsf_infile_child_by_name :
+ * @infile :
+ * @name :
+ *
+ * TODO : For 2.0 api will change to include a GError.
+ * Returns a newly created child which must be unrefed.
+ **/
+GsfInput *
+gsf_infile_child_by_name (GsfInfile *infile, char const *name)
+{
+	GError *err = NULL;
+	GsfInput *res;
+
+	g_return_val_if_fail (GSF_INFILE (infile) != NULL, NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+
+	res = GET_CLASS (infile)->child_by_name (infile, name, &err);
+
+	if (err != NULL) {
+		char const *iname = gsf_input_name (GSF_INPUT (infile));
+		g_warning ("Unable to get child['%s'] for infile '%s' because : %s",
+			   name, iname ? iname : "?", err->message);
+		g_error_free (err);
+		g_return_val_if_fail (res == NULL, NULL); /* be anal */
+	}
+
+	return res;
+}
+
+/**
+ * gsf_infile_child_by_vname :
+ * @infile :
+ * @name : A %null terminated list of names
+ * @Varargs : the rest of the names
+ *
+ * Returns a newly created child which must be unrefed.
+ **/
+GsfInput *
+gsf_infile_child_by_vname (GsfInfile *infile, char const *name, ...)
+{
+	va_list   ap;
+	GsfInput  *child = GSF_INPUT (infile);
+	GsfInfile *tmp = NULL;
+
+	g_return_val_if_fail (GSF_IS_INFILE (infile), NULL);
+	g_return_val_if_fail (name != NULL, NULL);
+
+	va_start (ap, name);
+	while (1) {
+		child = gsf_infile_child_by_name (infile, name);
+
+		name = va_arg (ap, char *);
+		if (tmp != NULL)
+			g_object_unref (G_OBJECT (tmp));
+		if (name == NULL)
+			break;
+		if (child == NULL)
+			break;
+
+		g_return_val_if_fail (GSF_IS_INFILE (child), NULL);
+
+		infile = tmp = GSF_INFILE (child);
+	}
+	va_end (ap);
+
+	return child;
+}
+
+GSF_CLASS_ABSTRACT (GsfInfile, gsf_infile, NULL, NULL, GSF_INPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-infile.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-infile.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INFILE_H
+#define GSF_INFILE_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GSF_INFILE_TYPE        (gsf_infile_get_type ())
+#define GSF_INFILE(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INFILE_TYPE, GsfInfile))
+#define GSF_IS_INFILE(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INFILE_TYPE))
+
+GType gsf_infile_get_type (void);
+
+int	    gsf_infile_num_children   (GsfInfile *infile);
+char const *gsf_infile_name_by_index  (GsfInfile *infile, int i);
+GsfInput   *gsf_infile_child_by_index (GsfInfile *infile, int i);
+GsfInput   *gsf_infile_child_by_name  (GsfInfile *infile, char const *name);
+GsfInput   *gsf_infile_child_by_vname (GsfInfile *infile, char const *name, ...);
+
+G_END_DECLS
+
+#endif /* GSF_INFILE_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,109 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-iochannel.c: BZ2 based input
+ *
+ * Copyright (C) 2003-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-input-bzip.h>
+#include <gsf-output-memory.h>
+#include <string.h>
+
+#ifdef HAVE_BZ2
+/* For getting FILE.  Don't ask.  */
+#include <stdio.h>
+#include <bzlib.h>
+#define BZ_BUFSIZ 1024
+#endif
+
+/**
+ * gsf_input_memory_new_from_bzip :
+ * @source : a #GsfInput
+ * @err    : a #GError
+ *
+ * Returns a new #GsfInputMemory or NULL.
+ */
+GsfInput * 
+gsf_input_memory_new_from_bzip (GsfInput *source, GError **err)
+{
+#ifndef HAVE_BZ2
+	if (err)
+		*err = g_error_new (gsf_input_error_id (), 0,
+				    "BZ2 support not enabled");
+	return NULL;
+#else
+	bz_stream  bzstm;
+	GsfInput  *mem       = NULL;
+	GsfOutput *sink      = NULL;
+	guint8     out_buf [BZ_BUFSIZ];
+	int        bzerr     = BZ_OK;
+
+	g_return_val_if_fail (source != NULL, NULL);
+
+	memset (&bzstm, 0, sizeof (bzstm));
+	if (BZ_OK != BZ2_bzDecompressInit (&bzstm, 0, 0)) {
+		if (err)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "BZ2 decompress init failed");
+		return NULL;
+	}
+
+	sink = gsf_output_memory_new ();
+
+	for (;;) {
+		bzstm.next_out  = (char *)out_buf;
+		bzstm.avail_out = (unsigned int)sizeof (out_buf);
+
+		if (bzstm.avail_in == 0) {
+			bzstm.avail_in = (unsigned int)MIN (gsf_input_remaining (source), BZ_BUFSIZ);
+			bzstm.next_in  = (char *)gsf_input_read (source, bzstm.avail_in, NULL);
+		}
+		
+		bzerr = BZ2_bzDecompress (&bzstm);
+		if (bzerr != BZ_OK && bzerr != BZ_STREAM_END) {
+			if (err)
+				*err = g_error_new (gsf_input_error_id (), 0,
+						    "BZ2 decompress failed");
+			BZ2_bzDecompressEnd (&bzstm);
+			gsf_output_close (sink);
+			g_object_unref (G_OBJECT (sink));
+			return NULL;
+		}
+		
+		gsf_output_write (sink, BZ_BUFSIZ - bzstm.avail_out, out_buf);
+		if (bzerr == BZ_STREAM_END)
+			break;
+	}
+
+	gsf_output_close (sink);
+	
+	if (BZ_OK != BZ2_bzDecompressEnd (&bzstm)) {
+		if (err)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "BZ2 decompress end failed");
+		g_object_unref (G_OBJECT (sink));
+		return NULL;
+	}
+
+	mem = gsf_input_memory_new_clone (
+		gsf_output_memory_get_bytes (GSF_OUTPUT_MEMORY (sink)), 
+		gsf_output_size (sink));
+	g_object_unref (G_OBJECT (sink));
+	return mem;
+#endif
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-bzip.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,33 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-bzip.h: wrapper to compress to bzipped output
+ *
+ * Copyright (C) 2003-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_BZIP_H
+#define GSF_INPUT_BZIP_H
+
+#include <gsf/gsf-input-memory.h>
+
+G_BEGIN_DECLS
+
+GsfInput *gsf_input_memory_new_from_bzip (GsfInput *source, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_BZIP_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,533 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-gzip.c: wrapper to uncompress gzipped input
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ * Copyright (C) 2005 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-input-gzip.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+
+#include <zlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#define Z_BUFSIZE 0x100
+
+static GObjectClass *parent_class;
+
+struct _GsfInputGZip {
+	GsfInput input;
+
+	GsfInput *source; /* compressed data */
+	gboolean raw; /* No header and no trailer.  */
+	GError *err;
+	gsf_off_t uncompressed_size;
+	gboolean stop_byte_added;
+
+	z_stream  stream;
+	guint8 const *gzipped_data;
+	uLong     crc;     /* crc32 of uncompressed data */
+
+	guint8   *buf;
+	size_t    buf_size;
+
+	size_t    header_size, trailer_size;
+	gsf_off_t seek_skipped;
+};
+
+typedef struct {
+	GsfInputClass input_class;
+} GsfInputGZipClass;
+
+enum {
+	PROP_0,
+	PROP_RAW,
+	PROP_SOURCE,
+	PROP_UNCOMPRESSED_SIZE
+};
+
+/* gzip flag byte */
+#define GZIP_IS_ASCII		0x01 /* file contains text ? */
+#define GZIP_HEADER_CRC		0x02 /* there is a CRC in the header */
+#define GZIP_EXTRA_FIELD	0x04 /* there is an 'extra' field */
+#define GZIP_ORIGINAL_NAME	0x08 /* the original is stored */
+#define GZIP_HAS_COMMENT	0x10 /* There is a comment in the header */
+#define GZIP_HEADER_FLAGS (unsigned)(GZIP_IS_ASCII |GZIP_HEADER_CRC |GZIP_EXTRA_FIELD |GZIP_ORIGINAL_NAME |GZIP_HAS_COMMENT)
+
+static gboolean
+check_header (GsfInputGZip *input)
+{
+	if (input->raw) {
+		input->header_size = 0;
+		input->trailer_size = 0;
+	} else {
+		static guint8 const signature[2] = {0x1f, 0x8b};
+		guint8 const *data;
+		unsigned flags, len;
+
+		/* Check signature */
+		if (NULL == (data = gsf_input_read (input->source, 2 + 1 + 1 + 6, NULL)) ||
+		    0 != memcmp (data, signature, sizeof (signature)))
+			return TRUE;
+
+		/* verify flags and compression type */
+		flags  = data[3];
+		if (data[2] != Z_DEFLATED || (flags & ~GZIP_HEADER_FLAGS) != 0)
+			return TRUE;
+
+		/* If we have the size, don't bother seeking to the end.  */
+		if (input->uncompressed_size < 0) {
+			/* Get the uncompressed size */
+			if (gsf_input_seek (input->source, (gsf_off_t) -4, G_SEEK_END) ||
+			    NULL == (data = gsf_input_read (input->source, 4, NULL)))
+				return TRUE;
+			/* FIXME, but how?  The size read here is modulo 2^32.  */
+			input->uncompressed_size = GSF_LE_GET_GUINT32 (data);
+
+			if (input->uncompressed_size / 1000 > gsf_input_size (input->source)) {
+				g_warning ("Suspiciously well compressed file with better than 1000:1 ratio.\n"
+					   "It is probably truncated or corrupt");
+			}
+		}
+
+		if (gsf_input_seek (input->source, 2 + 1 + 1 + 6, G_SEEK_SET))
+			return TRUE;
+
+		if (flags & GZIP_EXTRA_FIELD) {
+			if (NULL == (data = gsf_input_read (input->source, 2, NULL)))
+				return TRUE;
+			len = GSF_LE_GET_GUINT16 (data);
+			if (NULL == gsf_input_read (input->source, len, NULL))
+				return TRUE;
+		}
+		if (flags & GZIP_ORIGINAL_NAME) {
+			/* Skip over the filename (which is in ISO 8859-1 encoding).  */
+			do {
+				if (NULL == (data = gsf_input_read (input->source, 1, NULL)))
+					return TRUE;
+			} while (*data != 0);
+		}
+
+		if (flags & GZIP_HAS_COMMENT) {
+			/* Skip over the comment (which is in ISO 8859-1 encoding).  */
+			do {
+				if (NULL == (data = gsf_input_read (input->source, 1, NULL)))
+					return TRUE;
+			} while (*data != 0);
+		}
+
+		if (flags & GZIP_HEADER_CRC &&
+		    NULL == (data = gsf_input_read (input->source, 2, NULL)))
+			return TRUE;
+
+		input->header_size = input->source->cur_offset;
+		/* the last 8 bytes are the crc and size.  */
+		input->trailer_size = 8;
+	}
+
+	gsf_input_set_size (GSF_INPUT (input), input->uncompressed_size);
+
+	if (gsf_input_remaining (input->source) < input->trailer_size)
+		return TRUE;	/* No room for payload */
+
+	return FALSE;
+}
+
+static gboolean
+init_zip (GsfInputGZip *gzip, GError **err)
+{
+	gsf_off_t cur_pos;
+
+	if (Z_OK != inflateInit2 (&(gzip->stream), -MAX_WBITS)) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Unable to initialize zlib");
+		return TRUE;
+	}
+
+	cur_pos = gsf_input_tell (gzip->source);
+	if (gsf_input_seek (gzip->source, 0, G_SEEK_SET)) {
+		if (err)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "Failed to rewind source");
+		return TRUE;
+	}
+
+	if (check_header (gzip) != FALSE) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"Invalid gzip header");
+		if (gsf_input_seek (gzip->source, cur_pos, G_SEEK_SET)) {
+			g_warning ("attempt to restore position failed ??");
+		}
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+/**
+ * gsf_input_gzip_new :
+ * @source : The underlying data source.
+ * @err	   : optionally NULL.
+ *
+ * Adds a reference to @source.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfInput *
+gsf_input_gzip_new (GsfInput *source, GError **err)
+{
+	GsfInputGZip *gzip;
+
+	g_return_val_if_fail (GSF_IS_INPUT (source), NULL);
+
+	gzip = g_object_new (GSF_INPUT_GZIP_TYPE,
+			     "source", source,
+			     NULL);
+	if (gzip->err) {
+		if (err)
+			*err = g_error_copy (gzip->err);
+		g_object_unref (gzip);
+		return NULL;
+	}
+
+	return GSF_INPUT (gzip);
+}
+
+static void
+gsf_input_gzip_finalize (GObject *obj)
+{
+	GsfInputGZip *gzip = (GsfInputGZip *)obj;
+
+	if (gzip->source != NULL) {
+		g_object_unref (G_OBJECT (gzip->source));
+		gzip->source = NULL;
+	}
+
+	g_free (gzip->buf);
+
+	if (gzip->stream.state != NULL)
+		inflateEnd (&(gzip->stream));
+
+	g_clear_error (&gzip->err);
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_gzip_dup (GsfInput *src_input, GError **err)
+{
+	GsfInputGZip const *src = (GsfInputGZip *)src_input;
+	GsfInputGZip *dst;
+	GsfInput *src_source_copy;
+
+	if (src->source) {
+		src_source_copy = gsf_input_dup (src->source, err);
+		if (err)
+			return NULL;
+	} else
+		src_source_copy = NULL;
+
+	dst = g_object_new (GSF_INPUT_GZIP_TYPE,
+			    "source", src_source_copy,
+			    "raw", src->raw,
+			    NULL);
+	if (src_source_copy)
+		g_object_unref (src_source_copy);
+
+	if (src->err) {
+		g_clear_error (&dst->err);
+		dst->err = g_error_copy (src->err);
+	} else if (dst->err) {
+		if (err)
+			*err = g_error_copy (dst->err);
+		g_object_unref (dst);
+		return NULL;
+	}
+
+	return GSF_INPUT (dst);
+}
+
+static guint8 const *
+gsf_input_gzip_read (GsfInput *input, size_t num_bytes, guint8 *buffer)
+{
+	GsfInputGZip *gzip = GSF_INPUT_GZIP (input);
+
+	if (buffer == NULL) {
+		if (gzip->buf_size < num_bytes) {
+			gzip->buf_size = MAX (num_bytes, 256);
+			g_free (gzip->buf);
+			gzip->buf = g_new (guint8, gzip->buf_size);
+		}
+		buffer = gzip->buf;
+	}
+
+	gzip->stream.next_out = buffer;
+	gzip->stream.avail_out = num_bytes;
+	while (gzip->stream.avail_out != 0) {
+		int zerr;
+		if (gzip->stream.avail_in == 0) {
+			gsf_off_t remain = gsf_input_remaining (gzip->source);
+			if (remain <= gzip->trailer_size) {
+				if (remain < gzip->trailer_size || gzip->stop_byte_added) {
+					g_clear_error (&gzip->err);
+					gzip->err = g_error_new
+						(gsf_input_error_id (), 0,
+						 "truncated source");
+					return NULL;
+				}
+				/* zlib requires an extra byte.  */
+				gzip->stream.avail_in = 1;
+				gzip->gzipped_data = "";
+				gzip->stop_byte_added = TRUE;
+			} else {
+				size_t n = MIN (remain - gzip->trailer_size,
+						Z_BUFSIZE);
+
+				gzip->gzipped_data =
+					gsf_input_read (gzip->source, n, NULL);
+				if (!gzip->gzipped_data) {
+					g_clear_error (&gzip->err);
+					gzip->err = g_error_new
+						(gsf_input_error_id (), 0,
+						 "Failed to read from source");
+					return NULL;
+				}
+				gzip->stream.avail_in = n;
+			}
+			gzip->stream.next_in = (Byte *)gzip->gzipped_data;
+		}
+		zerr = inflate (&(gzip->stream), Z_NO_FLUSH);
+		if (zerr != Z_OK) {
+			if (zerr != Z_STREAM_END)
+				return NULL;
+			/* Premature end of stream.  */
+			if (gzip->stream.avail_out != 0)
+				return NULL;
+		}
+	}
+
+	gzip->crc = crc32 (gzip->crc, buffer, (uInt)(gzip->stream.next_out - buffer));
+	return buffer;
+}
+
+static gboolean
+gsf_input_gzip_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInputGZip *gzip = GSF_INPUT_GZIP (input);
+	/* Global flag -- we don't want one per stream.  */
+	static gboolean warned = FALSE;
+	gsf_off_t pos = offset;
+
+	/* Note, that pos has already been sanity checked.  */
+	switch (whence) {
+	case G_SEEK_SET : break;
+	case G_SEEK_CUR : pos += input->cur_offset;	break;
+	case G_SEEK_END : pos += input->size;		break;
+	default : return TRUE;
+	}
+
+	if (pos < input->cur_offset) {
+		if (gsf_input_seek (gzip->source,
+				    (gsf_off_t)gzip->header_size,
+				    G_SEEK_SET))
+			return TRUE;
+		gzip->crc = crc32 (0L, Z_NULL, 0);
+		gzip->stream.avail_in = 0;
+		if (inflateReset (&(gzip->stream)) != Z_OK)
+			return TRUE;
+		input->cur_offset = 0;
+	}
+
+	if (gsf_input_seek_emulate (input, pos))
+		return TRUE;
+
+	gzip->seek_skipped += pos;
+	if (!warned &&
+	    gzip->seek_skipped != pos && /* Don't warn for single seek.  */
+	    gzip->seek_skipped >= 1000000) {
+		warned = TRUE;
+		g_warning ("Seeking in gzipped streams is awfully slow.");
+	}
+
+	return FALSE;
+}
+
+static void
+gsf_input_gzip_init (GObject *obj)
+{
+	GsfInputGZip *gzip = GSF_INPUT_GZIP (obj);
+
+	gzip->source = NULL;
+	gzip->raw = FALSE;
+	gzip->uncompressed_size = -1;
+	gzip->err = NULL;
+	gzip->stream.zalloc	= (alloc_func)0;
+	gzip->stream.zfree	= (free_func)0;
+	gzip->stream.opaque	= (voidpf)0;
+	gzip->stream.next_in	= Z_NULL;
+	gzip->stream.next_out	= Z_NULL;
+	gzip->stream.avail_in	= gzip->stream.avail_out = 0;
+	gzip->crc		= crc32 (0L, Z_NULL, 0);
+	gzip->buf		= NULL;
+	gzip->buf_size		= 0;
+	gzip->seek_skipped = 0;
+}
+
+static void
+gsf_input_gzip_get_property (GObject     *object,
+			     guint        property_id,
+			     GValue      *value,
+			     GParamSpec  *pspec)
+{
+	GsfInputGZip *gzip = (GsfInputGZip *)object;
+
+	switch (property_id) {
+	case PROP_RAW:
+		g_value_set_boolean (value, gzip->raw);
+		break;
+	case PROP_SOURCE:
+		g_value_set_object (value, gzip->source);
+		break;
+	case PROP_UNCOMPRESSED_SIZE:
+		g_value_set_int64 (value, gzip->uncompressed_size);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_input_gzip_set_source (GsfInputGZip *gzip, GsfInput *source)
+{
+	if (source)
+		g_object_ref (GSF_INPUT (source));
+	if (gzip->source)
+		g_object_unref (gzip->source);
+	gzip->source = source;
+}
+
+static void
+gsf_input_gzip_set_property (GObject      *object,
+			     guint         property_id,
+			     GValue const *value,
+			     GParamSpec   *pspec)
+{
+	GsfInputGZip *gzip = (GsfInputGZip *)object;
+
+	switch (property_id) {
+	case PROP_RAW:
+		gzip->raw = g_value_get_boolean (value);
+		break;
+	case PROP_SOURCE:
+		gsf_input_gzip_set_source (gzip, g_value_get_object (value));
+		break;
+	case PROP_UNCOMPRESSED_SIZE:
+		gzip->uncompressed_size = g_value_get_int64 (value);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static GObject*
+gsf_input_gzip_constructor (GType                  type,
+			    guint                  n_construct_properties,
+			    GObjectConstructParam *construct_params)
+{
+  GsfInputGZip *gzip;
+
+  gzip = (GsfInputGZip *)(parent_class->constructor (type,
+						     n_construct_properties,
+						     construct_params));
+
+  if (!gzip->source) {
+	  g_clear_error (&gzip->err);
+	  gzip->err = g_error_new (gsf_input_error_id (), 0,
+				   "NULL source");
+  } else if (gzip->raw && gzip->uncompressed_size < 0) {
+	  g_clear_error (&gzip->err);
+	  gzip->err = g_error_new (gsf_input_error_id (), 0,
+				   "Uncompressed size not set");
+  } else if (init_zip (gzip, &gzip->err) != FALSE) {
+	  /* Nothing more.  */
+  }
+
+  return (GObject *)gzip;
+}
+
+static void
+gsf_input_gzip_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->constructor  = gsf_input_gzip_constructor;
+	gobject_class->finalize     = gsf_input_gzip_finalize;
+	gobject_class->set_property = gsf_input_gzip_set_property;
+	gobject_class->get_property = gsf_input_gzip_get_property;
+	input_class->Dup	    = gsf_input_gzip_dup;
+	input_class->Read	    = gsf_input_gzip_read;
+	input_class->Seek	    = gsf_input_gzip_seek;
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_RAW,
+		 g_param_spec_boolean ("raw", "Raw",
+				       "Whether to read compressed data with no header and no trailer.",
+				       FALSE,
+				       GSF_PARAM_STATIC |
+				       G_PARAM_READWRITE |
+				       G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SOURCE,
+		 g_param_spec_object ("source", "Source",
+				      "Where the compressed data comes from.",
+				      GSF_INPUT_TYPE,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+	/**
+	 * GsfInputGzip:uncompressed_size:
+	 *
+	 * The size that the data will have after uncompression.
+	 * The is mandatory for raw streams and if the uncompressed size is
+	 * larger than 4GB.
+	 */  
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_UNCOMPRESSED_SIZE,
+		 g_param_spec_int64 ("uncompressed-size", "Size after decompression",
+				     "The source's uncompressed size",
+				     -1, G_MAXINT64, -1,
+				     GSF_PARAM_STATIC |
+				     G_PARAM_READWRITE |
+				     G_PARAM_CONSTRUCT_ONLY));
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfInputGZip, gsf_input_gzip,
+	   gsf_input_gzip_class_init, gsf_input_gzip_init, GSF_INPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-gzip.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-gzip.h: wrapper to uncompress gzipped input
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_GZIP_H
+#define GSF_INPUT_GZIP_H
+
+#include "gsf-input.h"
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_GZIP_TYPE        (gsf_input_gzip_get_type ())
+#define GSF_INPUT_GZIP(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_GZIP_TYPE, GsfInputGZip))
+#define GSF_IS_INPUT_GZIP(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_GZIP_TYPE))
+
+typedef struct _GsfInputGZip GsfInputGZip;
+
+GType	  gsf_input_gzip_get_type (void);
+GsfInput *gsf_input_gzip_new	  (GsfInput *source, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_GZIP_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,69 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input.h-impl.h: interface for used by the ole layer to read raw data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_IMPL_H
+#define GSF_INPUT_IMPL_H
+
+#include <gsf/gsf.h>
+#include <gsf/gsf-input.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+struct _GsfInput {
+	GObject   g_object;
+
+	gsf_off_t    size, cur_offset;
+	char      *name;
+	GsfInfile *container;
+};
+
+typedef struct {
+	GObjectClass g_object_class;
+
+	GsfInput     *(*Dup)  (GsfInput *input, GError **err);
+	const guint8 *(*Read) (GsfInput *input, size_t num_bytes,
+			       guint8 *optional_buffer);
+	gboolean      (*Seek) (GsfInput *input, gsf_off_t offset,
+			       GSeekType whence);
+	GsfInput     *(*OpenSibling)  (GsfInput const *input,
+				       char const *path, GError **err);
+
+	/* Padding for future expansion */
+	void (*_gsf_reserved0) (void);
+	void (*_gsf_reserved1) (void);
+	void (*_gsf_reserved2) (void);
+	void (*_gsf_reserved3) (void);
+} GsfInputClass;
+
+#define GSF_INPUT_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_INPUT_TYPE, GsfInputClass))
+#define GSF_IS_INPUT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_INPUT_TYPE))
+
+/* protected */
+gboolean gsf_input_set_name	 (GsfInput *input, char const *name);
+gboolean gsf_input_set_name_from_filename (GsfInput *input, char const *filename);
+gboolean gsf_input_set_container (GsfInput *input, GsfInfile *container);
+gboolean gsf_input_set_size	 (GsfInput *input, gsf_off_t size);
+gboolean gsf_input_seek_emulate  (GsfInput *input, gsf_off_t pos);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_IMPL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,46 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-iochannel.c: GIOChannel based input
+ *
+ * Copyright (C) 2003-2004 Rodrigo Moya (rodrigo at gnome-db.org)
+ * Copyright (C) 2003-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-input-iochannel.h>
+
+/**
+ * gsf_input_memory_new_from_iochannel :
+ * @channel : a #GIOChannel.
+ * @error : a #GError
+ *
+ * Returns a new #GsfInputMemory or NULL.
+ */
+GsfInput * 
+gsf_input_memory_new_from_iochannel (GIOChannel *channel,
+				     GError **err)
+{
+	gchar *buf;
+	gsize  len;
+
+	g_return_val_if_fail (channel != NULL, NULL);
+
+	if (G_IO_STATUS_NORMAL != g_io_channel_read_to_end (channel, &buf, &len, err))
+		return NULL;
+
+	return gsf_input_memory_new (buf, len, TRUE);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-iochannel.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,34 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-iochannel.h: interface for use by the structured file layer to read data from IO channels
+ *
+ * Copyright (C) 2002-2004 Rodrigo Moya (rodrigo at gnome-db.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_IOCHANNEL_H
+#define GSF_INPUT_IOCHANNEL_H
+
+#include <gsf/gsf-input-memory.h>
+
+G_BEGIN_DECLS
+
+GsfInput *gsf_input_memory_new_from_iochannel (GIOChannel *channel,
+					       GError    **error);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_IOCHANNEL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,313 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-memory.c:
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <string.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-shared-memory.h>
+#ifdef HAVE_GLIB26
+#include <glib/gstdio.h>
+#else
+#include "glib24_26-compat.h"
+#endif // HAVE_GLIB26
+
+#ifdef HAVE_MMAP
+
+#if defined(FREEBSD) || defined(__FreeBSD__)
+/* We must keep the file open while pages are mapped.  */
+/* http://www.freebsd.org/cgi/query-pr.cgi?pr=48291 */
+#define HAVE_BROKEN_MMAP
+#endif /* defined(FREEBSD) || defined(__FreeBSD__) */
+
+#elif defined(G_OS_WIN32)
+
+#include <windows.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <io.h>
+#include <fcntl.h>
+
+#define MAP_FAILED NULL
+#endif /* HAVE_MMAP */
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
+static GObjectClass *parent_class;
+
+struct _GsfInputMemory {
+	GsfInput parent;
+	GsfSharedMemory *shared;
+#ifdef HAVE_BROKEN_MMAP
+	int fd;
+#endif
+};
+typedef GsfInputClass GsfInputMemoryClass;
+
+/**
+ * gsf_input_memory_new:
+ * @buf: The input bytes
+ * @length: The length of @buf
+ * @needs_free: Whether you want this memory to be free'd at object destruction
+ *
+ * Returns: A new #GsfInputMemory
+ */
+GsfInput *
+gsf_input_memory_new (guint8 const *buf, gsf_off_t length, gboolean needs_free)
+{
+	GsfInputMemory *mem = g_object_new (GSF_INPUT_MEMORY_TYPE, NULL);
+	mem->shared = gsf_shared_memory_new ((void *)buf, length, needs_free);
+	gsf_input_set_size (GSF_INPUT (mem), length);
+	return GSF_INPUT (mem);
+}
+
+/**
+ * gsf_input_memory_new_clone:
+ * @buf: The input bytes
+ * @length: The length of @buf
+ *
+ * Returns: A new #GsfInputMemory
+ */
+GsfInput *
+gsf_input_memory_new_clone (guint8 const *buf, gsf_off_t length)
+{
+	GsfInputMemory *mem = NULL;
+	guint8 * cpy = g_try_malloc (length * sizeof (guint8));
+	if (cpy == NULL)
+		return NULL;
+
+	memcpy (cpy, buf, length);
+	mem = g_object_new (GSF_INPUT_MEMORY_TYPE, NULL);
+	mem->shared = gsf_shared_memory_new ((void *)cpy, length, TRUE);
+	gsf_input_set_size (GSF_INPUT (mem), length);
+	return GSF_INPUT (mem);
+}
+
+static void
+gsf_input_memory_finalize (GObject *obj)
+{
+	GsfInputMemory *mem = (GsfInputMemory *) (obj);
+
+	if (mem->shared)
+		g_object_unref (G_OBJECT (mem->shared));
+
+#ifdef HAVE_BROKEN_MMAP
+	if (mem->fd != -1)
+		close (mem->fd);
+#endif
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_memory_dup (GsfInput *src_input, G_GNUC_UNUSED GError **err)
+{
+	GsfInputMemory const *src = (GsfInputMemory *) (src_input);
+	GsfInputMemory *dst = g_object_new (GSF_INPUT_MEMORY_TYPE, NULL);
+
+	dst->shared = src->shared;
+	g_object_ref (G_OBJECT (dst->shared));
+	gsf_input_set_size (GSF_INPUT (dst), src->shared->size);
+
+#ifdef HAVE_BROKEN_MMAP
+	if (src->fd != -1)
+		dst->fd = dup (src->fd);
+#endif
+
+	return GSF_INPUT (dst);
+}
+
+static guint8 const *
+gsf_input_memory_read (GsfInput *input, size_t num_bytes, guint8 *optional_buffer)
+{
+	GsfInputMemory *mem = (GsfInputMemory *) (input);
+	guchar const *src = mem->shared->buf;
+
+	if (src == NULL)
+		return NULL;
+	if (optional_buffer) {
+		memcpy (optional_buffer, src + input->cur_offset, num_bytes);
+		return optional_buffer;
+	} else
+		return src + input->cur_offset;
+}
+
+static gboolean
+gsf_input_memory_seek (G_GNUC_UNUSED GsfInput *input,
+		       G_GNUC_UNUSED gsf_off_t offset,
+		       G_GNUC_UNUSED GSeekType whence)
+{
+	return FALSE;
+}
+
+static void
+gsf_input_memory_init (GObject *obj)
+{
+	GsfInputMemory *mem = (GsfInputMemory *) (obj);
+	mem->shared = NULL;
+#ifdef HAVE_BROKEN_MMAP
+	mem->fd = -1;
+#endif
+}
+
+static void
+gsf_input_memory_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_input_memory_finalize;
+	input_class->Dup	= gsf_input_memory_dup;
+	input_class->Read	= gsf_input_memory_read;
+	input_class->Seek	= gsf_input_memory_seek;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfInputMemory, gsf_input_memory,
+	   gsf_input_memory_class_init, gsf_input_memory_init,
+	   GSF_INPUT_TYPE)
+
+/***************************************************************************/
+
+#ifdef HAVE_MMAP
+
+#include <unistd.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#ifndef PROT_READ
+#define PROT_READ 0x1
+#endif /* PROT_READ */
+
+#if !defined(MAP_FAILED) || defined(__osf__)
+/* Someone needs their head examined - BSD ? */
+#	define MAP_FAILED ((void *)-1)
+#endif /* !defined(MAP_FAILED) || defined(__osf__) */
+
+#endif /* HAVE_MMAP */
+
+/**
+ * gsf_input_mmap_new:
+ * @filename: The file on disk that you want to mmap
+ * @err: A #GError, or optionally %null
+ *
+ * Returns: A new #GsfInputMemory
+ */
+GsfInput *
+gsf_input_mmap_new (char const *filename, GError **err)
+{
+#if defined(HAVE_MMAP) || defined(G_OS_WIN32)
+	GsfInputMemory *mem;
+	guint8 *buf = NULL;
+	struct stat st;
+	int fd;
+	size_t size;
+
+	fd = g_open (filename, O_RDONLY | O_BINARY, 0);
+	if (fd < 0 || fstat (fd, &st) < 0) {
+		if (err != NULL) {
+			int save_errno = errno;
+			char *utf8name = g_filename_display_name (filename);
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "%s: %s",
+					    utf8name, g_strerror (save_errno));
+			g_free (utf8name);
+		}
+		if (fd >= 0) close (fd);
+		return NULL;
+	}
+
+	if (!S_ISREG (st.st_mode)) {
+		if (err != NULL) {
+			char *utf8name = g_filename_display_name (filename);
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "%s: Is not a regular file",
+					    utf8name);
+			g_free (utf8name);
+		}
+		close (fd);
+		return NULL;
+	}
+
+	size = (size_t) st.st_size;
+	if ((off_t) size != st.st_size) { /* Check for overflow */
+		if (err != NULL) {
+			char *utf8name = g_filename_display_name (filename);
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "%s: File too large to be memory mapped",
+					    utf8name);
+			g_free (utf8name);
+		}
+		close (fd);
+		return NULL;
+	}
+
+#ifdef G_OS_WIN32
+	{
+		HANDLE handle = CreateFileMapping ((HANDLE)_get_osfhandle (fd), NULL, PAGE_READONLY, 0, 0, NULL);
+		buf = MapViewOfFile (handle, FILE_MAP_READ, 0, 0, 0);
+		CloseHandle (handle);
+	}
+#else
+	buf = mmap (NULL, size, PROT_READ, MAP_SHARED, fd, (off_t) 0);
+#endif
+
+	if (buf == MAP_FAILED) {
+		if (err != NULL) {
+			int save_errno = errno;
+			char *utf8name = g_filename_display_name (filename);
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "%s: %s",
+					    utf8name, g_strerror (save_errno));
+			g_free (utf8name);
+		}
+		close (fd);
+		return NULL;
+	}
+
+	mem = g_object_new (GSF_INPUT_MEMORY_TYPE, NULL);
+	mem->shared = gsf_shared_memory_mmapped_new (buf, (gsf_off_t) size);
+	gsf_input_set_size (GSF_INPUT (mem), (gsf_off_t) size);
+	gsf_input_set_name (GSF_INPUT (mem), filename);
+
+#ifdef HAVE_BROKEN_MMAP
+	mem->fd = fd;
+#else
+	close (fd);
+#endif
+
+	return GSF_INPUT (mem);
+#else
+	(void)filename;
+	if (err != NULL)
+		*err = g_error_new (gsf_input_error_id (), 0,
+				    "mmap not supported");
+	return NULL;
+#endif
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-memory.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,43 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-memory.h: interface for used by the ole layer to read raw data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_MEMORY_H
+#define GSF_INPUT_MEMORY_H
+
+#include "gsf-input.h"
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_MEMORY_TYPE	(gsf_input_memory_get_type ())
+#define GSF_INPUT_MEMORY(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_MEMORY_TYPE, GsfInputMemory))
+#define GSF_IS_INPUT_MEMORY(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_MEMORY_TYPE))
+
+typedef struct _GsfInputMemory GsfInputMemory;
+
+GType     gsf_input_memory_get_type  (void);
+GsfInput *gsf_input_memory_new       (guint8 const *buf, gsf_off_t length,
+				      gboolean needs_free);
+GsfInput *gsf_input_memory_new_clone (guint8 const *buf, gsf_off_t length);
+GsfInput *gsf_input_mmap_new	   (char const *filename, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_MEMORY_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,169 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-proxy.c: proxy object (with its own current position)
+ *
+ * Copyright (C) 2004 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-input-proxy.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+
+static GObjectClass *parent_class;
+
+struct _GsfInputProxy {
+	GsfInput input;
+
+	GsfInput *source;
+	gsf_off_t offset;
+};
+
+typedef struct {
+	GsfInputClass input_class;
+} GsfInputProxyClass;
+
+
+/**
+ * gsf_input_proxy_new_section :
+ * @source : The underlying data source.
+ * @offset : Offset into source for start of section.
+ * @size : Length of section.
+ *
+ * This creates a new proxy to a section of the given source.  The new
+ * object will have its own current position, but any operation on it
+ * can change the source's position.
+ *
+ * If a proxy to a proxy is created, the intermediate proxy is short-
+ * circuited.
+ *
+ * This function will ref the source.
+ *
+ * Returns a new input object.
+ **/
+GsfInput *
+gsf_input_proxy_new_section (GsfInput *source,
+			     gsf_off_t offset,
+			     gsf_off_t size)
+{
+	GsfInputProxy *proxy;
+	gsf_off_t source_size;
+
+	g_return_val_if_fail (GSF_IS_INPUT (source), NULL);
+	g_return_val_if_fail (offset >= 0, NULL);
+
+	source_size = gsf_input_size (source);
+	g_return_val_if_fail (offset <= source_size, NULL);
+	g_return_val_if_fail (size <= source_size - offset, NULL);
+
+	proxy = g_object_new (GSF_INPUT_PROXY_TYPE, NULL);
+	proxy->offset = offset;
+	gsf_input_set_size (GSF_INPUT (proxy), size);
+
+	/* Short-circuit multiple proxies.  */
+	if (GSF_IS_INPUT_PROXY (source)) {
+		GsfInputProxy *proxy_source = GSF_INPUT_PROXY (source);
+		proxy->offset += proxy_source->offset;
+		source = proxy_source->source;
+	}
+
+	proxy->source = g_object_ref (source);
+	return GSF_INPUT (proxy);
+}
+
+/**
+ * gsf_input_proxy_new :
+ * @source : The underlying data source.
+ *
+ * This creates a new proxy to the entire, given input source.  See
+ * gsf_input_proxy_new_section for details.
+ *
+ * Returns a new input object.
+ **/
+GsfInput *
+gsf_input_proxy_new (GsfInput *source)
+{
+	return gsf_input_proxy_new_section (source, 0, gsf_input_size (source));
+}
+
+static void
+gsf_input_proxy_finalize (GObject *obj)
+{
+	GsfInputProxy *proxy = (GsfInputProxy *)obj;
+
+	if (proxy->source != NULL) {
+		g_object_unref (G_OBJECT (proxy->source));
+		proxy->source = NULL;
+	}
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_proxy_dup (GsfInput *src_input, G_GNUC_UNUSED GError **err)
+{
+	return gsf_input_proxy_new (src_input);
+}
+
+static guint8 const *
+gsf_input_proxy_read (GsfInput *input, size_t num_bytes, guint8 *buffer)
+{
+	GsfInputProxy *proxy = GSF_INPUT_PROXY (input);
+
+	/* Seek to our position in the source.  */
+	if (gsf_input_seek (proxy->source,
+			    proxy->offset + gsf_input_tell (input),
+			    G_SEEK_SET))
+		return NULL;
+
+	/* Read the data.  */
+	return gsf_input_read (proxy->source, num_bytes, buffer);
+}
+
+static gboolean
+gsf_input_proxy_seek (G_GNUC_UNUSED GsfInput *input,
+		      G_GNUC_UNUSED gsf_off_t offset,
+		      G_GNUC_UNUSED GSeekType whence)
+{
+	return FALSE;
+}
+
+static void
+gsf_input_proxy_init (GObject *obj)
+{
+	GsfInputProxy *proxy = GSF_INPUT_PROXY (obj);
+
+	proxy->source = NULL;
+	proxy->offset = 0;
+}
+
+static void
+gsf_input_proxy_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_input_proxy_finalize;
+	input_class->Dup	= gsf_input_proxy_dup;
+	input_class->Read	= gsf_input_proxy_read;
+	input_class->Seek	= gsf_input_proxy_seek;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfInputProxy, gsf_input_proxy,
+	   gsf_input_proxy_class_init, gsf_input_proxy_init, GSF_INPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-proxy.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,43 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-proxy.h: proxy object (with its own current position)
+ *
+ * Copyright (C) 2004 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_PROXY_H
+#define GSF_INPUT_PROXY_H
+
+#include "gsf-input.h"
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_PROXY_TYPE        (gsf_input_proxy_get_type ())
+#define GSF_INPUT_PROXY(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_PROXY_TYPE, GsfInputProxy))
+#define GSF_IS_INPUT_PROXY(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_PROXY_TYPE))
+
+typedef struct _GsfInputProxy GsfInputProxy;
+
+GType	  gsf_input_proxy_get_type  (void);
+GsfInput *gsf_input_proxy_new	    (GsfInput *source);
+GsfInput *gsf_input_proxy_new_section (GsfInput *source,
+				       gsf_off_t offset,
+				       gsf_off_t size);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_PROXY_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,281 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-stdio.c: stdio based input
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#ifdef HAVE_GLIB26
+#include <glib/gstdio.h>
+#else
+#include "glib24_26-compat.h"
+#endif // HAVE_GLIB26
+
+#include <stdio.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+
+static GObjectClass *parent_class;
+
+struct _GsfInputStdio {
+	GsfInput input;
+
+	FILE     *file;
+	char     *filename;
+	guint8   *buf;
+	size_t   buf_size;
+	gboolean keep_open;
+};
+
+typedef struct {
+	GsfInputClass input_class;
+} GsfInputStdioClass;
+
+/**
+ * gsf_input_stdio_new :
+ * @filename : in utf8.
+ * @err	     : optionally NULL.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfInput *
+gsf_input_stdio_new (char const *filename, GError **err)
+{
+	GsfInputStdio *input;
+	struct stat st;
+	FILE *file;
+	gsf_off_t size;
+
+	g_return_val_if_fail (filename != NULL, NULL);
+
+	file = g_fopen (filename, "rb");
+	if (file == NULL || fstat (fileno (file), &st) < 0) {
+		if (err) {
+			int save_errno = errno;
+			char *utf8name = g_filename_display_name (filename);
+			g_set_error (err,
+				     G_FILE_ERROR,
+				     g_file_error_from_errno (save_errno),
+				     "%s: %s",
+				     utf8name, g_strerror (save_errno));
+			g_free (utf8name);
+		}
+		if (file) fclose (file); /* Just in case.  */
+		return NULL;
+	}
+
+	if (!S_ISREG (st.st_mode)) {
+		if (err) {
+			char *utf8name = g_filename_display_name (filename);
+			g_set_error (err, gsf_input_error_id (), 0,
+				     "%s: not a regular file",
+				     utf8name);
+			g_free (utf8name);
+		}
+		fclose (file);
+		return NULL;
+	}
+
+	size = st.st_size;
+	input = (GsfInputStdio *)g_object_new (GSF_INPUT_STDIO_TYPE, NULL);
+	input->file = file;
+	input->filename = g_strdup (filename);
+	input->buf  = NULL;
+	input->buf_size = 0;
+	input->keep_open = FALSE;
+	gsf_input_set_size (GSF_INPUT (input), size);
+	gsf_input_set_name_from_filename (GSF_INPUT (input), filename);
+
+	return GSF_INPUT (input);
+}
+
+/**
+ * gsf_input_stdio_new_FILE :
+ * @filename  : The filename corresponding to @file.
+ * @file      : an existing stdio FILE *
+ * @keep_open : Should @file be closed when the wrapper is closed
+ *
+ * Assumes ownership of @file.  If @keep_open is true, ownership reverts
+ * to caller when the GsfObject is closed.
+ *
+ * Returns a new GsfInput wrapper for @file.  Note: the file must be
+ * seekable, so this will not work for stdin when that is a tty or pipe.
+ **/
+GsfInput *
+gsf_input_stdio_new_FILE (char const *filename, FILE *file, gboolean keep_open)
+{
+	GsfInputStdio *stdio;
+	struct stat st;
+	gsf_off_t size;
+
+	g_return_val_if_fail (filename != NULL, NULL);
+	g_return_val_if_fail (file != NULL, NULL);
+
+	if (fstat (fileno (file), &st) < 0)
+		return NULL;
+	if (!S_ISREG (st.st_mode))
+		/* It's not that we really care, but we need st.st_size to be sane.  */
+		return NULL;
+	size = st.st_size;
+
+	stdio = g_object_new (GSF_INPUT_STDIO_TYPE, NULL);
+	stdio->file = file;
+	stdio->keep_open = keep_open;
+	stdio->filename = g_strdup (filename);
+	gsf_input_set_size (GSF_INPUT (stdio), size);
+	gsf_input_set_name_from_filename (GSF_INPUT (stdio), filename);
+	return GSF_INPUT (stdio);
+}
+
+static void
+gsf_input_stdio_finalize (GObject *obj)
+{
+	GsfInputStdio *input = (GsfInputStdio *)obj;
+
+	if (input->file != NULL) {
+		if (!input->keep_open)
+			fclose (input->file);
+		input->file = NULL;
+	}
+
+	g_free (input->buf);
+	input->buf = NULL;
+	input->buf_size = 0;
+
+	g_free (input->filename);
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_stdio_dup (GsfInput *src_input, GError **err)
+{
+	GsfInputStdio const *src = (GsfInputStdio *)src_input;
+	return gsf_input_stdio_new (src->filename, err);
+}
+
+static guint8 const *
+gsf_input_stdio_read (GsfInput *input, size_t num_bytes,
+		      guint8 *buffer)
+{
+	GsfInputStdio *stdio = GSF_INPUT_STDIO (input);
+	size_t nread = 0, total_read = 0;
+
+	g_return_val_if_fail (stdio != NULL, NULL);
+	g_return_val_if_fail (stdio->file != NULL, NULL);
+
+	if (buffer == NULL) {
+		if (stdio->buf_size < num_bytes) {
+			stdio->buf_size = num_bytes;
+			g_free (stdio->buf);
+			stdio->buf = g_new (guint8, stdio->buf_size);
+		}
+		buffer = stdio->buf;
+	}
+
+	while (total_read < num_bytes) {
+		nread = fread (buffer + total_read, 1, 
+			       num_bytes - total_read, stdio->file);
+		total_read += nread;
+		if (total_read < num_bytes &&
+		    (ferror (stdio->file) || feof (stdio->file)))
+			return NULL;
+	}
+
+	return buffer;
+}
+
+static gboolean
+gsf_input_stdio_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInputStdio const *stdio = GSF_INPUT_STDIO (input);
+	int stdio_whence = SEEK_SET;
+
+#ifndef HAVE_FSEEKO
+	long loffset;
+#else
+	off_t loffset;
+#endif
+
+	if (stdio->file == NULL)
+		return TRUE;
+
+	loffset = offset;
+	if ((gsf_off_t) loffset != offset) { /* Check for overflow */
+#ifdef HAVE_FSEEKO
+		g_warning ("offset too large for fseeko");
+#else
+		g_warning ("offset too large for fseek");
+#endif
+		return TRUE;
+	}
+	switch (whence) {
+	case G_SEEK_CUR : stdio_whence = SEEK_CUR; break;
+	case G_SEEK_END : stdio_whence = SEEK_END; break;
+	case G_SEEK_SET:
+	default:
+		break;
+	}
+
+	errno = 0;
+#ifdef HAVE_FSEEKO
+	if (0 == fseeko (stdio->file, loffset, stdio_whence))
+		return FALSE;
+#else
+	if (0 == fseek (stdio->file, loffset, stdio_whence))
+		return FALSE;
+#endif
+
+	return TRUE;
+}
+
+static void
+gsf_input_stdio_init (GObject *obj)
+{
+	GsfInputStdio *stdio = GSF_INPUT_STDIO (obj);
+
+	stdio->file = NULL;
+	stdio->filename = NULL;
+	stdio->buf = NULL;
+	stdio->buf_size = 0;
+	stdio->keep_open = FALSE;
+}
+
+static void
+gsf_input_stdio_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_input_stdio_finalize;
+	input_class->Dup	= gsf_input_stdio_dup;
+	input_class->Read	= gsf_input_stdio_read;
+	input_class->Seek	= gsf_input_stdio_seek;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfInputStdio, gsf_input_stdio,
+	   gsf_input_stdio_class_init, gsf_input_stdio_init, GSF_INPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-stdio.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-stdio.h: interface for use by the structured file layer to read raw data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_STDIO_H
+#define GSF_INPUT_STDIO_H
+
+#include "gsf-input.h"
+#include <stdio.h>
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_STDIO_TYPE        (gsf_input_stdio_get_type ())
+#define GSF_INPUT_STDIO(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_STDIO_TYPE, GsfInputStdio))
+#define GSF_IS_INPUT_STDIO(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_STDIO_TYPE))
+
+typedef struct _GsfInputStdio GsfInputStdio;
+
+GType     gsf_input_stdio_get_type (void);
+GsfInput *gsf_input_stdio_new      (char const *filename, GError **err);
+
+GsfInput *gsf_input_stdio_new_FILE   (char const *filename, FILE *file,
+				      gboolean keep_open);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_STDIO_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,322 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-textline.c: textline based input
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-input-textline.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct _GsfInputTextline {
+	GsfInput input;
+
+	GsfInput	*source;
+	guint8 const	*remainder;
+	unsigned	 remainder_size;
+	unsigned	 max_line_size;
+
+	unsigned char	*buf;
+	unsigned	 buf_size;
+
+	/* int		 current_line; */
+};
+
+typedef struct {
+	GsfInputClass input_class;
+} GsfInputTextlineClass;
+
+/**
+ * gsf_input_textline_new :
+ * @source : in some combination of ascii and utf8
+ *
+ * NOTE : adds a reference to @source
+ *
+ * Returns a new file or NULL.
+ **/
+GsfInput *
+gsf_input_textline_new (GsfInput *source)
+{
+	GsfInputTextline *input;
+
+	g_return_val_if_fail (source != NULL, NULL);
+
+	input = g_object_new (GSF_INPUT_TEXTLINE_TYPE, NULL);
+	g_object_ref (G_OBJECT (source));
+	input->source = source;
+	input->buf  = NULL;
+	input->buf_size = 0;
+	gsf_input_set_size (GSF_INPUT (source), gsf_input_size (source));
+
+	return GSF_INPUT (input);
+}
+
+static void
+gsf_input_textline_finalize (GObject *obj)
+{
+	GsfInputTextline *input = (GsfInputTextline *)obj;
+
+	if (input->source != NULL) {
+		g_object_unref (G_OBJECT (input->source));
+		input->source = NULL;
+	}
+	if (input->buf != NULL) {
+		g_free (input->buf);
+		input->buf  = NULL;
+	}
+	input->buf_size = 0;
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_textline_dup (GsfInput *src_input, G_GNUC_UNUSED GError **err)
+{
+	GsfInputTextline const *src = (GsfInputTextline *)src_input;
+	GsfInputTextline *dst = g_object_new (GSF_INPUT_TEXTLINE_TYPE, NULL);
+
+	dst->source = src->source;
+	g_object_ref (G_OBJECT (dst->source));
+	gsf_input_set_size (GSF_INPUT (dst), gsf_input_size (src_input));
+
+	return GSF_INPUT (dst);
+}
+
+static guint8 const *
+gsf_input_textline_read (GsfInput *input, size_t num_bytes, guint8 *buffer)
+{
+	GsfInputTextline *textline = GSF_INPUT_TEXTLINE (input);
+	textline->remainder = NULL;
+	return gsf_input_read (textline->source, num_bytes, buffer);
+}
+
+static gboolean
+gsf_input_textline_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInputTextline *textline = GSF_INPUT_TEXTLINE (input);
+	textline->remainder = NULL;
+	return gsf_input_seek (textline->source, offset, whence);
+}
+
+static void
+gsf_input_textline_init (GObject *obj)
+{
+	GsfInputTextline *textline = GSF_INPUT_TEXTLINE (obj);
+
+	textline->source	 = NULL;
+	textline->remainder	 = NULL;
+	textline->remainder_size = 0;
+	textline->max_line_size  = 512;	/* an initial guess */
+	textline->buf		 = NULL;
+	textline->buf_size	 = 0;
+}
+
+static void
+gsf_input_textline_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_input_textline_finalize;
+	input_class->Dup	= gsf_input_textline_dup;
+	input_class->Read	= gsf_input_textline_read;
+	input_class->Seek	= gsf_input_textline_seek;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfInputTextline, gsf_input_textline,
+	   gsf_input_textline_class_init, gsf_input_textline_init, GSF_INPUT_TYPE)
+
+/**
+ * gsf_input_textline_ascii_gets :
+ * @input :
+ *
+ * A utility routine to read things line by line from the underlying source.
+ * Trailing newlines and carriage returns are stripped, and the resultant buffer
+ * can be edited.
+ *
+ * returns the string read, or NULL on eof.
+ **/
+unsigned char *
+gsf_input_textline_ascii_gets (GsfInputTextline *textline)
+{
+	guint8 const *ptr ,*end;
+	gsf_off_t remain;
+	unsigned len, count = 0;
+
+	g_return_val_if_fail (textline != NULL, NULL);
+
+	while (1) {
+		if (textline->remainder == NULL ||
+		    textline->remainder_size == 0) {
+			remain = gsf_input_remaining (textline->source);
+			len = MIN (remain, textline->max_line_size);
+
+			textline->remainder = gsf_input_read (textline->source, len, NULL);
+			if (textline->remainder == NULL)
+				return NULL;
+			textline->remainder_size = len;
+		}
+
+		ptr = textline->remainder;
+		end = ptr + textline->remainder_size;
+		for (; ptr < end ; ptr++)
+			if (*ptr == '\n' || *ptr == '\r')
+				break;
+
+		/* copy the remains into the buffer, grow it if necessary */
+		len = ptr - textline->remainder;
+		if (count + len >= textline->buf_size) {
+			textline->buf_size += len;
+			textline->buf = g_renew (guint8, textline->buf,
+						 textline->buf_size + 1);
+		}
+
+		g_return_val_if_fail (textline->buf != NULL, NULL);
+
+		memcpy (textline->buf + count, textline->remainder, len);
+		count += len;
+
+		if (ptr < end) {
+			unsigned char last = ptr [0];
+
+			/* eat the trailing new line */
+			ptr++;
+			if (ptr >= end) {
+				/* be extra careful, the newline is at the bound */
+				if (gsf_input_remaining (textline->source) > 0) {
+					ptr = gsf_input_read (textline->source, 1, NULL);
+					if (ptr == NULL)
+						return NULL;
+					textline->remainder = ptr;
+					textline->remainder_size = 1;
+					end = ptr + 1;
+				} else
+					ptr = end = NULL;
+			}
+			if (ptr != NULL &&
+			    ((last == '\n' && *ptr == '\r') ||
+			     (last == '\r' && *ptr == '\n')))
+				ptr++;
+			break;
+		} else if (gsf_input_remaining (textline->source) <= 0) {
+			ptr = end = NULL;
+			break;
+		} else
+			textline->remainder = NULL;
+
+	}
+
+	textline->remainder = ptr;
+	textline->remainder_size = end - ptr;
+
+	textline->buf [count] = '\0';
+	return textline->buf;
+}
+
+/**
+ * gsf_input_textline_utf8_gets :
+ * @input :
+ *
+ * A utility routine to read things line by line from the underlying source.
+ * Trailing newlines and carriage returns are stripped, and the resultant buffer
+ * can be edited.
+ *
+ * returns the string read, or NULL on eof.
+ **/
+guint8 *
+gsf_input_textline_utf8_gets (GsfInputTextline *textline)
+{
+	guint8 const *ptr ,*end;
+	gsf_off_t remain;
+	unsigned len, count = 0;
+
+	g_return_val_if_fail (textline != NULL, NULL);
+
+	while (1) {
+		if (textline->remainder == NULL ||
+		    textline->remainder_size == 0) {
+			remain = gsf_input_remaining (textline->source);
+			len = MIN (remain, textline->max_line_size);
+
+			textline->remainder = gsf_input_read (textline->source, len, NULL);
+			if (textline->remainder == NULL)
+				return NULL;
+			textline->remainder_size = len;
+		}
+
+		ptr = textline->remainder;
+		end = ptr + textline->remainder_size;
+		for (; ptr < end ; ptr = (guint8 *) g_utf8_next_char (ptr))
+			if (*ptr == '\n' || *ptr == '\r')
+				break;
+
+		/* copy the remains into the buffer, grow it if necessary */
+		len = ptr - textline->remainder;
+		if (count + len >= textline->buf_size) {
+			textline->buf_size += len;
+			textline->buf = g_renew (guint8, textline->buf,
+						 textline->buf_size + 1);
+		}
+
+		g_return_val_if_fail (textline->buf != NULL, NULL);
+
+		memcpy (textline->buf + count, textline->remainder, len);
+		count += len;
+
+		if (ptr < end) {
+			unsigned char last = ptr [0];
+
+			/* eat the trailing new line */
+			ptr++;
+			if (ptr >= end) {
+				/* be extra careful, the newline is at the bound */
+				if (gsf_input_remaining (textline->source) > 0) {
+					ptr = gsf_input_read (textline->source, 1, NULL);
+					if (ptr == NULL)
+						return NULL;
+					textline->remainder = ptr;
+					textline->remainder_size = 1;
+					end = ptr + 1;
+				} else
+					ptr = end = NULL;
+			}
+			if (ptr != NULL &&
+			    ((last == '\n' && *ptr == '\r') ||
+			     (last == '\r' && *ptr == '\n')))
+				ptr++;
+			break;
+		} else if (gsf_input_remaining (textline->source) <= 0) {
+			ptr = end = NULL;
+			break;
+		} else
+			textline->remainder = NULL;
+
+	}
+
+	textline->remainder = ptr;
+	textline->remainder_size = end - ptr;
+
+	textline->buf [count] = '\0';
+	return textline->buf;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input-textline.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,43 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-textline.h: a utility wrapper to pull in text, line by line.
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_TEXTLINE_H
+#define GSF_INPUT_TEXTLINE_H
+
+#include "gsf-input.h"
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_TEXTLINE_TYPE        (gsf_input_textline_get_type ())
+#define GSF_INPUT_TEXTLINE(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_TEXTLINE_TYPE, GsfInputTextline))
+#define GSF_IS_INPUT_TEXTLINE(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_TEXTLINE_TYPE))
+
+typedef struct _GsfInputTextline GsfInputTextline;
+
+GType gsf_input_textline_get_type (void);
+
+GsfInput      *gsf_input_textline_new		(GsfInput *source);
+unsigned char *gsf_input_textline_ascii_gets	(GsfInputTextline *input);
+guint8	      *gsf_input_textline_utf8_gets	(GsfInputTextline *input);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_TEXTLINE_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,651 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input.c: interface for used by the ole layer to read raw data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-input-gzip.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+#ifdef HAVE_BZIP
+#include <gsf/gsf-input-bzip.h>
+#endif
+
+#define GET_CLASS(instance) G_TYPE_INSTANCE_GET_CLASS (instance, GSF_INPUT_TYPE, GsfInputClass)
+
+static GObjectClass *parent_class;
+
+enum {
+	PROP_0,
+	PROP_NAME,
+	PROP_SIZE,
+	PROP_EOF,
+	PROP_REMAINING,
+	PROP_POS
+};
+
+#if 0
+static void
+gsf_input_set_property (GObject      *object,
+			guint         property_id,
+			GValue const *value,
+			GParamSpec   *pspec)
+{
+	switch (property_id)
+		{
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+			break;
+		}
+}
+#endif
+
+static void
+gsf_input_get_property (GObject     *object,
+			guint        property_id,
+			GValue      *value,
+			GParamSpec  *pspec)
+{
+	/* gsf_off_t is typedef'd to gint64 */
+	switch (property_id) {
+	case PROP_NAME:
+		g_value_set_string (value, gsf_input_name (GSF_INPUT (object)));
+		break;
+	case PROP_SIZE:
+		g_value_set_int64 (value, gsf_input_size (GSF_INPUT (object)));
+		break;
+	case PROP_EOF:
+		g_value_set_boolean (value, gsf_input_eof (GSF_INPUT (object)));
+		break;
+	case PROP_REMAINING:
+		g_value_set_int64 (value, gsf_input_remaining (GSF_INPUT (object)));
+		break;
+	case PROP_POS:
+		g_value_set_int64 (value, gsf_input_tell (GSF_INPUT (object)));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_input_finalize (GObject *obj)
+{
+	GsfInput *input = GSF_INPUT (obj);
+
+	if (input->name != NULL) {
+		g_free (input->name);
+		input->name = NULL;
+	}
+	if (input->container != NULL) {
+		g_object_unref (G_OBJECT (input->container));
+		input->container = NULL;
+	}
+	parent_class->finalize (obj);
+}
+
+static void
+gsf_input_init (GObject *obj)
+{
+	GsfInput *input = GSF_INPUT (obj);
+
+	input->size = 0;
+	input->cur_offset = 0;
+	input->name = NULL;
+	input->container = NULL;
+}
+
+static void
+gsf_input_class_init (GObjectClass *gobject_class)
+{
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	gobject_class->finalize     = gsf_input_finalize;
+	/* gobject_class->set_property = gsf_input_set_property; */
+	gobject_class->get_property = gsf_input_get_property;
+
+	g_object_class_install_property (gobject_class,
+					 PROP_NAME,
+					 g_param_spec_string ("name", "Name",
+							      "The Input's Name",
+							      NULL,
+							      GSF_PARAM_STATIC |
+							      G_PARAM_READABLE));
+	g_object_class_install_property (gobject_class,
+					 PROP_SIZE,
+					 g_param_spec_int64 ("size", "Size",
+							     "The Input's Size",
+							     0, G_MAXINT64, 0,
+							     GSF_PARAM_STATIC |
+							     G_PARAM_READABLE));
+	g_object_class_install_property (gobject_class,
+					 PROP_EOF,
+					 g_param_spec_boolean ("eof", "OEF",
+							       "End Of File",
+							       FALSE,
+							       GSF_PARAM_STATIC |
+							       G_PARAM_READABLE));
+	g_object_class_install_property (gobject_class,
+					 PROP_REMAINING,
+					 g_param_spec_int64 ("remaining", "Remaining",
+							     "Amount of Data Remaining",
+							     0, G_MAXINT64, 0,
+							     GSF_PARAM_STATIC |
+							     G_PARAM_READABLE));
+	g_object_class_install_property (gobject_class,
+					 PROP_POS,
+					 g_param_spec_int64 ("position", "Position",
+							     "The Output's Current Position",
+							     0, G_MAXINT64, 0,
+							     GSF_PARAM_STATIC |
+							     G_PARAM_READABLE));
+}
+
+GSF_CLASS_ABSTRACT (GsfInput, gsf_input,
+		    gsf_input_class_init, gsf_input_init,
+		    G_TYPE_OBJECT)
+
+/**
+ * gsf_input_name :
+ * @input : the input stream
+ *
+ * Returns @input's name in utf8 form, or NULL if it has no name.
+ **/
+char const *
+gsf_input_name (GsfInput *input)
+{
+	g_return_val_if_fail (GSF_IS_INPUT (input), NULL);
+	return input->name;
+}
+
+/**
+ * gsf_input_container :
+ * @input : the input stream
+ *
+ * Returns, but does not add a reference to @input's container.
+ * Potentially NULL
+ **/
+GsfInfile *
+gsf_input_container (GsfInput *input)
+{
+	g_return_val_if_fail (GSF_IS_INPUT (input), NULL);
+	return input->container;
+}
+
+/**
+ * gsf_input_dup :
+ * @input : The input to duplicate
+ * @err : optionally NULL
+ *
+ * Duplicates input @src leaving the new one at the same offset.
+ *
+ * Returns : the duplicate, or NULL on error
+ **/
+GsfInput *
+gsf_input_dup (GsfInput *input, GError **err)
+{
+	GsfInput *dst;
+
+	g_return_val_if_fail (input != NULL, NULL);
+
+	dst = GET_CLASS (input)->Dup (input, err);
+	if (dst != NULL) {
+		if (dst->size != input->size) {
+			if (err != NULL)
+				*err = g_error_new (gsf_input_error_id (), 0,
+						    "Duplicate size mismatch");
+			g_object_unref (dst);
+			return NULL;
+		}
+		if (gsf_input_seek (dst, input->cur_offset, G_SEEK_SET)) {
+			if (err != NULL)
+				*err = g_error_new (gsf_input_error_id (), 0,
+						    "Seek failed");
+			g_object_unref (dst);
+			return NULL;
+		}
+
+		if (input->name != NULL)
+			gsf_input_set_name (dst, input->name);
+		dst->container = input->container;
+		if (dst->container != NULL)
+			g_object_ref (G_OBJECT (dst->container));
+	}
+	return dst;
+}
+
+/**
+ * gsf_input_open_sibling :
+ * @input : The input
+ *
+ * NOT CURRENTLY IMPLEMENTED
+ *
+ * Attempts to open a 'sibling' of @input.  The caller is responsible for
+ * managing the resulting object.
+ *
+ * NOT CURRENTLY IMPLEMENTED
+ *
+ * Returns :  the size or -1 on error
+ **/
+GsfInput *
+gsf_input_sibling (GsfInput const *input, char const *name, GError **err)
+{
+	g_return_val_if_fail (GET_CLASS (input)->OpenSibling, NULL);
+
+	return GET_CLASS (input)->OpenSibling (input, name, err);
+}
+
+/**
+ * gsf_input_size :
+ * @input : The input
+ *
+ * Looks up and caches the number of bytes in the input
+ *
+ * Returns :  the size or -1 on error
+ **/
+gsf_off_t
+gsf_input_size (GsfInput *input)
+{
+	g_return_val_if_fail (input != NULL, -1);
+	return input->size;
+}
+
+/**
+ * gsf_input_eof :
+ * @input : the input
+ *
+ * Are we at the end of the file ?
+ *
+ * Returns : TRUE if the input is at the eof.
+ **/
+gboolean
+gsf_input_eof (GsfInput *input)
+{
+	g_return_val_if_fail (input != NULL, FALSE);
+
+	return input->cur_offset >= input->size;
+}
+
+/**
+ * gsf_input_read :
+ * @input : the input stream
+ * @num_bytes : number of bytes to read
+ * @optional_buffer : NULL, or pointer to destination memory area
+ *
+ * Read at least @num_bytes.  Does not change the current position if there
+ * is an error.  Will only read if the entire amount can be read.  Invalidates
+ * the buffer associated with previous calls to gsf_input_read.
+ *
+ * Returns : pointer to the buffer or NULL if there is an error or 0 bytes are
+ * 	requested.
+ **/
+guint8 const *
+gsf_input_read (GsfInput *input, size_t num_bytes, guint8 *optional_buffer)
+{
+	guint8 const *res;
+
+	g_return_val_if_fail (input != NULL, NULL);
+
+	if (num_bytes == 0 || (input->cur_offset + num_bytes) > input->size)
+		return NULL;
+	res = GET_CLASS (input)->Read (input, num_bytes, optional_buffer);
+	if (res == NULL)
+		return NULL;
+
+	input->cur_offset += num_bytes;
+	return res;
+}
+
+/**
+ * gsf_input_remaining :
+ * @input : the input stream
+ *
+ * Returns the number of bytes left in the file.
+ **/
+gsf_off_t
+gsf_input_remaining (GsfInput *input)
+{
+	g_return_val_if_fail (input != NULL, 0);
+
+	return input->size - input->cur_offset;
+}
+
+/**
+ * gsf_input_tell :
+ * @input : the input stream
+ *
+ * Returns the current offset in the file.
+ **/
+gsf_off_t
+gsf_input_tell (GsfInput *input)
+{
+	g_return_val_if_fail (input != NULL, 0);
+
+	return input->cur_offset;
+}
+
+/**
+ * gsf_input_seek :
+ * @input : the input stream
+ * @offset : target offset
+ * @whence : determines whether the offset is relative to the beginning or
+ *           the end of the stream, or to the current location.
+ *
+ * Returns TRUE on error.
+ **/
+gboolean
+gsf_input_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	gsf_off_t pos = offset;
+
+	g_return_val_if_fail (input != NULL, TRUE);
+
+	switch (whence) {
+	case G_SEEK_SET : break;
+	case G_SEEK_CUR : pos += input->cur_offset;	break;
+	case G_SEEK_END : pos += input->size;		break;
+	default : return TRUE;
+	}
+
+	if (pos < 0 || pos > input->size)
+		return TRUE;
+
+	/*
+	 * If we go nowhere, just return.  This in particular handles null
+	 * seeks for streams with no seek method.
+	 */
+	if (pos == input->cur_offset)
+		return FALSE;
+
+	if (GET_CLASS (input)->Seek (input, offset, whence))
+		return TRUE;
+
+	input->cur_offset = pos;
+	return FALSE;
+}
+
+/**
+ * gsf_input_set_name :
+ * @input : the input stream
+ * @name : the new name of the stream, or NULL.
+ *
+ * protected.
+ *
+ * Returns : TRUE if the assignment was ok.
+ **/
+gboolean
+gsf_input_set_name (GsfInput *input, char const *name)
+{
+	char *buf;
+
+	g_return_val_if_fail (input != NULL, FALSE);
+
+	buf = g_strdup (name);
+	g_free (input->name);
+	input->name = buf;
+	return TRUE;
+}
+
+/**
+ * gsf_input_set_name_from_filename :
+ * @input : the input stream
+ * @filename : the (fs-sys encoded) filename
+ *
+ * protected.
+ *
+ * Returns : TRUE if the assignment was ok.
+ **/
+gboolean
+gsf_input_set_name_from_filename (GsfInput *input, char const *filename)
+{
+	g_return_val_if_fail (input != NULL, FALSE);
+
+	g_free (input->name);
+	input->name = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
+	return TRUE;
+}
+
+
+/**
+ * gsf_input_set_container :
+ * @input : the input stream
+ * @container :
+ *
+ * Returns : TRUE if the assignment was ok.
+ */
+gboolean
+gsf_input_set_container (GsfInput *input, GsfInfile *container)
+{
+	g_return_val_if_fail (input != NULL, FALSE);
+
+	if (container != NULL)
+		g_object_ref (G_OBJECT (container));
+	if (input->container != NULL)
+		g_object_unref (G_OBJECT (input->container));
+	input->container = container;
+	return TRUE;
+}
+
+/**
+ * gsf_input_set_size :
+ * @input : the input stream
+ * @size : the size of the stream
+ *
+ * Returns : TRUE if the assignment was ok.
+ */
+gboolean
+gsf_input_set_size (GsfInput *input, gsf_off_t size)
+{
+	g_return_val_if_fail (input != NULL, FALSE);
+	g_return_val_if_fail (size >= 0, FALSE);
+
+	input->size = size;
+	return TRUE;
+}
+
+/**
+ * gsf_input_seek_emulate: Emulate forward seeks by reading.
+ * @input : stream to emulate seek for
+ * @pos : absolute position to seek to
+ *
+ * Returns : TRUE if the emulation failed.
+ */
+gboolean
+gsf_input_seek_emulate (GsfInput *input, gsf_off_t pos)
+{
+	if (pos < input->cur_offset)
+		return TRUE;
+
+	while (pos > input->cur_offset) {
+		gsf_off_t readcount = MIN (pos - input->cur_offset, 8192);
+		if (!gsf_input_read (input, readcount, NULL))
+			return TRUE;
+	}
+	return FALSE;
+}
+
+/****************************************************************************/
+
+/**
+ * gsf_input_error_id :
+ *
+ * Returns : A utility quark to flag a GError as being an input problem.
+ */
+GQuark 
+gsf_input_error_id (void)
+{
+	static GQuark quark;
+	if (!quark)
+		quark = g_quark_from_static_string ("gsf_input_error_id");
+	return quark;
+}
+
+/**
+ * gsf_input_error :
+ *
+ * Deprecated in 1.12.0
+ * Returns : A utility quark to flag a GError as being an input problem.
+ */
+GQuark 
+gsf_input_error (void)
+{
+	return gsf_input_error_id ();
+}
+
+/****************************************************************************/
+
+#define GSF_READ_BUFSIZE (1024 * 4)
+
+/**
+ * gsf_input_copy :
+ * @input : a non-null #GsfInput
+ * @output : a non-null #GsfOutput
+ *
+ * Copy the contents from @input to @output from their respective
+ * current positions. So if you want to be sure to copy *everything*,
+ * make sure to call gsf_input_seek (input, 0, G_SEEK_SET) and
+ * gsf_output_seek (output, 0, G_SEEK_SET) first, if applicable.
+ *
+ * Returns : TRUE on Success
+ **/
+gboolean
+gsf_input_copy (GsfInput *input, GsfOutput *output)
+{
+	gsf_off_t    remaining = 0;
+	gsf_off_t    toread    = 0;
+	const guint8 * buffer  = NULL;
+	gboolean     success   = TRUE;
+
+	g_return_val_if_fail (input != NULL, FALSE);
+	g_return_val_if_fail (output != NULL, FALSE);
+
+	while ((remaining = gsf_input_remaining (input)) > 0 && (success)) {
+		toread = MIN (remaining, GSF_READ_BUFSIZE);
+		if (NULL == (buffer = gsf_input_read (input, toread, NULL)))
+			success = FALSE;
+		else
+			success = gsf_output_write (output, toread, buffer);
+	}
+
+	return success;
+}
+
+/****************************************************************************/
+
+/**
+ * gsf_input_uncompress: maybe uncompress stream.
+ * @src: stream to be uncompressed.
+ *
+ * Returns: A stream equivalent to the source stream, but uncompressed if
+ * the source was compressed.
+ *
+ * This functions takes ownership of the incoming reference and yields a
+ * new one as its output.
+ */
+GsfInput *
+gsf_input_uncompress (GsfInput *src)
+{
+	gsf_off_t cur_offset = src->cur_offset;
+	const guint8 *data;
+
+	if (gsf_input_seek (src, 0, G_SEEK_SET))
+		goto error;
+
+	/* Read header up front, so we avoid extra seeks in tests.  */
+	data = gsf_input_read (src, 4, NULL);
+	if (!data)
+		goto error;
+
+	/* Let's try gzip.  */
+	{
+		const unsigned char gzip_sig[2] = { 0x1f, 0x8b };
+
+		if (memcmp (gzip_sig, data, sizeof (gzip_sig)) == 0) {
+			GsfInput *res = gsf_input_gzip_new (src, NULL);
+			if (res) {
+				g_object_unref (G_OBJECT (src));
+				return gsf_input_uncompress (res);
+			} 
+		}
+	}
+
+#ifdef HAVE_BZIP
+	/* Let's try bzip.  */
+	{
+		guint8 const *bzip_sig = "BZh";
+
+		if (memcmp (gzip_sig, data, strlen (bzip_sig)) == 0) {
+			GsfInput *res = gsf_input_memory_new_from_bzip (src, NULL);
+			if (res) {
+				g_object_unref (G_OBJECT (src));
+				return gsf_input_uncompress (res);
+			}
+		}
+	}
+#endif
+
+	/* Other methods go here.  */
+
+ error:
+	(void)gsf_input_seek (src, cur_offset, G_SEEK_SET);
+	return src;
+}
+
+#if 0
+
+#include <gsf/gsf-input-stdio.h>
+
+#ifdef HAVE_GNOME
+#include <gsf-gnome/gsf-input-gnomevfs.h>
+#endif
+
+GsfInput *
+gsf_input_new_for_uri (char const * uri, GError ** err)
+{
+	GsfInput * input = NULL;
+	size_t len;
+
+	g_return_val_if_fail (uri, NULL);
+
+	len = strlen (uri);
+	g_return_val_if_fail (len, NULL);
+
+	if (len > 3 && !strstr (uri, ":/")) {
+		/* assume plain file */
+		input = gsf_input_stdio_new (uri, err);
+	} else {
+#if HAVE_GNOME
+		/* have gnome, let GnomeVFS deal with this */
+		input = gsf_input_gnomevfs_new (uri, err);
+#else		
+		if (len > 7 && !strncmp (uri, "file:/", 6)) {
+			/* dumb attempt to translate this into a local path */
+			input = gsf_input_stdio_new (uri+7, err);
+		} 
+		/* else: unknown or unhandled protocol - bail */
+#endif
+	}
+
+	return input;
+}
+
+#endif

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-input.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,64 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input.h: interface for used by the ole layer to read raw data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_H
+#define GSF_INPUT_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+#include <sys/types.h>
+#include <gsf/gsf-output.h>
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_TYPE        (gsf_input_get_type ())
+#define GSF_INPUT(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_TYPE, GsfInput))
+#define GSF_IS_INPUT(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_TYPE))
+
+GType gsf_input_get_type (void);
+
+char const   *gsf_input_name	  (GsfInput *input);
+GsfInfile    *gsf_input_container (GsfInput *input);
+
+GsfInput     *gsf_input_dup	  (GsfInput *input, GError **err);
+GsfInput     *gsf_input_sibling	  (GsfInput const *input, char const *name, GError **err);
+gsf_off_t     gsf_input_size	  (GsfInput *input);
+gboolean      gsf_input_eof	  (GsfInput *input);
+guint8 const *gsf_input_read	  (GsfInput *input, size_t num_bytes,
+				   guint8 *optional_buffer);
+gsf_off_t     gsf_input_remaining (GsfInput *input);
+gsf_off_t     gsf_input_tell	  (GsfInput *input);
+gboolean      gsf_input_seek	  (GsfInput *input,
+				   gsf_off_t offset, GSeekType whence);
+
+/* Utilities */
+gboolean  gsf_input_copy       (GsfInput *input, GsfOutput *output);
+GsfInput *gsf_input_uncompress (GsfInput *src);
+
+GQuark gsf_input_error_id (void);
+#ifndef GSF_DISABLE_DEPRECATED
+/* deprecated in 1.12.0, use gsf_input_error_id */
+GQuark gsf_input_error (void);
+#endif /* GSF_DISABLE_DEPRECATED */
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1131 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-libxml.c :
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-libxml.h>
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-output.h>
+#include <gsf/gsf-input-gzip.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+
+#include <math.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+/* Note: libxml erroneously declares the length argument as int.  */
+static int
+gsf_libxml_read (void *context, char *buffer, int len)
+{
+	gsf_off_t remaining = gsf_input_remaining ((GsfInput *)context);
+	guint8* res;
+
+	if (len > remaining)
+		len = remaining;
+	res = (guint8 *) gsf_input_read ((GsfInput *)context,
+					 (size_t)len, buffer);
+	if (res == NULL && len > 0) /* Not an error if len == 0 */
+		return -1;
+	return len;
+}
+
+static int
+gsf_libxml_write (void *context, char const *buffer, int len)
+{
+	if (!gsf_output_write ((GsfOutput *)context, (size_t)len, buffer))
+		return -1;
+	return len;
+}
+
+static int
+gsf_libxml_close (void *context)
+{
+	g_object_unref (G_OBJECT (context));
+	return TRUE;
+}
+
+static xmlParserCtxtPtr
+gsf_xml_parser_context_full (GsfInput *input, xmlSAXHandlerPtr sax, gpointer user)
+{
+	GsfInput *gzip;
+
+	g_return_val_if_fail (GSF_IS_INPUT (input), NULL);
+
+	gzip = gsf_input_gzip_new (input, NULL);
+	if (gzip != NULL)
+		input = gzip;
+	else
+		g_object_ref (G_OBJECT (input));
+
+	return xmlCreateIOParserCtxt (
+		sax, user,
+		(xmlInputReadCallback) gsf_libxml_read, 
+		(xmlInputCloseCallback) gsf_libxml_close,
+		input, XML_CHAR_ENCODING_NONE);
+}
+
+/**
+ * gsf_xml_parser_context :
+ * @input :
+ *
+ * Create a libxml2 pull style parser context wrapper around a gsf input.
+ * This signature will probably change to supply a SAX structure.
+ *
+ * NOTE : adds a reference to @input
+ * NOTE : a simple wrapper around a cleaner implementation that will fold in
+ *	 when we add other api changes.  Its not worth bumping just for this
+ *
+ * Returns : A parser context or NULL
+ **/
+xmlParserCtxtPtr
+gsf_xml_parser_context (GsfInput *input)
+{
+	return gsf_xml_parser_context_full (input, NULL, NULL);
+}
+
+/**
+ * gsf_xml_output_buffer_new :
+ * @output :
+ * @encoding : optionally NULL.
+ *
+ * NOTE : adds a reference to @output
+ * NOTE : This is _not_ releated to GsfXMLOut
+ */
+static xmlOutputBufferPtr
+gsf_xml_output_buffer_new (GsfOutput *output,
+			   xmlCharEncodingHandlerPtr handler)
+{
+	xmlOutputBufferPtr res = xmlAllocOutputBuffer (handler);
+	if (res != NULL) {
+		g_object_ref (G_OBJECT (output));
+		res->context = (void *)output;
+		res->writecallback = gsf_libxml_write;
+		res->closecallback = gsf_libxml_close;
+	}
+
+	return res;
+}
+
+int
+gsf_xmlDocFormatDump (GsfOutput *output, xmlDocPtr cur, char const *encoding,
+		      gboolean format)
+{
+	xmlOutputBufferPtr buf;
+	xmlCharEncodingHandlerPtr handler = NULL;
+
+	if (cur == NULL) {
+#ifdef DEBUG_TREE
+		xmlGenericError(xmlGenericErrorContext,
+				"xmlDocDump : document == NULL\n");
+#endif
+		return(-1);
+	}
+
+	if (encoding != NULL) {
+		xmlCharEncoding enc;
+
+		enc = xmlParseCharEncoding(encoding);
+
+		if (cur->charset != XML_CHAR_ENCODING_UTF8) {
+			xmlGenericError(xmlGenericErrorContext,
+					"xmlDocDump: document not in UTF8\n");
+			return(-1);
+		}
+		if (enc != XML_CHAR_ENCODING_UTF8) {
+			handler = xmlFindCharEncodingHandler(encoding);
+			if (handler == NULL) {
+				xmlFree((char *) cur->encoding);
+				cur->encoding = NULL;
+			}
+		}
+	}
+	buf = gsf_xml_output_buffer_new (output, handler);
+	return xmlSaveFormatFileTo (buf, cur, encoding, format);
+}
+
+/***************************************************************************/
+
+struct _GsfXMLInDoc {
+	GsfXMLInNode	*root;
+	GsfXMLInNS	*ns;
+	GPtrArray	*ns_by_id;
+	GsfXMLInUnknownFunc	unknown_handler;
+};
+
+typedef struct {
+	char    *tag;
+	unsigned taglen;
+	unsigned ref_count;
+} GsfXMLInNSInstance;
+
+typedef struct {
+	GsfXMLInNS const *ns;
+	GSList *elem;
+} GsfXMLInNodeGroup;
+
+static char const *
+node_name (GsfXMLInNode const *node)
+{
+	return (node->name != NULL) ? node->name : "{catch all)}";
+}
+
+static void
+gsf_xml_in_start_element (GsfXMLIn *state, xmlChar const *name, xmlChar const **attrs)
+{
+	GSList *ptr, *elem;
+	GsfXMLInNSInstance *inst;
+	GsfXMLInNodeGroup  *group;
+	GsfXMLInNode	   *node;
+	GsfXMLInNS const   *ns, *default_ns = state->default_ns;
+	xmlChar const **ns_ptr;
+	char const *tmp;
+	int i;
+	gboolean check_unknown_handler = TRUE;
+
+	/* Scan for namespace declarations.  Yes it is ugly to have the api
+	 * flag that its children can declare namespaces. However, given that a
+	 * we need to know which namespace we are in before we can recognize
+	 * the current node there is no choice.
+	 * eg <gnm:Workbook xmlns:gnm="www.gnumeric.org"/> we can not know
+	 * that we are in node 'Workbook' without recognizing ns=gnm, which we
+	 * would not do unless we checked for a namespace */
+	ns = state->doc->ns;
+	if (ns != NULL && state->node->check_children_for_ns) {
+		for (ns_ptr = attrs; ns_ptr != NULL && ns_ptr[0] && ns_ptr[1] ; ns_ptr += 2) {
+			if (strncmp (*ns_ptr, "xmlns", 5))
+				continue;
+			if (ns_ptr[0][5] != '\0' && ns_ptr[0][5] != ':')
+				continue;
+			for (i = 0; (tmp = ns[i].uri) != NULL ; i++) {
+				if (strcmp (tmp, ns_ptr[1]))
+					continue;
+
+				if (ns_ptr[0][5] == '\0') {
+					default_ns = ns + i;
+					break;
+				}
+
+				inst = g_hash_table_lookup (state->ns_prefixes, ns_ptr[0] + 6);
+				if (inst == NULL) {
+					inst = g_new0 (GsfXMLInNSInstance, 1);
+					inst->tag    = g_strconcat (ns_ptr[0] + 6, ":", NULL);
+					inst->taglen = strlen (inst->tag);
+					inst->ref_count = 1;
+					g_hash_table_insert (state->ns_prefixes, inst->tag, inst);
+
+					if (ns[i].ns_id >= state->ns_by_id->len)
+						g_ptr_array_set_size  (state->ns_by_id, ns[i].ns_id+1);
+					if (g_ptr_array_index (state->ns_by_id, ns[i].ns_id)) {
+						g_warning ("Damn.  Someone just declared the same namespace '%s' with a different prefix '%s'",
+							   ns[i].uri, inst->tag);
+					} else
+						g_ptr_array_index (state->ns_by_id, ns[i].ns_id) = inst;
+				} else
+					inst->ref_count++;
+				break;
+			}
+		}
+	}
+
+lookup_child :
+	for (ptr = state->node->groups ; ptr != NULL ; ptr = ptr->next) {
+		group = ptr->data;
+		/* does the namespace match */
+		if (group->ns != NULL && group->ns != default_ns) {
+			g_return_if_fail (state->ns_by_id->len > group->ns->ns_id);
+			inst = g_ptr_array_index (state->ns_by_id, group->ns->ns_id);
+			if (inst == NULL || 0 != strncmp (name, inst->tag, inst->taglen))
+				continue;
+			tmp = name + inst->taglen;
+		} else {
+#if 0
+			g_return_if_fail (state->ns_by_id->len > group->ns->ns_id);
+			inst = g_ptr_array_index (state->ns_by_id, group->ns->ns_id);
+			g_warning ("accepted ns = '%s' looking for '%s'", inst->tag, name);
+#endif
+			tmp = name;
+		}
+		for (elem = group->elem ; elem != NULL ; elem = elem->next) {
+			node = elem->data;
+			if (node->name == NULL || !strcmp (tmp, node->name)) {
+				if (node->has_content == GSF_XML_CONTENT &&
+				    state->content->len > 0) {
+					g_warning ("too lazy to support nested unshared content for now.  We'll add it for 2.0");
+				}
+				state->state_stack = g_slist_prepend (state->state_stack,
+								      (gpointer)state->node);
+				state->ns_stack = g_slist_prepend (state->ns_stack,
+								   (gpointer)state->default_ns);
+				state->node = node;
+				state->default_ns = default_ns;
+				if (node->start != NULL)
+					node->start (state, attrs);
+				return;
+			}
+		}
+	}
+
+	if (check_unknown_handler) {
+		check_unknown_handler = FALSE; /* only loop once */
+		if (state->doc->unknown_handler != NULL &&
+		    (state->doc->unknown_handler) (state, name, attrs))
+			goto lookup_child;
+	}
+	if (state->unknown_depth++)
+		return;
+	g_warning ("Unexpected element '%s' in state %s.", name, node_name (state->node));
+	{
+		GSList *ptr;
+		GsfXMLInNode *node;
+		ptr = state->state_stack = g_slist_reverse (state->state_stack);
+		for (;ptr != NULL && ptr->next != NULL; ptr = ptr->next) {
+			node = ptr->data;
+			if (node != NULL) {
+/* FIXME FIXME FIXME if we really want this do we also want namespaces ? */
+				g_print ("%s", node_name (node));
+				if (ptr->next != NULL && ptr->next->data != NULL)
+					g_print (" -> ");
+			}
+		}
+		state->state_stack = g_slist_reverse (state->state_stack);
+	}
+}
+
+static void
+gsf_xml_in_end_element (GsfXMLIn *state,
+			G_GNUC_UNUSED xmlChar const *name)
+{
+	if (state->unknown_depth > 0) {
+		state->unknown_depth--;
+		return;
+	}
+
+	g_return_if_fail (state->state_stack != NULL);
+	g_return_if_fail (state->ns_stack != NULL);
+
+	if (state->node->end)
+		state->node->end (state, NULL);
+	if (state->node->has_content == GSF_XML_CONTENT)
+		g_string_truncate (state->content, 0);
+
+	/* pop the state stack */
+	state->node	   = state->state_stack->data;
+	state->state_stack = g_slist_remove (state->state_stack, state->node);
+	state->default_ns = state->ns_stack->data;
+	state->ns_stack   = g_slist_remove (state->ns_stack, state->default_ns);
+}
+
+static void
+gsf_xml_in_characters (GsfXMLIn *state, const xmlChar *chars, int len)
+{
+	if (state->node->has_content != GSF_XML_NO_CONTENT)
+		g_string_append_len (state->content, chars, len);
+}
+
+static xmlEntityPtr
+gsf_xml_in_get_entity (G_GNUC_UNUSED GsfXMLIn *state, const xmlChar *name)
+{
+	return xmlGetPredefinedEntity (name);
+}
+
+static void
+gsf_xml_in_start_document (GsfXMLIn *state)
+{
+	state->node = state->doc->root;
+	state->unknown_depth = 0;
+	state->state_stack = NULL;
+	state->ns_stack    = NULL;
+	state->default_ns  = NULL;
+	state->ns_by_id    = g_ptr_array_new ();
+	state->ns_prefixes = g_hash_table_new_full (g_str_hash, g_str_equal,
+		NULL, g_free);
+}
+
+static void
+gsf_xml_in_end_document (GsfXMLIn *state)
+{
+	g_string_free (state->content, TRUE);
+	state->content = NULL;
+
+	g_return_if_fail (state->node == state->doc->root);
+	g_return_if_fail (state->unknown_depth == 0);
+
+	g_ptr_array_free (state->ns_by_id, TRUE);
+	state->ns_by_id = NULL;
+
+	g_hash_table_destroy (state->ns_prefixes);
+	state->ns_prefixes = NULL;
+}
+
+static void
+gsf_xml_in_warning (G_GNUC_UNUSED GsfXMLIn *state, char const *msg, ...)
+{
+	va_list args;
+
+	va_start (args, msg);
+	g_logv ("XML", G_LOG_LEVEL_WARNING, msg, args);
+	va_end (args);
+}
+
+static void
+gsf_xml_in_error (G_GNUC_UNUSED GsfXMLIn *state, char const *msg, ...)
+{
+	va_list args;
+
+	va_start (args, msg);
+	g_logv ("XML", G_LOG_LEVEL_CRITICAL, msg, args);
+	va_end (args);
+}
+
+static void
+gsf_xml_in_fatal_error (G_GNUC_UNUSED GsfXMLIn *state, char const *msg, ...)
+{
+	va_list args;
+
+	va_start (args, msg);
+	g_logv ("XML", G_LOG_LEVEL_ERROR, msg, args);
+	va_end (args);
+}
+
+static xmlSAXHandler gsfXMLInParser = {
+	NULL, /* internalSubset */
+	NULL, /* isStandalone */
+	NULL, /* hasInternalSubset */
+	NULL, /* hasExternalSubset */
+	NULL, /* resolveEntity */
+	(getEntitySAXFunc)gsf_xml_in_get_entity, /* getEntity */
+	NULL, /* entityDecl */
+	NULL, /* notationDecl */
+	NULL, /* attributeDecl */
+	NULL, /* elementDecl */
+	NULL, /* unparsedEntityDecl */
+	NULL, /* setDocumentLocator */
+	(startDocumentSAXFunc)gsf_xml_in_start_document, /* startDocument */
+	(endDocumentSAXFunc)gsf_xml_in_end_document, /* endDocument */
+	(startElementSAXFunc)gsf_xml_in_start_element, /* startElement */
+	(endElementSAXFunc)gsf_xml_in_end_element, /* endElement */
+	NULL, /* reference */
+	(charactersSAXFunc)gsf_xml_in_characters, /* characters */
+	NULL, /* ignorableWhitespace */
+	NULL, /* processingInstruction */
+	NULL, /* comment */
+	(warningSAXFunc)gsf_xml_in_warning, /* warning */
+	(errorSAXFunc)gsf_xml_in_error, /* error */
+	(fatalErrorSAXFunc)gsf_xml_in_fatal_error, /* fatalError */
+	NULL, /* getParameterEntity */
+	NULL, /* cdataBlock */
+	NULL, /* externalSubset */
+	0
+#if LIBXML_VERSION >= 20600
+	,
+	NULL, NULL, NULL
+#if LIBXML_VERSION >= 20602
+	,
+	NULL /* serror */
+#endif
+#endif
+};
+
+/**
+ * gsf_xml_in_doc_new :
+ * @root : an array of node descriptors
+ * @ns : an array of namespace identifiers
+ *
+ * Put the nodes in the NULL terminated array starting at @root and the name
+ * spaces in the NULL terminated array starting at @ns together.  Link them up
+ * and prepare the static data structures necessary to validate a doument based
+ * on that description.
+ *
+ * Returns NULL on error
+ **/
+GsfXMLInDoc *
+gsf_xml_in_doc_new (GsfXMLInNode *root, GsfXMLInNS *ns)
+{
+	GsfXMLInDoc  *doc;
+	unsigned i;
+
+	if (root->parent_initialized)
+		return NULL;
+
+	doc = g_new0 (GsfXMLInDoc, 1);
+	doc->root     = root;
+	doc->ns       = ns;
+	doc->ns_by_id = g_ptr_array_new ();
+
+	/* Add namespaces to an idex */
+	if (ns != NULL) {
+		for (i = 0; ns[i].uri != NULL ; i++) {
+			if (ns[i].ns_id >= doc->ns_by_id->len)
+				g_ptr_array_set_size  (doc->ns_by_id, ns[i].ns_id+1);
+			g_ptr_array_index (doc->ns_by_id, ns[i].ns_id) = ns+i;
+		}
+	}
+	gsf_xml_in_doc_extend (doc, root);
+	return doc;
+}
+
+void
+gsf_xml_in_doc_extend (GsfXMLInDoc  *doc,
+		       GsfXMLInNode *extension_nodes)
+{
+	GsfXMLInNode *tmp, *real_node, *node;
+	GHashTable   *symbols = g_hash_table_new (g_str_hash, g_str_equal);
+
+	g_return_if_fail (doc != NULL);
+	g_return_if_fail (extension_nodes != NULL);
+
+	if (extension_nodes->parent_initialized)
+		return;
+	for (node = extension_nodes; node->id != NULL ; node++ ) {
+		g_return_if_fail (!node->parent_initialized);
+
+		tmp = g_hash_table_lookup (symbols, node->id);
+		if (tmp != NULL) {
+			/* if its empty then this is just a recusion */
+			if (node->start != NULL || node->end != NULL ||
+			    node->has_content != GSF_XML_NO_CONTENT || node->user_data.v_int != 0) {
+				g_warning ("ID '%s' has already been registered.\n"
+					   "The additional decls should not specify start,end,content,data", node->id);
+				return;
+			}
+			real_node = tmp;
+		} else {
+			/* be anal, the macro probably initialized this, but do it just in case */
+			node->groups = NULL;
+			g_hash_table_insert (symbols, (gpointer)node->id, node);
+			real_node = node;
+		}
+
+		tmp = g_hash_table_lookup (symbols, node->parent_id);
+		if (tmp != NULL) {
+			GSList *ptr;
+			GsfXMLInNodeGroup *group = NULL;
+			GsfXMLInNS const *ns = NULL;
+			
+			ns = (real_node->ns_id < 0) ? NULL
+				: g_ptr_array_index (doc->ns_by_id,
+						     real_node->ns_id);
+			for (ptr = tmp->groups; ptr != NULL ; ptr = ptr->next) {
+				group = ptr->data;
+				if (group->ns == ns)
+					break;
+			}
+			if (ptr == NULL) {
+				group = g_new0 (GsfXMLInNodeGroup, 1);
+				group->ns = ns;
+				tmp->groups = g_slist_prepend (tmp->groups, group);
+			}
+			group->elem = g_slist_prepend (group->elem, real_node);
+		} else if (strcmp (node->id, node->parent_id)) {
+			g_warning ("Parent ID '%s' unknown", node->parent_id);
+			return;
+		}
+
+		/* WARNING VILE HACK :
+		 * The api in 1.8.2 passed has_content as a boolean.  It's too
+		 * late to change it but we need more contol.  We edit the bool
+		 * here to be GSF_CONTENT_NONE, GSF_CONTENT_ROOT and add a
+		 * mechanism to edit the flag later */
+		if (node->has_content != 0 &&
+		    node->has_content != GSF_XML_SHARED_CONTENT)
+			node->has_content = GSF_XML_CONTENT;
+
+		node->parent_initialized = TRUE;
+	}
+
+	g_hash_table_destroy (symbols);
+}
+
+/**
+ * gsf_xml_in_doc_set_unknown_handler:
+ * @doc : #GsfXMLInDoc
+ * @handler : The function to call
+ *
+ * Call the function @handler when an unexpected child node is found
+ **/
+void
+gsf_xml_in_doc_set_unknown_handler (GsfXMLInDoc *doc,
+				    GsfXMLInUnknownFunc handler)
+{
+	g_return_if_fail (doc != NULL);
+	doc->unknown_handler = handler;
+}
+
+/**
+ * gsf_xml_in_doc_free :
+ * @doc :
+ *
+ * Free up resources
+ **/
+void
+gsf_xml_in_doc_free (GsfXMLInDoc *doc)
+{
+	GSList *ptr;
+	GsfXMLInNode *node;
+	GsfXMLInNodeGroup *group;
+
+	g_return_if_fail (doc != NULL);
+	g_return_if_fail (doc->root != NULL);
+	g_return_if_fail (doc->ns_by_id != NULL);
+
+	for (node = doc->root; node->id != NULL ; node++ ) {
+		for (ptr = node->groups; ptr != NULL ; ptr = ptr->next) {
+			group = ptr->data;
+			g_slist_free (group->elem);
+			g_free (group);
+		}
+		g_slist_free (node->groups);
+		node->groups = NULL;
+	}
+
+	g_ptr_array_free (doc->ns_by_id, TRUE);
+	g_free (doc);
+}
+
+/**
+ * gsf_xml_in_parse :
+ * @state :
+ * @input :
+ *
+ * Read an xml document from @input and parse based on the the descriptor in
+ * @state::doc
+ *
+ * returns FALSE on error
+ **/
+gboolean
+gsf_xml_in_parse (GsfXMLIn *state, GsfInput *input)
+{
+	xmlParserCtxt *ctxt;
+	gboolean res;
+
+	g_return_val_if_fail (state != NULL, FALSE);
+	g_return_val_if_fail (state->doc != NULL, FALSE);
+	g_return_val_if_fail (GSF_IS_INPUT (input), FALSE);
+
+	ctxt = gsf_xml_parser_context_full (input, &gsfXMLInParser, state);
+
+	g_return_val_if_fail (ctxt != NULL, FALSE);
+
+	state->content = g_string_sized_new (128);
+	xmlParseDocument (ctxt);
+	res = ctxt->wellFormed;
+	xmlFreeParserCtxt (ctxt);
+
+	return res;
+}
+
+/**
+ * gsf_xml_in_check_ns :
+ * @state :
+ * @str :
+ * @ns_id :
+ * 
+ * According to @state is @str in the namespace @ns_id ?
+ *
+ * Returns a pointer to @str after the namespace if successful,
+ * otherwise NULL.
+ **/
+char const *
+gsf_xml_in_check_ns (GsfXMLIn const *state, char const *str, unsigned int ns_id)
+{
+	GsfXMLInNSInstance *inst;
+	if (state->ns_by_id->len <= ns_id)
+		return NULL;
+	if (NULL == (inst = g_ptr_array_index (state->ns_by_id, ns_id)))
+		return NULL;
+	if (strncmp (str, inst->tag, inst->taglen))
+		return NULL;
+	return str + inst->taglen;
+}
+
+/**
+ * gsf_xml_in_namecmp :
+ * @state : The #GsfXMLIn we are reading from.
+ * @str   : The potentially namespace qualified node name.
+ * @ns_id : The name space id to check
+ * @name  : The target node name
+ *
+ * Returns TRUE if @str == @ns_id:@name according to @state.
+ **/
+gboolean
+gsf_xml_in_namecmp (GsfXMLIn const *state, char const *str,
+		    unsigned int ns_id, char const *name)
+{
+	GsfXMLInNSInstance *inst;
+	if (state->ns_by_id->len <= ns_id)
+		return FALSE;
+	if (NULL == (inst = g_ptr_array_index (state->ns_by_id, ns_id)))
+		return FALSE;
+	if (strncmp (str, inst->tag, inst->taglen))
+		return FALSE;
+	return 0 == strcmp (name, str + inst->taglen);
+}
+
+/****************************************************************************/
+
+typedef enum {
+	GSF_XML_OUT_NOCONTENT,
+	GSF_XML_OUT_CHILD,
+	GSF_XML_OUT_CONTENT
+} GsfXMLOutState;
+
+struct _GsfXMLOut {
+	GObject	   base;
+
+	GsfOutput	 *output;
+	char		 *doc_type;
+	GSList		 *stack;
+	GsfXMLOutState state;
+	unsigned   	  indent;
+	gboolean	  needs_header;
+};
+
+typedef struct {
+	GObjectClass  base;
+} GsfXMLOutClass;
+
+static void
+gsf_xml_out_finalize (GObject *obj)
+{
+	GsfXMLOut *xml = GSF_XML_OUT (obj);
+
+	g_free (xml->doc_type);
+
+	parent_class->finalize (obj);
+}
+
+static void
+gsf_xml_out_init (GObject *obj)
+{
+	GsfXMLOut *xml = GSF_XML_OUT (obj);
+	xml->output = NULL;
+	xml->stack  = NULL;
+	xml->state  = GSF_XML_OUT_CHILD;
+	xml->indent = 0;
+	xml->needs_header = TRUE;
+	xml->doc_type = NULL;
+}
+
+static void
+gsf_xml_out_class_init (GObjectClass *gobject_class)
+{
+	gobject_class->finalize = gsf_xml_out_finalize;
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfXMLOut, gsf_xml_out,
+	   gsf_xml_out_class_init, gsf_xml_out_init,
+	   G_TYPE_OBJECT)
+
+GsfXMLOut *
+gsf_xml_out_new (GsfOutput *output)
+{
+	GsfXMLOut *xml = g_object_new (GSF_XML_OUT_TYPE, NULL);
+	if (!gsf_output_wrap (G_OBJECT (xml), output))
+		return NULL;
+	xml->output = output;
+	return xml;
+}
+
+/**
+ * gsf_xml_out_set_doc_type :
+ * @xml : #GsfXMLOut
+ * @type :
+ * 
+ * Store some optional some &lt;!DOCTYPE .. &gt; content
+ **/
+void
+gsf_xml_out_set_doc_type (GsfXMLOut *xml, char const *type)
+{
+	g_free (xml->doc_type);
+	xml->doc_type = g_strdup (type);
+}
+
+static inline void
+gsf_xml_out_indent (GsfXMLOut *xml)
+{
+	static char const spaces [] =
+		"                                        "
+		"                                        "
+		"                                        "
+		"                                        "
+		"                                        "
+		"                                        ";
+	unsigned i;
+	for (i = xml->indent ; i > (sizeof (spaces)/2) ; i -= sizeof (spaces)/2)
+		gsf_output_write (xml->output, sizeof (spaces) - 1, spaces);
+	gsf_output_write (xml->output, i*2, spaces);
+}
+
+/**
+ * gsf_xml_out_start_elem :
+ * @xml :
+ * @id  :
+ */
+void
+gsf_xml_out_start_element (GsfXMLOut *xml, char const *id)
+{
+	g_return_if_fail (id != NULL);
+	g_return_if_fail (xml != NULL);
+	g_return_if_fail (xml->state != GSF_XML_OUT_CONTENT);
+
+	if (xml->needs_header) {
+		static char const header0[] =
+			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+		gsf_output_write (xml->output, sizeof (header0) - 1, header0);
+		if (xml->doc_type != NULL)
+			gsf_output_puts (xml->output, xml->doc_type);
+		xml->needs_header = FALSE;
+	}
+	if (xml->state == GSF_XML_OUT_NOCONTENT)
+		gsf_output_write (xml->output, 2, ">\n");
+
+	gsf_xml_out_indent (xml);
+	gsf_output_printf (xml->output, "<%s", id);
+
+	xml->stack = g_slist_prepend (xml->stack, (gpointer)id);
+	xml->indent++;
+	xml->state = GSF_XML_OUT_NOCONTENT;
+}
+
+/**
+ * gsf_xml_out_end_elem :
+ * @xml :
+ */
+char const *
+gsf_xml_out_end_element (GsfXMLOut *xml)
+{
+	char const *id;
+
+	g_return_val_if_fail (xml != NULL, NULL);
+	g_return_val_if_fail (xml->stack != NULL, NULL);
+
+	id = xml->stack->data;
+	xml->stack = g_slist_remove (xml->stack, id);
+	xml->indent--;
+	switch (xml->state) {
+	case GSF_XML_OUT_NOCONTENT :
+		gsf_output_write (xml->output, 3, "/>\n");
+		break;
+
+	case GSF_XML_OUT_CHILD :
+		gsf_xml_out_indent (xml);
+	/* fall through */
+	case GSF_XML_OUT_CONTENT :
+		gsf_output_printf (xml->output, "</%s>\n", id);
+	}
+	xml->state = GSF_XML_OUT_CHILD;
+	return id;
+}
+
+/**
+ * gsf_xml_out_simple_element :
+ * @xml :
+ * @id  :
+ * @content :
+ *
+ * A convenience routine
+ **/
+void
+gsf_xml_out_simple_element (GsfXMLOut *xml, char const *id,
+			    char const *content)
+{
+	gsf_xml_out_start_element (xml, id);
+	if (content != NULL)
+		gsf_xml_out_add_cstr (xml, NULL, content);
+	gsf_xml_out_end_element (xml);
+}
+
+/**
+ * gsf_xml_out_simple_int_element :
+ * @xml :
+ * @id  :
+ * @val :
+ *
+ * A convenience routine
+ **/
+void
+gsf_xml_out_simple_int_element (GsfXMLOut *xml, char const *id, int val)
+{
+	gsf_xml_out_start_element (xml, id);
+	gsf_xml_out_add_int (xml, NULL, val);
+	gsf_xml_out_end_element (xml);
+}
+
+/**
+ * gsf_xml_out_simple_float_element :
+ * @xml :
+ * @id  :
+ * @val :
+ * @precision :
+ *
+ * A convenience routine
+ **/
+void
+gsf_xml_out_simple_float_element (GsfXMLOut *xml, char const *id,
+				  double val, int precision)
+{
+	gsf_xml_out_start_element (xml, id);
+	gsf_xml_out_add_float (xml, NULL, val, precision);
+	gsf_xml_out_end_element (xml);
+}
+
+static void
+close_tag_if_neccessary (GsfXMLOut* xml)
+{
+	if (xml->state != GSF_XML_OUT_CONTENT) {
+		xml->state = GSF_XML_OUT_CONTENT;
+		gsf_output_write (xml->output, 1, ">");
+	}
+}
+
+/**
+ * gsf_xml_out_add_cstr_unchecked :
+ * @xml :
+ * @id : optionally NULL for content
+ * @val_utf8 : a utf8 encoded string to export
+ *
+ * dump @val_utf8 to an attribute named @id without checking to see if the
+ * content needs escaping.  A useful performance enhancement when the
+ * application knows that structure of the content well.  If @val_utf8 is NULL
+ * do nothing (no warning, no output)
+ **/
+void
+gsf_xml_out_add_cstr_unchecked (GsfXMLOut *xml, char const *id,
+				char const *val_utf8)
+{
+	g_return_if_fail (xml != NULL);
+
+	if (val_utf8 == NULL)
+		return;
+
+	if (id == NULL) {
+		close_tag_if_neccessary (xml);
+		gsf_output_write (xml->output, strlen (val_utf8), val_utf8);
+	} else
+		gsf_output_printf (xml->output, " %s=\"%s\"", id, val_utf8);
+}
+
+/**
+ * gsf_xml_out_add_cstr :
+ * @xml :
+ * @id : optionally NULL for content
+ * @val_utf8 : a utf8 encoded string
+ *
+ * dump @val_utf8 to an attribute named @id or as the nodes content escaping
+ * characters as necessary.  If @val_utf8 is NULL do nothing (no warning, no
+ * output)
+ **/
+void
+gsf_xml_out_add_cstr (GsfXMLOut *xml, char const *id,
+		      char const *val_utf8)
+{
+	guint8 const *cur   = val_utf8;
+	guint8 const *start = val_utf8;
+
+	g_return_if_fail (xml != NULL);
+
+	if (val_utf8 == NULL)
+		return;
+
+	if (id == NULL) {
+		close_tag_if_neccessary (xml);
+	} else
+		gsf_output_printf (xml->output, " %s=\"", id);
+	while (*cur != '\0') {
+		if (*cur == '<') {
+			if (cur != start)
+				gsf_output_write (xml->output, cur-start, start);
+			start = ++cur;
+			gsf_output_write (xml->output, 4, "&lt;");
+		} else if (*cur == '>') {
+			if (cur != start)
+				gsf_output_write (xml->output, cur-start, start);
+			start = ++cur;
+			gsf_output_write (xml->output, 4, "&gt;");
+		} else if (*cur == '&') {
+			if (cur != start)
+				gsf_output_write (xml->output, cur-start, start);
+			start = ++cur;
+			gsf_output_write (xml->output, 5, "&amp;");
+		} else if (*cur == '"') {
+			if (cur != start)
+				gsf_output_write (xml->output, cur-start, start);
+			start = ++cur;
+			gsf_output_write (xml->output, 6, "&quot;");
+		} else if (*cur < 0x20 && id != NULL) {
+			guint8 buf[8];
+			sprintf (buf, "&#%d;", *cur);
+
+			if (cur != start)
+				gsf_output_write (xml->output, cur-start, start);
+			start = ++cur;
+
+			gsf_output_write (xml->output, strlen (buf), buf);
+		} else if (((*cur >= 0x20) && (*cur != 0x7f)) ||
+			   (*cur == '\n') || (*cur == '\r') || (*cur == '\t')) {
+			cur++;
+		} else {
+			g_warning ("Unknown char 0x%hhx in string", *cur);
+			cur++;
+		}
+	}
+	if (cur != start)
+		gsf_output_write (xml->output, cur-start, start);
+	if (id != NULL)
+		gsf_output_write (xml->output, 1, "\"");
+}
+
+/**
+ * gsf_xml_out_add_bool :
+ * @xml :
+ * @id  : optionally NULL for content
+ * @val : a boolean
+ *
+ * dump boolean value @val to an attribute named @id or as the nodes content
+ * Use '1' or '0' to simplify import
+ **/
+void
+gsf_xml_out_add_bool (GsfXMLOut *xml, char const *id,
+		      gboolean val)
+{
+	gsf_xml_out_add_cstr_unchecked (xml, id,
+					val ? "1" : "0");
+}
+
+/**
+ * gsf_xml_out_add_int :
+ * @xml :
+ * @id  : optionally NULL for content
+ * @val : the value
+ *
+ * dump integer value @val to an attribute named @id or as the nodes content
+ **/
+void
+gsf_xml_out_add_int (GsfXMLOut *xml, char const *id,
+		     int val)
+{
+	char buf [4 * sizeof (int)];
+	sprintf (buf, "%d", val);
+	gsf_xml_out_add_cstr_unchecked (xml, id, buf);
+}
+
+/**
+ * gsf_xml_out_add_uint :
+ * @xml :
+ * @id  : optionally NULL for content
+ * @val : the value
+ *
+ * dump unsigned integer value @val to an attribute named @id or as the nodes
+ * content
+ **/
+void
+gsf_xml_out_add_uint (GsfXMLOut *xml, char const *id,
+		      unsigned int val)
+{
+	char buf [4 * sizeof (unsigned int)];
+	sprintf (buf, "%u", val);
+	gsf_xml_out_add_cstr_unchecked (xml, id, buf);
+}
+
+/**
+ * gsf_xml_out_add_float :
+ * @xml :
+ * @id  : optionally NULL for content
+ * @val : the value
+ * @precision : the number of significant digits to use, -1 meaning "enough".
+ *
+ * dump float value @val to an attribute named @id or as the nodes
+ * content with precision @precision.  The number will be formattted
+ * according to the "C" locale.
+ **/
+void
+gsf_xml_out_add_float (GsfXMLOut *xml, char const *id,
+		       double val, int precision)
+{
+	char format_str[4 * sizeof (int) + 10];
+	char buf[G_ASCII_DTOSTR_BUF_SIZE + DBL_DIG];
+
+	if (precision < 0 || precision > DBL_DIG)
+		precision = DBL_DIG;
+
+	sprintf (format_str, "%%.%dg", precision);
+	g_ascii_formatd (buf, sizeof (buf), format_str, val);
+	gsf_xml_out_add_cstr_unchecked (xml, id, buf);
+}
+
+/**
+ * gsf_xml_out_add_color :
+ * @xml :
+ * @id  : optionally NULL for content
+ * @r :
+ * @g :
+ * @b :
+ *
+ * dump Color @r. at g.@b to an attribute named @id or as the nodes content
+ **/
+void
+gsf_xml_out_add_color (GsfXMLOut *xml, char const *id,
+		       unsigned int r, unsigned int g, unsigned int b)
+{
+	char buf [3 * 4 * sizeof (unsigned int) + 1];
+	sprintf (buf, "%X:%X:%X", r, g, b);
+	gsf_xml_out_add_cstr_unchecked (xml, id, buf);
+}
+
+void
+gsf_xml_out_add_enum (GsfXMLOut *xml, char const *id, GType etype, gint val)
+{
+	GEnumClass *eclass = G_ENUM_CLASS (g_type_class_peek (etype));
+	GEnumValue *ev = g_enum_get_value (eclass, val);
+
+	if (ev)
+		gsf_xml_out_add_cstr_unchecked (xml, id, ev->value_name);
+	else
+		g_warning ("Invalid value %d for type %s",
+			   val, g_type_name (etype));
+}
+
+/**
+ * gsf_xml_out_add_base64 :
+ * @xml :
+ * @id  : optionally NULL for content
+ * @data :
+ * @len :
+ *
+ * dump @len bytes in @data into the content of node @id using base64
+ **/
+void
+gsf_xml_out_add_base64 (GsfXMLOut *xml, char const *id,
+			guint8 const *data, unsigned int len)
+{
+	/* We could optimize and stream right to the output,
+	 * or even just keep the buffer around
+	 * for now we start simple */
+	guint8 *tmp = gsf_base64_encode_simple (data, len);
+	if (tmp == NULL)
+		return;
+	if (id != NULL)
+		g_warning ("Stream a binary blob into an attribute ??");
+	gsf_xml_out_add_cstr_unchecked (xml, id, tmp);
+	g_free (tmp);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-libxml.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,174 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-libxml.h: Utility wrappers for using gsf with libxml
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_LIBXML_H
+#define GSF_LIBXML_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+#include <libxml/tree.h>
+
+G_BEGIN_DECLS
+
+/****************************************************************************/
+/* GSF wrappers for libxml2 */
+xmlParserCtxt *gsf_xml_parser_context (GsfInput   *input);
+#if 0
+				       /* this is cleaner, tack it on for 2.0 */
+					xmlSAXHandlerPtr sax, gpointer user);
+#endif
+int	       gsf_xmlDocFormatDump   (GsfOutput  *output,
+				       xmlDoc	  *cur,
+				       char const *encoding,
+				       gboolean    format);
+
+/****************************************************************************/
+/* Simplified GSF based xml import (based on libxml2 SAX) */
+typedef struct _GsfXMLBlob	GsfXMLBlob;
+
+typedef struct _GsfXMLIn	GsfXMLIn;
+typedef struct _GsfXMLInDoc	GsfXMLInDoc;
+typedef struct _GsfXMLInNode	GsfXMLInNode;
+typedef struct _GsfXMLInNS	GsfXMLInNS;
+
+typedef enum {
+	GSF_XML_NO_CONTENT,
+	GSF_XML_CONTENT,
+	GSF_XML_SHARED_CONTENT
+} GsfXMLContent;
+
+typedef gboolean (*GsfXMLInUnknownFunc) (GsfXMLIn *state, xmlChar const *elem, xmlChar const **attrs);
+struct _GsfXMLIn {
+	GsfXMLInDoc  const *doc;	/* init before parsing */
+
+    /* look but do not change */
+	GsfXMLInNode const *node;	/* current node */
+	GSList	 	   *state_stack;
+
+	GsfXMLInNS   const *default_ns;	/* optionally NULL */
+	GSList	 	   *ns_stack;
+
+	GString		*content;
+	gint		 unknown_depth;	/* handle recursive unknown tags */
+	GHashTable	*ns_prefixes;	/* current ns prefixes */
+	GPtrArray	*ns_by_id;		/* indexed by id */
+};
+
+struct _GsfXMLInNode {
+	char const *id;
+	int	    ns_id;
+	char const *name;
+	char const *parent_id;
+	gboolean parent_initialized;
+	GSList *groups;
+
+	unsigned	has_content;
+	gboolean	deprecated_unused_allow_unknown; /* remains here for binary compat */
+	gboolean	check_children_for_ns;
+
+	void (*start) (GsfXMLIn *state, xmlChar const **attrs);
+	void (*end)   (GsfXMLIn *state, GsfXMLBlob *unknown);
+
+	union {
+		int	    v_int;
+		gboolean    v_bool;
+		gpointer    v_blob;
+		char const *v_str;
+	} user_data;
+};
+
+struct _GsfXMLInNS {
+	char const *uri;
+	unsigned    ns_id;
+};
+
+#define GSF_XML_IN_NS(id, uri) \
+{ uri, id}
+
+#define GSF_XML_IN_NODE_FULL(parent_id, id, ns, name, has_content, 	\
+			     deprecated_unused_allow_unknown, check_ns, start, end, user)	\
+{									\
+	#id, ns, name, #parent_id, FALSE, NULL,				\
+	has_content, deprecated_unused_allow_unknown, check_ns, start, end, { user } 	\
+}
+
+#define GSF_XML_IN_NODE(parent_id, id, ns, name, has_content, start, end) \
+	GSF_XML_IN_NODE_FULL(parent_id, id, ns, name, has_content,	  \
+			     FALSE, FALSE, start, end, 0)
+
+GsfXMLInDoc *gsf_xml_in_doc_new	 (GsfXMLInNode *root, GsfXMLInNS *ns);
+void	     gsf_xml_in_doc_free (GsfXMLInDoc *doc);
+void	     gsf_xml_in_doc_extend (GsfXMLInDoc  *doc,
+				    GsfXMLInNode *nodes);
+void	     gsf_xml_in_doc_set_unknown_handler (GsfXMLInDoc *doc,
+						 GsfXMLInUnknownFunc handler);
+
+gboolean    gsf_xml_in_parse	 (GsfXMLIn *state, GsfInput *input);
+char const *gsf_xml_in_check_ns	 (GsfXMLIn const *state, char const *str,
+				  unsigned int ns_id);
+gboolean    gsf_xml_in_namecmp	 (GsfXMLIn const *state, char const *str,
+				  unsigned int ns_id, char const *name);
+
+/****************************************************************************/
+/* Simplified GSF based xml export (does not use libxml) */
+
+typedef struct _GsfXMLOut	GsfXMLOut;
+
+#define GSF_XML_OUT_TYPE	(gsf_xml_out_get_type ())
+#define GSF_XML_OUT(o)		(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_XML_OUT_TYPE, GsfXMLOut))
+#define GSF_IS_XML_OUT(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_XML_OUT_TYPE))
+
+GType gsf_xml_out_get_type (void);
+GsfXMLOut *gsf_xml_out_new (GsfOutput *output);
+
+void	    gsf_xml_out_set_doc_type	(GsfXMLOut *xml, char const *type);
+void	    gsf_xml_out_start_element	(GsfXMLOut *xml, char const *id);
+char const *gsf_xml_out_end_element	(GsfXMLOut *xml);
+
+void gsf_xml_out_simple_element		(GsfXMLOut *xml, char const *id,
+					 char const *content);
+void gsf_xml_out_simple_int_element	(GsfXMLOut *xml, char const *id,
+					 int val);
+void gsf_xml_out_simple_float_element	(GsfXMLOut *xml, char const *id,
+					 double val, int precision);
+
+void gsf_xml_out_add_cstr_unchecked	(GsfXMLOut *xml, char const *id,
+					 char const *val_utf8);
+void gsf_xml_out_add_cstr		(GsfXMLOut *xml, char const *id,
+					 char const *val_utf8);
+void gsf_xml_out_add_bool		(GsfXMLOut *xml, char const *id,
+					 gboolean val);
+void gsf_xml_out_add_int		(GsfXMLOut *xml, char const *id,
+					 int val);
+void gsf_xml_out_add_uint		(GsfXMLOut *xml, char const *id,
+					 unsigned int val);
+void gsf_xml_out_add_float		(GsfXMLOut *xml, char const *id,
+					 double val, int precision);
+void gsf_xml_out_add_color		(GsfXMLOut *xml, char const *id,
+					 unsigned int r, unsigned int g, unsigned int b);
+void gsf_xml_out_add_base64		(GsfXMLOut *xml, char const *id,
+					 guint8 const *data, unsigned int len);
+void gsf_xml_out_add_enum               (GsfXMLOut *xml, char const *id,
+					 GType etype, gint val);
+
+G_END_DECLS
+
+#endif /* GSF_LIBXML_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-meta-names.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-meta-names.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-meta-names.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,182 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-meta-names.h: a list of gsf-meta-names to "generically" represent 
+ *                   all diviserly available implementation-specific
+ *                   meta-names.
+ *
+ * Author:  Veerapuram Varadhan (vvaradhan at novell.com)
+ *
+ * Copyright (C) 2004 Novell, Inc
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#ifndef GSF_META_NAMES_H
+#define GSF_META_NAMES_H
+
+/* (String) A formal name given to the resource */
+#define GSF_META_NAME_TITLE                 "dc:title"
+
+/* (String) An account of the content of the resource */
+#define GSF_META_NAME_DESCRIPTION           "dc:description"
+
+/* (String) The topic of the content of the resource, *typically* including keywords */
+#define GSF_META_NAME_SUBJECT               "dc:subject"
+
+/* (Date as ISO String) The last time this document was saved */
+#define GSF_META_NAME_DATE_MODIFIED         "dc:date-modified"
+
+/* (Date as ISO String) A date associated with an event in the life cycle of the resource (creation/publication date) */
+#define GSF_META_NAME_DATE_CREATED          "gsf:date-created"
+
+/* (String) Searchable, indexable keywords. Similar to PDF keywords or HTML's meta block */
+#define GSF_META_NAME_KEYWORDS              "dc:keywords"
+
+/* (String) A language of the intellectual content of the resource (basically xx_YY form for us) */
+#define GSF_META_NAME_LANGUAGE              "dc:language"
+
+/* (Integer) Count of revision on the document, if appropriate */
+#define GSF_META_NAME_REVISION_COUNT        "gsf:revision-count"
+
+/* (Date as ISO String) The total-time taken till last-modified */
+#define GSF_META_NAME_EDITING_DURATION      "gsf:editing-duration"
+
+/* (Integer) Count of tables in the document, if appropriate */
+#define GSF_META_NAME_TABLE_COUNT           "gsf:table-count"
+
+/* (Integer) Count of images in the document, if appropriate */
+#define GSF_META_NAME_IMAGE_COUNT           "gsf:image-count"
+
+/* (Integer) Count of objects (OLE and other graphics) in the document, if appropriate */
+#define GSF_META_NAME_OBJECT_COUNT          "gsf:object-count"
+
+/* (Integer) Count of pages in the document, if appropriate */
+#define GSF_META_NAME_PAGE_COUNT            "gsf:page-count"
+
+/* (Integer) Count of paragraphs in the document, if appropriate */
+#define GSF_META_NAME_PARAGRAPH_COUNT       "gsf:paragraph-count"
+
+/* (Integer) Count of words in the document */
+#define GSF_META_NAME_WORD_COUNT            "gsf:word-count"
+
+/* (Integer) Count of characters in the document */
+#define GSF_META_NAME_CHARACTER_COUNT       "gsf:character-count"
+
+/* (Integer) Count of cells in the spread-sheet document, if appropriate */
+#define GSF_META_NAME_CELL_COUNT            "gsf:cell-count"
+
+/* (Integer) Count of pages in the document, if appropriate */
+#define GSF_META_NAME_SPREADSHEET_COUNT     "gsf:spreadsheet-count"
+
+/* (String) An entity primarily responsible for making the content of the resource
+ * typically a person, organization, or service
+ */
+#define GSF_META_NAME_CREATOR               "gsf:creator"
+
+/* (String) The template file that is been used to generate this document */
+#define GSF_META_NAME_TEMPLATE              "gsf:template"
+
+/* (String) The entity that made the last change to the document, 
+ * typically a person, organization, or service
+ */
+#define GSF_META_NAME_LAST_SAVED_BY         "gsf:last-saved-by"
+
+/* (Date as ISO String) The last time this document was printed */
+#define GSF_META_NAME_LAST_PRINTED          "gsf:last-printed"
+
+/* (Integer) Level of security.
+ * Level                         Value
+ * -----                         -----
+ * None                            0
+ * Password protected              1
+ * Read-only recommended           2
+ * Read-only enforced              3
+ * Locked for annotations          4
+ *
+ */
+#define GSF_META_NAME_SECURITY              "gsf:security"
+
+/* (String) Category of the document (example???) */
+#define GSF_META_NAME_CATEGORY              "gsf:category"
+
+/* (String) Type of presentation, like "On-screen Show", "SlideView" etc */
+#define GSF_META_NAME_PRESENTATION_FORMAT   "gsf:presentation-format"
+
+/* (Clipboard Format (VT_CF)) Thumbnail data of the document, typically
+ * a preview image of the document
+ */
+#define GSF_META_NAME_THUMBNAIL             "gsf:thumbnail"
+
+/* (String) The creator (product) of this document. AbiWord, Gnumeric, etc...  */
+#define GSF_META_NAME_GENERATOR             "gsf:generator"
+
+/* (Integer) Count of liness in the document */
+#define GSF_META_NAME_LINE_COUNT            "gsf:line-count"
+
+/* (Integer) Count of slides in the presentation document */
+#define GSF_META_NAME_SLIDE_COUNT           "gsf:slide-count"
+
+/* (Integer) Count of "notes" in the document */
+#define GSF_META_NAME_NOTE_COUNT            "gsf:note-count"
+
+/* (Integer) Count of hidden-slides in the presentation document */
+#define GSF_META_NAME_HIDDEN_SLIDE_COUNT    "gsf:hidden-slide-count"
+
+/* (Integer) Count of "multi-media" clips in the document */
+#define GSF_META_NAME_MM_CLIP_COUNT         "gsf:MM-clip-count"
+
+/* (Integer) Count of bytes in the document */
+#define GSF_META_NAME_BYTE_COUNT            "gsf:byte-count"
+
+/* (Boolean) ????? */
+#define GSF_META_NAME_SCALE                 "gsf:scale"
+
+/* (VT_VECTOR|VT_VARIANT) ??????? */
+#define GSF_META_NAME_HEADING_PAIRS         "gsf:heading-pairs"
+
+/* (VT_VECTOR|VT_LPSTR) ??????? */
+#define GSF_META_NAME_DOCUMENT_PARTS        "gsf:document-parts"
+
+/* (String) Name of the manager of "CREATOR" entity */
+#define GSF_META_NAME_MANAGER               "gsf:manager"
+
+/* (String) Name of the company/organization that
+ * the "CREATOR" entity is associated with.
+ */
+#define GSF_META_NAME_COMPANY               "gsf:company"
+
+/* (Boolean) ??????? */
+#define GSF_META_NAME_LINKS_DIRTY           "gsf:links-dirty"
+
+/* (Unknown) User-defined names */
+#define GSF_META_NAME_MSOLE_UNKNOWN_17		"msole:unknown-doc-17"
+#define GSF_META_NAME_MSOLE_UNKNOWN_18		"msole:unknown-doc-18"
+#define GSF_META_NAME_MSOLE_UNKNOWN_19		"msole:unknown-doc-19"	/* bool */
+#define GSF_META_NAME_MSOLE_UNKNOWN_20		"msole:unknown-doc-20"
+#define GSF_META_NAME_MSOLE_UNKNOWN_21		"msole:unknown-doc-21"
+#define GSF_META_NAME_MSOLE_UNKNOWN_22		"msole:unknown-doc-22"	/* bool */
+#define GSF_META_NAME_MSOLE_UNKNOWN_23		"msole:unknown-doc-23"	/* i4 */
+
+/* (None) Reserved name (PID) for Dictionary */
+#define GSF_META_NAME_DICTIONARY            "gsf:dictionary"
+
+/* (Unsigned Integer) Identifier representing the default 
+ * system locale.
+ */
+#define GSF_META_NAME_LOCALE_SYSTEM_DEFAULT	"gsf:default-locale"
+
+/* (Unsigned Integer) Identifier representing the case-sensitiveness */
+#define GSF_META_NAME_CASE_SENSITIVE        "gsf:case-sensitivity"
+
+#endif /* GSF_META_NAMES_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,84 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-msole-impl.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_MSOLE_IMPL_H
+#define GSF_MSOLE_IMPL_H
+
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+#define OLE_HEADER_SIZE		 0x200	/* independent of big block size size */
+#define OLE_HEADER_SIGNATURE	 0x00
+#define OLE_HEADER_CLSID	 0x08	/* See ReadClassStg */
+#define OLE_HEADER_MINOR_VER	 0x18	/* 0x33 and 0x3e have been seen */
+#define OLE_HEADER_MAJOR_VER	 0x1a	/* 0x3 been seen in wild */
+#define OLE_HEADER_BYTE_ORDER	 0x1c	/* 0xfe 0xff == Intel Little Endian */
+#define OLE_HEADER_BB_SHIFT      0x1e
+#define OLE_HEADER_SB_SHIFT      0x20
+/* 0x22..0x27 reserved == 0 */
+#define OLE_HEADER_CSECTDIR	 0x28
+#define OLE_HEADER_NUM_BAT	 0x2c
+#define OLE_HEADER_DIRENT_START  0x30
+/* 0x34..0x37 transacting signature must be 0 */
+#define OLE_HEADER_THRESHOLD	 0x38
+#define OLE_HEADER_SBAT_START    0x3c
+#define OLE_HEADER_NUM_SBAT      0x40
+#define OLE_HEADER_METABAT_BLOCK 0x44
+#define OLE_HEADER_NUM_METABAT   0x48
+#define OLE_HEADER_START_BAT	 0x4c
+#define BAT_INDEX_SIZE		 4
+#define OLE_HEADER_METABAT_SIZE	 ((OLE_HEADER_SIZE - OLE_HEADER_START_BAT) / BAT_INDEX_SIZE)
+
+#define DIRENT_MAX_NAME_SIZE	0x40
+#define DIRENT_DETAILS_SIZE	0x40
+#define DIRENT_SIZE		(DIRENT_MAX_NAME_SIZE + DIRENT_DETAILS_SIZE)
+#define DIRENT_NAME_LEN		0x40	/* length in bytes incl 0 terminator */
+#define DIRENT_TYPE		0x42
+#define DIRENT_COLOUR		0x43
+#define DIRENT_PREV		0x44
+#define DIRENT_NEXT		0x48
+#define DIRENT_CHILD		0x4c
+#define DIRENT_CLSID		0x50	/* only for dirs */
+#define DIRENT_USERFLAGS	0x60	/* only for dirs */
+#define DIRENT_CREATE_TIME	0x64	/* for files */
+#define DIRENT_MODIFY_TIME	0x6c	/* for files */
+#define DIRENT_FIRSTBLOCK	0x74
+#define DIRENT_FILE_SIZE	0x78
+/* 0x7c..0x7f reserved == 0 */
+
+#define DIRENT_TYPE_INVALID	0
+#define DIRENT_TYPE_DIR		1
+#define DIRENT_TYPE_FILE	2
+#define DIRENT_TYPE_LOCKBYTES	3	/* ? */
+#define DIRENT_TYPE_PROPERTY	4	/* ? */
+#define DIRENT_TYPE_ROOTDIR	5
+#define DIRENT_MAGIC_END	0xffffffff
+
+/* flags in the block allocation list to denote special blocks */
+#define BAT_MAGIC_UNUSED	0xffffffff	/*		   -1 */
+#define BAT_MAGIC_END_OF_CHAIN	0xfffffffe	/*		   -2 */
+#define BAT_MAGIC_BAT		0xfffffffd	/* a bat block,    -3 */
+#define BAT_MAGIC_METABAT	0xfffffffc	/* a metabat block -4 */
+
+G_END_DECLS
+
+#endif /* GSF_MSOLE_IMPL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,2228 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-msole-utils.c: 
+ *
+ * Copyright (C) 2002-2005 Jody Goldberg (jody at gnome.org)
+ * Copyright (C) 2002-2005 Dom Lachowicz (cinamod at hotmail.com)
+ * excel_iconv* family of functions (C) 2001 by Vlad Harchev <hvv at hippo.ru>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-docprop-vector.h>
+#include <gsf/gsf-msole-utils.h>
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-output.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-timestamp.h>
+#include <gsf/gsf-meta-names.h>
+#include <gsf/gsf-doc-meta-data.h>
+#include <gsf/gsf-clip-data.h>
+
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include <glib/gi18n-lib.h>
+
+#define NO_DEBUG_OLE_PROPS
+#ifndef NO_DEBUG_OLE_PROPS
+#define d(code)	do { code } while (0)
+#else
+#define d(code)
+#endif
+
+/*
+ * The Format Identifier for Summary Information
+ * F29F85E0-4FF9-1068-AB91-08002B27B3D9
+ */
+static guint8 const component_guid [] = {
+	0xe0, 0x85, 0x9f, 0xf2, 0xf9, 0x4f, 0x68, 0x10,
+	0xab, 0x91, 0x08, 0x00, 0x2b, 0x27, 0xb3, 0xd9
+};
+
+/*
+ * The Format Identifier for Document Summary Information
+ * D5CDD502-2E9C-101B-9397-08002B2CF9AE
+ */
+static guint8 const document_guid [] = {
+	0x02, 0xd5, 0xcd, 0xd5, 0x9c, 0x2e, 0x1b, 0x10,
+	0x93, 0x97, 0x08, 0x00, 0x2b, 0x2c, 0xf9, 0xae
+};
+
+/*
+ * The Format Identifier for User-Defined Properties
+ * D5CDD505-2E9C-101B-9397-08002B2CF9AE
+ */
+static guint8 const user_guid [] = {
+	0x05, 0xd5, 0xcd, 0xd5, 0x9c, 0x2e, 0x1b, 0x10,
+	0x93, 0x97, 0x08, 0x00, 0x2b, 0x2c, 0xf9, 0xae
+};
+
+typedef enum {
+	COMMON_PROP,	/* in either summary or docsummary */
+	COMPONENT_PROP, /* SummaryInformation properties */
+	DOC_PROP,	/* DocumentSummaryInformation properties */
+	USER_PROP
+} GsfMSOleMetaDataType;
+
+typedef enum {
+	VT_EMPTY	   = 0,
+	VT_NULL		   = 1,
+	VT_I2		   = 2,
+	VT_I4		   = 3,
+	VT_R4		   = 4,
+	VT_R8		   = 5,
+	VT_CY		   = 6,
+	VT_DATE		   = 7,
+	VT_BSTR		   = 8,
+	VT_DISPATCH	   = 9,
+	VT_ERROR	   = 10,
+	VT_BOOL		   = 11,
+	VT_VARIANT	   = 12,
+	VT_UNKNOWN	   = 13,
+	VT_DECIMAL	   = 14,
+
+	VT_I1		   = 16,
+	VT_UI1		   = 17,
+	VT_UI2		   = 18,
+	VT_UI4		   = 19,
+	VT_I8		   = 20,
+	VT_UI8		   = 21,
+	VT_INT		   = 22,
+	VT_UINT		   = 23,
+	VT_VOID		   = 24,
+	VT_HRESULT	   = 25,
+	VT_PTR		   = 26,
+	VT_SAFEARRAY	   = 27,
+	VT_CARRAY	   = 28,
+	VT_USERDEFINED	   = 29,
+	VT_LPSTR	   = 30,
+	VT_LPWSTR	   = 31,
+
+	VT_FILETIME	   = 64,
+	VT_BLOB		   = 65,
+	VT_STREAM	   = 66,
+	VT_STORAGE	   = 67,
+	VT_STREAMED_OBJECT = 68,
+	VT_STORED_OBJECT   = 69,
+	VT_BLOB_OBJECT	   = 70,
+	VT_CF		   = 71,
+	VT_CLSID	   = 72,
+	VT_VECTOR	   = 0x1000
+} GsfMSOleVariantType;
+
+typedef struct {
+	char const		*ms_name;
+	GsfMSOleMetaDataType	 section;
+	char const		*gsf_name;
+	guint32			 id;
+	GsfMSOleVariantType	 prefered_type;
+} GsfMSOleMetaDataPropMap;
+
+typedef struct {
+	guint32		id;
+	gsf_off_t	offset;
+} GsfMSOleMetaDataProp;
+
+typedef struct {
+	GsfMSOleMetaDataType type;
+	gsf_off_t   offset;
+	guint32	    size, num_props;
+	GIConv	    iconv_handle;
+	unsigned    char_size;
+	GHashTable *dict;
+} GsfMSOleMetaDataSection;
+
+static GsfMSOleMetaDataPropMap const builtin_props [] = {
+	{ "Dictionary",		  COMMON_PROP,	GSF_META_NAME_DICTIONARY,            0,	   0, /* magic */},
+	{ "CodePage",		  COMMON_PROP,	GSF_META_NAME_LANGUAGE,              1,	   VT_I2 },
+	{ "LOCALE_SYSTEM_DEFAULT",COMMON_PROP,	GSF_META_NAME_LOCALE_SYSTEM_DEFAULT, 0x80000000, VT_UI4},
+	{ "CASE_SENSITIVE",	  COMMON_PROP,	GSF_META_NAME_CASE_SENSITIVE,        0x80000003, VT_UI4},
+	{ "Category",		DOC_PROP,	GSF_META_NAME_CATEGORY,             2,	VT_LPSTR },
+	{ "PresentationFormat",	DOC_PROP,	GSF_META_NAME_PRESENTATION_FORMAT,  3,	VT_LPSTR },
+	{ "NumBytes",		DOC_PROP,	GSF_META_NAME_BYTE_COUNT,           4,	VT_I4 },
+	{ "NumLines",		DOC_PROP,	GSF_META_NAME_LINE_COUNT,           5,	VT_I4 },
+	{ "NumParagraphs",	DOC_PROP,	GSF_META_NAME_PARAGRAPH_COUNT,      6,	VT_I4 },
+	{ "NumSlides",		DOC_PROP,	GSF_META_NAME_SLIDE_COUNT,          7,	VT_I4 },
+	{ "NumNotes",		DOC_PROP,	GSF_META_NAME_NOTE_COUNT,           8,	VT_I4 },
+	{ "NumHiddenSlides",	DOC_PROP,	GSF_META_NAME_HIDDEN_SLIDE_COUNT,   9,	VT_I4 },
+	{ "NumMMClips",		DOC_PROP,	GSF_META_NAME_MM_CLIP_COUNT,       10,	VT_I4 },
+	{ "Scale",		DOC_PROP,	GSF_META_NAME_SCALE,               11,	VT_BOOL },
+	{ "HeadingPairs",	DOC_PROP,	GSF_META_NAME_HEADING_PAIRS,       12,	VT_VECTOR | VT_VARIANT },
+	{ "DocumentParts",	DOC_PROP,	GSF_META_NAME_DOCUMENT_PARTS,      13,	VT_VECTOR | VT_LPSTR },
+	{ "Manager",		DOC_PROP,	GSF_META_NAME_MANAGER,             14,	VT_LPSTR },
+	{ "Company",		DOC_PROP,	GSF_META_NAME_COMPANY,             15,	VT_LPSTR },
+	{ "LinksDirty",		DOC_PROP,	GSF_META_NAME_LINKS_DIRTY,         16,	VT_BOOL },
+	{ "DocSumInfo_17",      DOC_PROP,	GSF_META_NAME_MSOLE_UNKNOWN_17,    17,	VT_UNKNOWN },
+	{ "DocSumInfo_18",      DOC_PROP,	GSF_META_NAME_MSOLE_UNKNOWN_18,    18,	VT_UNKNOWN },
+	{ "DocSumInfo_19",      DOC_PROP,	GSF_META_NAME_MSOLE_UNKNOWN_19,    19,	VT_BOOL },
+	{ "DocSumInfo_20",      DOC_PROP,	GSF_META_NAME_MSOLE_UNKNOWN_20,    20,	VT_UNKNOWN },
+	{ "DocSumInfo_21",      DOC_PROP,	GSF_META_NAME_MSOLE_UNKNOWN_21,    21,	VT_UNKNOWN },
+	{ "DocSumInfo_22",      DOC_PROP,	GSF_META_NAME_MSOLE_UNKNOWN_22,    22,	VT_BOOL },
+	{ "DocSumInfo_23",      DOC_PROP,	GSF_META_NAME_MSOLE_UNKNOWN_23,    23,	VT_I4 },
+	{ "Title",		COMPONENT_PROP, GSF_META_NAME_TITLE,		    2,	VT_LPSTR },
+	{ "Subject",		COMPONENT_PROP, GSF_META_NAME_SUBJECT,		    3,	VT_LPSTR },
+	{ "Author",		COMPONENT_PROP, GSF_META_NAME_CREATOR,		    4,	VT_LPSTR },
+	{ "Keywords",		COMPONENT_PROP, GSF_META_NAME_KEYWORDS,		    5,	VT_LPSTR },
+	{ "Comments",		COMPONENT_PROP, GSF_META_NAME_DESCRIPTION,	    6,	VT_LPSTR },
+	{ "Template",		COMPONENT_PROP, GSF_META_NAME_TEMPLATE,		    7,	VT_LPSTR },
+	{ "LastSavedBy",	COMPONENT_PROP, GSF_META_NAME_LAST_SAVED_BY,	    8,	VT_LPSTR },
+	{ "RevisionNumber",	COMPONENT_PROP, GSF_META_NAME_REVISION_COUNT,	    9,	VT_LPSTR },
+	{ "TotalEditingTime",	COMPONENT_PROP, GSF_META_NAME_EDITING_DURATION,	   10,	VT_FILETIME },
+	{ "LastPrinted",	COMPONENT_PROP, GSF_META_NAME_LAST_PRINTED,	   11,	VT_FILETIME },
+	{ "CreateTime",		COMPONENT_PROP, GSF_META_NAME_DATE_CREATED,	   12,	VT_FILETIME },
+	{ "LastSavedTime",	COMPONENT_PROP, GSF_META_NAME_DATE_MODIFIED,	   13,	VT_FILETIME },
+	{ "NumPages",		COMPONENT_PROP, GSF_META_NAME_PAGE_COUNT,	   14,	VT_I4 },
+	{ "NumWords",		COMPONENT_PROP, GSF_META_NAME_WORD_COUNT,	   15,	VT_I4 },
+	{ "NumCharacters",	COMPONENT_PROP, GSF_META_NAME_CHARACTER_COUNT,	   16,	VT_I4 },
+	{ "Thumbnail",		COMPONENT_PROP, GSF_META_NAME_THUMBNAIL,	   17,	VT_CF },
+	{ "AppName",		COMPONENT_PROP, GSF_META_NAME_GENERATOR,	   18,	VT_LPSTR },
+	{ "Security",		COMPONENT_PROP, GSF_META_NAME_SECURITY,		   19,	VT_I4 }
+};
+
+static GHashTable *name_to_prop_hash = NULL;
+
+static char const *
+msole_vt_name (GsfMSOleVariantType type)
+{
+	static char const *names[] = {
+		"VT_EMPTY",	"VT_NULL",	"VT_I2",	"VT_I4",	"VT_R4",
+		"VT_R8",	"VT_CY",	"VT_DATE",	"VT_BSTR",	"VT_DISPATCH",
+		"VT_ERROR",	"VT_BOOL",	"VT_VARIANT",	"VT_UNKNOWN",	"VT_DECIMAL",
+		NULL,		"VT_I1",	"VT_UI1",	"VT_UI2",	"VT_UI4",
+		"VT_I8",	"VT_UI8",	"VT_INT",	"VT_UINT",	"VT_VOID",
+		"VT_HRESULT",	"VT_PTR",	"VT_SAFEARRAY",	"VT_CARRAY",	"VT_USERDEFINED",
+		"VT_LPSTR",	"VT_LPWSTR",
+	};	
+	static char const *names2[] = {
+		"VT_FILETIME",
+		"VT_BLOB",	"VT_STREAM",	"VT_STORAGE",	"VT_STREAMED_OBJECT",
+		"VT_STORED_OBJECT", "VT_BLOB_OBJECT", "VT_CF",	"VT_CLSID"
+	};
+
+	type &= ~VT_VECTOR;
+	if (type <= VT_LPWSTR)
+		return names[type];
+	g_return_val_if_fail (type >= VT_FILETIME, "_UNKNOWN_");
+	g_return_val_if_fail (type <= VT_CLSID, "_UNKNOWN_");
+	return names2[type-VT_FILETIME];
+}
+
+static char const *
+msole_prop_id_to_gsf (GsfMSOleMetaDataSection *section, guint32 id, gboolean *linked)
+{
+	char const *res = NULL;
+	GsfMSOleMetaDataPropMap const *map = NULL;
+	unsigned i = 0;
+
+	*linked = FALSE;
+	if (section->dict != NULL) {
+		if (id & 0x1000000) {
+			*linked = TRUE;
+			id &= ~0x1000000;
+			d (g_print ("LINKED "););
+		}
+
+		res = g_hash_table_lookup (section->dict, GINT_TO_POINTER (id));
+
+		if (res != NULL) {
+			d (g_print (res););
+			return res;
+		}
+	}
+
+	map = builtin_props ;
+	i = G_N_ELEMENTS (builtin_props);
+	while (i-- > 0)
+		if (map[i].id == id &&
+		    (map[i].section == COMMON_PROP || map[i].section == section->type)) {
+			d (g_print (map[i].gsf_name););
+			return map[i].gsf_name;
+		}
+
+	d (g_print ("_UNKNOWN_(0x%x %d)", id, id););
+
+	return NULL;
+}
+
+static GsfMSOleMetaDataPropMap const *
+msole_gsf_name_to_prop (char const *name)
+{
+	if (NULL == name_to_prop_hash) {
+		int i;
+		name_to_prop_hash = g_hash_table_new (g_str_hash, g_str_equal);
+		for (i = G_N_ELEMENTS (builtin_props); i-- > 0; )
+			g_hash_table_replace (name_to_prop_hash,
+				(gpointer) builtin_props[i].gsf_name,
+				(gpointer) (builtin_props+i));
+	}
+
+	return g_hash_table_lookup (name_to_prop_hash, (gpointer)name);
+}
+
+static void
+set_error_missing_data (GError **error, const char *property_name, gsize size_needed, gsize size_gotten)
+{
+	g_set_error (error,
+		     GSF_ERROR,
+		     GSF_ERROR_INVALID_DATA,
+		     _("Missing data when reading the %s property; got %" G_GSIZE_FORMAT "bytes, "
+		       "but %" G_GSIZE_FORMAT " bytes at least are needed."),
+		     property_name,
+		     size_needed,
+		     size_gotten);
+}
+
+/* Can return errors from gsf_blob_new() and GSF_ERROR_INVALID_DATA */
+static gboolean
+parse_vt_cf (GValue *res, guint8 const **data, guint8 const *data_end, GError **error)
+{
+	/* clipboard size		uint32		sizeof (clipboard format tag) + sizeof (clipboard data)
+	 * clipboard format tag		int32		see below
+	 * clipboard data		byte[]		see below
+	 *
+	 * Clipboard format tag:
+	 * -1 - Windows clipboard format
+	 * -2 - Macintosh clipboard format
+	 * -3 - GUID that contains a format identifier (FMTID)
+	 * >0 - custom clipboard format name plus data (see msdn site below)
+	 *  0 - No data
+	 *
+	 * References:
+	 * http://msdn.microsoft.com/library/default.asp?url=/library/en-us/stg/stg/propvariant.asp
+	 * http://jakarta.apache.org/poi/hpsf/thumbnails.html
+	 * http://linux.com.hk/docs/poi/org/apache/poi/hpsf/Thumbnail.html
+	 * http://sparks.discreet.com/knowledgebase/public/solutions/ExtractThumbnailImg.htm
+	 */
+	guint32 clip_size, clip_data_size;
+	gint32 clip_format;
+	GsfBlob *blob;
+	GsfClipData *clip_data;
+
+	/* Clipboard size field */
+
+	if (data_end < *data + 4) {
+		set_error_missing_data (error, "VT_CF", 4, data_end - *data);
+		return FALSE;
+	}
+
+	clip_size = GSF_LE_GET_GUINT32 (*data);
+
+	if (clip_size < 4) {	/* must emcompass int32 format plus data size */
+		g_set_error (error,
+			     GSF_ERROR,
+			     GSF_ERROR_INVALID_DATA,
+			     _("Corrupt data in the VT_CF property; clipboard data length must be at least 4 bytes, "
+			       "but the data says it only has %" G_GSIZE_FORMAT " bytes available."),
+			     (gsize) clip_size);
+		return FALSE;
+	}
+
+	*data += 4;
+
+	/* Check clipboard format plus data size */
+
+	if (data_end < *data + clip_size) {
+		set_error_missing_data (error, "VT_CF", clip_size, data_end - *data);
+		return FALSE;
+	}
+
+	clip_format = GSF_LE_GET_GINT32 (*data);
+	*data += 4;
+
+	switch (clip_format) {
+	case GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD:
+	case GSF_CLIP_FORMAT_MACINTOSH_CLIPBOARD:
+	case GSF_CLIP_FORMAT_GUID:
+	case GSF_CLIP_FORMAT_NO_DATA:
+		/* everything is ok */
+		break;
+
+	default:
+		if (clip_format > 0)
+			clip_format = GSF_CLIP_FORMAT_CLIPBOARD_FORMAT_NAME;
+		else
+			clip_format = GSF_CLIP_FORMAT_UNKNOWN;
+
+		break;
+	}
+
+	clip_data_size = clip_size - 4;
+
+	blob = gsf_blob_new (clip_data_size, *data, error);
+
+	*data += clip_data_size;
+
+	if (!blob)
+		return FALSE;
+
+	clip_data = gsf_clip_data_new (clip_format, blob);
+	g_object_unref (blob);
+
+	g_value_init (res, GSF_TYPE_CLIP_DATA);
+	g_value_set_object (res, clip_data);
+	g_object_unref (clip_data);
+
+	return TRUE;
+}
+
+static GValue *
+msole_prop_parse (GsfMSOleMetaDataSection *section,
+		  guint32 type, guint8 const **data, guint8 const *data_end)
+{
+	GValue *res;
+	char *str;
+	guint32 len;
+	gboolean const is_vector = type & VT_VECTOR;
+	GError *error;
+
+	g_return_val_if_fail (!(type & (unsigned)(~0x1fff)), NULL); /* not valid in a prop set */
+
+	type &= 0xfff;
+
+	if (is_vector) {
+		/*
+		 *  A vector is basically an array.  If the type associated with
+		 *  it is a variant, then each element can have a different
+		 *  variant type.  Otherwise, each element has the same variant
+		 *  type associated with the vector.
+		 */
+		unsigned i, n;
+		GsfDocPropVector *vector;
+
+		g_return_val_if_fail (*data + 4 <= data_end, NULL);
+
+		n = GSF_LE_GET_GUINT32 (*data);
+		*data += 4;
+
+		d (g_print (" array with %d elem\n", n);
+		   gsf_mem_dump (*data, (unsigned)(data_end - *data)););
+		
+		vector = gsf_docprop_vector_new ();
+
+		for (i = 0 ; i < n ; i++) {
+			GValue *v;
+			d (g_print ("\t[%d] ", i););
+			v = msole_prop_parse (section, type, data, data_end);
+			if (v) {
+				if (G_IS_VALUE (v)) {
+					gsf_docprop_vector_append (vector, v);
+					g_value_unset (v);
+				}
+				g_free (v);
+			}
+		}
+
+		res = g_new0 (GValue, 1);
+		g_value_init (res, GSF_DOCPROP_VECTOR_TYPE);
+		g_value_set_object (res, vector);
+		g_object_unref (vector);
+		return res;
+	}
+
+	res = g_new0 (GValue, 1);
+	d (g_print ("%s\n", msole_vt_name (type)););
+	switch (type) {
+	case VT_EMPTY :
+		/*
+		 * A property with a type indicator of VT_EMPTY has no data
+		 * associated with it; that is, the size of the value is zero.
+		 */
+		/* value::unset == empty */
+		break;
+
+	case VT_NULL :
+		/* This is like a pointer to NULL */
+		/* value::unset == null too :-) do we need to distinguish ? */
+		break;
+
+	case VT_I2 :
+		/* 2-byte signed integer */
+		g_return_val_if_fail (*data + 2 <= data_end, NULL);
+		g_value_init (res, G_TYPE_INT);
+		g_value_set_int	(res, GSF_LE_GET_GINT16 (*data));
+		*data += 2;
+		break;
+
+	case VT_I4 :
+		/* 4-byte signed integer */
+		g_return_val_if_fail (*data + 4 <= data_end, NULL);
+		g_value_init (res, G_TYPE_INT);
+		g_value_set_int	(res, GSF_LE_GET_GINT32 (*data));
+		*data += 4;
+		break;
+
+	case VT_R4 :
+		/* 32-bit IEEE floating-point value */
+		g_return_val_if_fail (*data + 4 <= data_end, NULL);
+		g_value_init (res, G_TYPE_FLOAT);
+		g_value_set_float (res, GSF_LE_GET_FLOAT (*data));
+		*data += 4;
+		break;
+
+	case VT_R8 :
+		/* 64-bit IEEE floating-point value */
+		g_return_val_if_fail (*data + 8 <= data_end, NULL);
+		g_value_init (res, G_TYPE_DOUBLE);
+		g_value_set_double (res, GSF_LE_GET_DOUBLE (*data));
+		*data += 8;
+		break;
+
+	case VT_CY :
+		/* 8-byte two's complement integer (scaled by 10,000) */
+		/* CHEAT : just store as an int64 for now */
+		g_return_val_if_fail (*data + 8 <= data_end, NULL);
+		g_value_init (res, G_TYPE_INT64);
+		g_value_set_int64 (res, GSF_LE_GET_GINT64 (*data));
+		break;
+
+	case VT_DATE :
+		/* 
+		 * 64-bit floating-point number representing the number of days
+		 * (not seconds) since December 31, 1899.
+		 */
+/* FIXME FIXME FIXME  TODO */
+		break;
+
+	case VT_BSTR :
+		/*
+		 * Pointer to null-terminated Unicode string; the string is pre-
+		 * ceeded by a DWORD representing the byte count of the number
+		 * of bytes in the string (including the  terminating null).
+		 */
+/* FIXME FIXME FIXME  TODO */
+		break;
+
+	case VT_DISPATCH :
+/* FIXME FIXME FIXME  TODO */
+		break;
+
+	case VT_BOOL :
+		/* A boolean (WORD) value containg 0 (false) or -1 (true). */
+		g_return_val_if_fail (*data + 1 <= data_end, NULL);
+		g_value_init (res, G_TYPE_BOOLEAN);
+		g_value_set_boolean (res, **data ? TRUE : FALSE);
+		*data += 1;
+		break;
+
+	case VT_VARIANT :	 d (g_print ("\tcontaining a "););
+		/*
+		 * A type indicator (a DWORD) followed by the corresponding
+		 *  value.  VT_VARIANT is only used in conjunction with
+		 *  VT_VECTOR.
+		 */
+		g_free (res);
+		type = GSF_LE_GET_GUINT32 (*data);
+		*data += 4;
+		return msole_prop_parse (section, type, data, data_end);
+
+	case VT_UI1 :
+		/* 1-byte unsigned integer */
+		g_return_val_if_fail (*data + 1 <= data_end, NULL);
+		g_value_init (res, G_TYPE_UCHAR);
+		g_value_set_uchar (res, (guchar)(**data));
+		*data += 1;
+		break;
+
+	case VT_UI2 :
+		/* 2-byte unsigned integer */
+		g_return_val_if_fail (*data + 2 <= data_end, NULL);
+		g_value_init (res, G_TYPE_UINT);
+		g_value_set_uint (res, GSF_LE_GET_GUINT16 (*data));
+		*data += 2;
+		break;
+
+	case VT_UI4 :
+		/* 4-type unsigned integer */
+		g_return_val_if_fail (*data + 4 <= data_end, NULL);
+		g_value_init (res, G_TYPE_UINT);
+		g_value_set_uint (res, GSF_LE_GET_GUINT32 (*data));
+		*data += 4;
+		break;
+
+	case VT_I8 :		 d (g_print ("VT_I8\n"););
+		/* 8-byte signed integer */
+		g_return_val_if_fail (*data + 8 <= data_end, NULL);
+		g_value_init (res, G_TYPE_INT64);
+		g_value_set_int64 (res, GSF_LE_GET_GINT64 (*data));
+		*data += 8;
+		break;
+
+	case VT_UI8 :
+		/* 8-byte unsigned integer */
+		g_return_val_if_fail (*data + 8 <= data_end, NULL);
+		g_value_init (res, G_TYPE_UINT64);
+		g_value_set_uint64 (res, GSF_LE_GET_GUINT64 (*data));
+		*data += 8;
+		break;
+
+	case VT_LPSTR :
+		/* 
+		 * This is the representation of many strings.  It is stored in
+		 * the same representation as VT_BSTR.  Note that the serialized
+		 * representation of VP_LPSTR has a preceding byte count, whereas
+		 * the in-memory representation does not.
+		 */
+		/* be anal and safe */
+		g_return_val_if_fail (*data + 4 <= data_end, NULL);
+
+		len = GSF_LE_GET_GUINT32 (*data);
+
+		g_return_val_if_fail (len < 0x10000, NULL);
+		g_return_val_if_fail (*data + 4 + len*section->char_size <= data_end, NULL);
+
+		error = NULL;
+		d (gsf_mem_dump (*data + 4, len * section->char_size););
+		str = g_convert_with_iconv (*data + 4,
+			len * section->char_size,
+			section->iconv_handle, NULL, NULL, &error);
+
+		g_value_init (res, G_TYPE_STRING);
+		if (NULL != str) {
+			g_value_set_string (res, str);
+			g_free (str);
+		} else if (NULL != error) {
+			g_warning ("error: %s", error->message);
+			g_error_free (error);
+		} else {
+			g_warning ("unknown error converting string property, using blank");
+		}
+		*data += 4 + len * section->char_size;
+		break;
+
+	case VT_LPWSTR :
+		/*
+		 * A counted and null-terminated Unicode string; a DWORD character
+		 * count (where the count includes the terminating null) followed
+		 * by that many Unicode (16-bit) characters.  Note that the count
+		 * is character count, not byte count.
+		 */
+		/* be anal and safe */
+		g_return_val_if_fail (*data + 4 <= data_end, NULL);
+
+		len = GSF_LE_GET_GUINT32 (*data);
+
+		g_return_val_if_fail (len < 0x10000, NULL);
+		g_return_val_if_fail (*data + 4 + len <= data_end, NULL);
+
+		error = NULL;
+		d (gsf_mem_dump (*data + 4, len*2););
+		str = g_convert (*data + 4, len*2,
+				 "UTF-8", "UTF-16LE", NULL, NULL, &error);
+
+		g_value_init (res, G_TYPE_STRING);
+		if (NULL != str) {
+			g_value_set_string (res, str);
+			g_free (str);
+		} else if (NULL != error) {
+			g_warning ("error: %s", error->message);
+			g_error_free (error);
+		} else {
+			g_warning ("unknown error converting string property, using blank");
+		}
+		*data += 4 + len*2;
+		break;
+
+	case VT_FILETIME :
+		/* 64-bit FILETIME structure, as defined by Win32. */
+		g_return_val_if_fail (*data + 8 <= data_end, NULL);
+	{
+		/* ft * 100ns since Jan 1 1601 */
+		guint64 ft = GSF_LE_GET_GUINT64 (*data);
+		GsfTimestamp ts;
+
+		ft /= 10000000; /* convert to seconds */
+		ft -= G_GINT64_CONSTANT (11644473600); /* move to Jan 1 1970 */
+		ts.timet = (time_t)ft;
+		g_value_init (res, GSF_TIMESTAMP_TYPE);
+		gsf_value_set_timestamp (res, &ts);
+		*data += 8;
+		break;
+	}
+	case VT_BLOB :
+		/*
+		 * A DWORD count of bytes, followed by that many bytes of data.
+		 * The byte count does not include the four bytes for the length
+		 * of the count itself:  An empty blob would have a count of
+		 * zero, followed by zero bytes.  Thus the serialized represen-
+		 * tation of a VT_BLOB is similar to that of a VT_BSTR but does
+		 * not guarantee a null byte at the end of the data.
+		 */
+/* FIXME FIXME FIXME  TODO */
+		g_free (res);
+		res = NULL;
+		break;
+
+	case VT_STREAM :
+		/*
+		 * Indicates the value is stored in a stream that is sibling to
+		 * the CONTENTS stream.  Following this type indicator is data
+		 * in the format of a serialized VT_LPSTR, which names the stream
+		 * containing the data.
+		 */
+/* FIXME FIXME FIXME  TODO */
+		g_free (res);
+		res = NULL;
+		break;
+
+	case VT_STORAGE :
+		/*
+		 * Indicates the value is stored in an IStorage that is sibling
+		 * to the CONTENTS stream.  Following this type indicator is data
+		 * in the format of a serialized VT_LPSTR, which names the
+		 * IStorage containing the data.
+		 */
+/* FIXME FIXME FIXME  TODO */
+		g_free (res);
+		res = NULL;
+		break;
+
+	case VT_STREAMED_OBJECT:
+		/*
+		 * Same as VT_STREAM, but indicates that the stream contains a
+		 * serialized object, which is a class ID followed by initiali-
+		 * zation data for the class.
+		 */
+/* FIXME FIXME FIXME  TODO */
+		g_free (res);
+		res = NULL;
+		break;
+
+	case VT_STORED_OBJECT :
+		/*
+		 * Same as VT_STORAGE, but indicates that the designated IStorage
+		 * contains a loadable object.
+		 */
+/* FIXME FIXME FIXME  TODO */
+		g_free (res);
+		res = NULL;
+		break;
+
+	case VT_BLOB_OBJECT :
+		/*
+		 * Contains a serialized object in the same representation as
+		 * would appear in a VT_STREAMED_OBJECT.  That is, following the
+		 * VT_BLOB_OBJECT tag is a DWORD byte count of the remaining data
+		 * (where the byte count does not include the size of itself)
+		 * which is in the format of a class ID followed by initialization
+		 * data for that class
+		 */
+/* FIXME FIXME FIXME  TODO */
+
+		g_free (res);
+		res = NULL;
+		break;
+
+	case VT_CF :
+		error = NULL;
+		if (!parse_vt_cf (res, data, data_end, &error)) {
+			/* suck, we can't propagate the error upwards */
+			g_warning ("error: %s", error->message);
+			g_error_free (error);
+			g_free (res);
+			res = NULL;
+		}
+		break;
+
+	case VT_CLSID :
+		/* A class ID (or other GUID) */
+		*data += 16;
+		g_free (res);
+		res = NULL;
+		break;
+
+	case VT_ERROR :
+		/* A DWORD containing a status code. */
+	case VT_UNKNOWN :
+	case VT_DECIMAL :
+	case VT_I1 :
+		/* 1-byte signed integer */
+	case VT_INT :
+	case VT_UINT :
+	case VT_VOID :
+	case VT_HRESULT :
+	case VT_PTR :
+	case VT_SAFEARRAY :
+	case VT_CARRAY :
+	case VT_USERDEFINED :
+		g_warning ("type %s (0x%x) is not permitted in property sets",
+			   msole_vt_name (type), type);
+		g_free (res);
+		res = NULL;
+		break;
+
+	default :
+		g_warning ("Unknown property type %d (0x%x)", type, type);
+		g_free (res);
+		res = NULL;
+	}
+
+	if (res != NULL && G_IS_VALUE (res)) {
+		d ( {
+			char *val = g_strdup_value_contents (res);
+			g_print ("%s\n", val);
+			g_free (val);
+		});
+	} else {
+		d ({
+			char const *type_name = msole_vt_name (type);
+			if (type_name) {
+				g_print ("A '%s' property could not be parsed\n", type_name);
+			} else {
+				g_print ("A %d property could not be parsed\n", type);
+			}
+		});
+	}
+	return res;
+}
+
+static gboolean
+msole_prop_read (GsfInput *in,
+		 GsfMSOleMetaDataSection *section,
+		 GsfMSOleMetaDataProp    *props,
+		 unsigned		  i,
+		 GsfDocMetaData		 *accum)
+{
+	guint32 type;
+	guint8 const *data;
+	/* FIXME : why size-4 ? I must be missing something */
+	gsf_off_t size = ((i+1) >= section->num_props)
+		? section->size-4 : props[i+1].offset;
+	char   *name;
+	GValue *val;
+
+	g_return_val_if_fail (i < section->num_props, FALSE);
+	g_return_val_if_fail (size >= props[i].offset + 4, FALSE);
+
+	size -= props[i].offset; /* includes the type id */
+	if (gsf_input_seek (in, section->offset+props[i].offset, G_SEEK_SET) ||
+	    NULL == (data = gsf_input_read (in, size, NULL))) {
+		g_warning ("failed to read prop #%d", i);
+		return FALSE;
+	}
+
+	type = GSF_LE_GET_GUINT32 (data);
+	data += 4;
+
+	/* dictionary is magic */
+	if (props[i].id == 0) {
+		guint32 len, id, i, n;
+		gsize gslen;
+		char *name;
+		guint8 const *start = data;
+
+		g_return_val_if_fail (section->dict == NULL, FALSE);
+
+		section->dict = g_hash_table_new_full (
+			g_direct_hash, g_direct_equal,
+			NULL, g_free);
+
+		d ({ g_print ("Dictionary = \n"); gsf_mem_dump (data-4, size); });
+		n = type;
+		for (i = 0 ; i < n ; i++) {
+			id = GSF_LE_GET_GUINT32 (data);
+			len = GSF_LE_GET_GUINT32 (data + 4);
+
+			g_return_val_if_fail (len < 0x10000, FALSE);
+
+			gslen = 0;
+			name = g_convert_with_iconv (data + 8,
+				len * section->char_size,
+				section->iconv_handle, &gslen, NULL, NULL);
+			len = (guint32)gslen;
+			data += 8 + len;
+
+			d (g_print ("\t%u == %s\n", id, name););
+			g_hash_table_replace (section->dict,
+				GINT_TO_POINTER (id), name);
+
+			/* MS documentation blows goats !
+			 * The docs claim there are padding bytes in the dictionary.
+			 * Their examples show padding bytes.
+			 * In reality non-unicode strings do not see to have padding.
+			 */
+			if (section->char_size != 1 && (data - start) % 4)
+				data += 4 - ((data - start) % 4);
+		}
+	} else {
+		gboolean linked;
+		d (g_print ("===> %u) ", i);
+		   gsf_mem_dump (data-4, size););
+
+		name = g_strdup (msole_prop_id_to_gsf (section, props[i].id, &linked));
+		d (g_print (" @ %x %x = ", (unsigned)props[i].offset, (unsigned)size););
+		val = msole_prop_parse (section, type, &data, data + size);
+
+		if (NULL != name && NULL != val) {
+			if (linked) {
+				GsfDocProp *prop = gsf_doc_meta_data_lookup (accum, name);
+				if (NULL == prop) {
+					g_warning ("linking property '%s' before it\'s value is specified",
+						   (name ? name : "<null>"));
+				} else if (!G_VALUE_HOLDS_STRING (val)) {
+					g_warning ("linking property '%s' before it\'s value is specified",
+						   (name ? name : "<null>"));
+				} else
+					gsf_doc_prop_set_link (prop,
+						g_value_dup_string (val));
+			} else {
+				gsf_doc_meta_data_insert (accum, name, val);
+				val = NULL;
+				name = NULL;
+			}
+		}
+
+		if (NULL != val) {
+			if (G_IS_VALUE (val))
+				g_value_unset (val);
+			g_free (val);
+		}
+		g_free (name);
+	}
+
+	return TRUE;
+}
+
+static int
+msole_prop_cmp (gconstpointer a, gconstpointer b)
+{
+	GsfMSOleMetaDataProp const *prop_a = a;
+	GsfMSOleMetaDataProp const *prop_b = b;
+
+	if (prop_a->offset < prop_b->offset)
+		return -1;
+	else if (prop_a->offset > prop_b->offset)
+		return +1;
+	else
+		return 0;
+}
+
+/**
+ * gsf_msole_metadata_read :
+ * @in    : #GsfInput
+ * @accum : #GsfDocMetaData
+ *
+ * Read a stream formated as a set of MS OLE properties from @in and store the
+ * results in @accum.
+ *
+ * Returns GError which the caller must free on error.
+ **/
+GError *
+gsf_msole_metadata_read	(GsfInput *in, GsfDocMetaData *accum)
+{
+	guint8 const *data = gsf_input_read (in, 28, NULL);
+	guint16 version;
+	guint32 os, num_sections;
+	unsigned i, j;
+	GsfMSOleMetaDataSection *sections;
+	GsfMSOleMetaDataProp	*props;
+	GsfDocProp		*prop;
+	
+	if (NULL == data)
+		return g_error_new (gsf_input_error_id (), 0,
+			"Unable to read MS property stream header");
+
+	d ({g_print ("===================================\n"
+		   "header class id ==\n");
+	   gsf_mem_dump (data, 28);});
+	/*
+	 * Validate the Property Set Header.
+	 * Format (bytes) :
+	 *   00 - 01	Byte order		0xfffe
+	 *   02 - 03	Format			0
+	 *   04 - 05	OS Version		high word is the OS
+	 *   06 - 07				low  word is the OS version
+	 *					  0 = win16
+	 *					  1 = mac
+	 *					  2 = win32
+	 *   08 - 23	Class Identifier	Usually Format ID
+	 *   24 - 27	Section count		Should be at least 1
+	 */
+	os	     = GSF_LE_GET_GUINT16 (data + 6);
+	version	     = GSF_LE_GET_GUINT16 (data + 2);
+	num_sections = GSF_LE_GET_GUINT32 (data + 24);
+	if (GSF_LE_GET_GUINT16 (data + 0) != 0xfffe
+	    || (version != 0 && version != 1)
+	    || os > 2
+	    || num_sections > 100) /* arbitrary sanity check */
+		return g_error_new (gsf_input_error_id (), 0,
+			"Invalid MS property stream header");
+
+	/* extract the section info */
+	/*
+	 * The Format ID/Offset list follows.
+	 * Format:
+	 *   00 - 16	Section Name		Format ID
+	 *   16 - 19	Section Offset		The offset is the number of
+	 *					bytes from the start of the
+	 *					whole stream to where the
+	 *					section begins.
+	 */
+	sections = (GsfMSOleMetaDataSection *)g_alloca (sizeof (GsfMSOleMetaDataSection)* num_sections);
+	for (i = 0 ; i < num_sections ; i++) {
+		data = gsf_input_read (in, 20, NULL);
+		if (NULL == data)
+			return g_error_new (gsf_input_error_id (), 0,
+				"Unable to read MS property stream header");
+		if (!memcmp (data, component_guid, sizeof (component_guid)))
+			sections [i].type = COMPONENT_PROP;
+		else if (!memcmp (data, document_guid, sizeof (document_guid)))
+			sections [i].type = DOC_PROP;
+		else if (!memcmp (data, user_guid, sizeof (user_guid)))
+			sections [i].type = USER_PROP;
+		else {
+			sections [i].type = USER_PROP;
+			g_warning ("Unknown property section type, treating it as USER");
+			gsf_mem_dump (data, 16);
+		}
+
+		sections [i].offset = GSF_LE_GET_GUINT32 (data + 16);
+	}
+
+	/*
+	 * A section is the third part of the property set stream.
+	 * Format (bytes) :
+	 *   00 - 03	Section size	A byte count for the section (which is inclusive
+	 *				of the byte count itself and should always be a
+	 *				multiple of 4);
+	 *   04 - 07	Property count	A count of the number of properties
+	 *   08 - xx   			An array of 32-bit Property ID/Offset pairs
+	 *   yy - zz			An array of Property Type indicators/Value pairs
+	 */
+	for (i = 0 ; i < num_sections ; i++) {
+		if (gsf_input_seek (in, sections[i].offset, G_SEEK_SET) ||
+		    NULL == (data = gsf_input_read (in, 8, NULL)))
+			return g_error_new (gsf_input_error_id (), 0,
+				"Invalid MS property section");
+
+		d (g_print ("=============================================\n"
+			   "===> section #%d : type %d at offset 0x%x\n",
+			   i, (int)sections [i].type,
+			   (guint32)sections [i].offset););
+
+		sections[i].iconv_handle = (GIConv)-1;
+		sections[i].char_size    = 1;
+		sections[i].dict      = NULL;
+		sections[i].size      = GSF_LE_GET_GUINT32 (data); /* includes header */
+		sections[i].num_props = GSF_LE_GET_GUINT32 (data + 4);
+		if (sections[i].num_props <= 0)
+			continue;
+
+		/*
+		 * Get and save all the Property ID/Offset pairs.
+		 * Format (bytes) :
+		 *   00 - 03	id	Property ID
+		 *   04 - 07	offset	The distance from the start of the section to the
+		 *			start of the Property Type/Value pair.
+		 */
+		d (g_print ("Offsets\n"););
+		props = g_new (GsfMSOleMetaDataProp, sections[i].num_props);
+		for (j = 0; j < sections[i].num_props; j++) {
+			if (NULL == (data = gsf_input_read (in, 8, NULL))) {
+				g_free (props);
+				return g_error_new (gsf_input_error_id (), 0,
+					"Invalid MS property section");
+			}
+
+			props [j].id = GSF_LE_GET_GUINT32 (data);
+			props [j].offset  = GSF_LE_GET_GUINT32 (data + 4);
+			d (g_print ("%d) ID=%d, offset=0x%x\n", j,
+				    props [j].id, (unsigned)props [j].offset););
+		}
+
+		/* order prop info by offset to facilitate bounds checking */
+		qsort (props, sections[i].num_props,
+		       sizeof (GsfMSOleMetaDataProp),
+		       msole_prop_cmp);
+
+		/*
+		 * Find and process the code page.
+		 * Property ID 1 is reserved as an indicator of the code page.
+		 */
+		sections[i].iconv_handle = (GIConv)-1;
+		sections[i].char_size = 1;
+		for (j = 0; j < sections[i].num_props; j++) /* first codepage */
+			if (props[j].id == 1) {
+				msole_prop_read (in, sections+i, props, j, accum);
+				if (NULL != (prop = gsf_doc_meta_data_lookup (accum, GSF_META_NAME_LANGUAGE))) {
+					GValue const *val = gsf_doc_prop_get_val (prop);
+					if (NULL != val && G_VALUE_HOLDS_INT (val)) {
+						int codepage = g_value_get_int (val);
+						sections[i].iconv_handle =
+							gsf_msole_iconv_open_for_import (codepage);
+						if (codepage == 1200 || codepage == 1201)
+							sections[i].char_size = 2;
+					}
+				}
+			}
+
+		if (sections[i].iconv_handle == (GIConv)-1)
+			sections[i].iconv_handle = gsf_msole_iconv_open_for_import (1252);
+
+		/*
+		 * Find and process the Property Set Dictionary
+		 * Property ID 0 is reserved as an indicator of the dictionary.
+		 * For User Defined Sections, Property ID 0 is NOT a dictionary.
+		 */
+		for (j = 0; j < sections[i].num_props; j++) /* then dictionary */
+			if (props[j].id == 0)
+				msole_prop_read (in, sections+i, props, j, accum);
+
+		/* Process all the properties */
+		for (j = 0; j < sections[i].num_props; j++) /* the rest */
+			if (props[j].id > 1)
+				msole_prop_read (in, sections+i, props, j, accum);
+
+		gsf_iconv_close (sections[i].iconv_handle);
+		g_free (props);
+		if (sections[i].dict != NULL)
+			g_hash_table_destroy (sections[i].dict);
+	}
+	return NULL;
+}
+
+/****************************************************************************/
+
+typedef struct {
+	GsfOutput  *out;
+	gboolean    doc_not_component;
+
+	GHashTable *dict;
+	struct {
+		unsigned count;	 /* includes 2nd prop for links */
+		GSList  *props;
+	} builtin, user;
+
+	unsigned codepage;
+} WritePropState;
+
+static GsfMSOleVariantType
+gvalue_to_msole_vt (GValue const *value, GsfMSOleMetaDataPropMap const *map)
+{
+	g_return_val_if_fail (value != NULL, VT_EMPTY);
+
+	switch (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value))) {
+	case G_TYPE_BOOLEAN:	return VT_BOOL;
+	case G_TYPE_UCHAR:	return VT_UI1;
+	case G_TYPE_FLOAT:	return VT_R4;
+	case G_TYPE_DOUBLE:	return VT_R8;
+	case G_TYPE_STRING: 	return VT_LPSTR;
+	case G_TYPE_INT:
+		return (NULL != map && map->prefered_type == VT_I2)
+			? VT_I2 : VT_I4;
+	case G_TYPE_UINT:
+		return (NULL != map && map->prefered_type == VT_UI2)
+			? VT_UI2 : VT_UI4;
+	case G_TYPE_BOXED:
+		if (VAL_IS_GSF_TIMESTAMP (value))
+			return VT_FILETIME;
+		return VT_UNKNOWN;
+	case G_TYPE_OBJECT:
+		if (VAL_IS_GSF_DOCPROP_VECTOR (value)) {
+			GValueArray *vector = gsf_value_get_docprop_varray (value);
+			unsigned i, n;
+			GsfMSOleVariantType type, tmp;
+
+			if (vector == NULL)
+				return VT_UNKNOWN;
+
+			if (map != NULL) {
+				type = map->prefered_type & (~VT_VECTOR);
+				if (type == VT_VARIANT)
+					return VT_VECTOR | VT_VARIANT;
+			} else
+				type = VT_UNKNOWN;
+			n = vector->n_values;
+			for (i = 0; i < n; i++) {
+				tmp = gvalue_to_msole_vt (
+					g_value_array_get_nth (vector, i), NULL);
+				if (type == VT_UNKNOWN)
+					type = tmp;
+				else if (type != tmp)
+					return VT_VECTOR | VT_VARIANT;
+			}
+			return VT_VECTOR | type;
+		}
+		break;
+	}
+	return VT_UNKNOWN;
+}
+
+/* Returns TRUE on success */
+static gboolean
+msole_metadata_write_prop (WritePropState *state,
+			   char const *name,
+			   GValue const *value,
+			   gboolean suppress_type)
+{
+	static guint8 const zero[1] = { '\0' };
+	GsfMSOleMetaDataPropMap const *map =
+		(name != NULL) ? msole_gsf_name_to_prop (name) : NULL;
+	GsfMSOleVariantType type;
+	guint8 buf[8];
+
+	g_return_val_if_fail (value != NULL, FALSE);
+
+	type = gvalue_to_msole_vt (value, map);
+	if (!suppress_type) {
+		GSF_LE_SET_GUINT32 (buf, type);
+		gsf_output_write (state->out, 4, buf);
+	}
+	if (NULL != map && map->prefered_type != type) {
+		d(g_print ("Exporting property '%s' with type 0x%x rather than the usual 0x%x\n",
+			   map->gsf_name, type, map->prefered_type););
+	}
+
+	if (type & VT_VECTOR) {
+		GValueArray *vector = gsf_value_get_docprop_varray (value);
+		unsigned i, n = vector->n_values;
+		gboolean res;
+
+		GSF_LE_SET_GINT32 (buf, n);
+		res = gsf_output_write (state->out, 4, buf);
+		for (i = 0; i < n; i++)
+			res &= msole_metadata_write_prop (state, NULL,
+				g_value_array_get_nth (vector, i),
+				type != (VT_VECTOR | VT_VARIANT));
+		return res;
+	}
+
+	switch (type) {
+	case VT_BOOL:
+		if (g_value_get_boolean (value))
+			GSF_LE_SET_GINT32 (buf, 0xffffffff);
+		else
+			GSF_LE_SET_GINT32 (buf, 0);
+		return gsf_output_write (state->out, 4, buf);
+	case VT_UI1:
+		GSF_LE_SET_GUINT32 (buf, g_value_get_uchar (value));
+		return gsf_output_write (state->out, 4, buf);
+	case VT_I2:
+		GSF_LE_SET_GINT16 (buf, g_value_get_int (value));
+		GSF_LE_SET_GUINT16 (buf+2, 0);
+		return gsf_output_write (state->out, 4, buf);
+	case VT_I4:
+		GSF_LE_SET_GINT32 (buf, g_value_get_int (value));
+		return gsf_output_write (state->out, 4, buf);
+	case VT_UI2:
+	case VT_UI4:
+		GSF_LE_SET_GUINT32 (buf, g_value_get_uint (value));
+		return gsf_output_write (state->out, 4, buf);
+	case VT_R4:
+		GSF_LE_SET_FLOAT (buf, g_value_get_float (value));
+		return gsf_output_write (state->out, 4, buf);
+	case VT_R8:
+		GSF_LE_SET_FLOAT (buf, g_value_get_double (value));
+		return gsf_output_write (state->out, 8, buf);
+
+	case VT_LPSTR : {
+/* FIXME FIXME FIXME  TODO : use iconv from codepage */
+		char const *txt = g_value_get_string (value);
+		unsigned len = (NULL != txt) ? strlen (txt) : 0;
+		GSF_LE_SET_GUINT32 (buf, len+1);
+		return  gsf_output_write (state->out, 4, buf) &&
+			gsf_output_write (state->out, len, txt) &&
+			gsf_output_write (state->out, 1, zero);
+	}
+
+	case VT_FILETIME : {
+		GsfTimestamp const *ts = g_value_get_boxed (value);
+		gint32  timet_signed = (gint32) ts->timet;
+		guint64 ft;
+
+		ft = timet_signed + G_GINT64_CONSTANT (11644473600);
+		ft *= 10000000;
+
+		GSF_LE_SET_GUINT64 (buf, ft);
+
+		return gsf_output_write (state->out, 8, buf);
+	}
+
+	default:
+		break;
+	}
+
+	g_warning ("Ignoring property '%s', how do we export a property of type '%s'",
+		name ? name : "<unnamed>",
+		g_type_name (G_TYPE_FUNDAMENTAL (G_VALUE_TYPE (value))));
+	return FALSE;
+}
+
+static void
+cb_write_dict (char const *name, gpointer id, WritePropState *state)
+{
+	static guint8 const zero[1] = { '\0' };
+	guint8	  buf [4];
+	unsigned  len = strlen (name) + 1;
+	GSF_LE_SET_GUINT32 (buf, GPOINTER_TO_UINT (id));
+	GSF_LE_SET_GUINT32 (buf+4, len+1);
+	gsf_output_write (state->out, 8, buf);
+	gsf_output_write (state->out, len, name);
+	gsf_output_write (state->out, 1, zero);
+}
+
+static gboolean
+msole_metadata_write_section (WritePropState *state, gboolean user)
+{
+	char const *name;
+	guint8	  buf [8];
+	GSList   *ptr   = user ? state->user.props : state->builtin.props;
+	unsigned  count = user ? state->user.count : state->builtin.count;
+	gsf_off_t len, base  = gsf_output_tell (state->out);
+	GsfMSOleMetaDataProp *offsets;
+	GsfMSOleMetaDataPropMap const *map;
+	GsfDocProp const *prop;
+	gpointer tmp;
+	unsigned i;
+	GValue	 scratch;
+
+	if (user && state->dict == NULL)
+		return TRUE;
+
+	/* Skip past the size and id/offset pairs */
+	if (!gsf_output_seek (state->out,
+			     4 /* length */ +
+			     4 /* count */ +
+			     8 * count /* id/offset pairs */,
+			     G_SEEK_END))
+		return FALSE;
+
+	memset (&scratch,  0, sizeof (GValue));
+	g_value_init (&scratch, G_TYPE_STRING);
+
+	offsets = g_alloca (sizeof (GsfMSOleMetaDataProp) * count);
+
+	/* 0) codepage */
+	offsets[0].id = 1;
+	offsets[0].offset = gsf_output_tell (state->out);
+	GSF_LE_SET_GUINT32 (buf, VT_I2);
+	GSF_LE_SET_GUINT32 (buf+4, state->codepage);
+	gsf_output_write (state->out, 8, buf);
+
+	/* 1) dictionary */
+	if (user) {
+		offsets[1].id = 0;
+		offsets[1].offset = gsf_output_tell (state->out);
+		GSF_LE_SET_GUINT32 (buf, g_hash_table_size (state->dict));
+		gsf_output_write (state->out, 4, buf);
+		g_hash_table_foreach (state->dict,
+			(GHFunc) cb_write_dict, state);
+		i = 2;
+	} else
+		i = 1;
+
+	/* 2) props */
+	for (; ptr != NULL && i < count ; ptr = ptr->next, i++) {
+		prop = ptr->data;
+		name = gsf_doc_prop_get_name (prop);
+		if (user) {
+			tmp = g_hash_table_lookup (state->dict, name);
+			offsets[i].id = GPOINTER_TO_INT (tmp);
+			if (offsets[i].id < 2) {
+				g_warning ("Invalid ID (%d) for custom name '%s'", offsets[i].id, name);
+				continue;
+			}
+		} else {
+			map = msole_gsf_name_to_prop (name);
+			if (map == NULL) {
+				g_warning ("Missing map for builting property '%s'", name);
+				continue;
+			}
+			offsets[i].id = map->id;
+		}
+
+		offsets[i].offset = gsf_output_tell (state->out);
+		msole_metadata_write_prop (state, name,
+			gsf_doc_prop_get_val  (prop), FALSE);
+		if (gsf_doc_prop_get_link (prop)) {
+			i++;
+			offsets[i].id     = offsets[i-1].id | 0x1000000;
+			offsets[i].offset = gsf_output_tell (state->out);
+			g_value_set_static_string (&scratch, 
+				gsf_doc_prop_get_link (prop));
+			msole_metadata_write_prop (state, NULL, &scratch, FALSE);
+		}
+	}
+
+	len = gsf_output_tell (state->out) - base;
+	gsf_output_seek (state->out, base, G_SEEK_SET);
+	GSF_LE_SET_GUINT32 (buf, len);
+	GSF_LE_SET_GUINT32 (buf+4, count);
+	gsf_output_write (state->out, 8, buf);
+	for (i = 0 ; i < count ; i++) {
+		GSF_LE_SET_GUINT32 (buf, offsets[i].id);
+		GSF_LE_SET_GUINT32 (buf+4, offsets[i].offset - base);
+		gsf_output_write (state->out, 8, buf);
+	}
+
+	return gsf_output_seek (state->out, 0, G_SEEK_END);
+}
+
+static void
+cb_count_props (char const *name, GsfDocProp *prop, WritePropState *state)
+{
+	GsfMSOleMetaDataPropMap const *map = msole_gsf_name_to_prop (name);
+
+	/* allocate predefined ids or add it to the dictionary */
+	if (map != NULL) {
+		if (map->id == 0) return; /* dictionary is handled elsewhere */
+		if (map->section == (state->doc_not_component ? COMPONENT_PROP : DOC_PROP))
+			return;
+		if (map->id == 1) { /*codepage */
+			GValue const *val = gsf_doc_prop_get_val (prop);
+			if (NULL != val && G_VALUE_HOLDS_INT (val))
+				state->codepage = g_value_get_int (val);
+			return;
+		}
+
+		d (g_print ("%d) Adding builtin %s'\n",
+			    state->builtin.count, map->gsf_name););
+		state->builtin.count += gsf_doc_prop_get_link (prop) ? 2 : 1;
+		state->builtin.props = g_slist_prepend (state->builtin.props, prop);
+	} else if (state->doc_not_component) { /* keep user props in the document */
+		d (g_print("user defined named '%s' assigned id = %d\n",
+			   name, state->user.count););
+		if (NULL == state->dict)
+			state->dict = g_hash_table_new (g_str_hash, g_str_equal);
+		g_hash_table_insert (state->dict,
+			(gpointer) name, GINT_TO_POINTER (state->user.count));
+		state->user.count += gsf_doc_prop_get_link (prop) ? 2 : 1;
+		state->user.props = g_slist_prepend (state->user.props, prop);
+	}
+}
+
+/**
+ * gsf_msole_metadata_write :
+ * @out : #GsfOutput
+ * @meta_data : #GsfDocMetaData
+ * @doc_not_component : a kludge to differentiate DocumentSummary from Summary
+ *
+ * Returns TRUE on success;
+ **/
+gboolean
+gsf_msole_metadata_write (GsfOutput *out,
+			  GsfDocMetaData const *meta_data,
+			  gboolean doc_not_component)
+{
+	static guint8 const header[] = {
+		0xfe, 0xff,	/* byte order */
+		   0,    0,	/* Format */
+		0x04, 0x0a,	/* OS : XP == 0xA04 */
+		0x02, 0x00,	/* win32 == 2 */
+		0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, /* clasid = 0 */
+	};
+
+	gboolean	success = FALSE;
+	guint8		buf [4];
+	WritePropState	state;
+
+	state.codepage		= 1252;
+	state.out		= out;
+	state.dict		= NULL;
+	state.builtin.count     = 1; /* codepage */
+	state.user.count	= 2; /* codepage and dictionary */
+	state.builtin.props     = state.user.props = NULL;
+	state.doc_not_component = doc_not_component;
+	d (g_print ("================================\nFinding props\n"););
+	gsf_doc_meta_data_foreach (meta_data,
+		(GHFunc) cb_count_props, &state);
+	d (g_print ("Done\n"
+		    "================================\n"););
+
+	/* Write stream header */
+	GSF_LE_SET_GUINT32 (buf, (state.dict != NULL) ? 2 : 1);
+	if (!gsf_output_write (out, sizeof (header), header) ||
+	    !gsf_output_write (out, 4, buf))
+		goto err;
+
+	/* Write section header(s) */
+	GSF_LE_SET_GUINT32 (buf, (state.dict != NULL) ? 0x44 : 0x30);
+	if (!gsf_output_write (out, 16,
+		doc_not_component ? document_guid : component_guid) ||
+	    !gsf_output_write (out, 4, buf))
+		goto err;
+	if (state.dict != NULL) {
+		GSF_LE_SET_GUINT32 (buf, 0);
+		if (!gsf_output_write (out, sizeof (user_guid), user_guid) ||
+		    !gsf_output_write (out, 4, buf)) /* bogus position, fix it later */
+			goto err;
+	}
+
+	/* Write section(s) */
+	if (!msole_metadata_write_section (&state, FALSE))
+		goto err;
+	if (state.dict != NULL) {
+		gsf_off_t base  = gsf_output_tell (state.out);
+		GSF_LE_SET_GUINT32 (buf, base);
+		if (!gsf_output_seek (state.out, 0x40, G_SEEK_SET) ||
+		    !gsf_output_write (out, 4, buf) ||
+		    !gsf_output_seek (state.out, 0, G_SEEK_END) ||
+		    !msole_metadata_write_section (&state, TRUE))
+			goto err;
+	}
+
+	success = TRUE;
+err :
+	g_slist_free (state.builtin.props);
+	g_slist_free (state.user.props);
+	if (state.dict != NULL)
+		g_hash_table_destroy (state.dict);
+	return success;
+}
+
+static struct {
+	char const *tag;
+	guint	lid;
+} const gsf_msole_language_ids[] = {
+	{ "-none-", 0x0000 }, /* none (language neutral) */
+	{ "-none-", 0x0400 }, /* none */
+	{ "af_ZA",  0x0436 }, /* Afrikaans */
+	{ "am",     0x045e }, /* Amharic */
+	{ "sq_AL",  0x041c }, /* Albanian */
+	{ "ar_SA",  0x0401 }, /* Arabic (Saudi) */
+	{ "ar_IQ",  0x0801 }, /* Arabic (Iraq) */
+	{ "ar_EG",  0x0c01 }, /* Arabic (Egypt) */		
+	{ "ar_LY",  0x1001 }, /* Arabic (Libya) */
+	{ "ar_DZ",  0x1401 }, /* Arabic (Algeria) */
+	{ "ar_MA",  0x1801 }, /* Arabic (Morocco) */
+	{ "ar_TN",  0x1c01 }, /* Arabic (Tunisia) */
+	{ "ar_OM",  0x2001 }, /* Arabic (Oman) */
+	{ "ar_YE",  0x2401 }, /* Arabic (Yemen) */		
+	{ "ar_SY",  0x2801 }, /* Arabic (Syria) */
+	{ "ar_JO",  0x2c01 }, /* Arabic (Jordan) */
+	{ "ar_LB",  0x3001 }, /* Arabic (Lebanon) */
+	{ "ar_KW",  0x3401 }, /* Arabic (Kuwait) */
+	{ "ar_AE",  0x3801 }, /* Arabic (United Arab Emirates) */
+	{ "ar_BH",  0x3c01 }, /* Arabic (Bahrain) */		
+	{ "ar_QA",  0x4001 }, /* Arabic (Qatar) */
+	{ "as",     0x044d }, /* Assamese */
+	{ "az",     0x042c }, /* Azerbaijani */
+	{ "hy_AM",  0x042b }, /* Armenian */
+	{ "az",     0x044c }, /* Azeri (Latin) az_ */
+	{ "az",     0x082c }, /* Azeri (Cyrillic) az_ */
+	{ "eu_ES",  0x042d }, /* Basque */
+	{ "be_BY",  0x0423 }, /* Belarussian */		
+	{ "bn",     0x0445 }, /* Bengali bn_ */
+	{ "bg_BG",  0x0402 }, /* Bulgarian */
+	{ "ca_ES",  0x0403 }, /* Catalan */
+	{ "zh_TW",  0x0404 }, /* Chinese (Taiwan) */
+	{ "zh_CN",  0x0804 }, /* Chinese (PRC) */
+	{ "zh_HK",  0x0c04 }, /* Chinese (Hong Kong) */		
+	{ "zh_SG",  0x1004 }, /* Chinese (Singapore) */
+	{ "ch_MO",  0x1404 }, /* Chinese (Macau SAR) */
+	{ "hr_HR",  0x041a }, /* Croatian */
+	{ "cs_CZ",  0x0405 }, /* Czech */
+	{ "da_DK",  0x0406 }, /* Danish */
+	{ "div",    0x465 }, /* Divehi div_*/
+	{ "nl_NL",  0x0413 }, /* Dutch (Netherlands) */		
+	{ "nl_BE",  0x0813 }, /* Dutch (Belgium) */
+	{ "en_US",  0x0409 }, /* English (USA) */
+	{ "en_GB",  0x0809 }, /* English (UK) */
+	{ "en_AU",  0x0c09 }, /* English (Australia) */
+	{ "en_CA",  0x1009 }, /* English (Canada) */
+	{ "en_NZ",  0x1409 }, /* English (New Zealand) */
+	{ "en_IE",  0x1809 }, /* English (Ireland) */
+	{ "en_ZA",  0x1c09 }, /* English (South Africa) */
+	{ "en_JM",  0x2009 }, /* English (Jamaica) */
+	{ "en",     0x2409 }, /* English (Caribbean) */
+	{ "en_BZ",  0x2809 }, /* English (Belize) */
+	{ "en_TT",  0x2c09 }, /* English (Trinidad) */		
+	{ "en_ZW",  0x3009 }, /* English (Zimbabwe) */
+	{ "en_PH",  0x3409 }, /* English (Phillipines) */
+	{ "et_EE",  0x0425 }, /* Estonian */
+	{ "fo",     0x0438 }, /* Faeroese fo_ */
+	{ "fa_IR",  0x0429 }, /* Farsi */
+	{ "fi_FI",  0x040b }, /* Finnish */		
+	{ "fr_FR",  0x040c }, /* French (France) */
+	{ "fr_BE",  0x080c }, /* French (Belgium) */
+	{ "fr_CA",  0x0c0c }, /* French (Canada) */
+	{ "fr_CH",  0x100c }, /* French (Switzerland) */
+	{ "fr_LU",  0x140c }, /* French (Luxembourg) */
+	{ "fr_MC",  0x180c }, /* French (Monaco) */		
+	{ "gl",     0x0456 }, /* Galician gl_ */
+	{ "ga_IE",  0x083c }, /* Irish Gaelic */
+	{ "gd_GB",  0x100c }, /* Scottish Gaelic */
+	{ "ka_GE",  0x0437 }, /* Georgian */
+	{ "de_DE",  0x0407 }, /* German (Germany) */
+	{ "de_CH",  0x0807 }, /* German (Switzerland) */
+	{ "de_AT",  0x0c07 }, /* German (Austria) */
+	{ "de_LU",  0x1007 }, /* German (Luxembourg) */
+	{ "de_LI",  0x1407 }, /* German (Liechtenstein) */
+	{ "el_GR",  0x0408 }, /* Greek */
+	{ "gu",     0x0447 }, /* Gujarati gu_ */
+	{ "ha",     0x0468 }, /* Hausa */
+	{ "he_IL",  0x040d }, /* Hebrew */
+	{ "hi_IN",  0x0439 }, /* Hindi */
+	{ "hu_HU",  0x040e }, /* Hungarian */
+	{ "is_IS",  0x040f }, /* Icelandic */		
+	{ "id_ID",  0x0421 }, /* Indonesian */
+	{ "iu",     0x045d }, /* Inkutitut */
+	{ "it_IT",  0x0410 }, /* Italian (Italy) */
+	{ "it_CH",  0x0810 }, /* Italian (Switzerland) */
+	{ "ja_JP",  0x0411}, /* Japanese */
+	{ "kn",     0x044b }, /* Kannada kn_ */
+	{ "ks",     0x0860 }, /* Kashmiri (India) ks_ */
+	{ "kk",     0x043f }, /* Kazakh kk_ */
+	{ "kok",    0x0457 }, /* Konkani kok_ */
+	{ "ko_KR",  0x0412 }, /* Korean */
+	{ "ko",     0x0812 }, /* Korean (Johab) ko_ */
+	{ "kir",    0x0440 }, /* Kyrgyz */
+	{ "la",     0x0476 }, /* Latin */
+	{ "lo",     0x0454 }, /* Laothian */
+	{ "lv_LV",  0x0426 }, /* Latvian */
+	{ "lt_LT",  0x0427 }, /* Lithuanian */		
+	{ "lt_LT",  0x0827 }, /* Lithuanian (Classic) */
+	{ "mk",     0x042f }, /* FYRO Macedonian */
+	{ "my_MY",  0x043e }, /* Malaysian */
+	{ "my_BN",  0x083e }, /* Malay Brunei Darussalam */
+	{ "ml",     0x044c }, /* Malayalam ml_ */
+	{ "mr",     0x044e }, /* Marathi mr_ */
+	{ "mt",     0x043a }, /* Maltese */
+	{ "mo",     0x0450 }, /* Mongolian */
+	{ "ne_NP",  0x0461 }, /* Napali (Nepal) */
+	{ "ne_IN",  0x0861 }, /* Nepali (India) */
+	{ "nb_NO",  0x0414 }, /* Norwegian (Bokmaal) */
+	{ "nn_NO",  0x0814 }, /* Norwegian (Nynorsk) */
+	{ "or",     0x0448 }, /* Oriya or_ */
+	{ "om",     0x0472 }, /* Oromo (Afan, Galla) */
+	{ "pl_PL",  0x0415 }, /* Polish */		
+	{ "pt_BR",  0x0416 }, /* Portuguese (Brazil) */
+	{ "pt_PT",  0x0816 }, /* Portuguese (Portugal) */
+	{ "pa",     0x0446 }, /* Punjabi pa_ */
+	{ "ps",     0x0463 }, /* Pashto (Pushto) */
+	{ "rm",     0x0417 }, /* Rhaeto_Romanic rm_ */
+	{ "ro_RO",  0x0418 }, /* Romanian */
+	{ "ro_MD",  0x0818 }, /* Romanian (Moldova) */		
+	{ "ru_RU",  0x0419 }, /* Russian */
+	{ "ru_MD",  0x0819 }, /* Russian (Moldova) */
+	{ "se",     0x043b }, /* Sami (Lappish) se_ */
+	{ "sa",     0x044f }, /* Sanskrit sa_ */
+	{ "sr",     0x0c1a }, /* Serbian (Cyrillic) sr_ */
+	{ "sr",     0x081a }, /* Serbian (Latin) sr_ */		
+	{ "sd",     0x0459 }, /* Sindhi sd_ */
+	{ "sk_SK",  0x041b }, /* Slovak */
+	{ "sl_SI",  0x0424 }, /* Slovenian */
+	{ "wen",    0x042e }, /* Sorbian wen_ */
+	{ "so",     0x0477 }, /* Somali */
+	{ "es_ES",  0x040a }, /* Spanish (Spain, Traditional) */
+	{ "es_MX",  0x080a }, /* Spanish (Mexico) */		
+	{ "es_ES",  0x0c0a }, /* Spanish (Modern) */
+	{ "es_GT",  0x100a }, /* Spanish (Guatemala) */
+	{ "es_CR",  0x140a }, /* Spanish (Costa Rica) */
+	{ "es_PA",  0x180a }, /* Spanish (Panama) */
+	{ "es_DO",  0x1c0a }, /* Spanish (Dominican Republic) */
+	{ "es_VE",  0x200a }, /* Spanish (Venezuela) */		
+	{ "es_CO",  0x240a }, /* Spanish (Colombia) */
+	{ "es_PE",  0x280a }, /* Spanish (Peru) */
+	{ "es_AR",  0x2c0a }, /* Spanish (Argentina) */
+	{ "es_EC",  0x300a }, /* Spanish (Ecuador) */
+	{ "es_CL",  0x340a }, /* Spanish (Chile) */
+	{ "es_UY",  0x380a }, /* Spanish (Uruguay) */		
+	{ "es_PY",  0x3c0a }, /* Spanish (Paraguay) */
+	{ "es_BO",  0x400a }, /* Spanish (Bolivia) */
+	{ "es_SV",  0x440a }, /* Spanish (El Salvador) */
+	{ "es_HN",  0x480a }, /* Spanish (Honduras) */
+	{ "es_NI",  0x4c0a }, /* Spanish (Nicaragua) */
+	{ "es_PR",  0x500a }, /* Spanish (Puerto Rico) */
+	{ "sx",     0x0430 }, /* Sutu */
+	{ "sw",     0x0441 }, /* Swahili (Kiswahili/Kenya) */
+	{ "sv_SE",  0x041d }, /* Swedish */
+	{ "sv_FI",  0x081d }, /* Swedish (Finland) */
+	{ "ta",     0x0449 }, /* Tamil ta_ */
+	{ "tt",     0x0444 }, /* Tatar (Tatarstan) tt_ */
+	{ "te",     0x044a }, /* Telugu te_ */
+	{ "th_TH",  0x041e }, /* Thai */
+	{ "ts",     0x0431 }, /* Tsonga ts_ */
+	{ "tn",     0x0432 }, /* Tswana tn_ */
+	{ "tr_TR",  0x041f }, /* Turkish */
+	{ "tl",     0x0464 }, /* Tagalog */
+	{ "tg",     0x0428 }, /* Tajik */
+	{ "bo",     0x0451 }, /* Tibetan */
+	{ "ti",     0x0473 }, /* Tigrinya */
+	{ "uk_UA",  0x0422 }, /* Ukrainian */		
+	{ "ur_PK",  0x0420 }, /* Urdu (Pakistan) */
+	{ "ur_IN",  0x0820 }, /* Urdu (India) */
+	{ "uz",     0x0443 }, /* Uzbek (Latin) uz_ */
+	{ "uz",     0x0843 }, /* Uzbek (Cyrillic) uz_ */
+	{ "ven",    0x0433 }, /* Venda ven_ */
+	{ "vi_VN",  0x042a }, /* Vietnamese */
+	{ "cy_GB",  0x0452 }, /* Welsh */
+	{ "xh",     0x0434 }, /* Xhosa xh */
+	{ "yi",     0x043d }, /* Yiddish yi_ */
+	{ "yo",     0x046a }, /* Yoruba */
+	{ "zu",     0x0435 }, /* Zulu zu_ */
+	{ "en_US",  0x0800 } /* Default */
+};
+
+/**
+ * gsf_msole_lid_for_language
+ * @lang :
+ *
+ * Returns the LID (Language Identifier) for the input language.
+ * If lang is %null, return 0x0400 ("-none-"), and not 0x0000 ("no proofing")
+ **/
+guint
+gsf_msole_lid_for_language (char const *lang)
+{
+	guint i = 0 ;
+	size_t len;
+
+	if (lang == NULL)
+		return 0x0400;   /* return -none- */
+
+	/* Allow lang to match as a prefix (eg fr == fr_FR at euro) */
+	len = strlen (lang);
+	for (i = 0 ; i < G_N_ELEMENTS(gsf_msole_language_ids); i++)
+		if (!strncmp (lang, gsf_msole_language_ids[i].tag, len))
+			return gsf_msole_language_ids[i].lid;
+	
+	return 0x0400 ;   /* return -none- */
+}
+
+/**
+ * gsf_msole_language_for_lid :
+ * @lid :
+ *
+ * Returns the xx_YY style string (can be just xx or xxx) for the given LID.
+ * Return value must not be freed. If the LID is not found, is set to 0x0400,
+ * or is set to 0x0000, will return "-none-"
+ **/
+char const *
+gsf_msole_language_for_lid (guint lid)
+{
+	guint i = 0 ;
+	
+	for (i = 0 ; i < G_N_ELEMENTS(gsf_msole_language_ids); i++)
+		if (gsf_msole_language_ids[i].lid == lid)
+			return gsf_msole_language_ids[i].tag;
+	
+	return "-none-"; /* default */
+}
+
+/**
+ * gsf_msole_locale_to_lid :
+ *
+ * Covert the the codepage into an applicable LID
+ **/
+guint
+gsf_msole_codepage_to_lid (int codepage)
+{
+	switch (codepage) {
+	case 77:		/* MAC_CHARSET */
+		return 0xFFF;	/* This number is a hack */
+	case 128:		/* SHIFTJIS_CHARSET */
+		return 0x411;	/* Japanese */
+	case 129:		/* HANGEUL_CHARSET */
+		return 0x412;	/* Korean */
+	case 130:		/* JOHAB_CHARSET */
+		return 0x812;	/* Korean (Johab) */
+	case 134:		/* GB2312_CHARSET - Chinese Simplified */
+		return 0x804;	/* China PRC - And others!! */
+	case 136:		/* CHINESEBIG5_CHARSET - Chinese Traditional */
+		return 0x404;	/* Taiwan - And others!! */
+	case 161:		/* GREEK_CHARSET */
+		return 0x408;	/* Greek */
+	case 162:		/* TURKISH_CHARSET */
+		return 0x41f;	/* Turkish */
+	case 163:		/* VIETNAMESE_CHARSET */
+		return 0x42a;	/* Vietnamese */
+	case 177:		/* HEBREW_CHARSET */
+		return 0x40d;	/* Hebrew */
+	case 178:		/* ARABIC_CHARSET */
+		return 0x01;	/* Arabic */
+	case 186:		/* BALTIC_CHARSET */
+		return 0x425;	/* Estonian - And others!! */
+	case 204:		/* RUSSIAN_CHARSET */
+		return 0x419;	/* Russian - And others!! */
+	case 222:		/* THAI_CHARSET */
+		return 0x41e;	/* Thai */
+	case 238:		/* EASTEUROPE_CHARSET */
+		return 0x405;	/* Czech - And many others!! */
+	}
+
+	/* default */
+	return 0x0;
+}
+
+/**
+ * gsf_msole_lid_to_codepage
+ * @lid :
+ *
+ * Returns our best guess at the codepage for the given language id
+ **/
+int
+gsf_msole_lid_to_codepage (guint lid)
+{
+	if (lid == 0x0FFF) /* Macintosh Hack */
+		return 0x0FFF;
+
+	switch (lid & 0xff) {
+	case 0x01:		/* Arabic */
+		return 1256;
+	case 0x02:		/* Bulgarian */
+		return 1251;
+	case 0x03:		/* Catalan */
+		return 1252;
+	case 0x04:		/* Chinese */
+		switch (lid) {
+		case 0x1004:		/* Chinese (Singapore) */
+		case 0x0404:		/* Chinese (Taiwan) */
+		case 0x1404:		/* Chinese (Macau SAR) */
+		case 0x0c04:		/* Chinese (Hong Kong SAR, PRC) */
+			return 950;
+			
+		case 0x0804:		/* Chinese (PRC) */
+			return 936;
+		default :
+			break;
+		}
+		break;
+	case 0x05:		/* Czech */
+		return 1250;
+	case 0x06:		/* Danish */
+		return 1252;
+	case 0x07:		/* German */
+		return 1252;
+	case 0x08:		/* Greek */
+		return 1253;
+	case 0x09:		/* English */
+		return 1252;
+	case 0x0a:		/* Spanish */
+		return 1252;
+	case 0x0b:		/* Finnish */
+		return 1252;
+	case 0x0c:		/* French */
+		return 1252;
+	case 0x0d:		/* Hebrew */
+		return 1255;
+	case 0x0e:		/* Hungarian */
+		return 1250;
+	case 0x0f:		/* Icelandic */
+		return 1252;
+	case 0x10:		/* Italian */
+		return 1252;
+	case 0x11:		/* Japanese */
+		return 932;
+	case 0x12:		/* Korean */
+		switch (lid) {
+		case 0x0812:		/* Korean (Johab) */
+			return 1361;
+		case 0x0412:		/* Korean */
+			return 949;
+		default :
+			break;
+		}
+		break;
+	case 0x13:		/* Dutch */
+		return 1252;
+	case 0x14:		/* Norwegian */
+		return 1252;
+	case 0x15:		/* Polish */
+		return 1250;
+	case 0x16:		/* Portuguese */
+		return 1252;
+	case 0x17:		/* Rhaeto-Romanic */
+		return 1252;
+	case 0x18:		/* Romanian */
+		return 1250;
+	case 0x19:		/* Russian */
+		return 1251;
+	case 0x1a:		/* Serbian, Croatian, (Bosnian?) */
+		switch (lid) {
+		case 0x041a:		/* Croatian */
+			return 1252;
+		case 0x0c1a:		/* Serbian (Cyrillic) */
+			return 1251;
+		case 0x081a:		/* Serbian (Latin) */
+			return 1252;
+		default :
+			break;
+		}
+		break;
+	case 0x1b:		/* Slovak */
+		return 1250;
+	case 0x1c:		/* Albanian */
+		return 1251;
+	case 0x1d:		/* Swedish */
+		return 1252;
+	case 0x1e:		/* Thai */
+		return 874;
+	case 0x1f:		/* Turkish */
+		return 1254;
+	case 0x20:		/* Urdu. This is Unicode only. */
+		return 0;
+	case 0x21:		/* Bahasa Indonesian */
+		return 1252;
+	case 0x22:		/* Ukrainian */
+		return 1251;
+	case 0x23:		/* Byelorussian / Belarusian */
+		return 1251;
+	case 0x24:		/* Slovenian */
+		return 1250;
+	case 0x25:		/* Estonian */
+		return 1257;
+	case 0x26:		/* Latvian */
+		return 1257;
+	case 0x27:		/* Lithuanian */
+		return 1257;
+	case 0x29:		/* Farsi / Persian. This is Unicode only. */
+		return 0;
+	case 0x2a:		/* Vietnamese */
+		return 1258;
+	case 0x2b:		/* Windows 2000: Armenian. This is Unicode only. */
+		return 0;
+	case 0x2c:		/* Azeri */
+		switch (lid) {
+		case 0x082c:		/* Azeri (Cyrillic) */
+			return 1251;
+		default :
+			break;
+		}
+		break;
+	case 0x2d:		/* Basque */
+		return 1252;
+	case 0x2f:		/* Macedonian */
+		return 1251;
+	case 0x36:		/* Afrikaans */
+		return 1252;
+	case 0x37:		/* Windows 2000: Georgian. This is Unicode only. */
+		return 0;
+	case 0x38:		/* Faeroese */
+		return 1252;
+	case 0x39:		/* Windows 2000: Hindi. This is Unicode only. */
+		return 0;
+	case 0x3E:		/* Malaysian / Malay */
+		return 1252;
+	case 0x41:		/* Swahili */
+		return 1252;
+	case 0x43:		/* Uzbek */
+		switch (lid) {
+		case 0x0843:		/* Uzbek (Cyrillic) */
+			return 1251;
+		default :
+			break;
+		}
+		break;
+	case 0x45:		/* Windows 2000: Bengali. This is Unicode only. */
+	case 0x46:		/* Windows 2000: Punjabi. This is Unicode only. */
+	case 0x47:		/* Windows 2000: Gujarati. This is Unicode only. */
+	case 0x48:		/* Windows 2000: Oriya. This is Unicode only. */
+	case 0x49:		/* Windows 2000: Tamil. This is Unicode only. */
+	case 0x4a:		/* Windows 2000: Telugu. This is Unicode only. */
+	case 0x4b:		/* Windows 2000: Kannada. This is Unicode only. */
+	case 0x4c:		/* Windows 2000: Malayalam. This is Unicode only. */
+	case 0x4d:		/* Windows 2000: Assamese. This is Unicode only. */
+	case 0x4e:		/* Windows 2000: Marathi. This is Unicode only. */
+	case 0x4f:		/* Windows 2000: Sanskrit. This is Unicode only. */
+	case 0x55:		/* Myanmar / Burmese. This is Unicode only. */
+	case 0x57:		/* Windows 2000: Konkani. This is Unicode only. */
+	case 0x61:		/* Windows 2000: Nepali (India). This is Unicode only. */
+		return 0;
+
+#if 0
+		/****************************************************************** 
+		 * Below this line is untested, unproven, and are just guesses.   *
+		 * Insert above and use at your own risk                          *
+		 ******************************************************************/
+
+	case 0x042c:		/* Azeri (Latin) */
+	case 0x0443:		/* Uzbek (Latin) */
+	case 0x30:		/* Sutu */
+		return 1252; /* UNKNOWN, believed to be CP1252 */
+
+	case 0x3f:		/* Kazakh */
+		return 1251; /* JUST UNKNOWN, probably CP1251 */
+
+	case 0x44:		/* Tatar */
+	case 0x58:		/* Manipuri */
+	case 0x59:		/* Sindhi */
+	case 0x60:		/* Kashmiri (India) */
+		return 0; /* UNKNOWN, believed to be Unicode only */
+#endif
+	};
+	
+	/* This is just a guess, but it will be a frequent guess */
+	return 1252;
+}
+
+/**
+ * gsf_msole_lid_to_codepage_str
+ * @lid :
+ * 
+ * Returns the Iconv codepage string for the given LID.
+ * Return value must be g_free ()'d
+ **/
+gchar *
+gsf_msole_lid_to_codepage_str (guint lid)
+{
+	guint cp = 0;
+
+	if (lid == 0x0FFF)	/* Macintosh Hack */
+		return g_strdup ("MACINTOSH");
+
+	cp = gsf_msole_lid_to_codepage (lid);
+	return g_strdup_printf ("CP%d", cp);
+}
+
+/**
+ * gsf_msole_iconv_win_codepage :
+ *
+ * Returns our best guess at the applicable windows code page based on an
+ * 	environment variable or the current locale.
+ **/
+int
+gsf_msole_iconv_win_codepage (void)
+{
+	char *lang;
+
+	if ((lang = getenv("WINDOWS_LANGUAGE")) == NULL) {
+		char const *locale = setlocale (LC_CTYPE, NULL);
+		if (locale != NULL) {
+			char const *lang_sep = strchr (locale, '.');
+			if (lang_sep)
+				lang = g_strndup (locale, (unsigned)(lang_sep - locale));
+			else
+				lang = g_strdup (locale); /* simplifies exit */
+		}
+	}
+
+	if (lang != NULL) {
+		guint lid = gsf_msole_lid_for_language (lang);
+		g_free (lang);
+		return gsf_msole_lid_to_codepage (lid);
+	}
+	return 1252; /* default ansi */
+}
+
+static GSList *
+gsf_msole_iconv_get_codepage_string_list (int codepage)
+{
+	GSList *cp_list = NULL;
+
+	switch (codepage)
+	{
+		case 1200:
+			cp_list = g_slist_prepend (cp_list, g_strdup ("UTF-16LE"));
+			break;
+		case 1201:
+			cp_list = g_slist_prepend (cp_list, g_strdup ("UTF-16BE"));
+			break;
+		case 0x8000:
+		case 10000:
+			cp_list = g_slist_prepend (cp_list, g_strdup ("MACROMAN"));
+			cp_list = g_slist_prepend (cp_list, g_strdup ("MACINTOSH"));
+			break;
+		case -535:
+		case 65001:
+			cp_list = g_slist_prepend (cp_list, g_strdup ("UTF-8"));
+			break;
+		case 0x8001:
+			/* according to OOo docs 8001 is a synonym CP1252 */
+			codepage = 1252;
+		default:
+			cp_list = g_slist_prepend (cp_list, g_strdup_printf ("CP%u", codepage));
+	}
+	
+	return cp_list;
+}
+
+/**
+ * gsf_msole_iconv_open_codepage_for_import :
+ * @to:
+ * @codepage :
+ *
+ * Returns an iconv converter for @codepage -> utf8.
+ **/
+GIConv
+gsf_msole_iconv_open_codepage_for_import (char const *to, int codepage)
+{
+	GIConv iconv_handle = (GIConv)(-1);
+	gchar *codepage_str;
+	GSList *codepage_list, *cp;
+	g_return_val_if_fail (to != NULL, (GIConv)(-1));
+
+	cp = codepage_list = gsf_msole_iconv_get_codepage_string_list (codepage);
+	while (cp) {
+		codepage_str = cp->data;
+		if (iconv_handle == (GIConv)(-1))
+			iconv_handle = g_iconv_open (to, codepage_str);
+		g_free (codepage_str);
+		cp = cp->next;
+	}
+	g_slist_free (codepage_list);
+
+	if (iconv_handle == (GIConv)(-1))
+		g_warning ("Unable to open an iconv handle from codepage %d -> %s",
+			   codepage, to);
+	return iconv_handle;
+}
+
+/**
+ * gsf_msole_iconv_open_for_import :
+ * @codepage :
+ *
+ * Returns an iconv converter for single byte encodings @codepage -> utf8.
+ * 	Attempt to handle the semantics of a specification for multibyte encodings
+ * 	since this is only supposed to be used for single bytes.
+ **/
+GIConv
+gsf_msole_iconv_open_for_import (int codepage)
+{
+	return gsf_msole_iconv_open_codepage_for_import ("UTF-8", codepage);
+}
+
+/**
+ * gsf_msole_iconv_open_codepages_for_export :
+ * @codepage_to :
+ * @from :
+ *
+ * Returns an iconv converter to go from utf8 -> to our best guess at a useful
+ * 	windows codepage.
+ **/
+GIConv
+gsf_msole_iconv_open_codepages_for_export (int codepage_to, char const *from)
+{
+	GIConv iconv_handle = (GIConv)(-1);
+	gchar *codepage_str;
+	GSList *codepage_list, *cp;
+	g_return_val_if_fail (from != NULL, (GIConv)(-1));
+
+	cp = codepage_list = gsf_msole_iconv_get_codepage_string_list (codepage_to);
+	while (cp) {
+		codepage_str = cp->data;
+		if (iconv_handle == (GIConv)(-1))
+			iconv_handle = g_iconv_open (codepage_str, from);
+		g_free (codepage_str);
+		cp = cp->next;
+	}
+	g_slist_free (codepage_list);
+
+	if (iconv_handle == (GIConv)(-1))
+		g_warning ("Unable to open an iconv handle from %s -> codepage %u",
+			   from, codepage_to);
+	return iconv_handle;
+}
+
+/**
+ * gsf_msole_iconv_open_codepage_for_export :
+ * @codepage_to:
+ *
+ * Returns an iconv converter to go from utf8 -> to our best guess at a useful
+ * 	windows codepage.
+ **/
+GIConv
+gsf_msole_iconv_open_codepage_for_export (int codepage_to)
+{
+	return gsf_msole_iconv_open_codepages_for_export (codepage_to, "UTF-8");
+}
+
+/**
+ * gsf_msole_iconv_open_for_export :
+ *
+ * Returns an iconv convert to go from utf8 -> to our best guess at a useful
+ * 	windows codepage.
+ **/
+GIConv
+gsf_msole_iconv_open_for_export (void)
+{
+	return gsf_msole_iconv_open_codepage_for_export (gsf_msole_iconv_win_codepage ());
+}
+
+#define VBA_COMPRESSION_WINDOW 4096
+
+/**
+ * gsf_msole_inflate:
+ * @input: stream to read from
+ * @offset: offset into it for start byte of compresse stream
+ * 
+ * Decompresses an LZ compressed stream.
+ * 
+ * Return value: A GByteArray that the caller is responsible for freeing
+ **/
+GByteArray *
+gsf_msole_inflate (GsfInput *input, gsf_off_t offset)
+{
+	GByteArray *res;
+	unsigned	i, win_pos, pos = 0;
+	unsigned	mask, shift, distance;
+	guint8		flag, buffer [VBA_COMPRESSION_WINDOW];
+	guint8 const   *tmp;
+	guint16		token, len;
+	gboolean	clean = TRUE;
+
+	if (gsf_input_seek (input, offset, G_SEEK_SET))
+		return NULL;
+
+	res = g_byte_array_new ();
+
+	/* explaination from libole2/ms-ole-vba.c */
+	/* The first byte is a flag byte.  Each bit in this byte
+	 * determines what the next byte is.  If the bit is zero,
+	 * the next byte is a character.  Otherwise the  next two
+	 * bytes contain the number of characters to copy from the
+	 * umcompresed buffer and where to copy them from (offset,
+	 * length).
+	 */
+	while (NULL != gsf_input_read (input, 1, &flag))
+		for (mask = 1; mask < 0x100 ; mask <<= 1)
+			if (flag & mask) {
+				if (NULL == (tmp = gsf_input_read (input, 2, NULL)))
+					break;
+				win_pos = pos % VBA_COMPRESSION_WINDOW;
+				if (win_pos <= 0x80) {
+					if (win_pos <= 0x20)
+						shift = (win_pos <= 0x10) ? 12 : 11;
+					else
+						shift = (win_pos <= 0x40) ? 10 : 9;
+				} else {
+					if (win_pos <= 0x200)
+						shift = (win_pos <= 0x100) ? 8 : 7;
+					else if (win_pos <= 0x800)
+						shift = (win_pos <= 0x400) ? 6 : 5;
+					else
+						shift = 4;
+				}
+
+				token = GSF_LE_GET_GUINT16 (tmp);
+				len = (token & ((1 << shift) - 1)) + 3;
+				distance = token >> shift;
+				clean = TRUE;
+/*				fprintf (stderr, "Shift %d, token len %d, distance %d bytes %.2x %.2x\n",
+				shift, len, distance, (token & 0xff), (token >> 8)); */
+
+				for (i = 0; i < len; i++) {
+					unsigned srcpos = (pos - distance - 1) % VBA_COMPRESSION_WINDOW;
+					guint8 c = buffer [srcpos];
+					buffer [pos++ % VBA_COMPRESSION_WINDOW] = c;
+				}
+			} else {
+				if ((pos != 0) && ((pos % VBA_COMPRESSION_WINDOW) == 0) && clean) {
+					(void) gsf_input_read (input, 2, NULL);
+					clean = FALSE;
+					g_byte_array_append (res, buffer, VBA_COMPRESSION_WINDOW);
+					break;
+				}
+				if (NULL != gsf_input_read (input, 1, buffer + (pos % VBA_COMPRESSION_WINDOW)))
+					pos++;
+				clean = TRUE;
+			}
+
+	if (pos % VBA_COMPRESSION_WINDOW)
+		g_byte_array_append (res, buffer, pos % VBA_COMPRESSION_WINDOW);
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-msole-utils.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,54 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-msole-utils.h: various tools for handling MS OLE files
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_MSOLE_UTILS_H
+#define GSF_MSOLE_UTILS_H
+
+#include <gsf/gsf.h>
+#include <gsf/gsf-doc-meta-data.h>
+
+G_BEGIN_DECLS
+
+GError	   *gsf_msole_metadata_read	  (GsfInput *in,
+					   GsfDocMetaData *accum);
+gboolean    gsf_msole_metadata_write	  (GsfOutput *out,
+					   GsfDocMetaData const *meta_data,
+					   gboolean doc_not_component);
+
+guint	    gsf_msole_lid_for_language	  (char const *lang);
+guint	    gsf_msole_codepage_to_lid	  (int codepage);
+int	    gsf_msole_lid_to_codepage	  (guint lid);
+gchar	   *gsf_msole_lid_to_codepage_str (guint lid);
+char const *gsf_msole_language_for_lid	  (guint lid);
+
+int	    gsf_msole_iconv_win_codepage    (void) ;
+GIConv	    gsf_msole_iconv_open_for_import (int codepage) ;
+GIConv	    gsf_msole_iconv_open_for_export (void) ;
+
+GIConv	    gsf_msole_iconv_open_codepage_for_import  (char const *to, int codepage);
+GIConv	    gsf_msole_iconv_open_codepages_for_export (int codepage_to, char const *from);
+GIConv	    gsf_msole_iconv_open_codepage_for_export  (int codepage_to);
+
+GByteArray *gsf_msole_inflate (GsfInput *input, gsf_off_t offset);
+
+G_END_DECLS
+
+#endif /* GSF_MSOLE_UTILS_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,48 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile-impl.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTFILE_IMPL_H
+#define GSF_OUTFILE_IMPL_H
+
+#include <gsf/gsf.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-outfile.h>
+
+G_BEGIN_DECLS
+
+struct _GsfOutfile {
+	GsfOutput parent;
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+	GsfOutput   *(*new_child) (GsfOutfile *outfile,
+				   char const *name, gboolean is_dir,
+				   char const *first_property_name,
+				   va_list args);
+} GsfOutfileClass;
+
+#define GSF_OUTFILE_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_OUTFILE_TYPE, GsfOutfileClass))
+#define GSF_IS_OUTFILE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_OUTFILE_TYPE))
+
+G_END_DECLS
+
+#endif /* GSF_OUTFILE_IMPL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,795 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile-msole.c: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Outc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-outfile-impl.h>
+#include <gsf/gsf-outfile-msole.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-msole-impl.h>
+#include <gsf/gsf-utils.h>
+
+#include <string.h>
+#include <stdio.h>
+
+static GObjectClass *parent_class;
+static GsfOutputClass *gsf_output_class;
+
+#undef G_LOG_DOMAIN
+#define G_LOG_DOMAIN "libgsf:msole"
+
+typedef enum { MSOLE_DIR, MSOLE_SMALL_BLOCK, MSOLE_BIG_BLOCK } MSOleOutfileType;
+
+/* The most common values */
+#define OLE_DEFAULT_THRESHOLD	 0x1000
+#define OLE_DEFAULT_BB_SIZE	 (1 << OLE_DEFAULT_BB_SHIFT)
+#define OLE_DEFAULT_SB_SIZE	 (1 << OLE_DEFAULT_SB_SHIFT)
+
+struct _GsfOutfileMSOle {
+	GsfOutfile parent;
+
+	GsfOutput    	*sink;
+	GsfOutfileMSOle	*root;
+
+	MSOleOutfileType type;
+	unsigned	 first_block;
+	unsigned	 blocks;
+	unsigned	 child_index;
+
+	struct {
+		unsigned shift;
+		unsigned size;
+	} bb, sb;
+
+	union {
+		struct {
+			GSList 	  *children;
+			GPtrArray *root_order;	/* only valid for the root */
+		} dir;
+		struct {
+			guint8 *buf;
+		} small_block;
+		struct {
+			size_t  start_offset;	/* in bytes */
+		} big_block;
+	} content;
+	unsigned char clsid[16];		/* 16 byte GUID used by some apps */
+};
+typedef GsfOutfileClass GsfOutfileMSOleClass;
+
+static void
+gsf_outfile_msole_finalize (GObject *obj)
+{
+	GsfOutfileMSOle *ole = GSF_OUTFILE_MSOLE (obj);
+	GsfOutput *output = GSF_OUTPUT (obj);
+
+	if (!gsf_output_is_closed (output))
+		gsf_output_close (output);
+
+	if (ole->sink != NULL) {
+		g_object_unref (G_OBJECT (ole->sink));
+		ole->sink = NULL;
+	}
+	switch (ole->type) {
+	case MSOLE_DIR:
+		if (ole->content.dir.children != NULL) {
+			g_slist_free (ole->content.dir.children);
+			ole->content.dir.children = NULL;
+		}
+		if (ole->content.dir.root_order != NULL)
+			g_warning ("Finalizing a MSOle Outfile without closing it.");
+		break;
+
+	case MSOLE_SMALL_BLOCK:
+		if (ole->content.small_block.buf != NULL) {
+			g_free (ole->content.small_block.buf);
+			ole->content.small_block.buf = NULL;
+		}
+		break;
+
+	case MSOLE_BIG_BLOCK:
+		break;
+	default :
+		g_warning ("Unknown file type");
+	}
+	parent_class->finalize (obj);
+}
+
+static gboolean
+gsf_outfile_msole_seek (GsfOutput *output, gsf_off_t offset,
+			GSeekType whence)
+{
+	GsfOutfileMSOle *ole = (GsfOutfileMSOle *)output;
+
+	switch (whence) {
+	case G_SEEK_SET : break;
+	case G_SEEK_CUR : offset += output->cur_offset;	break;
+	case G_SEEK_END : offset += output->cur_size;	break;
+	default :
+		break; /*checked in GsfOutput wrapper */
+	}
+
+	switch (ole->type) {
+	case MSOLE_DIR:
+		if (offset != 0) {
+			g_warning ("Attempt to seek a directory");
+			return FALSE;
+		}
+		return TRUE;
+
+	case MSOLE_SMALL_BLOCK:
+		/* it is ok to seek past the big block threshold
+		 * we don't convert until they _write_ something
+		 */
+		return TRUE;
+
+	case MSOLE_BIG_BLOCK:
+		return gsf_output_seek (ole->sink,
+			(gsf_off_t)(ole->content.big_block.start_offset + offset),
+			G_SEEK_SET);
+
+	default :
+		return FALSE;
+	}
+
+	return FALSE;
+}
+
+/* Globals to support variable OLE sector size.					*/
+/* 512 and 4096 bytes are the only known values for sector size on		*/
+/* Win2k/XP platforms.  Attempts to create OLE files on Win2k/XP with		*/
+/* other values	using StgCreateStorageEx() fail with invalid parameter.		*/
+/* This code has been tested with 128,256,512,4096,8192	sizes for		*/
+/* libgsf read/write.  Interoperability with MS OLE32.DLL has been		*/
+/* tested with 512 and 4096 block size for filesizes up to 2GB.			*/
+
+#define ZERO_PAD_BUF_SIZE 4096
+
+/* static objects are zero-initialized as per C/C++ standards */
+static guint8 const zero_buf [ZERO_PAD_BUF_SIZE];
+
+/* Calculate the block of the current offset in the file.  A useful idiom is to
+ * pad_zero to move to the start of the next block, then get the block number.
+ * This avoids fence post type problems with partial blocks. */
+static inline guint32
+ole_cur_block (GsfOutfileMSOle const *ole)
+{
+	return (gsf_output_tell (ole->sink) - OLE_HEADER_SIZE) >> ole->bb.shift;
+}
+
+static inline unsigned
+ole_bytes_left_in_block (GsfOutfileMSOle *ole)
+{
+	/* blocks are multiples of bb.size (the header is padded out to bb.size) */
+	unsigned r = gsf_output_tell (ole->sink) % ole->bb.size;
+	return (r != 0) ? (ole->bb.size - r) : 0;
+}
+
+static void
+ole_pad_zero (GsfOutfileMSOle *ole)
+{
+	/* no need to bounds check.  len will always be less than bb.size, and
+	 * we already check that zero_buf is big enough at creation */
+	unsigned len = ole_bytes_left_in_block (ole);
+	if (len > 0)
+		gsf_output_write (ole->sink, len, zero_buf);
+}
+
+/* Utility routine to generate a BAT for a file known to be sequential and
+ * continuous. */
+static void
+ole_write_bat (GsfOutput *sink, guint32 block, unsigned blocks)
+{
+	guint8 buf [BAT_INDEX_SIZE];
+
+/* FIXME FIXME FIXME  optimize this to dump a buffer in 1 step */
+	while (blocks-- > 1) {
+		block++;
+		GSF_LE_SET_GUINT32 (buf, block);
+		gsf_output_write (sink, BAT_INDEX_SIZE, buf);
+	}
+	GSF_LE_SET_GUINT32 (buf, BAT_MAGIC_END_OF_CHAIN);
+	gsf_output_write (sink, BAT_INDEX_SIZE, buf);
+}
+
+static void
+ole_write_const (GsfOutput *sink, guint32 value, unsigned n)
+{
+	guint8 buf [BAT_INDEX_SIZE];
+
+	GSF_LE_SET_GUINT32 (buf, value);
+	while (n-- > 0)
+		gsf_output_write (sink, BAT_INDEX_SIZE, buf);
+}
+
+static void
+ole_pad_bat_unused (GsfOutfileMSOle *ole, unsigned residual)
+{
+	ole_write_const (ole->sink, BAT_MAGIC_UNUSED, 
+		(ole_bytes_left_in_block (ole) / BAT_INDEX_SIZE) - residual);
+}
+
+/* write the metadata (dirents, small block, xbats) and close the sink */
+static gboolean
+gsf_outfile_msole_close_root (GsfOutfileMSOle *ole)
+{
+	GsfOutfile *tmp;
+	guint8  buf [OLE_HEADER_SIZE];
+	guint32	sbat_start, num_sbat, sb_data_start, sb_data_size, sb_data_blocks;
+	guint32	bat_start, num_bat, dirent_start, num_dirent_blocks, next, child_index;
+	unsigned i, j, blocks, num_xbat, xbat_pos;
+	gsf_off_t data_size;
+	unsigned metabat_size = ole->bb.size / BAT_INDEX_SIZE - 1;
+	GPtrArray *elem = ole->root->content.dir.root_order;
+
+	/* write small block data */
+	blocks = 0;
+	sb_data_start = ole_cur_block (ole);
+	data_size = gsf_output_tell (ole->sink);
+	for (i = 0 ; i < elem->len ; i++) {
+		GsfOutfileMSOle *child = g_ptr_array_index (elem, i);
+		if (child->type == MSOLE_SMALL_BLOCK) {
+			gsf_off_t size = gsf_output_size (GSF_OUTPUT (child));
+			if (size > 0) {
+				child->blocks = ((size - 1) >> ole->sb.shift) + 1;
+				gsf_output_write (ole->sink,
+						  child->blocks << ole->sb.shift,
+						  child->content.small_block.buf);
+				child->first_block = blocks;
+				blocks += child->blocks;
+			} else {
+				child->blocks = 0;
+				child->first_block = BAT_MAGIC_END_OF_CHAIN;
+			}
+		}
+	}
+	data_size = gsf_output_tell (ole->sink) - data_size;
+	sb_data_size = data_size;
+	if ((gsf_off_t) sb_data_size != data_size) {
+		/* Check for overflow */
+		g_warning ("File too big");
+		return FALSE;
+	}
+	ole_pad_zero (ole);
+	sb_data_blocks = ole_cur_block (ole) - sb_data_start;
+
+	/* write small block BAT (the meta bat is in a file) */
+	sbat_start = ole_cur_block (ole);
+	for (i = 0 ; i < elem->len ; i++) {
+		GsfOutfileMSOle *child = g_ptr_array_index (elem, i);
+		if (child->type == MSOLE_SMALL_BLOCK && child->blocks > 0)
+			ole_write_bat (ole->sink, child->first_block, child->blocks);
+	}
+	ole_pad_bat_unused (ole, 0);
+	num_sbat = ole_cur_block (ole) - sbat_start;
+
+	/* write dirents */
+	dirent_start = ole_cur_block (ole);
+	for (i = 0 ; i < elem->len ; i++) {
+		GsfOutfileMSOle *child = g_ptr_array_index (elem, i);
+		glong j, name_len = 0;
+
+		memset (buf, 0, DIRENT_SIZE);
+
+		/* Hard code 'Root Entry' for the root */
+		if (i == 0 || gsf_output_name (GSF_OUTPUT (child)) != NULL) {
+			char const *name = (i == 0)
+				? "Root Entry" : gsf_output_name (GSF_OUTPUT (child));
+			gunichar2 *name_utf16 = g_utf8_to_utf16 (name,
+				-1, NULL, &name_len, NULL);
+			if (name_len >= DIRENT_MAX_NAME_SIZE)
+				name_len = DIRENT_MAX_NAME_SIZE-1;
+
+			/* be wary about endianness */
+			for (j = 0 ; j < name_len ; j++)
+				GSF_LE_SET_GUINT16 (buf + j*2, name_utf16 [j]);
+			g_free (name_utf16);
+			name_len++;
+		}
+		GSF_LE_SET_GUINT16 (buf + DIRENT_NAME_LEN, name_len*2);
+
+		if (child->root == child) {
+			GSF_LE_SET_GUINT8  (buf + DIRENT_TYPE,	DIRENT_TYPE_ROOTDIR);
+			GSF_LE_SET_GUINT32 (buf + DIRENT_FIRSTBLOCK,
+				(sb_data_size > 0) ? sb_data_start : BAT_MAGIC_END_OF_CHAIN);
+			GSF_LE_SET_GUINT32 (buf + DIRENT_FILE_SIZE, sb_data_size);
+			memcpy (buf + DIRENT_CLSID, child->clsid, sizeof (child->clsid));
+		} else if (child->type == MSOLE_DIR) {
+			GSF_LE_SET_GUINT8 (buf + DIRENT_TYPE, DIRENT_TYPE_DIR);
+			GSF_LE_SET_GUINT32 (buf + DIRENT_FIRSTBLOCK, BAT_MAGIC_END_OF_CHAIN);
+			GSF_LE_SET_GUINT32 (buf + DIRENT_FILE_SIZE, 0);
+			/* write the class id */
+			memcpy (buf + DIRENT_CLSID, child->clsid, sizeof (child->clsid));
+		} else {
+			guint32 size = child->parent.parent.cur_size;
+
+			if ((gsf_off_t) size != child->parent.parent.cur_size)
+				g_warning ("File too big");
+			GSF_LE_SET_GUINT8 (buf + DIRENT_TYPE, DIRENT_TYPE_FILE);
+			GSF_LE_SET_GUINT32 (buf + DIRENT_FIRSTBLOCK, child->first_block);
+			GSF_LE_SET_GUINT32 (buf + DIRENT_FILE_SIZE, size);
+		}
+		/* make everything black (red == 0) */
+		GSF_LE_SET_GUINT8  (buf + DIRENT_COLOUR, 1);
+
+		tmp = gsf_output_container (GSF_OUTPUT (child));
+		next = DIRENT_MAGIC_END;
+		if (child->root != child && tmp != NULL) {
+			GSList *ptr = GSF_OUTFILE_MSOLE (tmp)->content.dir.children;
+			for (; ptr != NULL ; ptr = ptr->next)
+				if (ptr->data == child) {
+					if (ptr->next != NULL) {
+						GsfOutfileMSOle *sibling = ptr->next->data;
+						next = sibling->child_index;
+					}
+					break;
+				}
+		}
+		/* make linked list rather than tree, only use next */
+		GSF_LE_SET_GUINT32 (buf + DIRENT_PREV, DIRENT_MAGIC_END);
+		GSF_LE_SET_GUINT32 (buf + DIRENT_NEXT, next);
+
+		child_index = DIRENT_MAGIC_END;
+		if (child->type == MSOLE_DIR && child->content.dir.children != NULL) {
+			GsfOutfileMSOle *first = child->content.dir.children->data;
+			child_index = first->child_index;
+		}
+		GSF_LE_SET_GUINT32 (buf + DIRENT_CHILD, child_index);
+
+		gsf_output_write (ole->sink, DIRENT_SIZE, buf);
+	}
+	ole_pad_zero (ole);
+	num_dirent_blocks = ole_cur_block (ole) - dirent_start;
+
+	/* write BAT */
+	bat_start = ole_cur_block (ole);
+	for (i = 0 ; i < elem->len ; i++) {
+		GsfOutfileMSOle *child = g_ptr_array_index (elem, i);
+		if (child->type == MSOLE_BIG_BLOCK)
+			ole_write_bat (ole->sink, child->first_block, child->blocks);
+	}
+	if (sb_data_blocks > 0)
+		ole_write_bat (ole->sink, sb_data_start, sb_data_blocks);
+	if (num_sbat > 0)
+		ole_write_bat (ole->sink, sbat_start, num_sbat);
+	ole_write_bat (ole->sink, dirent_start, num_dirent_blocks);
+
+	/* List the BAT and meta-BAT blocks in the BAT.  Doing this may
+	 * increase the size of the bat and hence the metabat, so be
+	 * prepared to iterate.
+	 */
+	num_bat = 0;
+	num_xbat = 0;
+recalc_bat_bat :
+	i = ((ole->sink->cur_size
+	      + BAT_INDEX_SIZE * (num_bat + num_xbat)
+	      - OLE_HEADER_SIZE - 1) >> ole->bb.shift) + 1;
+	i -= bat_start;
+	if (num_bat != i) {
+		num_bat = i;
+		goto recalc_bat_bat;
+	}
+	i = 0;
+	if (num_bat > OLE_HEADER_METABAT_SIZE)
+		i = 1 + ((num_bat - OLE_HEADER_METABAT_SIZE - 1)
+			 / metabat_size);
+	if (num_xbat != i) {
+		num_xbat = i;
+		goto recalc_bat_bat;
+	}
+
+	ole_write_const (ole->sink, BAT_MAGIC_BAT, num_bat);
+	ole_write_const (ole->sink, BAT_MAGIC_METABAT, num_xbat);
+	ole_pad_bat_unused (ole, 0);
+
+	if (num_xbat > 0) {
+		xbat_pos = ole_cur_block (ole);
+		blocks = OLE_HEADER_METABAT_SIZE;
+	} else {
+		xbat_pos = BAT_MAGIC_END_OF_CHAIN;
+		blocks = num_bat;
+	}
+
+	/* fix up the header */
+	if (ole->bb.size == 4096) {
+		/* set _cSectDir for 4k sector files */
+		GSF_LE_SET_GUINT32 (buf,   num_dirent_blocks);
+		gsf_output_seek (ole->sink,
+			(gsf_off_t) OLE_HEADER_CSECTDIR, G_SEEK_SET);
+		gsf_output_write (ole->sink, 4, buf);
+	}
+	GSF_LE_SET_GUINT32 (buf,   num_bat);
+	GSF_LE_SET_GUINT32 (buf+4, dirent_start);
+	gsf_output_seek (ole->sink,
+		(gsf_off_t) OLE_HEADER_NUM_BAT, G_SEEK_SET);
+	gsf_output_write (ole->sink, 8, buf);
+
+	GSF_LE_SET_GUINT32 (buf+0x0,
+		(num_sbat > 0) ? sbat_start : BAT_MAGIC_END_OF_CHAIN);
+	GSF_LE_SET_GUINT32 (buf+0x4, num_sbat);
+	GSF_LE_SET_GUINT32 (buf+0x8, xbat_pos);
+	GSF_LE_SET_GUINT32 (buf+0xc, num_xbat);
+	gsf_output_seek (ole->sink, (gsf_off_t) OLE_HEADER_SBAT_START,
+			 G_SEEK_SET);
+	gsf_output_write (ole->sink, 0x10, buf);
+
+	/* write initial Meta-BAT */
+	for (i = 0 ; i < blocks ; i++) {
+		GSF_LE_SET_GUINT32 (buf, bat_start + i);
+		gsf_output_write (ole->sink, BAT_INDEX_SIZE, buf);
+	}
+
+	/* write extended Meta-BAT */
+	if (num_xbat > 0) {
+		gsf_output_seek (ole->sink, 0, G_SEEK_END);
+		for (i = 0 ; i++ < num_xbat ; ) {
+			bat_start += blocks;
+			num_bat   -= blocks;
+			blocks = (num_bat > metabat_size) ? metabat_size : num_bat;
+			for (j = 0 ; j < blocks ; j++) {
+				GSF_LE_SET_GUINT32 (buf, bat_start + j);
+				gsf_output_write (ole->sink, BAT_INDEX_SIZE, buf);
+			}
+
+			if (i == num_xbat) {
+				ole_pad_bat_unused (ole, 1);
+				xbat_pos = BAT_MAGIC_END_OF_CHAIN;
+			} else
+				xbat_pos++;
+			GSF_LE_SET_GUINT32 (buf, xbat_pos);
+			gsf_output_write (ole->sink, BAT_INDEX_SIZE, buf);
+		}
+	}
+
+	/* free the children */
+	for (i = 0 ; i < elem->len ; i++)
+		g_object_unref (G_OBJECT (g_ptr_array_index (elem, i)));
+	g_ptr_array_free (elem, TRUE);
+	ole->content.dir.root_order = NULL;
+
+	return gsf_output_close (ole->sink);
+}
+
+static gboolean
+gsf_outfile_msole_close (GsfOutput *output)
+{
+	GsfOutfileMSOle *ole = (GsfOutfileMSOle *)output;
+
+	if (gsf_output_container (output) == NULL)	/* The root dir */
+		return gsf_outfile_msole_close_root (ole);
+
+	if (ole->type == MSOLE_BIG_BLOCK) {
+		gsf_outfile_msole_seek (output, 0, G_SEEK_END);
+		ole_pad_zero (ole);
+		ole->blocks = ole_cur_block (ole) - ole->first_block;
+		return gsf_output_unwrap (G_OBJECT (output), ole->sink);
+	}
+
+	return TRUE;
+}
+
+static gboolean
+gsf_outfile_msole_write (GsfOutput *output,
+			 size_t num_bytes, guint8 const *data)
+{
+	GsfOutfileMSOle *ole = (GsfOutfileMSOle *)output;
+	size_t wsize;
+
+	g_return_val_if_fail (ole->type != MSOLE_DIR, FALSE);
+	if (ole->type == MSOLE_SMALL_BLOCK) {
+		gboolean ok;
+		guint8 *buf;
+		gsf_off_t start_offset;
+
+		if ((output->cur_offset + num_bytes) < OLE_DEFAULT_THRESHOLD) {
+			memcpy (ole->content.small_block.buf + output->cur_offset,
+				data, num_bytes);
+			return TRUE;
+		}
+		ok = gsf_output_wrap (G_OBJECT (output), ole->sink);
+		if (!ok)
+			return FALSE;
+
+		buf = ole->content.small_block.buf;
+		ole->content.small_block.buf = NULL;
+		start_offset = gsf_output_tell (ole->sink);
+		ole->content.big_block.start_offset = start_offset;
+		if ((gsf_off_t) ole->content.big_block.start_offset
+		    != start_offset) {
+			/* Check for overflow */
+			g_warning ("File too big");
+			return FALSE;
+		}
+		
+		ole->first_block = ole_cur_block (ole);
+		ole->type = MSOLE_BIG_BLOCK;
+		wsize = output->cur_size;
+		if ((gsf_off_t) wsize != output->cur_size) {
+			/* Check for overflow */
+			g_warning ("File too big");
+			return FALSE;
+		}
+		gsf_output_write (ole->sink, wsize, buf);
+		g_free (buf);
+	}
+
+	g_return_val_if_fail (ole->type == MSOLE_BIG_BLOCK, FALSE);
+
+	gsf_output_write (ole->sink, num_bytes, data);
+
+	return TRUE;
+}
+
+static gsf_off_t gsf_outfile_msole_vprintf (GsfOutput *output,
+	char const *format, va_list args) G_GNUC_PRINTF (2, 0);
+
+static gsf_off_t
+gsf_outfile_msole_vprintf (GsfOutput *output, char const *format, va_list args)
+{
+	GsfOutfileMSOle *ole = (GsfOutfileMSOle *)output;
+
+	/* An optimization. */
+	if (ole->type == MSOLE_BIG_BLOCK)
+		return gsf_output_vprintf (ole->sink, format, args);
+
+	/* In other cases, use the gsf_output_real_vprintf fallback method.
+	 * (This eventually calls gsf_outfile_msole_write, which will also
+	 * check that ole->type != MSOLE_DIR.)
+	 */
+	return gsf_output_class->Vprintf (output, format, args);
+}
+
+
+static void
+ole_register_child (GsfOutfileMSOle *root, GsfOutfileMSOle *child)
+{
+	child->root = root;
+	g_object_ref (G_OBJECT (child));
+	child->child_index = root->content.dir.root_order->len;
+	g_ptr_array_add (root->content.dir.root_order, child);
+}
+
+static gint
+ole_name_cmp (GsfOutfileMSOle const *a, GsfOutfileMSOle const *b)
+{
+	/* According to the docs length is more important than lexical order */
+	char const *a_name = gsf_output_name ((GsfOutput const *)a);
+	char const *b_name = gsf_output_name ((GsfOutput const *)b);
+
+	/* be anal */
+	if (a_name == NULL)
+		return (b_name == NULL) ? 0 : -1;
+	else if (b_name == NULL)
+		return 1;
+	else {
+		unsigned a_len = g_utf8_strlen (a_name, -1);
+		unsigned b_len = g_utf8_strlen (b_name, -1);
+
+		if (a_len != b_len)
+			return a_len - b_len;
+		return g_utf8_collate (a_name, b_name);
+	}
+}
+
+static void
+gsf_outfile_msole_set_block_shift (GsfOutfileMSOle *ole,
+				   unsigned bb_shift, unsigned sb_shift)
+{
+	ole->bb.shift = bb_shift;
+	ole->bb.size  = (1 << ole->bb.shift);
+	ole->sb.shift = sb_shift;
+	ole->sb.size  = (1 << ole->sb.shift);
+}
+
+static GsfOutput *
+gsf_outfile_msole_new_child (GsfOutfile *parent,
+			     char const *name, gboolean is_dir,
+			     char const *first_property_name, va_list args)
+{
+	GsfOutfileMSOle *ole_parent = (GsfOutfileMSOle *)parent;
+	GsfOutfileMSOle *child;
+
+	g_return_val_if_fail (ole_parent != NULL, NULL);
+	g_return_val_if_fail (ole_parent->type == MSOLE_DIR, NULL);
+
+	child = (GsfOutfileMSOle *)g_object_new_valist (
+		GSF_OUTFILE_MSOLE_TYPE, first_property_name, args);
+	if (is_dir) {
+		child->type = MSOLE_DIR;
+		child->content.dir.children = NULL;
+	} else {
+		/* start as small block */
+		child->type = MSOLE_SMALL_BLOCK;
+		child->content.small_block.buf = g_new0 (guint8, OLE_DEFAULT_THRESHOLD);
+	}
+	g_object_ref (G_OBJECT (ole_parent->sink));
+	child->sink   = ole_parent->sink;
+	child->root   = ole_parent->root;
+	gsf_outfile_msole_set_block_shift (child,
+		ole_parent->bb.shift, ole_parent->sb.shift); 
+	gsf_output_set_name (GSF_OUTPUT (child), name);
+	gsf_output_set_container (GSF_OUTPUT (child), parent);
+
+	ole_parent->content.dir.children = g_slist_insert_sorted (
+		ole_parent->content.dir.children, child,
+		(GCompareFunc)ole_name_cmp);
+	ole_register_child (ole_parent->root, child);
+
+	return GSF_OUTPUT (child);
+}
+
+static void
+gsf_outfile_msole_init (GObject *obj)
+{
+	GsfOutfileMSOle *ole = GSF_OUTFILE_MSOLE (obj);
+
+	ole->sink   = NULL;
+	ole->root   = NULL;
+	ole->type   = MSOLE_DIR;
+
+	gsf_outfile_msole_set_block_shift (ole, 
+		OLE_DEFAULT_BB_SHIFT, OLE_DEFAULT_SB_SHIFT);
+
+	ole->content.dir.children = NULL;
+	ole->content.dir.root_order = NULL;
+	memset (ole->clsid, 0, sizeof (ole->clsid));
+}
+
+static void
+gsf_outfile_msole_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass  *output_class  = GSF_OUTPUT_CLASS (gobject_class);
+	GsfOutfileClass *outfile_class = GSF_OUTFILE_CLASS (gobject_class);
+
+	gobject_class->finalize		= gsf_outfile_msole_finalize;
+	output_class->Close		= gsf_outfile_msole_close;
+	output_class->Seek		= gsf_outfile_msole_seek;
+	output_class->Write		= gsf_outfile_msole_write;
+	output_class->Vprintf		= gsf_outfile_msole_vprintf;
+	outfile_class->new_child	= gsf_outfile_msole_new_child;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+	gsf_output_class = g_type_class_peek (GSF_OUTPUT_TYPE);
+}
+
+GSF_CLASS (GsfOutfileMSOle, gsf_outfile_msole,
+	   gsf_outfile_msole_class_init, gsf_outfile_msole_init,
+	   GSF_OUTFILE_TYPE)
+
+/* returns the number of times 1 must be shifted left to reach value */
+static unsigned
+compute_shift (unsigned value)
+{
+	unsigned i = 0;
+	while ((value >> i) > 1)
+		i++;
+	return i;
+}
+
+/**
+ * gsf_outfile_msole_new_full :
+ * @sink : a #GsfOutput to hold the OLE2 file.
+ * @bb_size : size of large blocks.
+ * @sb_size : size of small blocks.
+ *
+ * Creates the root directory of an MS OLE file and manages the addition of
+ * children.
+ *
+ * NOTE : adds a reference to @sink
+ *
+ * Returns the new ole file handler
+ **/
+GsfOutfile *
+gsf_outfile_msole_new_full (GsfOutput *sink, guint bb_size, guint sb_size)
+{
+	static guint8 const default_header [] = {
+/* 0x00 */	0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1,
+/* 0x08 */	0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+/* 0x18 */	0x3e, 0x00, 0x03, 0x00, 0xfe, 0xff, 0x09, 0x00,
+/* 0x20 */	0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+/* 0x28 */	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+/* 0x30 */	0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+/* 0x38 */	0x00, 0x10, 0x00, 0x00 /* 0x3c-0x4b: filled on close */
+	};
+	guint8 *buf;
+	GsfOutfileMSOle *ole;
+
+	g_return_val_if_fail (GSF_IS_OUTPUT (sink), NULL);
+
+	ole = g_object_new (GSF_OUTFILE_MSOLE_TYPE, NULL);
+	g_object_ref (G_OBJECT (sink));
+	ole->sink = sink;
+	ole->type = MSOLE_DIR;
+	ole->content.dir.root_order = g_ptr_array_new ();
+	ole_register_child (ole, ole);
+
+	gsf_outfile_msole_set_block_shift (ole,
+		compute_shift (bb_size), compute_shift (sb_size));
+	if (ole->bb.size != bb_size ||
+	    ole->sb.size != sb_size ||
+	    bb_size <= sb_size ||
+	    bb_size < DIRENT_SIZE ||
+	    sb_size < 8 ||
+	    ZERO_PAD_BUF_SIZE < ole->bb.size) {
+		if (ZERO_PAD_BUF_SIZE < ole->bb.size)
+			g_warning ("Block size is too big, failing back to defaults.");
+		else
+			g_warning ("Incorrect block sizes, failing back to defaults.");
+		gsf_outfile_msole_set_block_shift (ole,
+			OLE_DEFAULT_BB_SHIFT, OLE_DEFAULT_SB_SHIFT);
+	}
+
+	/* The names are the same */
+	gsf_output_set_name (GSF_OUTPUT (ole), gsf_output_name (sink));
+	gsf_output_set_container (GSF_OUTPUT (ole), NULL);
+
+	/* build the header */
+	buf = g_new (guint8, OLE_HEADER_SIZE);
+	memcpy (buf, default_header, sizeof (default_header));
+	memset (buf + sizeof (default_header), 0xff,
+		OLE_HEADER_SIZE - sizeof (default_header));
+	GSF_LE_SET_GUINT16 (buf + OLE_HEADER_BB_SHIFT, ole->bb.shift);
+	GSF_LE_SET_GUINT16 (buf + OLE_HEADER_SB_SHIFT, ole->sb.shift);
+	/* 4k sector OLE files seen in the wild have version 4 */
+	if (ole->bb.size == 4096)
+		GSF_LE_SET_GUINT16 (buf + OLE_HEADER_MAJOR_VER, 4);
+	gsf_output_write (sink, OLE_HEADER_SIZE, buf);
+	g_free (buf);
+
+	/* header must be padded out to bb.size with zeros */
+	ole_pad_zero(ole);
+
+	return GSF_OUTFILE (ole);
+}
+
+/**
+ * gsf_outfile_msole_new :
+ * @sink : a #GsfOutput to hold the OLE2 file
+ *
+ * Creates the root directory of an MS OLE file and manages the addition of
+ * children.
+ *
+ * NOTE : adds a reference to @sink
+ *
+ * Returns the new ole file handler
+ **/
+GsfOutfile *
+gsf_outfile_msole_new (GsfOutput *sink)
+{
+	return gsf_outfile_msole_new_full (sink, 
+		OLE_DEFAULT_BB_SIZE, OLE_DEFAULT_SB_SIZE);
+}
+
+/**
+ * gsf_outfile_msole_set_class_id :
+ * @ole: a #GsfOutfileMSOle
+ * @clsid: 16 byte identifier (often a GUID in MS Windows apps)
+ *
+ * Write @clsid to the directory associated with @ole.
+ *
+ * Returns TRUE on success.
+ **/
+gboolean
+gsf_outfile_msole_set_class_id (GsfOutfileMSOle *ole, guint8 const *clsid)
+{
+	g_return_val_if_fail (ole != NULL && ole->type == MSOLE_DIR, FALSE);
+	memcpy (ole->clsid, clsid, sizeof (ole->clsid));
+	return TRUE;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-msole.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,48 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile-msole.h: interface for creating OLE files
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTFILE_MSOLE_H
+#define GSF_OUTFILE_MSOLE_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GsfOutfileMSOle GsfOutfileMSOle;
+
+#define GSF_OUTFILE_MSOLE_TYPE	(gsf_outfile_msole_get_type ())
+#define GSF_OUTFILE_MSOLE(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_MSOLE_TYPE, GsfOutfileMSOle))
+#define GSF_IS_OUTFILE_MSOLE(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_MSOLE_TYPE))
+
+#define OLE_DEFAULT_SB_SHIFT	 6
+#define OLE_DEFAULT_BB_SHIFT	 9
+
+GType	    gsf_outfile_msole_get_type (void);
+GsfOutfile *gsf_outfile_msole_new	   (GsfOutput *sink);
+GsfOutfile *gsf_outfile_msole_new_full	   (GsfOutput *sink,
+					    guint bb_size, guint sb_size);
+gboolean    gsf_outfile_msole_set_class_id (GsfOutfileMSOle *ole,
+					    guint8 const *clsid);
+
+G_END_DECLS
+
+#endif /* GSF_OUTFILE_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,170 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile-stdio.c: A directory tree wrapper for Outfile
+ *
+ * Copyright (C) 2004 Novell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-outfile-impl.h>
+#include <gsf/gsf-outfile-stdio.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#ifdef HAVE_GLIB26
+#include <glib/gstdio.h>
+#else
+#include "glib24_26-compat.h"
+#endif // HAVE_GLIB26
+
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+static GObjectClass *parent_class;
+
+struct _GsfOutfileStdio {
+	GsfOutfile parent;
+	char      *root;
+};
+typedef GsfOutfileClass GsfOutfileStdioClass;
+
+static void
+gsf_outfile_stdio_finalize (GObject *obj)
+{
+	GsfOutfileStdio *ofs = GSF_OUTFILE_STDIO (obj);
+	g_free (ofs->root);
+	parent_class->finalize (obj);
+}
+
+static GsfOutput *
+gsf_outfile_stdio_new_child (GsfOutfile *parent,
+			     char const *name, gboolean is_dir,
+			     G_GNUC_UNUSED char const *first_property_name,
+			     G_GNUC_UNUSED va_list args)
+{
+	GsfOutfileStdio *ofs = GSF_OUTFILE_STDIO (parent);
+	GsfOutput *child;
+	char *path = g_build_filename (ofs->root, name, NULL);
+
+/* FIXME FIXME FIXME  FIX : allow args */
+	if (is_dir)
+		child = (GsfOutput *)gsf_outfile_stdio_new (path, NULL);
+	else
+		child = gsf_output_stdio_new (path, NULL);
+	g_free (path);
+
+	return child;
+}
+
+static gboolean
+gsf_outfile_stdio_close (G_GNUC_UNUSED GsfOutput *output)
+{
+	return TRUE;
+}
+
+static void
+gsf_outfile_stdio_init (GsfOutfileStdio *ofs)
+{
+	ofs->root = NULL;
+}
+
+static void
+gsf_outfile_stdio_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+	GsfOutfileClass *outfile_class = GSF_OUTFILE_CLASS (gobject_class);
+
+	parent_class = g_type_class_peek (GSF_OUTFILE_TYPE);
+
+	gobject_class->finalize = gsf_outfile_stdio_finalize;
+
+	output_class->Close	= gsf_outfile_stdio_close;
+	output_class->Seek	= NULL;
+	output_class->Write	= NULL;
+	output_class->Vprintf	= NULL;
+
+	outfile_class->new_child = gsf_outfile_stdio_new_child;
+}
+
+GSF_CLASS (GsfOutfileStdio, gsf_outfile_stdio,
+	   gsf_outfile_stdio_class_init, gsf_outfile_stdio_init,
+	   GSF_OUTFILE_TYPE)
+
+/**
+ * gsf_outfile_stdio_new :
+ * @root : root directory in utf8.
+ * @err	 : optionally NULL.
+ *
+ * Returns a new outfile or NULL.
+ **/
+GsfOutfile *
+gsf_outfile_stdio_new_valist (char const *root, GError **err,
+			      char const *first_property_name,
+			      va_list     var_args)
+{
+	GsfOutfileStdio *ofs;
+
+	if (0 != g_mkdir (root, 0777)) {
+		if (err != NULL) {
+			int save_errno = errno;
+			char *utf8name = g_filename_display_name (root);
+			*err = g_error_new (gsf_output_error_id (), 0,
+					    "%s: %s",
+					    utf8name, g_strerror (save_errno));
+			g_free (utf8name);
+		}
+		return NULL;
+	}
+
+	ofs = (GsfOutfileStdio *) g_object_new_valist (GSF_OUTFILE_STDIO_TYPE,
+		first_property_name, var_args);
+	ofs->root = g_strdup (root);
+	gsf_output_set_name_from_filename (GSF_OUTPUT (ofs), root);
+
+	return GSF_OUTFILE (ofs);
+}
+
+GsfOutfile *
+gsf_outfile_stdio_new_full (char const *root, GError **err,
+			    const gchar    *first_property_name,
+			    ...)
+{
+	GsfOutfile *res;
+	va_list var_args;
+	
+	va_start (var_args, first_property_name);
+	res = gsf_outfile_stdio_new_valist (root, err, first_property_name, var_args);
+	va_end (var_args);
+
+	return res;
+}
+
+/**
+ * gsf_outfile_stdio_new :
+ * @root : root directory in utf8.
+ * @err	 : optionally NULL.
+ *
+ * Returns a new outfile or NULL.
+ **/
+GsfOutfile *
+gsf_outfile_stdio_new (char const *root, GError **err)
+{
+	return gsf_outfile_stdio_new_full (root, err, NULL);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-stdio.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,46 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile-stdio.h: write a directory tree
+ *
+ * Copyright (C) 2004 Novell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTFILE_STDIO_H
+#define GSF_OUTFILE_STDIO_H
+
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GsfOutfileStdio GsfOutfileStdio;
+
+#define GSF_OUTFILE_STDIO_TYPE	(gsf_outfile_stdio_get_type ())
+#define GSF_OUTFILE_STDIO(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_STDIO_TYPE, GsfOutfileStdio))
+#define GSF_IS_OUTFILE_STDIO(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_STDIO_TYPE))
+
+GType	    gsf_outfile_stdio_get_type	 (void);
+GsfOutfile *gsf_outfile_stdio_new	 (char const *root, GError **err);
+GsfOutfile *gsf_outfile_stdio_new_full	 (char const *root, GError **err,
+					  char const *first_property_name,
+					  ...); /* G_GNUC_NULL_TERMINATED */
+GsfOutfile *gsf_outfile_stdio_new_valist (char const *root, GError **err,
+					  char const *first_property_name,
+					  va_list     var_args);
+
+G_END_DECLS
+
+#endif /* GSF_OUTFILE_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,760 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile-zip.c: zip archive output.
+ *
+ * Copyright (C) 2002-2004 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Outc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-outfile-impl.h>
+#include <gsf/gsf-outfile-zip.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-zip-impl.h>
+
+#include <string.h>
+#include <time.h>
+#include <zlib.h>
+
+#undef G_LOG_DOMAIN
+#define G_LOG_DOMAIN "libgsf:zip"
+
+enum {
+	PROP_0,
+	PROP_SINK,
+	PROP_ENTRY_NAME,
+	PROP_COMPRESSION_LEVEL
+};
+
+static GObjectClass *parent_class;
+
+struct _GsfOutfileZip {
+	GsfOutfile parent;
+
+	GsfOutput     *sink;
+	GsfOutfileZip *root;
+
+	char *entry_name;
+
+	GsfZipVDir    *vdir;
+	GPtrArray     *root_order;	/* only valid for the root */
+
+	z_stream  *stream;
+	GsfZipCompressionMethod compression_method;
+
+	gboolean   writing;
+
+	guint8   *buf;
+	size_t    buf_size;
+};
+
+typedef struct {
+	GsfOutfileClass  parent_class;
+} GsfOutfileZipClass;
+
+#define GSF_OUTFILE_ZIP_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_OUTFILE_ZIP_TYPE, GsfOutfileZipClass))
+#define GSF_IS_OUTFILE_ZIP_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_OUTFILE_ZIP_TYPE))
+
+static void
+disconnect_children (GsfOutfileZip *zip)
+{
+	unsigned i;
+
+	if (!zip->root_order)
+		return;
+
+	for (i = 0 ; i < zip->root_order->len ; i++) {
+		GsfOutfileZip *child =
+			g_ptr_array_index (zip->root_order, i);
+		if (child)
+			g_object_unref (child);
+	}
+	g_ptr_array_free (zip->root_order, TRUE);
+	zip->root_order = NULL;
+}
+
+static void
+gsf_outfile_zip_finalize (GObject *obj)
+{
+	GsfOutfileZip *zip = GSF_OUTFILE_ZIP (obj);
+
+	/* If the closing failed, we might have stuff here.  */
+	disconnect_children (zip);
+
+	if (zip->sink != NULL) {
+		g_object_unref (zip->sink);
+		zip->sink = NULL;
+	}
+
+	g_free (zip->entry_name);
+
+	if (zip->stream)
+		(void) deflateEnd (zip->stream);
+	g_free (zip->stream);
+	g_free (zip->buf);
+
+	if (zip == zip->root)
+		gsf_vdir_free (zip->vdir, TRUE); /* Frees vdirs recursively */
+
+	parent_class->finalize (obj);
+}
+
+static GObject *
+gsf_outfile_zip_constructor (GType                  type,
+			     guint                  n_construct_properties,
+			     GObjectConstructParam *construct_params)
+{
+	GsfOutfileZip *zip =(GsfOutfileZip *)
+		(parent_class->constructor (type,
+					    n_construct_properties,
+					    construct_params));
+
+	if (!zip->entry_name) {
+		zip->vdir = gsf_vdir_new ("", TRUE, NULL);
+		zip->root_order = g_ptr_array_new ();
+		zip->root = zip;
+
+		/* The names are the same */
+		gsf_output_set_name (GSF_OUTPUT (zip), gsf_output_name (zip->sink));
+		gsf_output_set_container (GSF_OUTPUT (zip), NULL);
+	}
+
+	return (GObject *)zip;
+}
+
+static gboolean
+gsf_outfile_zip_seek (G_GNUC_UNUSED GsfOutput *output,
+		      G_GNUC_UNUSED gsf_off_t offset,
+		      G_GNUC_UNUSED GSeekType whence)
+{
+	return FALSE;
+}
+
+static gboolean
+zip_dirent_write (GsfOutput *sink, GsfZipDirent *dirent)
+{
+	static guint8 const dirent_signature[] =
+		{ 'P', 'K', 0x01, 0x02 };
+	guint8 buf[ZIP_DIRENT_SIZE];
+	int nlen = strlen (dirent->name);
+	gboolean ret;
+
+	memset (buf, 0, sizeof buf);
+	memcpy (buf, dirent_signature, sizeof dirent_signature);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_ENCODER, 0x317); /* Unix */
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_EXTRACT, 0x14);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_FLAGS, 0x08);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_COMPR_METHOD,
+			    dirent->compr_method);
+	GSF_LE_SET_GUINT32 (buf + ZIP_DIRENT_DOSTIME, dirent->dostime);
+	GSF_LE_SET_GUINT32 (buf + ZIP_DIRENT_CRC32, dirent->crc32);
+	GSF_LE_SET_GUINT32 (buf + ZIP_DIRENT_CSIZE, dirent->csize);
+	GSF_LE_SET_GUINT32 (buf + ZIP_DIRENT_USIZE, dirent->usize);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_NAME_SIZE, nlen);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_EXTRAS_SIZE, 0);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_COMMENT_SIZE, 0);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_DISKSTART, 0);
+	GSF_LE_SET_GUINT16 (buf + ZIP_DIRENT_FILE_TYPE, 0);
+	/* Hardcode file mode 644 */
+	GSF_LE_SET_GUINT32 (buf + ZIP_DIRENT_FILE_MODE, 0644 << 16);
+	GSF_LE_SET_GUINT32 (buf + ZIP_DIRENT_OFFSET, dirent->offset);
+
+	ret = gsf_output_write (sink, sizeof buf, buf);
+	if (ret)
+		ret = gsf_output_write (sink, nlen, dirent->name);
+
+	return ret;
+}
+
+static gboolean
+zip_trailer_write (GsfOutfileZip *zip, unsigned entries, gsf_off_t dirpos)
+{
+	static guint8 const trailer_signature[] =
+		{ 'P', 'K', 0x05, 0x06 };
+	guint8 buf[ZIP_TRAILER_SIZE];
+	gsf_off_t pos = gsf_output_tell (zip->sink);
+
+	memset (buf, 0, sizeof buf);
+	memcpy (buf, trailer_signature, sizeof trailer_signature);
+	GSF_LE_SET_GUINT16 (buf + ZIP_TRAILER_ENTRIES, entries);
+	GSF_LE_SET_GUINT16 (buf + ZIP_TRAILER_TOTAL_ENTRIES, entries);
+	GSF_LE_SET_GUINT32 (buf + ZIP_TRAILER_DIR_SIZE, pos - dirpos);
+	GSF_LE_SET_GUINT32 (buf + ZIP_TRAILER_DIR_POS, dirpos);
+
+	return gsf_output_write (zip->sink, sizeof buf, buf);
+}
+
+static gboolean
+zip_close_root (GsfOutput *output)
+{
+	GsfOutfileZip *zip = GSF_OUTFILE_ZIP (output);
+	GsfOutfileZip *child;
+	gsf_off_t dirpos = gsf_output_tell (zip->sink);
+	GPtrArray *elem = zip->root_order;
+	unsigned entries = elem->len;
+	unsigned i;
+
+	/* Check that children are closed */
+	for (i = 0 ; i < elem->len ; i++) {
+		child = g_ptr_array_index (elem, i);
+		if (!gsf_output_is_closed (GSF_OUTPUT (child))) {
+			g_warning ("Child still open");
+			return FALSE;
+		}
+	}
+
+	/* Write directory */
+	for (i = 0 ; i < entries ; i++) {
+		child = g_ptr_array_index (elem, i);
+		if (!zip_dirent_write (zip->sink, child->vdir->dirent))
+			return FALSE;
+	}
+
+	disconnect_children (zip);
+
+	return zip_trailer_write (zip, entries, dirpos);
+}
+
+static void
+stream_name_write_to_buf (GsfOutfileZip *zip, GString *res)
+{
+	GsfOutput  *output = GSF_OUTPUT (zip);
+	GsfOutfile *container;
+
+	if (zip == zip->root)
+		return;
+
+	container = gsf_output_container (output);
+	if (container) {
+		stream_name_write_to_buf (GSF_OUTFILE_ZIP (container), res);
+		if (res->len) {
+			/* Forward slash is specified by the format.  */
+			g_string_append_c (res, '/');
+		}
+	}
+
+	if (zip->entry_name)
+		g_string_append (res, zip->entry_name);
+}
+
+static char *
+stream_name_build (GsfOutfileZip *zip)
+{
+	GString *str = g_string_sized_new (80);
+	stream_name_write_to_buf (zip, str);
+	return g_string_free (str, FALSE);
+}
+
+static guint32
+zip_time_make (time_t t)
+{
+	struct tm *localnow = localtime (&t);
+	guint32 ztime;
+
+	ztime = (localnow->tm_year - 80) & 0x7f;
+	ztime = (ztime << 4) | ((localnow->tm_mon + 1)  & 0x0f);
+	ztime = (ztime << 5) | (localnow->tm_mday & 0x1f);
+	ztime = (ztime << 5) | (localnow->tm_hour & 0x1f);
+	ztime = (ztime << 6) | (localnow->tm_min  & 0x3f);
+	ztime = (ztime << 5) | ((localnow->tm_sec / 2) & 0x1f);
+
+	return ztime;
+}
+
+static GsfZipDirent*
+zip_dirent_new_out (GsfOutfileZip *zip)
+{
+	GsfZipDirent *dirent = gsf_zip_dirent_new ();
+	dirent->name = stream_name_build (zip);
+	dirent->compr_method = zip->compression_method;
+	dirent->dostime = zip_time_make (time (NULL));
+	return dirent;
+}
+
+static gboolean
+zip_header_write (GsfOutfileZip *zip)
+{
+	static guint8 const header_signature[] =
+		{ 'P', 'K', 0x03, 0x04 };
+	guint8 hbuf[ZIP_HEADER_SIZE];
+	GsfZipDirent *dirent = zip->vdir->dirent;
+	guint16 flags = 0;
+	char *name = dirent->name;
+	int   nlen = strlen (name);
+	gboolean ret;
+
+	memset (hbuf, 0, sizeof hbuf);
+	memcpy (hbuf, header_signature, sizeof header_signature);
+	GSF_LE_SET_GUINT16 (hbuf + ZIP_HEADER_VERSION, 0x14);
+	if (dirent->compr_method == GSF_ZIP_DEFLATED)
+		flags = 0x08;
+	GSF_LE_SET_GUINT16 (hbuf + ZIP_HEADER_FLAGS, flags);
+	GSF_LE_SET_GUINT16 (hbuf + ZIP_HEADER_COMP_METHOD,
+			    dirent->compr_method);
+	GSF_LE_SET_GUINT32 (hbuf + ZIP_HEADER_TIME, dirent->dostime);
+	GSF_LE_SET_GUINT16 (hbuf + ZIP_HEADER_NAME_LEN, nlen);
+	ret = gsf_output_write (zip->sink, sizeof hbuf, hbuf);
+	if (ret)
+		ret = gsf_output_write (zip->sink, nlen, name);
+
+	return ret;
+}
+
+static gboolean
+zip_init_write (GsfOutput *output)
+{
+	GsfOutfileZip *zip = GSF_OUTFILE_ZIP (output);
+	GsfZipDirent *dirent;
+	int      ret;
+
+	if (zip->root->writing) {
+		g_warning ("Already writing to another stream in archive");
+		return FALSE;
+	}
+
+	if (!gsf_output_wrap (G_OBJECT (output), zip->sink))
+		return FALSE;
+
+	dirent = zip_dirent_new_out (zip);
+	dirent->offset = gsf_output_tell (zip->sink);
+	if (zip->vdir->dirent)
+		g_warning ("Leak.");
+
+	zip->vdir->dirent = dirent;
+	zip_header_write (zip);
+	zip->writing = TRUE;
+	zip->root->writing = TRUE;
+	dirent->crc32 = crc32 (0L, Z_NULL, 0);
+	if (zip->compression_method == GSF_ZIP_DEFLATED) {
+		if (!zip->stream) {
+			zip->stream = g_new0 (z_stream, 1);
+		}
+		ret = deflateInit2 (zip->stream, Z_DEFAULT_COMPRESSION,
+				    Z_DEFLATED, -MAX_WBITS, MAX_MEM_LEVEL,
+				    Z_DEFAULT_STRATEGY);
+		if (ret != Z_OK)
+			return FALSE;
+		if (!zip->buf) {
+			zip->buf_size = ZIP_BUF_SIZE;
+			zip->buf = g_new (guint8, zip->buf_size);
+		}
+		zip->stream->next_out  = zip->buf;
+		zip->stream->avail_out = zip->buf_size;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+zip_output_block (GsfOutfileZip *zip)
+{
+	size_t num_bytes = zip->buf_size - zip->stream->avail_out;
+	GsfZipDirent *dirent = zip->vdir->dirent;
+
+	if (!gsf_output_write (zip->sink, num_bytes, zip->buf)) {
+		return FALSE;
+	}
+	dirent->csize += num_bytes;
+	zip->stream->next_out  = zip->buf;
+	zip->stream->avail_out = zip->buf_size;
+
+	return TRUE;
+}
+
+static gboolean
+zip_flush (GsfOutfileZip *zip)
+{
+	int zret;
+
+	do {
+		zret = deflate (zip->stream, Z_FINISH);
+		if (zret == Z_OK || (zret == Z_BUF_ERROR && zip->stream->avail_out == 0)) {
+			/*  In this case Z_OK or Z_BUF_ERROR means more buffer 
+			    space is needed  */
+			if (!zip_output_block (zip))
+				return FALSE;
+		}
+	} while (zret == Z_OK || zret == Z_BUF_ERROR);
+	if (zret != Z_STREAM_END)
+		return FALSE;
+	if (!zip_output_block (zip))
+		return FALSE;
+
+	return TRUE;
+}
+
+/* Write the per stream data descriptor */
+static gboolean
+zip_ddesc_write (GsfOutfileZip *zip)
+{
+	static guint8 const ddesc_signature[] =
+		{ 'P', 'K', 0x07, 0x08 };
+	guint8 buf[16];
+	GsfZipDirent *dirent = zip->vdir->dirent;
+
+	memcpy (buf, ddesc_signature, sizeof ddesc_signature);
+	GSF_LE_SET_GUINT32 (buf + 4, dirent->crc32);
+	GSF_LE_SET_GUINT32 (buf + 8, dirent->csize);
+	GSF_LE_SET_GUINT32 (buf + 12, dirent->usize);
+	if (!gsf_output_write (zip->sink, sizeof buf, buf)) {
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+zip_header_write_sizes (GsfOutfileZip *zip)
+{
+	guint8 hbuf[ZIP_HEADER_SIZE];
+	GsfZipDirent *dirent = zip->vdir->dirent;
+	gsf_off_t pos = gsf_output_tell (zip->sink);
+
+	if (!gsf_output_seek (zip->sink, dirent->offset + ZIP_HEADER_CRC,
+			      G_SEEK_SET))
+		return FALSE;
+
+	GSF_LE_SET_GUINT32 (hbuf + ZIP_HEADER_CRC, dirent->crc32);
+	GSF_LE_SET_GUINT32 (hbuf + ZIP_HEADER_COMP_SIZE, dirent->csize);
+	GSF_LE_SET_GUINT32 (hbuf + ZIP_HEADER_UNCOMP_SIZE, dirent->usize);
+	if (!gsf_output_write (zip->sink, 12, hbuf + ZIP_HEADER_CRC))
+		return FALSE;
+	if (!gsf_output_seek (zip->sink, pos, G_SEEK_SET))
+		return FALSE;
+
+	return TRUE;
+}
+
+static gboolean
+zip_close_stream (GsfOutput *output)
+{
+	GsfOutfileZip *zip = GSF_OUTFILE_ZIP (output);
+	gboolean result;
+
+	if (!zip->writing)
+		if (!zip_init_write (output))
+			return FALSE;
+
+	if (zip->compression_method == GSF_ZIP_DEFLATED) {
+		if (!zip_flush (zip))
+			return FALSE;
+
+		if (!zip_ddesc_write (zip)) /* Write data descriptor */
+			return FALSE;
+	} else {
+		if (!zip_header_write_sizes (zip)) /* Write crc, sizes */
+			return FALSE;
+	}
+	zip->root->writing = FALSE;
+
+	result = gsf_output_unwrap (G_OBJECT (output), zip->sink);
+
+	/* Free unneeded memory */
+	if (zip->stream) {
+		(void) deflateEnd (zip->stream);
+		g_free (zip->stream);
+		zip->stream = NULL;
+		g_free (zip->buf);
+		zip->buf = NULL;
+	}
+
+	return result;
+}
+
+static gboolean
+gsf_outfile_zip_close (GsfOutput *output)
+{
+	GsfOutfileZip *zip = GSF_OUTFILE_ZIP (output);
+	gboolean ret;
+
+	/* The root dir */
+	if (zip == zip->root)
+		ret = zip_close_root (output);
+	else if (zip->vdir->is_directory)
+		/* Directories: Do nothing. Should change this to actually
+		 * write dirs which don't have children. */
+		ret = TRUE;
+	else
+		ret = zip_close_stream (output);
+
+	return ret;
+}
+
+static gboolean
+gsf_outfile_zip_write (GsfOutput *output,
+		       size_t num_bytes, guint8 const *data)
+{
+	GsfOutfileZip *zip = GSF_OUTFILE_ZIP (output);
+	GsfZipDirent *dirent;
+	int ret;
+
+	g_return_val_if_fail (zip && zip->vdir, FALSE);
+	g_return_val_if_fail (!zip->vdir->is_directory, FALSE);
+	g_return_val_if_fail (data, FALSE);
+
+	if (!zip->writing)
+		if (!zip_init_write (output))
+			return FALSE;
+
+	dirent = zip->vdir->dirent;
+	if (zip->compression_method == GSF_ZIP_DEFLATED) {
+		zip->stream->next_in  = (unsigned char *) data;
+		zip->stream->avail_in = num_bytes;
+
+		while (zip->stream->avail_in > 0) {
+			if (zip->stream->avail_out == 0) {
+				if (!zip_output_block (zip))
+					return FALSE;
+			}
+			ret = deflate (zip->stream, Z_NO_FLUSH);
+			if (ret != Z_OK)
+				return FALSE;
+		}
+	} else {
+		if (!gsf_output_write (zip->sink, num_bytes, data))
+			return FALSE;
+		dirent->csize += num_bytes;
+	}
+	dirent->crc32 = crc32 (dirent->crc32, data, num_bytes);
+	dirent->usize += num_bytes;
+
+	return TRUE;
+}
+
+static void
+root_register_child (GsfOutfileZip *root, GsfOutfileZip *child)
+{
+	child->root = root;
+	if (!child->vdir->is_directory) {
+		g_object_ref (child);
+		g_ptr_array_add (root->root_order, child);
+	}
+}
+
+static void
+gsf_outfile_zip_set_sink (GsfOutfileZip *zip, GsfOutput *sink)
+{
+	if (sink)
+		g_object_ref (sink);
+	if (zip->sink)
+		g_object_unref (zip->sink);
+	zip->sink = sink;
+}
+
+static GsfOutput *
+gsf_outfile_zip_new_child (GsfOutfile *parent,
+			   char const *name, gboolean is_dir,
+			   char const *first_property_name, va_list args)
+{
+	GsfOutfileZip *zip_parent = (GsfOutfileZip *)parent;
+	GsfOutfileZip *child;
+	size_t n_params = 0;
+	GParameter *params = NULL;
+	char *display_name;
+
+	g_return_val_if_fail (zip_parent != NULL, NULL);
+	g_return_val_if_fail (zip_parent->vdir, NULL);
+	g_return_val_if_fail (zip_parent->vdir->is_directory, NULL);
+	g_return_val_if_fail (name && *name, NULL);
+
+	gsf_property_settings_collect (GSF_OUTFILE_ZIP_TYPE,
+				       &params, &n_params,
+				       "sink", zip_parent->sink,
+				       "entry-name", name,
+				       NULL);
+	gsf_property_settings_collect_valist (GSF_OUTFILE_ZIP_TYPE,
+					      &params, &n_params,
+					      first_property_name,
+					      args);
+	child = (GsfOutfileZip *)g_object_newv (GSF_OUTFILE_ZIP_TYPE,
+						n_params,
+						params);
+	gsf_property_settings_free (params, n_params);
+
+	child->vdir = gsf_vdir_new (name, is_dir, NULL);
+
+	/* FIXME: It isn't clear what encoding name is in.  */
+	display_name = g_filename_display_name (name);
+	gsf_output_set_name (GSF_OUTPUT (child), display_name);
+	g_free (display_name);
+
+	gsf_output_set_container (GSF_OUTPUT (child), parent);
+	gsf_vdir_add_child (zip_parent->vdir, child->vdir);
+	root_register_child (zip_parent->root, child);
+
+	return GSF_OUTPUT (child);
+}
+
+static void
+gsf_outfile_zip_init (GObject *obj)
+{
+	GsfOutfileZip *zip = GSF_OUTFILE_ZIP (obj);
+
+	zip->sink = NULL;
+	zip->root = NULL;
+	zip->entry_name = NULL;
+	zip->vdir = NULL;
+	zip->root_order = NULL;
+	zip->stream = NULL;
+	zip->compression_method = GSF_ZIP_DEFLATED;
+	zip->writing = FALSE;
+	zip->buf = NULL;
+	zip->buf_size = 0;
+}
+
+static void
+gsf_outfile_zip_get_property (GObject     *object,
+			      guint        property_id,
+			      GValue      *value,
+			      GParamSpec  *pspec)
+{
+	GsfOutfileZip *zip = (GsfOutfileZip *)object;
+
+	switch (property_id) {
+	case PROP_SINK:
+		g_value_set_object (value, zip->sink);
+		break;
+	case PROP_ENTRY_NAME:
+		g_value_set_string (value, zip->entry_name);
+		break;
+	case PROP_COMPRESSION_LEVEL:
+		g_value_set_int (value,
+				 zip->vdir->dirent
+				 ? zip->vdir->dirent->compr_method
+				 : 0);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_outfile_zip_set_property (GObject      *object,
+			      guint         property_id,
+			      GValue const *value,
+			      GParamSpec   *pspec)
+{
+	GsfOutfileZip *zip = (GsfOutfileZip *)object;
+
+	switch (property_id) {
+	case PROP_SINK:
+		gsf_outfile_zip_set_sink (zip, g_value_get_object (value));
+		break;
+	case PROP_ENTRY_NAME:
+		zip->entry_name = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_COMPRESSION_LEVEL: {
+		int level = g_value_get_int (value);
+		switch (level) {
+		case GSF_ZIP_STORED:
+		case GSF_ZIP_DEFLATED:
+			zip->compression_method = level;
+			break;
+		default:
+			g_warning ("Unsupported compression level %d", level);
+		}
+		break;
+	}
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_outfile_zip_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass  *input_class  = GSF_OUTPUT_CLASS (gobject_class);
+	GsfOutfileClass *outfile_class = GSF_OUTFILE_CLASS (gobject_class);
+
+	gobject_class->constructor      = gsf_outfile_zip_constructor;
+	gobject_class->finalize		= gsf_outfile_zip_finalize;
+	gobject_class->get_property     = gsf_outfile_zip_get_property;
+	gobject_class->set_property     = gsf_outfile_zip_set_property;
+
+	input_class->Write		= gsf_outfile_zip_write;
+	input_class->Seek		= gsf_outfile_zip_seek;
+	input_class->Close		= gsf_outfile_zip_close;
+	outfile_class->new_child	= gsf_outfile_zip_new_child;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SINK,
+		 g_param_spec_object ("sink", "Sink",
+				      "Where the archive is written.",
+				      GSF_OUTPUT_TYPE,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_ENTRY_NAME,
+		 g_param_spec_string ("entry-name", "Entry Name",
+				      "The filename of this member in the archive without path.",
+				      NULL,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_COMPRESSION_LEVEL,
+		 g_param_spec_int ("compression-level",
+				   "Compression Level",
+				   "The level of compression used, zero meaning none.",
+				   0, 10,
+				   GSF_ZIP_DEFLATED,
+				   GSF_PARAM_STATIC |
+				   G_PARAM_READWRITE |
+				   G_PARAM_CONSTRUCT_ONLY));
+}
+
+GSF_CLASS (GsfOutfileZip, gsf_outfile_zip,
+	   gsf_outfile_zip_class_init, gsf_outfile_zip_init,
+	   GSF_OUTFILE_TYPE)
+
+/**
+ * gsf_outfile_zip_new :
+ * @sink :
+ * @err   :
+ *
+ * Creates the root directory of a Zip file and manages the addition of
+ * children.
+ *
+ * NOTE : adds a reference to @sink
+ *
+ * Returns : the new zip file handler
+ **/
+GsfOutfile *
+gsf_outfile_zip_new (GsfOutput *sink, G_GNUC_UNUSED GError **err)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (sink), NULL);
+
+	return (GsfOutfile *)g_object_new (GSF_OUTFILE_ZIP_TYPE,
+					   "sink", sink,
+					   NULL);
+}
+
+/* deprecated has no effect */
+gboolean
+gsf_outfile_zip_set_compression_method (G_GNUC_UNUSED GsfOutfileZip *zip,
+					G_GNUC_UNUSED GsfZipCompressionMethod method)
+{
+	return TRUE;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile-zip.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,59 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile-zip.h: interface for zip archive output.
+ *
+ * Copyright (C) 2002-2004 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTFILE_ZIP_H
+#define GSF_OUTFILE_ZIP_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GSF_ZIP_STORED =          0,		/* supported for export */
+	GSF_ZIP_SHRUNK =          1,
+	GSF_ZIP_REDUCEDx1 =       2,
+	GSF_ZIP_REDUCEDx2 =       3,
+	GSF_ZIP_REDUCEDx3 =       4,
+	GSF_ZIP_REDUCEDx4 =       5,
+	GSF_ZIP_IMPLODED  =       6,
+	GSF_ZIP_TOKENIZED =       7,
+	GSF_ZIP_DEFLATED =        8,		/* supported for export */
+	GSF_ZIP_DEFLATED_BETTER = 9,
+	GSF_ZIP_IMPLODED_BETTER = 10
+} GsfZipCompressionMethod;
+
+typedef struct _GsfOutfileZip GsfOutfileZip;
+
+#define GSF_OUTFILE_ZIP_TYPE	(gsf_outfile_zip_get_type ())
+#define GSF_OUTFILE_ZIP(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_ZIP_TYPE, GsfOutfileZip))
+#define GSF_IS_OUTFILE_ZIP(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_ZIP_TYPE))
+
+GType	    gsf_outfile_zip_get_type	(void);
+GsfOutfile *gsf_outfile_zip_new		(GsfOutput *sink, GError **err);
+
+/* Deprecated.  Has no effect.  */
+gboolean    gsf_outfile_zip_set_compression_method (GsfOutfileZip *zip,
+						    GsfZipCompressionMethod method);
+
+G_END_DECLS
+
+#endif /* GSF_OUTFILE_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,83 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile.c :
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-outfile-impl.h>
+#include <gsf/gsf-impl-utils.h>
+
+#define GET_CLASS(instance) G_TYPE_INSTANCE_GET_CLASS (instance, GSF_OUTFILE_TYPE, GsfOutfileClass)
+
+/**
+ * gsf_outfile_new_child :
+ * @outfile : A #GsfOutfile
+ * @name : The name of the new child to create
+ * @is_dir : TRUE to create a directory, FALSE to create a plain file
+ *
+ * Returns a newly created child
+ **/
+GsfOutput *
+gsf_outfile_new_child (GsfOutfile *outfile,
+		       char const *name, gboolean is_dir)
+{
+	return gsf_outfile_new_child_full (outfile, name, is_dir, NULL);
+}
+
+/**
+ * gsf_outfile_new_child_full :
+ * @outfile : A #GsfOutfile
+ * @name : The name of the new child to create
+ * @is_dir : TRUE to create a directory, FALSE to create a plain file
+ * @first_property_name :
+ * @Varargs :
+ *
+ * Returns a newly created child
+ **/
+GsfOutput *
+gsf_outfile_new_child_full (GsfOutfile *outfile,
+			    char const *name, gboolean is_dir,
+			    char const *first_property_name,
+			    ...)
+{
+	GsfOutput *res;
+	va_list    args;
+
+	g_return_val_if_fail (outfile != NULL, NULL);
+
+	va_start (args, first_property_name);
+	res = gsf_outfile_new_child_varg (outfile, name, is_dir,
+					  first_property_name, args);
+	va_end (args);
+
+	return res;
+}
+
+GsfOutput *
+gsf_outfile_new_child_varg (GsfOutfile *outfile,
+			    char const *name, gboolean is_dir,
+			    char const *first_property_name,
+			    va_list args)
+{
+	g_return_val_if_fail (outfile != NULL, NULL);
+	return GET_CLASS (outfile)->new_child (outfile, name, is_dir,
+					       first_property_name, args);
+}
+
+GSF_CLASS_ABSTRACT (GsfOutfile, gsf_outfile, NULL, NULL, GSF_OUTPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-outfile.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,48 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outfile.h: interface for creating structured files
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTFILE_H
+#define GSF_OUTFILE_H
+
+#include <gsf/gsf.h>
+
+G_BEGIN_DECLS
+
+#define GSF_OUTFILE_TYPE        (gsf_outfile_get_type ())
+#define GSF_OUTFILE(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTFILE_TYPE, GsfOutfile))
+#define GSF_IS_OUTFILE(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTFILE_TYPE))
+
+GType gsf_outfile_get_type (void);
+
+GsfOutput *gsf_outfile_new_child      (GsfOutfile *outfile,
+				       char const *name, gboolean is_dir);
+GsfOutput *gsf_outfile_new_child_full (GsfOutfile *outfile,
+				       char const *name, gboolean is_dir,
+				       char const *first_property_name,
+					   ...);
+GsfOutput *gsf_outfile_new_child_varg (GsfOutfile *outfile,
+				       char const *name, gboolean is_dir,
+				       char const *first_property_name,
+				       va_list args);
+
+G_END_DECLS
+
+#endif /* GSF_OUTFILE_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,264 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-bzip.c: wrapper to compress to bzipped output
+ *
+ * Copyright (C) 2003-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *               2002-2004 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+
+#include <gsf/gsf-output-bzip.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+
+#ifdef HAVE_BZ2
+/* For getting FILE.  Don't ask.  */
+#include <stdio.h>
+#include <bzlib.h>
+#define BZ_BUFSIZE 1024
+#endif
+
+static GObjectClass *parent_class;
+
+struct _GsfOutputBzip {
+	GsfOutput  output;
+
+#ifdef HAVE_BZ2
+	GsfOutput *sink; /* compressed data */
+	bz_stream  stream;
+	guint8    *buf;
+	size_t     buf_size;
+#endif
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputBzipClass;
+
+static void
+gsf_output_bzip_finalize (GObject *obj)
+{
+#ifdef HAVE_BZ2
+	GsfOutputBzip *bzip = (GsfOutputBzip *)obj;
+
+	if (bzip->sink != NULL) {
+		g_object_unref (G_OBJECT (bzip->sink));
+		bzip->sink = NULL;
+	}
+	g_free (bzip->buf);
+#endif
+	parent_class->finalize (obj);
+}
+
+#ifdef HAVE_BZ2
+static gboolean
+init_bzip (GsfOutputBzip *bzip, GError **err)
+{
+	int ret;
+	
+	ret = BZ2_bzCompressInit (&bzip->stream, 6, 0, 0);
+
+	if (ret != BZ_OK) {
+		if (err != NULL)
+			*err = g_error_new (gsf_output_error_id (), 0,
+					    "Unable to initialize BZ2 library");
+		return FALSE;
+	}
+	if (!bzip->buf) {
+		bzip->buf_size = BZ_BUFSIZE; 
+		bzip->buf = g_new (guint8, bzip->buf_size);
+	}
+	bzip->stream.next_out  = bzip->buf;
+	bzip->stream.avail_out = bzip->buf_size;
+
+	return TRUE;
+}
+
+static gboolean
+bzip_output_block (GsfOutputBzip *bzip)
+{
+	size_t num_bytes = bzip->buf_size - bzip->stream.avail_out;
+	
+	if (!gsf_output_write (bzip->sink, num_bytes, bzip->buf))
+		return FALSE;
+
+	bzip->stream.next_out  = bzip->buf;
+	bzip->stream.avail_out = bzip->buf_size;
+
+	return TRUE;
+}
+
+static gboolean
+bzip_flush (GsfOutputBzip *bzip)
+{
+	int zret;
+
+	do {
+		zret = BZ2_bzCompress (&bzip->stream, BZ_FINISH);
+		if (zret == BZ_FINISH_OK) {
+			/*  In this case BZ_FINISH_OK means more buffer space
+			    needed  */
+			if (!bzip_output_block (bzip))
+				return FALSE;
+		}
+	} while (zret == BZ_FINISH_OK);
+	if (zret != BZ_STREAM_END) {
+		g_warning ("Unexpected error code %d from bzlib during compression.",
+			   zret);
+		return FALSE;
+	}
+	if (!bzip_output_block (bzip))
+		return FALSE;
+
+	return TRUE;
+}
+#endif
+
+static gboolean
+gsf_output_bzip_write (GsfOutput *output,
+		       size_t num_bytes, guint8 const *data)
+{
+#ifdef HAVE_BZ2
+	GsfOutputBzip *bzip = GSF_OUTPUT_BZIP (output);
+
+	g_return_val_if_fail (data, FALSE);
+
+	bzip->stream.next_in  = (unsigned char *) data;
+	bzip->stream.avail_in = num_bytes;
+	
+	while (bzip->stream.avail_in > 0) {
+		int zret;
+
+		if (bzip->stream.avail_out == 0) {
+			if (!bzip_output_block (bzip))
+				return FALSE;
+		}
+
+		zret = BZ2_bzCompress (&bzip->stream, BZ_RUN);
+		if (zret != BZ_RUN_OK) {
+			g_warning ("Unexpected error code %d from bzlib during compression.",
+				   zret);
+			return FALSE;
+		}
+	}
+
+	if (bzip->stream.avail_out == 0) {
+		if (!bzip_output_block (bzip))
+			return FALSE;
+	}
+
+	return TRUE;
+#else
+	return FALSE;
+#endif
+}
+
+static gboolean
+gsf_output_bzip_seek (G_GNUC_UNUSED GsfOutput *output,
+		      G_GNUC_UNUSED gsf_off_t offset,
+		      G_GNUC_UNUSED GSeekType whence)
+{	
+	return FALSE;
+}
+
+static gboolean
+gsf_output_bzip_close (GsfOutput *output)
+{
+#ifdef HAVE_BZ2
+	GsfOutputBzip *bzip = GSF_OUTPUT_BZIP (output);
+	gboolean rt;
+
+	rt = bzip_flush (bzip);
+	BZ2_bzCompressEnd (&bzip->stream);
+
+	return rt;
+#else
+	return FALSE;
+#endif
+}
+
+static void
+gsf_output_bzip_init (GObject *obj)
+{
+#ifdef HAVE_BZ2
+	GsfOutputBzip *bzip = GSF_OUTPUT_BZIP (obj);
+
+	bzip->sink = NULL;
+	bzip->stream.bzalloc	= NULL;
+	bzip->stream.bzfree	= NULL;
+	bzip->stream.opaque	= NULL;
+	bzip->stream.next_in	= NULL;
+	bzip->stream.next_out	= NULL;
+	bzip->stream.avail_in	= bzip->stream.avail_out = 0;
+	bzip->buf		= NULL;
+	bzip->buf_size		= 0;
+#endif
+}
+
+static void
+gsf_output_bzip_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_output_bzip_finalize;
+	output_class->Write	= gsf_output_bzip_write;
+	output_class->Seek	= gsf_output_bzip_seek;
+	output_class->Close	= gsf_output_bzip_close;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfOutputBzip, gsf_output_bzip,
+	   gsf_output_bzip_class_init, gsf_output_bzip_init,
+	   GSF_OUTPUT_TYPE)
+
+/**
+ * gsf_output_bzip_new :
+ * @sink : The underlying data source.
+ * @err	   : optionally NULL.
+ *
+ * Adds a reference to @sink.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_bzip_new (GsfOutput *sink, GError **err)
+{
+#ifdef HAVE_BZ2
+	GsfOutputBzip *bzip;
+
+	g_return_val_if_fail (GSF_IS_OUTPUT (sink), NULL);
+
+	bzip = g_object_new (GSF_OUTPUT_BZIP_TYPE, NULL);
+	g_object_ref (G_OBJECT (sink));
+	bzip->sink = sink;
+
+	if (!init_bzip (bzip, err)) {
+		g_object_unref (G_OBJECT (bzip));
+		return NULL;
+	}
+
+	return GSF_OUTPUT (bzip);
+#else
+	if (err)
+		*err = g_error_new (gsf_output_error_id (), 0,
+				    "BZ2 support not enabled");
+	return NULL;
+#endif
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-bzip.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-bzip.h: wrapper to compress to bzipped output
+ *
+ * Copyright (C) 2003-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_BZIP_H
+#define GSF_OUTPUT_BZIP_H
+
+#include "gsf-output.h"
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_BZIP_TYPE        (gsf_output_bzip_get_type ())
+#define GSF_OUTPUT_BZIP(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_BZIP_TYPE, GsfOutputBzip))
+#define GSF_IS_OUTPUT_BZIP(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_BZIP_TYPE))
+
+typedef struct _GsfOutputBzip GsfOutputBzip;
+
+GType	   gsf_output_bzip_get_type (void);
+GsfOutput *gsf_output_bzip_new	    (GsfOutput *sink, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_BZIP_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,352 @@
+/*
+ * gsf-output-csv.c: a GsfOutput to write .csv style files.
+ *
+ * Copyright (C) 2005 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-output-csv.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#include <glib/gconvert.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+enum {
+	PROP_0,
+	PROP_SINK,
+	PROP_QUOTE,
+	PROP_QUOTING_MODE,
+	PROP_QUOTING_TRIGGERS,
+	PROP_EOL,
+	PROP_SEPARATOR
+};
+
+static void
+gsf_output_csv_finalize (GObject *obj)
+{
+	GsfOutputCsv *csv = (GsfOutputCsv *)obj;
+
+	if (csv->sink != NULL)
+		g_object_unref (G_OBJECT (csv->sink));
+	g_free (csv->quote);
+	g_free (csv->quoting_triggers);
+	g_free (csv->eol);
+	g_free (csv->separator);
+	g_string_free (csv->buf, TRUE);
+
+	parent_class->finalize (obj);
+}
+
+static gboolean
+gsf_output_csv_write (GsfOutput *output,
+		      size_t num_bytes, guint8 const *data)
+{
+	GsfOutputCsv *csv = GSF_OUTPUT_CSV (output);
+	return gsf_output_write (csv->sink, num_bytes, data);
+}
+
+static gboolean
+gsf_output_csv_seek (GsfOutput *output,
+		     gsf_off_t offset,
+		     GSeekType whence)
+{
+	GsfOutputCsv *csv = GSF_OUTPUT_CSV (output);
+	return gsf_output_seek (csv->sink, offset, whence);
+}
+
+static gboolean
+gsf_output_csv_close (G_GNUC_UNUSED GsfOutput *output)
+{
+	return TRUE;
+}
+
+gboolean
+gsf_output_csv_write_field (GsfOutputCsv *csv, char const *field, size_t len)
+{
+	gboolean quote;
+	gboolean ok;
+	char const *end;
+
+	g_return_val_if_fail (GSF_IS_OUTPUT_CSV (csv), FALSE);
+	g_return_val_if_fail (field != NULL, FALSE);
+
+	if (len == (size_t)-1)
+		len = strlen (field);
+	end = field + len;
+
+	if (csv->fields_on_line && csv->separator_len)
+		g_string_append_len (csv->buf,
+				     csv->separator,
+				     csv->separator_len);
+	csv->fields_on_line = TRUE;
+
+	switch (csv->quoting_mode) {
+	default:
+	case GSF_OUTPUT_CSV_QUOTING_MODE_NEVER:
+		quote = FALSE;
+		break;
+	case GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS:
+		quote = TRUE;
+		break;
+	case GSF_OUTPUT_CSV_QUOTING_MODE_AUTO: {
+		char const *p = field;
+		quote = FALSE;
+		while (p < end) {
+			gunichar c = g_utf8_get_char (p);
+			if (g_utf8_strchr (csv->quoting_triggers, -1, c)) {
+				quote = TRUE;
+				break;
+			}
+			p = g_utf8_next_char (p);
+		}
+		break;
+	}
+	}
+
+	if (quote && csv->quote_len > 0) {
+		g_string_append_len (csv->buf,
+				     csv->quote,
+				     csv->quote_len);
+
+		while (field < end) {
+			gunichar c = g_utf8_get_char (field);
+			if (g_utf8_strchr (csv->quote, -1, c))
+				g_string_append_len (csv->buf,
+						     csv->quote,
+						     csv->quote_len);
+			g_string_append_unichar (csv->buf, c);
+			field = g_utf8_next_char (field);
+		}
+
+		g_string_append_len (csv->buf,
+				     csv->quote,
+				     csv->quote_len);
+	} else
+		g_string_append_len (csv->buf, field, len);
+
+	ok = gsf_output_write (csv->sink, csv->buf->len, csv->buf->str);
+
+	g_string_truncate (csv->buf, 0);
+
+	return ok;
+}
+
+/* ------------------------------------------------------------------------- */
+
+gboolean
+gsf_output_csv_write_eol (GsfOutputCsv *csv)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT_CSV (csv), FALSE);
+
+	csv->fields_on_line = FALSE;
+	return gsf_output_write (csv->sink, csv->eol_len, csv->eol);
+}
+
+/* ------------------------------------------------------------------------- */
+
+GType
+gsf_output_csv_quoting_mode_get_type (void)
+{
+  static GType etype = 0;
+  if (etype == 0) {
+    static const GEnumValue values[] = {
+      { GSF_OUTPUT_CSV_QUOTING_MODE_NEVER,  (char *)"GSF_OUTPUT_CSV_QUOTING_MODE_NEVER",  (char *)"never" },
+      { GSF_OUTPUT_CSV_QUOTING_MODE_AUTO,   (char *)"GSF_OUTPUT_CSV_QUOTING_MODE_AUTO",   (char *)"auto" },
+      { GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS, (char *)"GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS", (char *)"always" },
+      { 0, NULL, NULL }
+    };
+    etype = g_enum_register_static ("GsfOutputCsvQuotingMode", values);
+  }
+  return etype;
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
+gsf_output_csv_init (GObject *obj)
+{
+	GsfOutputCsv *csv = (GsfOutputCsv *)obj;
+	csv->quoting_triggers = g_strdup ("");
+	csv->eol = g_strdup ("\n");
+	csv->buf = g_string_new (NULL);
+}
+
+static void
+gsf_output_csv_get_property (GObject     *object,
+			     guint        property_id,
+			     GValue      *value,
+			     GParamSpec  *pspec)
+{
+	GsfOutputCsv *csv = (GsfOutputCsv *)object;
+
+	switch (property_id) {
+	case PROP_SINK:
+		g_value_set_object (value, csv->sink);
+		break;
+	case PROP_QUOTE:
+		g_value_set_string (value, csv->quote);
+		break;
+	case PROP_QUOTING_MODE:
+		g_value_set_enum (value, csv->quoting_mode);
+		break;
+	case PROP_QUOTING_TRIGGERS:
+		g_value_set_string (value, csv->quoting_triggers);
+		break;
+	case PROP_EOL:
+		g_value_set_string (value, csv->eol);
+		break;
+	case PROP_SEPARATOR:
+		g_value_set_string (value, csv->separator);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_output_csv_set_sink (GsfOutputCsv *csv, GsfOutput *sink)
+{
+	g_return_if_fail (GSF_IS_OUTPUT (sink));
+	g_object_ref (sink);
+	if (csv->sink)
+		g_object_unref (csv->sink);
+	csv->sink = sink;
+}
+
+static void
+gsf_output_csv_set_property (GObject      *object,
+			       guint         property_id,
+			       GValue const *value,
+			       GParamSpec   *pspec)
+{
+	GsfOutputCsv *csv = (GsfOutputCsv *)object;
+	char *scopy;
+
+	switch (property_id) {
+	case PROP_SINK:
+		gsf_output_csv_set_sink (csv, g_value_get_object (value));
+		break;
+	case PROP_QUOTE:
+		scopy = g_strdup (g_value_get_string (value));
+		g_free (csv->quote);
+		csv->quote = scopy;
+		csv->quote_len = scopy ? strlen (scopy) : 0;
+		break;
+	case PROP_QUOTING_MODE:
+		csv->quoting_mode = g_value_get_enum (value);
+		break;
+	case PROP_QUOTING_TRIGGERS:
+		scopy = g_strdup (g_value_get_string (value));
+		g_free (csv->quoting_triggers);
+		csv->quoting_triggers = scopy ? scopy : g_strdup ("");
+		if (*csv->quoting_triggers)
+			csv->quoting_mode = GSF_OUTPUT_CSV_QUOTING_MODE_AUTO;
+		break;
+	case PROP_EOL:
+		scopy = g_strdup (g_value_get_string (value));
+		g_free (csv->eol);
+		csv->eol = scopy ? scopy : g_strdup ("");
+		csv->eol_len = strlen (csv->eol);
+		break;
+	case PROP_SEPARATOR:
+		scopy = g_strdup (g_value_get_string (value));
+		g_free (csv->separator);
+		csv->separator = scopy;
+		csv->separator_len = scopy ? strlen (scopy) : 0;
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_output_csv_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->finalize     = gsf_output_csv_finalize;
+	gobject_class->set_property = gsf_output_csv_set_property;
+	gobject_class->get_property = gsf_output_csv_get_property;
+	output_class->Write	    = gsf_output_csv_write;
+	output_class->Seek	    = gsf_output_csv_seek;
+	output_class->Close	    = gsf_output_csv_close;
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SINK,
+		 g_param_spec_object ("sink", "Sink",
+				      "Where the compressed data is written.",
+				      GSF_OUTPUT_TYPE,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_QUOTE,
+		 g_param_spec_string ("quote", "Quote",
+				      "The string used for quoting fields.",
+				      "\"",
+				      GSF_PARAM_STATIC |
+				      G_PARAM_CONSTRUCT |
+				      G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_QUOTING_MODE,
+		 g_param_spec_enum ("quoting-mode",
+				    "Quoting Mode",
+				    "When to quote fields.",
+				    GSF_OUTPUT_CSV_QUOTING_MODE_TYPE,
+				    GSF_OUTPUT_CSV_QUOTING_MODE_NEVER,
+				    GSF_PARAM_STATIC |
+				    G_PARAM_CONSTRUCT |
+				    G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_QUOTING_TRIGGERS,
+		 g_param_spec_string ("quoting-triggers", "Quoting Triggers",
+				      "Characters that cause field quoting.",
+				      NULL,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SEPARATOR,
+		 g_param_spec_string ("separator", "Separator",
+				      "The field separator.",
+				      ",",
+				      GSF_PARAM_STATIC |
+				      G_PARAM_CONSTRUCT |
+				      G_PARAM_READWRITE));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_EOL,
+		 g_param_spec_string ("eol", "eol",
+				      "The end-of-line marker.",
+				      "\n",
+				      GSF_PARAM_STATIC |
+				      G_PARAM_CONSTRUCT |
+				      G_PARAM_READWRITE));
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfOutputCsv, gsf_output_csv,
+	   gsf_output_csv_class_init, gsf_output_csv_init, GSF_OUTPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-csv.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,70 @@
+/*
+ * gsf-output-csv.h: a GsfOutput to write .csv style files.
+ *
+ * Copyright (C) 2005 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_CSV_H
+#define GSF_OUTPUT_CSV_H
+
+#include "gsf-output.h"
+
+G_BEGIN_DECLS
+
+typedef enum {
+	GSF_OUTPUT_CSV_QUOTING_MODE_NEVER,
+	GSF_OUTPUT_CSV_QUOTING_MODE_AUTO,
+	GSF_OUTPUT_CSV_QUOTING_MODE_ALWAYS
+} GsfOutputCsvQuotingMode;
+GType gsf_output_csv_quoting_mode_get_type (void);
+#define GSF_OUTPUT_CSV_QUOTING_MODE_TYPE (gsf_output_csv_quoting_mode_get_type ())
+
+typedef struct {
+	GsfOutput output;
+
+	GsfOutput *sink;
+
+	char *quote;
+	size_t quote_len;
+	GsfOutputCsvQuotingMode quoting_mode;
+	char *quoting_triggers;
+
+	char *eol;
+	size_t eol_len;
+	char *separator;
+	size_t separator_len;
+	gboolean fields_on_line;
+
+	GString *buf;
+} GsfOutputCsv;
+
+#define GSF_OUTPUT_CSV_TYPE        (gsf_output_csv_get_type ())
+#define GSF_OUTPUT_CSV(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_CSV_TYPE, GsfOutputCsv))
+#define GSF_IS_OUTPUT_CSV(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_CSV_TYPE))
+GType gsf_output_csv_get_type (void);
+gboolean gsf_output_csv_write_field (GsfOutputCsv *csv,
+				     char const *field,
+				     size_t len);
+gboolean gsf_output_csv_write_eol (GsfOutputCsv *csv);
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputCsvClass;
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_CSV_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,401 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-gzip.c: wrapper to compress to gzipped output. See rfc1952.
+ *
+ * Copyright (C) 2002-2004 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-output-gzip.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+
+#include <zlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct _GsfOutputGZip {
+	GsfOutput output;
+
+	GsfOutput *sink; /* compressed data */
+	gboolean raw; /* No header and no trailer.  */
+
+	z_stream  stream;
+	uLong     crc;     /* crc32 of uncompressed data */
+	size_t    isize;
+
+	guint8   *buf;
+	size_t    buf_size;
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputGZipClass;
+
+enum {
+	PROP_0,
+	PROP_RAW,
+	PROP_SINK
+};
+
+
+/* gzip flag byte */
+#define GZIP_ORIGINAL_NAME	0x08 /* the original is stored */
+
+static gboolean
+init_gzip (GsfOutputGZip *gzip)
+{
+	int ret;
+
+	ret = deflateInit2 (&gzip->stream, Z_DEFAULT_COMPRESSION,
+			    Z_DEFLATED, -MAX_WBITS, MAX_MEM_LEVEL,
+			    Z_DEFAULT_STRATEGY);
+	if (ret != Z_OK)
+		return FALSE;
+
+	if (!gzip->buf) {
+		gzip->buf_size = 0x100;
+		gzip->buf = g_new (guint8, gzip->buf_size);
+	}
+	gzip->stream.next_out  = gzip->buf;
+	gzip->stream.avail_out = gzip->buf_size;
+
+	return TRUE;
+}
+
+static gboolean
+gzip_output_header (GsfOutputGZip *gzip)
+{
+	guint8 buf[3 + 1 + 4 + 2];
+	static guint8 const gzip_signature[] = { 0x1f, 0x8b, 0x08 } ;
+	time_t mtime = time (NULL);
+	char const *name = gsf_output_name (gzip->sink);
+	/* FIXME: What to do about gz extension ... ? */
+	int nlen = 0;  /* name ? strlen (name) : 0; */
+	gboolean ret;
+
+	memset (buf, 0, sizeof buf);
+	memcpy (buf, gzip_signature, 3);
+	if (nlen > 0)
+		buf[3] = GZIP_ORIGINAL_NAME;
+	GSF_LE_SET_GUINT32 (buf + 4, (guint32) mtime);
+	buf[9] = 3;	/* UNIX */
+	ret = gsf_output_write (gzip->sink, sizeof buf, buf);
+	if (ret && name && nlen > 0)
+		ret = gsf_output_write (gzip->sink, nlen, name);
+
+	return ret;
+}
+
+/**
+ * gsf_output_gzip_new :
+ * @sink : The underlying data source.
+ * @err	   : optionally NULL.
+ *
+ * Adds a reference to @sink.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_gzip_new (GsfOutput *sink, GError **err)
+{
+	GsfOutput *output;
+	const GError *con_err;
+
+	g_return_val_if_fail (GSF_IS_OUTPUT (sink), NULL);
+
+	output = g_object_new (GSF_OUTPUT_GZIP_TYPE, "sink", sink, NULL);
+	con_err = gsf_output_error (output);
+
+	if (con_err) {
+		if (err)
+			*err = g_error_copy (con_err);
+		g_object_unref (output);
+		return NULL;
+	}
+
+	return output;
+}
+
+static void
+gsf_output_gzip_finalize (GObject *obj)
+{
+	GsfOutputGZip *gzip = (GsfOutputGZip *)obj;
+
+	if (gzip->sink != NULL) {
+		g_object_unref (G_OBJECT (gzip->sink));
+		gzip->sink = NULL;
+	}
+
+	g_free (gzip->buf);
+
+	/* FIXME: check for error?  */
+	deflateEnd (&gzip->stream);
+
+	parent_class->finalize (obj);
+}
+
+static gboolean
+gzip_output_block (GsfOutputGZip *gzip)
+{
+	size_t num_bytes = gzip->buf_size - gzip->stream.avail_out;
+
+	if (!gsf_output_write (gzip->sink, num_bytes, gzip->buf)) {
+		gsf_output_set_error (GSF_OUTPUT (gzip), 0,
+				      "Failed to write");
+		return FALSE;
+	}
+	gzip->stream.next_out  = gzip->buf;
+	gzip->stream.avail_out = gzip->buf_size;
+
+	return TRUE;
+}
+
+static gboolean
+gzip_flush (GsfOutputGZip *gzip)
+{
+	int zret;
+
+	do {
+		zret = deflate (&gzip->stream, Z_FINISH);
+		if (zret == Z_OK) {
+			/*  In this case Z_OK means more buffer space
+			    needed  */
+			if (!gzip_output_block (gzip))
+				return FALSE;
+		}
+	} while (zret == Z_OK);
+	if (zret != Z_STREAM_END) {
+		gsf_output_set_error (GSF_OUTPUT (gzip), 0,
+				      "Unexpected compression failure");
+		g_warning ("Unexpected error code %d from zlib during compression.",
+			   zret);
+		return FALSE;
+	}
+	if (!gzip_output_block (gzip))
+		return FALSE;
+
+	return TRUE;
+}
+
+static gboolean
+gsf_output_gzip_write (GsfOutput *output,
+		       size_t num_bytes, guint8 const *data)
+{
+	GsfOutputGZip *gzip = GSF_OUTPUT_GZIP (output);
+
+	g_return_val_if_fail (data, FALSE);
+
+	gzip->stream.next_in  = (unsigned char *) data;
+	gzip->stream.avail_in = num_bytes;
+
+	while (gzip->stream.avail_in > 0) {
+		int zret;
+		if (gzip->stream.avail_out == 0) {
+			if (!gzip_output_block (gzip))
+				return FALSE;
+		}
+
+		zret = deflate (&gzip->stream, Z_NO_FLUSH);
+		if (zret != Z_OK) {
+			gsf_output_set_error (output, 0,
+					      "Unexpected compression failure");
+			g_warning ("Unexpected error code %d from zlib during compression.",
+				   zret);
+			return FALSE;
+		}
+	}
+
+	gzip->crc = crc32 (gzip->crc, data, num_bytes);
+	gzip->isize += num_bytes;
+
+	if (gzip->stream.avail_out == 0) {
+		if (!gzip_output_block (gzip))
+			return FALSE;
+	}
+
+	return TRUE;
+}
+
+static gboolean
+gsf_output_gzip_seek (G_GNUC_UNUSED GsfOutput *output,
+		      G_GNUC_UNUSED gsf_off_t offset,
+		      G_GNUC_UNUSED GSeekType whence)
+{
+	return FALSE;
+}
+
+static gboolean
+gsf_output_gzip_close (GsfOutput *output)
+{
+	if (!gsf_output_error (output)) {
+		GsfOutputGZip *gzip = GSF_OUTPUT_GZIP (output);
+
+		if (!gzip_flush (gzip))
+			return FALSE;
+
+		if (!gzip->raw) {
+			guint8 buf[8];
+
+			GSF_LE_SET_GUINT32 (buf,     gzip->crc);
+			GSF_LE_SET_GUINT32 (buf + 4, gzip->isize);
+			if (!gsf_output_write (gzip->sink, 8, buf))
+				return FALSE;
+		}
+	}
+
+	return TRUE;
+}
+
+static void
+gsf_output_gzip_init (GObject *obj)
+{
+	GsfOutputGZip *gzip = GSF_OUTPUT_GZIP (obj);
+
+	gzip->sink = NULL;
+	gzip->stream.zalloc	= (alloc_func)0;
+	gzip->stream.zfree	= (free_func)0;
+	gzip->stream.opaque	= (voidpf)0;
+	gzip->stream.next_in	= Z_NULL;
+	gzip->stream.next_out	= Z_NULL;
+	gzip->stream.avail_in	= gzip->stream.avail_out = 0;
+	gzip->crc		= crc32 (0L, Z_NULL, 0);
+	gzip->isize             = 0;
+	gzip->buf		= NULL;
+	gzip->buf_size		= 0;
+}
+
+static void
+gsf_output_gzip_get_property (GObject     *object,
+			      guint        property_id,
+			      GValue      *value,
+			      GParamSpec  *pspec)
+{
+	GsfOutputGZip *gzip = (GsfOutputGZip *)object;
+
+	switch (property_id) {
+	case PROP_RAW:
+		g_value_set_boolean (value, gzip->raw);
+		break;
+	case PROP_SINK:
+		g_value_set_object (value, gzip->sink);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_output_gzip_set_sink (GsfOutputGZip *gzip, GsfOutput *sink)
+{
+	if (sink)
+		g_object_ref (GSF_OUTPUT (sink));
+	if (gzip->sink)
+		g_object_unref (gzip->sink);
+	gzip->sink = sink;
+}
+
+static void
+gsf_output_gzip_set_property (GObject      *object,
+			      guint         property_id,
+			      GValue const *value,
+			      GParamSpec   *pspec)
+{
+	GsfOutputGZip *gzip = (GsfOutputGZip *)object;
+
+	switch (property_id) {
+	case PROP_RAW:
+		gzip->raw = g_value_get_boolean (value);
+		break;
+	case PROP_SINK:
+		gsf_output_gzip_set_sink (gzip, g_value_get_object (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static GObject*
+gsf_output_gzip_constructor (GType                  type,
+			     guint                  n_construct_properties,
+			     GObjectConstructParam *construct_params)
+{
+	GsfOutputGZip *gzip;
+
+	gzip = (GsfOutputGZip *)(parent_class->constructor (type,
+							    n_construct_properties,
+							    construct_params));
+
+	if (!gzip->sink)
+		gsf_output_set_error (GSF_OUTPUT (gzip),
+				      0,
+				      "NULL sink");
+	else if (!init_gzip (gzip))
+		gsf_output_set_error (GSF_OUTPUT (gzip),
+				      0,
+				      "Failed to initialize zlib structure");
+	else if (!gzip->raw && !gzip_output_header (gzip))
+		gsf_output_set_error (GSF_OUTPUT (gzip),
+				      0,
+				      "Failed to write gzip header");
+
+	return (GObject *)gzip;
+}
+
+static void
+gsf_output_gzip_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->constructor  = gsf_output_gzip_constructor;
+	gobject_class->finalize     = gsf_output_gzip_finalize;
+	gobject_class->set_property = gsf_output_gzip_set_property;
+	gobject_class->get_property = gsf_output_gzip_get_property;
+	output_class->Write	    = gsf_output_gzip_write;
+	output_class->Seek	    = gsf_output_gzip_seek;
+	output_class->Close	    = gsf_output_gzip_close;
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_RAW,
+		 g_param_spec_boolean ("raw", "Raw",
+				       "Whether to write compressed data with no header/tailer.",
+				       FALSE,
+				       GSF_PARAM_STATIC |
+				       G_PARAM_READWRITE |
+				       G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SINK,
+		 g_param_spec_object ("sink", "Sink",
+				      "Where the compressed data is written.",
+				      GSF_OUTPUT_TYPE,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfOutputGZip, gsf_output_gzip,
+	   gsf_output_gzip_class_init, gsf_output_gzip_init, GSF_OUTPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-gzip.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-gzip.h: wrapper to compress to gzipped output
+ *
+ * Copyright (C) 2002-2004 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_GZIP_H
+#define GSF_OUTPUT_GZIP_H
+
+#include "gsf-output.h"
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_GZIP_TYPE        (gsf_output_gzip_get_type ())
+#define GSF_OUTPUT_GZIP(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_GZIP_TYPE, GsfOutputGZip))
+#define GSF_IS_OUTPUT_GZIP(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_GZIP_TYPE))
+
+typedef struct _GsfOutputGZip GsfOutputGZip;
+
+GType	   gsf_output_gzip_get_type (void);
+GsfOutput *gsf_output_gzip_new	    (GsfOutput *sink, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_GZIP_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,320 @@
+/*
+ * gsf-output-iconv.c: wrapper to convert character sets.
+ *
+ * Copyright (C) 2005 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-output-iconv.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#include <glib/gconvert.h>
+#include <string.h>
+
+#define BUF_SIZE 0x400
+
+static GObjectClass *parent_class;
+
+struct _GsfOutputIconv {
+	GsfOutput output;
+
+	GsfOutput *sink;
+	char *input_charset;
+	char *output_charset;
+	char *fallback;
+
+	guint8 *buf;
+	size_t buf_len;
+};
+
+enum {
+	PROP_0,
+	PROP_SINK,
+	PROP_INPUT_CHARSET,
+	PROP_OUTPUT_CHARSET,
+	PROP_FALLBACK
+};
+
+/**
+ * gsf_output_iconv_new :
+ * @sink : The underlying data source.
+ * @dst : The target character set.
+ * @src : The source character set.
+ *
+ * Adds a reference to @sink.
+ *
+ * Returns a new GsfOutput object or NULL.
+ **/
+GsfOutput *
+gsf_output_iconv_new (GsfOutput *sink, char const *dst, char const *src)
+{
+	GError *error = NULL;
+	g_return_val_if_fail (GSF_IS_OUTPUT (sink), NULL);
+
+	if (!dst) dst = "UTF-8";
+	if (!src) src = "UTF-8";
+	g_free (g_convert ("", 0, dst, src, NULL, NULL, &error));
+
+	if (error) {
+		g_error_free (error);
+		return NULL;
+	}
+
+	return g_object_new (GSF_OUTPUT_ICONV_TYPE,
+			     "sink", sink,
+			     "input-charset", src,
+			     "output-charset", dst,
+			     NULL);
+}
+
+static void
+gsf_output_iconv_finalize (GObject *obj)
+{
+	GsfOutputIconv *ic = (GsfOutputIconv *)obj;
+
+	if (ic->sink != NULL)
+		g_object_unref (G_OBJECT (ic->sink));
+	g_free (ic->input_charset);
+	g_free (ic->output_charset);
+	g_free (ic->buf);
+
+	parent_class->finalize (obj);
+}
+
+static gboolean
+iconv_flush (GsfOutputIconv *ic, gboolean must_empty)
+{
+	if (gsf_output_error (GSF_OUTPUT (ic)))
+		return FALSE;
+
+	if (ic->buf_len > 0) {
+		gsize bytes_read, bytes_written;
+		gboolean ok;
+		char *data = g_convert_with_fallback (ic->buf, ic->buf_len,
+						      ic->output_charset,
+						      ic->input_charset,
+						      ic->fallback,
+						      &bytes_read,
+						      &bytes_written,
+						      NULL);
+		if (data == NULL || bytes_read <= 0) {
+			gsf_output_set_error (GSF_OUTPUT (ic),
+					      0,
+					      "Failed to convert string");
+			ok = FALSE;
+		} else {
+			ic->buf_len -= bytes_read;
+			if (ic->buf_len)
+				g_memmove (ic->buf, ic->buf + ic->buf_len, ic->buf_len);
+
+			ok = gsf_output_write (ic->sink, bytes_written, data);
+			if (!ok) {
+				gsf_output_set_error (GSF_OUTPUT (ic),
+						      0,
+						      "Failed to write");
+			}
+		}
+
+		g_free (data);
+		return ok && (!must_empty || ic->buf_len == 0);
+	} else
+		return TRUE;
+}
+
+static gboolean
+gsf_output_iconv_write (GsfOutput *output,
+			size_t num_bytes, guint8 const *data)
+{
+	GsfOutputIconv *ic = GSF_OUTPUT_ICONV (output);
+
+	g_return_val_if_fail (data, FALSE);
+
+	while (num_bytes > 0) {
+		if (gsf_output_error (output))
+			return FALSE;
+		if (ic->buf_len == BUF_SIZE)
+			iconv_flush (ic, FALSE);
+		else {
+			size_t count = MIN (BUF_SIZE - ic->buf_len, num_bytes);
+			memcpy (ic->buf + ic->buf_len, data, count);
+			ic->buf_len += count;
+			num_bytes -= count;
+			data += count;
+		}
+	}
+
+	return TRUE;
+}
+
+static gboolean
+gsf_output_iconv_seek (G_GNUC_UNUSED GsfOutput *output,
+		      G_GNUC_UNUSED gsf_off_t offset,
+		      G_GNUC_UNUSED GSeekType whence)
+{
+	return FALSE;
+}
+
+static gboolean
+gsf_output_iconv_close (GsfOutput *output)
+{
+	if (!gsf_output_error (output)) {
+		GsfOutputIconv *ic = GSF_OUTPUT_ICONV (output);
+
+		if (!iconv_flush (ic, TRUE))
+			return FALSE;
+	}
+
+	return TRUE;
+}
+
+static void
+gsf_output_iconv_init (GObject *obj)
+{
+	GsfOutputIconv *ic = GSF_OUTPUT_ICONV (obj);
+
+	ic->buf = g_malloc (BUF_SIZE);
+	ic->buf_len = 0;
+}
+
+static void
+gsf_output_iconv_get_property (GObject     *object,
+			      guint        property_id,
+			      GValue      *value,
+			      GParamSpec  *pspec)
+{
+	GsfOutputIconv *ic = (GsfOutputIconv *)object;
+
+	switch (property_id) {
+	case PROP_SINK:
+		g_value_set_object (value, ic->sink);
+		break;
+	case PROP_INPUT_CHARSET:
+		g_value_set_string (value, ic->input_charset);
+		break;
+	case PROP_OUTPUT_CHARSET:
+		g_value_set_string (value, ic->output_charset);
+		break;
+	case PROP_FALLBACK:
+		g_value_set_string (value, ic->fallback);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_output_iconv_set_sink (GsfOutputIconv *ic, GsfOutput *sink)
+{
+	g_return_if_fail (GSF_IS_OUTPUT (sink));
+	g_object_ref (sink);
+	if (ic->sink)
+		g_object_unref (ic->sink);
+	ic->sink = sink;
+}
+
+static void
+gsf_output_iconv_set_property (GObject      *object,
+			       guint         property_id,
+			       GValue const *value,
+			       GParamSpec   *pspec)
+{
+	GsfOutputIconv *ic = (GsfOutputIconv *)object;
+	char *scopy;
+
+	switch (property_id) {
+	case PROP_SINK:
+		gsf_output_iconv_set_sink (ic, g_value_get_object (value));
+		break;
+	case PROP_INPUT_CHARSET:
+		ic->input_charset = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_OUTPUT_CHARSET:
+		ic->output_charset = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_FALLBACK:
+		scopy = g_strdup (g_value_get_string (value));
+		g_free (ic->fallback);
+		ic->fallback = scopy;
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_output_iconv_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->finalize     = gsf_output_iconv_finalize;
+	gobject_class->set_property = gsf_output_iconv_set_property;
+	gobject_class->get_property = gsf_output_iconv_get_property;
+	output_class->Write	    = gsf_output_iconv_write;
+	output_class->Seek	    = gsf_output_iconv_seek;
+	output_class->Close	    = gsf_output_iconv_close;
+
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_SINK,
+		 g_param_spec_object ("sink", "Sink",
+				      "Where the converted data is written.",
+				      GSF_OUTPUT_TYPE,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_INPUT_CHARSET,
+		 g_param_spec_string ("input-charset", "Input Charset",
+				      "The character set to convert from.",
+				      "UTF-8",
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_OUTPUT_CHARSET,
+		 g_param_spec_string ("output-charset", "Output Charset",
+				      "The character set to convert to.",
+				      "UTF-8",
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE |
+				      G_PARAM_CONSTRUCT_ONLY));
+	/**
+	 * GsfOutputIconv:fallback:
+	 *
+	 * Either NULL or a UTF-8 string (representable in the target encoding)
+	 * to convert and output in place of characters that cannot be represented
+	 * in the target encoding.  NULL means use \u1234 or \U12345678 format.
+	 */  
+	g_object_class_install_property
+		(gobject_class,
+		 PROP_FALLBACK,
+		 g_param_spec_string ("fallback", "Fallback",
+				      "The string to use for invalid characters.",
+				      NULL,
+				      GSF_PARAM_STATIC |
+				      G_PARAM_READWRITE));
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfOutputIconv, gsf_output_iconv,
+	   gsf_output_iconv_class_init, gsf_output_iconv_init, GSF_OUTPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iconv.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,43 @@
+/*
+ * gsf-output-iconv.h: wrapper to convert character sets.
+ *
+ * Copyright (C) 2005 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_ICONV_H
+#define GSF_OUTPUT_ICONV_H
+
+#include "gsf-output.h"
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputIconvClass;
+
+#define GSF_OUTPUT_ICONV_TYPE        (gsf_output_iconv_get_type ())
+#define GSF_OUTPUT_ICONV(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_ICONV_TYPE, GsfOutputIconv))
+#define GSF_IS_OUTPUT_ICONV(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_ICONV_TYPE))
+
+typedef struct _GsfOutputIconv GsfOutputIconv;
+
+GType	   gsf_output_iconv_get_type (void);
+GsfOutput *gsf_output_iconv_new      (GsfOutput *sink, char const *dst, char const *src);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_ICONV_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,38 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-impl.h: interface for storing data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_IMPL_H
+#define GSF_OUTPUT_IMPL_H
+
+#include <gsf/gsf.h>
+#include <gsf/gsf-output.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* protected */
+gboolean gsf_output_set_name	  (GsfOutput *output, char const *name);
+gboolean gsf_output_set_name_from_filename (GsfOutput *output, char const *filename);
+gboolean gsf_output_set_container (GsfOutput *output, GsfOutfile *container);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_IMPL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,130 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-iochannel.c
+ *
+ * Copyright (C) 2002-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <gsf-config.h>
+#include <gsf/gsf-output-iochannel.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+
+static GsfOutputClass *parent_class;
+
+struct _GsfOutputIOChannel {
+	GsfOutput output;
+	GIOChannel * channel;
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputIOChannelClass;
+
+/**
+ * gsf_output_iochannel_new :
+ * @channel: A #GIOChannel
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_iochannel_new (GIOChannel *channel)
+{
+	GsfOutputIOChannel *output = NULL;
+
+	g_return_val_if_fail (channel != NULL, NULL);
+
+	output = g_object_new (GSF_OUTPUT_IOCHANNEL_TYPE, NULL);	
+	output->channel = channel;
+	return GSF_OUTPUT (output);
+}
+
+static gboolean
+gsf_output_iochannel_close (GsfOutput *output)
+{
+	g_io_channel_shutdown (GSF_OUTPUT_IOCHANNEL (output)->channel, TRUE, NULL);
+
+	if (parent_class->Close)
+		parent_class->Close (output);
+	
+	return TRUE;
+}
+
+static void
+gsf_output_iochannel_finalize (GObject *obj)
+{
+	g_io_channel_unref (GSF_OUTPUT_IOCHANNEL (obj)->channel);
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static gboolean
+gsf_output_iochannel_seek (GsfOutput *output, gsf_off_t offset,
+			   GSeekType whence)
+{
+	GsfOutputIOChannel *io = GSF_OUTPUT_IOCHANNEL (output);
+	GIOStatus status = G_IO_STATUS_NORMAL;
+
+	status = g_io_channel_seek_position (io->channel, offset, whence, NULL);
+	if (status == G_IO_STATUS_NORMAL)
+		return TRUE;
+
+	gsf_output_set_error (output, status, " ");
+	return FALSE;
+}
+
+static gboolean
+gsf_output_iochannel_write (GsfOutput *output,
+			    size_t num_bytes,
+			    guint8 const *buffer)
+{
+	GsfOutputIOChannel *io = GSF_OUTPUT_IOCHANNEL (output);
+	GIOStatus status = G_IO_STATUS_NORMAL;
+	size_t bytes_written = 0, total_written = 0;
+
+	g_return_val_if_fail (io != NULL, FALSE);
+
+	while ((status == G_IO_STATUS_NORMAL) && (total_written < num_bytes)) {
+		status = g_io_channel_write_chars (io->channel, (const gchar *)(buffer + total_written),
+						   num_bytes - total_written, &bytes_written, NULL);
+		total_written += bytes_written;
+	}
+
+	return (status == G_IO_STATUS_NORMAL && total_written == num_bytes);
+}
+
+static void
+gsf_output_iochannel_init (GObject *obj)
+{
+	GsfOutputIOChannel *io = GSF_OUTPUT_IOCHANNEL (obj);
+
+	io->channel   = NULL;
+}
+
+static void
+gsf_output_iochannel_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+	
+	gobject_class->finalize = gsf_output_iochannel_finalize;
+	output_class->Close     = gsf_output_iochannel_close;
+	output_class->Seek      = gsf_output_iochannel_seek;
+	output_class->Write     = gsf_output_iochannel_write;
+
+	parent_class = GSF_OUTPUT_CLASS (g_type_class_peek_parent (gobject_class));
+}
+
+GSF_CLASS (GsfOutputIOChannel, gsf_output_iochannel,
+           gsf_output_iochannel_class_init, gsf_output_iochannel_init, GSF_OUTPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-iochannel.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,40 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-iochannel.h
+ *
+ * Copyright (C) 2002-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_IOCHANNEL_H
+#define GSF_OUTPUT_IOCHANNEL_H
+
+#include "gsf-output.h"
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_IOCHANNEL_TYPE	(gsf_output_iochannel_get_type ())
+#define GSF_OUTPUT_IOCHANNEL(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_IOCHANNEL_TYPE, GsfOutputIOChannel))
+#define GSF_IS_OUTPUT_IOCHANNEL(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_IOCHANNEL_TYPE))
+
+typedef struct _GsfOutputIOChannel GsfOutputIOChannel;
+
+GType      gsf_output_iochannel_get_type (void);
+GsfOutput *gsf_output_iochannel_new 	 (GIOChannel * channel);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_IOCHANNEL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,200 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-memory.c:
+ *
+ * Copyright (C) 2002-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+#include <gsf-config.h>
+#include <gsf/gsf-output-memory.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+#define MIN_BLOCK 512
+#define MAX_STEP  (MIN_BLOCK * 128)
+
+static GsfOutputClass *parent_class;
+
+struct _GsfOutputMemory {
+	GsfOutput output;
+	guint8 *buffer;
+	size_t capacity;
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputMemoryClass;
+
+/**
+ * gsf_output_memory_new :
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_memory_new (void)
+{
+	return g_object_new (GSF_OUTPUT_MEMORY_TYPE, NULL);	
+}
+
+static gboolean
+gsf_output_memory_close (GsfOutput *output)
+{
+	return (parent_class->Close == NULL) ||
+		parent_class->Close (output);
+}
+
+static void
+gsf_output_memory_finalize (GObject *obj)
+{
+	GsfOutputMemory *mem = GSF_OUTPUT_MEMORY (obj);
+	
+	g_free (mem->buffer);
+	mem->buffer = NULL;
+
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static gboolean
+gsf_output_memory_seek (G_GNUC_UNUSED GsfOutput *output,
+			G_GNUC_UNUSED gsf_off_t offset,
+			G_GNUC_UNUSED GSeekType whence)
+{
+	/* let parent implementation handle maneuvering cur_offset */
+	return TRUE;
+}
+
+static gboolean
+gsf_output_memory_expand (GsfOutputMemory *mem, gsf_off_t needed)
+{
+	gsf_off_t capacity = MAX (mem->capacity, MIN_BLOCK);
+	gsize lcapacity;
+	
+	/* If we need >= MAX_STEP, align to a next multiple of MAX_STEP.
+	 * Since MAX_STEP is probably a power of two, this computation
+	 * should reduce to "dec, shr, inc, shl", which is probably
+	 * quicker then branching.
+	 */
+	if (needed < MAX_STEP)
+		while (capacity < needed)
+			capacity *= 2;
+	else
+		capacity = ((needed - 1) / MAX_STEP + 1) * MAX_STEP;
+
+	/* Check for overflow: g_renew() casts its parameters to gsize. */
+	lcapacity = capacity;
+	if ((gsf_off_t) lcapacity != capacity || capacity < 0) {
+		g_warning ("overflow in gsf_output_memory_expand");
+		return FALSE;
+	}
+	mem->buffer   = g_renew (guint8, mem->buffer, lcapacity);
+	mem->capacity = capacity;
+	
+	return TRUE;
+}
+
+static gboolean
+gsf_output_memory_write (GsfOutput *output,
+			 size_t num_bytes,
+			 guint8 const *buffer)
+{
+	GsfOutputMemory *mem = GSF_OUTPUT_MEMORY (output);
+	
+	g_return_val_if_fail (mem != NULL, FALSE);
+	
+	if (!mem->buffer) {
+		mem->buffer   = g_new (guint8, MIN_BLOCK);
+		mem->capacity = MIN_BLOCK;
+	}
+	if (num_bytes + output->cur_offset > mem->capacity) {
+		if (!gsf_output_memory_expand (mem, output->cur_offset + num_bytes))
+			return FALSE;
+	}
+	
+	memcpy (mem->buffer + output->cur_offset, buffer, num_bytes);	
+	return TRUE;
+}
+
+static gsf_off_t gsf_output_memory_vprintf (GsfOutput *output,
+	char const *format, va_list args) G_GNUC_PRINTF (2, 0);
+
+static gsf_off_t
+gsf_output_memory_vprintf (GsfOutput *output, char const *format, va_list args)
+{
+	GsfOutputMemory *mem = (GsfOutputMemory *)output;
+
+	if (mem->buffer) {
+		va_list args2;
+		gsf_off_t len;
+
+		/*
+		 * We need to make a copy as args will become unusable after
+		 * the g_vsnprintf call.
+		 */
+		G_VA_COPY (args2, args);
+
+		len =
+			g_vsnprintf (mem->buffer + output->cur_offset,
+				     mem->capacity - output->cur_offset,
+				     format, args);
+
+		if (len < mem->capacity - output->cur_offset)
+			return len; /* There was sufficient space */
+
+		return parent_class->Vprintf (output, format, args2);
+	}
+	return parent_class->Vprintf (output, format, args);
+}
+
+static void
+gsf_output_memory_init (GObject *obj)
+{
+	GsfOutputMemory *mem = GSF_OUTPUT_MEMORY (obj);
+
+	mem->buffer   = NULL;
+	mem->capacity = 0;
+}
+
+static void
+gsf_output_memory_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+	
+	gobject_class->finalize = gsf_output_memory_finalize;
+	output_class->Close     = gsf_output_memory_close;
+	output_class->Seek      = gsf_output_memory_seek;
+	output_class->Write     = gsf_output_memory_write;
+	output_class->Vprintf   = gsf_output_memory_vprintf;
+
+	parent_class = GSF_OUTPUT_CLASS (g_type_class_peek_parent (gobject_class));
+}
+
+/**
+ * gsf_output_memory_get_bytes :
+ * @mem : the output device.
+ * 
+ * Returns: The data that has been written to @mem, or %null
+ **/
+const guint8 *
+gsf_output_memory_get_bytes (GsfOutputMemory * mem)
+{
+	g_return_val_if_fail (mem != NULL, NULL);
+	return mem->buffer;
+}
+
+GSF_CLASS (GsfOutputMemory, gsf_output_memory,
+           gsf_output_memory_class_init, gsf_output_memory_init, GSF_OUTPUT_TYPE)
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-memory.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-memory.h
+ *
+ * Copyright (C) 2002-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_MEMORY_H
+#define GSF_OUTPUT_MEMORY_H
+
+#include "gsf-output.h"
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_MEMORY_TYPE	(gsf_output_memory_get_type ())
+#define GSF_OUTPUT_MEMORY(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_MEMORY_TYPE, GsfOutputMemory))
+#define GSF_IS_OUTPUT_MEMORY(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_MEMORY_TYPE))
+
+typedef struct _GsfOutputMemory GsfOutputMemory;
+
+GType      gsf_output_memory_get_type (void);
+GsfOutput *gsf_output_memory_new      (void);
+const guint8* gsf_output_memory_get_bytes (GsfOutputMemory * mem);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_MEMORY_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,574 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-stdio.c: stdio based output
+ *
+ * Copyright (C) 2002-2005 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-utils.h>
+#ifdef HAVE_GLIB26
+#include <glib/gstdio.h>
+#else
+#include "glib24_26-compat.h"
+#endif // HAVE_GLIB26
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifdef G_OS_WIN32
+#include <wchar.h>
+#include <direct.h>
+#include <glib/gwin32.h>
+#ifdef HAVE_IO_H
+#include <io.h>
+#endif
+#endif /* G_OS_WIN32 */
+
+#ifndef W_OK
+#define W_OK 2
+#endif
+
+static GObjectClass *parent_class;
+
+struct _GsfOutputStdio {
+	GsfOutput output;
+
+	FILE     *file;
+	char	 *real_filename, *temp_filename;
+	gboolean  create_backup_copy, keep_open;
+	struct stat st;
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputStdioClass;
+
+static int
+rename_wrapper (char const *oldfilename, char const *newfilename)
+{
+	int result = g_rename (oldfilename, newfilename);
+#ifdef G_OS_WIN32
+	if (result) {
+		/* Win32's rename does not unlink the target.  */
+		(void)g_unlink (newfilename);
+		result = g_rename (oldfilename, newfilename);
+	}
+#endif
+	return result;
+}
+
+static int
+chmod_wrapper (const char *filename, mode_t mode)
+{
+#ifdef HAVE_G_CHMOD
+	return g_chmod (filename, mode);
+#else
+	return chmod (filename, mode);
+#endif
+}
+
+static int
+access_wrapper (char const *filename, int what)
+{
+#ifdef HAVE_G_ACCESS
+	return g_access (filename, what);
+#else
+	return access (filename, what);
+#endif
+}
+
+#define GSF_MAX_LINK_LEVEL 256
+
+/* Calls g_file_read_link() until we find a real filename. */
+static char *
+follow_symlinks (char const *filename, GError **error)
+{
+	gchar *followed_filename, *link;
+	gint link_count = 0;
+
+	g_return_val_if_fail (filename != NULL, NULL);
+
+	followed_filename = g_strdup (filename);
+
+	while ((link = g_file_read_link (followed_filename, NULL)) != NULL &&
+	  ++link_count <= GSF_MAX_LINK_LEVEL) {
+		if (g_path_is_absolute (link)) {
+			g_free (followed_filename);
+			followed_filename = link;
+		} else {
+			/* If the linkname is not an absolute path name, append
+			 * it to the directory name of the followed filename.  E.g.
+			 * we may have /foo/bar/baz.lnk -> eek.txt, which really
+			 * is /foo/bar/eek.txt.  */
+			gchar *dir = g_path_get_dirname (followed_filename);
+			g_free (followed_filename);
+			followed_filename = g_build_filename (dir, link, NULL);
+			g_free (dir);
+			g_free (link);
+		}
+	}
+
+	if (link == NULL)
+		return followed_filename;
+
+	/* Too many symlinks */
+	if (error != NULL) {
+#ifdef ELOOP
+		int err = ELOOP;
+#else
+		/* We have links, but not ELOOP.  Very strange.  */
+		int err = EINVAL;
+#endif
+		*error = g_error_new_literal (gsf_output_error_id (), err,
+					      g_strerror (err));
+	}
+	g_free (followed_filename);
+	return NULL;
+}
+
+static gboolean
+close_file_helper (GsfOutputStdio *stdio, gboolean seterr)
+{
+	gboolean res = (0 == fclose (stdio->file));
+	stdio->file = NULL;
+	if (!res && seterr)
+		gsf_output_set_error (GSF_OUTPUT (stdio), errno,
+				      "Failed to close file: %s",
+				      g_strerror (errno));
+	return res;
+}
+
+static gboolean
+unlink_file_helper (GsfOutputStdio *stdio)
+{
+	if (!stdio->temp_filename)
+		return TRUE;
+
+	if (g_unlink (stdio->temp_filename) == 0) {
+		g_free (stdio->temp_filename);
+		stdio->temp_filename = NULL;
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+static gboolean
+gsf_output_stdio_close (GsfOutput *output)
+{
+	GsfOutputStdio *stdio = GSF_OUTPUT_STDIO (output);
+	gboolean res;
+	char *backup_filename = NULL;
+
+	if (stdio->file == NULL)
+		return FALSE;
+
+	if (gsf_output_error (output)) {
+		res = TRUE;
+		if (!stdio->keep_open && !close_file_helper (stdio, FALSE))
+			res = FALSE;
+
+		if (!unlink_file_helper (stdio))
+			res = FALSE;
+
+		return res;
+	}
+
+	if (stdio->keep_open) {
+		gboolean res = (0 == fflush (stdio->file));
+		if (!res)
+			gsf_output_set_error (output, errno,
+					      "Failed to flush.");
+		stdio->file = NULL;
+		return res;
+	}
+
+	res = close_file_helper (stdio, TRUE);
+
+	/* short circuit our when dealing with raw FILE */
+	if (!stdio->real_filename)
+		return res;
+	if (!res) {
+		unlink_file_helper (stdio);
+		return FALSE;
+	}
+
+	/* Move the original file to a backup */
+	if (stdio->create_backup_copy) {
+		gint result;
+		backup_filename = g_strconcat (stdio->real_filename, ".bak", NULL);
+		result = rename_wrapper (stdio->real_filename, backup_filename);
+		if (result != 0) {
+			char *utf8name = g_filename_display_name (backup_filename);
+			gsf_output_set_error (output, errno,
+					      "Could not backup the original as %s.",
+					      utf8name);
+			g_free (utf8name);
+			g_free (backup_filename);
+			g_unlink (stdio->temp_filename);
+			return FALSE;
+		}
+	}
+
+	/* Move the temp file to the original file */
+	if (rename_wrapper (stdio->temp_filename, stdio->real_filename) != 0) {
+		gint saved_errno = errno;
+		if (backup_filename != NULL &&
+		    rename_wrapper (backup_filename, stdio->real_filename) != 0)
+			saved_errno = errno;
+		res = gsf_output_set_error (output,
+					    saved_errno,
+					    g_strerror (saved_errno));
+	} else {
+		/* Restore permissions.  There is not much error checking we
+		 * can do here, I'm afraid.  The final data is saved anyways.
+		 * Note the order: mode, uid+gid, gid, uid, mode.
+		 */
+		chmod_wrapper (stdio->real_filename, stdio->st.st_mode);
+#ifdef HAVE_CHOWN
+		if (chown (stdio->real_filename,
+			   stdio->st.st_uid,
+			   stdio->st.st_gid)) {
+			/* We cannot set both.  Maybe we can set one.  */
+			chown (stdio->real_filename, -1, stdio->st.st_gid);
+			chown (stdio->real_filename, stdio->st.st_uid, -1);
+		}
+		chmod_wrapper (stdio->real_filename, stdio->st.st_mode);
+#endif
+	}
+
+	g_free (backup_filename);
+
+	return res;
+}
+
+static void
+gsf_output_stdio_finalize (GObject *obj)
+{
+	GsfOutput	*output = (GsfOutput *)obj;
+	GsfOutputStdio	*stdio = GSF_OUTPUT_STDIO (output);
+
+	if (!gsf_output_is_closed (output))
+		gsf_output_close (output);
+
+	g_free (stdio->real_filename);
+	stdio->real_filename = NULL;
+	g_free (stdio->temp_filename);
+	stdio->temp_filename = NULL;
+
+	parent_class->finalize (obj);
+}
+
+static gboolean
+gsf_output_stdio_seek (GsfOutput *output, gsf_off_t offset, GSeekType whence)
+{
+	GsfOutputStdio const *stdio = GSF_OUTPUT_STDIO (output);
+	int stdio_whence = 0;	/* make compiler shut up */
+
+#ifndef HAVE_FSEEKO
+	long loffset;
+#else
+	off_t loffset;
+#endif
+
+	g_return_val_if_fail (stdio->file != NULL, 
+			      gsf_output_set_error (output, 0, "missing file"));
+
+	loffset = offset;
+	if ((gsf_off_t) loffset != offset) { /* Check for overflow */
+#ifdef HAVE_FSEEKO
+		g_warning ("offset too large for fseeko");
+		return gsf_output_set_error (output, 0, "offset too large for fseeko");
+#else
+		g_warning ("offset too large for fseek");
+		return gsf_output_set_error (output, 0, "offset too large for fseek");
+#endif
+	}
+	switch (whence) {
+	default : ; /*checked in GsfOutput wrapper */
+	case G_SEEK_SET : stdio_whence = SEEK_SET;	break;
+	case G_SEEK_CUR : stdio_whence = SEEK_CUR;	break;
+	case G_SEEK_END : stdio_whence = SEEK_END;	break;
+	}
+
+	errno = 0;
+#ifdef HAVE_FSEEKO
+	if (0 == fseeko (stdio->file, loffset, stdio_whence))
+		return TRUE;
+#else
+	if (0 == fseek (stdio->file, loffset, stdio_whence))
+		return TRUE;
+#endif
+	return gsf_output_set_error (output, errno, g_strerror (errno));
+}
+
+static gboolean
+gsf_output_stdio_write (GsfOutput *output,
+			size_t num_bytes,
+			guint8 const *buffer)
+{
+	GsfOutputStdio *stdio = GSF_OUTPUT_STDIO (output);
+	size_t written, remaining;
+
+	g_return_val_if_fail (stdio != NULL, FALSE);
+	g_return_val_if_fail (stdio->file != NULL, FALSE);
+
+	remaining = num_bytes;
+
+	while (remaining > 0) {
+		written = fwrite (buffer + (num_bytes - remaining), 1, 
+				  remaining, stdio->file);
+		if ((written < remaining) && ferror (stdio->file) != 0)
+			return gsf_output_set_error (output, errno, g_strerror (errno));
+
+		remaining -= written;
+	}
+	return TRUE;
+}
+
+static gsf_off_t gsf_output_stdio_vprintf (GsfOutput *output,
+	char const *fmt, va_list args) G_GNUC_PRINTF (2, 0);
+
+static gsf_off_t
+gsf_output_stdio_vprintf (GsfOutput *output, char const *fmt, va_list args)
+{
+	return vfprintf (((GsfOutputStdio *)output)->file, fmt, args);
+}
+
+static void
+gsf_output_stdio_init (GObject *obj)
+{
+	GsfOutputStdio *stdio = GSF_OUTPUT_STDIO (obj);
+
+	stdio->file = NULL;
+	stdio->create_backup_copy = FALSE;
+	stdio->keep_open	  = FALSE;
+}
+
+static void
+gsf_output_stdio_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_output_stdio_finalize;
+	output_class->Close	= gsf_output_stdio_close;
+	output_class->Seek	= gsf_output_stdio_seek;
+	output_class->Write	= gsf_output_stdio_write;
+	output_class->Vprintf	= gsf_output_stdio_vprintf;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfOutputStdio, gsf_output_stdio,
+	   gsf_output_stdio_class_init, gsf_output_stdio_init, GSF_OUTPUT_TYPE)
+
+GsfOutput *
+gsf_output_stdio_new_valist (char const *filename, GError **err,
+			     char const *first_property_name,
+			     va_list     var_args)
+{
+	GsfOutputStdio *stdio;
+	FILE *file = NULL;
+	char *dirname = NULL;
+	char *temp_filename = NULL;
+	char *real_filename = follow_symlinks (filename, err);
+	int fd;
+	mode_t saved_umask;
+	struct stat st;
+	gboolean fixup_mode = FALSE;
+
+	if (real_filename == NULL)
+		goto failure;
+
+	/* Get the directory in which the real filename lives */
+	dirname = g_path_get_dirname (real_filename);
+
+	if (g_stat (real_filename, &st) == 0) {
+		if (!S_ISREG (st.st_mode)) {
+			if (err != NULL) {
+				char *dname = g_filename_display_name
+					(real_filename);
+				*err = g_error_new (gsf_output_error_id (), 0,
+						    "%s: Is not a regular file",
+						    dname);
+				g_free (dname);
+			}
+			goto failure;
+		}
+
+		/* FIXME? Race conditions en masse.  */
+		if (access_wrapper (real_filename, W_OK) == -1) {
+			if (err != NULL) {
+				int save_errno = errno;
+				char *dname = g_filename_display_name
+					(real_filename);
+				*err = g_error_new
+					(gsf_output_error_id (), errno,
+					 "%s: %s",
+					 dname, g_strerror (save_errno));
+				g_free (dname);
+			}
+			goto failure;
+		}
+	} else {
+		/*
+		 * File does not exist.  Compute the permissions and uid/gid
+		 * that we will use for the newly-created file.
+		 */
+
+		memset (&st, 0, sizeof (st));
+
+		/* Use default permissions */
+		st.st_mode = 0666;  fixup_mode = TRUE;
+#ifdef HAVE_CHOWN
+		{
+			struct stat dir_st;
+
+			st.st_uid = getuid ();
+
+			if (g_stat (dirname, &dir_st) == 0 &&
+			    S_ISDIR (dir_st.st_mode) &&
+			    (dir_st.st_mode & S_ISGID))
+				st.st_gid = dir_st.st_gid;
+			else
+				st.st_gid = getgid ();
+		}
+#endif
+	}
+
+	/* Save to a temporary file.  We set the umask because some (buggy)
+	 * implementations of mkstemp() use permissions 0666 and we want 0600.
+	 */
+	temp_filename = g_build_filename (dirname, ".gsf-save-XXXXXX", NULL);
+	/* Oh, joy.  What about threads?  --MW */
+	saved_umask = umask (0077);
+	fd = g_mkstemp (temp_filename); /* this modifies temp_filename to the used name */
+	umask (saved_umask);
+
+	if (fixup_mode)
+		st.st_mode &= ~saved_umask;
+
+	if (fd < 0 || NULL == (file = fdopen (fd, "wb"))) {
+		if (err != NULL) {
+			int save_errno = errno;
+			char *dname = g_filename_display_name
+				(temp_filename);
+			*err = g_error_new
+				(gsf_output_error_id (), errno,
+				 "%s: %s",
+				 dname, g_strerror (save_errno));
+			g_free (dname);
+		}
+		goto failure;
+	}
+
+	stdio = (GsfOutputStdio *)g_object_new_valist (GSF_OUTPUT_STDIO_TYPE,
+		first_property_name, var_args);
+	stdio->file = file;
+	stdio->st = st;
+	stdio->create_backup_copy = FALSE;
+	stdio->real_filename = real_filename;
+	stdio->temp_filename = temp_filename;
+
+	gsf_output_set_name_from_filename (GSF_OUTPUT (stdio), filename);
+
+	g_free (dirname);
+
+	return GSF_OUTPUT (stdio);
+
+ failure:
+	g_free (temp_filename);
+	g_free (real_filename);
+	g_free (dirname);
+	return NULL;
+}
+
+/**
+ * gsf_output_stdio_new_full :
+ * @filename : name of file to create or replace.
+ * @err	     : optionally NULL.
+ * @first_property_name : NULL terminated list of properties
+ * @Varargs : 
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_stdio_new_full (char const *filename, GError **err,
+			   char const *first_property_name, ...)
+{
+	GsfOutput *res;
+	va_list var_args;
+	
+	va_start (var_args, first_property_name);
+	res = gsf_output_stdio_new_valist (filename, err, first_property_name, var_args);
+	va_end (var_args);
+
+	return res;
+}
+
+/**
+ * gsf_output_stdio_new :
+ * @filename : name of file to create or replace.
+ * @err	     : optionally NULL.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_stdio_new (char const *filename, GError **err)
+{
+	return gsf_output_stdio_new_full (filename, err, NULL);
+}
+
+/**
+ * gsf_output_stdio_new_FILE :
+ * @filename  : The filename corresponding to @file.
+ * @file      : an existing stdio FILE *
+ * @keep_open : Should @file be closed when the wrapper is closed
+ *
+ * Assumes ownership of @file.  If @keep_open is true, ownership reverts
+ * to caller when the GsfObject is closed.
+ *
+ * Returns a new GsfOutput wrapper for @file.  Warning: the result will be
+ * seekable only if @file is seekable.  If it is seekable, the resulting
+ * GsfOutput object will seek relative to @file's beginning, not its
+ * current location at the time the GsfOutput object is created.
+ **/
+GsfOutput *
+gsf_output_stdio_new_FILE (char const *filename, FILE *file, gboolean keep_open)
+{
+	GsfOutputStdio *stdio;
+
+	g_return_val_if_fail (filename != NULL, NULL);
+	g_return_val_if_fail (file != NULL, NULL);
+
+	stdio = g_object_new (GSF_OUTPUT_STDIO_TYPE, NULL);
+	stdio->file = file;
+	stdio->keep_open = keep_open;
+	stdio->real_filename = stdio->temp_filename = NULL;
+	gsf_output_set_name_from_filename (GSF_OUTPUT (stdio), filename);
+	return GSF_OUTPUT (stdio);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output-stdio.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,49 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-stdio.h: stdio based output
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_STDIO_H
+#define GSF_OUTPUT_STDIO_H
+
+#include "gsf-output.h"
+#include <stdio.h>
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_STDIO_TYPE        (gsf_output_stdio_get_type ())
+#define GSF_OUTPUT_STDIO(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_STDIO_TYPE, GsfOutputStdio))
+#define GSF_IS_OUTPUT_STDIO(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_STDIO_TYPE))
+
+typedef struct _GsfOutputStdio GsfOutputStdio;
+
+GType      gsf_output_stdio_get_type   (void);
+GsfOutput *gsf_output_stdio_new        (char const *filename, GError **err);
+GsfOutput *gsf_output_stdio_new_full   (char const *filename, GError **err,
+					char const *first_property_name,
+					...); /* G_GNUC_NULL_TERMINATED */
+GsfOutput *gsf_output_stdio_new_valist (char const *filename, GError **err,
+					char const *first_property_name,
+					va_list     var_args);
+GsfOutput *gsf_output_stdio_new_FILE   (char const *filename, FILE *file,
+				        gboolean keep_open);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_STDIO_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,605 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output.c: interface for storing data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+static gsf_off_t gsf_output_real_vprintf (GsfOutput *output,
+	char const* format, va_list args) G_GNUC_PRINTF (2, 0);
+
+#define GET_CLASS(instance) G_TYPE_INSTANCE_GET_CLASS (instance, GSF_OUTPUT_TYPE, GsfOutputClass)
+
+static GObjectClass *parent_class;
+
+enum {
+	PROP_0,
+	PROP_NAME,
+	PROP_SIZE,
+	PROP_CLOSED,
+	PROP_POS
+};
+
+static void
+gsf_output_set_property (GObject      *object,
+			 guint         property_id,
+	 G_GNUC_UNUSED   GValue const *value,
+			 GParamSpec   *pspec)
+{
+	switch (property_id) {
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_output_get_property (GObject     *object,
+			 guint        property_id,
+			 GValue      *value,
+			 GParamSpec  *pspec)
+{
+	/* gsf_off_t is typedef'd to gint64 */
+	switch (property_id) {
+	case PROP_NAME:
+		g_value_set_string (value, gsf_output_name (GSF_OUTPUT (object)));
+		break;
+	case PROP_SIZE:
+		g_value_set_int64 (value, gsf_output_size (GSF_OUTPUT (object)));
+		break;
+	case PROP_POS:
+		g_value_set_int64 (value, gsf_output_tell (GSF_OUTPUT (object)));
+		break;
+	case PROP_CLOSED:
+		g_value_set_boolean (value, gsf_output_is_closed (GSF_OUTPUT (object)));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+static void
+gsf_output_dispose (GObject *obj)
+{
+	GsfOutput *output = GSF_OUTPUT (obj);
+
+	if (!output->is_closed) {
+		/* g_warning ("Disposing of an unclosed stream"); */
+		gsf_output_close (output);
+	}
+
+	g_free (output->name);
+	output->name = NULL;
+	g_free (output->printf_buf);
+	output->printf_buf = NULL;
+
+	g_clear_error (&output->err);
+
+	if (output->container != NULL) {
+		g_object_unref (G_OBJECT (output->container));
+		output->container = NULL;
+	}
+
+	G_OBJECT_CLASS (parent_class)->dispose (obj);
+}
+
+static void
+gsf_output_init (GObject *obj)
+{
+	GsfOutput *output = GSF_OUTPUT (obj);
+
+	output->cur_offset	= 0;
+	output->cur_size	= 0;
+	output->name		= NULL;
+	output->wrapped_by	= NULL;
+	output->container	= NULL;
+	output->err		= NULL;
+	output->is_closed	= FALSE;
+	output->printf_buf	= NULL;
+	output->printf_buf_size = 0;
+}
+
+static void
+gsf_output_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass  *output_class  = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->dispose      = gsf_output_dispose;
+	gobject_class->set_property = gsf_output_set_property;
+	gobject_class->get_property = gsf_output_get_property;
+	output_class->Vprintf       = gsf_output_real_vprintf;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	g_object_class_install_property (gobject_class,
+					 PROP_NAME,
+					 g_param_spec_string ("name", "Name",
+							      "The Output's Name",
+							      NULL,
+							      GSF_PARAM_STATIC |
+							      G_PARAM_READABLE));
+	g_object_class_install_property (gobject_class,
+					 PROP_SIZE,
+					 g_param_spec_int64 ("size", "Size",
+							     "The Output's Size",
+							     0, G_MAXINT64, 0,
+							     GSF_PARAM_STATIC |
+							     G_PARAM_READABLE));
+	g_object_class_install_property (gobject_class,
+					 PROP_POS,
+					 g_param_spec_int64 ("position", "Position",
+							     "The Output's Current Position",
+							     0, G_MAXINT64, 0,
+							     GSF_PARAM_STATIC |
+							     G_PARAM_READABLE));
+	g_object_class_install_property (gobject_class,
+					 PROP_CLOSED,
+					 g_param_spec_boolean ("is-closed", "Is Closed",
+							       "Whether the Output is Closed",
+							       FALSE,
+							       GSF_PARAM_STATIC |
+							       G_PARAM_READABLE));
+}
+
+GSF_CLASS_ABSTRACT (GsfOutput, gsf_output,
+		    gsf_output_class_init, gsf_output_init,
+		    G_TYPE_OBJECT)
+
+/**
+ * gsf_output_name :
+ * @output :
+ *
+ * Returns @output's name in utf8 form, DO NOT FREE THIS STRING
+ **/
+char const *
+gsf_output_name (GsfOutput const *output)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), NULL);
+	return output->name;
+}
+
+/**
+ * gsf_output_container :
+ * @output :
+ *
+ * Returns, but does not add a reference to @output's container.
+ * Potentially NULL
+ **/
+GsfOutfile *
+gsf_output_container (GsfOutput const *output)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), NULL);
+	return output->container;
+}
+
+/**
+ * gsf_output_size :
+ * @output :
+ *
+ * Returns the size of the output, or -1 if it does not have a size.
+ **/
+gsf_off_t
+gsf_output_size (GsfOutput *output)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), -1);
+	return output->cur_size;
+}
+
+/**
+ * gsf_output_close :
+ * @output :
+ *
+ * Close a stream.
+ * Returns FALSE on error
+ **/
+gboolean
+gsf_output_close (GsfOutput *output)
+{
+	gboolean res;
+
+	g_return_val_if_fail (GSF_IS_OUTPUT (output),
+		gsf_output_set_error (output, 0, "<internal>"));
+	g_return_val_if_fail (!output->is_closed,
+		gsf_output_set_error (output, 0, "<internal>"));
+
+	/* The implementation will log any errors, but we can never try to
+	 * close multiple times even on failure.
+	 */
+	res = GET_CLASS (output)->Close (output);
+	output->is_closed = TRUE;
+	return res;
+}
+
+/**
+ * gsf_output_is_closed :
+ * @output :
+ *
+ * Returns TRUE if @output has already been closed.
+ **/
+gboolean
+gsf_output_is_closed (GsfOutput const *output)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), TRUE);
+	return output->is_closed;
+}
+
+/**
+ * gsf_output_tell :
+ * @output :
+ *
+ * Returns the current position in the file
+ **/
+gsf_off_t
+gsf_output_tell	(GsfOutput *output)
+{
+	g_return_val_if_fail (output != NULL, 0);
+
+	return output->cur_offset;
+}
+
+/**
+ * gsf_output_seek :
+ * @output :
+ * @offset :
+ * @whence :
+ *
+ * Returns FALSE on error.
+ **/
+gboolean
+gsf_output_seek	(GsfOutput *output, gsf_off_t offset, GSeekType whence)
+{
+	gsf_off_t pos = offset;
+
+	g_return_val_if_fail (output != NULL, FALSE);
+
+	switch (whence) {
+	case G_SEEK_SET: break;
+	case G_SEEK_CUR: pos += output->cur_offset;	break;
+	case G_SEEK_END: pos += output->cur_size;	break;
+	default :
+		g_warning ("Invalid seek type %d", (int)whence);
+		return FALSE;
+	}
+
+	if (pos < 0) {
+		g_warning ("Invalid seek position %" GSF_OFF_T_FORMAT
+			   ", which is before the start of the file", pos);
+		return FALSE;
+	}
+
+	/* If we go nowhere, just return.  This in particular handles null
+	 * seeks for streams with no seek method.
+	 */
+	if (pos == output->cur_offset)
+		return TRUE;
+
+	if (GET_CLASS (output)->Seek (output, offset, whence)) {
+		/* NOTE : it is possible for the current pos to be beyond the
+		 * end of the file.  The intervening space is not filled with 0
+		 * until something is written.
+		 */
+		output->cur_offset = pos;
+		return TRUE;
+	}
+
+	/* the implementation should have assigned whatever errors are necessary */
+	return FALSE;
+}
+
+static inline gboolean
+gsf_output_inc_cur_offset (GsfOutput *output, gsf_off_t num_bytes)
+{
+	output->cur_offset += num_bytes;
+	if (output->cur_offset < num_bytes)
+		return gsf_output_set_error (output, 0, "Output size overflow.");
+	if (output->cur_size < output->cur_offset)
+		output->cur_size = output->cur_offset;
+	return TRUE;
+}
+
+/**
+ * gsf_output_write :
+ * @output :
+ * @num_bytes :
+ * @data :
+ *
+ * Returns FALSE on error.
+ **/
+gboolean
+gsf_output_write (GsfOutput *output,
+		  size_t num_bytes, guint8 const *data)
+{
+	g_return_val_if_fail (output != NULL, FALSE);
+
+	if (num_bytes == 0)
+		return TRUE;
+	if (GET_CLASS (output)->Write (output, num_bytes, data))
+		return gsf_output_inc_cur_offset (output, num_bytes);
+
+	/* the implementation should have assigned whatever errors are necessary */
+	return FALSE;
+}
+
+/**
+ * gsf_output_error :
+ * @output :
+ *
+ * Returns the last error logged on the output, or NULL.
+ **/
+GError const *
+gsf_output_error (GsfOutput const *output)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), NULL);
+	return output->err;
+}
+
+/**
+ * gsf_output_set_name :
+ * @output :
+ * @name :
+ *
+ * <note>This is a utility routine that should only be used by derived
+ * outputs.</note>
+ *
+ * Returns : TRUE if the assignment was ok.
+ **/
+gboolean
+gsf_output_set_name (GsfOutput *output, char const *name)
+{
+	char *buf;
+
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), FALSE);
+
+	buf = g_strdup (name);
+	g_free (output->name);
+	output->name = buf;
+	return TRUE;
+}
+
+/**
+ * gsf_output_set_name_from_filename :
+ * @output : the output stream
+ * @filename : the (fs-sys encoded) filename
+ *
+ * <note>This is a utility routine that should only be used by derived
+ * outputs.</note>
+ *
+ * Returns : TRUE if the assignment was ok.
+ **/
+gboolean
+gsf_output_set_name_from_filename (GsfOutput *output, char const *filename)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), FALSE);
+
+	g_free (output->name);
+	output->name = filename
+		? g_filename_to_utf8 (filename, -1, NULL, NULL, NULL)
+		: NULL;
+	return TRUE;
+}
+
+/**
+ * gsf_output_set_container :
+ * @output :
+ * @container :
+ *
+ * <note>This is a utility routine that should only be used by derived
+ * outputs.</note>
+ *
+ * Returns : TRUE if the assignment was ok.
+ **/
+gboolean
+gsf_output_set_container (GsfOutput *output, GsfOutfile *container)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), FALSE);
+
+	if (container != NULL)
+		g_object_ref (G_OBJECT (container));
+	if (output->container != NULL)
+		g_object_unref (G_OBJECT (output->container));
+	output->container = container;
+	return TRUE;
+}
+
+/**
+ * gsf_output_set_error :
+ * @output :
+ * @code :
+ * @format :
+ * @Varargs :
+ *
+ * <note>This is a utility routine that should only be used by derived
+ * outputs.</note>
+ *
+ * Returns Always returns FALSE to facilitate its use.
+ **/
+gboolean
+gsf_output_set_error (GsfOutput  *output,
+		      gint        code,
+		      char const *format,
+		      ...)
+{
+	g_return_val_if_fail (GSF_IS_OUTPUT (output), FALSE);
+
+	g_clear_error (&output->err);
+
+	if (format != NULL) {
+		va_list args;
+		va_start (args, format);
+		output->err = g_new (GError, 1);
+		output->err->domain = gsf_output_error_id ();
+		output->err->code = code;
+		output->err->message = g_strdup_vprintf (format, args);
+		va_end (args);
+	}
+
+	return FALSE;
+}
+
+static void
+cb_output_unwrap (GsfOutput *wrapee, G_GNUC_UNUSED GObject *wrapper)
+{
+	wrapee->wrapped_by = NULL;
+}
+
+/**
+ * gsf_output_wrap :
+ * @wrapper :
+ * @wrapee :
+ *
+ * Returns TRUE if the wrapping succeeded.
+ **/
+gboolean
+gsf_output_wrap (GObject *wrapper, GsfOutput *wrapee)
+{
+	g_return_val_if_fail (wrapper != NULL, FALSE);
+	g_return_val_if_fail (wrapee != NULL, FALSE);
+
+	if (wrapee->wrapped_by != NULL) {
+		g_warning ("Attempt to wrap an output that is already wrapped.");
+		return FALSE;
+	}
+
+	g_object_weak_ref (G_OBJECT (wrapper),
+		(GWeakNotify) cb_output_unwrap, wrapee);
+	wrapee->wrapped_by = wrapper;
+	return TRUE;
+}
+
+/**
+ * gsf_output_unwrap :
+ * @wrapper :
+ * @wrapee :
+ *
+ * Returns TRUE if the unwrapping succeeded.
+ **/
+gboolean
+gsf_output_unwrap (GObject *wrapper, GsfOutput *wrapee)
+{
+	g_return_val_if_fail (wrapee != NULL, FALSE);
+	g_return_val_if_fail (wrapee->wrapped_by == wrapper, FALSE);
+
+	wrapee->wrapped_by = NULL;
+	g_object_weak_unref (G_OBJECT (wrapper),
+		(GWeakNotify) cb_output_unwrap, wrapee);
+	return TRUE;
+}
+
+GQuark
+gsf_output_error_id (void)
+{
+	static GQuark quark;
+	if (!quark)
+		quark = g_quark_from_static_string ("gsf_output_error");
+	return quark;
+}
+
+/**
+ * gsf_output_printf:
+ * @output: A #GsfOutput
+ * @format: The printf-style format string
+ * @Varargs: the arguments for @format
+ *
+ * Returns: TRUE if successful, FALSE if not
+ **/
+gboolean
+gsf_output_printf (GsfOutput *output, char const *format, ...)
+{
+	va_list args;
+	gboolean res;
+
+	va_start (args, format);
+	res = (gsf_output_vprintf (output, format, args) >= 0);
+	va_end (args);
+	return res;
+}
+
+/**
+ * gsf_output_vprintf:
+ * @output: A #GsfOutput
+ * @format: The printf-style format string
+ * @args: the arguments for @format
+ *
+ * Returns: number of bytes printed, a negative value if not successful
+ **/
+gsf_off_t
+gsf_output_vprintf (GsfOutput *output, char const *format, va_list args)
+{
+	gsf_off_t num_bytes;
+
+	g_return_val_if_fail (output != NULL, -1);
+	g_return_val_if_fail (format != NULL, -1);
+	/* g_return_val_if_fail (strlen (format) > 0, -1); -- Why? */
+
+	num_bytes = GET_CLASS (output)->Vprintf (output, format, args);
+
+	if (num_bytes >= 0)
+		if (!gsf_output_inc_cur_offset (output, num_bytes))
+			return -1;
+	return num_bytes;
+}
+
+static gsf_off_t
+gsf_output_real_vprintf (GsfOutput *output, char const *fmt, va_list args)
+{
+	gsf_off_t reslen;
+
+	if (NULL == output->printf_buf) {
+		output->printf_buf_size = 128;
+		output->printf_buf = g_new (char, output->printf_buf_size);
+	}
+	reslen = g_vsnprintf (output->printf_buf, output->printf_buf_size, fmt, args);
+
+	/* handle C99 or older -1 case of vsnprintf */
+	if (reslen < 0 || reslen >= output->printf_buf_size) {
+		g_free (output->printf_buf);
+		output->printf_buf = g_strdup_vprintf (fmt, args);
+		reslen = output->printf_buf_size = strlen (output->printf_buf);
+	}
+
+	if (reslen == 0 ||
+	    GET_CLASS (output)->Write (output, reslen, output->printf_buf))
+		return reslen;
+
+	return -1;
+}
+
+/**
+ * gsf_output_puts:
+ * @output: A #GsfOutput
+ * @line: %null terminated string to write
+ *
+ * Like fputs, this assumes that the line already ends with a newline 
+ *
+ * Returns: TRUE if successful, FALSE if not
+ **/
+gboolean
+gsf_output_puts (GsfOutput *output, char const *line)
+{
+	size_t nbytes = 0;
+
+	g_return_val_if_fail (line != NULL, FALSE);
+
+	nbytes = strlen (line);
+	return gsf_output_write (output, nbytes, line);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-output.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,96 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output.h: interface for storing data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_H
+#define GSF_OUTPUT_H
+
+#include <gsf/gsf.h>
+#include <sys/types.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+typedef struct {
+	GObjectClass g_object_class;
+
+	gboolean (*Close)   (GsfOutput *output);
+	gboolean (*Seek)    (GsfOutput *output,
+			     gsf_off_t offset, GSeekType whence);
+	gboolean (*Write)   (GsfOutput *output,
+			     size_t num_bytes, guint8 const *data);
+	gsf_off_t (*Vprintf) (GsfOutput *output,
+			     char const *format, va_list args);
+} GsfOutputClass;
+#define GSF_OUTPUT_CLASS(k)    (G_TYPE_CHECK_CLASS_CAST ((k), GSF_OUTPUT_TYPE, GsfOutputClass))
+#define GSF_IS_OUTPUT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSF_OUTPUT_TYPE))
+
+struct _GsfOutput {
+	GObject g_object;
+
+	/*< protected >*/
+	gsf_off_t   cur_size, cur_offset;
+	char       *name;
+	GObject    *wrapped_by;
+	GsfOutfile *container;
+	GError	   *err;
+	gboolean    is_closed;
+
+	char	   *printf_buf;
+	int	    printf_buf_size;
+};
+#define GSF_OUTPUT_TYPE        (gsf_output_get_type ())
+#define GSF_OUTPUT(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_TYPE, GsfOutput))
+#define GSF_IS_OUTPUT(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_TYPE))
+
+GType gsf_output_get_type (void);
+
+char const   *gsf_output_name	   (GsfOutput const *output);
+GsfOutfile   *gsf_output_container (GsfOutput const *output);
+
+GError const *gsf_output_error	   (GsfOutput const *output);
+gboolean gsf_output_set_error	   (GsfOutput *output,
+				    gint        code,
+				    char const *format,
+				    ...) G_GNUC_PRINTF (3, 4);
+
+gsf_off_t     gsf_output_size      (GsfOutput *output);
+gboolean      gsf_output_close     (GsfOutput *output);
+gboolean      gsf_output_is_closed (GsfOutput const *output);
+gsf_off_t     gsf_output_tell      (GsfOutput *output);
+gboolean      gsf_output_seek      (GsfOutput *output,
+				    gsf_off_t offset, GSeekType whence);
+gboolean      gsf_output_write     (GsfOutput *output,
+				    size_t num_bytes, guint8 const *data);
+
+gboolean gsf_output_wrap   (GObject *wrapper, GsfOutput *wrapee);
+gboolean gsf_output_unwrap (GObject *wrapper, GsfOutput *wrapee);
+
+GQuark gsf_output_error_id (void);
+
+gboolean gsf_output_printf (GsfOutput *output, char const *format,
+			    ...) G_GNUC_PRINTF (2, 3);
+gsf_off_t gsf_output_vprintf (GsfOutput *output, char const *format,
+			      va_list args) G_GNUC_PRINTF (2, 0);
+gboolean gsf_output_puts (GsfOutput *output, char const *line);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,107 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-shared-memory.c: 
+ *
+ * Copyright (C) 2002-2004 Morten Welinder (terra at diku.dk)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-shared-memory.h>
+#include <gsf/gsf-impl-utils.h>
+
+#ifdef HAVE_MMAP
+#include <sys/types.h>
+#include <sys/mman.h>
+#elif defined(G_OS_WIN32)
+#include <windows.h>
+#endif
+
+typedef struct {
+	GObjectClass g_object_class;
+} GsfSharedMemoryClass;
+
+static GObjectClass *parent_class;
+
+GsfSharedMemory *
+gsf_shared_memory_new (void *buf, gsf_off_t size, gboolean needs_free)
+{
+	GsfSharedMemory *mem = g_object_new (GSF_SHARED_MEMORY_TYPE, NULL);
+	mem->buf = buf;
+	mem->size = size;
+	mem->needs_free = needs_free;
+	mem->needs_unmap = FALSE;
+	return mem;
+}
+
+GsfSharedMemory *
+gsf_shared_memory_mmapped_new (void *buf, gsf_off_t size)
+{
+#if defined(HAVE_MMAP) || defined(G_OS_WIN32)
+	size_t msize = size;
+	if ((gsf_off_t)msize != size) {
+		g_warning ("memory buffer size too large");
+		return NULL;
+	} else {
+		GsfSharedMemory *mem = gsf_shared_memory_new (buf, size, FALSE);
+		mem->needs_unmap = TRUE;
+		return mem;
+	}
+#else
+	return NULL;
+#endif
+}
+
+static void
+gsf_shared_memory_finalize (GObject *obj)
+{
+	GsfSharedMemory *mem = (GsfSharedMemory *) (obj);
+	
+	if (mem->buf != NULL) {
+		if (mem->needs_free)
+			g_free (mem->buf);
+		else if (mem->needs_unmap) {
+#ifdef HAVE_MMAP
+			munmap (mem->buf, mem->size);
+#elif defined(G_OS_WIN32)
+			UnmapViewOfFile (mem->buf);
+#else
+			g_assert_not_reached ();
+#endif
+		}
+	}
+
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gsf_shared_memory_init (GObject *obj)
+{
+	GsfSharedMemory *mem = (GsfSharedMemory *) (obj);
+	mem->buf = NULL;
+}
+
+static void
+gsf_shared_memory_class_init (GObjectClass *gobject_class)
+{
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	gobject_class->finalize = gsf_shared_memory_finalize;
+}
+
+GSF_CLASS (GsfSharedMemory, gsf_shared_memory,
+	   gsf_shared_memory_class_init, gsf_shared_memory_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-shared-memory.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,50 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-shared-memory.h
+ *
+ * Copyright (C) 2002-2004 Morten Welinder (terra at diku.dk)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_SHARED_MEMORY_H
+#define GSF_SHARED_MEMORY_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GSF_SHARED_MEMORY_TYPE	(gsf_shared_memory_get_type ())
+#define GSF_SHARED_MEMORY(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_SHARED_MEMORY_TYPE, GsfSharedMemory))
+#define GSF_IS_SHARED_MEMORY(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_SHARED_MEMORY_TYPE))
+
+typedef struct _GsfSharedMemory GsfSharedMemory;
+struct _GsfSharedMemory {
+	GObject g_object;
+	void *buf;
+	gsf_off_t size;
+
+	gboolean needs_free;
+	gboolean needs_unmap;
+};
+
+GType gsf_shared_memory_get_type (void);
+GsfSharedMemory *gsf_shared_memory_new (void *buf, gsf_off_t size, gboolean needs_free);
+GsfSharedMemory *gsf_shared_memory_mmapped_new (void *buf, gsf_off_t size);
+
+G_END_DECLS
+
+#endif /* GSF_SHARED_MEMORY_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,298 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-structured_blob.c : Utility storage to blob in/out a tree of data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-structured-blob.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf/gsf-infile-impl.h>
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-output.h>
+#include <gsf/gsf-shared-memory.h>
+#include <string.h>
+
+static GObjectClass *parent_class;
+
+struct _GsfStructuredBlob {
+	GsfInfile base;
+
+	GsfSharedMemory *data;
+	GPtrArray *children;
+}; 
+typedef struct {
+	GsfInfileClass base;
+} GsfStructuredBlobClass;
+
+static void
+blob_finalize (GObject *obj)
+{
+	unsigned i;
+	GsfStructuredBlob *blob = GSF_STRUCTURED_BLOB (obj);
+
+	if (blob->data != NULL) {
+		g_object_unref (G_OBJECT (blob->data));
+		blob->data = NULL;
+	}
+
+	if (blob->children != NULL) {
+		for (i = 0; i < blob->children->len ; i++)
+			g_object_unref (g_ptr_array_index (blob->children, i));
+		g_ptr_array_free (blob->children, TRUE);
+		blob->children = NULL;
+	}
+
+	parent_class->finalize (obj);
+}
+
+static GsfInput *
+blob_dup (GsfInput *input, G_GNUC_UNUSED GError **err)
+{
+	GsfStructuredBlob const *src = (GsfStructuredBlob *) input;
+	GsfStructuredBlob *dst = g_object_new (GSF_STRUCTURED_BLOB_TYPE, NULL);
+
+	if (src->data != NULL) {
+		dst->data = src->data;
+		g_object_ref (G_OBJECT (dst->data));
+	}
+	if (src->children != NULL) {
+		unsigned i;
+		gpointer child;
+
+		dst->children = g_ptr_array_sized_new (src->children->len);
+		g_ptr_array_set_size  (dst->children, src->children->len);
+		for (i = 0; i < src->children->len ; i++) {
+			child = g_ptr_array_index (src->children, i);
+			g_ptr_array_index (dst->children, i) = child;
+			g_object_ref (child);
+		}
+	}
+
+	return GSF_INPUT (dst);
+}
+
+static guint8 const *
+blob_read (GsfInput *input, size_t num_bytes, guint8 *optional_buffer)
+{
+	GsfStructuredBlob *blob = (GsfStructuredBlob *) input;
+	guchar const *src = blob->data->buf;
+
+	if (src == NULL)
+		return NULL;
+	if (optional_buffer) {
+		memcpy (optional_buffer, src + input->cur_offset, num_bytes);
+		return optional_buffer;
+	} else
+		return src + input->cur_offset;
+}
+
+static gboolean
+blob_seek (G_GNUC_UNUSED GsfInput *input,
+	   G_GNUC_UNUSED gsf_off_t offset,
+	   G_GNUC_UNUSED GSeekType whence)
+{
+	return FALSE;
+}
+
+static int
+blob_num_children (GsfInfile *infile)
+{
+	GsfStructuredBlob const *blob = (GsfStructuredBlob *) infile;
+
+	if (blob->children != NULL)
+		return blob->children->len;
+	return -1;
+}
+
+static char const *
+blob_name_by_index (GsfInfile *infile, int i)
+{
+	GsfStructuredBlob const *blob = (GsfStructuredBlob *) infile;
+	if (blob->children != NULL) {
+		g_return_val_if_fail (i < 0 || (unsigned)i >= blob->children->len, NULL);
+		return gsf_input_name (g_ptr_array_index (blob->children, i));
+	}
+	return NULL;
+}
+
+static GsfInput   *
+blob_child_by_index (GsfInfile *infile, int i, GError **err)
+{
+	GsfStructuredBlob const *blob = (GsfStructuredBlob *) infile;
+	if (blob->children != NULL) {
+		g_return_val_if_fail (i < 0 || (unsigned)i >= blob->children->len, NULL);
+		return gsf_input_dup (g_ptr_array_index (blob->children, i), err);
+	}
+	return NULL;
+}
+
+static GsfInput   *
+blob_child_by_name (GsfInfile *infile, char const *name, GError **err)
+{
+	GsfStructuredBlob const *blob = (GsfStructuredBlob *) infile;
+	if (blob->children != NULL) {
+		unsigned i;
+		GsfInput *child;
+
+		for (i = 0 ; i < blob->children->len ;) {
+			child = g_ptr_array_index (blob->children, i);
+			if (!strcmp (gsf_input_name (child), name))
+				return gsf_input_dup (child, err);
+		}
+	}
+	return NULL;
+}
+
+static void
+gsf_structured_blob_init (GObject *obj)
+{
+	GsfStructuredBlob *blob = GSF_STRUCTURED_BLOB (obj);
+
+	blob->data = NULL;
+	blob->children = NULL;
+}
+
+static void
+gsf_structured_blob_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass  *input_class  = GSF_INPUT_CLASS (gobject_class);
+	GsfInfileClass *infile_class = GSF_INFILE_CLASS (gobject_class);
+
+	gobject_class->finalize		= blob_finalize;
+	input_class->Dup		= blob_dup;
+	input_class->Read		= blob_read;
+	input_class->Seek		= blob_seek;
+	infile_class->num_children	= blob_num_children;
+	infile_class->name_by_index	= blob_name_by_index;
+	infile_class->child_by_index	= blob_child_by_index;
+	infile_class->child_by_name	= blob_child_by_name;
+
+	parent_class = g_type_class_peek_parent (gobject_class);
+}
+
+GSF_CLASS (GsfStructuredBlob, gsf_structured_blob,
+	   gsf_structured_blob_class_init, gsf_structured_blob_init,
+	   GSF_INFILE_TYPE)
+
+/**
+ * gsf_structured_blob_read :
+ * @input : An input (potentially a GsfInfile) holding the blob
+ *
+ * Returns a freshly created tree of blobs
+ **/
+GsfStructuredBlob *
+gsf_structured_blob_read (GsfInput *input)
+{
+	GsfStructuredBlob *blob;
+	gsf_off_t content_size;
+	int i = 0;
+
+	g_return_val_if_fail (GSF_IS_INPUT (input), NULL);
+
+	blob = g_object_new (GSF_STRUCTURED_BLOB_TYPE, NULL);
+
+	content_size = gsf_input_remaining (input);
+	if (content_size > 0) {
+		guint8 *buf = (guint8*)g_try_malloc (content_size);
+
+		if (buf == NULL) {
+			g_warning ("Failed attempting to allocate %" GSF_OFF_T_FORMAT " bytes",
+				   content_size);
+
+			g_object_unref (G_OBJECT (blob));
+			return NULL;
+		}
+
+		gsf_input_read (input, content_size, buf);
+		blob->data = gsf_shared_memory_new (buf, content_size, TRUE);
+	}
+
+	gsf_input_set_name (GSF_INPUT (blob), gsf_input_name (input));
+
+	if (GSF_IS_INFILE (input))
+		i = gsf_infile_num_children (GSF_INFILE (input));
+	if (i > 0) {
+		GsfInput	  *child;
+		GsfStructuredBlob *child_blob;
+
+		blob->children = g_ptr_array_sized_new (i);
+		g_ptr_array_set_size  (blob->children, i);
+		while (i-- > 0) {
+			child = gsf_infile_child_by_index (GSF_INFILE (input), i);
+			child_blob = gsf_structured_blob_read (child);
+			g_object_unref (G_OBJECT (child));
+
+			g_ptr_array_index (blob->children, i) = child_blob;
+#if 0
+			/*
+			 * We don't need this, and setting it causes circular
+			 * links.
+			 */
+			gsf_input_set_container (GSF_INPUT (child_blob),
+						 GSF_INFILE (blob));
+#endif
+		}
+	}
+
+	return blob;
+}
+
+/**
+ * gsf_structured_blob_write :
+ * @blob :
+ * @container :
+ *
+ * Dumps structured blob @blob onto the @container.  Will fail if the output is
+ * not an Outfile and blob has multiple streams.
+ *
+ * Returns : TRUE on success.
+ **/
+gboolean
+gsf_structured_blob_write (GsfStructuredBlob *blob, GsfOutfile *container)
+{
+	GsfOutput *output;
+	gboolean has_kids;
+
+	g_return_val_if_fail (GSF_IS_STRUCTURED_BLOB (blob), FALSE);
+	g_return_val_if_fail (GSF_IS_OUTFILE (container), FALSE);
+
+	has_kids = (blob->children != NULL && blob->children->len > 0);
+
+	output = gsf_outfile_new_child  (GSF_OUTFILE (container),
+		gsf_input_name (GSF_INPUT (blob)),
+		has_kids);
+	if (has_kids) {
+		GsfStructuredBlob *child_blob;
+		unsigned i;
+
+		for (i = 0 ; i < blob->children->len ; i++) {
+			child_blob = g_ptr_array_index (blob->children, i);
+			if (!gsf_structured_blob_write (child_blob, GSF_OUTFILE (output)))
+				return FALSE;
+		}
+	}
+
+	if (blob->data != NULL)
+		gsf_output_write (output, blob->data->size, blob->data->buf);
+	gsf_output_close (output);
+	g_object_unref (G_OBJECT (output));
+
+	return TRUE;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-structured-blob.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-structured-blob.h:  Utility storage to blob in/out a tree of data
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_STRUCTURED_BLOB_H
+#define GSF_STRUCTURED_BLOB_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GSF_STRUCTURED_BLOB_TYPE        (gsf_structured_blob_get_type ())
+#define GSF_STRUCTURED_BLOB(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_STRUCTURED_BLOB_TYPE, GsfStructuredBlob))
+#define GSF_IS_STRUCTURED_BLOB(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_STRUCTURED_BLOB_TYPE))
+
+typedef struct _GsfStructuredBlob	GsfStructuredBlob;
+
+/* inherits from GsfInfile */
+GType gsf_structured_blob_get_type (void);
+
+GsfStructuredBlob *gsf_structured_blob_read  (GsfInput *input);
+gboolean	   gsf_structured_blob_write (GsfStructuredBlob *blob,
+					      GsfOutfile *container);
+
+G_END_DECLS
+
+#endif /* GSF_STRUCTURED_BLOB_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,99 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-timestamp.c: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-timestamp.h>
+#include <string.h>
+#include <time.h>
+
+static void
+timestamp_to_string (GValue const *src_value, GValue *dest_value)
+{
+	char *str = gsf_timestamp_as_string (g_value_get_boxed (src_value));
+	g_value_set_string (dest_value, str);
+	g_free (str);
+}
+
+GType
+gsf_timestamp_get_type (void)
+{
+	static GType our_type = 0;
+
+	if (our_type == 0) {
+		our_type = g_boxed_type_register_static ("GsfTimestamp",
+					(GBoxedCopyFunc)gsf_timestamp_copy,
+					(GBoxedFreeFunc)gsf_timestamp_free);
+		g_value_register_transform_func	(our_type, G_TYPE_STRING,
+			&timestamp_to_string);
+	}
+	return our_type;
+}
+
+GsfTimestamp *
+gsf_timestamp_copy (GsfTimestamp const *stamp)
+{
+	GsfTimestamp *res = g_new0 (GsfTimestamp, 1);
+	res->timet = stamp->timet;
+	return res;
+}
+
+void
+gsf_timestamp_free (GsfTimestamp *stamp)
+{
+	g_free (stamp);
+}
+
+int
+gsf_timestamp_parse (G_GNUC_UNUSED char const *spec,
+		     G_GNUC_UNUSED GsfTimestamp *stamp)
+{
+	return 0;
+}
+
+char *
+gsf_timestamp_as_string	(GsfTimestamp const *stamp)
+{
+	time_t t;
+	g_return_val_if_fail (stamp != NULL, g_strdup ("<invalid>"));
+
+	/* Use an honest time_t for ctime.  */
+	t = stamp->timet;
+/* FIXME FIXME FIXME  ctime is not thread safe, use ctime_r if available */
+	return g_strdup (ctime (&t));
+}
+
+guint
+gsf_timestamp_hash (GsfTimestamp const *stamp)
+{
+	return stamp->timet;
+}
+
+gboolean
+gsf_timestamp_equal (GsfTimestamp const *a, GsfTimestamp const *b)
+{
+	return a->timet == b->timet;
+}
+
+void
+gsf_value_set_timestamp (GValue *value, GsfTimestamp const *stamp)
+{
+	g_value_set_boxed (value, stamp);
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-timestamp.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,60 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-timestamp.h: A useful little type for metadata, contains a superset of
+ *		 all the features it would be nice to have.
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_TIMESTAMP_H
+#define GSF_TIMESTAMP_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GSF_TIMESTAMP_TYPE      (gsf_timestamp_get_type ())
+#define VAL_IS_GSF_TIMESTAMP(v) (G_TYPE_CHECK_VALUE_TYPE((v), GSF_TIMESTAMP_TYPE))
+
+struct _GsfTimestamp {
+	GDate	  date;			/* In local timezone */
+	glong     seconds;		/* time of day */
+	GString	  time_zone;		/* possibly blank */
+
+	guint32	  timet;
+};
+
+GType gsf_timestamp_get_type (void);
+
+GsfTimestamp *gsf_timestamp_new_now	(void);
+GsfTimestamp *gsf_timestamp_new		(GDate const *date, glong seconds,
+					 char const *tz);
+
+GsfTimestamp *gsf_timestamp_copy	(GsfTimestamp const *stamp);
+void          gsf_timestamp_free	(GsfTimestamp       *stamp);
+int           gsf_timestamp_parse	(char const *spec, GsfTimestamp *stamp);
+char 	     *gsf_timestamp_as_string	(GsfTimestamp const *stamp);
+guint         gsf_timestamp_hash	(GsfTimestamp const *stamp);
+gboolean      gsf_timestamp_equal	(GsfTimestamp const *a,
+					 GsfTimestamp const *b);
+
+void gsf_value_set_timestamp (GValue *value, GsfTimestamp const *stamp);
+
+G_END_DECLS
+
+#endif /* GSF_TIMESTAMP_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,769 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-utils.c: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-input.h>
+#include <gobject/gvaluecollector.h>
+#include <glib/gi18n-lib.h>
+
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+
+/*
+ * Glib gets this wrong, really.  ARM's floating point format is a weird
+ * mixture.
+ */
+#define G_ARMFLOAT_ENDIAN 56781234
+#if defined(__arm__) && !defined(__vfp__) && (G_BYTE_ORDER == G_LITTLE_ENDIAN)
+#define G_FLOAT_BYTE_ORDER G_ARMFLOAT_ENDIAN
+#else
+#define G_FLOAT_BYTE_ORDER G_BYTE_ORDER
+#endif
+
+
+static void base64_init (void);
+
+/**
+ * gsf_init :
+ *
+ * Initializes the GSF library
+ */
+void
+gsf_init (void)
+{
+#ifdef ENABLE_NLS
+	bindtextdomain(GETTEXT_PACKAGE, GNOMELOCALEDIR);
+	bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+#endif
+
+	g_type_init ();
+	base64_init ();
+}
+
+/**
+ * gsf_shutdown:
+ * 
+ * De-intializes the GSF library
+ */
+void
+gsf_shutdown (void)
+{
+}
+
+void
+gsf_init_dynamic (GTypeModule *module)
+{
+	(void)module;
+}
+
+void
+gsf_shutdown_dynamic (GTypeModule *module)
+{
+	(void)module;
+}
+
+static void
+gsf_mem_dump_full (guint8 const *ptr, size_t len, gsf_off_t offset)
+{
+	gsf_off_t i, j, off;
+
+	for (i = 0 ; i < (len+15)/16 ; i++) {
+		g_print ("%8lx | ", (long)(i*16 + offset));
+		for (j = 0;j < 16; j++) {
+			off = j + (i << 4);
+			off<len ? g_print("%2x ", ptr[off]) : g_print("XX ");
+		}
+		g_print ("| ");
+		for (j = 0 ; j < 16 ; j++) {
+			off = j + (i<<4);
+			g_print ("%c", off < len ? (ptr[off] >= '!' && ptr[off] < 127 ? ptr[off] : '.') : '*');
+		}
+		g_print ("\n");
+	}
+}
+
+/**
+ * gsf_mem_dump :
+ * @ptr: memory area to be dumped.
+ * @len: how many bytes will be dumped.
+ *
+ * Dump @len bytes from the memory location given by @ptr.
+ **/
+void
+gsf_mem_dump (guint8 const *ptr, size_t len)
+{
+	gsf_mem_dump_full (ptr, len, 0);
+}
+
+/**
+ * gsf_input_dump :
+ * @input: a #GsfInput
+ * @dump_as_hex: If TRUE, dump in hexidecmal format
+ *
+ * Dumps @input's contents to STDOUT, optionally in hex format.
+ */
+void
+gsf_input_dump (GsfInput *input, gboolean dump_as_hex)
+{
+	gsf_off_t offset = 0;
+	size_t size, count;
+	guint8 const *data;
+
+	/* read in small blocks to excercise things */
+	size = gsf_input_size (GSF_INPUT (input));
+	while (size > 0) {
+		count = size;
+		if (count > 0x100)
+			count = 0x100;
+		data = gsf_input_read (GSF_INPUT (input), count, NULL);
+		g_return_if_fail (data != NULL);
+		if (dump_as_hex)
+			gsf_mem_dump_full (data, count, offset);
+		else
+			fwrite (data, 1, count, stdout);
+		size -= count;
+		offset += count;
+	}
+	if (!dump_as_hex)
+		fflush (stdout);
+}
+
+guint64
+gsf_le_get_guint64 (void const *p)
+{
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+	if (sizeof (guint64) == 8) {
+		guint64 li;
+		int     i;
+		guint8 *t  = (guint8 *)&li;
+		guint8 *p2 = (guint8 *)p;
+		int     sd = sizeof (li);
+
+		for (i = 0; i < sd; i++)
+			t[i] = p2[sd - 1 - i];
+
+		return li;
+	} else {
+		g_error ("Big endian machine, but weird size of guint64");
+	}
+#elif G_BYTE_ORDER == G_LITTLE_ENDIAN
+	if (sizeof (guint64) == 8) {
+		/*
+		 * On i86, we could access directly, but Alphas require
+		 * aligned access.
+		 */
+		guint64 data;
+		memcpy (&data, p, sizeof (data));
+		return data;
+	} else {
+		g_error ("Little endian machine, but weird size of guint64");
+	}
+#else
+#error "Byte order not recognised -- out of luck"
+#endif
+}
+
+float
+gsf_le_get_float (void const *p)
+{
+#if G_FLOAT_BYTE_ORDER == G_BIG_ENDIAN
+	if (sizeof (float) == 4) {
+		float   f;
+		int     i;
+		guint8 *t  = (guint8 *)&f;
+		guint8 *p2 = (guint8 *)p;
+		int     sd = sizeof (f);
+
+		for (i = 0; i < sd; i++)
+			t[i] = p2[sd - 1 - i];
+
+		return f;
+	} else {
+		g_error ("Big endian machine, but weird size of floats");
+	}
+#elif (G_FLOAT_BYTE_ORDER == G_LITTLE_ENDIAN) || (G_FLOAT_BYTE_ORDER == G_ARMFLOAT_ENDIAN)
+	if (sizeof (float) == 4) {
+		/*
+		 * On i86, we could access directly, but Alphas require
+		 * aligned access.
+		 */
+		float data;
+		memcpy (&data, p, sizeof (data));
+		return data;
+	} else {
+		g_error ("Little endian machine, but weird size of floats");
+	}
+#else
+#error "Floating-point byte order not recognised -- out of luck"
+#endif
+}
+
+void
+gsf_le_set_float (void *p, float d)
+{
+#if G_FLOAT_BYTE_ORDER == G_BIG_ENDIAN
+	if (sizeof (float) == 4) {
+		int     i;
+		guint8 *t  = (guint8 *)&d;
+		guint8 *p2 = (guint8 *)p;
+		int     sd = sizeof (d);
+
+		for (i = 0; i < sd; i++)
+			p2[sd - 1 - i] = t[i];
+	} else {
+		g_error ("Big endian machine, but weird size of floats");
+	}
+#elif (G_FLOAT_BYTE_ORDER == G_LITTLE_ENDIAN) || (G_FLOAT_BYTE_ORDER == G_ARMFLOAT_ENDIAN)
+	if (sizeof (float) == 4) {
+		/*
+		 * On i86, we could access directly, but Alphas require
+		 * aligned access.
+		 */
+		memcpy (p, &d, sizeof (d));
+	} else {
+		g_error ("Little endian machine, but weird size of floats");
+	}
+#else
+#error "Floating-point byte order not recognised -- out of luck"
+#endif
+}
+
+double
+gsf_le_get_double (void const *p)
+{
+#if G_FLOAT_BYTE_ORDER == G_ARMFLOAT_ENDIAN
+	double data;
+	memcpy ((char *)&data + 4, p, 4);
+	memcpy ((char *)&data, (char const *)p + 4, 4);
+	return data;
+#elif G_FLOAT_BYTE_ORDER == G_BIG_ENDIAN
+	if (sizeof (double) == 8) {
+		double  d;
+		int     i;
+		guint8 *t  = (guint8 *)&d;
+		guint8 *p2 = (guint8 *)p;
+		int     sd = sizeof (d);
+
+		for (i = 0; i < sd; i++)
+			t[i] = p2[sd - 1 - i];
+
+		return d;
+	} else {
+		g_error ("Big endian machine, but weird size of doubles");
+	}
+#elif G_FLOAT_BYTE_ORDER == G_LITTLE_ENDIAN
+	if (sizeof (double) == 8) {
+		/*
+		 * On i86, we could access directly, but Alphas require
+		 * aligned access.
+		 */
+		double data;
+		memcpy (&data, p, sizeof (data));
+		return data;
+	} else {
+		g_error ("Little endian machine, but weird size of doubles");
+	}
+#else
+#error "Floating-point byte order not recognised -- out of luck"
+#endif
+}
+
+void
+gsf_le_set_double (void *p, double d)
+{
+#if G_FLOAT_BYTE_ORDER == G_ARMFLOAT_ENDIAN
+	memcpy (p, (char const *)&d + 4, 4);
+	memcpy ((char *)p + 4, &d, 4);
+#elif G_FLOAT_BYTE_ORDER == G_BIG_ENDIAN
+	if (sizeof (double) == 8) {
+		int     i;
+		guint8 *t  = (guint8 *)&d;
+		guint8 *p2 = (guint8 *)p;
+		int     sd = sizeof (d);
+
+		for (i = 0; i < sd; i++)
+			p2[sd - 1 - i] = t[i];
+	} else {
+		g_error ("Big endian machine, but weird size of doubles");
+	}
+#elif G_FLOAT_BYTE_ORDER == G_LITTLE_ENDIAN
+	if (sizeof (double) == 8) {
+		/*
+		 * On i86, we could access directly, but Alphas require
+		 * aligned access.
+		 */
+		memcpy (p, &d, sizeof (d));
+	} else {
+		g_error ("Little endian machine, but weird size of doubles");
+	}
+#else
+#error "Floating-point byte order not recognised -- out of luck"
+#endif
+}
+
+/**
+ * gsf_extension_pointer:
+ * @path: A filename or file path.
+ *
+ * Extracts the extension from the end of a filename (the part after the final
+ * '.' in the filename).
+ *
+ * Returns: A pointer to the extension part of the filename, or a
+ * pointer to the end of the string if the filename does not
+ * have an extension.
+ */
+char const *
+gsf_extension_pointer (char const *path)
+{
+	char const *s, *end;
+	
+	g_return_val_if_fail (path != NULL, NULL);
+
+	end = path + strlen (path);
+	for (s = end; s > path; ) {
+		s--;
+		if (G_IS_DIR_SEPARATOR (*s))
+			break;
+		if (*s == '.')
+			return s + 1;
+	}
+
+	return end;
+}
+
+/**
+ * gsf_iconv_close : A utility wrapper to safely close an iconv handle
+ * @handle :
+ **/
+void
+gsf_iconv_close (GIConv handle)
+{
+	if (handle != NULL && handle != ((GIConv)-1))
+		g_iconv_close (handle);
+}
+
+/**
+ * gsf_filename_to_utf8:
+ * @filename: file name suitable for open(2).
+ * @quoted: if TRUE, the resulting utf8 file name will be quoted
+ *    (unless it is invalid).
+ *
+ * A utility wrapper to make sure filenames are valid utf8.
+ * Caller must g_free the result.
+ *
+ * Returns @filename using utf-8 encoding for display
+ **/
+char *
+gsf_filename_to_utf8 (char const *filename, gboolean quoted)
+{
+	char *dname = g_filename_display_name (filename);
+	char *result;
+
+	if (quoted) {
+		result = g_strconcat ("\"", dname, "\"", NULL);
+		g_free (dname);
+	} else
+		result = dname;
+
+	return result;
+}
+
+/***************************************************************************/
+/* some code taken from evolution/camel/camel-mime-utils.c */
+
+/*
+ *  Copyright (C) 2000 Ximian Inc.
+ *
+ *  Authors: Michael Zucchi <notzed at ximian.com>
+ *           Jeffrey Stedfast <fejj at ximian.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 St, Fifth Floor,
+ * Boston, MA  02110-1301  USA
+ */
+
+/* dont touch this file without my permission - Michael */
+static guint8 camel_mime_base64_rank[256];
+static char const *base64_alphabet =
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+#define d(x)
+
+/* Line length for base64 encoding.  Must be a multiple of 4. */
+enum { BASE64_LINE_LEN = 76 };
+
+static void
+base64_init(void)
+{
+	int i;
+
+	memset(camel_mime_base64_rank, 0xff, sizeof(camel_mime_base64_rank));
+	for (i=0;i<64;i++) {
+		camel_mime_base64_rank[(unsigned int)base64_alphabet[i]] = i;
+	}
+	camel_mime_base64_rank['='] = 0;
+}
+
+/* call this when finished encoding everything, to
+   flush off the last little bit */
+size_t
+gsf_base64_encode_close (guint8 const *in, size_t inlen,
+			 gboolean break_lines, guint8 *out, int *state, unsigned int *save)
+{
+	int c1, c2;
+	guint8 *outptr = out;
+
+	if (inlen>0)
+		outptr += gsf_base64_encode_step(in, inlen, break_lines, outptr, state, save);
+
+	c1 = ((guint8 *)save)[1];
+	c2 = ((guint8 *)save)[2];
+	
+	d(printf("mode = %d\nc1 = %c\nc2 = %c\n",
+		 (int)((char *)save)[0],
+		 (int)((char *)save)[1],
+		 (int)((char *)save)[2]));
+
+	switch (((char *)save)[0]) {
+	case 2:
+		outptr[2] = base64_alphabet[ ( (c2 &0x0f) << 2 ) ];
+		g_assert(outptr[2] != 0);
+		goto skip;
+	case 1:
+		outptr[2] = '=';
+	skip:
+		outptr[0] = base64_alphabet[ c1 >> 2 ];
+		outptr[1] = base64_alphabet[ c2 >> 4 | ( (c1&0x3) << 4 )];
+		outptr[3] = '=';
+		outptr += 4;
+		++*state;
+		break;
+	}
+	if (break_lines && *state > 0)
+		*outptr++ = '\n';
+
+	*save = 0;
+	*state = 0;
+
+	return outptr-out;
+}
+
+/*
+  performs an 'encode step', only encodes blocks of 3 characters to the
+  output at a time, saves left-over state in state and save (initialise to
+  0 on first invocation).
+*/
+size_t
+gsf_base64_encode_step (guint8 const *in, size_t len,
+			gboolean break_lines, guint8 *out, int *state, unsigned int *save)
+{
+	register guint8 const *inptr;
+	register guint8 *outptr;
+
+	if (len<=0)
+		return 0;
+
+	inptr = in;
+	outptr = out;
+
+	d(printf("we have %d chars, and %d saved chars\n", len, ((char *)save)[0]));
+
+	if (len + ((char *)save)[0] > 2) {
+		guint8 const *inend = in+len-2;
+		register int c1, c2, c3;
+		register int already;
+
+		already = *state;
+
+		switch (((char *)save)[0]) {
+		case 1:	c1 = ((guint8 *)save)[1]; goto skip1;
+		case 2:	c1 = ((guint8 *)save)[1];
+			c2 = ((guint8 *)save)[2]; goto skip2;
+		}
+		
+		/* yes, we jump into the loop, no i'm not going to change it, it's beautiful! */
+		while (inptr < inend) {
+			c1 = *inptr++;
+		skip1:
+			c2 = *inptr++;
+		skip2:
+			c3 = *inptr++;
+			*outptr++ = base64_alphabet[ c1 >> 2 ];
+			*outptr++ = base64_alphabet[ c2 >> 4 | ( (c1&0x3) << 4 ) ];
+			*outptr++ = base64_alphabet[ ( (c2 &0x0f) << 2 ) | (c3 >> 6) ];
+			*outptr++ = base64_alphabet[ c3 & 0x3f ];
+			/* this is a bit ugly ... */
+			if (break_lines && (++already) * 4 >= BASE64_LINE_LEN) {
+				*outptr++='\n';
+				already = 0;
+			}
+		}
+
+		((char *)save)[0] = 0;
+		len = 2-(inptr-inend);
+		*state = already;
+	}
+
+	d(printf("state = %d, len = %d\n",
+		 (int)((char *)save)[0],
+		 len));
+
+	if (len>0) {
+		register char *saveout;
+
+		/* points to the slot for the next char to save */
+		saveout = & (((char *)save)[1]) + ((char *)save)[0];
+
+		/* len can only be 0 1 or 2 */
+		switch(len) {
+		case 2:	*saveout++ = *inptr++;
+		case 1:	*saveout++ = *inptr++;
+		}
+		((char *)save)[0]+=len;
+	}
+
+	d(printf("mode = %d\nc1 = %c\nc2 = %c\n",
+		 (int)((char *)save)[0],
+		 (int)((char *)save)[1],
+		 (int)((char *)save)[2]));
+
+	return outptr-out;
+}
+
+
+/**
+ * gsf_base64_decode_step: decode a chunk of base64 encoded data
+ * @in: input stream
+ * @len: max length of data to decode
+ * @out: output stream
+ * @state: holds the number of bits that are stored in @save
+ * @save: leftover bits that have not yet been decoded
+ *
+ * Decodes a chunk of base64 encoded data
+ *
+ * Returns the number of bytes converted
+ **/
+size_t
+gsf_base64_decode_step (guint8 const *in, size_t len, guint8 *out,
+			int *state, guint *save)
+{
+	register guint8 const *inptr;
+	register guint8 *outptr, c;
+	register unsigned int v;
+	guint8 const *inend;
+	int i;
+
+	inend = in+len;
+	outptr = out;
+
+	/* convert 4 base64 bytes to 3 normal bytes */
+	v=*save;
+	i=*state;
+	inptr = in;
+	while (inptr<inend) {
+		c = camel_mime_base64_rank[*inptr++];
+		if (c != 0xff) {
+			v = (v<<6) | c;
+			i++;
+			if (i==4) {
+				*outptr++ = v>>16;
+				*outptr++ = v>>8;
+				*outptr++ = v;
+				i=0;
+			}
+		}
+	}
+
+	*save = v;
+	*state = i;
+
+	/* quick scan back for '=' on the end somewhere */
+	/* fortunately we can drop 1 output char for each trailing = (upto 2) */
+	i=2;
+	while (inptr>in && i) {
+		inptr--;
+		if (camel_mime_base64_rank[*inptr] != 0xff) {
+			if (*inptr == '=' && outptr>out)
+				outptr--;
+			i--;
+		}
+	}
+
+	/* if i!= 0 then there is a truncation error! */
+	return outptr-out;
+}
+
+guint8 *
+gsf_base64_encode_simple (guint8 const *data, size_t len)
+{
+	guint8 *out;
+	int state = 0, outlen;
+	unsigned int save = 0;
+	gboolean break_lines = TRUE;
+
+	outlen = len * 4 / 3 + 5;
+	if (break_lines)
+		outlen += outlen / BASE64_LINE_LEN + 1;
+	out = g_new (guint8, outlen);
+	outlen = gsf_base64_encode_close (data, len, break_lines,
+					  out, &state, &save);
+	out [outlen] = '\0';
+	return out;
+}
+
+size_t
+gsf_base64_decode_simple (guint8 *data, size_t len)
+{
+	int state = 0;
+	unsigned int save = 0;
+	return gsf_base64_decode_step (data, len, data, &state, &save);
+}
+
+
+/* Largely a copy of g_object_new_valist.  */
+/**
+ * gsf_property_settings_collect_valist: collect property setting from a va_list.
+ * @object_type: the GType for which the properties are being set.
+ * @p_n_params: a pointer to the number of properties collected.  (Used for
+ *   both input and output.)
+ * @p_params: a pointer to the GParameter array that holds the properties.
+ *   (Used for both input and output.  This may point to a NULL pointer if
+ *   there are no properties collected yet.)
+ * @first_property_name: the name of the first property being set, or NULL.
+ * @var_args: a va_list holding the remainder of the property names and
+ *   values, terminated by a NULL.
+ *
+ * This function builds a GParameter array suitable for g_object_newv.
+ **/
+void
+gsf_property_settings_collect_valist (GType object_type,
+				      GParameter **p_params,
+				      size_t *p_n_params,
+				      const gchar *first_property_name,
+				      va_list var_args)
+{
+  GObjectClass *class;
+  GParameter *params = *p_params;
+  const gchar *name;
+  size_t n_params = *p_n_params;
+  size_t n_alloced_params = n_params;  /* We might have more.  */
+
+  g_return_if_fail (G_TYPE_IS_OBJECT (object_type));
+
+  class = g_type_class_ref (object_type);
+
+  name = first_property_name;
+  while (name)
+    {
+      gchar *error = NULL;
+      GParamSpec *pspec = g_object_class_find_property (class, name);
+      if (!pspec)
+	{
+	  g_warning ("%s: object class `%s' has no property named `%s'",
+		     G_STRFUNC,
+		     g_type_name (object_type),
+		     name);
+	  break;
+	}
+
+      if (n_params >= n_alloced_params)
+	{
+	  n_alloced_params += 16;
+	  params = g_renew (GParameter, params, n_alloced_params);
+	}
+      params[n_params].name = name;
+      params[n_params].value.g_type = 0;
+      g_value_init (&params[n_params].value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+      G_VALUE_COLLECT (&params[n_params].value, var_args, 0, &error);
+      if (error)
+	{
+	  g_warning ("%s: %s", G_STRFUNC, error);
+	  g_free (error);
+          g_value_unset (&params[n_params].value);
+	  break;
+	}
+      n_params++;
+      name = va_arg (var_args, gchar*);
+    }
+
+  g_type_class_unref (class);
+
+  *p_params = params;
+  *p_n_params = n_params;
+}
+
+/* This is a vararg version of gsf_property_settings_collect_valist.  */
+void
+gsf_property_settings_collect (GType object_type,
+			       GParameter **p_params,
+			       size_t *p_n_params,
+			       const gchar *first_property_name,
+			       ...)
+{
+  va_list var_args;
+  va_start (var_args, first_property_name);
+  gsf_property_settings_collect_valist (object_type, p_params, p_n_params, first_property_name, var_args);
+  va_end (var_args);
+}
+
+void
+gsf_property_settings_free (GParameter *params,
+			    size_t n_params)
+{
+	while (n_params--)
+		g_value_unset (&params[n_params].value);
+	g_free (params);
+}
+
+
+
+/* Errors */
+
+/**
+ * gsf_error_quark:
+ *
+ * Returns the #GQuark used to identify libgsf errors in #GError structures.
+ * Specific error codes come from the #GsfError enumeration.
+ * 
+ * Return value: A #GQuark.
+ **/
+GQuark
+gsf_error_quark (void)
+{
+	static GQuark quark;
+
+	if (quark == 0)
+		quark = g_quark_from_static_string ("gsf-error-quark");
+
+	return quark;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-utils.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,142 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-utils.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_UTILS_H
+#define GSF_UTILS_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* Do this the ugly way so that we don't have to worry about alignment */
+#define GSF_LE_GET_GUINT8(p) (*(guint8 const *)(p))
+#define GSF_LE_GET_GUINT16(p)				\
+	(guint16)((((guint8 const *)(p))[0] << 0)  |	\
+		  (((guint8 const *)(p))[1] << 8))
+#define GSF_LE_GET_GUINT32(p)				\
+	(guint32)((((guint8 const *)(p))[0] << 0)  |	\
+		  (((guint8 const *)(p))[1] << 8)  |	\
+		  (((guint8 const *)(p))[2] << 16) |	\
+		  (((guint8 const *)(p))[3] << 24))
+#define GSF_LE_GET_GUINT64(p) (gsf_le_get_guint64 (p))
+#define GSF_LE_GET_GINT8(p) ((gint8)GSF_LE_GET_GUINT8(p))
+#define GSF_LE_GET_GINT16(p) ((gint16)GSF_LE_GET_GUINT16(p))
+#define GSF_LE_GET_GINT32(p) ((gint32)GSF_LE_GET_GUINT32(p))
+#define GSF_LE_GET_GINT64(p) ((gint64)GSF_LE_GET_GUINT64(p))
+#define GSF_LE_GET_FLOAT(p) (gsf_le_get_float (p))
+#define GSF_LE_GET_DOUBLE(p) (gsf_le_get_double (p))
+guint64 gsf_le_get_guint64 (void const *p);
+float   gsf_le_get_float   (void const *p);
+double  gsf_le_get_double  (void const *p);
+
+#define GSF_LE_SET_GUINT8(p, dat)			\
+	(*((guint8 *)(p))      = ((dat)        & 0xff))
+#define GSF_LE_SET_GUINT16(p, dat)			\
+	((*((guint8 *)(p) + 0) = ((dat)        & 0xff)),\
+	 (*((guint8 *)(p) + 1) = ((dat) >>  8) & 0xff))
+#define GSF_LE_SET_GUINT32(p, dat)				\
+	((*((guint8 *)(p) + 0) = (guchar) ((dat))       & 0xff),	\
+	 (*((guint8 *)(p) + 1) = (guchar) ((dat) >>  8) & 0xff),	\
+	 (*((guint8 *)(p) + 2) = (guchar) ((dat) >> 16) & 0xff),	\
+	 (*((guint8 *)(p) + 3) = (guchar) ((dat) >> 24) & 0xff))
+#define GSF_LE_SET_GUINT64(p, dat)			\
+	((*((guint8 *)(p) + 0) = (guchar) ((dat))       & 0xff),	\
+	 (*((guint8 *)(p) + 1) = (guchar) ((dat) >>  8) & 0xff),	\
+	 (*((guint8 *)(p) + 2) = (guchar) ((dat) >> 16) & 0xff),	\
+	 (*((guint8 *)(p) + 3) = (guchar) ((dat) >> 24) & 0xff),	\
+	 (*((guint8 *)(p) + 4) = (guchar) ((dat) >> 32) & 0xff),	\
+	 (*((guint8 *)(p) + 5) = (guchar) ((dat) >> 40) & 0xff),	\
+	 (*((guint8 *)(p) + 6) = (guchar) ((dat) >> 48) & 0xff),	\
+	 (*((guint8 *)(p) + 7) = (guchar) ((dat) >> 56) & 0xff))
+#define GSF_LE_SET_GINT8(p,dat) GSF_LE_SET_GUINT8((p),(dat))
+#define GSF_LE_SET_GINT16(p,dat) GSF_LE_SET_GUINT16((p),(dat))
+#define GSF_LE_SET_GINT32(p,dat) GSF_LE_SET_GUINT32((p),(dat))
+#define GSF_LE_SET_GINT64(p,dat) GSF_LE_SET_GUINT64((p),(dat))
+#define GSF_LE_SET_FLOAT(p,dat) gsf_le_set_float((p),(dat))
+#define GSF_LE_SET_DOUBLE(p,dat) gsf_le_set_double((p),(dat))
+void gsf_le_set_float  (void *p, float f);
+void gsf_le_set_double (void *p, double d);
+
+void gsf_init (void);
+void gsf_shutdown (void);
+void gsf_init_dynamic	  (GTypeModule *module);
+void gsf_shutdown_dynamic (GTypeModule *module);
+
+/* Debugging utilities */
+ void gsf_mem_dump   (guint8 const *ptr, size_t len);
+void gsf_input_dump (GsfInput *input, gboolean dump_as_hex);
+
+/* base64 encoding utilities */
+guint8 *gsf_base64_encode_simple (guint8 const *data, size_t len);
+size_t  gsf_base64_encode_close  (guint8 const *in, size_t inlen,
+				  gboolean break_lines, guint8 *out,
+				  int *state, guint *save);
+size_t  gsf_base64_encode_step   (guint8 const *in, size_t len,
+				  gboolean break_lines, guint8 *out,
+				  int *state, guint *save);
+
+size_t  gsf_base64_decode_simple (guint8 *data, size_t len);
+size_t  gsf_base64_decode_step   (guint8 const *in, size_t len,
+				  guint8 *out, int *state, guint *save);
+
+
+/* For putting filenames into error messages.  */
+char *gsf_filename_to_utf8 (char const *filename, gboolean quoted);
+
+/* Some version checking */
+extern int libgsf_major_version;
+extern int libgsf_minor_version;
+extern int libgsf_micro_version;
+
+char const *gsf_extension_pointer (char const * path);
+void	    gsf_iconv_close (GIConv handle);
+
+void        gsf_property_settings_collect_valist (GType object_type,
+						  GParameter **p_params,
+						  size_t *p_n_params,
+						  const gchar *first_property_name,
+						  va_list var_args);
+void        gsf_property_settings_collect (GType object_type,
+					   GParameter **p_params,
+					   size_t *p_n_params,
+					   const gchar *first_property_name,
+					   ...);
+void        gsf_property_settings_free (GParameter *params,
+					size_t n_params);
+
+
+
+/* Errors */
+
+#define GSF_ERROR (gsf_error_quark ())
+
+typedef enum {
+	GSF_ERROR_OUT_OF_MEMORY,
+	GSF_ERROR_INVALID_DATA
+} GsfError;
+
+GQuark gsf_error_quark (void);
+
+
+G_END_DECLS
+
+#endif /* GSF_UTILS_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-impl.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-impl.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-impl.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,117 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-zip-impl.h: 
+ *
+ * Copyright (C) 2002-2004 Tambet Ingo (tambet at ximian.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_ZIP_IMPL_H
+#define GSF_ZIP_IMPL_H
+
+#include <gsf/gsf-outfile-zip.h> /* for GsfZipCompressionMethod */
+
+G_BEGIN_DECLS
+
+#define ZIP_HEADER_SIZE 		30
+#define ZIP_HEADER_VERSION 		 4
+#define ZIP_HEADER_OS	 		 5
+#define ZIP_HEADER_FLAGS 	         6
+#define ZIP_HEADER_COMP_METHOD           8
+#define ZIP_HEADER_TIME                 10
+#define ZIP_HEADER_CRC 			14
+#define ZIP_HEADER_COMP_SIZE		18
+#define ZIP_HEADER_UNCOMP_SIZE          22
+#define ZIP_HEADER_NAME_LEN		26
+#define ZIP_HEADER_EXTRA_LEN		28
+
+#define ZIP_TRAILER_SIZE 		22
+#define ZIP_TRAILER_DISK 		4
+#define ZIP_TRAILER_DIR_DISK 		6
+#define ZIP_TRAILER_ENTRIES 		8
+#define ZIP_TRAILER_TOTAL_ENTRIES 	10
+#define ZIP_TRAILER_DIR_SIZE 		12
+#define ZIP_TRAILER_DIR_POS 		16
+#define ZIP_TRAILER_COMMENT_SIZE	20
+
+#define ZIP_DIRENT_SIZE                 46
+#define ZIP_DIRENT_ENCODER              4
+#define ZIP_DIRENT_EXTRACT              6
+#define ZIP_DIRENT_FLAGS                8
+#define ZIP_DIRENT_COMPR_METHOD         10
+#define ZIP_DIRENT_DOSTIME              12
+#define ZIP_DIRENT_CRC32                16
+#define ZIP_DIRENT_CSIZE                20
+#define ZIP_DIRENT_USIZE                24
+#define ZIP_DIRENT_NAME_SIZE            28
+#define ZIP_DIRENT_EXTRAS_SIZE          30
+#define ZIP_DIRENT_COMMENT_SIZE         32
+#define ZIP_DIRENT_DISKSTART            34
+#define ZIP_DIRENT_FILE_TYPE            36
+#define ZIP_DIRENT_FILE_MODE            38
+#define ZIP_DIRENT_OFFSET               42
+
+#define ZIP_FILE_HEADER_SIZE            30
+#define ZIP_FILE_HEADER_EXTRACT          4
+#define ZIP_FILE_HEADER_FLAGS            6
+#define ZIP_FILE_HEADER_COMPR_METHOD     8
+#define ZIP_FILE_HEADER_DOSTIME         10
+#define ZIP_FILE_HEADER_CRC32           14
+#define ZIP_FILE_HEADER_CSIZE           18
+#define ZIP_FILE_HEADER_USIZE           22
+#define ZIP_FILE_HEADER_NAME_SIZE       26
+#define ZIP_FILE_HEADER_EXTRAS_SIZE     28
+
+#define ZIP_NAME_SEPARATOR    '/'
+
+#define ZIP_BLOCK_SIZE 32768
+#define ZIP_BUF_SIZE 512
+
+
+/* z_flags */
+#define ZZIP_IS_ENCRYPTED(p)    ((*(unsigned char*)p)&1)
+#define ZZIP_IS_COMPRLEVEL(p)  (((*(unsigned char*)p)>>1)&3)
+#define ZZIP_IS_STREAMED(p)    (((*(unsigned char*)p)>>3)&1)
+
+typedef struct {	
+	char                    *name;
+	GsfZipCompressionMethod  compr_method;
+	guint32                  crc32;
+	size_t                   csize;
+	size_t                   usize;
+	gsf_off_t                offset;
+	gsf_off_t                data_offset;
+	guint32                  dostime;
+} GsfZipDirent;
+
+typedef struct {
+	char *name;
+	gboolean is_directory;
+	GsfZipDirent *dirent;
+	GSList *children, *last_child;
+} GsfZipVDir;
+
+GsfZipDirent *gsf_zip_dirent_new  (void);
+void          gsf_zip_dirent_free (GsfZipDirent *dirent);
+
+GsfZipVDir *gsf_vdir_new	(char const *name, gboolean is_directory,
+				 GsfZipDirent *dirent);
+void	    gsf_vdir_free	(GsfZipVDir *vdir, gboolean free_dirent);
+void	    gsf_vdir_add_child	(GsfZipVDir *vdir, GsfZipVDir *child);
+
+G_END_DECLS
+
+#endif /* GSF_ZIP_IMPL_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-utils.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-utils.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf-zip-utils.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,85 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-zip-utils.c: tools for zip archive output.
+ *
+ * Copyright (C) 2002-2004 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Outc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf/gsf.h>
+#include <sys/types.h>
+#include <string.h>
+#include "gsf-zip-impl.h"
+
+/* Doesn't do much, but include for symmetry */
+GsfZipDirent*
+gsf_zip_dirent_new (void)
+{
+	return g_new0 (GsfZipDirent, 1);
+}
+
+void
+gsf_zip_dirent_free (GsfZipDirent *dirent)
+{
+	g_return_if_fail (dirent != NULL);
+
+	g_free (dirent->name);
+	dirent->name = NULL;
+
+	g_free (dirent);
+}
+
+GsfZipVDir *
+gsf_vdir_new (char const *name, gboolean is_directory, GsfZipDirent *dirent)
+{
+	GsfZipVDir *vdir = g_new (GsfZipVDir, 1);
+
+	vdir->name = g_strdup (name);
+	vdir->is_directory = is_directory;
+	vdir->dirent = dirent;
+	vdir->children = NULL;
+	return vdir;
+}
+
+void
+gsf_vdir_free (GsfZipVDir *vdir, gboolean free_dirent)
+{
+	GSList *l;
+
+	if (!vdir)
+		return;
+
+	for (l = vdir->children; l; l = l->next)
+		gsf_vdir_free ((GsfZipVDir *)l->data, free_dirent);
+
+	g_slist_free (vdir->children);
+	g_free (vdir->name);
+	if (free_dirent && vdir->dirent)
+		gsf_zip_dirent_free (vdir->dirent);
+	g_free (vdir);
+}
+
+void
+gsf_vdir_add_child (GsfZipVDir *vdir, GsfZipVDir *child)
+{
+	GSList *tail = g_slist_append (NULL, child);
+	if (vdir->children)
+		vdir->last_child->next = tail;
+	else
+		vdir->children = tail;
+	vdir->last_child = tail;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/gsf.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,48 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf.h: 
+ *
+ * Copyright (C) 2002-2004 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_H
+#define GSF_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GsfInput	GsfInput;
+typedef struct _GsfInfile 	GsfInfile;
+
+typedef struct _GsfOutput	GsfOutput;
+typedef struct _GsfOutfile 	GsfOutfile;
+
+typedef struct _GsfDocProp	GsfDocProp;
+typedef struct _GsfDocMetaData	GsfDocMetaData;
+typedef struct _GsfTimestamp	GsfTimestamp;
+
+/* FIXME:
+ * gsf_off_t is really supposed to be the widest type off_t can be configured
+ * to on the platform
+ */ 
+typedef gint64 gsf_off_t;
+#define GSF_OFF_T_FORMAT	G_GINT64_FORMAT
+
+G_END_DECLS
+
+#endif /* GSF_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/version.c.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/version.c.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf/version.c.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,3 @@
+int libgsf_major_version = @LIBGSF_MAJOR_VERSION@;	/* The ABI version */
+int libgsf_minor_version = @LIBGSF_MINOR_VERSION@;	/* The API version */
+int libgsf_micro_version = @LIBGSF_MICRO_VERSION@;	/* bug fixes */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-config.h.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-config.h.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-config.h.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,124 @@
+/* gsf-config.h.in.  Generated from configure.in by autoheader.  */
+
+/* always defined to indicate that i18n is enabled */
+#undef ENABLE_NLS
+
+/* Gettext package. */
+#undef GETTEXT_PACKAGE
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#undef HAVE_BIND_TEXTDOMAIN_CODESET
+
+/* Conditionally include glib-2.0 > 2.4 functionality. */
+#undef HAVE_GLIB26
+
+/* Is bzip2 available and enabled */
+#undef HAVE_BZ2
+
+/* Define to 1 if you have the `chown' function. */
+#undef HAVE_CHOWN
+
+/* Define to 1 if you have the `dcgettext' function. */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `getpagesize' function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define if g_access is available as macro or function */
+#undef HAVE_G_ACCESS
+
+/* Define if g_chmod is available as macro or function */
+#undef HAVE_G_CHMOD
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <io.h> header file. */
+#undef HAVE_IO_H
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define S_ISREG if stat.h doesn't */
+#undef S_ISREG
+
+/* Version number of package */
+#undef VERSION
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,27 @@
+AM_CPPFLAGS = -I$(top_srcdir)/lib/libgsf-1.12.3 $(LIBGSF_GNOME_CFLAGS)
+
+if WITH_LIBGSF_GNOME
+lib_LTLIBRARIES = libgsf-gnome-1.la
+
+libgsf_gnome_1_la_LIBADD  = $(top_builddir)/lib/libgsf-1.12.3/gsf/libgsf-1.la $(LIBGSF_GNOME_LIBS)
+libgsf_gnome_1_la_LDFLAGS = -version-info $(VERSION_INFO)
+if PLATFORM_WIN32
+  libgsf_gnome_1_la_LDFLAGS += -no-undefined
+endif
+libgsf_gnome_1_la_SOURCES =	\
+	gsf-input-gnomevfs.c 	\
+	gsf-output-gnomevfs.c	\
+	gsf-input-bonobo.c	\
+	gsf-output-bonobo.c	\
+	gsf-shared-bonobo-stream.c
+
+endif
+
+## But headers are installed always:
+libgsf_gnome_1_includedir = $(includedir)/libgsf-1/gsf-gnome
+libgsf_gnome_1_include_HEADERS =  \
+	gsf-input-gnomevfs.h	\
+	gsf-output-gnomevfs.h	\
+	gsf-input-bonobo.h 	\
+	gsf-output-bonobo.h	\
+	gsf-shared-bonobo-stream.h

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,579 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ at PLATFORM_WIN32_TRUE@@WITH_LIBGSF_GNOME_TRUE at am__append_1 = -no-undefined
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_GNOME_CFLAGS)
+
+ at WITH_LIBGSF_GNOME_TRUE@lib_LTLIBRARIES = libgsf-gnome-1.la
+
+ at WITH_LIBGSF_GNOME_TRUE@libgsf_gnome_1_la_LIBADD = $(top_builddir)/gsf/libgsf-1.la $(LIBGSF_GNOME_LIBS)
+ at WITH_LIBGSF_GNOME_TRUE@libgsf_gnome_1_la_LDFLAGS = -version-info $(VERSION_INFO) $(am__append_1)
+ at WITH_LIBGSF_GNOME_TRUE@libgsf_gnome_1_la_SOURCES = \
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-input-gnomevfs.c 	\
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-output-gnomevfs.c	\
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-input-bonobo.c	\
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-output-bonobo.c	\
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-shared-bonobo-stream.c
+
+
+libgsf_gnome_1_includedir = $(includedir)/libgsf-1/gsf-gnome
+libgsf_gnome_1_include_HEADERS = \
+	gsf-input-gnomevfs.h	\
+	gsf-output-gnomevfs.h	\
+	gsf-input-bonobo.h 	\
+	gsf-output-bonobo.h	\
+	gsf-shared-bonobo-stream.h
+
+subdir = gsf-gnome
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/gsf-config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+ at WITH_LIBGSF_GNOME_TRUE@libgsf_gnome_1_la_DEPENDENCIES = \
+ at WITH_LIBGSF_GNOME_TRUE@	$(top_builddir)/gsf/libgsf-1.la
+ at WITH_LIBGSF_GNOME_FALSE@libgsf_gnome_1_la_DEPENDENCIES =
+am__libgsf_gnome_1_la_SOURCES_DIST = gsf-input-gnomevfs.c \
+	gsf-output-gnomevfs.c gsf-input-bonobo.c gsf-output-bonobo.c \
+	gsf-shared-bonobo-stream.c
+ at WITH_LIBGSF_GNOME_TRUE@am_libgsf_gnome_1_la_OBJECTS = \
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-input-gnomevfs.lo \
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-output-gnomevfs.lo \
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-input-bonobo.lo \
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-output-bonobo.lo \
+ at WITH_LIBGSF_GNOME_TRUE@	gsf-shared-bonobo-stream.lo
+libgsf_gnome_1_la_OBJECTS = $(am_libgsf_gnome_1_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsf-input-bonobo.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-input-gnomevfs.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-bonobo.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-gnomevfs.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-shared-bonobo-stream.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(am__libgsf_gnome_1_la_SOURCES_DIST)
+HEADERS = $(libgsf_gnome_1_include_HEADERS)
+
+DIST_COMMON = $(libgsf_gnome_1_include_HEADERS) $(srcdir)/Makefile.in \
+	Makefile.am
+SOURCES = $(libgsf_gnome_1_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  gsf-gnome/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgsf-gnome-1.la: $(libgsf_gnome_1_la_OBJECTS) $(libgsf_gnome_1_la_DEPENDENCIES) 
+	$(LINK) -rpath $(libdir) $(libgsf_gnome_1_la_LDFLAGS) $(libgsf_gnome_1_la_OBJECTS) $(libgsf_gnome_1_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-bonobo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-gnomevfs.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-bonobo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-gnomevfs.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-shared-bonobo-stream.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgsf_gnome_1_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgsf_gnome_1_includeHEADERS: $(libgsf_gnome_1_include_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgsf_gnome_1_includedir)
+	@list='$(libgsf_gnome_1_include_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgsf_gnome_1_includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgsf_gnome_1_includedir)/$$f"; \
+	  $(libgsf_gnome_1_includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgsf_gnome_1_includedir)/$$f; \
+	done
+
+uninstall-libgsf_gnome_1_includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgsf_gnome_1_include_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgsf_gnome_1_includedir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgsf_gnome_1_includedir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(libgsf_gnome_1_includedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libgsf_gnome_1_includeHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgsf_gnome_1_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-libgsf_gnome_1_includeHEADERS \
+	install-man install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgsf_gnome_1_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,288 @@
+ /* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-bonobo.c: bonobo based input
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-gnome/gsf-input-bonobo.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <gsf-gnome/gsf-shared-bonobo-stream.h>
+#include <bonobo/bonobo-persist-stream.h>
+#include <bonobo/bonobo-exception.h>
+#include <string.h>
+
+/* FIXME: Should make CORBA environment available to caller somehow. */
+struct _GsfInputBonobo {
+	GsfInput input;
+	GsfSharedBonoboStream *shared;
+	guint8   *buf;
+	size_t   buf_size;
+	gsf_off_t pos;
+};
+
+typedef struct {
+	GsfInputClass input_class;
+} GsfInputBonoboClass;
+
+static int
+gib_synch_shared_ptr (GsfInputBonobo *binput)
+{
+	CORBA_Environment ev;
+	CORBA_long new_pos;
+
+	if (binput->shared == NULL)
+		return 0;
+	if (binput->pos == (gsf_off_t) binput->shared->pos)
+		return 0;
+
+	CORBA_exception_init (&ev);
+	new_pos = (CORBA_long) binput->pos;
+	Bonobo_Stream_seek (binput->shared->stream, new_pos,
+			    Bonobo_Stream_SeekSet, &ev);
+	if (BONOBO_EX (&ev)) {
+		g_warning (bonobo_exception_get_text (&ev));
+		CORBA_exception_free (&ev);
+		return -1;
+	} else {
+		binput->shared->pos = new_pos;
+		return 0;
+	}
+}
+
+/**
+ * gsf_input_bonobo_new :
+ * @stream   : Bonobo stream
+ * @err	     : optionally NULL.
+ *
+ * Returns a new input object or NULL.
+ **/
+GsfInput *
+gsf_input_bonobo_new (Bonobo_Stream const stream, GError **err)
+{
+	GsfInputBonobo *input;
+	Bonobo_StorageInfo   *info;
+	CORBA_Environment ev;
+	CORBA_long size;
+
+	if (stream == NULL) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+				"stream is NULL");
+		return NULL;
+	}
+
+	CORBA_exception_init (&ev);
+	/* <ICK!> info->size doesn't work */
+	size = Bonobo_Stream_seek (stream, 0, Bonobo_Stream_SeekEnd, &ev);
+	if (BONOBO_EX (&ev)) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "%s: %s",
+					    "Error seeking to get stream size",
+					    bonobo_exception_get_text (&ev));
+		CORBA_exception_free (&ev);
+		return NULL;
+	}
+	Bonobo_Stream_seek (stream, 0, Bonobo_Stream_SeekSet, &ev);
+	if (BONOBO_EX (&ev)) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "%s: %s",
+					    "Error seeking to get stream size",
+					    bonobo_exception_get_text (&ev));
+		CORBA_exception_free (&ev);
+		return NULL;
+	}
+	/* </ICK!> */
+
+	info = Bonobo_Stream_getInfo (stream, 0, &ev);
+	if (BONOBO_EX (&ev)) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "%s: %s",
+					    "Error getting stream info",
+					    bonobo_exception_get_text (&ev));
+		CORBA_exception_free (&ev);
+		return NULL;
+	}
+
+	input = g_object_new (GSF_INPUT_BONOBO_TYPE, NULL);
+	input->shared = gsf_shared_bonobo_stream_new (stream);
+	input->buf  = NULL;
+	input->buf_size = 0;
+	gsf_input_set_size (GSF_INPUT (input), (gsf_off_t) size);
+	gsf_input_set_name (GSF_INPUT (input), info->name);
+
+	CORBA_free (info);
+
+	return GSF_INPUT (input);
+}
+
+static void
+gsf_input_bonobo_finalize (GObject *obj)
+{
+	GObjectClass *parent_class;
+	GsfInputBonobo *input = (GsfInputBonobo *)obj;
+
+	if (input->shared)
+		g_object_unref (G_OBJECT (input->shared));
+	input->shared = NULL;
+
+	g_free (input->buf);
+	input->buf = NULL;
+	input->buf_size = 0;
+
+	parent_class = g_type_class_peek (GSF_INPUT_TYPE);
+	if (parent_class && parent_class->finalize)
+		parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_bonobo_dup (GsfInput *src_input, GError **err)
+{
+	GsfInputBonobo const *src = (GsfInputBonobo *)src_input;
+	GsfInputBonobo *dst = g_object_new (GSF_INPUT_BONOBO_TYPE, NULL);
+
+	(void) err;
+
+	dst->shared = src->shared;
+	g_object_ref (G_OBJECT (dst->shared));
+
+	return GSF_INPUT (dst);
+}
+
+static guint8 const *
+gsf_input_bonobo_read (GsfInput *input, size_t num_bytes,
+		       guint8 *buffer)
+{
+	GsfInputBonobo *binput = GSF_INPUT_BONOBO (input);
+	CORBA_unsigned_long num_read;
+	Bonobo_Stream_iobuf *bsibuf;
+	CORBA_Environment ev;
+
+	g_return_val_if_fail (binput != NULL, NULL);
+	g_return_val_if_fail (binput->shared != NULL, NULL);
+	g_return_val_if_fail (binput->shared->stream != NULL, NULL);
+
+	if (buffer == NULL) {
+		if (binput->buf_size < num_bytes) {
+			binput->buf_size = num_bytes;
+			g_free (binput->buf);
+			binput->buf = g_new (guint8, binput->buf_size);
+		}
+		buffer = binput->buf;
+	}
+
+	if (gib_synch_shared_ptr (binput) != 0)
+		return NULL;
+
+	CORBA_exception_init (&ev);
+	Bonobo_Stream_read (binput->shared->stream, (CORBA_long) num_bytes,
+			    &bsibuf, &ev);
+	if (BONOBO_EX (&ev)) {
+		g_warning (bonobo_exception_get_text (&ev));
+		return NULL;
+	} else {
+		memcpy (buffer, bsibuf->_buffer, bsibuf->_length);
+		num_read = bsibuf->_length;
+		CORBA_free (bsibuf);
+	}
+	if ((size_t) num_read == num_bytes) {
+		return buffer;
+	} else {
+		g_warning ("Only read %d bytes, asked for %d",
+			   num_read, num_bytes);
+		return NULL;
+	}
+}
+
+static gboolean
+gsf_input_bonobo_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInputBonobo *binput = GSF_INPUT_BONOBO (input);
+	Bonobo_Stream_SeekType bwhence;
+	CORBA_long pos, coffset;
+	CORBA_Environment ev;
+
+	g_return_val_if_fail (binput != NULL, TRUE);
+	g_return_val_if_fail (binput->shared != NULL, TRUE);
+	g_return_val_if_fail (binput->shared->stream != NULL, TRUE);
+
+	if (whence == G_SEEK_CUR) {
+		if (gib_synch_shared_ptr (binput) != 0)
+			return TRUE;
+	}
+	
+	switch (whence) {
+	case G_SEEK_SET :
+		bwhence =  Bonobo_Stream_SeekSet;
+		break;
+	case G_SEEK_CUR :
+		bwhence = Bonobo_Stream_SeekCur;
+		break;
+	case G_SEEK_END :
+		bwhence = Bonobo_Stream_SeekEnd;
+		break;
+	default:
+		return TRUE;
+	}
+	
+
+	coffset = offset;
+	if ((gsf_off_t) coffset != offset) { /* Check for overflow */
+		g_warning ("offset too large for Bonobo_Stream_seek");
+		return TRUE;
+	}
+	CORBA_exception_init (&ev);
+	pos = Bonobo_Stream_seek
+		(binput->shared->stream, coffset, bwhence, &ev);
+	if (BONOBO_EX (&ev)) {
+		g_warning (bonobo_exception_get_text (&ev));
+		return TRUE;
+	} else {
+		binput->shared->pos = pos;
+		binput->pos = (gsf_off_t) pos;
+		return FALSE;
+	}
+}
+
+static void
+gsf_input_bonobo_init (GObject *obj)
+{
+	GsfInputBonobo *binput = GSF_INPUT_BONOBO (obj);
+
+	binput->shared = NULL;
+	binput->buf  = NULL;
+	binput->buf_size = 0;
+}
+
+static void
+gsf_input_bonobo_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_input_bonobo_finalize;
+	input_class->Dup	= gsf_input_bonobo_dup;
+	input_class->Read	= gsf_input_bonobo_read;
+	input_class->Seek	= gsf_input_bonobo_seek;
+}
+
+GSF_CLASS (GsfInputBonobo, gsf_input_bonobo,
+	   gsf_input_bonobo_class_init, gsf_input_bonobo_init, GSF_INPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-bonobo.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-bonobo.h:  bonobo based input
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_BONOBO_H
+#define GSF_INPUT_BONOBO_H
+
+#include <gsf/gsf-input.h>
+#include <bonobo/Bonobo.h>
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_BONOBO_TYPE        (gsf_input_bonobo_get_type ())
+#define GSF_INPUT_BONOBO(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_BONOBO_TYPE, GsfInputBonobo))
+#define GSF_IS_INPUT_BONOBO(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_BONOBO_TYPE))
+
+typedef struct _GsfInputBonobo GsfInputBonobo;
+
+GType     gsf_input_bonobo_get_type (void);
+GsfInput *gsf_input_bonobo_new      (Bonobo_Stream const stream, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_BONOBO_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,304 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-gnomevfs.c: 
+ *
+ * Copyright (C) 2002-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <string.h>
+
+#include <gsf-gnome/gsf-input-gnomevfs.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <libgnomevfs/gnome-vfs-method.h>
+
+struct _GsfInputGnomeVFS {
+	GsfInput input;
+
+	GnomeVFSHandle *handle;
+	GnomeVFSURI    *uri;
+
+        guint8   *buf;
+        size_t   buf_size;
+};
+
+typedef GsfInputClass GsfInputGnomeVFSClass;
+
+/**
+ * gsf_input_gnomevfs_new_uri:
+ * @uri : uri you wish to open.
+ * @err	: optionally NULL.
+ *
+ * Returns a new input or NULL.
+ **/
+GsfInput *
+gsf_input_gnomevfs_new_uri (GnomeVFSURI *uri, GError **error)
+{
+	GnomeVFSHandle	 *handle;
+	GnomeVFSFileInfo *info;
+	GnomeVFSResult    res;
+	GnomeVFSFileType  type;
+	gsf_off_t	  size;
+	gboolean          is_local;
+
+	if (uri == NULL) {
+		g_set_error (error, gsf_input_error_id (), 0,
+			     "Filename/URI cannot be NULL");
+		return NULL;
+	}
+
+	if (!VFS_METHOD_HAS_FUNC (uri->method, seek))
+		goto make_local_copy;
+
+	info = gnome_vfs_file_info_new ();
+	res = gnome_vfs_get_file_info_uri (uri, info, GNOME_VFS_FILE_INFO_DEFAULT | GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
+
+	size = (gsf_off_t)info->size;
+	type = info->type;
+	is_local = GNOME_VFS_FILE_INFO_LOCAL (info);
+	gnome_vfs_file_info_unref (info);
+
+	switch (res) {
+	case GNOME_VFS_ERROR_NOT_SUPPORTED:
+		goto make_local_copy;
+	default:
+		g_set_error (error, gsf_input_error_id (), (gint) res,
+			     gnome_vfs_result_to_string (res));
+		return NULL;
+	case GNOME_VFS_OK: /* Nothing */ ;
+	}
+
+	if (type != GNOME_VFS_FILE_TYPE_REGULAR) {
+#if 0
+		g_print ("uri=%s\n", gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE));
+		g_print ("uri.text=%s\n", uri->text);
+		g_print ("parent=%s\n", uri->parent ? gnome_vfs_uri_to_string (uri->parent, GNOME_VFS_URI_HIDE_NONE) : "(null)");
+		g_print ("method=%s\n", uri->method_string);
+		g_print ("fragment=%s\n", uri->fragment_id ? uri->fragment_id : "(null)");
+#endif
+		if (type == GNOME_VFS_FILE_TYPE_DIRECTORY && uri->parent) {
+			/* Reported for "file:///.../foo.zip#zip:beta.gnumeric" */
+			goto make_local_copy;
+		}
+
+		g_set_error (error, gsf_input_error_id (), 0,
+			     "Not a regular file");
+		return NULL;
+	}
+
+	/* Make copies of small files.  */
+	if (!is_local && size < (256 << 10))
+		goto make_local_copy;
+
+	res = gnome_vfs_open_uri (&handle, uri,
+				  GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_RANDOM);
+	if (res != GNOME_VFS_OK) {
+		g_set_error (error, gsf_input_error_id (), (gint) res,
+			     gnome_vfs_result_to_string (res));
+		return NULL;
+	}
+
+	{
+		char *name;
+		GsfInputGnomeVFS *input = g_object_new (GSF_INPUT_GNOMEVFS_TYPE, NULL);
+
+		input->handle = handle;
+		input->uri = gnome_vfs_uri_ref (uri);
+		input->buf  = NULL;
+		input->buf_size = 0;
+		gsf_input_set_size (GSF_INPUT (input), size);
+		name = gnome_vfs_uri_to_string (uri, 0);
+		gsf_input_set_name (GSF_INPUT (input), name);
+		g_free (name);
+		return GSF_INPUT (input);
+	}
+
+ make_local_copy:
+	{
+		char *buffer;
+		int file_size;
+		char *uri_text, *name;
+		GsfInput *mem;
+
+		uri_text = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE);
+		res = gnome_vfs_read_entire_file (uri_text, &file_size, &buffer);
+		g_free (uri_text);
+		if (res != GNOME_VFS_OK) {
+			g_set_error (error, gsf_input_error_id (), (gint)res,
+				     "Read error while creating local copy.");
+			return NULL;
+		}
+
+		mem = gsf_input_memory_new (buffer, file_size, TRUE);
+		if (!mem) {
+			g_set_error (error, gsf_input_error_id (), 0,
+				     "Failed to create local memory stream");
+			g_free (buffer);
+			return NULL;
+		}
+
+		name = gnome_vfs_uri_to_string (uri, 0);
+		gsf_input_set_name (mem, name);
+		g_free (name);
+
+		return mem;
+	}
+}
+
+/**
+ * gsf_input_gnomevfs_new :
+ * @uri : uri you wish to open.
+ * @err	: optionally NULL.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfInput *
+gsf_input_gnomevfs_new (char const *text_uri, GError **error)
+{
+	GnomeVFSURI *uri = gnome_vfs_uri_new (text_uri);
+	if (!uri) {
+		g_set_error (error, gsf_input_error_id (), 0,
+			     "Invalid URI");
+		return NULL;
+	} else {
+		GsfInput *res = gsf_input_gnomevfs_new_uri (uri, error);
+		gnome_vfs_uri_unref (uri);
+		return res;
+	}
+}
+
+static void
+gsf_input_gnomevfs_finalize (GObject *obj)
+{
+	GObjectClass *parent_class;
+	GsfInputGnomeVFS *input = (GsfInputGnomeVFS *)obj;
+
+	if (input->handle != NULL) {
+		gnome_vfs_close (input->handle);
+		input->handle = NULL;
+	}
+	if (input->uri != NULL) {
+		gnome_vfs_uri_unref (input->uri);
+		input->uri = NULL;
+	}
+
+	g_free (input->buf);
+	input->buf = NULL;
+	input->buf_size = 0;
+
+	parent_class = g_type_class_peek (GSF_INPUT_TYPE);
+	if (parent_class && parent_class->finalize)
+		parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_gnomevfs_dup (GsfInput *src_input, GError **err)
+{
+	GsfInputGnomeVFS const *src = (GsfInputGnomeVFS *)src_input;
+	return gsf_input_gnomevfs_new (src->input.name, err);
+}
+
+static guint8 const *
+gsf_input_gnomevfs_read (GsfInput *input, size_t num_bytes,
+			 guint8 *buffer)
+{
+	GsfInputGnomeVFS *vfs = GSF_INPUT_GNOMEVFS (input);
+	GnomeVFSResult res = GNOME_VFS_OK;
+	GnomeVFSFileSize nread = 0, total_read = 0;
+
+	g_return_val_if_fail (vfs != NULL, NULL);
+	g_return_val_if_fail (vfs->handle != NULL, NULL);
+
+	if (buffer == NULL) {
+		if (vfs->buf_size < num_bytes) {
+			vfs->buf_size = num_bytes;
+			g_free (vfs->buf);
+			vfs->buf = g_new (guint8, vfs->buf_size);
+		}
+		buffer = vfs->buf;
+	}
+
+	while ((res == GNOME_VFS_OK) && (total_read < num_bytes)) {
+		res = gnome_vfs_read (vfs->handle,
+			(gpointer)(buffer + total_read),
+			(GnomeVFSFileSize) (num_bytes - total_read), &nread);
+		total_read += nread;
+	}
+
+	if (res != GNOME_VFS_OK || total_read != num_bytes)
+		return NULL;
+
+	return buffer;
+}
+
+static gboolean
+gsf_input_gnomevfs_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInputGnomeVFS const *vfs     = GSF_INPUT_GNOMEVFS (input);
+	GnomeVFSSeekPosition vfs_whence;
+
+	if (vfs->handle == NULL)
+		return TRUE;
+
+	switch (whence) {
+	default:
+	case G_SEEK_SET : vfs_whence = GNOME_VFS_SEEK_START;	break;
+	case G_SEEK_CUR : vfs_whence = GNOME_VFS_SEEK_CURRENT;	break;
+	case G_SEEK_END : vfs_whence = GNOME_VFS_SEEK_END;	break;
+	}
+
+	/* Work around http://bugzilla.gnome.org/show_bug.cgi?id=152844  */
+	if (whence == G_SEEK_SET && offset > 0 && offset == gsf_input_size (input)) {
+		if (gsf_input_gnomevfs_seek (input, offset - 1, whence))
+			return TRUE;
+		if (gsf_input_gnomevfs_read (input, 1, NULL) == NULL)
+			return TRUE;
+		return FALSE;
+	}
+
+	if (GNOME_VFS_OK == gnome_vfs_seek (vfs->handle,vfs_whence,
+					    (GnomeVFSFileOffset) offset))
+		return FALSE;
+	return TRUE;
+}
+
+static void
+gsf_input_gnomevfs_init (GObject *obj)
+{
+	GsfInputGnomeVFS *vfs = GSF_INPUT_GNOMEVFS (obj);
+
+	vfs->handle   = NULL;
+	vfs->buf      = NULL;
+	vfs->buf_size = 0;
+}
+
+static void
+gsf_input_gnomevfs_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_input_gnomevfs_finalize;
+	input_class->Dup	    = gsf_input_gnomevfs_dup;
+	input_class->Read	    = gsf_input_gnomevfs_read;
+	input_class->Seek	    = gsf_input_gnomevfs_seek;
+}
+
+GSF_CLASS (GsfInputGnomeVFS, gsf_input_gnomevfs,
+	   gsf_input_gnomevfs_class_init, gsf_input_gnomevfs_init,
+	   GSF_INPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-input-gnomevfs.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,44 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-gnomevfs.h
+ *
+ * Copyright (C) 2002-2003 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_GNOMEVFS_H
+#define GSF_INPUT_GNOMEVFS_H
+
+#include <gsf/gsf-input.h>
+#include <libgnomevfs/gnome-vfs.h>
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_GNOMEVFS_TYPE        (gsf_input_gnomevfs_get_type ())
+#define GSF_INPUT_GNOMEVFS(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_GNOMEVFS_TYPE, GsfInputGnomeVFS))
+#define GSF_IS_INPUT_GNOMEVFS(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_GNOMEVFS_TYPE))
+
+typedef struct _GsfInputGnomeVFS GsfInputGnomeVFS;
+
+GType	  gsf_input_gnomevfs_get_type (void);
+GsfInput *gsf_input_gnomevfs_new      (char const *uri, GError **error);
+GsfInput *gsf_input_gnomevfs_new_uri  (GnomeVFSURI *uri, GError **error);
+
+gboolean  gsf_input_gnomevfs_needs_local_copy (GsfInputGnomeVFS *vfs_input);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_GNOMEVFS_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,162 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-bonobo.c: bonobo based output
+ *
+ * Copyright (C) 2002-2003 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-gnome/gsf-output-bonobo.h>
+#include <bonobo/bonobo-exception.h>
+#include <bonobo/bonobo-persist-stream.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+
+struct _GsfOutputBonobo {
+	GsfOutput output;
+	Bonobo_Stream stream ;
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputBonoboClass;
+
+/**
+ * gsf_output_bonobo_new :
+ * @stream : non-NULL bonobo stream
+ * @err	     : optionally NULL.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_bonobo_new (Bonobo_Stream const stream, G_GNUC_UNUSED GError **err)
+{
+	GsfOutputBonobo *res;
+
+	res = g_object_new (GSF_OUTPUT_BONOBO_TYPE, NULL);
+	res->stream = stream;
+
+	return GSF_OUTPUT (res);
+}
+
+static gboolean
+gsf_output_bonobo_close (GsfOutput *output)
+{
+	GsfOutputBonobo *bonobo = GSF_OUTPUT_BONOBO (output);
+	gboolean res = FALSE;
+
+	if (bonobo->stream != NULL) {
+		bonobo->stream = NULL;
+		res = TRUE;
+	}
+
+	return res;
+}
+
+static gboolean
+gsf_output_bonobo_seek (GsfOutput *output, gsf_off_t offset,
+			GSeekType whence)
+{
+	GsfOutputBonobo const *bonobo = GSF_OUTPUT_BONOBO (output);
+	Bonobo_Stream_SeekType bwhence = 0; /* make compiler shut up */
+	CORBA_long	  pos;
+	CORBA_Environment ev;
+
+	g_return_val_if_fail (bonobo->stream != CORBA_OBJECT_NIL, 
+		gsf_output_set_error (output, 0, "missing stream"));
+
+	switch (whence) {
+	case G_SEEK_SET : bwhence = Bonobo_Stream_SeekSet; break;
+	case G_SEEK_CUR : bwhence = Bonobo_Stream_SeekCur; break;
+	case G_SEEK_END : bwhence = Bonobo_Stream_SeekEnd; break;
+	default:
+		break; /*checked in GsfOutput wrapper */
+	}
+
+	CORBA_exception_init (&ev);
+	pos = Bonobo_Stream_seek
+		(bonobo->stream, offset, bwhence, &ev);
+	if (BONOBO_EX (&ev)) {
+		gsf_output_set_error (output, 0,
+			bonobo_exception_get_text (&ev));
+		CORBA_exception_free (&ev);
+		return FALSE;
+	}
+	return TRUE;
+}
+
+static gboolean
+gsf_output_bonobo_write (GsfOutput *output,
+			 size_t num_bytes,
+			 guint8 const *buffer)
+{
+	GsfOutputBonobo *bonobo = GSF_OUTPUT_BONOBO (output);
+	Bonobo_Stream_iobuf *bsobuf;
+	CORBA_Environment ev;
+
+	g_return_val_if_fail (bonobo != NULL, FALSE);
+	g_return_val_if_fail (bonobo->stream != NULL, FALSE);
+
+	bsobuf = Bonobo_Stream_iobuf__alloc ();
+	bsobuf->_buffer = (CORBA_octet*)buffer;
+	bsobuf->_length = num_bytes;
+
+	CORBA_exception_init (&ev);
+	Bonobo_Stream_write (bonobo->stream, bsobuf, &ev);
+	if (BONOBO_EX (&ev)) {
+		g_warning (bonobo_exception_get_text (&ev));
+		CORBA_exception_free (&ev);
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static void
+gsf_output_bonobo_finalize (GObject *obj)
+{
+	GObjectClass *parent_class;
+	GsfOutput *output = (GsfOutput *)obj;
+
+	gsf_output_bonobo_close (output);
+
+	parent_class = g_type_class_peek (GSF_OUTPUT_TYPE);
+	if (parent_class && parent_class->finalize)
+		parent_class->finalize (obj);
+}
+
+static void
+gsf_output_bonobo_init (GObject *obj)
+{
+	GsfOutputBonobo *stream = GSF_OUTPUT_BONOBO (obj);
+
+	stream->stream = NULL;
+}
+
+static void
+gsf_output_bonobo_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_output_bonobo_finalize;
+	output_class->Close	= gsf_output_bonobo_close;
+	output_class->Seek	= gsf_output_bonobo_seek;
+	output_class->Write	= gsf_output_bonobo_write;
+}
+
+GSF_CLASS (GsfOutputBonobo, gsf_output_bonobo,
+	   gsf_output_bonobo_class_init, gsf_output_bonobo_init, GSF_OUTPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-bonobo.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-bonobo.h: bonobo based output
+ *
+ * Copyright (C) 2002-2003 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_BONOBO_H
+#define GSF_OUTPUT_BONOBO_H
+
+#include <gsf/gsf-output.h>
+#include <bonobo/Bonobo.h>
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_BONOBO_TYPE        (gsf_output_bonobo_get_type ())
+#define GSF_OUTPUT_BONOBO(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_BONOBO_TYPE, GsfOutputBonobo))
+#define GSF_IS_OUTPUT_BONOBO(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_BONOBO_TYPE))
+
+typedef struct _GsfOutputBonobo GsfOutputBonobo;
+
+GType      gsf_output_bonobo_get_type (void);
+GsfOutput *gsf_output_bonobo_new      (Bonobo_Stream const stream, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_BONOBO_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,219 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-gnomevfs.c: gnomevfs based output
+ *
+ * Copyright (C) 2002-2004 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-gnome/gsf-output-gnomevfs.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+
+struct _GsfOutputGnomeVFS {
+    GsfOutput output;
+
+    GnomeVFSHandle *handle;
+};
+
+typedef struct {
+    GsfOutputClass output_class;
+} GsfOutputGnomeVFSClass;
+
+/**
+* gsf_output_gnomevfs_new :
+ * @text_uri : in utf8.
+ * @err	     : optionally NULL.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_gnomevfs_new (char const *text_uri, GError **err)
+{
+	GnomeVFSURI *uri = gnome_vfs_uri_new (text_uri);
+	GsfOutput *res = gsf_output_gnomevfs_new_uri (uri, err);
+	gnome_vfs_uri_unref (uri);
+	return res;
+}
+
+/**
+ * gsf_output_gnomevfs_new_uri :
+ * @uri      : resource indicator
+ * @err	     : optionally NULL.
+ *
+ * Returns a new file or NULL.
+ **/
+GsfOutput *
+gsf_output_gnomevfs_new_uri (GnomeVFSURI * uri, GError **err)
+{
+	GsfOutputGnomeVFS *output;
+	GnomeVFSHandle *handle;
+	GnomeVFSResult res;
+	int perms = -1;
+
+	if (uri == NULL) {
+		g_set_error (err, gsf_output_error_id (), 0,
+			     "Filename/URI cannot be NULL");
+		return NULL;
+	}
+
+	if (gnome_vfs_uri_exists (uri)) {
+		/* see bug 159442 - if the file exists, we want to do our best to preserve existing 
+		 * pemissions AND truncate the file. that is, we want to emulate truncate() in case 
+		 * a gnomevfs backend doesn't support it */
+		GnomeVFSFileInfo *info;
+
+		info = gnome_vfs_file_info_new ();
+		res = gnome_vfs_get_file_info_uri (uri,
+						   info,
+						   GNOME_VFS_FILE_INFO_FOLLOW_LINKS|GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS);
+
+		if ((res == GNOME_VFS_OK) && (info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS)) {
+			perms = info->permissions;
+		} 
+
+		gnome_vfs_file_info_unref (info);
+	}
+
+	if (perms == -1) {
+		/* we didn't get the permissions, but calling open_uri() with OPEN_WRITE set will create the file for us.
+		 * if the uri_exists(), let's hope that truncate() works. */
+		res = gnome_vfs_open_uri (&handle, uri, GNOME_VFS_OPEN_WRITE|GNOME_VFS_OPEN_RANDOM);	
+	} else {
+		/* we got the permissions, so let's call create() with the existing permissions instead of open() since 
+		 * create() will truncate the file for us. */
+		res = gnome_vfs_create_uri (&handle, uri, GNOME_VFS_OPEN_WRITE|GNOME_VFS_OPEN_RANDOM, FALSE, perms);
+
+		if (res != GNOME_VFS_OK) {
+			/* create() failed. let's see if we can open_uri() instead and hope that truncate works. */
+			res = gnome_vfs_open_uri (&handle, uri, GNOME_VFS_OPEN_WRITE|GNOME_VFS_OPEN_RANDOM);
+		}
+	}
+
+	if (res != GNOME_VFS_OK) {
+		g_set_error (err, gsf_output_error_id (), (gint) res,
+			     gnome_vfs_result_to_string (res));
+		return NULL;
+	}
+
+	/* truncate the file to length 0 so if we overwrite a file smaller than
+	 * it was before, it doesn't show the rest of the old file (Bug: 159442).
+	 * for many gnomevfs backends, this might actually be a noop */
+	gnome_vfs_truncate_handle(handle, 0);
+
+	output = g_object_new (GSF_OUTPUT_GNOMEVFS_TYPE, NULL);
+	output->handle = handle;
+
+	return GSF_OUTPUT (output);
+}
+
+static gboolean
+gsf_output_gnomevfs_close (GsfOutput *output)
+{
+    GsfOutputGnomeVFS *vfs = GSF_OUTPUT_GNOMEVFS (output);
+    gboolean res = FALSE;
+
+    if (vfs->handle != NULL) {
+        res = (GNOME_VFS_OK == gnome_vfs_close (vfs->handle));
+        vfs->handle = NULL;
+    }
+
+    return res;
+}
+
+static void
+gsf_output_gnomevfs_finalize (GObject *obj)
+{
+    GObjectClass *parent_class;
+    GsfOutput *output = (GsfOutput *)obj;
+
+    gsf_output_gnomevfs_close (output);
+
+    parent_class = g_type_class_peek (GSF_OUTPUT_TYPE);
+    if (parent_class && parent_class->finalize)
+        parent_class->finalize (obj);
+}
+
+static gboolean
+gsf_output_gnomevfs_seek (GsfOutput *output, gsf_off_t offset,
+			  GSeekType whence)
+{
+	GsfOutputGnomeVFS const *vfs = GSF_OUTPUT_GNOMEVFS (output);
+	GnomeVFSSeekPosition	vfs_whence = 0; /* make compiler shut up */
+	GnomeVFSResult	 	res;
+
+	g_return_val_if_fail (vfs->handle != NULL, 
+		gsf_output_set_error (output, 0, "missing handle"));
+
+	switch (whence) {
+	case G_SEEK_SET : vfs_whence = GNOME_VFS_SEEK_START;	break;
+	case G_SEEK_CUR : vfs_whence = GNOME_VFS_SEEK_CURRENT;	break;
+	case G_SEEK_END : vfs_whence = GNOME_VFS_SEEK_END;	break;
+	default :
+		break; /*checked in GsfOutput wrapper */
+	}
+
+	res = gnome_vfs_seek (vfs->handle, vfs_whence,
+			      (GnomeVFSFileOffset) offset);
+	if (GNOME_VFS_OK == res)
+		return TRUE;
+	return gsf_output_set_error (output, 0,
+		gnome_vfs_result_to_string (res));
+}
+
+static gboolean
+gsf_output_gnomevfs_write (GsfOutput *output,
+			   size_t num_bytes,
+			   guint8 const *buffer)
+{
+    GsfOutputGnomeVFS *vfs = GSF_OUTPUT_GNOMEVFS (output);
+    GnomeVFSFileSize nwritten = 0, total_written = 0;
+    GnomeVFSResult res = GNOME_VFS_OK;
+
+    g_return_val_if_fail (vfs != NULL, FALSE);
+    g_return_val_if_fail (vfs->handle != NULL, FALSE);
+
+    while ((res == GNOME_VFS_OK) && (total_written < num_bytes))
+	    {
+		    res = gnome_vfs_write (vfs->handle, (gconstpointer)(buffer + total_written),
+					   (GnomeVFSFileSize)(num_bytes - total_written), &nwritten);
+		    total_written += nwritten;
+	    }
+    return (res == GNOME_VFS_OK && total_written == num_bytes);
+}
+
+static void
+gsf_output_gnomevfs_init (GObject *obj)
+{
+    GsfOutputGnomeVFS *vfs = GSF_OUTPUT_GNOMEVFS (obj);
+
+    vfs->handle = NULL;
+}
+
+static void
+gsf_output_gnomevfs_class_init (GObjectClass *gobject_class)
+{
+    GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+    gobject_class->finalize = gsf_output_gnomevfs_finalize;
+    output_class->Close	= gsf_output_gnomevfs_close;
+    output_class->Seek	= gsf_output_gnomevfs_seek;
+    output_class->Write	= gsf_output_gnomevfs_write;
+}
+
+GSF_CLASS (GsfOutputGnomeVFS, gsf_output_gnomevfs,
+           gsf_output_gnomevfs_class_init, gsf_output_gnomevfs_init, GSF_OUTPUT_TYPE)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-output-gnomevfs.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,42 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-gnomevfs.h: gnomevfs based output
+ *
+ * Copyright (C) 2002-2003 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_GNOMEVFS_H
+#define GSF_OUTPUT_GNOMEVFS_H
+
+#include <gsf/gsf-output.h>
+#include <libgnomevfs/gnome-vfs.h>
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_GNOMEVFS_TYPE        (gsf_output_gnomevfs_get_type ())
+#define GSF_OUTPUT_GNOMEVFS(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_GNOMEVFS_TYPE, GsfOutputGnomeVFS))
+#define GSF_IS_OUTPUT_GNOMEVFS(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_GNOMEVFS_TYPE))
+
+typedef struct _GsfOutputGnomeVFS GsfOutputGnomeVFS;
+
+GType	   gsf_output_gnomevfs_get_type (void);
+GsfOutput *gsf_output_gnomevfs_new      (char const *filename, GError **err);
+GsfOutput *gsf_output_gnomevfs_new_uri  (GnomeVFSURI * uri, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_GNOMEVFS_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,71 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-shared-bonobo-stream.h: helper class for gsf-input-bonobo
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-gnome/gsf-shared-bonobo-stream.h>
+#include <gsf/gsf-impl-utils.h>
+
+typedef struct {
+	GObjectClass g_object_class;
+} GsfSharedBonoboStreamClass;
+
+static GObjectClass *parent_class;
+
+GsfSharedBonoboStream *
+gsf_shared_bonobo_stream_new (Bonobo_Stream stream)
+{
+	GsfSharedBonoboStream *bst =
+		g_object_new (GSF_SHARED_BONOBO_STREAM_TYPE, NULL);
+	bst->stream = stream;
+	return bst;
+}
+
+static void
+gsf_shared_bonobo_stream_finalize (GObject *obj)
+{
+	GsfSharedBonoboStream *bst = (GsfSharedBonoboStream *) (obj);
+
+	if (bst->stream != NULL) {
+	}
+
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gsf_shared_bonobo_stream_init (GObject *obj)
+{
+	GsfSharedBonoboStream *bst = (GsfSharedBonoboStream *) (obj);
+	bst->stream = NULL;
+	bst->pos    = 0;
+}
+
+static void
+gsf_shared_bonobo_stream_class_init (GObjectClass *gobject_class)
+{
+	parent_class = g_type_class_peek_parent (gobject_class);
+
+	gobject_class->finalize = gsf_shared_bonobo_stream_finalize;
+}
+
+GSF_CLASS (GsfSharedBonoboStream, gsf_shared_bonobo_stream,
+	   gsf_shared_bonobo_stream_class_init,
+	   gsf_shared_bonobo_stream_init,
+	   G_TYPE_OBJECT)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-gnome/gsf-shared-bonobo-stream.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,47 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-shared-bonobo-stream.h: helper class for gsf-input-bonobo
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_SHARED_BONOBO_STREAM_H
+#define GSF_SHARED_BONOBO_STREAM_H
+
+#include <gsf/gsf.h>
+#include <glib-object.h>
+#include <bonobo/bonobo-stream.h>
+
+G_BEGIN_DECLS
+
+#define GSF_SHARED_BONOBO_STREAM_TYPE	(gsf_shared_bonobo_stream_get_type ())
+#define GSF_SHARED_BONOBO_STREAM(o)	(G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_SHARED_BONOBO_STREAM_TYPE, GsfSharedBonoboStream))
+#define GSF_IS_SHARED_BONOBO_STREAM(o)	(G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_SHARED_BONOBO_STREAM_TYPE))
+
+typedef struct _GsfSharedBonoboStream GsfSharedBonoboStream;
+struct _GsfSharedBonoboStream {
+	GObject g_object;
+	Bonobo_Stream stream;
+	CORBA_long pos;
+};
+
+GType gsf_shared_bonobo_stream_get_type (void);
+GsfSharedBonoboStream *gsf_shared_bonobo_stream_new (Bonobo_Stream stream);
+
+G_END_DECLS
+
+#endif /* GSF_SHARED_BONOBO_STREAM_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,19 @@
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS)
+
+if PLATFORM_WIN32
+
+lib_LTLIBRARIES = libgsf-win32-1.la
+
+libgsf_win32_1_la_LIBADD  = $(LIBGSF_LIBS) $(top_builddir)/gsf/libgsf-1.la
+libgsf_win32_1_la_LDFLAGS = -version-info $(VERSION_INFO) -no-undefined
+libgsf_win32_1_la_SOURCES =	\
+	gsf-input-win32.c	\
+	gsf-output-win32.c
+
+endif
+
+## But headers are installed on all systems:
+libgsf_win32_1_includedir = $(includedir)/libgsf-1/gsf-win32
+libgsf_win32_1_include_HEADERS =  \
+	gsf-input-win32.h	\
+	gsf-output-win32.h

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,561 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS)
+
+ at PLATFORM_WIN32_TRUE@lib_LTLIBRARIES = libgsf-win32-1.la
+
+ at PLATFORM_WIN32_TRUE@libgsf_win32_1_la_LIBADD = $(LIBGSF_LIBS) $(top_builddir)/gsf/libgsf-1.la
+ at PLATFORM_WIN32_TRUE@libgsf_win32_1_la_LDFLAGS = -version-info $(VERSION_INFO) -no-undefined
+ at PLATFORM_WIN32_TRUE@libgsf_win32_1_la_SOURCES = \
+ at PLATFORM_WIN32_TRUE@	gsf-input-win32.c	\
+ at PLATFORM_WIN32_TRUE@	gsf-output-win32.c
+
+
+libgsf_win32_1_includedir = $(includedir)/libgsf-1/gsf-win32
+libgsf_win32_1_include_HEADERS = \
+	gsf-input-win32.h	\
+	gsf-output-win32.h
+
+subdir = gsf-win32
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/gsf-config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+ at PLATFORM_WIN32_TRUE@libgsf_win32_1_la_DEPENDENCIES = \
+ at PLATFORM_WIN32_TRUE@	$(top_builddir)/gsf/libgsf-1.la
+ at PLATFORM_WIN32_FALSE@libgsf_win32_1_la_DEPENDENCIES =
+am__libgsf_win32_1_la_SOURCES_DIST = gsf-input-win32.c \
+	gsf-output-win32.c
+ at PLATFORM_WIN32_TRUE@am_libgsf_win32_1_la_OBJECTS = gsf-input-win32.lo \
+ at PLATFORM_WIN32_TRUE@	gsf-output-win32.lo
+libgsf_win32_1_la_OBJECTS = $(am_libgsf_win32_1_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsf-input-win32.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsf-output-win32.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(am__libgsf_win32_1_la_SOURCES_DIST)
+HEADERS = $(libgsf_win32_1_include_HEADERS)
+
+DIST_COMMON = $(libgsf_win32_1_include_HEADERS) $(srcdir)/Makefile.in \
+	Makefile.am
+SOURCES = $(libgsf_win32_1_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  gsf-win32/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libgsf-win32-1.la: $(libgsf_win32_1_la_OBJECTS) $(libgsf_win32_1_la_DEPENDENCIES) 
+	$(LINK) -rpath $(libdir) $(libgsf_win32_1_la_LDFLAGS) $(libgsf_win32_1_la_OBJECTS) $(libgsf_win32_1_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-input-win32.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsf-output-win32.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+libgsf_win32_1_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-libgsf_win32_1_includeHEADERS: $(libgsf_win32_1_include_HEADERS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libgsf_win32_1_includedir)
+	@list='$(libgsf_win32_1_include_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(libgsf_win32_1_includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgsf_win32_1_includedir)/$$f"; \
+	  $(libgsf_win32_1_includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(libgsf_win32_1_includedir)/$$f; \
+	done
+
+uninstall-libgsf_win32_1_includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgsf_win32_1_include_HEADERS)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(libgsf_win32_1_includedir)/$$f"; \
+	  rm -f $(DESTDIR)$(libgsf_win32_1_includedir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(libgsf_win32_1_includedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-libgsf_win32_1_includeHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgsf_win32_1_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-libgsf_win32_1_includeHEADERS \
+	install-man install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-libgsf_win32_1_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,276 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-win32.c:
+ *
+ * Copyright (C) 2003-2004 Dom Lachowicz <cinamod at hotmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-win32/gsf-input-win32.h>
+#include <gsf/gsf-input-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+
+struct _GsfInputIStream {
+	GsfInput input;
+	IStream * stream;
+	guint8   *buf;
+	size_t   buf_size;
+};
+
+typedef struct {
+	GsfInputClass input_class;
+} GsfInputIStreamClass;
+
+#define NEED_ISTREAM_MACROS
+
+#ifdef NEED_ISTREAM_MACROS
+#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
+#define IStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define IStream_Release(This) (This)->lpVtbl->Release(This)
+#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
+#define IStream_Stat(This,pstatstg,grfStatFlag)	(This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#endif
+
+gchar * gsf_win32_hresult_to_utf8 (HRESULT hr);
+
+gchar *
+gsf_win32_hresult_to_utf8 (HRESULT hr)
+{
+	void * pMsgBuf;
+	gchar * utf8_msg;
+
+	if (SUCCEEDED (hr))
+		return NULL;
+
+	FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr,
+					MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&pMsgBuf, 0, NULL);
+
+	utf8_msg = g_locale_to_utf8 ((char const *)pMsgBuf, -1, NULL, NULL, NULL);
+	if (utf8_msg == NULL)
+		utf8_msg = g_strdup ("!SUCCEEDED (hr)");
+
+	LocalFree(pMsgBuf);
+
+	return utf8_msg;
+}
+
+static void
+hresult_to_gerror (HRESULT hr, GError ** err)
+{
+	if (err) {
+		gchar * msg;
+
+		msg = gsf_win32_hresult_to_utf8 (hr);
+
+		if (msg) {
+			*err = g_error_new (gsf_input_error_id (), 0, msg);
+			g_free (msg);
+		}
+	}
+}
+
+static char *
+lpwstr_to_utf8 (LPWSTR str)
+{
+	if (str)
+		return g_utf16_to_utf8 (str, -1, NULL, NULL, NULL);
+	return NULL;
+}
+
+/**
+ * gsf_input_istream_new :
+ * @stream   : IStream stream
+ * @err	     : optionally NULL.
+ *
+ * Returns a new input object or NULL.
+ **/
+GsfInput *
+gsf_input_istream_new (IStream * stream, GError **err)
+{
+	GsfInputIStream *input;
+	STATSTG statbuf;
+	HRESULT hr;
+	char * name;
+
+	if (stream == NULL) {
+		if (err != NULL)
+			*err = g_error_new (gsf_input_error_id (), 0,
+					    "stream is NULL");
+		return NULL;
+	}
+
+	if (FAILED (hr = IStream_Stat (stream, &statbuf, STATFLAG_DEFAULT))) {
+		hresult_to_gerror (hr, err);
+		return NULL;
+	}
+
+	input = g_object_new (GSF_INPUT_ISTREAM_TYPE, NULL);
+	input->stream = stream;
+	input->buf  = NULL;
+	input->buf_size = 0;
+
+	IStream_AddRef (input->stream);
+
+	/* LowPart and HiPart are the low and high 32 bit UINT parts. The MSDN documentation
+	   says to use QuadPart if your compiler supports 64 bit ints. gsf_off_t is a gint64 value.
+	   http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/large_integer_str.asp
+	 */
+	gsf_input_set_size (GSF_INPUT (input), (gsf_off_t) statbuf.cbSize.QuadPart);
+
+	name = lpwstr_to_utf8 (statbuf.pwcsName);
+	if (name) {
+		gsf_input_set_name (GSF_INPUT (input), name);
+		g_free (name);
+	}
+
+	return GSF_INPUT(input);
+}
+
+static void
+gsf_input_istream_finalize (GObject *obj)
+{
+	GObjectClass *parent_class;
+	GsfInputIStream *input = (GsfInputIStream *)obj;
+
+	IStream_Release (input->stream);
+	input->stream = NULL;
+
+	if (input->buf != NULL) {
+		g_free (input->buf);
+		input->buf  = NULL;
+		input->buf_size = 0;
+	}
+
+	parent_class = g_type_class_peek (GSF_INPUT_TYPE);
+	if (parent_class && parent_class->finalize)
+		parent_class->finalize (obj);
+}
+
+static GsfInput *
+gsf_input_istream_dup (GsfInput *src_input, GError **err)
+{
+	GsfInputIStream const *src = (GsfInputIStream *)src_input;
+	GsfInput *dst;
+	HRESULT hr;
+	IStream * clone;
+
+	g_return_val_if_fail (src_input != NULL, NULL);
+	g_return_val_if_fail (src->stream != NULL, NULL);
+
+	if (SUCCEEDED (hr = IStream_Clone (src->stream, &clone))) {
+		dst = gsf_input_istream_new (clone, NULL);
+		IStream_Release (clone); /* gsf_input_istream_new() adds a ref */
+		return dst;
+	}
+
+	hresult_to_gerror (hr, err);
+	return NULL;
+}
+
+static guint8 const *
+gsf_input_istream_read (GsfInput *input, size_t num_bytes,
+			guint8 *buffer)
+{
+	GsfInputIStream *istm = GSF_INPUT_ISTREAM (input);
+	HRESULT hr;
+	ULONG nread, total_read = 0;
+
+	g_return_val_if_fail (istm != NULL, NULL);
+	g_return_val_if_fail (istm->stream != NULL, NULL);
+
+	if (buffer == NULL) {
+		if (istm->buf_size < num_bytes) {
+			istm->buf_size = num_bytes;
+			g_free (istm->buf);
+			istm->buf = g_new (guint8, istm->buf_size);
+		}
+		buffer = istm->buf;
+	}
+
+	while (1)
+	    {
+		    hr = IStream_Read (istm->stream, (buffer + total_read), (ULONG)(num_bytes - total_read), &nread);
+
+		    if (SUCCEEDED (hr)) {
+			    total_read += nread;
+			    if ((size_t) total_read == num_bytes) {
+				    return buffer;
+			    }
+		    } else
+			    break;
+	    }
+
+	g_warning ("IStream read failed\n");
+	return NULL;
+}
+
+static gboolean
+gsf_input_istream_seek (GsfInput *input, gsf_off_t offset, GSeekType whence)
+{
+	GsfInputIStream *istm = GSF_INPUT_ISTREAM (input);
+	DWORD dwhence;
+
+	g_return_val_if_fail (istm != NULL, TRUE);
+	g_return_val_if_fail (istm->stream != NULL, TRUE);
+
+	switch (whence) {
+	case G_SEEK_SET :
+		dwhence = STREAM_SEEK_SET;
+		break;
+	case G_SEEK_CUR :
+		dwhence = STREAM_SEEK_CUR;
+		break;
+	case G_SEEK_END :
+		dwhence = STREAM_SEEK_END;
+		break;
+	default:
+		return TRUE;
+	}
+
+	if(SUCCEEDED (IStream_Seek (istm->stream, *(LARGE_INTEGER *) &offset, dwhence, NULL)))
+		return FALSE;
+	return TRUE;
+}
+
+static void
+gsf_input_istream_init (GObject *obj)
+{
+	GsfInputIStream *istm = GSF_INPUT_ISTREAM (obj);
+
+	istm->stream = NULL;
+	istm->buf  = NULL;
+	istm->buf_size = 0;
+}
+
+static void
+gsf_input_istream_class_init (GObjectClass *gobject_class)
+{
+	GsfInputClass *input_class = GSF_INPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_input_istream_finalize;
+	input_class->Dup	= gsf_input_istream_dup;
+	input_class->Read	= gsf_input_istream_read;
+	input_class->Seek	= gsf_input_istream_seek;
+}
+
+GSF_CLASS (GsfInputIStream, gsf_input_istream,
+	   gsf_input_istream_class_init, gsf_input_istream_init, GSF_INPUT_TYPE)
+
+/***************************************************************************/
+/***************************************************************************/

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-input-win32.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-input-win32.h: 
+ *
+ * Copyright (C) 2003 Dom Lachowicz <cinamod at hotmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_INPUT_WIN32_H
+#define GSF_INPUT_WIN32_H
+
+#include <gsf/gsf-input.h>
+#include <windows.h>
+
+G_BEGIN_DECLS
+
+#define GSF_INPUT_ISTREAM_TYPE        (gsf_input_istream_get_type ())
+#define GSF_INPUT_ISTREAM(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_INPUT_ISTREAM_TYPE, GsfInputIStream))
+#define GSF_IS_INPUT_ISTREAM(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_INPUT_ISTREAM_TYPE))
+
+typedef struct _GsfInputIStream GsfInputIStream;
+
+GType     gsf_input_istream_get_type (void);
+GsfInput *gsf_input_istream_new      (IStream * stream, GError **err);
+
+G_END_DECLS
+
+#endif /* GSF_INPUT_ISTREAM_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,198 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-output-win32.c:
+ *
+ * Copyright (C) 2003-2004 Dom Lachowicz <cinamod at hotmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf-config.h>
+#include <gsf-win32/gsf-output-win32.h>
+#include <gsf/gsf-output-impl.h>
+#include <gsf/gsf-impl-utils.h>
+#include <string.h>
+#include <objidl.h>
+
+struct _GsfOutputIStream {
+	GsfOutput output;
+	IStream * stream;
+};
+
+typedef struct {
+	GsfOutputClass output_class;
+} GsfOutputIStreamClass;
+
+#define NEED_ISTREAM_MACROS
+
+#ifdef NEED_ISTREAM_MACROS
+#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStream_Write(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define IStream_Release(This) (This)->lpVtbl->Release(This)
+#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
+#endif
+
+/* declared in gsf-input-win32.c */
+extern gchar * gsf_win32_hresult_to_utf8 (HRESULT hr);
+
+static gboolean
+gsf_output_istream_set_error (GsfOutput * output, HRESULT hr)
+{
+	if (!SUCCEEDED (hr)) {
+		gchar * msg;
+
+		msg = gsf_win32_hresult_to_utf8 (hr);
+		if (msg) {
+			gsf_output_set_error (output, 0, msg);
+			g_free (msg);
+		} /* "else" case should never happen */
+
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+/**
+ * gsf_output_istream_new :
+ * @stream   : IStream stream
+ *
+ * Returns a new output object or NULL.
+ **/
+GsfOutput *
+gsf_output_istream_new (IStream * stream)
+{
+	GsfOutputIStream *output;
+
+	g_return_val_if_fail (stream != NULL, NULL);
+
+	output = g_object_new (GSF_OUTPUT_ISTREAM_TYPE, NULL);
+	output->stream = stream;
+	IStream_AddRef (output->stream);
+
+	return GSF_OUTPUT(output);
+}
+
+static gboolean
+gsf_output_istream_close (GsfOutput *output)
+{
+	GsfOutputIStream *istream = GSF_OUTPUT_ISTREAM (output);
+	gboolean res = FALSE;
+
+	if (istream->stream != NULL) {
+		IStream_Release (istream->stream);
+		istream->stream = NULL;
+		res = TRUE;
+	}
+
+	return res;
+}
+
+static void
+gsf_output_istream_finalize (GObject *obj)
+{
+	GObjectClass *parent_class;
+	GsfOutputIStream *output = (GsfOutputIStream *)obj;
+
+	gsf_output_istream_close (GSF_OUTPUT(output));
+
+	parent_class = g_type_class_peek (GSF_OUTPUT_TYPE);
+	if (parent_class && parent_class->finalize)
+		parent_class->finalize (obj);
+}
+
+static gboolean
+gsf_output_istream_write (GsfOutput *output,
+			  size_t num_bytes,
+			  guint8 const *buffer)
+{
+	GsfOutputIStream *istm = GSF_OUTPUT_ISTREAM (output);
+	HRESULT hr;
+	ULONG nwritten, total_written = 0;
+
+	g_return_val_if_fail (istm != NULL, FALSE);
+	g_return_val_if_fail (istm->stream != NULL, FALSE);
+
+	while (1) {
+		hr = IStream_Write (istm->stream, (guint8 *)(buffer + total_written), (ULONG)(num_bytes - total_written), &nwritten);
+
+		if (SUCCEEDED (hr)) {
+			total_written += nwritten;
+			if ((size_t)total_written == num_bytes)
+				return TRUE;
+		} else {
+			return gsf_output_istream_set_error (output, hr);
+		}
+	}
+
+	return TRUE;
+}
+
+static gboolean
+gsf_output_istream_seek (GsfOutput *output, gsf_off_t offset, GSeekType whence)
+{
+	GsfOutputIStream *istm = GSF_OUTPUT_ISTREAM (output);
+	DWORD dwhence = STREAM_SEEK_SET;
+	HRESULT hr;
+
+	g_return_val_if_fail (istm != NULL, gsf_output_set_error (output, 0, "missing handle"));
+	g_return_val_if_fail (istm->stream != NULL, gsf_output_set_error (output, 0, "missing handle"));
+
+	switch (whence) {
+	case G_SEEK_SET :
+		dwhence = STREAM_SEEK_SET;
+		break;
+	case G_SEEK_CUR :
+		dwhence = STREAM_SEEK_CUR;
+		break;
+	case G_SEEK_END :
+		dwhence = STREAM_SEEK_END;
+		break;
+	default:
+		break; /* checked in parent wrapper */
+	}
+
+	hr = IStream_Seek (istm->stream, *(LARGE_INTEGER *) &offset, dwhence, NULL);
+
+	if (SUCCEEDED (hr))
+		return TRUE;
+
+	return gsf_output_istream_set_error (output, hr);
+}
+
+static void
+gsf_output_istream_init (GObject *obj)
+{
+	GsfOutputIStream *istm = GSF_OUTPUT_ISTREAM (obj);
+
+	istm->stream = NULL;
+}
+
+static void
+gsf_output_istream_class_init (GObjectClass *gobject_class)
+{
+	GsfOutputClass *output_class = GSF_OUTPUT_CLASS (gobject_class);
+
+	gobject_class->finalize = gsf_output_istream_finalize;
+	output_class->Close	= gsf_output_istream_close;
+	output_class->Write	= gsf_output_istream_write;
+	output_class->Seek	= gsf_output_istream_seek;
+}
+
+GSF_CLASS (GsfOutputIStream, gsf_output_istream,
+	   gsf_output_istream_class_init, gsf_output_istream_init, GSF_OUTPUT_TYPE)
+
+/***************************************************************************/
+/***************************************************************************/

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.h
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.h	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gsf-win32/gsf-output-win32.h	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,41 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * gsf-outut-win32.h: 
+ *
+ * Copyright (C) 2003 Dom Lachowicz <cinamod at hotmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#ifndef GSF_OUTPUT_WIN32_H
+#define GSF_OUTPUT_WIN32_H
+
+#include <gsf/gsf-output.h>
+#include <windows.h>
+
+G_BEGIN_DECLS
+
+#define GSF_OUTPUT_ISTREAM_TYPE        (gsf_output_istream_get_type ())
+#define GSF_OUTPUT_ISTREAM(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), GSF_OUTPUT_ISTREAM_TYPE, GsfOutputIStream))
+#define GSF_IS_OUTPUT_ISTREAM(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSF_OUTPUT_ISTREAM_TYPE))
+
+typedef struct _GsfOutputIStream GsfOutputIStream;
+
+GType      gsf_output_istream_get_type (void);
+GsfOutput *gsf_output_istream_new      (IStream * stream);
+
+G_END_DECLS
+
+#endif /* GSF_OUTPUT_ISTREAM_H */

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/gtk-doc.make
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/gtk-doc.make	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/gtk-doc.make	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,153 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+EXTRA_DIST = 				\
+	$(content_files)		\
+	$(HTML_IMAGES)			\
+	$(DOC_MAIN_SGML_FILE)		\
+	$(DOC_MODULE)-sections.txt	\
+	$(DOC_MODULE)-overrides.txt
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+	   $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = 		 \
+	$(DOC_MODULE).args 	 \
+	$(DOC_MODULE).hierarchy  \
+	$(DOC_MODULE).interfaces \
+	$(DOC_MODULE).prerequisites \
+	$(DOC_MODULE).signals
+
+CLEANFILES = $(SCANOBJ_FILES) $(DOC_MODULE)-unused.txt $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+	@echo 'gtk-doc: Scanning header files'
+	@-chmod -R u+w $(srcdir)
+	if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+	    CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+	else \
+	    cd $(srcdir) ; \
+	    for i in $(SCANOBJ_FILES) ; do \
+               test -f $$i || touch $$i ; \
+	    done \
+	fi
+	cd $(srcdir) && \
+	  gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+	touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES): scan-build.stamp
+	@true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+	@echo 'gtk-doc: Rebuilding template files'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+	touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+	@true
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(CFILE_GLOB) $(srcdir)/tmpl/*.sgml $(expand_content_files)
+	@echo 'gtk-doc: Building XML'
+	@-chmod -R u+w $(srcdir)
+	cd $(srcdir) && \
+	gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+	touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+	@true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+	@echo 'gtk-doc: Building HTML'
+	@-chmod -R u+w $(srcdir)
+	rm -rf $(srcdir)/html 
+	mkdir $(srcdir)/html
+	cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+	test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+	@echo 'gtk-doc: Fixing cross-references' 
+	cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+	touch html-build.stamp
+else
+all-local:
+endif
+
+##############
+
+clean-local:
+	rm -f *~ *.bak
+	rm -rf .libs
+
+maintainer-clean-local: clean
+	cd $(srcdir) && rm -rf xml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+install-data-local:
+	installfiles=`echo $(srcdir)/html/*`; \
+	if test "$$installfiles" = '$(srcdir)/html/*'; \
+	then echo '-- Nothing to install' ; \
+	else \
+	  $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+	  for i in $$installfiles; do \
+	    echo '-- Installing '$$i ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+	  done; \
+	  echo '-- Installing $(srcdir)/html/index.sgml' ; \
+	  $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+	fi
+
+uninstall-local:
+	rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+	@echo "*** gtk-doc must be installed and enabled in order to make dist"
+	@false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+	mkdir $(distdir)/tmpl
+	mkdir $(distdir)/xml
+	mkdir $(distdir)/html
+	-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+	-cp $(srcdir)/xml/*.xml $(distdir)/xml
+	-cp $(srcdir)/html/* $(distdir)/html
+	if test -f $(srcdir)/$(DOC_MODULE).types; then \
+	  cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
+	fi
+
+.PHONY : dist-hook-local

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/install-sh
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/install-sh	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/install-sh	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+#
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd=$cpprog
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd=$stripprog
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "$0: no input file specified" >&2
+	exit 1
+else
+	:
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+
+	if [ -d "$dst" ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=$mkdirprog
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f "$src" ] || [ -d "$src" ]
+	then
+		:
+	else
+		echo "$0: $src does not exist" >&2
+		exit 1
+	fi
+
+	if [ x"$dst" = x ]
+	then
+		echo "$0: no destination specified" >&2
+		exit 1
+	else
+		:
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d "$dst" ]
+	then
+		dst=$dst/`basename "$src"`
+	else
+		:
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+	'
+IFS="${IFS-$defaultIFS}"
+
+oIFS=$IFS
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS=$oIFS
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp=$pathcomp$1
+	shift
+
+	if [ ! -d "$pathcomp" ] ;
+        then
+		$mkdirprog "$pathcomp"
+	else
+		:
+	fi
+
+	pathcomp=$pathcomp/
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd "$dst" &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		dstfile=`basename "$dst" $transformbasename |
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		:
+	fi
+
+# Make a couple of temp file names in the proper directory.
+
+	dsttmp=$dstdir/_inst.$$_
+	rmtmp=$dstdir/_rm.$$_
+
+# Trap to clean up temp files at exit.
+
+	trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+	trap '(exit $?); exit' 1 2 13 15
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd "$src" "$dsttmp" &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
+
+# Now remove or move aside any old file at destination location.  We try this
+# two ways since rm can't unlink itself on some systems and the destination
+# file might be busy for other reasons.  In this case, the final cleanup
+# might fail but the new file should still install successfully.
+
+{
+	if [ -f "$dstdir/$dstfile" ]
+	then
+		$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
+		$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
+		{
+		  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		  (exit 1); exit
+		}
+	else
+		:
+	fi
+} &&
+
+# Now rename the file to the real destination.
+
+	$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+
+fi &&
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+
+{
+	(exit 0); exit
+}


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/install-sh
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-extract.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-extract.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-extract.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,839 @@
+#!@INTLTOOL_PERL@ -w 
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Extractor
+#
+#  Copyright (C) 2000-2001, 2003 Free Software Foundation.
+#
+#  Intltool 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.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#  As a special exception to the GNU General Public License, if you
+#  distribute this file as part of a program that contains a
+#  configuration script generated by Autoconf, you may include it under
+#  the same distribution terms that you use for the rest of that program.
+#
+#  Authors: Kenneth Christiansen <kenneth at gnu.org>
+#           Darin Adler <darin at bentspoon.com>
+#
+
+## Release information
+my $PROGRAM      = "intltool-extract";
+my $PACKAGE      = "intltool";
+my $VERSION      = "0.34.1";
+
+## Loaded modules
+use strict; 
+use File::Basename;
+use Getopt::Long;
+
+## Scalars used by the option stuff
+my $TYPE_ARG	= "0";
+my $LOCAL_ARG	= "0";
+my $HELP_ARG 	= "0";
+my $VERSION_ARG = "0";
+my $UPDATE_ARG  = "0";
+my $QUIET_ARG   = "0";
+my $SRCDIR_ARG	= ".";
+
+my $FILE;
+my $OUTFILE;
+
+my $gettext_type = "";
+my $input;
+my %messages = ();
+my %loc = ();
+my %count = ();
+my %comments = ();
+my $strcount = 0;
+
+my $XMLCOMMENT = "";
+
+## Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+## Always print first
+$| = 1;
+
+## Handle options
+GetOptions (
+	    "type=s"     => \$TYPE_ARG,
+            "local|l"    => \$LOCAL_ARG,
+            "help|h"     => \$HELP_ARG,
+            "version|v"  => \$VERSION_ARG,
+            "update"     => \$UPDATE_ARG,
+	    "quiet|q"    => \$QUIET_ARG,
+	    "srcdir=s"	 => \$SRCDIR_ARG,
+            ) or &error;
+
+&split_on_argument;
+
+
+## Check for options. 
+## This section will check for the different options.
+
+sub split_on_argument {
+
+    if ($VERSION_ARG) {
+        &version;
+
+    } elsif ($HELP_ARG) {
+	&help;
+        
+    } elsif ($LOCAL_ARG) {
+        &place_local;
+        &extract;
+
+    } elsif ($UPDATE_ARG) {
+	&place_normal;
+	&extract;
+
+    } elsif (@ARGV > 0) {
+	&place_normal;
+	&message;
+	&extract;
+
+    } else {
+	&help;
+
+    }  
+}    
+
+sub place_normal {
+    $FILE	 = $ARGV[0];
+    $OUTFILE     = "$FILE.h";
+}   
+
+sub place_local {
+    $FILE	 = $ARGV[0];
+    $OUTFILE     = fileparse($FILE, ());
+    if (!-e "tmp/") { 
+        system("mkdir tmp/"); 
+    }
+    $OUTFILE     = "./tmp/$OUTFILE.h"
+}
+
+sub determine_type {
+   if ($TYPE_ARG =~ /^gettext\/(.*)/) {
+	$gettext_type=$1
+   }
+}
+
+## Sub for printing release information
+sub version{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+Written by Kenneth Christiansen, 2000.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+## Sub for printing usage information
+sub help {
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... [FILENAME]
+Generates a header file from an XML source file.
+
+It grabs all strings between <_translatable_node> and its end tag in
+XML files. Read manpage (man ${PROGRAM}) for more info.
+
+      --type=TYPE   Specify the file type of FILENAME. Currently supports:
+                    "gettext/glade", "gettext/ini", "gettext/keys"
+                    "gettext/rfc822deb", "gettext/schemas",
+                    "gettext/scheme", "gettext/xml"
+  -l, --local       Writes output into current working directory
+                    (conflicts with --update)
+      --update      Writes output into the same directory the source file 
+                    reside (conflicts with --local)
+      --srcdir      Root of the source tree
+  -v, --version     Output version information and exit
+  -h, --help        Display this help and exit
+  -q, --quiet       Quiet mode
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+## Sub for printing error messages
+sub error{
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit;
+}
+
+sub message {
+    print "Generating C format header file for translation.\n" unless $QUIET_ARG;
+}
+
+sub extract {
+    &determine_type;
+
+    &convert;
+
+    open OUT, ">$OUTFILE";
+    binmode (OUT) if $^O eq 'MSWin32';
+    &msg_write;
+    close OUT;
+
+    print "Wrote $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub convert {
+
+    ## Reading the file
+    {
+	local (*IN);
+	local $/; #slurp mode
+	open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!";
+	$input = <IN>;
+    }
+
+    &type_ini if $gettext_type eq "ini";
+    &type_keys if $gettext_type eq "keys";
+    &type_xml if $gettext_type eq "xml";
+    &type_glade if $gettext_type eq "glade";
+    &type_scheme if $gettext_type eq "scheme";
+    &type_schemas  if $gettext_type eq "schemas";
+    &type_rfc822deb  if $gettext_type eq "rfc822deb";
+}
+
+sub entity_decode_minimal
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+
+    return $_;
+}
+
+sub entity_decode
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+    s/&lt;/</g;
+    s/&gt;/>/g;
+
+    return $_;
+}
+
+sub escape_char
+{
+    return '\"' if $_ eq '"';
+    return '\n' if $_ eq "\n";
+    return '\\' if $_ eq '\\';
+
+    return $_;
+}
+
+sub escape
+{
+    my ($string) = @_;
+    return join "", map &escape_char, split //, $string;
+}
+
+sub type_ini {
+    ### For generic translatable desktop files ###
+    while ($input =~ /^_.*=(.*)$/mg) {
+        $messages{$1} = [];
+    }
+}
+
+sub type_keys {
+    ### For generic translatable mime/keys files ###
+    while ($input =~ /^\s*_\w+=(.*)$/mg) {
+        $messages{$1} = [];
+    }
+}
+
+sub type_xml {
+    ### For generic translatable XML files ###
+    my $tree = readXml($input);
+    parseTree(0, $tree);
+}
+
+sub print_var {
+    my $var = shift;
+    my $vartype = ref $var;
+    
+    if ($vartype =~ /ARRAY/) {
+        my @arr = @{$var};
+        print "[ ";
+        foreach my $el (@arr) {
+            print_var($el);
+            print ", ";
+        }
+        print "] ";
+    } elsif ($vartype =~ /HASH/) {
+        my %hash = %{$var};
+        print "{ ";
+        foreach my $key (keys %hash) {
+            print "$key => ";
+            print_var($hash{$key});
+            print ", ";
+        }
+        print "} ";
+    } else {
+        print $var;
+    }
+}
+
+# Same syntax as getAttributeString in intltool-merge.in.in, similar logic (look for ## differences comment)
+sub getAttributeString
+{
+    my $sub = shift;
+    my $do_translate = shift || 1;
+    my $language = shift || "";
+    my $translate = shift;
+    my $result = "";
+    foreach my $e (reverse(sort(keys %{ $sub }))) {
+	my $key    = $e;
+	my $string = $sub->{$e};
+	my $quote = '"';
+	
+	$string =~ s/^[\s]+//;
+	$string =~ s/[\s]+$//;
+	
+	if ($string =~ /^'.*'$/)
+	{
+	    $quote = "'";
+	}
+	$string =~ s/^['"]//g;
+	$string =~ s/['"]$//g;
+
+        ## differences from intltool-merge.in.in
+	if ($key =~ /^_/) {
+            $comments{entity_decode($string)} = $XMLCOMMENT if $XMLCOMMENT;
+            $messages{entity_decode($string)} = [];
+            $$translate = 2;
+	}
+        ## differences end here from intltool-merge.in.in
+	$result .= " $key=$quote$string$quote";
+    }
+    return $result;
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub getXMLstring
+{
+    my $ref = shift;
+    my $spacepreserve = shift || 0;
+    my @list = @{ $ref };
+    my $result = "";
+
+    my $count = scalar(@list);
+    my $attrs = $list[0];
+    my $index = 1;
+
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+    $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+
+    while ($index < $count) {
+	my $type = $list[$index];
+	my $content = $list[$index+1];
+        if (! $type ) {
+	    # We've got CDATA
+	    if ($content) {
+		# lets strip the whitespace here, and *ONLY* here
+                $content =~ s/\s+/ /gs if (!$spacepreserve);
+		$result .= $content;
+	    }
+	} elsif ( "$type" ne "1" ) {
+	    # We've got another element
+	    $result .= "<$type";
+	    $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements
+	    if ($content) {
+		my $subresult = getXMLstring($content, $spacepreserve);
+		if ($subresult) {
+		    $result .= ">".$subresult . "</$type>";
+		} else {
+		    $result .= "/>";
+		}
+	    } else {
+		$result .= "/>";
+	    }
+	}
+	$index += 2;
+    }
+    return $result;
+}
+
+# Verbatim copy from intltool-merge.in.in, except for MULTIPLE_OUTPUT handling removed
+# Translate list of nodes if necessary
+sub translate_subnodes
+{
+    my $fh = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $singlelang = shift || 0;
+    my $spacepreserve = shift || 0;
+
+    my @nodes = @{ $content };
+
+    my $count = scalar(@nodes);
+    my $index = 0;
+    while ($index < $count) {
+        my $type = $nodes[$index];
+        my $rest = $nodes[$index+1];
+        traverse($fh, $type, $rest, $language, $spacepreserve);
+        $index += 2;
+    }
+}
+
+# Based on traverse() in intltool-merge.in.in
+sub traverse
+{
+    my $fh = shift; # unused, to allow us to sync code between -merge and -extract
+    my $nodename = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $spacepreserve = shift || 0;
+
+    if ($nodename && "$nodename" eq "1") {
+        $XMLCOMMENT = $content;
+    } elsif ($nodename) {
+	# element
+	my @all = @{ $content };
+	my $attrs = shift @all;
+	my $translate = 0;
+	my $outattr = getAttributeString($attrs, 1, $language, \$translate);
+
+	if ($nodename =~ /^_/) {
+	    $translate = 1;
+	    $nodename =~ s/^_//;
+	}
+	my $lookup = '';
+
+        $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+        $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+	if ($translate) {
+	    $lookup = getXMLstring($content, $spacepreserve);
+            if (!$spacepreserve) {
+                $lookup =~ s/^\s+//s;
+                $lookup =~ s/\s+$//s;
+            }
+
+	    if ($lookup && $translate != 2) {
+                $comments{$lookup} = $XMLCOMMENT if $XMLCOMMENT;
+                $messages{$lookup} = [];
+            } elsif ($translate == 2) {
+                translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
+	    }
+	} else {
+            $XMLCOMMENT = "";
+	    my $count = scalar(@all);
+	    if ($count > 0) {
+                my $index = 0;
+                while ($index < $count) {
+                    my $type = $all[$index];
+                    my $rest = $all[$index+1];
+                    traverse($fh, $type, $rest, $language, $spacepreserve);
+                    $index += 2;
+                }
+	    }
+	}
+        $XMLCOMMENT = "";
+    }
+}
+
+
+# Verbatim copy from intltool-merge.in.in, $fh for compatibility
+sub parseTree
+{
+    my $fh        = shift;
+    my $ref       = shift;
+    my $language  = shift || "";
+
+    my $name = shift @{ $ref };
+    my $cont = shift @{ $ref };
+
+    while (!$name || "$name" eq "1") {
+        $name = shift @{ $ref };
+        $cont = shift @{ $ref };
+    }
+
+    my $spacepreserve = 0;
+    my $attrs = @{$cont}[0];
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+    traverse($fh, $name, $cont, $language, $spacepreserve);
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_comment
+{
+    my $expat = shift;
+    my $data  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 1 => $data;
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_cdatastart
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 0 => $expat->original_string();
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_cdataend
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    $clist->[$pos] .= $expat->original_string();
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_char
+{
+    my $expat = shift;
+    my $text  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    # Use original_string so that we retain escaped entities
+    # in CDATA sections.
+    #
+    if ($pos > 0 and $clist->[$pos - 1] eq '0') {
+        $clist->[$pos] .= $expat->original_string();
+    } else {
+        push @$clist, 0 => $expat->original_string();
+    }
+}
+
+# Verbatim copy from intltool-merge.in.in
+sub intltool_tree_start
+{
+    my $expat    = shift;
+    my $tag      = shift;
+    my @origlist = ();
+
+    # Use original_string so that we retain escaped entities
+    # in attribute values.  We must convert the string to an
+    # @origlist array to conform to the structure of the Tree
+    # Style.
+    #
+    my @original_array = split /\x/, $expat->original_string();
+    my $source         = $expat->original_string();
+
+    # Remove leading tag.
+    #
+    $source =~ s|^\s*<\s*(\S+)||s;
+
+    # Grab attribute key/value pairs and push onto @origlist array.
+    #
+    while ($source)
+    {
+       if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
+           push @origlist, $1;
+           push @origlist, '"' . $2 . '"';
+       }
+       elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
+           push @origlist, $1;
+           push @origlist, "'" . $2 . "'";
+       }
+       else
+       {
+           last;
+       }
+    }
+
+    my $ol = [ { @origlist } ];
+
+    push @{ $expat->{Lists} }, $expat->{Curlist};
+    push @{ $expat->{Curlist} }, $tag => $ol;
+    $expat->{Curlist} = $ol;
+}
+
+# Copied from intltool-merge.in.in and added comment handler.
+sub readXml
+{
+    my $xmldoc = shift || return;
+    my $ret = eval 'require XML::Parser';
+    if(!$ret) {
+        die "You must have XML::Parser installed to run $0\n\n";
+    }
+    my $xp = new XML::Parser(Style => 'Tree');
+    $xp->setHandlers(Char => \&intltool_tree_char);
+    $xp->setHandlers(Start => \&intltool_tree_start);
+    $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart);
+    $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend);
+
+    ## differences from intltool-merge.in.in
+    $xp->setHandlers(Comment => \&intltool_tree_comment);
+    ## differences end here from intltool-merge.in.in
+
+    my $tree = $xp->parse($xmldoc);
+    #print_var($tree);
+
+# <foo><!-- comment --><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
+# would be:
+# [foo, [{}, 1, "comment", head, [{id => "a"}, 0, "Hello ",  em, [{}, 0, "there"]], bar, 
+# [{}, 0, "Howdy",  ref, [{}]], 0, "do" ] ]
+
+    return $tree;
+}
+
+sub type_schemas {
+    ### For schemas XML files ###
+         
+    # FIXME: We should handle escaped < (less than)
+    while ($input =~ /
+                      <locale\ name="C">\s*
+                          (<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)?
+                          (<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)?
+                          (<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)?
+                      <\/locale>
+                     /sgx) {
+        my @totranslate = ($3,$6,$9);
+        my @eachcomment = ($2,$5,$8);
+        foreach (@totranslate) {
+            my $currentcomment = shift @eachcomment;
+            next if !$_;
+            s/\s+/ /g;
+            $messages{entity_decode_minimal($_)} = [];
+            $comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment));
+        }
+    }
+}
+
+sub type_rfc822deb {
+    ### For rfc822-style Debian configuration files ###
+
+    my $lineno = 1;
+    my $type = '';
+    while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg)
+    {
+        my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5);
+        while ($pre =~ m/\n/g)
+        {
+            $lineno ++;
+        }
+        $lineno += length($newline);
+        my @str_list = rfc822deb_split(length($underscore), $text);
+        for my $str (@str_list)
+        {
+            $strcount++;
+            $messages{$str} = [];
+            $loc{$str} = $lineno;
+            $count{$str} = $strcount;
+            my $usercomment = '';
+            while($pre =~ s/(^|\n)#([^\n]*)$//s)
+            {
+                $usercomment = "\n" . $2 . $usercomment;
+            }
+            $comments{$str} = $tag . $usercomment;
+        }
+        $lineno += ($text =~ s/\n//g);
+    }
+}
+
+sub rfc822deb_split {
+    # Debian defines a special way to deal with rfc822-style files:
+    # when a value contain newlines, it consists of
+    #   1.  a short form (first line)
+    #   2.  a long description, all lines begin with a space,
+    #       and paragraphs are separated by a single dot on a line
+    # This routine returns an array of all paragraphs, and reformat
+    # them.
+    # When first argument is 2, the string is a comma separated list of
+    # values.
+    my $type = shift;
+    my $text = shift;
+    $text =~ s/^[ \t]//mg;
+    return (split(/, */, $text, 0)) if $type ne 1;
+    return ($text) if $text !~ /\n/;
+
+    $text =~ s/([^\n]*)\n//;
+    my @list = ($1);
+    my $str = '';
+    for my $line (split (/\n/, $text))
+    {
+        chomp $line;
+        if ($line =~ /^\.\s*$/)
+        {
+            #  New paragraph
+            $str =~ s/\s*$//;
+            push(@list, $str);
+            $str = '';
+        }
+        elsif ($line =~ /^\s/)
+        {
+            #  Line which must not be reformatted
+            $str .= "\n" if length ($str) && $str !~ /\n$/;
+            $line =~ s/\s+$//;
+            $str .= $line."\n";
+        }
+        else
+        {
+            #  Continuation line, remove newline
+            $str .= " " if length ($str) && $str !~ /\n$/;
+            $str .= $line;
+        }
+    }
+    $str =~ s/\s*$//;
+    push(@list, $str) if length ($str);
+    return @list;
+}
+
+sub type_glade {
+    ### For translatable Glade XML files ###
+
+    my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message";
+
+    while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) {
+	# Glade sometimes uses tags that normally mark translatable things for
+        # little bits of non-translatable content. We work around this by not
+        # translating strings that only includes something like label4 or window1.
+	$messages{entity_decode($2)} = [] unless $2 =~ /^(window|label|dialog)[0-9]+$/;
+    }
+    
+    while ($input =~ /<items>(..[^<]*)<\/items>/sg) {
+	for my $item (split (/\n/, $1)) {
+	    $messages{entity_decode($item)} = [];
+	}
+    }
+
+    ## handle new glade files
+    while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"(?:\s+[^>]*comments\s*=\s*"([^"]*)")?[^>]*>([^<]+)<\/\1>/sg) {
+	$messages{entity_decode($3)} = [] unless $3 =~ /^(window|label)[0-9]+$/;
+        if (defined($2) and !($3 =~ /^(window|label)[0-9]+$/)) {
+	   $comments{entity_decode($3)} = entity_decode($2) ;
+        }
+    }
+    while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) {
+        $messages{entity_decode_minimal($2)} = [];
+    }
+}
+
+sub type_scheme {
+    my ($line, $i, $state, $str, $trcomment, $char);
+    for $line (split(/\n/, $input)) {
+        $i = 0;
+        $state = 0; # 0 - nothing, 1 - string, 2 - translatable string
+        while ($i < length($line)) {
+            if (substr($line,$i,1) eq "\"") {
+                if ($state == 2) {
+                    $comments{$str} = $trcomment if ($trcomment);
+                    $messages{$str} = [];
+                    $str = '';
+                    $state = 0; $trcomment = "";
+                } elsif ($state == 1) {
+                    $str = '';
+                    $state = 0; $trcomment = "";
+                } else {
+                    $state = 1;
+                    $str = '';
+                    if ($i>0 && substr($line,$i-1,1) eq '_') {
+                        $state = 2;
+                    }
+                }
+            } elsif (!$state) {
+                if (substr($line,$i,1) eq ";") {
+                    $trcomment = substr($line,$i+1);
+                    $trcomment =~ s/^;*\s*//;
+                    $i = length($line);
+                } elsif ($trcomment && substr($line,$i,1) !~ /\s|\(|\)|_/) {
+                    $trcomment = "";
+                }
+            } else {
+                if (substr($line,$i,1) eq "\\") {
+                    $char = substr($line,$i+1,1);
+                    if ($char ne "\"" && $char ne "\\") {
+                       $str = $str . "\\";
+                    }
+                    $i++;
+                }
+                $str = $str . substr($line,$i,1);
+            }
+            $i++;
+        }
+    }
+}
+
+sub msg_write {
+    my @msgids;
+    if (%count)
+    {
+        @msgids = sort { $count{$a} <=> $count{$b} } keys %count;
+    }
+    else
+    {
+        @msgids = sort keys %messages;
+    }
+    for my $message (@msgids)
+    {
+	my $offsetlines = 1;
+	$offsetlines++ if $message =~ /%/;
+	if (defined ($comments{$message}))
+	{
+		while ($comments{$message} =~ m/\n/g)
+		{
+		    $offsetlines++;
+		}
+	}
+	print OUT "# ".($loc{$message} - $offsetlines).  " \"$FILE\"\n"
+	        if defined $loc{$message};
+   	print OUT "/* ".$comments{$message}." */\n"
+                if defined $comments{$message};
+   	print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/;
+        
+    	my @lines = split (/\n/, $message, -1);
+    	for (my $n = 0; $n < @lines; $n++)
+	{
+            if ($n == 0)
+            {
+ 		print OUT "char *s = N_(\""; 
+            }
+            else
+            {  
+                print OUT "             \""; 
+            }
+
+            print OUT escape($lines[$n]);
+
+            if ($n < @lines - 1)
+            {
+                print OUT "\\n\"\n"; 
+            }
+            else
+            {
+                print OUT "\");\n";  
+	    }
+        }
+    }
+}
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-merge.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-merge.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-merge.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1356 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Merger
+#
+#  Copyright (C) 2000, 2003 Free Software Foundation.
+#  Copyright (C) 2000, 2001 Eazel, Inc
+#
+#  Intltool is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License 
+#  version 2 published by the Free Software Foundation.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#  As a special exception to the GNU General Public License, if you
+#  distribute this file as part of a program that contains a
+#  configuration script generated by Autoconf, you may include it under
+#  the same distribution terms that you use for the rest of that program.
+#
+#  Authors:  Maciej Stachowiak <mjs at noisehavoc.org>
+#            Kenneth Christiansen <kenneth at gnu.org>
+#            Darin Adler <darin at bentspoon.com>
+#
+#  Proper XML UTF-8'ification written by Cyrille Chepelov <chepelov at calixo.net>
+#
+
+## Release information
+my $PROGRAM = "intltool-merge";
+my $PACKAGE = "intltool";
+my $VERSION = "0.34.1";
+
+## Loaded modules
+use strict; 
+use Getopt::Long;
+use Text::Wrap;
+use File::Basename;
+
+my $must_end_tag      = -1;
+my $last_depth        = -1;
+my $translation_depth = -1;
+my @tag_stack = ();
+my @entered_tag = ();
+my @translation_strings = ();
+my $leading_space = "";
+
+## Scalars used by the option stuff
+my $HELP_ARG = 0;
+my $VERSION_ARG = 0;
+my $BA_STYLE_ARG = 0;
+my $XML_STYLE_ARG = 0;
+my $KEYS_STYLE_ARG = 0;
+my $DESKTOP_STYLE_ARG = 0;
+my $SCHEMAS_STYLE_ARG = 0;
+my $RFC822DEB_STYLE_ARG = 0;
+my $QUIET_ARG = 0;
+my $PASS_THROUGH_ARG = 0;
+my $UTF8_ARG = 0;
+my $MULTIPLE_OUTPUT = 0;
+my $cache_file;
+
+## Handle options
+GetOptions 
+(
+ "help" => \$HELP_ARG,
+ "version" => \$VERSION_ARG,
+ "quiet|q" => \$QUIET_ARG,
+ "oaf-style|o" => \$BA_STYLE_ARG, ## for compatibility
+ "ba-style|b" => \$BA_STYLE_ARG,
+ "xml-style|x" => \$XML_STYLE_ARG,
+ "keys-style|k" => \$KEYS_STYLE_ARG,
+ "desktop-style|d" => \$DESKTOP_STYLE_ARG,
+ "schemas-style|s" => \$SCHEMAS_STYLE_ARG,
+ "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG,
+ "pass-through|p" => \$PASS_THROUGH_ARG,
+ "utf8|u" => \$UTF8_ARG,
+ "multiple-output|m" => \$MULTIPLE_OUTPUT,
+ "cache|c=s" => \$cache_file
+ ) or &error;
+
+my $PO_DIR;
+my $FILE;
+my $OUTFILE;
+
+my %po_files_by_lang = ();
+my %translations = ();
+my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "/usr/bin/iconv";
+my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
+
+# Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+# XML quoted string contents
+my $q = "[^\\\"]*";
+
+## Check for options. 
+
+if ($VERSION_ARG) 
+{
+	&print_version;
+} 
+elsif ($HELP_ARG) 
+{
+	&print_help;
+} 
+elsif ($BA_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&ba_merge_translations;
+	&finalize;
+} 
+elsif ($XML_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&xml_merge_output;
+	&finalize;
+} 
+elsif ($KEYS_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&keys_merge_translations;
+	&finalize;
+} 
+elsif ($DESKTOP_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&desktop_merge_translations;
+	&finalize;
+} 
+elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2) 
+{
+	&utf8_sanity_check;
+	&preparation;
+	&print_message;
+	&schemas_merge_translations;
+	&finalize;
+} 
+elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2) 
+{
+	&preparation;
+	&print_message;
+	&rfc822deb_merge_translations;
+	&finalize;
+} 
+else 
+{
+	&print_help;
+}
+
+exit;
+
+## Sub for printing release information
+sub print_version
+{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) ${VERSION}
+Written by Maciej Stachowiak, Darin Adler and Kenneth Christiansen.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+Copyright (C) 2000-2001 Eazel, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+## Sub for printing usage information
+sub print_help
+{
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... PO_DIRECTORY FILENAME OUTPUT_FILE
+Generates an output file that includes some localized attributes from an
+untranslated source file.
+
+Mandatory options: (exactly one must be specified)
+  -b, --ba-style         includes translations in the bonobo-activation style
+  -d, --desktop-style    includes translations in the desktop style
+  -k, --keys-style       includes translations in the keys style
+  -s, --schemas-style    includes translations in the schemas style
+  -r, --rfc822deb-style  includes translations in the RFC822 style
+  -x, --xml-style        includes translations in the standard xml style
+
+Other options:
+  -u, --utf8             convert all strings to UTF-8 before merging 
+                         (default for everything except RFC822 style)
+  -p, --pass-through     deprecated, does nothing and issues a warning
+  -m, --multiple-output  output one localized file per locale, instead of 
+	                 a single file containing all localized elements
+  -c, --cache=FILE       specify cache file name
+                         (usually \$top_builddir/po/.intltool-merge-cache)
+  -q, --quiet            suppress most messages
+      --help             display this help and exit
+      --version          output version information and exit
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+
+## Sub for printing error messages
+sub print_error
+{
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit;
+}
+
+
+sub print_message 
+{
+    print "Merging translations into $OUTFILE.\n" unless $QUIET_ARG;
+}
+
+
+sub preparation 
+{
+    $PO_DIR = $ARGV[0];
+    $FILE = $ARGV[1];
+    $OUTFILE = $ARGV[2];
+
+    &gather_po_files;
+    &get_translation_database;
+}
+
+# General-purpose code for looking up translations in .po files
+
+sub po_file2lang
+{
+    my ($tmp) = @_; 
+    $tmp =~ s/^.*\/(.*)\.po$/$1/; 
+    return $tmp; 
+}
+
+sub gather_po_files
+{
+    for my $po_file (glob "$PO_DIR/*.po") {
+	$po_files_by_lang{po_file2lang($po_file)} = $po_file;
+    }
+}
+
+sub get_local_charset
+{
+    my ($encoding) = @_;
+    my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "/local/gnome/head/test/lib/charset.alias";
+
+    # seek character encoding aliases in charset.alias (glib)
+
+    if (open CHARSET_ALIAS, $alias_file) 
+    {
+	while (<CHARSET_ALIAS>) 
+        {
+            next if /^\#/;
+            return $1 if (/^\s*([-._a-zA-Z0-9]+)\s+$encoding\b/i)
+        }
+
+        close CHARSET_ALIAS;
+    }
+
+    # if not found, return input string
+
+    return $encoding;
+}
+
+sub get_po_encoding
+{
+    my ($in_po_file) = @_;
+    my $encoding = "";
+
+    open IN_PO_FILE, $in_po_file or die;
+    while (<IN_PO_FILE>) 
+    {
+        ## example: "Content-Type: text/plain; charset=ISO-8859-1\n"
+        if (/Content-Type\:.*charset=([-a-zA-Z0-9]+)\\n/) 
+        {
+            $encoding = $1; 
+            last;
+        }
+    }
+    close IN_PO_FILE;
+
+    if (!$encoding) 
+    {
+        print STDERR "Warning: no encoding found in $in_po_file. Assuming ISO-8859-1\n" unless $QUIET_ARG;
+        $encoding = "ISO-8859-1";
+    }
+
+    system ("$iconv -f $encoding -t UTF-8 <$devnull 2>$devnull");
+    if ($?) {
+	$encoding = get_local_charset($encoding);
+    }
+
+    return $encoding
+}
+
+sub utf8_sanity_check 
+{
+    print STDERR "Warning: option --pass-through has been removed.\n" if $PASS_THROUGH_ARG;
+    $UTF8_ARG = 1;
+}
+
+sub get_translation_database
+{
+    if ($cache_file) {
+	&get_cached_translation_database;
+    } else {
+        &create_translation_database;
+    }
+}
+
+sub get_newest_po_age
+{
+    my $newest_age;
+
+    foreach my $file (values %po_files_by_lang) 
+    {
+	my $file_age = -M $file;
+	$newest_age = $file_age if !$newest_age || $file_age < $newest_age;
+    }
+
+    $newest_age = 0 if !$newest_age;
+
+    return $newest_age;
+}
+
+sub create_cache
+{
+    print "Generating and caching the translation database\n" unless $QUIET_ARG;
+
+    &create_translation_database;
+
+    open CACHE, ">$cache_file" || die;
+    print CACHE join "\x01", %translations;
+    close CACHE;
+}
+
+sub load_cache 
+{
+    print "Found cached translation database\n" unless $QUIET_ARG;
+
+    my $contents;
+    open CACHE, "<$cache_file" || die;
+    {
+        local $/;
+        $contents = <CACHE>;
+    }
+    close CACHE;
+    %translations = split "\x01", $contents;
+}
+
+sub get_cached_translation_database
+{
+    my $cache_file_age = -M $cache_file;
+    if (defined $cache_file_age) 
+    {
+        if ($cache_file_age <= &get_newest_po_age) 
+        {
+            &load_cache;
+            return;
+        }
+        print "Found too-old cached translation database\n" unless $QUIET_ARG;
+    }
+
+    &create_cache;
+}
+
+sub create_translation_database
+{
+    for my $lang (keys %po_files_by_lang) 
+    {
+    	my $po_file = $po_files_by_lang{$lang};
+
+        if ($UTF8_ARG) 
+        {
+            my $encoding = get_po_encoding ($po_file);
+
+            if (lc $encoding eq "utf-8") 
+            {
+                open PO_FILE, "<$po_file";	
+            } 
+            else 
+            {
+		print STDERR "WARNING: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;;
+
+                open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|";	
+            }
+        } 
+        else 
+        {
+            open PO_FILE, "<$po_file";	
+        }
+
+	my $nextfuzzy = 0;
+	my $inmsgid = 0;
+	my $inmsgstr = 0;
+	my $msgid = "";
+	my $msgstr = "";
+
+        while (<PO_FILE>) 
+        {
+	    $nextfuzzy = 1 if /^#, fuzzy/;
+       
+	    if (/^msgid "((\\.|[^\\])*)"/ ) 
+            {
+		$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+		$msgid = "";
+		$msgstr = "";
+
+		if ($nextfuzzy) {
+		    $inmsgid = 0;
+		} else {
+		    $msgid = unescape_po_string($1);
+		    $inmsgid = 1;
+		}
+		$inmsgstr = 0;
+		$nextfuzzy = 0;
+	    }
+
+	    if (/^msgstr "((\\.|[^\\])*)"/) 
+            {
+	        $msgstr = unescape_po_string($1);
+		$inmsgstr = 1;
+		$inmsgid = 0;
+	    }
+
+	    if (/^"((\\.|[^\\])*)"/) 
+            {
+	        $msgid .= unescape_po_string($1) if $inmsgid;
+	        $msgstr .= unescape_po_string($1) if $inmsgstr;
+	    }
+	}
+	$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+    }
+}
+
+sub finalize
+{
+}
+
+sub unescape_one_sequence
+{
+    my ($sequence) = @_;
+
+    return "\\" if $sequence eq "\\\\";
+    return "\"" if $sequence eq "\\\"";
+    return "\n" if $sequence eq "\\n";
+    return "\r" if $sequence eq "\\r";
+    return "\t" if $sequence eq "\\t";
+    return "\b" if $sequence eq "\\b";
+    return "\f" if $sequence eq "\\f";
+    return "\a" if $sequence eq "\\a";
+    return chr(11) if $sequence eq "\\v"; # vertical tab, see ascii(7)
+
+    return chr(hex($1)) if ($sequence =~ /\\x([0-9a-fA-F]{2})/);
+    return chr(oct($1)) if ($sequence =~ /\\([0-7]{3})/);
+
+    # FIXME: Is \0 supported as well? Kenneth and Rodney don't want it, see bug #48489
+
+    return $sequence;
+}
+
+sub unescape_po_string
+{
+    my ($string) = @_;
+
+    $string =~ s/(\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\.)/unescape_one_sequence($1)/eg;
+
+    return $string;
+}
+
+## NOTE: deal with < - &lt; but not > - &gt;  because it seems its ok to have 
+## > in the entity. For further info please look at #84738.
+sub entity_decode
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+    s/&lt;/</g;
+
+    return $_;
+}
+ 
+# entity_encode: (string)
+#
+# Encode the given string to XML format (encode '<' etc).
+
+sub entity_encode
+{
+    my ($pre_encoded) = @_;
+
+    my @list_of_chars = unpack ('C*', $pre_encoded);
+
+    # with UTF-8 we only encode minimalistic
+    return join ('', map (&entity_encode_int_minimalist, @list_of_chars));
+}
+
+sub entity_encode_int_minimalist
+{
+    return "&quot;" if $_ == 34;
+    return "&amp;" if $_ == 38;
+    return "&apos;" if $_ == 39;
+    return "&lt;" if $_ == 60;
+    return chr $_;
+}
+
+sub entity_encoded_translation
+{
+    my ($lang, $string) = @_;
+
+    my $translation = $translations{$lang, $string};
+    return $string if !$translation;
+    return entity_encode ($translation);
+}
+
+## XML (bonobo-activation specific) merge code
+
+sub ba_merge_translations
+{
+    my $source;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">$OUTFILE" or die "can't open $OUTFILE: $!";
+    # Binmode so that selftest works ok if using a native Win32 Perl...
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while ($source =~ s|^(.*?)([ \t]*<\s*$w+\s+($w+\s*=\s*"$q"\s*)+/?>)([ \t]*\n)?||s) 
+    {
+        print OUTPUT $1;
+
+        my $node = $2 . "\n";
+
+        my @strings = ();
+        $_ = $node;
+	while (s/(\s)_($w+\s*=\s*"($q)")/$1$2/s) {
+             push @strings, entity_decode($3);
+        }
+	print OUTPUT;
+
+	my %langs;
+	for my $string (@strings) 
+        {
+	    for my $lang (keys %po_files_by_lang) 
+            {
+                $langs{$lang} = 1 if $translations{$lang, $string};
+	    }
+	}
+	
+	for my $lang (sort keys %langs) 
+        {
+	    $_ = $node;
+	    s/(\sname\s*=\s*)"($q)"/$1"$2-$lang"/s;
+	    s/(\s)_($w+\s*=\s*")($q)"/$1 . $2 . entity_encoded_translation($lang, $3) . '"'/seg;
+	    print OUTPUT;
+        }
+    }
+
+    print OUTPUT $source;
+
+    close OUTPUT;
+}
+
+
+## XML (non-bonobo-activation) merge code
+
+
+# Process tag attributes
+#   Only parameter is a HASH containing attributes -> values mapping
+sub getAttributeString
+{
+    my $sub = shift;
+    my $do_translate = shift || 0;
+    my $language = shift || "";
+    my $result = "";
+    my $translate = shift;
+    foreach my $e (reverse(sort(keys %{ $sub }))) {
+	my $key    = $e;
+	my $string = $sub->{$e};
+	my $quote = '"';
+	
+	$string =~ s/^[\s]+//;
+	$string =~ s/[\s]+$//;
+	
+	if ($string =~ /^'.*'$/)
+	{
+	    $quote = "'";
+	}
+	$string =~ s/^['"]//g;
+	$string =~ s/['"]$//g;
+
+	if ($do_translate && $key =~ /^_/) {
+	    $key =~ s|^_||g;
+	    if ($language) {
+		# Handle translation
+		my $decode_string = entity_decode($string);
+		my $translation = $translations{$language, $decode_string};
+		if ($translation) {
+		    $translation = entity_encode($translation);
+		    $string = $translation;
+                }
+                $$translate = 2;
+            } else {
+                 $$translate = 2 if ($translate && (!$$translate)); # watch not to "overwrite" $translate
+            }
+	}
+	
+	$result .= " $key=$quote$string$quote";
+    }
+    return $result;
+}
+
+# Returns a translatable string from XML node, it works on contents of every node in XML::Parser tree
+sub getXMLstring
+{
+    my $ref = shift;
+    my $spacepreserve = shift || 0;
+    my @list = @{ $ref };
+    my $result = "";
+
+    my $count = scalar(@list);
+    my $attrs = $list[0];
+    my $index = 1;
+
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+    $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+
+    while ($index < $count) {
+	my $type = $list[$index];
+	my $content = $list[$index+1];
+        if (! $type ) {
+	    # We've got CDATA
+	    if ($content) {
+		# lets strip the whitespace here, and *ONLY* here
+                $content =~ s/\s+/ /gs if (!$spacepreserve);
+		$result .= $content;
+	    }
+	} elsif ( "$type" ne "1" ) {
+	    # We've got another element
+	    $result .= "<$type";
+	    $result .= getAttributeString(@{$content}[0], 0); # no nested translatable elements
+	    if ($content) {
+		my $subresult = getXMLstring($content, $spacepreserve);
+		if ($subresult) {
+		    $result .= ">".$subresult . "</$type>";
+		} else {
+		    $result .= "/>";
+		}
+	    } else {
+		$result .= "/>";
+	    }
+	}
+	$index += 2;
+    }
+    return $result;
+}
+
+# Translate list of nodes if necessary
+sub translate_subnodes
+{
+    my $fh = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $singlelang = shift || 0;
+    my $spacepreserve = shift || 0;
+
+    my @nodes = @{ $content };
+
+    my $count = scalar(@nodes);
+    my $index = 0;
+    while ($index < $count) {
+        my $type = $nodes[$index];
+        my $rest = $nodes[$index+1];
+        if ($singlelang) {
+            my $oldMO = $MULTIPLE_OUTPUT;
+            $MULTIPLE_OUTPUT = 1;
+            traverse($fh, $type, $rest, $language, $spacepreserve);
+            $MULTIPLE_OUTPUT = $oldMO;
+        } else {
+            traverse($fh, $type, $rest, $language, $spacepreserve);
+        }
+        $index += 2;
+    }
+}
+
+sub isWellFormedXmlFragment
+{
+    my $ret = eval 'require XML::Parser';
+    if(!$ret) {
+        die "You must have XML::Parser installed to run $0\n\n";
+    } 
+
+    my $fragment = shift;
+    return 0 if (!$fragment);
+
+    $fragment = "<root>$fragment</root>";
+    my $xp = new XML::Parser(Style => 'Tree');
+    my $tree = 0;
+    eval { $tree = $xp->parse($fragment); };
+    return $tree;
+}
+
+sub traverse
+{
+    my $fh = shift; 
+    my $nodename = shift;
+    my $content = shift;
+    my $language = shift || "";
+    my $spacepreserve = shift || 0;
+
+    if (!$nodename) {
+	if ($content =~ /^[\s]*$/) {
+	    $leading_space .= $content;
+	}
+	print $fh $content;
+    } else {
+	# element
+	my @all = @{ $content };
+	my $attrs = shift @all;
+	my $translate = 0;
+	my $outattr = getAttributeString($attrs, 1, $language, \$translate);
+
+	if ($nodename =~ /^_/) {
+	    $translate = 1;
+	    $nodename =~ s/^_//;
+	}
+	my $lookup = '';
+
+        $spacepreserve = 0 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?default["']?$/));
+        $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+	print $fh "<$nodename", $outattr;
+	if ($translate) {
+	    $lookup = getXMLstring($content, $spacepreserve);
+            if (!$spacepreserve) {
+                $lookup =~ s/^\s+//s;
+                $lookup =~ s/\s+$//s;
+            }
+
+	    if ($lookup || $translate == 2) {
+                my $translation = $translations{$language, $lookup} if isWellFormedXmlFragment($translations{$language, $lookup});
+                if ($MULTIPLE_OUTPUT && ($translation || $translate == 2)) {
+                    $translation = $lookup if (!$translation);
+                    print $fh " xml:lang=\"", $language, "\"" if $language;
+                    print $fh ">";
+                    if ($translate == 2) {
+                        translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
+                    } else {
+                        print $fh $translation;
+                    }
+                    print $fh "</$nodename>";
+
+                    return; # this means there will be no same translation with xml:lang="$language"...
+                            # if we want them both, just remove this "return"
+                } else {
+                    print $fh ">";
+                    if ($translate == 2) {
+                        translate_subnodes($fh, \@all, $language, 1, $spacepreserve);
+                    } else {
+                        print $fh $lookup;
+                    }
+                    print $fh "</$nodename>";
+                }
+	    } else {
+		print $fh "/>";
+	    }
+
+	    for my $lang (sort keys %po_files_by_lang) {
+                    if ($MULTIPLE_OUTPUT && $lang ne "$language") {
+                        next;
+                    }
+		    if ($lang) {
+                        # Handle translation
+                        #
+                        my $translate = 0;
+                        my $localattrs = getAttributeString($attrs, 1, $lang, \$translate);
+                        my $translation = $translations{$lang, $lookup} if isWellFormedXmlFragment($translations{$lang, $lookup});
+                        if ($translate && !$translation) {
+                            $translation = $lookup;
+                        }
+
+                        if ($translation || $translate) {
+			    print $fh "\n";
+			    $leading_space =~ s/.*\n//g;
+			    print $fh $leading_space;
+ 			    print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs, ">";
+                            if ($translate == 2) {
+                               translate_subnodes($fh, \@all, $lang, 1, $spacepreserve);
+                            } else {
+                                print $fh $translation;
+                            }
+                            print $fh "</$nodename>";
+			}
+                    }
+	    }
+
+	} else {
+	    my $count = scalar(@all);
+	    if ($count > 0) {
+		print $fh ">";
+                my $index = 0;
+                while ($index < $count) {
+                    my $type = $all[$index];
+                    my $rest = $all[$index+1];
+                    traverse($fh, $type, $rest, $language, $spacepreserve);
+                    $index += 2;
+                }
+		print $fh "</$nodename>";
+	    } else {
+		print $fh "/>";
+	    }
+	}
+    }
+}
+
+sub intltool_tree_comment
+{
+    my $expat = shift;
+    my $data  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 1 => $data;
+}
+
+sub intltool_tree_cdatastart
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    push @$clist, 0 => $expat->original_string();
+}
+
+sub intltool_tree_cdataend
+{
+    my $expat    = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    $clist->[$pos] .= $expat->original_string();
+}
+
+sub intltool_tree_char
+{
+    my $expat = shift;
+    my $text  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    # Use original_string so that we retain escaped entities
+    # in CDATA sections.
+    #
+    if ($pos > 0 and $clist->[$pos - 1] eq '0') {
+        $clist->[$pos] .= $expat->original_string();
+    } else {
+        push @$clist, 0 => $expat->original_string();
+    }
+}
+
+sub intltool_tree_start
+{
+    my $expat    = shift;
+    my $tag      = shift;
+    my @origlist = ();
+
+    # Use original_string so that we retain escaped entities
+    # in attribute values.  We must convert the string to an
+    # @origlist array to conform to the structure of the Tree
+    # Style.
+    #
+    my @original_array = split /\x/, $expat->original_string();
+    my $source         = $expat->original_string();
+
+    # Remove leading tag.
+    #
+    $source =~ s|^\s*<\s*(\S+)||s;
+
+    # Grab attribute key/value pairs and push onto @origlist array.
+    #
+    while ($source)
+    {
+       if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
+           push @origlist, $1;
+           push @origlist, '"' . $2 . '"';
+       }
+       elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
+           push @origlist, $1;
+           push @origlist, "'" . $2 . "'";
+       }
+       else
+       {
+           last;
+       }
+    }
+
+    my $ol = [ { @origlist } ];
+
+    push @{ $expat->{Lists} }, $expat->{Curlist};
+    push @{ $expat->{Curlist} }, $tag => $ol;
+    $expat->{Curlist} = $ol;
+}
+
+sub readXml
+{
+    my $filename = shift || return;
+    if(!-f $filename) {
+        die "ERROR Cannot find filename: $filename\n";
+    }
+
+    my $ret = eval 'require XML::Parser';
+    if(!$ret) {
+        die "You must have XML::Parser installed to run $0\n\n";
+    } 
+    my $xp = new XML::Parser(Style => 'Tree');
+    $xp->setHandlers(Char => \&intltool_tree_char);
+    $xp->setHandlers(Start => \&intltool_tree_start);
+    $xp->setHandlers(CdataStart => \&intltool_tree_cdatastart);
+    $xp->setHandlers(CdataEnd => \&intltool_tree_cdataend);
+    my $tree = $xp->parsefile($filename);
+
+# <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
+# would be:
+# [foo, [{}, head, [{id => "a"}, 0, "Hello ",  em, [{}, 0, "there"]], bar, [{},
+# 0, "Howdy",  ref, [{}]], 0, "do" ] ]
+
+    return $tree;
+}
+
+sub print_header
+{
+    my $infile = shift;
+    my $fh = shift;
+    my $source;
+
+    if(!-f $infile) {
+        die "ERROR Cannot find filename: $infile\n";
+    }
+
+    print $fh qq{<?xml version="1.0" encoding="UTF-8"?>\n};
+    {
+        local $/;
+        open DOCINPUT, "<${FILE}" or die;
+        $source = <DOCINPUT>;
+        close DOCINPUT;
+    }
+    if ($source =~ /(<!DOCTYPE.*\[.*\]\s*>)/s)
+    {
+        print $fh "$1\n";
+    }
+    elsif ($source =~ /(<!DOCTYPE[^>]*>)/s)
+    {
+        print $fh "$1\n";
+    }
+}
+
+sub parseTree
+{
+    my $fh        = shift;
+    my $ref       = shift;
+    my $language  = shift || "";
+
+    my $name = shift @{ $ref };
+    my $cont = shift @{ $ref };
+    
+    while (!$name || "$name" eq "1") {
+        $name = shift @{ $ref };
+        $cont = shift @{ $ref };
+    }
+
+    my $spacepreserve = 0;
+    my $attrs = @{$cont}[0];
+    $spacepreserve = 1 if ((exists $attrs->{"xml:space"}) && ($attrs->{"xml:space"} =~ /^["']?preserve["']?$/));
+
+    traverse($fh, $name, $cont, $language, $spacepreserve);
+}
+
+sub xml_merge_output
+{
+    my $source;
+
+    if ($MULTIPLE_OUTPUT) {
+        for my $lang (sort keys %po_files_by_lang) {
+	    if ( ! -e $lang ) {
+	        mkdir $lang or die "Cannot create subdirectory $lang: $!\n";
+            }
+            open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n";
+            binmode (OUTPUT) if $^O eq 'MSWin32';
+            my $tree = readXml($FILE);
+            print_header($FILE, \*OUTPUT);
+            parseTree(\*OUTPUT, $tree, $lang);
+            close OUTPUT;
+            print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG;
+        }
+    } 
+    open OUTPUT, ">$OUTFILE" or die "Cannot open $OUTFILE: $!\n";
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+    my $tree = readXml($FILE);
+    print_header($FILE, \*OUTPUT);
+    parseTree(\*OUTPUT, $tree);
+    close OUTPUT;
+    print "CREATED $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub keys_merge_translations
+{
+    open INPUT, "<${FILE}" or die;
+    open OUTPUT, ">${OUTFILE}" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while (<INPUT>) 
+    {
+        if (s/^(\s*)_(\w+=(.*))/$1$2/)  
+        {
+	    my $string = $3;
+
+            print OUTPUT;
+
+	    my $non_translated_line = $_;
+
+            for my $lang (sort keys %po_files_by_lang) 
+            {
+		my $translation = $translations{$lang, $string};
+                next if !$translation;
+
+                $_ = $non_translated_line;
+		s/(\w+)=.*/[$lang]$1=$translation/;
+                print OUTPUT;
+            }
+	} 
+        else 
+        {
+            print OUTPUT;
+        }
+    }
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub desktop_merge_translations
+{
+    open INPUT, "<${FILE}" or die;
+    open OUTPUT, ">${OUTFILE}" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while (<INPUT>) 
+    {
+        if (s/^(\s*)_(\w+=(.*))/$1$2/)  
+        {
+	    my $string = $3;
+
+            print OUTPUT;
+
+	    my $non_translated_line = $_;
+
+            for my $lang (sort keys %po_files_by_lang) 
+            {
+                my $translation = $translations{$lang, $string};
+                next if !$translation;
+
+                $_ = $non_translated_line;
+                s/(\w+)=.*/${1}[$lang]=$translation/;
+                print OUTPUT;
+            }
+	} 
+        else 
+        {
+            print OUTPUT;
+        }
+    }
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub schemas_merge_translations
+{
+    my $source;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">$OUTFILE" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    # FIXME: support attribute translations
+
+    # Empty nodes never need translation, so unmark all of them.
+    # For example, <_foo/> is just replaced by <foo/>.
+    $source =~ s|<\s*_($w+)\s*/>|<$1/>|g;
+
+    while ($source =~ s/
+                        (.*?)
+                        (\s+)(<locale\ name="C">(\s*)
+                            (<default>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/default>)?(\s*)
+                            (<short>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/short>)?(\s*)
+                            (<long>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/long>)?(\s*)
+                        <\/locale>)
+                       //sx) 
+    {
+        print OUTPUT $1;
+
+	my $locale_start_spaces = $2 ? $2 : '';
+	my $default_spaces = $4 ? $4 : '';
+	my $short_spaces = $7 ? $7 : '';
+	my $long_spaces = $10 ? $10 : '';
+	my $locale_end_spaces = $13 ? $13 : '';
+	my $c_default_block = $3 ? $3 : '';
+	my $default_string = $6 ? $6 : '';
+	my $short_string = $9 ? $9 : '';
+	my $long_string = $12 ? $12 : '';
+
+	print OUTPUT "$locale_start_spaces$c_default_block";
+
+        $default_string =~ s/\s+/ /g;
+        $default_string = entity_decode($default_string);
+	$short_string =~ s/\s+/ /g;
+	$short_string = entity_decode($short_string);
+	$long_string =~ s/\s+/ /g;
+	$long_string = entity_decode($long_string);
+
+	for my $lang (sort keys %po_files_by_lang) 
+        {
+	    my $default_translation = $translations{$lang, $default_string};
+	    my $short_translation = $translations{$lang, $short_string};
+	    my $long_translation  = $translations{$lang, $long_string};
+
+	    next if (!$default_translation && !$short_translation && 
+                     !$long_translation);
+
+	    print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">";
+
+        print OUTPUT "$default_spaces";    
+
+        if ($default_translation)
+        {
+            $default_translation = entity_encode($default_translation);
+            print OUTPUT "<default>$default_translation</default>";
+        }
+
+	    print OUTPUT "$short_spaces";
+
+	    if ($short_translation)
+	    {
+			$short_translation = entity_encode($short_translation);
+			print OUTPUT "<short>$short_translation</short>";
+	    }
+
+	    print OUTPUT "$long_spaces";
+
+	    if ($long_translation)
+	    {
+			$long_translation = entity_encode($long_translation);
+			print OUTPUT "<long>$long_translation</long>";
+	    }	    
+
+	    print OUTPUT "$locale_end_spaces</locale>";
+        }
+    }
+
+    print OUTPUT $source;
+
+    close OUTPUT;
+}
+
+sub rfc822deb_merge_translations
+{
+    my %encodings = ();
+    for my $lang (keys %po_files_by_lang) {
+        $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang}));
+    }
+
+    my $source;
+
+    $Text::Wrap::huge = 'overflow';
+    $Text::Wrap::break = qr/\n|\s(?=\S)/;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">${OUTFILE}" or die;
+    binmode (OUTPUT) if $^O eq 'MSWin32';
+
+    while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg)
+    {
+	    my $sep = $1;
+	    my $non_translated_line = $3.$4;
+	    my $string = $5;
+	    my $underscore = length($2);
+	    next if $underscore eq 0 && $non_translated_line =~ /^#/;
+	    #  Remove [] dummy strings
+	    my $stripped = $string;
+	    $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2;
+	    $stripped =~ s/\[\s[^\[\]]*\]$//;
+	    $non_translated_line .= $stripped;
+
+	    print OUTPUT $sep.$non_translated_line;
+    
+	    if ($underscore) 
+	    {
+	        my @str_list = rfc822deb_split($underscore, $string);
+
+	        for my $lang (sort keys %po_files_by_lang) 
+                {
+                    my $is_translated = 1;
+                    my $str_translated = '';
+                    my $first = 1;
+                
+                    for my $str (@str_list) 
+                    {
+                        my $translation = $translations{$lang, $str};
+                    
+                        if (!$translation) 
+                        {
+                            $is_translated = 0;
+                            last;
+                        }
+
+	                #  $translation may also contain [] dummy
+                        #  strings, mostly to indicate an empty string
+	                $translation =~ s/\[\s[^\[\]]*\]$//;
+                        
+                        if ($first) 
+                        {
+                            if ($underscore eq 2)
+                            {
+                                $str_translated .= $translation;
+                            }
+                            else
+                            {
+                                $str_translated .=
+                                    Text::Tabs::expand($translation) .
+                                    "\n";
+                            }
+                        } 
+                        else 
+                        {
+                            if ($underscore eq 2)
+                            {
+                                $str_translated .= ', ' . $translation;
+                            }
+                            else
+                            {
+                                $str_translated .= Text::Tabs::expand(
+                                    Text::Wrap::wrap(' ', ' ', $translation)) .
+                                    "\n .\n";
+                            }
+                        }
+                        $first = 0;
+
+                        #  To fix some problems with Text::Wrap::wrap
+                        $str_translated =~ s/(\n )+\n/\n .\n/g;
+                    }
+                    next unless $is_translated;
+
+                    $str_translated =~ s/\n \.\n$//;
+                    $str_translated =~ s/\s+$//;
+
+                    $_ = $non_translated_line;
+                    s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s;
+                    print OUTPUT;
+                }
+	    }
+    }
+    print OUTPUT "\n";
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub rfc822deb_split 
+{
+    # Debian defines a special way to deal with rfc822-style files:
+    # when a value contain newlines, it consists of
+    #   1.  a short form (first line)
+    #   2.  a long description, all lines begin with a space,
+    #       and paragraphs are separated by a single dot on a line
+    # This routine returns an array of all paragraphs, and reformat
+    # them.
+    # When first argument is 2, the string is a comma separated list of
+    # values.
+    my $type = shift;
+    my $text = shift;
+    $text =~ s/^[ \t]//mg;
+    return (split(/, */, $text, 0)) if $type ne 1;
+    return ($text) if $text !~ /\n/;
+
+    $text =~ s/([^\n]*)\n//;
+    my @list = ($1);
+    my $str = '';
+
+    for my $line (split (/\n/, $text)) 
+    {
+        chomp $line;
+        if ($line =~ /^\.\s*$/)
+        {
+            #  New paragraph
+            $str =~ s/\s*$//;
+            push(@list, $str);
+            $str = '';
+        } 
+        elsif ($line =~ /^\s/) 
+        {
+            #  Line which must not be reformatted
+            $str .= "\n" if length ($str) && $str !~ /\n$/;
+            $line =~ s/\s+$//;
+            $str .= $line."\n";
+        } 
+        else 
+        {
+            #  Continuation line, remove newline
+            $str .= " " if length ($str) && $str !~ /\n$/;
+            $str .= $line;
+        }
+    }
+
+    $str =~ s/\s*$//;
+    push(@list, $str) if length ($str);
+
+    return @list;
+}
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-update.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-update.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/intltool-update.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,1064 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Updater
+#
+#  Copyright (C) 2000-2003 Free Software Foundation.
+#
+#  Intltool is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License 
+#  version 2 published by the Free Software Foundation.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#  As a special exception to the GNU General Public License, if you
+#  distribute this file as part of a program that contains a
+#  configuration script generated by Autoconf, you may include it under
+#  the same distribution terms that you use for the rest of that program.
+#
+#  Authors: Kenneth Christiansen <kenneth at gnu.org>
+#           Maciej Stachowiak
+#           Darin Adler <darin at bentspoon.com>
+
+## Release information
+my $PROGRAM = "intltool-update";
+my $VERSION = "0.34.1";
+my $PACKAGE = "intltool";
+
+## Loaded modules
+use strict;
+use Getopt::Long;
+use Cwd;
+use File::Copy;
+use File::Find;
+
+## Scalars used by the option stuff
+my $HELP_ARG 	   = 0;
+my $VERSION_ARG    = 0;
+my $DIST_ARG	   = 0;
+my $POT_ARG	   = 0;
+my $HEADERS_ARG    = 0;
+my $MAINTAIN_ARG   = 0;
+my $REPORT_ARG     = 0;
+my $VERBOSE	   = 0;
+my $GETTEXT_PACKAGE = "";
+my $OUTPUT_FILE    = "";
+
+my @languages;
+my %varhash = ();
+my %po_files_by_lang = ();
+
+# Regular expressions to categorize file types.
+# FIXME: Please check if the following is correct
+
+my $xml_support =
+"xml(?:\\.in)*|".	# http://www.w3.org/XML/ (Note: .in is not required)
+"ui|".			# Bonobo specific - User Interface desc. files
+"lang|".		# ?
+"glade2?(?:\\.in)*|".	# Glade specific - User Interface desc. files (Note: .in is not required)
+"scm(?:\\.in)*|".	# ? (Note: .in is not required)
+"oaf(?:\\.in)+|".	# DEPRECATED: Replaces by Bonobo .server files 
+"etspec|".		# ?
+"server(?:\\.in)+|".	# Bonobo specific
+"sheet(?:\\.in)+|".	# ?
+"schemas(?:\\.in)+|".	# GConf specific
+"pong(?:\\.in)+|".	# DEPRECATED: PONG is not used [by GNOME] any longer.
+"kbd(?:\\.in)+";	# GOK specific. 
+
+my $ini_support =
+"icon(?:\\.in)+|".	# http://www.freedesktop.org/Standards/icon-theme-spec
+"desktop(?:\\.in)+|".	# http://www.freedesktop.org/Standards/menu-spec
+"caves(?:\\.in)+|".	# GNOME Games specific
+"directory(?:\\.in)+|".	# http://www.freedesktop.org/Standards/menu-spec
+"soundlist(?:\\.in)+|".	# GNOME specific
+"keys(?:\\.in)+|".	# GNOME Mime database specific
+"theme(?:\\.in)+";	# http://www.freedesktop.org/Standards/icon-theme-spec
+
+my $buildin_gettext_support = 
+"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
+
+## Always flush buffer when printing
+$| = 1;
+
+## Sometimes the source tree will be rooted somewhere else.
+my $SRCDIR = ".";
+my $POTFILES_in;
+
+$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
+$POTFILES_in = "<$SRCDIR/POTFILES.in";
+
+my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
+
+## Handle options
+GetOptions 
+(
+ "help" 	       => \$HELP_ARG,
+ "version" 	       => \$VERSION_ARG,
+ "dist|d"	       => \$DIST_ARG,
+ "pot|p"	       => \$POT_ARG,
+ "headers|s"	       => \$HEADERS_ARG,
+ "maintain|m"	       => \$MAINTAIN_ARG,
+ "report|r"	       => \$REPORT_ARG,
+ "verbose|x"	       => \$VERBOSE,
+ "gettext-package|g=s" => \$GETTEXT_PACKAGE,
+ "output-file|o=s"     => \$OUTPUT_FILE,
+ ) or &Console_WriteError_InvalidOption;
+
+&Console_Write_IntltoolHelp if $HELP_ARG;
+&Console_Write_IntltoolVersion if $VERSION_ARG;
+
+my $arg_count = ($DIST_ARG > 0)
+    + ($POT_ARG > 0)
+    + ($HEADERS_ARG > 0)
+    + ($MAINTAIN_ARG > 0)
+    + ($REPORT_ARG > 0);
+
+&Console_Write_IntltoolHelp if $arg_count > 1;
+
+# --version and --help don't require a module name
+my $MODULE = $GETTEXT_PACKAGE || &FindPackageName;
+
+if ($POT_ARG)
+{
+    &GenerateHeaders;
+    &GeneratePOTemplate;
+}
+elsif ($HEADERS_ARG)
+{
+    &GenerateHeaders;
+}
+elsif ($MAINTAIN_ARG)
+{
+    &FindLeftoutFiles;
+}
+elsif ($REPORT_ARG)
+{
+    &GenerateHeaders;
+    &GeneratePOTemplate;
+    &Console_Write_CoverageReport;
+}
+elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/)
+{
+    my $lang = $ARGV[0];
+
+    ## Report error if the language file supplied
+    ## to the command line is non-existent
+    &Console_WriteError_NotExisting("$SRCDIR/$lang.po")
+        if ! -s "$SRCDIR/$lang.po";
+
+    if (!$DIST_ARG)
+    {
+	print "Working, please wait..." if $VERBOSE;
+	&GenerateHeaders;
+	&GeneratePOTemplate;
+    }
+    &POFile_Update ($lang, $OUTPUT_FILE);
+    &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE);
+} 
+else 
+{
+    &Console_Write_IntltoolHelp;
+}
+
+exit;
+
+#########
+
+sub Console_Write_IntltoolVersion
+{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+sub Console_Write_IntltoolHelp
+{
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... LANGCODE
+Updates PO template files and merge them with the translations.
+
+Mode of operation (only one is allowed):
+  -p, --pot                   generate the PO template only
+  -s, --headers               generate the header files in POTFILES.in
+  -m, --maintain              search for left out files from POTFILES.in
+  -r, --report                display a status report for the module
+  -d, --dist                  merge LANGCODE.po with existing PO template
+
+Extra options:
+  -g, --gettext-package=NAME  override PO template name, useful with --pot
+  -o, --output-file=FILE      write merged translation to FILE
+  -x, --verbose               display lots of feedback
+      --help                  display this help and exit
+      --version               output version information and exit
+
+Examples of use:
+${PROGRAM} --pot    just create a new PO template
+${PROGRAM} xy       create new PO template and merge xy.po with it
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+sub echo_n
+{
+    my $str = shift;
+    my $ret = `echo "$str"`;
+
+    $ret =~ s/\n$//; # do we need the "s" flag?
+
+    return $ret;
+}
+
+sub POFile_DetermineType ($) 
+{
+   my $type = $_;
+   my $gettext_type;
+
+   my $xml_regex     = "(?:" . $xml_support . ")";
+   my $ini_regex     = "(?:" . $ini_support . ")";
+   my $buildin_regex = "(?:" . $buildin_gettext_support . ")";
+
+   if ($type =~ /\[type: gettext\/([^\]].*)]/) 
+   {
+	$gettext_type=$1;
+   }
+   elsif ($type =~ /schemas(\.in)+$/) 
+   {
+	$gettext_type="schemas";
+   }
+   elsif ($type =~ /glade2?(\.in)*$/) 
+   {
+       $gettext_type="glade";
+   }
+   elsif ($type =~ /scm(\.in)*$/) 
+   {
+       $gettext_type="scheme";
+   }
+   elsif ($type =~ /keys(\.in)+$/) 
+   {
+       $gettext_type="keys";
+   }
+
+   # bucket types
+
+   elsif ($type =~ /$xml_regex$/) 
+   {
+       $gettext_type="xml";
+   }
+   elsif ($type =~ /$ini_regex$/) 
+   { 
+       $gettext_type="ini";
+   }
+   elsif ($type =~ /$buildin_regex$/) 
+   {
+       $gettext_type="buildin";
+   }
+   else
+   { 
+       $gettext_type="unknown"; 
+   }
+
+   return "gettext\/$gettext_type";
+}
+
+sub TextFile_DetermineEncoding ($) 
+{
+    my $gettext_code="ASCII"; # All files are ASCII by default
+    my $filetype=`file $_ | cut -d ' ' -f 2`;
+
+    if ($? eq "0")
+    {
+	if ($filetype =~ /^(ISO|UTF)/)
+	{
+	    chomp ($gettext_code = $filetype);
+	}
+	elsif ($filetype =~ /^XML/)
+	{
+	    $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8
+	}
+    }
+
+    return $gettext_code;
+}
+
+sub isNotValidMissing
+{
+    my ($file) = @_;
+
+    return if $file =~ /^\{arch\}\/.*$/;
+    return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/;
+}
+
+sub FindLeftoutFiles
+{
+    my (@buf_i18n_plain,
+	@buf_i18n_xml,
+	@buf_i18n_xml_unmarked,
+	@buf_i18n_ini,
+	@buf_potfiles,
+	@buf_potfiles_ignore,
+	@buf_allfiles,
+	@buf_allfiles_sorted,
+	@buf_potfiles_sorted
+    );
+
+    ## Search and find all translatable files
+    find sub { 
+	push @buf_i18n_plain,        "$File::Find::name" if /\.($buildin_gettext_support)$/;
+	push @buf_i18n_xml,          "$File::Find::name" if /\.($xml_support)$/;
+	push @buf_i18n_ini,          "$File::Find::name" if /\.($ini_support)$/;
+	push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/;
+	}, "..";
+
+
+    open POTFILES, $POTFILES_in or die "$PROGRAM:  there's no POTFILES.in!\n";
+    @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>;
+    close POTFILES;
+
+    foreach (@buf_potfiles) {
+	s/^\[.*]\s*//;
+    }
+
+    print "Searching for missing translatable files...\n" if $VERBOSE;
+
+    ## Check if we should ignore some found files, when
+    ## comparing with POTFILES.in
+    foreach my $ignore ("POTFILES.skip", "POTFILES.ignore")
+    {
+	(-s $ignore) or next;
+
+	if ("$ignore" eq "POTFILES.ignore")
+	{
+	    print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n".
+		  "content of this file to POTFILES.skip.\n";
+	}
+
+	print "Found $ignore: Ignoring files...\n" if $VERBOSE;
+	open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n";
+	    
+	while (<FILE>)
+	{
+	    push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/;
+	}
+	close FILE;
+
+	@buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles);
+    }
+
+    foreach my $file (@buf_i18n_plain)
+    {
+	my $in_comment = 0;
+	my $in_macro = 0;
+
+	open FILE, "<$file";
+	while (<FILE>)
+	{
+	    # Handle continued multi-line comment.
+	    if ($in_comment)
+	    {
+		next unless s-.*\*/--;
+		$in_comment = 0;
+	    }
+
+	    # Handle continued macro.
+	    if ($in_macro)
+	    {
+		$in_macro = 0 unless /\\$/;
+		next;
+	    }
+
+	    # Handle start of macro (or any preprocessor directive).
+	    if (/^\s*\#/)
+	    {
+		$in_macro = 1 if /^([^\\]|\\.)*\\$/;
+		next;
+	    }
+
+	    # Handle comments and quoted text.
+	    while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
+	    {
+		my $match = $1;
+		if ($match eq "/*")
+		{
+		    if (!s-/\*.*?\*/--)
+		    {
+			s-/\*.*--;
+			$in_comment = 1;
+		    }
+		}
+		elsif ($match eq "//")
+		{
+		    s-//.*--;
+		}
+		else # ' or "
+		{
+		    if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-)
+		    {
+			warn "mismatched quotes at line $. in $file\n";
+			s-$match.*--;
+		    }
+		}
+	    }	    
+
+	    if (/\.GetString ?\(QUOTEDTEXT/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    ## Remove the first 3 chars and add newline
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+
+	    if (/_\(QUOTEDTEXT/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    ## Remove the first 3 chars and add newline
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_xml) 
+    {
+	open FILE, "<$file";
+	
+	while (<FILE>) 
+	{
+	    # FIXME: share the pattern matching code with intltool-extract
+	    if (/\s_[-A-Za-z0-9._:]+\s*=\s*\"([^"]+)\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_ini)
+    {
+	open FILE, "<$file";
+	while (<FILE>) 
+	{
+	    if (/_(.*)=/)
+	    {
+                if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+                    push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+                }
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_xml_unmarked)
+    {
+        if (defined isNotValidMissing (unpack("x3 A*", $file))) {
+            push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+        }
+    }
+
+
+    @buf_allfiles_sorted = sort (@buf_allfiles);
+    @buf_potfiles_sorted = sort (@buf_potfiles);
+
+    my %in2;
+    foreach (@buf_potfiles_sorted) 
+    {
+	$in2{$_} = 1;
+    }
+
+    my @result;
+
+    foreach (@buf_allfiles_sorted)
+    {
+	if (!exists($in2{$_}))
+	{
+	    push @result, $_
+	}
+    }
+
+    my @buf_potfiles_notexist;
+
+    foreach (@buf_potfiles_sorted)
+    {
+	chomp (my $dummy = $_);
+	if ("$dummy" ne "" and ! -f "../$dummy")
+	{
+	    push @buf_potfiles_notexist, $_;
+	}
+    }
+
+    ## Save file with information about the files missing
+    ## if any, and give information about this procedure.
+    if (@result + @buf_potfiles_notexist > 0)
+    {
+	if (@result) 
+	{
+	    print "\n" if $VERBOSE;
+	    unlink "missing";
+	    open OUT, ">missing";
+	    print OUT @result;
+	    close OUT;
+	    warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n".
+	         "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n";
+	    print STDERR @result, "\n";
+	    warn "If some of these files are left out on purpose then please add them to\n".
+		 "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n".
+		 "of left out files has been written in the current directory.\n";
+	}
+	if (@buf_potfiles_notexist)
+	{
+	    unlink "notexist";
+	    open OUT, ">notexist";
+	    print OUT @buf_potfiles_notexist;
+	    close OUT;
+	    warn "\n" if ($VERBOSE or @result);
+	    warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";
+	    warn @buf_potfiles_notexist, "\n";
+	    warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n".
+		 "containing this list of absent files has been written in the current directory.\n";
+	}
+    }
+
+    ## If there is nothing to complain about, notify the user
+    else {
+	print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE;
+    }
+}
+
+sub Console_WriteError_InvalidOption
+{
+    ## Handle invalid arguments
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit 1;
+}
+
+sub GenerateHeaders
+{
+    my $EXTRACT = "@INTLTOOL_EXTRACT@";
+    chomp $EXTRACT;
+
+    $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
+
+    ## Generate the .h header files, so we can allow glade and
+    ## xml translation support
+    if (! -x "$EXTRACT")
+    {
+	print STDERR "\n *** The intltool-extract script wasn't found!"
+	     ."\n *** Without it, intltool-update can not generate files.\n";
+	exit;
+    }
+    else
+    {
+	open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n";
+	
+	while (<FILE>) 
+	{
+	   chomp;
+	   next if /^\[\s*encoding/;
+
+	   ## Find xml files in POTFILES.in and generate the
+	   ## files with help from the extract script
+
+	   my $gettext_type= &POFile_DetermineType ($1);
+
+	   if (/\.($xml_support|$ini_support)$/ || /^\[/)
+	   {
+	       s/^\[[^\[].*]\s*//;
+
+	       my $filename = "../$_";
+
+	       if ($VERBOSE)
+	       {
+		   system ($EXTRACT, "--update", "--srcdir=$SRCDIR",
+			   "--type=$gettext_type", $filename);
+	       } 
+	       else 
+	       {
+	 	   system ($EXTRACT, "--update", "--type=$gettext_type", 
+			   "--srcdir=$SRCDIR", "--quiet", $filename);
+	       }
+	   }
+       }
+       close FILE;
+   }
+}
+
+#
+# Generate .pot file from POTFILES.in
+#
+sub GeneratePOTemplate
+{
+    my $XGETTEXT = $ENV{"XGETTEXT"} || "/usr/bin/xgettext";
+    my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
+    chomp $XGETTEXT;
+
+    if (! -x $XGETTEXT)
+    {
+	print STDERR " *** xgettext is not found on this system!\n".
+		     " *** Without it, intltool-update can not extract strings.\n";
+	exit;
+    }
+
+    print "Building $MODULE.pot...\n" if $VERBOSE;
+
+    open INFILE, $POTFILES_in;
+    unlink "POTFILES.in.temp";
+    open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing");
+
+    my $gettext_support_nonascii = 0;
+
+    # checks for GNU gettext >= 0.12
+    my $dummy = `$XGETTEXT --version --from-code=UTF-8 >$devnull 2>$devnull`;
+    if ($? == 0)
+    {
+	$gettext_support_nonascii = 1;
+    }
+    else
+    {
+	# urge everybody to upgrade gettext
+	print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n".
+		     "         strings. That means you should install a version of gettext\n".
+		     "         that supports non-ASCII strings (such as GNU gettext >= 0.12),\n".
+		     "         or have to let non-ASCII strings untranslated. (If there is any)\n";
+    }
+
+    my $encoding = "ASCII";
+    my $forced_gettext_code;
+    my @temp_headers;
+    my $encoding_problem_is_reported = 0;
+
+    while (<INFILE>) 
+    {
+	next if (/^#/ or /^\s*$/);
+
+	chomp;
+
+	my $gettext_code;
+
+	if (/^\[\s*encoding:\s*(.*)\s*\]/)
+	{
+	    $forced_gettext_code=$1;
+	}
+	elsif (/\.($xml_support|$ini_support)$/ || /^\[/)
+	{
+	    s/^\[.*]\s*//;
+            print OUTFILE "../$_.h\n";
+	    push @temp_headers, "../$_.h";
+	    $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+	} 
+	else 
+	{
+	    if ($SRCDIR eq ".") {
+	        print OUTFILE "../$_\n";
+	    } else {
+	        print OUTFILE "$SRCDIR/../$_\n";
+	    }
+	    $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+	}
+
+	next if (! $gettext_support_nonascii);
+
+	if (defined $forced_gettext_code)
+	{
+	    $encoding=$forced_gettext_code;
+	}
+	elsif (defined $gettext_code and "$encoding" ne "$gettext_code")
+	{
+	    if ($encoding eq "ASCII")
+	    {
+		$encoding=$gettext_code;
+	    }
+	    elsif ($gettext_code ne "ASCII")
+	    {
+		# Only report once because the message is quite long
+		if (! $encoding_problem_is_reported)
+		{
+		    print STDERR "WARNING: You should use the same file encoding for all your project files,\n".
+				 "         but $PROGRAM thinks that most of the source files are in\n".
+				 "         $encoding encoding, while \"$_\" is (likely) in\n".
+		       		 "         $gettext_code encoding. If you are sure that all translatable strings\n".
+				 "         are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n".
+				 "         line to POTFILES.in:\n\n".
+				 "                 [encoding: UTF-8]\n\n".
+				 "         and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n".
+				 "(such warning message will only be reported once.)\n";
+		    $encoding_problem_is_reported = 1;
+		}
+	    }
+	}
+    }
+
+    close OUTFILE;
+    close INFILE;
+
+    unlink "$MODULE.pot";
+    my @xgettext_argument=("$XGETTEXT",
+			   "--add-comments",
+			   "--directory\=\.",
+			   "--output\=$MODULE\.pot",
+			   "--files-from\=\.\/POTFILES\.in\.temp");
+    my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
+    push @xgettext_argument, $XGETTEXT_KEYWORDS;
+    push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
+    push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
+    my $xgettext_command = join ' ', @xgettext_argument;
+
+    # intercept xgettext error message
+    print "Running $xgettext_command\n" if $VERBOSE;
+    my $xgettext_error_msg = `$xgettext_command 2>\&1`;
+    my $command_failed = $?;
+
+    unlink "POTFILES.in.temp";
+
+    print "Removing generated header (.h) files..." if $VERBOSE;
+    unlink foreach (@temp_headers);
+    print "done.\n" if $VERBOSE;
+
+    if (! $command_failed)
+    {
+	if (! -e "$MODULE.pot")
+	{
+	    print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE;
+	}
+	else
+	{
+	    print "Wrote $MODULE.pot\n" if $VERBOSE;
+	}
+    }
+    else
+    {
+	if ($xgettext_error_msg =~ /--from-code/)
+	{
+	    # replace non-ASCII error message with a more useful one.
+	    print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n".
+			 "       string marked for translation. Please make sure that all strings marked\n".
+			 "       for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n".
+			 "       following line to POTFILES.in and rerun $PROGRAM:\n\n".
+			 "           [encoding: UTF-8]\n\n";
+	}
+	else
+	{
+	    print STDERR "$xgettext_error_msg";
+	    if (-e "$MODULE.pot")
+	    {
+		# is this possible?
+		print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n".
+			     "       Please consult error message above if there is any.\n";
+	    }
+	    else
+	    {
+		print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n".
+			     "       error message above if there is any.\n";
+	    }
+	}
+	exit (1);
+    }
+}
+
+sub POFile_Update
+{
+    -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
+
+    my $MSGMERGE = $ENV{"MSGMERGE"} || "/usr/bin/msgmerge";
+    my ($lang, $outfile) = @_;
+
+    print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE;
+
+    my $infile = "$SRCDIR/$lang.po";
+    $outfile = "$SRCDIR/$lang.po" if ($outfile eq "");
+
+    # I think msgmerge won't overwrite old file if merge is not successful
+    system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot");
+}
+
+sub Console_WriteError_NotExisting
+{
+    my ($file) = @_;
+
+    ## Report error if supplied language file is non-existing
+    print STDERR "$PROGRAM: $file does not exist!\n";
+    print STDERR "Try '$PROGRAM --help' for more information.\n";
+    exit;
+}
+
+sub GatherPOFiles
+{
+    my @po_files = glob ("./*.po");
+
+    @languages = map (&POFile_GetLanguage, @po_files);
+
+    foreach my $lang (@languages) 
+    {
+	$po_files_by_lang{$lang} = shift (@po_files);
+    }
+}
+
+sub POFile_GetLanguage ($)
+{
+    s/^(.*\/)?(.+)\.po$/$2/;
+    return $_;
+}
+
+sub Console_Write_TranslationStatus
+{
+    my ($lang, $output_file) = @_;
+    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt";
+
+    $output_file = "$SRCDIR/$lang.po" if ($output_file eq "");
+
+    system ("$MSGFMT", "-o", "$devnull", "--verbose", $output_file);
+}
+
+sub Console_Write_CoverageReport
+{
+    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/bin/msgfmt";
+
+    &GatherPOFiles;
+
+    foreach my $lang (@languages) 
+    {
+	print "$lang: ";
+	&POFile_Update ($lang, "");
+    }
+
+    print "\n\n * Current translation support in $MODULE \n\n";
+
+    foreach my $lang (@languages)
+    {
+	print "$lang: ";
+	system ("$MSGFMT", "-o", "$devnull", "--verbose", "$SRCDIR/$lang.po");
+    }
+}
+
+sub SubstituteVariable
+{
+    my ($str) = @_;
+    
+    # always need to rewind file whenever it has been accessed
+    seek (CONF, 0, 0);
+
+    # cache each variable. varhash is global to we can add
+    # variables elsewhere.
+    while (<CONF>)
+    {
+	if (/^(\w+)=(.*)$/)
+	{
+	    ($varhash{$1} = $2) =~  s/^["'](.*)["']$/$1/;
+	}
+    }
+    
+    if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
+    {
+	my $rest = $3;
+	my $untouched = $1;
+	my $sub = $varhash{$2};
+	
+	return SubstituteVariable ("$untouched$sub$rest");
+    }
+    
+    # We're using Perl backticks ` and "echo -n" here in order to 
+    # expand any shell escapes (such as backticks themselves) in every variable
+    return echo_n ($str);
+}
+
+sub CONF_Handle_Open
+{
+    my $base_dirname = getcwd();
+    $base_dirname =~ s at .*/@@;
+
+    my ($conf_in, $src_dir);
+
+    if ($base_dirname =~ /^po(-.+)?$/) 
+    {
+	if (-f "Makevars") 
+	{
+	    my $makefile_source;
+
+	    local (*IN);
+	    open (IN, "<Makevars") || die "can't open Makevars: $!";
+
+	    while (<IN>) 
+	    {
+		if (/^top_builddir[ \t]*=/) 
+		{
+		    $src_dir = $_;
+		    $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+		    chomp $src_dir;
+                    if (-f "$src_dir" . "/configure.ac") {
+                        $conf_in = "$src_dir" . "/configure.ac" . "\n";
+                    } else {
+                        $conf_in = "$src_dir" . "/configure.in" . "\n";
+                    }
+		    last;
+		}
+	    }
+	    close IN;
+
+	    $conf_in || die "Cannot find top_builddir in Makevars.";
+	}
+	elsif (-f "../configure.ac") 
+	{
+	    $conf_in = "../configure.ac";
+	} 
+	elsif (-f "../configure.in") 
+	{
+	    $conf_in = "../configure.in";
+	} 
+	else 
+	{
+	    my $makefile_source;
+
+	    local (*IN);
+	    open (IN, "<Makefile") || return;
+
+	    while (<IN>) 
+	    {
+		if (/^top_srcdir[ \t]*=/) 
+		{
+		    $src_dir = $_;		    
+		    $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+		    chomp $src_dir;
+		    $conf_in = "$src_dir" . "/configure.in" . "\n";
+
+		    last;
+		}
+	    }
+	    close IN;
+
+	    $conf_in || die "Cannot find top_srcdir in Makefile.";
+	}
+
+	open (CONF, "<$conf_in");
+    }
+    else
+    {
+	print STDERR "$PROGRAM: Unable to proceed.\n" .
+		     "Make sure to run this script inside the po directory.\n";
+	exit;
+    }
+}
+
+sub FindPackageName
+{
+    my $version;
+    my $domain = &FindMakevarsDomain;
+    my $name = $domain || "untitled";
+
+    &CONF_Handle_Open;
+
+    my $conf_source; {
+	local (*IN);
+	open (IN, "<&CONF") || return $name;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$conf_source = <IN>;
+	close IN;
+    }
+
+    # priority for getting package name:
+    # 1. GETTEXT_PACKAGE
+    # 2. first argument of AC_INIT (with >= 2 arguments)
+    # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument)
+
+    # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m 
+    # the \s makes this not work, why?
+    if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m)
+    {
+	($name, $version) = ($1, $2);
+	$name    =~ s/[\[\]\s]//g;
+	$version =~ s/[\[\]\s]//g;
+	$varhash{"PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE"} = $name;
+	$varhash{"PACKAGE_VERSION"} = $version;
+	$varhash{"VERSION"} = $version;
+    }
+    
+    if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) 
+    {
+	($name, $version) = ($1, $2);
+	$name    =~ s/[\[\]\s]//g;
+	$version =~ s/[\[\]\s]//g;
+	$varhash{"PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE"} = $name;
+	$varhash{"PACKAGE_VERSION"} = $version;
+	$varhash{"VERSION"} = $version;
+    }
+
+    # \s makes this not work, why?
+    $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m;
+    
+    # m4 macros AC_PACKAGE_NAME, AC_PACKAGE_VERSION etc. have same value
+    # as corresponding $PACKAGE_NAME, $PACKAGE_VERSION etc. shell variables.
+    $name =~ s/\bAC_PACKAGE_/\$PACKAGE_/g;
+
+    $name = $domain if $domain;
+
+    $name = SubstituteVariable ($name);
+    $name =~ s/^["'](.*)["']$/$1/;
+
+    return $name if $name;
+}
+
+
+sub FindPOTKeywords
+{
+
+    my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_";
+    my $varname = "XGETTEXT_OPTIONS";
+    my $make_source; {
+	local (*IN);
+	open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$make_source = <IN>;
+	close IN;
+    }
+
+    $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m;
+    
+    return $keywords;
+}
+
+sub FindMakevarsDomain
+{
+
+    my $domain = "";
+    my $makevars_source; { 
+	local (*IN);
+	open (IN, "<Makevars") || return $domain;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$makevars_source = <IN>;
+	close IN;
+    }
+
+    $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m;
+    $domain =~ s/^\s+//;
+    $domain =~ s/\s+$//;
+    
+    return $domain;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.pc.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.pc.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.pc.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libgsf-1
+Description: A library for reading and writing structured files (eg MS OLE and Zip)
+Version: @VERSION@
+Requires: glib-2.0 gobject-2.0 libxml-2.0
+Libs: -L${libdir} -lgsf-1
+Cflags: -I${includedir}/libgsf-1

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.spec.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.spec.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-1.spec.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,83 @@
+%define name libgsf
+%define version @VERSION@
+%define release 1
+%define prefix /usr
+
+Summary: GNOME Structured File library
+
+Name: %{name}
+Version: %{version}
+Release: %{release}
+Group: System Environment/Libraries
+License: LGPL
+
+Source: ftp://ftp.gnome.org/pub/GNOME/unstable/sources/libgsf/%{name}-%{version}.tar.gz
+Buildroot: /var/tmp/%{name}-%{version}-%{release}-root
+URL: http://www.gnumeric.org
+
+Requires: glib2 >= 2.6.0
+BuildRequires: glib2-devel >= 2.6.0
+
+%description
+A library for reading and writing structured files (eg MS OLE and Zip)
+
+%package devel
+Summary: Support files necessary to compile applications with libgsf.
+Group: Development/Libraries
+Requires: libgsf
+
+%description devel
+Libraries, headers, and support files necessary to compile applications using libgsf.
+
+%prep
+
+%setup
+
+%build
+%ifarch alpha
+  MYARCH_FLAGS="--host=alpha-redhat-linux"
+%endif
+
+if [ ! -f configure ]; then
+CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%{prefix}
+else
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix}
+fi
+
+if [ "$SMP" != "" ]; then
+  (make "MAKE=make -k -j $SMP"; exit 0)
+  make
+else
+  make
+fi
+
+%install
+if [ -d $RPM_BUILD_ROOT ]; then rm -r $RPM_BUILD_ROOT; fi
+mkdir -p $RPM_BUILD_ROOT%{prefix}
+make prefix=$RPM_BUILD_ROOT%{prefix} install
+
+%files
+%defattr(644,root,root,755)
+%doc AUTHORS COPYING README
+%{prefix}/lib/lib*.so*
+
+%files devel
+%defattr(644,root,root,755)
+%{prefix}/lib/*a
+%{prefix}/lib/pkgconfig/libgsf-*1.pc
+%{prefix}/include/libgsf-1/*
+%{prefix}/share/doc/libgsf/html/*
+
+%clean
+rm -r $RPM_BUILD_ROOT
+
+%changelog
+* Tue May 13 2003 Rui M. Seabra <rms at 407.org>
+- fix spec to reflect current stat of the build
+
+* Tue Jun 18 2002 Rui M. Seabra <rms at 407.org>
+- set permission correctly
+- fix common mistake of Copyright flag into License flag.
+
+* Thu May 23 2002 Jody Goldberg <jody at gnome.org>
+- Initial version

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.pc.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.pc.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.pc.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libgsf-gnome-1
+Description: GNOME specific extensions to libgsf
+Version: @VERSION@
+Requires: libgsf-1
+Libs: -L${libdir} -lgsf-gnome-1
+Cflags:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.spec.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.spec.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-gnome-1.spec.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,80 @@
+%define name libgsf-1
+%define version @VERSION@
+%define release 1
+%define prefix /usr
+
+Summary: GNOME specific extensions to libgsf
+
+Name: %{name}
+Version: %{version}
+Release: %{release}
+Group: System Environment/Libraries
+License: LGPL
+
+Source: ftp://ftp.gnome.org/pub/GNOME/unstable/sources/libgsf/libgsf-%{version}.tar.gz
+Buildroot: /var/tmp/%{name}-%{version}-%{release}-root
+URL: http://www.gnumeric.org
+
+Requires: libgsf-1 >= 1.3.0 gnome-vfs >= 2.0.0
+
+%description
+GNOME specific extensions to support bonobo and gnome-vfs
+
+%package devel
+Summary: Support files necessary to compile applications with libgsf-gnome.
+Group: Development/Libraries
+Requires: libgsf-gnome-1
+
+%description devel
+Libraries, headers, and support files necessary to compile applications using
+GNOME specific extensions to libgsf.
+
+%prep
+%setup -n libgsf-%{version} 
+
+%build
+%ifarch alpha
+  MYARCH_FLAGS="--host=alpha-redhat-linux"
+%endif
+
+if [ ! -f configure ]; then
+CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%{prefix}
+else
+CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix}
+fi
+
+if [ "$SMP" != "" ]; then
+  (make "MAKE=make -k -j $SMP"; exit 0)
+  make
+else
+  make
+fi
+
+%install
+if [ -d $RPM_BUILD_ROOT ]; then rm -r $RPM_BUILD_ROOT; fi
+mkdir -p $RPM_BUILD_ROOT%{prefix}
+make prefix=$RPM_BUILD_ROOT%{prefix} install
+
+%files
+%defattr(644,root,root,755)
+%doc AUTHORS COPYING README
+%{prefix}/lib/lib*.so.*
+
+%files devel
+%defattr(644,root,root,755)
+%{prefix}/lib/lib*.so
+%{prefix}/lib/*a
+%{prefix}/include/libgsf-1/*
++%{prefix}/lib/pkgconfig/*
++%{prefix}/share/doc/*
+
+%clean
+rm -r $RPM_BUILD_ROOT
+
+%changelog
+* Sun Aug 03 2003 Joseph Frazee <jfrazee at ling.osu.edu>
+- Fixed some things, %{setup} -n libgsf-%{version} and removed %files devel 
+  %{prefix}/lib/*.sh and %{prefix}/share/doc/gsf/*
+
+* Thu Aug 15 2002 Jody Goldberg <jody at gnome.org>
+- Initial version

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-win32-1.pc.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-win32-1.pc.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-win32-1.pc.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libgsf-gnome-1
+Description: Win32 specific extensions to libgsf
+Version: @VERSION@
+Requires: libgsf-1
+Libs: -L${libdir} -lgsf-win32-1
+Cflags:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-zip.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-zip.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-zip.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# Build runtime and developer zipfiles for libgsf on Win32.
+
+ZIP=/tmp/libgsf- at VERSION@.zip
+DEVZIP=/tmp/libgsf-dev- at VERSION@.zip
+
+cd @prefix@
+rm $ZIP
+
+DLLDIR=lib
+[ -f bin/libgsf-1- at LIBGSF_MAJOR_VERSION@.dll ] && DLLDIR=bin
+
+zip $ZIP -@ <<EOF
+$DLLDIR/libgsf-1- at LIBGSF_MAJOR_VERSION@.dll
+EOF
+
+rm $DEVZIP
+zip -r $DEVZIP -@ <<EOF
+include/libgsf-1
+lib/liblibgsf-1.dll.a
+lib/pkgconfig/libgsf-1.pc
+EOF


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/libgsf-zip.in
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/ltmain.sh
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/ltmain.sh	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/ltmain.sh	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,6426 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.6
+TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42) Debian$Rev: 224 $"
+
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+ *) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+: ${IFS=" 	
+"}
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid () {
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag () {
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2003  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $EXIT_SUCCESS
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $EXIT_SUCCESS
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $EXIT_SUCCESS
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case "$arg_mode" in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $srcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	status=$?
+	if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $srcfile"
+      else
+	command="$base_compile $srcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # gcc -m* arguments should be passed to the linker via $compiler_flags
+      # in order to pass architecture information to the linker
+      # (e.g. 32 vs 64-bit).  This may also be accomplished via -Wl,-mfoo
+      # but this is not reliable with gcc because gcc may use -mfoo to
+      # select a different linker, different libraries, etc, while
+      # -Wl,-mfoo simply passes -mfoo to the linker.
+      -m*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    if test "$deplibs_check_method" != pass_all; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	else
+	  dir="$ladir/$objdir"
+	  absdir="$abs_ladir/$objdir"
+	  # Remove this search path later
+	  notinst_path="$notinst_path $abs_ladir"
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var"; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $dir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case "$libdir" in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case "$libdir" in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$deplibs $path" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  *)
+	    $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	    $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $LTCC -o conftest conftest.c $deplibs
+	  if test "$?" -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		$LTCC -o conftest conftest.c $i
+		# Did it work?
+		if test "$?" -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "***  make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			tmp_deplibs="$tmp_deplibs $test_deplib"
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	    generated="$generated $gentop"
+
+	    for xlib in $convenience; do
+	      # Extract the objects.
+	      case $xlib in
+	      [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	      *) xabs=`pwd`"/$xlib" ;;
+	      esac
+	      xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	      xdir="$gentop/$xlib"
+
+	      $show "${rm}r $xdir"
+	      $run ${rm}r "$xdir"
+	      $show "$mkdir $xdir"
+	      $run $mkdir "$xdir"
+	      status=$?
+	      if test "$status" -ne 0 && test ! -d "$xdir"; then
+		exit $status
+	      fi
+	      # We will extract separately just the conflicting names and we will no
+	      # longer touch any unique names. It is faster to leave these extract
+	      # automatically by $AR in one run.
+	      $show "(cd $xdir && $AR x $xabs)"
+	      $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+	      if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+		:
+	      else
+		$echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+		$echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+		$AR t "$xabs" | sort | uniq -cd | while read -r count name
+		do
+		  i=1
+		  while test "$i" -le "$count"
+		  do
+		   # Put our $i before any first dot (extension)
+		   # Never overwrite any file
+		   name_to="$name"
+		   while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+		   do
+		     name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+		   done
+		   $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+		   $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+		   i=`expr $i + 1`
+		  done
+		done
+	      fi
+
+	      libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+	    done
+	  fi
+	fi
+
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$save_output-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*"` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$save_output-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$save_output-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadale object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  $show "${rm}r $gentop"
+	  $run ${rm}r "$gentop"
+	  $show "$mkdir $gentop"
+	  $run $mkdir "$gentop"
+	  status=$?
+	  if test "$status" -ne 0 && test ! -d "$gentop"; then
+	    exit $status
+	  fi
+	  generated="$generated $gentop"
+
+	  for xlib in $convenience; do
+	    # Extract the objects.
+	    case $xlib in
+	    [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	    *) xabs=`pwd`"/$xlib" ;;
+	    esac
+	    xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	    xdir="$gentop/$xlib"
+
+	    $show "${rm}r $xdir"
+	    $run ${rm}r "$xdir"
+	    $show "$mkdir $xdir"
+	    $run $mkdir "$xdir"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$xdir"; then
+	      exit $status
+	    fi
+	    # We will extract separately just the conflicting names and we will no
+	    # longer touch any unique names. It is faster to leave these extract
+	    # automatically by $AR in one run.
+	    $show "(cd $xdir && $AR x $xabs)"
+	    $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+	    if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+	      :
+	    else
+	      $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+	      $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+	      $AR t "$xabs" | sort | uniq -cd | while read -r count name
+	      do
+		i=1
+		while test "$i" -le "$count"
+		do
+		 # Put our $i before any first dot (extension)
+		 # Never overwrite any file
+		 name_to="$name"
+		 while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+		 do
+		   name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+		 done
+		 $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+		 $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+		 i=`expr $i + 1`
+		done
+	      done
+	    fi
+
+	    reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+	  done
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$output.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+	      $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    cwrappersource=`$echo ${objdir}/lt-${output}.c`
+	    cwrapper=`$echo ${output}.exe`
+	    $rm $cwrappersource $cwrapper
+	    trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+	  # we should really use a build-platform specific compiler
+	  # here, but OTOH, the wrappers (shell script and this C one)
+	  # are only useful if you want to execute the "real" binary.
+	  # Since the "real" binary is built for $host, then this
+	  # wrapper might as well be built for $host, too.
+	  $run $LTCC -s -o $cwrapper $cwrappersource
+	  ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	$show "${rm}r $gentop"
+	$run ${rm}r "$gentop"
+	$show "$mkdir $gentop"
+	$run $mkdir "$gentop"
+	status=$?
+	if test "$status" -ne 0 && test ! -d "$gentop"; then
+	  exit $status
+	fi
+	generated="$generated $gentop"
+
+	# Add in members from convenience archives.
+	for xlib in $addlibs; do
+	  # Extract the objects.
+	  case $xlib in
+	  [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+	  *) xabs=`pwd`"/$xlib" ;;
+	  esac
+	  xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+	  xdir="$gentop/$xlib"
+
+	  $show "${rm}r $xdir"
+	  $run ${rm}r "$xdir"
+	  $show "$mkdir $xdir"
+	  $run $mkdir "$xdir"
+	  status=$?
+	  if test "$status" -ne 0 && test ! -d "$xdir"; then
+	    exit $status
+	  fi
+	  # We will extract separately just the conflicting names and we will no
+	  # longer touch any unique names. It is faster to leave these extract
+	  # automatically by $AR in one run.
+	  $show "(cd $xdir && $AR x $xabs)"
+	  $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+	  if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
+	    :
+	  else
+	    $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
+	    $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
+	    $AR t "$xabs" | sort | uniq -cd | while read -r count name
+	    do
+	      i=1
+	      while test "$i" -le "$count"
+	      do
+	       # Put our $i before any first dot (extension)
+	       # Never overwrite any file
+	       name_to="$name"
+	       while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
+	       do
+		 name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
+	       done
+	       $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
+	       $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
+	       i=`expr $i + 1`
+	      done
+	    done
+	  fi
+
+	  oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+	done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+	  # GNU ar 2.10+ was changed to match POSIX; thus no paths are
+	  # encoded into archives.  This makes 'ar r' malfunction in
+	  # this piecewise linking case whenever conflicting object
+	  # names appear in distinct ar calls; check, warn and compensate.
+	    if (for obj in $save_oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	    :
+	  else
+	    $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
+	    $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
+	    AR_FLAGS=cq
+	  fi
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*"` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*)
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      save_umask=`umask`
+	      umask 0077
+	      if $mkdir "$tmpdir"; then
+	        umask $save_umask
+	      else
+	        umask $save_umask
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test "$mode" = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool at gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $EXIT_SUCCESS
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/missing
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/missing	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/missing	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,336 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# 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, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+case "$1" in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing 0.4 - GNU automake"
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+  aclocal*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f y.tab.h ]; then
+	echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+       # We have makeinfo, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  tar)
+    shift
+    if test -n "$run"; then
+      echo 1>&2 "ERROR: \`tar' requires --run"
+      exit 1
+    fi
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case "$firstarg" in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case "$firstarg" in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/missing
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/mkinstalldirs
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/mkinstalldirs	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/mkinstalldirs	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,111 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman at prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage" 1>&2
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    fi
+    ;;
+esac
+
+for file
+do
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
+
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+  	errstatus=$lasterr
+      else
+  	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+    	  lasterr=""
+  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+  	  if test ! -z "$lasterr"; then
+  	    errstatus=$lasterr
+  	  fi
+  	fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End:
+# mkinstalldirs ends here


Property changes on: gnucash/branches/goffice-update/lib/libgsf-1.12.3/mkinstalldirs
___________________________________________________________________
Name: svn:executable
   + *

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/ChangeLog
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/ChangeLog	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/ChangeLog	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,20 @@
+2005-09-06  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.12.3
+
+2005-08-13  Morten Welinder <terra at gnome.org>
+
+	* Release 1.12.2
+
+2005-07-19  gettextize  <bug-gnu-gettext at gnu.org>
+
+	* Makefile.in.in: New file, from gettext-0.14.3.
+	* boldquot.sed: New file, from gettext-0.14.3.
+	* en at boldquot.header: New file, from gettext-0.14.3.
+	* en at quot.header: New file, from gettext-0.14.3.
+	* insert-header.sin: New file, from gettext-0.14.3.
+	* quot.sed: New file, from gettext-0.14.3.
+	* remove-potcdate.sin: New file, from gettext-0.14.3.
+	* Rules-quot: New file, from gettext-0.14.3.
+	* POTFILES.in: New file.
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/Makefile.in.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/Makefile.in.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/Makefile.in.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,262 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper at gnu.ai.mit.edu>
+#
+# This file file be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+#
+# - Modified by Owen Taylor <otaylor at redhat.com> to use GETTEXT_PACKAGE
+#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob at ximian.com> to install
+#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey at novell.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = ..
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+localedir = $(libdir)/locale
+gnulocaledir = $(datadir)/locale
+gettextsrcdir = $(datadir)/glib-2.0/gettext/po
+subdir = po
+install_sh = @install_sh@
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+CC = @CC@
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+SOURCES = 
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in \
+$(POFILES) $(SOURCES)
+EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+INSTOBJEXT = @INSTOBJEXT@
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+
+.c.o:
+	$(COMPILE) $<
+
+.po.pox:
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	$(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+	$(MSGFMT) -o $@ $<
+
+.po.gmo:
+	file=`echo $* | sed 's,.*/,,'`.gmo \
+	  && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+	sed -f ../intl/po2msg.sed < $< > $*.msg \
+	  && rm -f $@ && gencat $@ $*.msg
+
+
+all: all- at USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+	$(GENPOT)
+
+install: install-exec install-data
+install-exec:
+install-data: install-data- at USE_NLS@
+install-data-no: all
+install-data-yes: all
+	if test -n "$(MKINSTALLDIRS)"; then \
+	  $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+	else \
+	  $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
+	fi
+	@catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  case "$$cat" in \
+	    *.gmo) destdir=$(gnulocaledir);; \
+	    *)     destdir=$(localedir);; \
+	  esac; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+	  if test -n "$(MKINSTALLDIRS)"; then \
+	    $(MKINSTALLDIRS) $$dir; \
+	  else \
+	    $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
+	  fi; \
+	  if test -r $$cat; then \
+	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+	  else \
+	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	    echo "installing $(srcdir)/$$cat as" \
+		 "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+	  fi; \
+	  if test -r $$cat.m; then \
+	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+	  else \
+	    if test -r $(srcdir)/$$cat.m ; then \
+	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
+		$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	      echo "installing $(srcdir)/$$cat as" \
+		   "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+	    else \
+	      true; \
+	    fi; \
+	  fi; \
+	done
+	if test "$(PACKAGE)" = "glib"; then \
+	  if test -n "$(MKINSTALLDIRS)"; then \
+	    $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
+	  else \
+	    $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
+	  fi; \
+	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+	else \
+	  : ; \
+	fi
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	done
+	if test "$(PACKAGE)" = "glib"; then \
+	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+	fi
+
+check: all $(GETTEXT_PACKAGE).pot
+
+dvi info tags TAGS ID:
+
+mostlyclean:
+	rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+	rm -fr *.o
+	rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+	rm -f Makefile Makefile.in POTFILES
+	rm -f *.mo *.msg *.cat *.cat.m $(GMOFILES)
+
+maintainer-clean: distclean
+	@echo "This command is intended for maintainers to use;"
+	@echo "it deletes files that may require special tools to rebuild."
+	rm -f Makefile.in.in
+
+distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+	dists="$(DISTFILES)"; \
+	extra_dists="$(EXTRA_DISTFILES)"; \
+	for file in $$extra_dists; do \
+	  test -f $$file && dists="$$dists $$file"; \
+	done; \
+	for file in $$dists; do \
+	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+	    || cp -p $(srcdir)/$$file $(distdir); \
+	done
+
+update-po: Makefile
+	$(MAKE) $(GETTEXT_PACKAGE).pot
+	tmpdir=`pwd`; \
+	catalogs='$(CATALOGS)'; \
+	for cat in $$catalogs; do \
+	  cat=`basename $$cat`; \
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	  echo "$$lang:"; \
+	  result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+	  if $$result; then \
+	    if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+	      rm -f $$tmpdir/$$lang.new.po; \
+            else \
+	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	        :; \
+	      else \
+	        echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	        rm -f $$tmpdir/$$lang.new.po; \
+	        exit 1; \
+	      fi; \
+	    fi; \
+	  else \
+	    echo "msgmerge for $$cat failed!"; \
+	    rm -f $$tmpdir/$$lang.new.po; \
+	  fi; \
+	done
+
+# POTFILES is created from POTFILES.in by stripping comments, empty lines
+# and Intltool tags (enclosed in square brackets), and appending a full
+# relative path to them
+POTFILES: POTFILES.in
+	( posrcprefix='$(top_srcdir)/'; \
+	  rm -f $@-t $@ \
+	    && (sed -e '/^#/d' 					\
+		    -e 's/^[[].*] *//' 				\
+		    -e '/^[ 	]*$$/d' 			\
+		    -e "s@^@	$$posrcprefix@" $(srcdir)/$@.in	\
+		| sed -e '$$!s/$$/ \\/') > $@-t \
+	    && chmod a-w $@-t \
+	    && mv $@-t $@ )
+
+Makefile: Makefile.in.in ../config.status POTFILES
+	cd .. \
+	  && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
+	       $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/POTFILES.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/POTFILES.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/POTFILES.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,7 @@
+# List of source files which contain translatable strings.
+# Please keep this file sorted alphabetically.
+[encoding: UTF-8]
+gsf/gsf-blob.c
+gsf/gsf-clip-data.c
+gsf/gsf-msole-utils.c
+thumbnailer/gsf-office-thumbnailer.schemas.in

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/es.po
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/es.po	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/po/es.po	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,58 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: libgsf\n"
+"Report-Msgid-Bugs-To: federico at novell.com\n"
+"POT-Creation-Date: 2005-07-19 12:55-0500\n"
+"PO-Revision-Date: 2005-07-19 13:04-0500\n"
+"Last-Translator: Federico Mena-Quintero <federico at novell.com>\n"
+"Language-Team: <es at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:1
+msgid ""
+"Boolean options available, true enables thumbnailing and false disables the "
+"creation of new thumbnails"
+msgstr "Opciones booleanas disponibles:  \"true\" habilita la generación de imágenes en miniatura y \"false\" la deshabilita"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:2
+msgid "Enable thumbnailing of Microsoft Excel documents"
+msgstr "Habilitar miniaturas para documentos de Microsoft Excel"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:3
+msgid "Enable thumbnailing of Microsoft PowerPoint documents"
+msgstr "Habilitar miniaturas para documentos de Microsoft PowerPoint"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:4
+msgid "Enable thumbnailing of Microsoft Word documents"
+msgstr "Habilitar miniaturas para documentos de Microsoft Word"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:5
+msgid "Thumbnail command for Microsoft Excel documents"
+msgstr "Comando para generar miniaturas de documentos de Microsoft Excel"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:6
+msgid "Thumbnail command for Microsoft PowerPoint documents"
+msgstr "Comando para generar miniaturas de archivos de Microsoft PowerPoint"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:7
+msgid "Thumbnail command for Microsoft Word documents"
+msgstr "Comando para generar miniaturas de archivos de Microsoft Word"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:8
+msgid "Valid command plus arguments for the Microsoft Excel thumbnailer."
+msgstr "Comando válido y argumentos para el generador de miniaturas de Microsoft Excel"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:9
+msgid "Valid command plus arguments for the Microsoft PowerPoint thumbnailer."
+msgstr "Comando válido y argumentos para el generador de miniaturas de Microsoft PowerPoint"
+
+#: ../thumbnailer/gsf-office-thumbnailer.schemas.in.h:10
+msgid "Valid command plus arguments for the Microsoft Word thumbnailer."
+msgstr "Comando válido y argumentos para el generador de miniaturas de Microsoft Word"

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/ChangeLog
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/ChangeLog	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/ChangeLog	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,237 @@
+2005-09-06  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.12.3
+
+2005-08-13  Morten Welinder <terra at gnome.org>
+
+	* Release 1.12.2
+
+2005-08-02  Stepan Kasal  <kasal at ucw.cz>
+
+	* README-python: Partial cleanup; in particular, don't speak as if
+	  Automake 1.5 were something new.
+
+	* Makefile.am15: s/INCLUDES/AM_CPPFLAGS/
+	* Makefile.am: A tine change.
+
+	The two Makefile.am's should be merged.  Who is able to do it?
+
+2005-06-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.12.1
+
+2005-05-09  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.12.0
+
+2004-12-06  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.11.1
+
+2004-11-28  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.11.0
+
+2004-08-20  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.10.1
+
+2004-07-03  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.10.0
+
+2004-05-15  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.9.1
+
+2004-05-04  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.9.0
+
+2003-09-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.8.2
+
+2003-06-15  Jon K Hellan  <hellan at acm.org>
+
+	* python/__init__.py: Update to recent conventions.
+
+	* gsfgnome.override: Remove orbit-python.h
+
+2003-06-07  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.8.1
+
+2003-05-11  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.8.0
+
+2003-01-28  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.7.2
+
+2002-12-11  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.6.0
+
+2002-10-26  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.5.0
+
+2002-09-30  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.4.0
+
+2002-09-19  Jon K Hellan  <hellan at acm.org>
+
+	* gsf.defs (GsfIOContext.error_occurred,
+	GsfIOContext.error_message, GsfIOContext.push_error,
+	GsfIOContext.pop_error): Remove.
+	(GsfOutfileZip.set_compression_method): Add.
+
+	* gsf-arg-types.py: Handle GsfZipCompressionMethod.
+
+2002-09-13  Jon K Hellan  <hellan at acm.org>
+
+	* gsf.override (GSF_TYPE_OUTFILE_ZIP): Define.
+	(_wrap_gsf_xml_parser_context): Add.
+
+	* gsf.defs (gsf_outfile_msole_new): Fix typo.
+	(gsf.OutfileZip, gsf_outfile_zip_new): Add.
+	(gsf_xml_parser_context): Add.
+
+	* ex-out-zip.py: Add.
+
+2002-08-25  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.3.0
+
+2002-08-21  Jon K Hellan  <hellan at acm.org>
+
+	* Makefile.am15: Use gsf-arg-types when generating code.
+
+	* gsf-arg-types.py: Added char* variants to gnome-python - remove
+	from here.
+
+2002-08-20  Jon K Hellan  <hellan at acm.org>
+
+	* gsf-arg-types.py: Handle declaration variations not handled in
+	gnome-python.
+
+	* gsfgnome.override (_wrap_gsf_input_bonobo_new): Initialize Gnome
+	VFS.
+
+	* gsfgnome.defs (gsf_input_gnomevfs_new, gsf_output_gnomevfs_new):
+	Fix typo.
+
+2002-08-20  Jon K Hellan  <hellan at acm.org>
+
+	* Makefile.am15 (_gsfmodule_la_LIBADD): -lgsf-gnome-1 should not
+	be included here.
+
+2002-08-19  Jon K Hellan  <hellan at acm.org>
+
+	* gsf.defs (GsfInput.seek, GsfOutput.seek):
+	s/GsfSeekType/GSeekType/.
+
+	* gsf.override (_wrap_gsf_input_seek, _wrap_gsf_output_seek): Ditto.
+
+2002-08-19  Jon K Hellan  <hellan at acm.org>
+
+	* Makefile.am15: Different CFLAGS and LIBADD for gsf and gsf.gnome
+	modules.
+
+	* gsfgnome.override: Change include path for gsf-gnome headers.
+
+2002-08-18  Jon K Hellan  <hellan at acm.org>
+
+	* README-python: Update build procedure description. With todays
+	changes, it's simpler and should actually work.
+
+	* Makefile.am15: Add, so that people who have Automake 1.5 can
+	actually build the thing. See README-python.
+	
+	* .cvsignore: Add gsfgnome.c
+
+2002-08-18  Jon K Hellan  <hellan at acm.org>
+
+	* gfs.defs: Split out bonobo and gnome-vfs dependency into
+	gsf.gnome module.
+
+	* gsfmodule.c: Ditto.
+
+	* gfs.override: Ditto.
+
+	* __init__.py: Added to split into gsf and gsf.gnome modules.
+	
+	* gfsgnome.defs: Ditto.
+
+	* gsfgnomemodule.c: Ditto.
+
+	* gfsgnome.override: Ditto.
+
+2002-08-15  Jon K Hellan  <hellan at acm.org>
+
+	* gsf.defs (GsfInput.size, GsfInput.remaining, GsfInput.tell,
+	GsfOutput.size, GsfOutput.tell): Change return type to gsf_off_t.
+	(GsfInput.seek, GsfOutput.seek): Change type of offset parameter
+	to gsf_off_t, of 'whence' to GsfSeeType.
+	(GsfInput.set_size): Change type of size parameter to gsf_off_t.
+	(gsf_input_memory_new): Change type of length parameter to
+	gsf_off_t.
+	(GsfInfileZip.get_ooname): Remove.
+	(GsfMetaDataBag): Was commented out. Now remove. Original is still
+	in CVS.
+	(GsfOutputBonobo, GsfOutputMemory): Not built in C library, so
+	remove.
+
+	* gsf.override: Include orbit-python.h. Don't ignore io-context.
+	(_wrap_gsf_input_size, _wrap_gsf_input_remaining,
+	_wrap_gsf_input_tell, _wrap_gsf_output_size,
+	_wrap_gsf_output_tell): Check for overflow from gsf_input_size.
+	(wrap_gsf_input_seek, _wrap_gsf_output_seek): Copy offset to a
+	gsf_off_t before calling gsf_input_seek
+	(_wrap_gsf_input_memory_new): Cast to suppress warning.
+	(_wrap_gsf_infile_zip_get_ooname): Remove.
+	(_wrap_gsf_output_tell): Add.
+
+	* gsfmodule.c (initgsf): Suppress warnings.
+
+2002-08-05  Jon K Hellan  <hellan at acm.org>
+
+	* gsf.override: (GsfInputBonobo, GsfInputGnomeVFS, GsfIOContext,
+	GsfOutfile, GsfOutfileMSOle, GsfOutputBonobo, GsfOutputGnomeVFS,
+	GsfOutputMemory, GsfOuputStdio): Add.
+	(_wrap_gsf_input_read): Use correct type of gsf_input_size.
+	(_wrap_gsf_input_seek, _wrap_gsf_input_tell,
+	_wrap_gsf_input_memory_new): Kill warning.
+	(_wrap_gsf_input_stdio_new, _wrap_gsf_input_mmap_new,
+	_wrap_gsf_input_textline_utf8_gets,
+	_wrap_gsf_infile_name_by_index, _wrap_gsf_infile_child_by_name):
+	Remove. Improved pygtk-codegen?
+	(_wrap_gsf_input_bonobo_new, _wrap_gsf_output_size) 
+	(_wrap_gsf_output_seek, _wrap_gsf_output_seek) 
+	(_wrap_gsf_output_write, _wrap_gsf_output_bonobo_new): Add.
+
+	* gsf.defs (GsfInput.uncompress, GsfInfileZip.get_ooname,
+	GsfInputBonobo, GsfInputGnomeVFS, GsfIOContext, GsfOutfile,
+	GsfOutfileMSOle, GsfOutputBonobo, GsfOutputGnomeVFS,
+	GsfOutputMemory, GsfOuputStdio): Add.
+	(GsfInput.name): Correct type.
+	
+2002-08-12  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.2.0
+
+2002-07-21  Jody Goldberg <jody at gnome.org>
+
+	* Release 1.1.0
+
+2002-06-23  Jon K Hellan  <hellan at acm.org>
+
+	* README-python: Update build instructions.
+
+2002-06-20  Jon K Hellan  <hellan at acm.org>
+
+	* README-python: Explain how to build.
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,28 @@
+AM_CPPFLAGS = $(LIBGSF_CFLAGS) $(PYTHON_INCLUDES) $(PYGTK_CFLAGS)
+
+#defsdir = $(datadir)/pygtk/2.0/defs
+
+#defs_DATA = gconf.defs
+
+# libgsf binding
+
+#pyexec_LTLIBRARIES = gsfmodule.la
+lib_LTLIBRARIES = gsfmodule.la
+gsfmodule_la_CFLAGS = $(LIBGSF_CFLAGS)
+gsfmodule_la_LDFLAGS = -module -avoid-version -export-symbols-regex initgsf
+gsfmodule_la_LIBADD = $(LIBGSF_LIBS) -lgsf-1
+gsfmodule_la_SOURCES = gsfmodule.c
+nodist_gsfmodule_la_SOURCES = gsf.c
+CLEANFILES = gsf.c
+EXTRA_DIST = gsf.defs gsf.override  
+
+# Additional dependency:
+gsf.c: gsf.override
+
+.defs.c:
+	(cd $(srcdir) \
+	 && $(PYGTK_CODEGEN) \
+	    --override $*.override \
+	    --prefix py$* $*.defs) > gen-$*.c \
+	&& cp gen-$*.c $*.c \
+	&& rm -f gen-$*.c

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,614 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AM_CPPFLAGS = $(LIBGSF_CFLAGS) $(PYTHON_INCLUDES) $(PYGTK_CFLAGS)
+
+#defsdir = $(datadir)/pygtk/2.0/defs
+
+#defs_DATA = gconf.defs
+
+# libgsf binding
+
+#pyexec_LTLIBRARIES = gsfmodule.la
+lib_LTLIBRARIES = gsfmodule.la
+gsfmodule_la_CFLAGS = $(LIBGSF_CFLAGS)
+gsfmodule_la_LDFLAGS = -module -avoid-version -export-symbols-regex initgsf
+gsfmodule_la_LIBADD = $(LIBGSF_LIBS) -lgsf-1
+gsfmodule_la_SOURCES = gsfmodule.c
+nodist_gsfmodule_la_SOURCES = gsf.c
+CLEANFILES = gsf.c
+EXTRA_DIST = gsf.defs gsf.override  
+subdir = python
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/gsf-config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+gsfmodule_la_DEPENDENCIES =
+am_gsfmodule_la_OBJECTS = gsfmodule_la-gsfmodule.lo
+nodist_gsfmodule_la_OBJECTS = gsfmodule_la-gsf.lo
+gsfmodule_la_OBJECTS = $(am_gsfmodule_la_OBJECTS) \
+	$(nodist_gsfmodule_la_OBJECTS)
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/gsfmodule_la-gsf.Plo \
+ at AMDEP_TRUE@	./$(DEPDIR)/gsfmodule_la-gsfmodule.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(gsfmodule_la_SOURCES)
+DIST_COMMON = $(srcdir)/Makefile.in ChangeLog Makefile.am
+SOURCES = $(gsfmodule_la_SOURCES) $(nodist_gsfmodule_la_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .defs .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  python/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" = "$$p" && dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+gsfmodule.la: $(gsfmodule_la_OBJECTS) $(gsfmodule_la_DEPENDENCIES) 
+	$(LINK) -rpath $(libdir) $(gsfmodule_la_LDFLAGS) $(gsfmodule_la_OBJECTS) $(gsfmodule_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsfmodule_la-gsf.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gsfmodule_la-gsfmodule.Plo at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+gsfmodule_la-gsfmodule.o: gsfmodule.c
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -MT gsfmodule_la-gsfmodule.o -MD -MP -MF "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o gsfmodule_la-gsfmodule.o `test -f 'gsfmodule.c' || echo '$(srcdir)/'`gsfmodule.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo" "$(DEPDIR)/gsfmodule_la-gsfmodule.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gsfmodule.c' object='gsfmodule_la-gsfmodule.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/gsfmodule_la-gsfmodule.Po' tmpdepfile='$(DEPDIR)/gsfmodule_la-gsfmodule.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -c -o gsfmodule_la-gsfmodule.o `test -f 'gsfmodule.c' || echo '$(srcdir)/'`gsfmodule.c
+
+gsfmodule_la-gsfmodule.obj: gsfmodule.c
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -MT gsfmodule_la-gsfmodule.obj -MD -MP -MF "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o gsfmodule_la-gsfmodule.obj `if test -f 'gsfmodule.c'; then $(CYGPATH_W) 'gsfmodule.c'; else $(CYGPATH_W) '$(srcdir)/gsfmodule.c'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo" "$(DEPDIR)/gsfmodule_la-gsfmodule.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gsfmodule.c' object='gsfmodule_la-gsfmodule.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/gsfmodule_la-gsfmodule.Po' tmpdepfile='$(DEPDIR)/gsfmodule_la-gsfmodule.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -c -o gsfmodule_la-gsfmodule.obj `if test -f 'gsfmodule.c'; then $(CYGPATH_W) 'gsfmodule.c'; else $(CYGPATH_W) '$(srcdir)/gsfmodule.c'; fi`
+
+gsfmodule_la-gsfmodule.lo: gsfmodule.c
+ at am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -MT gsfmodule_la-gsfmodule.lo -MD -MP -MF "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o gsfmodule_la-gsfmodule.lo `test -f 'gsfmodule.c' || echo '$(srcdir)/'`gsfmodule.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo" "$(DEPDIR)/gsfmodule_la-gsfmodule.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/gsfmodule_la-gsfmodule.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gsfmodule.c' object='gsfmodule_la-gsfmodule.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/gsfmodule_la-gsfmodule.Plo' tmpdepfile='$(DEPDIR)/gsfmodule_la-gsfmodule.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -c -o gsfmodule_la-gsfmodule.lo `test -f 'gsfmodule.c' || echo '$(srcdir)/'`gsfmodule.c
+
+gsfmodule_la-gsf.o: gsf.c
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -MT gsfmodule_la-gsf.o -MD -MP -MF "$(DEPDIR)/gsfmodule_la-gsf.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o gsfmodule_la-gsf.o `test -f 'gsf.c' || echo '$(srcdir)/'`gsf.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/gsfmodule_la-gsf.Tpo" "$(DEPDIR)/gsfmodule_la-gsf.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/gsfmodule_la-gsf.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gsf.c' object='gsfmodule_la-gsf.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/gsfmodule_la-gsf.Po' tmpdepfile='$(DEPDIR)/gsfmodule_la-gsf.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -c -o gsfmodule_la-gsf.o `test -f 'gsf.c' || echo '$(srcdir)/'`gsf.c
+
+gsfmodule_la-gsf.obj: gsf.c
+ at am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -MT gsfmodule_la-gsf.obj -MD -MP -MF "$(DEPDIR)/gsfmodule_la-gsf.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o gsfmodule_la-gsf.obj `if test -f 'gsf.c'; then $(CYGPATH_W) 'gsf.c'; else $(CYGPATH_W) '$(srcdir)/gsf.c'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/gsfmodule_la-gsf.Tpo" "$(DEPDIR)/gsfmodule_la-gsf.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/gsfmodule_la-gsf.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gsf.c' object='gsfmodule_la-gsf.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/gsfmodule_la-gsf.Po' tmpdepfile='$(DEPDIR)/gsfmodule_la-gsf.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -c -o gsfmodule_la-gsf.obj `if test -f 'gsf.c'; then $(CYGPATH_W) 'gsf.c'; else $(CYGPATH_W) '$(srcdir)/gsf.c'; fi`
+
+gsfmodule_la-gsf.lo: gsf.c
+ at am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -MT gsfmodule_la-gsf.lo -MD -MP -MF "$(DEPDIR)/gsfmodule_la-gsf.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o gsfmodule_la-gsf.lo `test -f 'gsf.c' || echo '$(srcdir)/'`gsf.c; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/gsfmodule_la-gsf.Tpo" "$(DEPDIR)/gsfmodule_la-gsf.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/gsfmodule_la-gsf.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gsf.c' object='gsfmodule_la-gsf.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/gsfmodule_la-gsf.Plo' tmpdepfile='$(DEPDIR)/gsfmodule_la-gsf.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsfmodule_la_CFLAGS) $(CFLAGS) -c -o gsfmodule_la-gsf.lo `test -f 'gsf.c' || echo '$(srcdir)/'`gsf.c
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(libdir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool ctags distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am \
+	uninstall-libLTLIBRARIES
+
+
+# Additional dependency:
+gsf.c: gsf.override
+
+.defs.c:
+	(cd $(srcdir) \
+	 && $(PYGTK_CODEGEN) \
+	    --override $*.override \
+	    --prefix py$* $*.defs) > gen-$*.c \
+	&& cp gen-$*.c $*.c \
+	&& rm -f gen-$*.c
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.defs
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.defs	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.defs	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,578 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object Input
+  (in-module "Gsf")
+  (parent "GObject")
+  (c-name "GsfInput")
+  (gtype-id "GSF_TYPE_INPUT")
+)
+
+(define-object Infile
+  (in-module "Gsf")
+  (parent "GsfInput")
+  (c-name "GsfInfile")
+  (gtype-id "GSF_TYPE_INFILE")
+)
+
+;; Enumerations and flags ...
+
+
+;; From libgsf/gsf/gsf-input.h
+
+(define-method container
+  (of-object "GsfInput")
+  (c-name "gsf_input_container")
+  (return-type "GsfInfile*")
+)
+
+(define-method dup
+  (of-object "GsfInput")
+  (c-name "gsf_input_dup")
+  (return-type "GsfInput*")
+  (parameters
+    '("GError**" "err")
+  )
+)
+
+(define-method size
+  (of-object "GsfInput")
+  (c-name "gsf_input_size")
+  (return-type "gsf_off_t")
+)
+
+(define-method eof
+  (of-object "GsfInput")
+  (c-name "gsf_input_eof")
+  (return-type "gboolean")
+)
+
+(define-method remaining
+  (of-object "GsfInput")
+  (c-name "gsf_input_remaining")
+  (return-type "gsf_off_t")
+)
+
+(define-method tell
+  (of-object "GsfInput")
+  (c-name "gsf_input_tell")
+  (return-type "gsf_off_t")
+)
+
+(define-method seek
+  (of-object "GsfInput")
+  (c-name "gsf_input_seek")
+  (return-type "gboolean")
+  (parameters
+    '("gsf_off_t" "offset")
+    '("GSeekType" "whence")
+  )
+)
+
+(define-method uncompress
+  (of-object "GsfInput")
+  (c-name "gsf_input_uncompress")
+  (return-type "GsfInput*")
+)
+
+(define-function gsf_input_error
+  (c-name "gsf_input_error")
+  (return-type "GQuark")
+)
+
+;; From libgsf/gsf/gsf-input-impl.h
+
+(define-method set_name
+  (of-object "GsfInput")
+  (c-name "gsf_input_set_name")
+  (return-type "gboolean")
+  (parameters
+    '("char-const*" "name")
+  )
+)
+
+(define-method set_container
+  (of-object "GsfInput")
+  (c-name "gsf_input_set_container")
+  (return-type "gboolean")
+  (parameters
+    '("GsfInfile*" "container")
+  )
+)
+
+(define-method set_size
+  (of-object "GsfInput")
+  (c-name "gsf_input_set_size")
+  (return-type "gboolean")
+  (parameters
+    '("gsf_off_t" "size")
+  )
+)
+
+;; From libgsf/gsf/gsf-infile.h
+
+(define-method num_children
+  (of-object "GsfInfile")
+  (c-name "gsf_infile_num_children")
+  (return-type "int")
+)
+
+(define-method child_by_index
+  (of-object "GsfInfile")
+  (c-name "gsf_infile_child_by_index")
+  (return-type "GsfInput*")
+  (parameters
+    '("int" "i")
+  )
+)
+
+(define-method child_by_name
+  (of-object "GsfInfile")
+  (c-name "gsf_infile_child_by_name")
+  (return-type "GsfInput*")
+  (parameters
+    '("char-const*" "name")
+  )
+)
+
+(define-method child_by_vname
+  (of-object "GsfInfile")
+  (c-name "gsf_infile_child_by_vname")
+  (return-type "GsfInput*")
+  (parameters
+    '("char-const*" "name")
+  )
+  (varargs #t)
+)
+
+;; From libgsf/gsf/gsf-infile-impl.h
+
+
+;; Stuff which h2def.py didn't catch
+
+;; gsf-input.h
+
+(define-method name
+  (of-object "GsfInput")
+  (c-name "gsf_input_name")
+  (return-type "char-const*")
+)
+
+(define-method read
+  (of-object "GsfInput")
+  (c-name "gsf_input_read")
+  (return-type "guint8-const*")
+  (caller-owns-return true)
+  (parameters
+    '("size_t" "num_bytes")
+    '("guint8*" "optional_buffer" (default null) (null-ok))
+  )
+)
+
+;; gsf-input-stdio.[ch]
+
+(define-object InputStdio
+  (in-module "Gsf")
+  (parent "GsfInput")
+  (c-name "GsfInputStdio")
+  (gtype-id "GSF_TYPE_INPUT_STDIO")
+)
+
+(define-function gsf_input_stdio_new
+  (c-name "gsf_input_stdio_new")
+  (is-constructor-of "GsfInputStdio")
+  (return-type "GsfInput*")
+  (parameters
+    '("char-const*" "filename")
+    '("GError**" "err")
+  )
+)
+
+;; gsf-input-memory.[ch]
+
+(define-object InputMemory
+  (in-module "Gsf")
+  (parent "GsfInput")
+  (c-name "GsfInputMemory")
+  (gtype-id "GSF_TYPE_INPUT_MEMORY")
+)
+
+(define-function gsf_input_memory_new
+  (c-name "gsf_input_memory_new")
+  (is-constructor-of "GsfInputMemory")
+  (return-type "GsfInput*")
+  (parameters
+    '("guint8-const*" "buf")
+    '("gsf_off_t" "length")
+    '("gboolean" "needs_free")
+  )
+)
+
+(define-function gsf_input_mmap_new
+  (c-name "gsf_input_mmap_new")
+  (return-type "GsfInput*")
+  (parameters
+    '("char-const*" "filename")
+    '("GError**" "err")
+  )
+)
+
+;; gsf-input-textline.[ch]
+
+(define-object InputTextline
+  (in-module "Gsf")
+  (parent "GsfInput")
+  (c-name "GsfInputTextline")
+  (gtype-id "GSF_TYPE_INPUT_TEXTLINE")
+)
+
+(define-function gsf_input_textline_new
+  (c-name "gsf_input_textline_new")
+  (is-constructor-of "GsfInputTextline")
+  (return-type "GsfInputTextline*")
+  (parameters
+    '("GsfInput*" "source")
+  )
+)
+
+(define-method ascii_gets
+  (of-object "GsfInputTextline")
+  (c-name "gsf_input_textline_ascii_gets")
+  (return-type "unsigned-char*")
+  (caller-owns-return true)
+)
+
+(define-method utf8_gets
+  (of-object "GsfInputTextline")
+  (c-name "gsf_input_textline_utf8_gets")
+  (return-type "guint8*")
+  (caller-owns-return true)
+)
+
+;; gsf-input-gzip.[ch]
+
+(define-object InputGZip
+  (in-module "Gsf")
+  (parent "GsfInput")
+  (c-name "GsfInputGZip")
+  (gtype-id "GSF_TYPE_INPUT_GZIP")
+)
+
+(define-function gsf_input_gzip_new
+  (c-name "gsf_input_gzip_new")
+  (is-constructor-of "GsfInputGZip")
+  (return-type "GsfInputGZip*")
+  (parameters
+    '("GsfInput*" "source")
+    '("GError**" "err")
+  )
+)
+
+;; gsf-infile.h
+(define-method name_by_index
+  (of-object "GsfInfile")
+  (c-name "gsf_infile_name_by_index")
+  (return-type "char-const*")
+  (caller-owns-return true)
+  (parameters
+    '("int" "i")
+  )
+)
+
+;; gsf-infile-msole.[ch]
+(define-object InfileMSOle
+  (in-module "Gsf")
+  (parent "GsfInfile")
+  (c-name "GsfInfileMSOle")
+  (gtype-id "GSF_TYPE_INFILE_MS_OLE")
+)
+
+(define-function gsf_infile_msole_new
+  (c-name "gsf_infile_msole_new")
+  (is-constructor-of "GsfInfileMSOle")
+  (return-type "GsfInfile*")
+  (parameters
+    '("GsfInput*" "source")
+    '("GError**" "err")
+  )
+)
+
+;; From gsf-infile-msvba.[ch]
+(define-object InfileMSVBA
+  (in-module "Gsf")
+  (parent "GsfInfile")
+  (c-name "GsfInfileMSVBA")
+  (gtype-id "GSF_TYPE_INFILE_MSVBA")
+)
+
+(define-function gsf_infile_msvba_new
+  (c-name "gsf_infile_msvba_new")
+  (is-constructor-of "GsfInfileMSVBA")
+  (return-type "GsfInfile*")
+  (parameters
+    '("GsfInput*" "source")
+    '("GError**" "err")
+  )
+)
+
+;; gsf-infile-zip.[ch]
+
+(define-object InfileZip
+  (in-module "Gsf")
+  (parent "GsfInfile")
+  (c-name "GsfInfileZip")
+  (gtype-id "GSF_TYPE_INFILE_ZIP")
+)
+
+(define-function gsf_infile_zip_new
+  (c-name "gsf_infile_zip_new")
+  (is-constructor-of "GsfInfileZip")
+  (return-type "GsfInfile*")
+  (parameters
+    '("GsfInput*" "source")
+    '("GError**" "err")
+  )
+)
+
+;; gsf-io-context.[ch]
+
+(define-object IOContext
+  (in-module "Gsf")
+  (parent "GObject")
+  (c-name "GsfIOContext")
+  (gtype-id "GSF_TYPE_IO_CONTEXT")
+)
+
+(define-function gsf_io_context_new
+  (c-name "gsf_io_context_new")
+  (is-constructor-of "GsfIOContext")
+  (return-type "GsfIOContext*")
+)
+
+(define-method clear
+  (of-object "GsfIOContext")
+  (c-name "gsf_io_context_clear")
+  (return-type "none")
+)
+
+(define-method update_progress
+  (of-object "GsfIOContext")
+  (c-name "gsf_io_context_update_progress")
+  (return-type "none")
+  (parameters
+    '("gdouble" "value")
+  )
+)
+
+;; gsf-output.[ch], gsf-output-impl.h
+
+(define-object Output
+  (in-module "Gsf")
+  (parent "GObject")
+  (c-name "GsfOutput")
+  (gtype-id "GSF_TYPE_OUTPUT")
+)
+
+(define-method name
+  (of-object "GsfOutput")
+  (c-name "gsf_output_name")
+  (return-type "char-const*")
+)
+
+(define-method container
+  (of-object "GsfOutput")
+  (c-name "gsf_output_container")
+  (return-type "GsfOutfile*")
+)
+
+(define-method size
+  (of-object "GsfOutput")
+  (c-name "gsf_output_size")
+  (return-type "gsf_off_t")
+)
+
+(define-method close
+  (of-object "GsfOutput")
+  (c-name "gsf_output_close")
+  (return-type "gboolean")
+)
+
+(define-method is_closed
+  (of-object "GsfOutput")
+  (c-name "gsf_output_is_closed")
+  (return-type "gboolean")
+)
+
+(define-method tell
+  (of-object "GsfOutput")
+  (c-name "gsf_output_tell")
+  (return-type "gsf_off_t")
+)
+
+(define-method seek
+  (of-object "GsfOutput")
+  (c-name "gsf_output_seek")
+  (return-type "gboolean")
+  (parameters
+    '("gsf_off_t" "offset")
+    '("GSeekType" "whence")
+  )
+)
+
+(define-method write
+  (of-object "GsfOutput")
+  (c-name "gsf_output_write")
+  (return-type "gboolean")
+  (parameters
+    '("size_t" "num_bytes")
+    '("guint8-const*" "data")
+  )
+)
+
+(define-method wrap
+  (of-object "GsfOutput")
+  (c-name "gsf_output_wrap")
+  (return-type "gboolean")
+  (parameters
+    '("GsfOutput*" "wrapee")
+  )
+)
+
+(define-method unwrap
+  (of-object "GsfOutput")
+  (c-name "gsf_output_unwrap")
+  (return-type "gboolean")
+  (parameters
+    '("GsfOutput*" "wrapee")
+  )
+)
+
+(define-function gsf_output_error
+  (c-name "gsf_output_error")
+  (return-type "GQuark")
+)
+
+
+
+;; gsf-outfile.[ch]
+
+(define-object Outfile
+  (in-module "Gsf")
+  (parent "GsfOutput")
+  (c-name "GsfOutfile")
+  (gtype-id "GSF_TYPE_OUTFILE")
+)
+
+(define-method new_child
+  (of-object "GsfOutfile")
+  (c-name "gsf_outfile_new_child")
+  (return-type "GsfOutput*")
+  (parameters
+    '("char-const*" "name")
+    '("gboolean" "is_dir")
+  )
+)
+
+(define-function gsf_outfile_error
+  (c-name "gsf_outfile_error")
+  (return-type "GQuark")
+)
+
+;; gsf-outfile-msole.[ch]
+
+(define-object OutfileMSOle
+  (in-module "Gsf")
+  (parent "GsfOutfile")
+  (c-name "GsfOutfileMSOle")
+  (gtype-id "GSF_TYPE_OUTFILE_MS_OLE")
+)
+
+(define-function gsf_outfile_msole_new
+  (c-name "gsf_outfile_msole_new")
+  (is-constructor-of "GsfOutfileMSOle")
+  (return-type "GsfOutfile*")
+  (parameters
+    '("GsfOutput*" "sink")
+  )
+)
+
+;; gsf-outfile-zip.[ch]
+
+(define-object OutfileZip
+  (in-module "Gsf")
+  (parent "GsfOutfile")
+  (c-name "GsfOutfileZip")
+  (gtype-id "GSF_TYPE_OUTFILE_ZIP")
+)
+
+(define-function gsf_outfile_zip_new
+  (c-name "gsf_outfile_zip_new")
+  (is-constructor-of "GsfOutfileZip")
+  (return-type "GsfOutfile*")
+  (parameters
+    '("GsfOutput*" "source")
+    '("GError**" "err")
+  )
+)
+
+(define-method set_compression_method
+  (of-object "GsfOutfileZip")
+  (c-name "gsf_outfile_zip_set_compression_method")
+  (return-type "gboolean")
+  (parameters
+    '("GsfZipCompressionMethod" "method")
+  )
+)
+
+;; gsf-output-stdio.[ch]
+
+(define-object OutputStdio
+  (in-module "Gsf")
+  (parent "GsfOutput")
+  (c-name "GsfOutputStdio")
+  (gtype-id "GSF_TYPE_OUTPUT_STDIO")
+)
+
+(define-function gsf_output_stdio_new
+  (c-name "gsf_output_stdio_new")
+  (is-constructor-of "GsfOutputStdio")
+  (return-type "GsfOutput*")
+  (parameters
+    '("char-const*" "filename")
+    '("GError**" "err")
+  )
+)
+
+;; From gsf-output-memory.[hh]
+
+(define-object OutputMemory
+  (in-module "Gsf")
+  (parent "GsfOutput")
+  (c-name "GsfOutputMemory")
+  (gtype-id "GSF_TYPE_OUTPUT_MEMORY")
+)
+
+(define-function gsf_output_memory_new
+  (c-name "gsf_output_memory_new")
+  (is-constructor-of "GsfOutputMemory")
+  (return-type "GsfOutput*")
+)
+
+(define-method get_bytes
+  (of-object "GsfOutputMemory")
+  (c-name "gsf_output_memory_get_bytes")
+  (return-type "none")
+  (parameters
+    '("guint8**" "outbuffer")
+    '("gsf_off_t*" "outlength")
+  )
+)
+
+(define-function gsf_xml_parser_context
+  (c-name "gsf_xml_parser_context")
+  (return-type "xmlParserCtxtPtr")
+  (caller-owns-return true)
+  (parameters
+    '("GsfInput*" "input")
+  )
+)
+

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.override
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.override	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsf.override	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,272 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
+%%
+headers
+#include <Python.h>
+
+#include "pygobject.h"
+#include <gsf/gsf-input.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-input-textline.h>
+#include <gsf/gsf-input-gzip.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+#include <gsf/gsf-infile-msvba.h>
+#include <gsf/gsf-infile-zip.h>
+#include <gsf/gsf-io-context.h>
+#include <gsf/gsf-libxml.h>
+#include <gsf/gsf-output.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-msole.h>
+#include <gsf/gsf-outfile-zip.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-output-memory.h>
+
+#define GSF_TYPE_INPUT GSF_INPUT_TYPE
+#define GSF_TYPE_INPUT_STDIO GSF_INPUT_STDIO_TYPE
+#define GSF_TYPE_INPUT_MEMORY GSF_INPUT_MEMORY_TYPE
+#define GSF_TYPE_INPUT_TEXTLINE GSF_INPUT_TEXTLINE_TYPE
+#define GSF_TYPE_INPUT_GZIP GSF_INPUT_GZIP_TYPE
+#define GSF_TYPE_INFILE GSF_INFILE_TYPE
+#define GSF_TYPE_INFILE_ZIP GSF_INFILE_ZIP_TYPE
+#define GSF_TYPE_INFILE_MSVBA GSF_INFILE_MSVBA_TYPE
+#define GSF_TYPE_INFILE_MS_OLE GSF_INFILE_MSOLE_TYPE
+#define GSF_TYPE_IO_CONTEXT GSF_IO_CONTEXT_TYPE
+#define GSF_TYPE_META_DATA_BAG GSF_METADATA_BAG_TYPE
+#define GSF_TYPE_OUTPUT GSF_OUTPUT_TYPE
+#define GSF_TYPE_OUTFILE GSF_OUTFILE_TYPE
+#define GSF_TYPE_OUTFILE_MS_OLE GSF_OUTFILE_MSOLE_TYPE
+#define GSF_TYPE_OUTFILE_ZIP GSF_OUTFILE_ZIP_TYPE
+#define GSF_TYPE_OUTPUT_MEMORY GSF_OUTPUT_MEMORY_TYPE
+#define GSF_TYPE_OUTPUT_STDIO GSF_OUTPUT_STDIO_TYPE
+%%
+modulename gsf
+%%
+import gobject.GObject as PyGObject_Type
+%%
+ignore-glob
+ _*
+ gsf_input_set_*
+ *_get_type
+ gsf_metadata_bag_*
+ gsf_*_error
+%%
+override gsf_input_size noargs
+static PyObject *
+_wrap_gsf_input_size(PyGObject *self)
+{
+    long ret;
+    gsf_off_t size = gsf_input_size(GSF_INPUT(self->obj));
+
+    ret = size;
+    if (ret != size) {		/* Check for overflow */
+	PyErr_SetString(PyExc_OverflowError, "Size is too large");
+    }
+    return PyInt_FromLong(ret);
+}
+%%
+override gsf_input_read kwargs
+static PyObject *
+_wrap_gsf_input_read(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { (char *) "num_bytes", 
+			      (char *) "optional_buffer", NULL };
+    size_t num_bytes;
+    guint8 *optional_buffer = NULL;
+    guint8 const *ret;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "i|z:GsfInput.read",
+				     kwlist, &num_bytes, &optional_buffer))
+        return NULL;
+    ret = gsf_input_read(GSF_INPUT(self->obj), num_bytes, optional_buffer);
+    if (ret)
+        return PyString_FromStringAndSize(ret, (int) num_bytes);
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+%%
+override gsf_input_seek kwargs
+static PyObject *
+_wrap_gsf_input_seek(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { (char *) "offset", (char *) "whence", NULL };
+    long loffset;
+    gsf_off_t offset;
+    GSeekType whence;
+    gboolean ret;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "li:GsfInput.seek",
+				     kwlist, &loffset, &whence))
+        return NULL;
+    offset = loffset;
+    ret = gsf_input_seek(GSF_INPUT(self->obj), offset, whence);
+    return PyInt_FromLong(ret);
+}
+%%
+override gsf_input_remaining noargs
+static PyObject *
+_wrap_gsf_input_remaining(PyGObject *self)
+{
+    long ret;
+    gsf_off_t remain = gsf_input_remaining(GSF_INPUT(self->obj));
+
+    ret = remain;
+    if (ret != remain) {		/* Check for overflow */
+	PyErr_SetString(PyExc_OverflowError, "Size is too large");
+    }
+    return PyInt_FromLong(ret);
+}
+%%
+override gsf_input_tell noargs
+static PyObject *
+_wrap_gsf_input_tell(PyGObject *self)
+{
+    long ret;
+    gsf_off_t pos = gsf_input_tell(GSF_INPUT(self->obj));
+    ret = pos;
+    if (ret != pos) {		/* Check for overflow */
+	PyErr_SetString(PyExc_OverflowError, "Position is too large");
+    }
+    return PyInt_FromLong(ret);
+}
+%%
+override gsf_input_memory_new kwargs
+static int
+_wrap_gsf_input_memory_new(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = {
+	(char *) "buf", (char *) "needs_free", NULL };
+    guint8 *buf;
+    size_t length;
+    gboolean needs_free;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+				     (char *) "s#i:GsfInputMemory.__init__",
+				     kwlist, &buf, &length, &needs_free))
+        return -1;
+    self->obj = (GObject *)gsf_input_memory_new(buf, (gsf_off_t) length,
+						needs_free);
+
+    if (!self->obj) {
+        PyErr_SetString(PyExc_RuntimeError, "could not create GsfInputMemory object");
+        return -1;
+    }
+    pygobject_register_wrapper((PyObject *)self);
+    return 0;
+}
+%%
+override gsf_input_textline_ascii_gets noargs
+static PyObject *
+_wrap_gsf_input_textline_ascii_gets(PyGObject *self)
+{
+    const unsigned char *ret;
+
+    ret = gsf_input_textline_ascii_gets(GSF_INPUT_TEXTLINE(self->obj));
+    if (ret)
+        return PyString_FromString(ret);
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+%%
+override gsf_output_size noargs
+static PyObject *
+_wrap_gsf_output_size(PyGObject *self)
+{
+    long ret;
+    gsf_off_t size = gsf_output_size(GSF_OUTPUT(self->obj));
+
+    ret = size;
+    if (ret != size) {		/* Check for overflow */
+	PyErr_SetString(PyExc_OverflowError, "Size is too large");
+    }
+    return PyInt_FromLong(ret);
+}
+%%
+override gsf_output_tell noargs
+static PyObject *
+_wrap_gsf_output_tell(PyGObject *self)
+{
+    long ret;
+    gsf_off_t pos = gsf_output_tell(GSF_OUTPUT(self->obj));
+    ret = pos;
+    if (ret != pos) {		/* Check for overflow */
+	PyErr_SetString(PyExc_OverflowError, "Position is too large");
+    }
+    return PyInt_FromLong(ret);
+}
+%%
+override gsf_output_seek kwargs
+static PyObject *
+_wrap_gsf_output_seek(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { (char *) "offset", (char *) "whence", NULL };
+    long loffset;
+    gsf_off_t offset;
+    GSeekType whence;
+    gboolean ret;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+				     (char *) "li:GsfOutput.seek",
+				     kwlist, &loffset, &whence))
+        return NULL;
+    offset = loffset;
+    ret = gsf_output_seek(GSF_OUTPUT(self->obj), offset, whence);
+    return PyInt_FromLong(ret);
+}
+%%
+override gsf_output_write kwargs
+static PyObject *
+_wrap_gsf_output_write(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { (char *) "num_bytes", (char *) "data", NULL };
+    size_t num_bytes, ret;
+    char *data;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+				     (char *) "is:GsfOutput.write",
+				     kwlist, &num_bytes, &data))
+        return NULL;
+    ret = gsf_output_write(GSF_OUTPUT(self->obj), num_bytes, data);
+    return PyInt_FromLong((long) ret);
+}
+%%
+override gsf_output_memory_get_bytes noargs
+static PyObject *
+_wrap_gsf_output_memory_get_bytes(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    guint8 *outbuffer = NULL;
+    gsf_off_t outlength = 0;
+    int       num_bytes;
+    
+    gsf_output_memory_get_bytes (GSF_OUTPUT_MEMORY(self->obj),
+				 &outbuffer, &outlength);
+    if (outbuffer) {
+	num_bytes = outlength;
+	if (num_bytes != outlength) { /* Check for overflow */
+	    PyErr_SetString(PyExc_OverflowError, "Size is too large");
+	}
+	return PyString_FromStringAndSize(outbuffer, (int) num_bytes);
+    } else 
+	return NULL;
+}
+%%
+override gsf_xml_parser_context kwargs
+static PyObject *
+_wrap_gsf_xml_parser_context(PyObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { (char *) "input", NULL };
+    PyGObject *input;
+    xmlParserCtxtPtr ret;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+				     (char *) "O!:gsf_xml_parser_context",
+				     kwlist, &PyGsfInput_Type, &input))
+        return NULL;
+    ret = gsf_xml_parser_context(GSF_INPUT(input->obj));
+    if (ret)
+        return PyCObject_FromVoidPtrAndDesc((void *) ret,
+					    (char *) "xmlParserCtxtPtr",
+					    NULL);
+    Py_INCREF(Py_None);
+    return Py_None;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsfmodule.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsfmodule.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/python/gsfmodule.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,45 @@
+/*
+ * gsfmodule.c
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+/* 
+ * Python bindings for libgsf.
+ */
+
+#include <pygobject.h>
+
+extern PyMethodDef pygsf_functions[];
+extern DL_EXPORT(void) init_gsf (void);
+
+DL_EXPORT(void)
+init_gsf (void)
+{
+	PyObject *m, *d;
+
+	init_pygobject ();
+
+	m = Py_InitModule ((char *) "_gsf", pygsf_functions);
+	d = PyModule_GetDict (m);
+
+	pygsf_register_classes (d);
+	
+	if (PyErr_Occurred ()) {
+		Py_FatalError ((char *) "can't initialise module gsf");
+	}
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,11 @@
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS) $(LIBXML_CFLAGS)
+LDADD = $(top_builddir)/gsf/libgsf-1.la $(LIBGSF_LIBS)
+
+check_PROGRAMS = test-msole1 test-msole2 test-cp-msole test-msvba	\
+		 test-zip1 test-input1 test-cp				\
+		 test-textline test-ls-zip test-cat-zip test-zip2 	\
+		 test-cp-zip test-out-printf test-outmem-printf   	\
+		 test-msole-printf test-zip-out test-zip-out-subdirs    \
+		 test-out-gzip1 test-out-gzip2 test-gzip1 test-gzip2	\
+		 test-out-bzip test-bzip				\
+		 test-dump-msole test-restore-msole test-msvba-zip	# test-xml

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,768 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS) $(LIBXML_CFLAGS)
+LDADD = $(top_builddir)/gsf/libgsf-1.la $(LIBGSF_LIBS)
+
+check_PROGRAMS = test-msole1 test-msole2 test-cp-msole test-msvba	\
+		 test-zip1 test-input1 test-cp				\
+		 test-textline test-ls-zip test-cat-zip test-zip2 	\
+		 test-cp-zip test-out-printf test-outmem-printf   	\
+		 test-msole-printf test-zip-out test-zip-out-subdirs    \
+		 test-out-gzip1 test-out-gzip2 test-gzip1 test-gzip2	\
+		 test-out-bzip test-bzip				\
+		 test-dump-msole test-restore-msole test-msvba-zip	# test-xml
+
+subdir = tests
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/gsf-config.h
+CONFIG_CLEAN_FILES =
+check_PROGRAMS = test-msole1$(EXEEXT) test-msole2$(EXEEXT) \
+	test-cp-msole$(EXEEXT) test-msvba$(EXEEXT) test-zip1$(EXEEXT) \
+	test-input1$(EXEEXT) test-cp$(EXEEXT) test-textline$(EXEEXT) \
+	test-ls-zip$(EXEEXT) test-cat-zip$(EXEEXT) test-zip2$(EXEEXT) \
+	test-cp-zip$(EXEEXT) test-out-printf$(EXEEXT) \
+	test-outmem-printf$(EXEEXT) test-msole-printf$(EXEEXT) \
+	test-zip-out$(EXEEXT) test-zip-out-subdirs$(EXEEXT) \
+	test-out-gzip1$(EXEEXT) test-out-gzip2$(EXEEXT) \
+	test-gzip1$(EXEEXT) test-gzip2$(EXEEXT) test-out-bzip$(EXEEXT) \
+	test-bzip$(EXEEXT) test-dump-msole$(EXEEXT) \
+	test-restore-msole$(EXEEXT) test-msvba-zip$(EXEEXT)
+test_bzip_SOURCES = test-bzip.c
+test_bzip_OBJECTS = test-bzip.$(OBJEXT)
+test_bzip_LDADD = $(LDADD)
+test_bzip_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_bzip_LDFLAGS =
+test_cat_zip_SOURCES = test-cat-zip.c
+test_cat_zip_OBJECTS = test-cat-zip.$(OBJEXT)
+test_cat_zip_LDADD = $(LDADD)
+test_cat_zip_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_cat_zip_LDFLAGS =
+test_cp_SOURCES = test-cp.c
+test_cp_OBJECTS = test-cp.$(OBJEXT)
+test_cp_LDADD = $(LDADD)
+test_cp_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_cp_LDFLAGS =
+test_cp_msole_SOURCES = test-cp-msole.c
+test_cp_msole_OBJECTS = test-cp-msole.$(OBJEXT)
+test_cp_msole_LDADD = $(LDADD)
+test_cp_msole_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_cp_msole_LDFLAGS =
+test_cp_zip_SOURCES = test-cp-zip.c
+test_cp_zip_OBJECTS = test-cp-zip.$(OBJEXT)
+test_cp_zip_LDADD = $(LDADD)
+test_cp_zip_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_cp_zip_LDFLAGS =
+test_dump_msole_SOURCES = test-dump-msole.c
+test_dump_msole_OBJECTS = test-dump-msole.$(OBJEXT)
+test_dump_msole_LDADD = $(LDADD)
+test_dump_msole_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_dump_msole_LDFLAGS =
+test_gzip1_SOURCES = test-gzip1.c
+test_gzip1_OBJECTS = test-gzip1.$(OBJEXT)
+test_gzip1_LDADD = $(LDADD)
+test_gzip1_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_gzip1_LDFLAGS =
+test_gzip2_SOURCES = test-gzip2.c
+test_gzip2_OBJECTS = test-gzip2.$(OBJEXT)
+test_gzip2_LDADD = $(LDADD)
+test_gzip2_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_gzip2_LDFLAGS =
+test_input1_SOURCES = test-input1.c
+test_input1_OBJECTS = test-input1.$(OBJEXT)
+test_input1_LDADD = $(LDADD)
+test_input1_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_input1_LDFLAGS =
+test_ls_zip_SOURCES = test-ls-zip.c
+test_ls_zip_OBJECTS = test-ls-zip.$(OBJEXT)
+test_ls_zip_LDADD = $(LDADD)
+test_ls_zip_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_ls_zip_LDFLAGS =
+test_msole_printf_SOURCES = test-msole-printf.c
+test_msole_printf_OBJECTS = test-msole-printf.$(OBJEXT)
+test_msole_printf_LDADD = $(LDADD)
+test_msole_printf_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_msole_printf_LDFLAGS =
+test_msole1_SOURCES = test-msole1.c
+test_msole1_OBJECTS = test-msole1.$(OBJEXT)
+test_msole1_LDADD = $(LDADD)
+test_msole1_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_msole1_LDFLAGS =
+test_msole2_SOURCES = test-msole2.c
+test_msole2_OBJECTS = test-msole2.$(OBJEXT)
+test_msole2_LDADD = $(LDADD)
+test_msole2_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_msole2_LDFLAGS =
+test_msvba_SOURCES = test-msvba.c
+test_msvba_OBJECTS = test-msvba.$(OBJEXT)
+test_msvba_LDADD = $(LDADD)
+test_msvba_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_msvba_LDFLAGS =
+test_msvba_zip_SOURCES = test-msvba-zip.c
+test_msvba_zip_OBJECTS = test-msvba-zip.$(OBJEXT)
+test_msvba_zip_LDADD = $(LDADD)
+test_msvba_zip_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_msvba_zip_LDFLAGS =
+test_out_bzip_SOURCES = test-out-bzip.c
+test_out_bzip_OBJECTS = test-out-bzip.$(OBJEXT)
+test_out_bzip_LDADD = $(LDADD)
+test_out_bzip_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_out_bzip_LDFLAGS =
+test_out_gzip1_SOURCES = test-out-gzip1.c
+test_out_gzip1_OBJECTS = test-out-gzip1.$(OBJEXT)
+test_out_gzip1_LDADD = $(LDADD)
+test_out_gzip1_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_out_gzip1_LDFLAGS =
+test_out_gzip2_SOURCES = test-out-gzip2.c
+test_out_gzip2_OBJECTS = test-out-gzip2.$(OBJEXT)
+test_out_gzip2_LDADD = $(LDADD)
+test_out_gzip2_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_out_gzip2_LDFLAGS =
+test_out_printf_SOURCES = test-out-printf.c
+test_out_printf_OBJECTS = test-out-printf.$(OBJEXT)
+test_out_printf_LDADD = $(LDADD)
+test_out_printf_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_out_printf_LDFLAGS =
+test_outmem_printf_SOURCES = test-outmem-printf.c
+test_outmem_printf_OBJECTS = test-outmem-printf.$(OBJEXT)
+test_outmem_printf_LDADD = $(LDADD)
+test_outmem_printf_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_outmem_printf_LDFLAGS =
+test_restore_msole_SOURCES = test-restore-msole.c
+test_restore_msole_OBJECTS = test-restore-msole.$(OBJEXT)
+test_restore_msole_LDADD = $(LDADD)
+test_restore_msole_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_restore_msole_LDFLAGS =
+test_textline_SOURCES = test-textline.c
+test_textline_OBJECTS = test-textline.$(OBJEXT)
+test_textline_LDADD = $(LDADD)
+test_textline_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_textline_LDFLAGS =
+test_zip_out_SOURCES = test-zip-out.c
+test_zip_out_OBJECTS = test-zip-out.$(OBJEXT)
+test_zip_out_LDADD = $(LDADD)
+test_zip_out_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_zip_out_LDFLAGS =
+test_zip_out_subdirs_SOURCES = test-zip-out-subdirs.c
+test_zip_out_subdirs_OBJECTS = test-zip-out-subdirs.$(OBJEXT)
+test_zip_out_subdirs_LDADD = $(LDADD)
+test_zip_out_subdirs_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_zip_out_subdirs_LDFLAGS =
+test_zip1_SOURCES = test-zip1.c
+test_zip1_OBJECTS = test-zip1.$(OBJEXT)
+test_zip1_LDADD = $(LDADD)
+test_zip1_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_zip1_LDFLAGS =
+test_zip2_SOURCES = test-zip2.c
+test_zip2_OBJECTS = test-zip2.$(OBJEXT)
+test_zip2_LDADD = $(LDADD)
+test_zip2_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+test_zip2_LDFLAGS =
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/test-bzip.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-cat-zip.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-cp-msole.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-cp-zip.Po ./$(DEPDIR)/test-cp.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-dump-msole.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-gzip1.Po ./$(DEPDIR)/test-gzip2.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-input1.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-ls-zip.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-msole-printf.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-msole1.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-msole2.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-msvba-zip.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-msvba.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-out-bzip.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-out-gzip1.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-out-gzip2.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-out-printf.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-outmem-printf.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-restore-msole.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-textline.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-zip-out-subdirs.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-zip-out.Po \
+ at AMDEP_TRUE@	./$(DEPDIR)/test-zip1.Po ./$(DEPDIR)/test-zip2.Po
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = test-bzip.c test-cat-zip.c test-cp.c test-cp-msole.c \
+	test-cp-zip.c test-dump-msole.c test-gzip1.c test-gzip2.c \
+	test-input1.c test-ls-zip.c test-msole-printf.c test-msole1.c \
+	test-msole2.c test-msvba.c test-msvba-zip.c test-out-bzip.c \
+	test-out-gzip1.c test-out-gzip2.c test-out-printf.c \
+	test-outmem-printf.c test-restore-msole.c test-textline.c \
+	test-zip-out.c test-zip-out-subdirs.c test-zip1.c test-zip2.c
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+SOURCES = test-bzip.c test-cat-zip.c test-cp.c test-cp-msole.c test-cp-zip.c test-dump-msole.c test-gzip1.c test-gzip2.c test-input1.c test-ls-zip.c test-msole-printf.c test-msole1.c test-msole2.c test-msvba.c test-msvba-zip.c test-out-bzip.c test-out-gzip1.c test-out-gzip2.c test-out-printf.c test-outmem-printf.c test-restore-msole.c test-textline.c test-zip-out.c test-zip-out-subdirs.c test-zip1.c test-zip2.c
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  tests/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+test-bzip$(EXEEXT): $(test_bzip_OBJECTS) $(test_bzip_DEPENDENCIES) 
+	@rm -f test-bzip$(EXEEXT)
+	$(LINK) $(test_bzip_LDFLAGS) $(test_bzip_OBJECTS) $(test_bzip_LDADD) $(LIBS)
+test-cat-zip$(EXEEXT): $(test_cat_zip_OBJECTS) $(test_cat_zip_DEPENDENCIES) 
+	@rm -f test-cat-zip$(EXEEXT)
+	$(LINK) $(test_cat_zip_LDFLAGS) $(test_cat_zip_OBJECTS) $(test_cat_zip_LDADD) $(LIBS)
+test-cp$(EXEEXT): $(test_cp_OBJECTS) $(test_cp_DEPENDENCIES) 
+	@rm -f test-cp$(EXEEXT)
+	$(LINK) $(test_cp_LDFLAGS) $(test_cp_OBJECTS) $(test_cp_LDADD) $(LIBS)
+test-cp-msole$(EXEEXT): $(test_cp_msole_OBJECTS) $(test_cp_msole_DEPENDENCIES) 
+	@rm -f test-cp-msole$(EXEEXT)
+	$(LINK) $(test_cp_msole_LDFLAGS) $(test_cp_msole_OBJECTS) $(test_cp_msole_LDADD) $(LIBS)
+test-cp-zip$(EXEEXT): $(test_cp_zip_OBJECTS) $(test_cp_zip_DEPENDENCIES) 
+	@rm -f test-cp-zip$(EXEEXT)
+	$(LINK) $(test_cp_zip_LDFLAGS) $(test_cp_zip_OBJECTS) $(test_cp_zip_LDADD) $(LIBS)
+test-dump-msole$(EXEEXT): $(test_dump_msole_OBJECTS) $(test_dump_msole_DEPENDENCIES) 
+	@rm -f test-dump-msole$(EXEEXT)
+	$(LINK) $(test_dump_msole_LDFLAGS) $(test_dump_msole_OBJECTS) $(test_dump_msole_LDADD) $(LIBS)
+test-gzip1$(EXEEXT): $(test_gzip1_OBJECTS) $(test_gzip1_DEPENDENCIES) 
+	@rm -f test-gzip1$(EXEEXT)
+	$(LINK) $(test_gzip1_LDFLAGS) $(test_gzip1_OBJECTS) $(test_gzip1_LDADD) $(LIBS)
+test-gzip2$(EXEEXT): $(test_gzip2_OBJECTS) $(test_gzip2_DEPENDENCIES) 
+	@rm -f test-gzip2$(EXEEXT)
+	$(LINK) $(test_gzip2_LDFLAGS) $(test_gzip2_OBJECTS) $(test_gzip2_LDADD) $(LIBS)
+test-input1$(EXEEXT): $(test_input1_OBJECTS) $(test_input1_DEPENDENCIES) 
+	@rm -f test-input1$(EXEEXT)
+	$(LINK) $(test_input1_LDFLAGS) $(test_input1_OBJECTS) $(test_input1_LDADD) $(LIBS)
+test-ls-zip$(EXEEXT): $(test_ls_zip_OBJECTS) $(test_ls_zip_DEPENDENCIES) 
+	@rm -f test-ls-zip$(EXEEXT)
+	$(LINK) $(test_ls_zip_LDFLAGS) $(test_ls_zip_OBJECTS) $(test_ls_zip_LDADD) $(LIBS)
+test-msole-printf$(EXEEXT): $(test_msole_printf_OBJECTS) $(test_msole_printf_DEPENDENCIES) 
+	@rm -f test-msole-printf$(EXEEXT)
+	$(LINK) $(test_msole_printf_LDFLAGS) $(test_msole_printf_OBJECTS) $(test_msole_printf_LDADD) $(LIBS)
+test-msole1$(EXEEXT): $(test_msole1_OBJECTS) $(test_msole1_DEPENDENCIES) 
+	@rm -f test-msole1$(EXEEXT)
+	$(LINK) $(test_msole1_LDFLAGS) $(test_msole1_OBJECTS) $(test_msole1_LDADD) $(LIBS)
+test-msole2$(EXEEXT): $(test_msole2_OBJECTS) $(test_msole2_DEPENDENCIES) 
+	@rm -f test-msole2$(EXEEXT)
+	$(LINK) $(test_msole2_LDFLAGS) $(test_msole2_OBJECTS) $(test_msole2_LDADD) $(LIBS)
+test-msvba$(EXEEXT): $(test_msvba_OBJECTS) $(test_msvba_DEPENDENCIES) 
+	@rm -f test-msvba$(EXEEXT)
+	$(LINK) $(test_msvba_LDFLAGS) $(test_msvba_OBJECTS) $(test_msvba_LDADD) $(LIBS)
+test-msvba-zip$(EXEEXT): $(test_msvba_zip_OBJECTS) $(test_msvba_zip_DEPENDENCIES) 
+	@rm -f test-msvba-zip$(EXEEXT)
+	$(LINK) $(test_msvba_zip_LDFLAGS) $(test_msvba_zip_OBJECTS) $(test_msvba_zip_LDADD) $(LIBS)
+test-out-bzip$(EXEEXT): $(test_out_bzip_OBJECTS) $(test_out_bzip_DEPENDENCIES) 
+	@rm -f test-out-bzip$(EXEEXT)
+	$(LINK) $(test_out_bzip_LDFLAGS) $(test_out_bzip_OBJECTS) $(test_out_bzip_LDADD) $(LIBS)
+test-out-gzip1$(EXEEXT): $(test_out_gzip1_OBJECTS) $(test_out_gzip1_DEPENDENCIES) 
+	@rm -f test-out-gzip1$(EXEEXT)
+	$(LINK) $(test_out_gzip1_LDFLAGS) $(test_out_gzip1_OBJECTS) $(test_out_gzip1_LDADD) $(LIBS)
+test-out-gzip2$(EXEEXT): $(test_out_gzip2_OBJECTS) $(test_out_gzip2_DEPENDENCIES) 
+	@rm -f test-out-gzip2$(EXEEXT)
+	$(LINK) $(test_out_gzip2_LDFLAGS) $(test_out_gzip2_OBJECTS) $(test_out_gzip2_LDADD) $(LIBS)
+test-out-printf$(EXEEXT): $(test_out_printf_OBJECTS) $(test_out_printf_DEPENDENCIES) 
+	@rm -f test-out-printf$(EXEEXT)
+	$(LINK) $(test_out_printf_LDFLAGS) $(test_out_printf_OBJECTS) $(test_out_printf_LDADD) $(LIBS)
+test-outmem-printf$(EXEEXT): $(test_outmem_printf_OBJECTS) $(test_outmem_printf_DEPENDENCIES) 
+	@rm -f test-outmem-printf$(EXEEXT)
+	$(LINK) $(test_outmem_printf_LDFLAGS) $(test_outmem_printf_OBJECTS) $(test_outmem_printf_LDADD) $(LIBS)
+test-restore-msole$(EXEEXT): $(test_restore_msole_OBJECTS) $(test_restore_msole_DEPENDENCIES) 
+	@rm -f test-restore-msole$(EXEEXT)
+	$(LINK) $(test_restore_msole_LDFLAGS) $(test_restore_msole_OBJECTS) $(test_restore_msole_LDADD) $(LIBS)
+test-textline$(EXEEXT): $(test_textline_OBJECTS) $(test_textline_DEPENDENCIES) 
+	@rm -f test-textline$(EXEEXT)
+	$(LINK) $(test_textline_LDFLAGS) $(test_textline_OBJECTS) $(test_textline_LDADD) $(LIBS)
+test-zip-out$(EXEEXT): $(test_zip_out_OBJECTS) $(test_zip_out_DEPENDENCIES) 
+	@rm -f test-zip-out$(EXEEXT)
+	$(LINK) $(test_zip_out_LDFLAGS) $(test_zip_out_OBJECTS) $(test_zip_out_LDADD) $(LIBS)
+test-zip-out-subdirs$(EXEEXT): $(test_zip_out_subdirs_OBJECTS) $(test_zip_out_subdirs_DEPENDENCIES) 
+	@rm -f test-zip-out-subdirs$(EXEEXT)
+	$(LINK) $(test_zip_out_subdirs_LDFLAGS) $(test_zip_out_subdirs_OBJECTS) $(test_zip_out_subdirs_LDADD) $(LIBS)
+test-zip1$(EXEEXT): $(test_zip1_OBJECTS) $(test_zip1_DEPENDENCIES) 
+	@rm -f test-zip1$(EXEEXT)
+	$(LINK) $(test_zip1_LDFLAGS) $(test_zip1_OBJECTS) $(test_zip1_LDADD) $(LIBS)
+test-zip2$(EXEEXT): $(test_zip2_OBJECTS) $(test_zip2_DEPENDENCIES) 
+	@rm -f test-zip2$(EXEEXT)
+	$(LINK) $(test_zip2_LDFLAGS) $(test_zip2_OBJECTS) $(test_zip2_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-bzip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-cat-zip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-cp-msole.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-cp-zip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-cp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-dump-msole.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-gzip1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-gzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-input1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-ls-zip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-msole-printf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-msole1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-msole2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-msvba-zip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-msvba.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-out-bzip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-out-gzip1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-out-gzip2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-out-printf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-outmem-printf.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-restore-msole.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-textline.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-zip-out-subdirs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-zip-out.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-zip1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/test-zip2.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+check: check-am
+all-am: Makefile
+
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-checkPROGRAMS \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-bzip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-bzip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-bzip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,76 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-bzip.c:
+ *
+ * Copyright (C) 2003 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <stdio.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-input-bzip.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput *input;
+	GsfInput *bzip;
+	GError   *err;
+	int i;
+
+	for (i = 1 ; i < argc ; i++) {
+		puts (argv[i]);
+		input = gsf_input_stdio_new (argv[i], &err);
+		if (input == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' error: %s", argv[i], err->message);
+			g_error_free (err);
+			continue;
+		}
+
+		bzip = gsf_input_memory_new_from_bzip (input, &err);
+		if (bzip == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' Not a BZip file: %s", argv[i], err->message);
+			g_error_free (err);
+			g_object_unref (G_OBJECT (input));
+			continue;
+		}
+		gsf_input_dump (bzip, FALSE);
+
+		g_object_unref (G_OBJECT (bzip));
+		g_object_unref (G_OBJECT (input));
+	}
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cat-zip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cat-zip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cat-zip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,135 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-cat-zip.c: test program to list content and dump raw stream data
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-zip.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+static void
+ls_R (GsfInput *input)
+{
+	int i;
+	char const *name = gsf_input_name (GSF_INPUT (input));
+	gboolean is_dir = GSF_IS_INFILE (input) &&
+		(gsf_infile_num_children (GSF_INFILE (input)) >= 0);
+	
+	printf ("%c '%s'\t\t%" GSF_OFF_T_FORMAT "\n",
+		(is_dir ? 'd' : ' '),
+		(name != NULL) ? name : "",
+		gsf_input_size (GSF_INPUT (input)));
+
+	if (is_dir) {
+		puts ("{");
+		for (i = 0 ; i < gsf_infile_num_children (GSF_INFILE (input)) ; i++)
+			ls_R (gsf_infile_child_by_index (GSF_INFILE (input), i));
+		puts ("}");
+	}
+
+	g_object_unref (G_OBJECT (input));
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput  *input;
+	GsfInfile *infile;
+	GError    *err;
+
+	fprintf (stderr, "%s\n", argv [1]);
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	input = gsf_input_uncompress (input);
+	infile = gsf_infile_zip_new (input, &err);
+	g_object_unref (G_OBJECT (input));
+
+	if (infile == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' Not an OLE file: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	if (argc > 2) {
+		int i;
+		GsfInput *child, *ptr = GSF_INPUT (infile);
+		for (i = 2 ; i < argc && ptr != NULL; i++, ptr = child) {
+			fprintf (stderr, "--> '%s'\n", argv [i]);
+			if (GSF_IS_INFILE (ptr) &&
+			    gsf_infile_num_children (GSF_INFILE (ptr)) >= 0) {
+				child = gsf_infile_child_by_name (GSF_INFILE (ptr), argv [i]);
+
+				if (child == NULL) {
+					g_warning ("No child named '%s'", argv [i]);
+					child = NULL;
+					break;
+				}
+			} else {
+				g_warning ("stream is not a directory '%s'", argv [i]);
+				child = NULL;
+				break;
+			}
+			g_object_unref (G_OBJECT (ptr));
+		}
+		if (ptr != NULL) {
+			if (GSF_IS_INFILE (ptr) &&
+			    gsf_infile_num_children (GSF_INFILE (ptr)) >= 0)
+				ls_R (ptr); /* unrefs infile */
+			else {
+				gsf_input_dump (GSF_INPUT (ptr), FALSE);
+				g_object_unref (G_OBJECT (ptr));
+			}
+		}
+	} else
+		ls_R (GSF_INPUT (infile)); /* unrefs infile */
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc < 2) {
+		fprintf (stderr, "%s : file stream stream ...\n", argv [0]);
+		return 1;
+	}
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-msole.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-msole.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-msole.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,133 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-cp-msole.c: Test gsf-outfile-msole by cloning a file the hard way
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-msole.h>
+
+#include <stdio.h>
+
+static void
+clone (GsfInfile *in, GsfOutfile *out)
+{
+	GsfInput *input = GSF_INPUT (in);
+	GsfOutput *output = GSF_OUTPUT (out);
+	guint8 const *data;
+	size_t len;
+	int i;
+
+	if (gsf_input_size (input) > 0) {
+		while ((len = gsf_input_remaining (input)) > 0) {
+			/* copy in odd sized chunks to exercise system */
+			if (len > 314)
+				len = 314;
+			if (NULL == (data = gsf_input_read (input, len, NULL))) {
+				g_warning ("error reading ?");
+				return;
+			}
+			if (!gsf_output_write (output, len, data)) {
+				g_warning ("error writing ?");
+				return;
+			}
+		}
+	} else for (i = 0 ; i < gsf_infile_num_children (in) ; i++) {
+		input = gsf_infile_child_by_index (in, i);
+		output = gsf_outfile_new_child  (out,
+			gsf_infile_name_by_index  (in, i),
+			gsf_infile_num_children (GSF_INFILE (input)) >= 0);
+		clone (GSF_INFILE (input), GSF_OUTFILE (output));
+	}
+	gsf_output_close (GSF_OUTPUT (out));
+	g_object_unref (G_OBJECT (out));
+	g_object_unref (G_OBJECT (in));
+}
+
+static int
+test (char *argv[])
+{
+	GsfInput   *input;
+	GsfInfile  *infile;
+	GsfOutput  *output;
+	GsfOutfile *outfile;
+	GError    *err;
+
+	fprintf (stderr, "%s\n", argv [1]);
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	infile = gsf_infile_msole_new (input, &err);
+	g_object_unref (G_OBJECT (input));
+
+	if (infile == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' Not an OLE file: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[2], &err);
+	if (output == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[2], err->message);
+		g_error_free (err);
+		g_object_unref (G_OBJECT (infile));
+		return 1;
+	}
+
+	outfile = gsf_outfile_msole_new (output);
+	g_object_unref (G_OBJECT (output));
+	clone (infile, outfile);
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc != 3) {
+		fprintf (stderr, "%s : infile outfile\n", argv [0]);
+		return 1;
+	}
+
+	gsf_init ();
+	res = test (argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-zip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-zip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp-zip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,155 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-cp-zip.c: Test gsf-outfile-zip by cloning a file the hard way
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-zip.h>
+
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-zip.h>
+
+#include <stdio.h>
+
+static void
+clone (GsfInfile *in, GsfOutfile *out)
+{
+	GsfInput *input = GSF_INPUT (in);
+	GsfOutput *output = GSF_OUTPUT (out);
+
+	if (gsf_input_size (input) > 0) {
+		size_t len;
+		while ((len = gsf_input_remaining (input)) > 0) {
+			guint8 const *data;
+			/* copy in odd sized chunks to exercise system */
+			if (len > 314)
+				len = 314;
+			if (NULL == (data = gsf_input_read (input, len, NULL))) {
+				g_warning ("error reading ?");
+				return;
+			}
+			if (!gsf_output_write (output, len, data)) {
+				g_warning ("error writing ?");
+				return;
+			}
+		}
+	} else {
+		int i, n = gsf_infile_num_children (in);
+		for (i = 0 ; i < n; i++) {
+			const char *name;
+			char *display_name;
+			int level;
+			gboolean is_dir;
+
+			input = gsf_infile_child_by_index (in, i);
+			name = gsf_infile_name_by_index (in, i);
+			is_dir = gsf_infile_num_children (GSF_INFILE (input)) >= 0;
+
+			g_object_get (G_OBJECT (input), "compression-level", &level, NULL);
+
+			display_name = name
+				? g_filename_display_name (name)
+				: NULL;
+			g_print ("%s: size=%ld, level=%d, %s\n",
+				 display_name ? display_name : "?",
+				 (long)gsf_input_size (input),
+				 level,
+				 is_dir ? "directory" : "file");
+			g_free (display_name);
+
+			output = gsf_outfile_new_child_full  (out, name, is_dir,
+							      "compression-level", level,
+							      NULL);
+			clone (GSF_INFILE (input), GSF_OUTFILE (output));
+		}
+	}
+	gsf_output_close (GSF_OUTPUT (out));
+	g_object_unref (G_OBJECT (out));
+	g_object_unref (G_OBJECT (in));
+}
+
+static int
+test (char *argv[])
+{
+	GsfInput   *input;
+	GsfInfile  *infile;
+	GsfOutput  *output;
+	GsfOutfile *outfile;
+	GError    *err;
+
+	fprintf (stderr, "%s\n", argv [1]);
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	infile = gsf_infile_zip_new (input, &err);
+	g_object_unref (G_OBJECT (input));
+
+	if (infile == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' Not a zip file: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[2], &err);
+	if (output == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[2], err->message);
+		g_error_free (err);
+		g_object_unref (G_OBJECT (infile));
+		return 1;
+	}
+
+	outfile = gsf_outfile_zip_new (output, &err);
+	g_object_unref (G_OBJECT (output));
+	clone (infile, outfile);
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc != 3) {
+		fprintf (stderr, "%s : infile outfile\n", argv [0]);
+		return 1;
+	}
+
+	gsf_init ();
+	res = test (argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-cp.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,90 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-cp-zip.c: Test gsf_input_copy
+ *
+ * Copyright (C) 2002-2003	Dom Lachowicz <cinamod at hotmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+
+static int
+test (char *argv[])
+{
+	GsfInput   *input;
+	GsfOutput  *output;
+	GError     *err;
+	int         rval = 0;
+
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s\n", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[2], &err);
+	if (output == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s\n", argv[2], err->message);
+		g_error_free (err);
+
+		g_object_unref (G_OBJECT (input));
+		return 1;
+	}
+
+	if (gsf_input_copy (input, output) == FALSE) {
+		rval = 1;
+		err = (GError*) gsf_output_error (output);
+		if (err != NULL) {
+			g_warning ("'%s' error: %s\n", argv[2], err->message);	
+		}
+	}
+
+	g_object_unref (G_OBJECT (input));
+
+	gsf_output_close (output);
+	g_object_unref (G_OBJECT (output));
+
+	return rval;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc != 3) {
+		fprintf (stderr, "%s : infile outfile\n", argv [0]);
+		return 1;
+	}
+
+	gsf_init ();
+	res = test (argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-dump-msole.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-dump-msole.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-dump-msole.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,138 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-cp-msole.c: Test gsf-outfile-msole by cloning a file the hard way
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-msole.h>
+#include <gsf/gsf-outfile-stdio.h>
+
+#include <stdio.h>
+
+static void
+clone (GsfInput *input, GsfOutput *output)
+{
+	guint8 const *data;
+	size_t len;
+	int i;
+
+	if (gsf_input_size (input) > 0) {
+		while ((len = gsf_input_remaining (input)) > 0) {
+			/* copy in odd sized chunks to exercise system */
+			if (len > 314)
+				len = 314;
+			if (NULL == (data = gsf_input_read (input, len, NULL))) {
+				g_warning ("error reading ?");
+				return;
+			}
+			if (!gsf_output_write (output, len, data)) {
+				g_warning ("error writing ?");
+				return;
+			}
+		}
+	} 
+	
+	if (GSF_IS_INFILE (input) &&
+	    gsf_infile_num_children (GSF_INFILE (input)) > 0) {
+		GsfInfile *in = GSF_INFILE (input);
+		GsfOutfile *out = GSF_OUTFILE (output);
+		GsfInput *src;
+		GsfOutput *dst;
+
+		for (i = 0 ; i < gsf_infile_num_children (in) ; i++) {
+			src = gsf_infile_child_by_index (in, i);
+			dst = gsf_outfile_new_child  (out,
+				gsf_infile_name_by_index  (in, i),
+				GSF_IS_INFILE (src) && gsf_infile_num_children (GSF_INFILE (src)) >= 0);
+			clone (src, dst);
+		}
+	}
+
+	gsf_output_close (output);
+	g_object_unref (G_OBJECT (output));
+	g_object_unref (G_OBJECT (input));
+}
+
+static int
+test (char *argv[])
+{
+	GsfInput   *input;
+	GsfInfile  *infile;
+	GsfOutfile *outfile;
+	GError    *err;
+
+	fprintf (stderr, "%s\n", argv [1]);
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	infile = gsf_infile_msole_new (input, &err);
+	g_object_unref (G_OBJECT (input));
+
+	if (infile == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' Not an OLE file: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	outfile = gsf_outfile_stdio_new (argv[2], &err);
+	if (outfile == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+	clone (GSF_INPUT (infile), GSF_OUTPUT (outfile));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc != 3) {
+		fprintf (stderr, "%s : infile outfile\n", argv [0]);
+		return 1;
+	}
+
+	gsf_init ();
+	res = test (argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip1.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip1.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip1.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,77 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-gzip1.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-input-gzip.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput *input;
+	GsfInput *gzip;
+	GError   *err;
+	int i;
+
+	for (i = 1 ; i < argc ; i++) {
+		puts (argv[i]);
+		input = gsf_input_stdio_new (argv[i], &err);
+		if (input == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' error: %s", argv[i], err->message);
+			g_error_free (err);
+			continue;
+		}
+
+		gzip = gsf_input_gzip_new (input, &err);
+		if (gzip == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' Not a GZip file: %s", argv[i], err->message);
+			g_error_free (err);
+			g_object_unref (G_OBJECT (input));
+			continue;
+		}
+		gsf_input_dump (gzip, FALSE);
+
+		g_object_unref (G_OBJECT (gzip));
+		g_object_unref (G_OBJECT (input));
+	}
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip2.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip2.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-gzip2.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,83 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-gzip2.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ * Copyright (C) 2005 Morten Welinder (terra at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-input-gzip.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput *input;
+	GsfInput *gzip;
+	GError   *err;
+	int i;
+
+	for (i = 1 ; i < argc ; i++) {
+		puts (argv[i]);
+		input = gsf_input_stdio_new (argv[i], &err);
+		if (input == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' error: %s", argv[i], err->message);
+			g_error_free (err);
+			continue;
+		}
+
+		/*
+		 * We must know the length of the uncompressed file in advance.
+		 * test-out-gzip2's output uncompresses to 90 bytes.
+		 */
+		gzip = g_object_new (GSF_INPUT_GZIP_TYPE,
+				     "source", input,
+				     "raw", TRUE,
+				     "uncompressed_size", (gsf_off_t)90,
+				     NULL);
+		if (gzip == NULL) {
+			g_warning ("'%s' Not a GZip file: %s", argv[i], "???" /* err->message */);
+			g_error_free (err);
+			g_object_unref (G_OBJECT (input));
+			continue;
+		}
+		gsf_input_dump (gzip, FALSE);
+
+		g_object_unref (G_OBJECT (gzip));
+		g_object_unref (G_OBJECT (input));
+	}
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-input1.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-input1.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-input1.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,62 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-input1.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-input-stdio.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput *input;
+	GError   *err;
+
+	if (argc != 3) {
+		fprintf (stderr, "Usage : %s infile outfile\n", argv[0]);
+		return 1;
+	}
+
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	} else
+		g_object_unref (G_OBJECT (input));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-ls-zip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-ls-zip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-ls-zip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,91 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-ls-zip.c: test program to list content of zip files.
+ *
+ * Copyright (C) 2002-2003	Tambet Ingo (tambet at ximian.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-zip.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput  *input;
+	GsfInfile *infile;
+	GError    *err;
+	gint       i, j;
+
+	for (i = 1; i < argc; i++) {
+		fprintf (stderr, "%s\n", argv [i]);
+		input = gsf_input_stdio_new (argv[i], &err);
+		if (input == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' error: %s", argv[i], err->message);
+			g_error_free (err);
+			return 1;
+		}
+
+		input = gsf_input_uncompress (input);
+		infile = gsf_infile_zip_new (input, &err);
+		g_object_unref (G_OBJECT (input));
+
+		if (infile == NULL) {
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' Not a zip file: %s", argv[i], err->message);
+			g_error_free (err);
+			return 1;
+		}
+
+		for (j = 0; j < gsf_infile_num_children (infile); j++) {
+			GsfInput *child = gsf_infile_child_by_index (infile, j);
+
+			g_print ("\t%s\t\t%" GSF_OFF_T_FORMAT "\n", gsf_input_name (child), gsf_input_size (child));
+			g_object_unref (G_OBJECT (child));
+		}
+
+		g_object_unref (G_OBJECT (infile));
+	}
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc < 2) {
+		fprintf (stderr, "%s : file.zip  ...\n", argv [0]);
+		return 1;
+	}
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole-printf.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole-printf.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole-printf.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,106 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-msole-printf.c:
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-msole.h>
+
+#include <stdio.h>
+
+static gboolean
+test_write_once (GsfOutput *output)
+{
+	if (!gsf_output_printf (output,
+				"The %s sat on the %s.\n", "cat", "mat"))
+		return FALSE;
+	if (!gsf_output_printf (output, "%d %ss sat on the %s.\n",
+				2, "cat", "mat"))
+		return FALSE;
+	if (!gsf_output_puts (output,
+			      "The quick brown fox is afraid of the cats.\n"))
+		return FALSE;
+
+	return TRUE;
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput  *output;
+	GsfOutfile *outfile;
+	GsfOutput  *small;
+	GsfOutput  *large;
+	GError   *err;
+	int i;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[1], &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+	outfile = gsf_outfile_msole_new (output);
+	g_object_unref (G_OBJECT (output));
+	small = gsf_outfile_new_child  (outfile, "small", FALSE);
+
+	if (!test_write_once (small))
+		return 1;
+	if (!gsf_output_close (small))
+		return 1;
+
+	large = gsf_outfile_new_child  (outfile, "large", FALSE);
+
+	for (i = 1; i <= 100; i++) {
+		if (!gsf_output_printf (large, "=== Round %d ===\n", i))
+		    return 1;
+		if (!test_write_once (large))
+		    return 1;
+	}
+		
+	if (!gsf_output_close (large))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) outfile))
+		return 1;
+	g_object_unref (G_OBJECT (outfile));
+	g_object_unref (small);
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole1.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole1.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole1.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,292 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-msole1.c: test program to dump biff streams
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ * 			Michael Meeks (michael at ximian.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ *
+ * Parts of this code are taken from libole2/test/test-ole.c
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+#include <gsf/gsf-msole-utils.h>
+#include <gsf/gsf-docprop-vector.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#define BIFF_TYPES_FILE    "biff-types.h"
+#define DUMP_CONTENT
+
+typedef struct {
+	guint16 opcode;
+	char *name;
+} GENERIC_TYPE;
+
+#ifdef DUMP_CONTENT
+static GPtrArray *biff_types   = NULL;
+static void
+read_types (char const *fname, GPtrArray **types)
+{
+	FILE *file = fopen(fname, "r");
+	unsigned char buffer[1024];
+	*types = g_ptr_array_new ();
+	if (!file) {
+		char *newname = g_strconcat ("../", fname, NULL);
+		file = fopen (newname, "r");
+	}
+	if (!file) {
+		g_printerr ("Can't find vital file '%s'\n", fname);
+		return;
+	}
+	while (!feof(file)) {
+		unsigned char *p;
+		fgets ((char *)buffer, sizeof (buffer)-1, file);
+		for (p=buffer;*p;p++)
+			if (*p=='0' && *(p+1)=='x') {
+				GENERIC_TYPE *bt = g_new (GENERIC_TYPE,1);
+				unsigned char *name, *pt;
+				bt->opcode=strtol((char *)p+2,0,16);
+				pt = buffer;
+				while (*pt && *pt != '#') pt++;      /* # */
+				while (*pt && !isspace(*pt))
+					pt++;  /* define */
+				while (*pt && isspace((unsigned char)*pt))
+					pt++;  /* '   ' */
+				while (*pt && *pt != '_') pt++;     /* BIFF_ */
+				name = *pt?pt+1:pt;
+				while (*pt && !isspace((unsigned char)*pt))
+					pt++;
+				bt->name = g_strndup ((gchar *)name, (unsigned)(pt - name));
+				g_ptr_array_add (*types, bt);
+				break;
+			}
+	}
+	fclose (file);
+}
+
+static char const *
+get_biff_opcode_name (unsigned opcode)
+{
+	int lp;
+	if (!biff_types)
+		read_types (BIFF_TYPES_FILE, &biff_types);
+	/* Count backwars to give preference to non-filtered record types */
+	for (lp=biff_types->len; --lp >= 0 ;) {
+		GENERIC_TYPE *bt = g_ptr_array_index (biff_types, lp);
+		if (bt->opcode == opcode)
+			return bt->name;
+	}
+	return "Unknown";
+}
+
+static void
+dump_biff_stream (GsfInput *stream)
+{
+	guint8 const *data;
+	guint16 len, opcode;
+	unsigned pos = gsf_input_tell (stream);
+
+	while (NULL != (data = gsf_input_read (stream, 4, NULL))) {
+		gboolean enable_dump = TRUE;
+
+		opcode	= GSF_LE_GET_GUINT16 (data);
+		len	= GSF_LE_GET_GUINT16 (data+2);
+
+		if (len > 15000) {
+			enable_dump = TRUE;
+			g_warning ("Suspicious import of biff record > 15,000 (0x%x) for opcode 0x%hx",
+				   len, opcode);
+		} else if ((opcode & 0xff00) > 0x1000) {
+			enable_dump = TRUE;
+			g_warning ("Suspicious import of biff record with opcode 0x%hx",
+				   opcode);
+		}
+
+		if (enable_dump)
+			printf ("Opcode 0x%3hx : %15s, length 0x%hx (=%hd)\n",
+				opcode, get_biff_opcode_name (opcode),
+				len, len);
+
+		if (len > 0) {
+			data = gsf_input_read (stream, len, NULL);
+			if (data == NULL)
+				break;
+			if (enable_dump)
+				gsf_mem_dump (data, len);
+		}
+		pos = gsf_input_tell (stream);
+	}
+}
+#endif /* DUMP_CONTENT */
+
+static void
+cb_print_property (char const *name, GsfDocProp const *prop)
+{
+	GValue const *val = gsf_doc_prop_get_val  (prop);
+	char *tmp;
+
+	if (gsf_doc_prop_get_link (prop) != NULL)
+		g_print ("prop '%s' LINKED TO  -> '%s'\n",
+			 name, gsf_doc_prop_get_link (prop));
+	else
+		g_print ("prop '%s'\n", name);
+
+	if (VAL_IS_GSF_DOCPROP_VECTOR ((GValue *)val)) {
+		GValueArray *va = gsf_value_get_docprop_varray (val);
+		unsigned i;
+
+		for (i = 0 ; i < va->n_values; i++) {
+			tmp = g_strdup_value_contents (
+				g_value_array_get_nth (va, i));
+			g_print ("\t[%u] = %s\n", i, tmp);
+			g_free (tmp);
+		}
+	} else {
+		tmp = g_strdup_value_contents (val);
+		printf ("\t= %s\n", tmp);
+		g_free (tmp);
+	}
+}
+
+static int
+test (unsigned argc, char *argv[])
+{
+	static char const * const stream_names[] = {
+		"Workbook",	"WORKBOOK",	"workbook",
+		"Book",		"BOOK",		"book"
+	};
+
+	GsfInput  *input, *stream;
+	GsfInfile *infile;
+	GError    *err = NULL;
+	unsigned i, j;
+
+	for (i = 1 ; i < argc ; i++) {
+		fprintf( stderr, "%s\n",argv[i]);
+
+		input = gsf_input_mmap_new (argv[i], NULL);
+		if (input == NULL)	/* Only report error if stdio fails too */
+			input = gsf_input_stdio_new (argv[i], &err);
+		if (input == NULL) {
+			g_return_val_if_fail (err != NULL, 1);
+			g_warning ("'%s' error: %s", argv[i], err->message);
+			g_error_free (err);
+			continue;
+		}
+
+		input = gsf_input_uncompress (input);
+
+		infile = gsf_infile_msole_new (input, &err);
+
+		if (infile == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' Not an OLE file: %s", argv[i], err->message);
+			g_error_free (err);
+
+#ifdef DUMP_CONTENT
+			dump_biff_stream (input);
+#endif
+
+			g_object_unref (G_OBJECT (input));
+			continue;
+		}
+#if 0
+		stream = gsf_infile_child_by_name (infile, "\01CompObj");
+		if (stream != NULL) {
+			gsf_off_t len = gsf_input_size (stream);
+			guint8 const *data = gsf_input_read (stream, len, NULL);
+			if (data != NULL)
+				gsf_mem_dump (data, len);
+			g_object_unref (G_OBJECT (stream));
+		}
+		return 0;
+#endif
+
+		stream = gsf_infile_child_by_name (infile, "\05SummaryInformation");
+		if (stream != NULL) {
+			GsfDocMetaData *meta_data = gsf_doc_meta_data_new ();
+
+			puts ( "SummaryInfo");
+			err = gsf_msole_metadata_read (stream, meta_data);
+			if (err != NULL) {
+				g_warning ("'%s' error: %s", argv[i], err->message);
+				g_error_free (err);
+				err = NULL;
+			} else
+				gsf_doc_meta_data_foreach (meta_data,
+					(GHFunc) cb_print_property, NULL);
+
+			g_object_unref (meta_data);
+			g_object_unref (G_OBJECT (stream));
+		}
+
+		stream = gsf_infile_child_by_name (infile, "\05DocumentSummaryInformation");
+		if (stream != NULL) {
+			GsfDocMetaData *meta_data = gsf_doc_meta_data_new ();
+
+			puts ( "DocSummaryInfo");
+			err = gsf_msole_metadata_read (stream, meta_data);
+			if (err != NULL) {
+				g_warning ("'%s' error: %s", argv[i], err->message);
+				g_error_free (err);
+				err = NULL;
+			} else
+				gsf_doc_meta_data_foreach (meta_data,
+					(GHFunc) cb_print_property, NULL);
+
+			g_object_unref (meta_data);
+			g_object_unref (G_OBJECT (stream));
+		}
+
+		for (j = 0 ; j < G_N_ELEMENTS (stream_names) ; j++) {
+			stream = gsf_infile_child_by_name (infile, stream_names[j]);
+			if (stream != NULL) {
+				puts (j < 3 ? "Excel97" : "Excel95");
+#ifdef DUMP_CONTENT
+				dump_biff_stream (stream);
+#endif
+				g_object_unref (G_OBJECT (stream));
+				break;
+			}
+		}
+
+		g_object_unref (G_OBJECT (infile));
+		g_object_unref (G_OBJECT (input));
+	}
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole2.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole2.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msole2.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,144 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-msole1.c: test program to list content and dump raw stream data
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+static gboolean dump_as_hex = FALSE;
+
+static void
+ls_R (GsfInput *input)
+{
+	int i;
+	char const *name = gsf_input_name (GSF_INPUT (input));
+	gboolean is_dir = GSF_IS_INFILE (input) &&
+		(gsf_infile_num_children (GSF_INFILE (input)) >= 0);
+	
+	printf ("%c '%s'\t\t%" GSF_OFF_T_FORMAT "\n",
+		(is_dir ? 'd' : ' '),
+		(name != NULL) ? name : "",
+		gsf_input_size (GSF_INPUT (input)));
+
+	if (is_dir) {
+		puts ("{");
+		for (i = 0 ; i < gsf_infile_num_children (GSF_INFILE (input)) ; i++)
+			ls_R (gsf_infile_child_by_index (GSF_INFILE (input), i));
+		puts ("}");
+	}
+
+	g_object_unref (G_OBJECT (input));
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput  *input;
+	GsfInfile *infile;
+	GError    *err;
+
+	fprintf (stderr, "%s\n", argv [1]);
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	input = gsf_input_uncompress (input);
+	infile = gsf_infile_msole_new (input, &err);
+	g_object_unref (G_OBJECT (input));
+
+	if (infile == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' Not an OLE file: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	if (argc > 2) {
+		int i;
+		GsfInput *child, *ptr = GSF_INPUT (infile);
+		for (i = 2 ; i < argc && ptr != NULL; i++, ptr = child) {
+			fprintf (stderr, "--> '%s'\n", argv [i]);
+			if (GSF_IS_INFILE (ptr) &&
+			    gsf_infile_num_children (GSF_INFILE (ptr)) >= 0) {
+				child = gsf_infile_child_by_name (GSF_INFILE (ptr), argv [i]);
+
+				if (child == NULL) {
+					g_warning ("No child named '%s'", argv [i]);
+					child = NULL;
+					break;
+				}
+			} else {
+				g_warning ("stream is not a directory '%s'", argv [i]);
+				child = NULL;
+				break;
+			}
+			g_object_unref (G_OBJECT (ptr));
+		}
+		if (ptr != NULL) {
+			if (GSF_IS_INFILE (ptr) &&
+			    gsf_infile_num_children (GSF_INFILE (ptr)) >= 0)
+				ls_R (ptr); /* unrefs infile */
+			else {
+				gsf_input_dump (GSF_INPUT (ptr), dump_as_hex);
+				g_object_unref (G_OBJECT (ptr));
+			}
+		}
+	} else
+		ls_R (GSF_INPUT (infile)); /* unrefs infile */
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc < 2) {
+		fprintf (stderr, "%s : file [--hex] stream stream ...\n", argv [0]);
+		return 1;
+	}
+
+	if (argv[1] != NULL && 0 == strcmp (argv[1], "--hex")) {
+		dump_as_hex = TRUE;
+		argv++;
+		argc--;
+	}
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba-zip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba-zip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba-zip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,382 @@
+#include <stdio.h>
+#include <string.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-msole-utils.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-output-stdio.h>
+
+#define VBA_COMPRESSION_WINDOW 4096
+
+#define HEADER_SIZE 3
+
+/* Brute force and ugliness ! */
+typedef struct {
+	guint8  inblock[VBA_COMPRESSION_WINDOW];
+	guint   length;
+	guint   pos;
+	guint8  shift;
+
+	guint8     mask;
+	GString   *outstr;
+
+	GsfOutput *output;
+} CompressBuf;
+
+#define DEBUG
+
+static char
+byte_to_char (guint8 data)
+{
+	return data >= 0x20 && data < 126 ? data : '.';
+}
+
+static gint
+get_shift (guint cur_pos)
+{
+	int shift;
+
+	if (cur_pos <= 0x80) {
+		if (cur_pos <= 0x20)
+			shift = (cur_pos <= 0x10) ? 12 : 11;
+		else
+			shift = (cur_pos <= 0x40) ? 10 : 9;
+	} else {
+		if (cur_pos <= 0x200)
+			shift = (cur_pos <= 0x100) ? 8 : 7;
+		else if (cur_pos <= 0x800)
+			shift = (cur_pos <= 0x400) ? 6 : 5;
+		else
+			shift = 4;
+	}
+
+	return shift;
+}
+
+static gint
+find_match (CompressBuf *buf, guint pos, guint *len)
+{
+	gint i;
+	guint max_match = (1 << get_shift (pos)) - 1;
+
+	/* FIXME: the MS impl. does different to a linear search here
+	   and is not very good at this either; is happy to get much
+	   worse matches; perhaps some single-entry match lookup table ?
+	   it seems to ~regularly truncate strings, and get earlier
+	   / later matches of equivalent length with no predictability
+	   ( hashing ? ).
+	*/
+	for (i = pos - 1; i >= 0; i--) {
+		guint j;
+
+		for (j = 0; j < buf->length - pos && j < pos; j++)
+			if (buf->inblock[pos + j] != buf->inblock[i + j])
+				break;
+
+		if (j >= 3) {
+			*len = MIN (j, max_match);
+			return i;
+		}
+	}
+	return -1;
+}
+
+static void
+output_data (CompressBuf *buf, guint8 *data, gboolean compressed)
+{
+	if (compressed) {
+		buf->mask |= 1 << buf->shift;
+		g_string_append_c (buf->outstr, data [0]);
+		g_string_append_c (buf->outstr, data [1]);
+	} else
+		g_string_append_c (buf->outstr, data [0]);
+
+	buf->shift++;
+	if (buf->shift == 8) {
+		guint i;
+
+		gsf_output_write (buf->output, 1, &buf->mask);
+		gsf_output_write (buf->output, buf->outstr->len, buf->outstr->str);
+
+#ifdef DEBUG		
+		fprintf (stderr, "Block: 0x%x '", buf->mask);
+		for (i = 0; i < buf->outstr->len; i++)
+			fprintf (stderr, "%c", byte_to_char (buf->outstr->str[i]));
+		fprintf (stderr, "'\n");
+#endif
+
+		buf->mask = 0;
+		buf->shift = 0;
+		g_string_set_size (buf->outstr, 0);
+	}
+}
+
+static void
+output_match (CompressBuf *buf, guint cur_pos, guint pos, guint len)
+{
+	int shift, token, distance;
+	guint8 data[2];
+
+	shift = get_shift (cur_pos);
+
+	distance = cur_pos - pos - 1;
+
+	/* Window size issue !? - get a better match later with a larger window !? */
+
+	token = (distance << shift) + ((len - 3) & ((1<<(shift + 1))-1));
+	data[0] = token & 0xff;
+	data[1] = token >> 8;
+
+#ifdef DEBUG		
+	fprintf (stderr, "shift %d, [0x%x(%d) - %d], len %d, distance %d bytes %.2x %.2x\n",
+		 shift, cur_pos, cur_pos, pos, len, distance,
+		 data[0], data[1]);
+	if (cur_pos + len >= (1u<<shift))
+		fprintf (stderr, "Overlaps boundary\n");
+#endif
+
+	output_data (buf, data, TRUE);
+}
+
+static void
+compress_block (CompressBuf *buf)
+{
+	guint pos, len;
+	gint  match;
+
+	for (pos = 0; pos < buf->length;) {
+		if ((match = find_match (buf, pos, &len)) >= 0) {
+			output_match (buf, pos, match, len);
+			pos += len;
+		} else
+			output_data (buf, &(buf->inblock[pos++]), FALSE);
+	}
+}
+
+static void
+do_compress (GsfInput *input, GsfOutput *output)
+{
+	CompressBuf real_buf, *buf;
+	GString *string;
+	guint8   data[HEADER_SIZE];
+	int      length;
+
+	buf = &real_buf;
+	memset (buf, 0, sizeof (CompressBuf));
+	buf->output = output;
+	buf->outstr = g_string_sized_new (20);
+
+	data[0] = 0x01;
+	data[1] = 0x00;
+	data[2] = 0xb0;
+	gsf_output_write (buf->output, 3, data); /* dummy padding */
+
+	string = g_string_sized_new (64);
+
+	while (gsf_input_remaining (input) > 0) {
+		buf->length = MIN (gsf_input_remaining (input), VBA_COMPRESSION_WINDOW);
+		if (!gsf_input_read (input, buf->length, buf->inblock))
+			g_error ("Failed to read %d bytes\n", buf->length);
+		compress_block (buf);
+	}
+
+       	if (buf->outstr->len) {
+		gsf_output_write (buf->output, 1, &buf->mask);
+		gsf_output_write (buf->output, buf->outstr->len, buf->outstr->str);
+	}
+
+	length = gsf_output_size (buf->output) - 3 - 1;
+	if (length > 0x0c0c) /* TESTME: is this really right ? */
+		length = 0x0c0c;
+	data[1] = length & 0xff;
+	data[2] |= (length >> 8);
+	gsf_output_seek (output, 0, G_SEEK_SET);
+	gsf_output_write (buf->output, 3, data); /* real data */
+}
+
+static void
+do_decompress (GsfInput *input, GsfOutput *output)
+{
+	gboolean err = FALSE;
+	guint8   data[HEADER_SIZE];
+	GByteArray *decompressed;
+	int      size, comp_len;
+
+	err |= !gsf_input_read (input, HEADER_SIZE, data);
+	if (data [0] != 0x01)
+		fprintf (stderr, "Odd pre-amble byte 0x%x\n", data[0]);
+	if ((data [2] & 0xf0) != 0xb0)
+		fprintf (stderr, "Odd high nibble 0x%x\n", (data[2] & 0xf0));
+	comp_len = ((data[2] & 0x0f) << 8) + data[1];
+	if (comp_len + 1 != gsf_input_size (input) - 3)
+		fprintf (stderr, "Size mismatch %d %d\n",
+			 comp_len + 1, (int) (gsf_input_size (input) - 3));
+
+	decompressed = gsf_msole_inflate (input, 3);
+	if (!decompressed)
+		fprintf (stderr, "Failed to decompress\n");
+
+	size = decompressed->len;
+	err |= !gsf_output_write (output, size,
+		g_byte_array_free (decompressed, FALSE));
+
+	if (err)
+		fprintf (stderr, "I/O error\n");
+}
+
+#define MAP(a,b)
+
+static void
+decode_dir (GsfInput *input)
+{
+	gboolean err = FALSE;
+	guint8 data[6];
+	int    op_count = 0;
+
+	while (gsf_input_remaining (input) && !err) {
+		unsigned i;
+		guint16 op;
+		guint32 length;
+		gboolean ascii = FALSE;
+		gboolean unicode = FALSE;
+		gboolean offset = FALSE;
+
+		err |= !gsf_input_read (input, 6, data);
+
+		op     = GSF_LE_GET_GUINT16 (&data[0]);
+		length = GSF_LE_GET_GUINT32 (&data[2]);
+
+		if (op == 9) {
+			fprintf (stderr, "** Quirk fix **\n");
+			length += 2;
+		}
+		
+		/* Special nasties / up-stream bugs */
+		switch (op) {
+		case 0x4:
+		case 0x16:
+		case 0x19:
+		case 0x1a:
+			ascii = TRUE;
+			break;
+		case 0x32:
+		case 0x3e:
+		case 0x47:
+			unicode = TRUE;
+			break;
+		case 0x31:
+			offset = TRUE;
+			break;
+		default:
+			break;
+		}
+
+		fprintf (stderr, "0x%.6x Op %3d 0x%.2x, length %3d: '",
+			(int)gsf_input_tell (input), op_count, op, length);
+
+		if (length > gsf_input_remaining (input)) {
+			fprintf (stderr, "Broken - foo !\n");
+			length = MIN (64, gsf_input_remaining (input));
+			err = TRUE;
+		}
+
+		if (ascii || unicode) {
+			int advance = ascii ? 1 : 2;
+			/* quick and dirty for now */
+			for (i = 0 ; i < length; i += advance) {
+				guint8 ug;
+				err |= !gsf_input_read (input, advance, &ug);
+				fprintf (stderr, "%c", byte_to_char (ug));
+			}
+			fprintf (stderr, "' - '%s", ascii ? "Ascii" : "Unicode");
+		} else if (offset) {
+			gint8 data[4];
+			guint32 offset;
+			g_assert (length == 4);
+			err |= !gsf_input_read (input, 4, data);
+			offset = GSF_LE_GET_GUINT32 (data);
+			fprintf (stderr, "0x%.8x' - 'Offset", offset);
+		} else {
+			GString *chars = g_string_new ("");
+
+			for (i = 0 ; i < length; i++) {
+				guint8 ug;
+				err |= !gsf_input_read (input, 1, &ug);
+				fprintf (stderr, "%.2x ", ug);
+				g_string_append_printf (chars, "%c", byte_to_char (ug));
+			}
+			fprintf (stderr, "' - '%s", chars->str);
+			g_string_free (chars, TRUE);
+		}
+		fprintf (stderr, "'\n");
+
+		op_count++;
+	}
+}
+
+int
+main (int argc, char *argv[])
+{
+	int i;
+	char const *src = NULL;
+	char const *dest = NULL;
+	GsfInput *input;
+	GsfOutput *output;
+	GError   *error = NULL;
+
+	/* options */
+	gboolean dir = FALSE;
+	gboolean compress = FALSE;
+
+	gsf_init ();
+
+	for (i = 1; i < argc; i++) {
+		if (argv[i][0] == '-') {
+			switch (argv[i][1]) {
+			case 'c':
+				compress = TRUE;
+				break;
+			case 'd':
+				dir = TRUE;
+				break;
+			default:
+				fprintf (stderr, "Unknown option '%s'\n", argv[i]);
+				return 1;
+				break;
+			}
+		} else if (!src)
+			src = argv[i];
+		else
+			dest = argv[i];
+	}
+
+	if (!src || (!dir && !dest)) {
+		fprintf (stderr, "%s: [-c(ompress)] <infile> <outfile>\n", argv[0]);
+		fprintf (stderr, "%s: [-d(ecode dir)] <infile>\n", argv[0]);
+		return 1;
+	}
+
+	input = gsf_input_stdio_new (src, &error);
+	if (dir)
+		decode_dir (input);
+	else {
+		output = gsf_output_stdio_new (dest, &error);
+		if (!input || !output) {
+			fprintf (stderr, "Failed to open input(%p)/output(%p): '%s'\n",
+				 input, output, error ? error->message : "<NoMsg>");
+			return 1;
+		}
+		
+		if (compress)
+			do_compress (input, output);
+		else
+			do_decompress (input, output);
+
+		g_object_unref (output);
+	}
+
+	g_object_unref (input);
+
+	gsf_shutdown ();
+
+	return 0;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-msvba.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,86 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-msvba.c:
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+#include <gsf/gsf-infile-msvba.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInfile *vba_wrapper;
+	GsfInput  *input;
+	GError    *err = NULL;
+	int i;
+
+	for (i = 1 ; i < argc ; i++) {
+		input = gsf_input_mmap_new (argv[i], NULL);
+		if (input == NULL)	/* Only report error if stdio fails too */
+			input = gsf_input_stdio_new (argv[i], &err);
+		if (input != NULL) {
+			GsfInfile *infile = gsf_infile_msole_new (input, &err);
+			if (infile != NULL) {
+				GsfInput *vba = gsf_infile_child_by_vname (infile, "_VBA_PROJECT_CUR", "VBA", NULL);
+				if (vba != NULL) {
+					fprintf( stderr, "%s\n",argv[i]);
+
+					vba_wrapper = gsf_infile_msvba_new (GSF_INFILE (vba), &err);
+					if (vba_wrapper != NULL) {
+						g_object_unref (G_OBJECT (vba_wrapper));
+					}
+					g_object_unref (G_OBJECT (vba));
+				} else {
+#if 0
+					g_warning ("'%s' : No VBA directory", argv[i]);
+#endif
+					continue;
+				}
+
+				g_object_unref (G_OBJECT (infile));
+			}
+			g_object_unref (G_OBJECT (input));
+		}
+
+		if (err != NULL) {
+			g_warning ("'%s' error: %s", argv[i], err->message);
+			g_error_free (err);
+		}
+	}
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-bzip.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-bzip.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-bzip.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,88 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-out-bzip.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *               2003 Dom Lachowicz (cinamod at hotmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-output-bzip.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput *output;
+	GsfOutput *bzout;
+	GError   *err;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[1], &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	bzout = gsf_output_bzip_new (output, &err);
+	if (bzout == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", "bzip output", err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	if (!gsf_output_printf (bzout,
+				"The %s sat on the %s.\n", "cat", "mat"))
+		return 1;
+	if (!gsf_output_printf (bzout, "%d %ss sat on the %s.\n",
+				2, "cat", "mat"))
+		return 1;
+	if (!gsf_output_puts (bzout,
+			      "The quick brown fox is afraid of the cats.\n"))
+		return 1;
+	if (!gsf_output_close (bzout))
+		return 1;
+	if (!gsf_output_close (output))
+		return 1;
+	g_object_unref (G_OBJECT (bzout));
+	g_object_unref (G_OBJECT (output));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip1.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip1.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip1.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,87 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-out-gzip1.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-output-gzip.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput *output;
+	GsfOutput *gzout;
+	GError   *err;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[1], &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	gzout = gsf_output_gzip_new (output, &err);
+	if (gzout == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", "gzip output", err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	if (!gsf_output_printf (gzout,
+				"The %s sat on the %s.\n", "cat", "mat"))
+		return 1;
+	if (!gsf_output_printf (gzout, "%d %ss sat on the %s.\n",
+				2, "cat", "mat"))
+		return 1;
+	if (!gsf_output_puts (gzout,
+			      "The quick brown fox is afraid of the cats.\n"))
+		return 1;
+	if (!gsf_output_close (gzout))
+		return 1;
+	if (!gsf_output_close (output))
+		return 1;
+	g_object_unref (G_OBJECT (gzout));
+	g_object_unref (G_OBJECT (output));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip2.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip2.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-gzip2.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,88 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-out-gzip2.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-output-gzip.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput *output;
+	GsfOutput *gzout;
+	GError   *err;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[1], &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	gzout = g_object_new (GSF_OUTPUT_GZIP_TYPE,
+			      "sink", output,
+			      "raw", TRUE,
+			      NULL);
+	if (gsf_output_error (gzout)) {
+		g_warning ("'%s' error: %s", "gzip output", gsf_output_error (gzout)->message);
+		g_object_unref (gzout);
+		return 1;
+	}
+
+	if (!gsf_output_printf (gzout,
+				"The %s sat on the %s.\n", "cat", "mat"))
+		return 1;
+	if (!gsf_output_printf (gzout, "%d %ss sat on the %s.\n",
+				2, "cat", "mat"))
+		return 1;
+	if (!gsf_output_puts (gzout,
+			      "The quick brown fox is afraid of the cats.\n"))
+		return 1;
+	if (!gsf_output_close (gzout))
+		return 1;
+	if (!gsf_output_close (output))
+		return 1;
+	g_object_unref (G_OBJECT (gzout));
+	g_object_unref (G_OBJECT (output));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-printf.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-printf.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-out-printf.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,73 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-input1.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-stdio.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput *output;
+	GError   *err;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[1], &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	if (!gsf_output_printf (output,
+				"The %s sat on the %s.\n", "cat", "mat"))
+		return 1;
+	if (!gsf_output_printf (output, "%d %ss sat on the %s.\n",
+				2, "cat", "mat"))
+		return 1;
+	if (!gsf_output_puts (output,
+			      "The quick brown fox is afraid of the cats.\n"))
+		return 1;
+	if (!gsf_output_close (output))
+		return 1;
+	g_object_unref (G_OBJECT (output));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-outmem-printf.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-outmem-printf.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-outmem-printf.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,91 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-outmem-printf.c:
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-memory.h>
+
+#include <stdio.h>
+
+static gboolean
+test_write_once (GsfOutput *output)
+{
+	if (!gsf_output_printf (output,
+				"The %s sat on the %s.\n", "cat", "mat"))
+		return FALSE;
+	if (!gsf_output_printf (output, "%d %ss sat on the %s.\n",
+				2, "cat", "mat"))
+		return FALSE;
+	if (!gsf_output_puts (output,
+			      "The quick brown fox is afraid of the cats.\n"))
+		return FALSE;
+
+	return TRUE;
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput  *output;
+	guint8 const *buf;
+	gsf_off_t size;
+	FILE *fout;
+	int i;
+	int res;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	fout = fopen (argv[1], "w");
+	if (!fout) {
+		perror (argv[1]);
+		return 1;
+	}
+
+	output = gsf_output_memory_new ();
+	for (i = 1; i <= 100; i++) {
+		if (!gsf_output_printf (output, "=== Round %d ===\n", i))
+		    return 1;
+		if (!test_write_once (output))
+		    return 1;
+	}
+
+	buf = gsf_output_memory_get_bytes (GSF_OUTPUT_MEMORY (output));
+	size = gsf_output_size (output);
+	res = fwrite (buf, size, 1, fout);
+	fclose (fout);
+	gsf_output_close (output);
+	g_object_unref (output);
+	return (res == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-restore-msole.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-restore-msole.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-restore-msole.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,131 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-cp-msole.c: Test gsf-outfile-msole by cloning a file the hard way
+ *
+ * Copyright (C) 2002-2003	Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-stdio.h>
+#include <gsf/gsf-infile-msole.h>
+
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-msole.h>
+
+#include <stdio.h>
+
+static void
+clone (GsfInput *input, GsfOutput *output)
+{
+	guint8 const *data;
+	size_t len;
+	int i;
+
+	if (gsf_input_size (input) > 0) {
+		while ((len = gsf_input_remaining (input)) > 0) {
+			/* copy in odd sized chunks to exercise system */
+			if (len > 314)
+				len = 314;
+			if (NULL == (data = gsf_input_read (input, len, NULL))) {
+				g_warning ("error reading ?");
+				return;
+			}
+			if (!gsf_output_write (output, len, data)) {
+				g_warning ("error writing ?");
+				return;
+			}
+		}
+	} 
+	
+	if (GSF_IS_INFILE (input) &&
+	    gsf_infile_num_children (GSF_INFILE (input)) > 0) {
+		GsfInfile *in = GSF_INFILE (input);
+		GsfOutfile *out = GSF_OUTFILE (output);
+		GsfInput *src;
+		GsfOutput *dst;
+
+		for (i = 0 ; i < gsf_infile_num_children (in) ; i++) {
+			src = gsf_infile_child_by_index (in, i);
+			dst = gsf_outfile_new_child  (out,
+				gsf_infile_name_by_index  (in, i),
+				GSF_IS_INFILE (src) && gsf_infile_num_children (GSF_INFILE (src)) >= 0);
+			clone (src, dst);
+		}
+	}
+
+	gsf_output_close (output);
+	g_object_unref (G_OBJECT (output));
+	g_object_unref (G_OBJECT (input));
+}
+
+static int
+test (char *argv[])
+{
+	GsfInfile  *infile;
+	GsfOutfile *outfile;
+	GsfOutput  *output;
+	GError    *err;
+
+	fprintf (stderr, "%s\n", argv [1]);
+	infile = gsf_infile_stdio_new (argv[1], &err);
+	if (infile == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[2], &err);
+	if (output == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[2], err->message);
+		g_error_free (err);
+		g_object_unref (G_OBJECT (infile));
+		return 1;
+	}
+
+	outfile = gsf_outfile_msole_new (output);
+	g_object_unref (G_OBJECT (output));
+	clone (GSF_INPUT (infile), GSF_OUTPUT (outfile));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	if (argc != 3) {
+		fprintf (stderr, "%s : infile outfile\n", argv [0]);
+		return 1;
+	}
+
+	gsf_init ();
+	res = test (argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-textline.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-textline.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-textline.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,75 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-textline.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-input-textline.h>
+
+#include <stdio.h>
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput     	 *input;
+	GsfInputTextline *textline;
+	GError       	 *err;
+	unsigned char *line;
+
+	if (argc < 2) {
+		fprintf (stderr, "Usage : %s <text_filename>\n", argv[0]);
+		return 1;
+	}
+
+	fprintf (stderr, "%s\n", argv[1]);
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+	textline = (GsfInputTextline *)gsf_input_textline_new (input);
+	if (textline == NULL) {
+		g_warning ("unable to create a textline");
+		return 2;
+	}
+
+	while (NULL != (line = gsf_input_textline_ascii_gets (textline)))
+		puts (line);
+
+	g_object_unref (G_OBJECT (input));
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out-subdirs.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out-subdirs.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out-subdirs.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,113 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-zip-out.c:
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-zip.h>
+
+#include <stdio.h>
+#include <string.h>
+
+static gboolean
+test_write_once (GsfOutput *output)
+{
+	char const *str = "The cat sat on the mat. 2 cats sat on the mat. The quick brown fox is afraid of the cats.\n";
+
+	return gsf_output_write (output, strlen (str), str);
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput  *output;
+	GsfOutfile *outfile, *dir1, *dir2;
+	GsfOutput  *ch1, *ch2, *ch3;
+	GError   *err;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[1], &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+	outfile = gsf_outfile_zip_new (output, &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s",
+			   "gsf_outfile_zip_new", err->message);
+		g_error_free (err);
+		return 1;
+	}
+	g_object_unref (G_OBJECT (output));
+	dir1 = GSF_OUTFILE (gsf_outfile_new_child  (outfile, "test", TRUE));
+	ch1  = gsf_outfile_new_child  (dir1, "portfolio.abw", FALSE);
+	ch2  = gsf_outfile_new_child  (dir1, "test.abw", FALSE);
+	dir2 = GSF_OUTFILE (gsf_outfile_new_child  (dir1, "1", TRUE));
+	if (!gsf_output_close ((GsfOutput *) dir1))
+		return 1;
+	ch3  = gsf_outfile_new_child  (dir2, "simply.pve", FALSE);
+	
+	if (!test_write_once (ch1))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) ch1))
+		return 1;
+	if (!test_write_once (ch2))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) ch2))
+		return 1;
+	if (!test_write_once (ch3))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) ch3))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) dir2))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) outfile))
+		return 1;
+	g_object_unref (G_OBJECT (outfile));
+	g_object_unref (ch1);
+	g_object_unref (ch2);
+	g_object_unref (ch3);
+	g_object_unref (dir1);
+	g_object_unref (dir2);
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip-out.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,93 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-zip-out.c:
+ *
+ * Copyright (C) 2002-2003 Jon K Hellan (hellan at acm.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-output-stdio.h>
+#include <gsf/gsf-outfile.h>
+#include <gsf/gsf-outfile-zip.h>
+
+#include <stdio.h>
+#include <string.h>
+
+static gboolean
+test_write_once (GsfOutput *output)
+{
+	char const *str = "The cat sat on the mat. 2 cats sat on the mat. The quick brown fox is afraid of the cats.\n";
+
+	return gsf_output_write (output, strlen (str), str);
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfOutput  *output;
+	GsfOutfile *outfile;
+	GsfOutput  *child;
+	GError   *err;
+
+	if (argc != 2) {
+		fprintf (stderr, "Usage : %s outfile\n", argv[0]);
+		return 1;
+	}
+
+	output = gsf_output_stdio_new (argv[1], &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return 1;
+	}
+	outfile = gsf_outfile_zip_new (output, &err);
+	if (output == NULL) {
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s",
+			   "gsf_outfile_zip_new", err->message);
+		g_error_free (err);
+		return 1;
+	}
+	g_object_unref (G_OBJECT (output));
+	child = gsf_outfile_new_child  (outfile, "child", FALSE);
+
+	if (!test_write_once (child))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) child))
+		return 1;
+	if (!gsf_output_close ((GsfOutput *) outfile))
+		return 1;
+	g_object_unref (G_OBJECT (outfile));
+	g_object_unref (child);
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip1.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip1.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip1.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,98 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-zip1.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-zip.h>
+
+#include <stdio.h>
+
+static void
+ls_R (GsfInput *input)
+{
+	int i;
+	gboolean is_dir = GSF_IS_INFILE (input) &&
+		(gsf_infile_num_children (GSF_INFILE (input)) >= 0);
+	
+	printf ("%c '%s' %" GSF_OFF_T_FORMAT "\n",
+		(is_dir ? 'd' : ' '),
+		gsf_input_name (GSF_INPUT (input)),
+		gsf_input_size (GSF_INPUT (input)));
+
+	if (!is_dir)
+		return;
+
+	puts ("{");
+	for (i = 0 ; i < gsf_infile_num_children (GSF_INFILE (input)) ; i++)
+		ls_R (gsf_infile_child_by_index (GSF_INFILE (input), i));
+	puts ("}");
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput  *input;
+	GsfInfile *infile;
+	GError    *err;
+	int i;
+
+	for (i = 1 ; i < argc ; i++) {
+		puts (argv[i]);
+		input = gsf_input_stdio_new (argv[i], &err);
+		if (input == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' error: %s", argv[i], err->message);
+			g_error_free (err);
+			continue;
+		}
+
+		infile = gsf_infile_zip_new (input, &err);
+		if (infile == NULL) {
+
+			g_return_val_if_fail (err != NULL, 1);
+
+			g_warning ("'%s' Not a Zip file: %s", argv[i], err->message);
+			g_error_free (err);
+			continue;
+		}
+
+		ls_R (GSF_INPUT (infile));
+		g_object_unref (G_OBJECT (infile));
+		g_object_unref (G_OBJECT (input));
+	}
+
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip2.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip2.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/tests/test-zip2.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,113 @@
+/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * test-zip2.c:
+ *
+ * Copyright (C) 2002-2003 Jody Goldberg (jody at gnome.org)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-zip.h>
+#include <gsf/gsf-input-textline.h>
+
+#include <stdio.h>
+#include <string.h>
+
+static void
+dump_child (GsfInfile *infile, char const *childname)
+{
+	GsfInput *child = gsf_infile_child_by_name (infile, childname);
+	GsfInputTextline *textinput;
+	unsigned char *res;
+	int len = 0;
+	
+	if (child == NULL) {
+		printf ("not an OpenOffice document\n");
+		return;
+	}
+
+	textinput = (GsfInputTextline *)gsf_input_textline_new (child);
+	if (textinput == NULL) {
+		printf ("Could not read lines from %s",
+			gsf_input_name (child));
+		return;
+	}
+
+	do {
+		res = gsf_input_textline_ascii_gets (textinput);
+		if (res) {
+			printf ("'%s'\n", res);
+			len += strlen (res) + 1;
+		}
+	} while (res);
+
+	printf ("Finished reading - %d bytes\n", len);
+	g_object_unref (G_OBJECT (textinput));
+	g_object_unref (G_OBJECT (child));
+}
+
+static int
+test (int argc, char *argv[])
+{
+	GsfInput  *input;
+	GsfInfile *infile;
+	GError    *err = NULL;
+	int i;
+
+	puts (argv[1]);
+	input = gsf_input_stdio_new (argv[1], &err);
+	if (input == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' error: %s", argv[1], err->message);
+		g_error_free (err);
+		return -1;
+	}
+
+	infile = gsf_infile_zip_new (input, &err);
+	if (infile == NULL) {
+
+		g_return_val_if_fail (err != NULL, 1);
+
+		g_warning ("'%s' Not a Zip file: %s", argv[1], err->message);
+		g_error_free (err);
+		g_object_unref (G_OBJECT (input));
+		return -1;
+	}
+
+	for (i = 2 ; i < argc ; i++) {
+		dump_child (infile, argv[i]);
+	}
+	g_object_unref (G_OBJECT (infile));
+	g_object_unref (G_OBJECT (input));
+	
+	return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+	int res;
+
+	gsf_init ();
+	res = test (argc, argv);
+	gsf_shutdown ();
+
+	return res;
+}

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,32 @@
+ at INTLTOOL_SCHEMAS_RULE@
+
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS) $(LIBXML_CFLAGS)
+LDADD = $(top_builddir)/gsf/libgsf-1.la $(LIBGSF_LIBS)
+
+bin_PROGRAMS = gsf-office-thumbnailer
+
+gsf_office_thumbnailer_SOURCES =	\
+	main.c
+
+schema_files = \
+	gsf-office-thumbnailer.schemas.in
+
+schema_DATA = gsf-office-thumbnailer.schemas
+
+schemadir = $(GCONF_SCHEMA_FILE_DIR)
+
+install-data-local:
+if GCONF_SCHEMAS_INSTALL
+	if test -z "$(DESTDIR)"; then \
+	  for p in $(schema_DATA); do \
+	    GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
+	      $(GCONFTOOL) --makefile-install-rule $$p; \
+	  done \
+	fi
+endif
+
+EXTRA_DIST =         	\
+	$(schema_files)  
+
+DISTCLEANFILES = \
+	$(schema_DATA)

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/Makefile.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,575 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BZ2_LIBS = @BZ2_LIBS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_GTK_DOC_FALSE = @ENABLE_GTK_DOC_FALSE@
+ENABLE_GTK_DOC_TRUE = @ENABLE_GTK_DOC_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GTK_DOC_INSTALLED_FALSE = @GTK_DOC_INSTALLED_FALSE@
+GTK_DOC_INSTALLED_TRUE = @GTK_DOC_INSTALLED_TRUE@
+GTK_DOC_USE_LIBTOOL_FALSE = @GTK_DOC_USE_LIBTOOL_FALSE@
+GTK_DOC_USE_LIBTOOL_TRUE = @GTK_DOC_USE_LIBTOOL_TRUE@
+HTML_DIR = @HTML_DIR@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBGSF_CFLAGS = @LIBGSF_CFLAGS@
+LIBGSF_GNOME_CFLAGS = @LIBGSF_GNOME_CFLAGS@
+LIBGSF_GNOME_LIBS = @LIBGSF_GNOME_LIBS@
+LIBGSF_LIBS = @LIBGSF_LIBS@
+LIBGSF_MAJOR_VERSION = @LIBGSF_MAJOR_VERSION@
+LIBGSF_MICRO_VERSION = @LIBGSF_MICRO_VERSION@
+LIBGSF_MINOR_VERSION = @LIBGSF_MINOR_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+VERSION_INFO = @VERSION_INFO@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GCONF_FALSE = @WITH_GCONF_FALSE@
+WITH_GCONF_TRUE = @WITH_GCONF_TRUE@
+WITH_LIBGSF_GNOME_FALSE = @WITH_LIBGSF_GNOME_FALSE@
+WITH_LIBGSF_GNOME_TRUE = @WITH_LIBGSF_GNOME_TRUE@
+WITH_PYTHON_FALSE = @WITH_PYTHON_FALSE@
+WITH_PYTHON_TRUE = @WITH_PYTHON_TRUE@
+XGETTEXT = @XGETTEXT@
+Z_CPPFLAGS = @Z_CPPFLAGS@
+Z_LIBS = @Z_LIBS@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+AM_CPPFLAGS = -I$(top_srcdir) $(LIBGSF_CFLAGS) $(LIBXML_CFLAGS)
+LDADD = $(top_builddir)/gsf/libgsf-1.la $(LIBGSF_LIBS)
+
+bin_PROGRAMS = gsf-office-thumbnailer
+
+gsf_office_thumbnailer_SOURCES = \
+	main.c
+
+
+schema_files = \
+	gsf-office-thumbnailer.schemas.in
+
+
+schema_DATA = gsf-office-thumbnailer.schemas
+
+schemadir = $(GCONF_SCHEMA_FILE_DIR)
+
+EXTRA_DIST = \
+	$(schema_files)  
+
+
+DISTCLEANFILES = \
+	$(schema_DATA)
+
+subdir = thumbnailer
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/gsf-config.h
+CONFIG_CLEAN_FILES =
+bin_PROGRAMS = gsf-office-thumbnailer$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+
+am_gsf_office_thumbnailer_OBJECTS = main.$(OBJEXT)
+gsf_office_thumbnailer_OBJECTS = $(am_gsf_office_thumbnailer_OBJECTS)
+gsf_office_thumbnailer_LDADD = $(LDADD)
+gsf_office_thumbnailer_DEPENDENCIES = $(top_builddir)/gsf/libgsf-1.la
+gsf_office_thumbnailer_LDFLAGS =
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+ at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/main.Po
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(gsf_office_thumbnailer_SOURCES)
+DATA = $(schema_DATA)
+
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+SOURCES = $(gsf_office_thumbnailer_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  thumbnailer/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(bindir)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	     || test -f $$p1 \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
+	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
+	  rm -f $(DESTDIR)$(bindir)/$$f; \
+	done
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+gsf-office-thumbnailer$(EXEEXT): $(gsf_office_thumbnailer_OBJECTS) $(gsf_office_thumbnailer_DEPENDENCIES) 
+	@rm -f gsf-office-thumbnailer$(EXEEXT)
+	$(LINK) $(gsf_office_thumbnailer_LDFLAGS) $(gsf_office_thumbnailer_OBJECTS) $(gsf_office_thumbnailer_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/main.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+ at am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+ at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+ at am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+ at am__fastdepCC_TRUE@	fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+schemaDATA_INSTALL = $(INSTALL_DATA)
+install-schemaDATA: $(schema_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(schemadir)
+	@list='$(schema_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " $(schemaDATA_INSTALL) $$d$$p $(DESTDIR)$(schemadir)/$$f"; \
+	  $(schemaDATA_INSTALL) $$d$$p $(DESTDIR)$(schemadir)/$$f; \
+	done
+
+uninstall-schemaDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(schema_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(schemadir)/$$f"; \
+	  rm -f $(DESTDIR)$(schemadir)/$$f; \
+	done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(ETAGS_ARGS)$$tags$$unique" \
+	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	     $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkinstalldirs) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(DATA)
+
+installdirs:
+	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(schemadir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-schemaDATA
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am \
+	uninstall-schemaDATA
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-data-local install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-schemaDATA install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-binPROGRAMS uninstall-info-am \
+	uninstall-schemaDATA
+
+ at INTLTOOL_SCHEMAS_RULE@
+
+install-data-local:
+ at GCONF_SCHEMAS_INSTALL_TRUE@	if test -z "$(DESTDIR)"; then \
+ at GCONF_SCHEMAS_INSTALL_TRUE@	  for p in $(schema_DATA); do \
+ at GCONF_SCHEMAS_INSTALL_TRUE@	    GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
+ at GCONF_SCHEMAS_INSTALL_TRUE@	      $(GCONFTOOL) --makefile-install-rule $$p; \
+ at GCONF_SCHEMAS_INSTALL_TRUE@	  done \
+ at GCONF_SCHEMAS_INSTALL_TRUE@	fi
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/gsf-office-thumbnailer.schemas.in
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/gsf-office-thumbnailer.schemas.in	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/gsf-office-thumbnailer.schemas.in	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,77 @@
+<gconfschemafile>
+    <schemalist>
+
+        <schema>
+            <key>/schemas/desktop/gnome/thumbnailers/application at vnd.ms-powerpoint/enable</key>
+            <applyto>/desktop/gnome/thumbnailers/application at vnd.ms-powerpoint/enable</applyto>
+            <owner>libgsf</owner>
+            <type>bool</type>
+            <default>true</default>
+            <locale name="C">
+                <short>Enable thumbnailing of Microsoft PowerPoint documents</short>
+                <long>Boolean options available, true enables thumbnailing and false disables the creation of new thumbnails</long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/desktop/gnome/thumbnailers/application at vnd.ms-powerpoint/command</key>
+            <applyto>/desktop/gnome/thumbnailers/application at vnd.ms-powerpoint/command</applyto>
+            <owner>libgsf</owner>
+            <type>string</type>
+            <default>gsf-office-thumbnailer -i %i -o %o -s %s</default>
+            <locale name="C">
+                <short>Thumbnail command for Microsoft PowerPoint documents</short>
+                <long>Valid command plus arguments for the Microsoft PowerPoint thumbnailer.</long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/desktop/gnome/thumbnailers/application at vnd.ms-excel/enable</key>
+            <applyto>/desktop/gnome/thumbnailers/application at vnd.ms-excel/enable</applyto>
+            <owner>libgsf</owner>
+            <type>bool</type>
+            <default>true</default>
+            <locale name="C">
+                <short>Enable thumbnailing of Microsoft Excel documents</short>
+                <long>Boolean options available, true enables thumbnailing and false disables the creation of new thumbnails</long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/desktop/gnome/thumbnailers/application at vnd.ms-excel/command</key>
+            <applyto>/desktop/gnome/thumbnailers/application at vnd.ms-excel/command</applyto>
+            <owner>libgsf</owner>
+            <type>string</type>
+            <default>gsf-office-thumbnailer -i %i -o %o -s %s</default>
+            <locale name="C">
+                <short>Thumbnail command for Microsoft Excel documents</short>
+                <long>Valid command plus arguments for the Microsoft Excel thumbnailer.</long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/desktop/gnome/thumbnailers/application at msword/enable</key>
+            <applyto>/desktop/gnome/thumbnailers/application at msword/enable</applyto>
+            <owner>libgsf</owner>
+            <type>bool</type>
+            <default>true</default>
+            <locale name="C">
+                <short>Enable thumbnailing of Microsoft Word documents</short>
+                <long>Boolean options available, true enables thumbnailing and false disables the creation of new thumbnails</long>
+            </locale>
+        </schema>
+
+        <schema>
+            <key>/schemas/desktop/gnome/thumbnailers/application at msword/command</key>
+            <applyto>/desktop/gnome/thumbnailers/application at msword/command</applyto>
+            <owner>libgsf</owner>
+            <type>string</type>
+            <default>gsf-office-thumbnailer -i %i -o %o -s %s</default>
+            <locale name="C">
+                <short>Thumbnail command for Microsoft Word documents</short>
+                <long>Valid command plus arguments for the Microsoft Word thumbnailer.</long>
+            </locale>
+        </schema>
+
+    </schemalist>
+</gconfschemafile>

Added: gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/main.c
===================================================================
--- gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/main.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/lib/libgsf-1.12.3/thumbnailer/main.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -0,0 +1,224 @@
+/* GNOME thumbnailer for Office files
+ * Copyright (C) 2005 Novell, Inc.
+ *
+ * Authors:
+ *   Federico Mena-Quintero <federico at novell.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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 Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
+ * USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <glib.h>
+#include <gsf/gsf-input-memory.h>
+#include <gsf/gsf-input-stdio.h>
+#include <gsf/gsf-infile.h>
+#include <gsf/gsf-infile-msole.h>
+#include <gsf/gsf-meta-names.h>
+#include <gsf/gsf-msole-utils.h>
+#include <gsf/gsf-utils.h>
+#include <gsf/gsf-clip-data.h>
+
+G_GNUC_NORETURN static void
+show_error_string_and_exit (const char *str)
+{
+	fprintf (stderr, "error: %s\n", str);
+	exit (EXIT_FAILURE);
+}
+
+G_GNUC_NORETURN static void
+show_error_and_exit (GError *error)
+{
+	if (error)
+		show_error_string_and_exit (error->message);
+	else
+		show_error_string_and_exit ("an error happened, and we didn't get a GError.  Exiting.");
+}
+
+static void
+call_convert (const char *in_filename, const char *out_filename, int thumb_size)
+{
+	char *in_quote;
+	char *out_quote;
+	char *cmd_line;
+	GError *error;
+	gint exit_status;
+
+	in_quote = g_shell_quote (in_filename);
+	out_quote = g_shell_quote (out_filename);
+	cmd_line = g_strdup_printf ("convert -resize %dx%d %s png:%s",
+				    thumb_size, thumb_size,
+				    in_quote,
+				    out_quote);
+	fprintf (stderr, "calling %s\n", cmd_line);
+	g_free (in_quote);
+	g_free (out_quote);
+
+	error = NULL;
+	if (!g_spawn_command_line_sync (cmd_line, NULL, NULL, &exit_status, &error))
+		show_error_and_exit (error);
+
+	g_free (cmd_line);
+}
+
+static void
+write_thumbnail (const char *filename, gconstpointer data, gsize size, int thumb_size)
+{
+	char *tmp_name;
+	int fd;
+	FILE *file;
+
+	tmp_name = g_strdup_printf ("%s.XXXXXX", filename);
+	fd = g_mkstemp (tmp_name);
+	if (fd == -1) {
+		perror ("Could not create temporary file");
+		exit (EXIT_FAILURE);
+	}
+
+	file = fdopen (fd, "w");
+	if (!file) {
+		show_error_string_and_exit ("Could not open temporary file for writing");
+		exit (EXIT_FAILURE);
+	}
+
+	if (fwrite (data, 1, size, file) != size) {
+		perror ("Could not write data to output file");
+		exit (EXIT_FAILURE);
+	}
+
+	if (fclose (file) != 0) {
+		perror ("Could not close oputput file");
+		exit (EXIT_FAILURE);
+	}
+
+	call_convert (tmp_name, filename, thumb_size);
+	unlink (tmp_name);
+}
+
+static void
+read_thumbnail_and_write (const char *in_filename, const char *out_filename, int thumb_size)
+{
+	GsfInput *input;
+	GsfInfile *infile;
+	GError *error;
+	GsfInput *summary_stream;
+	GsfDocMetaData *meta_data;
+	GsfDocProp *thumb_doc_prop;
+	GValue const *thumb_value;
+	GsfClipData *clip_data;
+	GsfClipFormat clip_format;
+	gconstpointer data;
+	gsize size;
+
+	input = gsf_input_mmap_new (in_filename, NULL);
+	if (!input) {
+		error = NULL;
+		input = gsf_input_stdio_new (in_filename, &error);
+		if (!input)
+			show_error_and_exit (error);
+	}
+
+	input = gsf_input_uncompress (input);
+
+	error = NULL;
+	infile = gsf_infile_msole_new (input, &error);
+	if (!infile)
+		show_error_and_exit (error);
+
+	summary_stream = gsf_infile_child_by_name (infile, "\05SummaryInformation");
+	if (!summary_stream)
+		show_error_string_and_exit ("Could not find the SummaryInformation stream");
+
+	meta_data = gsf_doc_meta_data_new ();
+	error = gsf_msole_metadata_read (summary_stream, meta_data);
+	if (error)
+		show_error_and_exit (error);
+
+	thumb_doc_prop = gsf_doc_meta_data_lookup (meta_data, GSF_META_NAME_THUMBNAIL);
+	if (!thumb_doc_prop)
+		show_error_string_and_exit ("The metadata does not have a thumbnail property");
+
+	thumb_value = gsf_doc_prop_get_val (thumb_doc_prop);
+	if (!thumb_value)
+		show_error_string_and_exit ("We got the thumbnail property, but it didn't have a value!?");
+
+	clip_data = GSF_CLIP_DATA (g_value_get_object (thumb_value));
+
+	clip_format = gsf_clip_data_get_format (clip_data);
+
+	if (clip_format == GSF_CLIP_FORMAT_WINDOWS_CLIPBOARD) {
+		GsfClipFormatWindows win_format;
+
+		error = NULL;
+		win_format = gsf_clip_data_get_windows_clipboard_format (clip_data, &error);
+		if (win_format == GSF_CLIP_FORMAT_WINDOWS_ERROR)
+			show_error_and_exit (error);
+	}
+
+	error = NULL;
+	data = gsf_clip_data_peek_real_data (clip_data, &size, &error);
+
+	if (!data)
+		show_error_and_exit (error);
+
+	write_thumbnail (out_filename, data, size, thumb_size);
+
+	g_object_unref (clip_data);
+
+	g_object_unref (meta_data);
+	g_object_unref (summary_stream);
+	g_object_unref (infile);
+	g_object_unref (input);
+}
+
+/* Command-line options */
+static int option_size = -1;
+static char *option_input_filename = NULL;
+static char *option_output_filename = NULL;
+
+static GOptionEntry option_entries[] = {
+	{ "input", 'i', 0, G_OPTION_ARG_FILENAME, &option_input_filename,
+	  "Name of file for which to create a thumbnail",
+	  "filename" },
+	{ "output", 'o', 0, G_OPTION_ARG_FILENAME, &option_output_filename,
+	  "Name of the file to put the thumbnail",
+	  "filename" },
+	{ "size", 's', 0, G_OPTION_ARG_INT, &option_size,
+	  "Size of thumbnail in pixels; the thumbnail will be at most N*N pixels large",
+	  "N" },
+	{ NULL, 0, 0, 0, NULL, NULL, NULL }
+};
+
+int
+main (int argc, char **argv)
+{
+	GOptionContext *option_ctx;
+
+	option_ctx = g_option_context_new ("Options");
+	g_option_context_add_main_entries (option_ctx, option_entries, NULL); /* FIXME: no translation domain */
+	if (!g_option_context_parse (option_ctx, &argc, &argv, NULL)
+	    || option_size == -1
+	    || option_input_filename == NULL
+	    || option_output_filename == NULL) {
+		fprintf (stderr, "Invalid usage; type \"%s --help\" for instructions.  All the options must be used.\n", argv[0]);
+		exit (EXIT_FAILURE);
+	}
+
+	gsf_init ();
+	read_thumbnail_and_write (option_input_filename, option_output_filename, option_size);
+
+	return 0;
+}

Modified: gnucash/branches/goffice-update/src/gnome-utils/Makefile.am
===================================================================
--- gnucash/branches/goffice-update/src/gnome-utils/Makefile.am	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/src/gnome-utils/Makefile.am	2005-11-13 23:11:36 UTC (rev 11922)
@@ -4,7 +4,7 @@
 pkglib_LTLIBRARIES = libgncmod-gnome-utils.la libgw-gnome-utils.la
 
 # Note that src/gnome-utils CANNOT depend on src/gnome!
-if USE_LIBGOFFICE
+
 AM_CFLAGS = \
   -DPREFIX=\"${prefix}\" \
   -DSYSCONFDIR=\"${GNC_CONFIGDIR}\" \
@@ -25,36 +25,8 @@
   ${GTKHTML_CFLAGS} \
   ${GUILE_INCS} \
   ${G_WRAP_COMPILE_ARGS} \
-  ${GSF_CFLAGS} \
   ${QOF_CFLAGS} \
-  ${LIBGOFFICE_CFLAGS}
-else
-AM_CFLAGS = \
-  -DPREFIX=\"${prefix}\" \
-  -DSYSCONFDIR=\"${GNC_CONFIGDIR}\" \
-  -DDATADIR=\"${GNC_SHAREDIR}\" \
-  -DLIBDIR=\"${GNC_LIBDIR}\" \
-  -I${top_srcdir}/src/core-utils \
-  -I${top_srcdir}/src/gnc-module \
-  -I${top_srcdir}/src/engine \
-  -I${top_srcdir}/src/backend/file \
-  -I${top_srcdir}/src/network-utils \
-  -I${top_srcdir}/src/app-utils \
-  -I${top_srcdir}/lib/goffice \
-  -I${top_srcdir}/lib/goffice/split \
-  -I${top_srcdir}/lib \
-  -I${top_srcdir}/src \
-  ${LIBGUPPI_CFLAGS} \
-  ${GNOME_CFLAGS} \
-  ${GTKHTML_CFLAGS} \
-  ${GLIB_CFLAGS} \
-  ${GLADE_CFLAGS} \
-  ${GUILE_INCS} \
-  ${GNOME_PRINT_CFLAGS} \
-  ${G_WRAP_COMPILE_ARGS} \
-  ${QOF_CFLAGS} \
-  ${GSF_CFLAGS}
-endif
+  ${GOFFICE_CFLAGS}
 
 libgncmod_gnome_utils_la_SOURCES = \
   QuickFill.c \
@@ -197,7 +169,6 @@
   gw-gnome-utils.h \
   search-param.h
 
-if USE_LIBGOFFICE
 libgncmod_gnome_utils_la_LIBADD = \
   ${top_builddir}/src/core-utils/libcore-utils.la \
   ${top_builddir}/src/gnc-module/libgncmodule.la \
@@ -217,31 +188,8 @@
   ${DB_LIBS} \
   ${GSF_LIBS} \
   ${QOF_LIBS} \
-  ${LIBGOFFICE_LIBS} \
+  ${GOFFICE_LIBS} \
   ${XML_LIBS}
-else
-libgncmod_gnome_utils_la_LIBADD = \
-  ${top_builddir}/src/core-utils/libcore-utils.la \
-  ${top_builddir}/src/gnc-module/libgncmodule.la \
-  ${top_builddir}/src/engine/libgncmod-engine.la \
-  ${top_builddir}/src/calculation/libgncmod-calculation.la \
-  ${top_builddir}/src/network-utils/libgncmod-network-utils.la \
-  ${top_builddir}/src/app-utils/libgncmod-app-utils.la \
-  ${top_builddir}/lib/goffice/libgoffice.la \
-  ${LIBGUPPI_LIBS} \
-  ${GNOME_LIBS} \
-  ${GNOME_PRINT_LIBS} \
-  ${GTKHTML_LIBS} \
-  ${GUILE_LIBS} \
-  ${GDK_PIXBUF_LIBS} \
-  ${GLADE_LIBS} \
-  ${GUILE_LIBS} \
-  ${GLIB_LIBS} \
-  ${DB_LIBS} \
-  ${GSF_LIBS} \
-  ${QOF_LIBS} \
-  ${XML_LIBS}
-endif
 
 libgw_gnome_utils_la_SOURCES = gw-gnome-utils.c
 

Modified: gnucash/branches/goffice-update/src/gnome-utils/gnc-html-graph-gog.c
===================================================================
--- gnucash/branches/goffice-update/src/gnome-utils/gnc-html-graph-gog.c	2005-11-13 16:20:49 UTC (rev 11921)
+++ gnucash/branches/goffice-update/src/gnome-utils/gnc-html-graph-gog.c	2005-11-13 23:11:36 UTC (rev 11922)
@@ -32,7 +32,6 @@
 #include "gnc-html.h"
 #include "gnc-trace.h"
 #include "gnc-engine.h"
-#ifdef HAVE_GOFFICE
 #include <goffice/goffice.h>
 #include <goffice/graph/gog-graph.h>
 #include <goffice/graph/gog-object.h>
@@ -45,21 +44,8 @@
 #include <goffice/graph/gog-data-set.h>
 #include <goffice/graph/gog-renderer-svg.h>
 #include <goffice/data/go-data-simple.h>
-#else
-#include "goffice.h"
-#include "graph/gog-graph.h"
-#include "graph/gog-object.h"
-#include "graph/gog-plot.h"
-#include "graph/gog-series.h"
-#include "graph/go-data-simple.h"
-#include "utils/go-color.h"
-#include "utils/go-pattern.h"
-#include "graph/gog-renderer-pixbuf.h"
-#include "graph/gog-renderer-svg.h"
-#include "graph/gog-data-set.h"
-#include "graph/gog-styled-object.h"
-#include "graph/gog-style.h"
-#endif
+#include <goffice/app/go-plugin.h>
+#include <goffice/app/go-plugin-loader-module.h>
 #include <gsf/gsf.h>
 #include <gsf/gsf-output-memory.h>
 
@@ -96,6 +82,9 @@
   PINFO( "init gog graphing" );
   
   libgoffice_init();
+  
+  /* Initialize plugins manager */
+  go_plugins_init (NULL, NULL, NULL, NULL, TRUE, GO_PLUGIN_LOADER_MODULE_TYPE);
 
   gnc_html_register_object_handler( "gnc-guppi-pie", handle_piechart );
   gnc_html_register_object_handler( "gnc-guppi-bar", handle_barchart );
@@ -242,9 +231,6 @@
   }
 
   tmp = gog_object_add_by_name(chart, "Title", NULL);
-#ifndef HAVE_GOFFICE
-  gog_object_set_pos(tmp, GOG_POSITION_N | GOG_POSITION_ALIGN_START);
-#endif
   titleScalar = go_data_scalar_str_new(totalTitle->str, FALSE);
   gog_dataset_set_dim(GOG_DATASET(tmp), 0, titleScalar, NULL);
 
@@ -316,6 +302,8 @@
   double *data = NULL;
   char **labels = NULL, **colors = NULL;
 
+  printf("handle_piechart\n");
+
   gtkhtml_3_3_2_bug_workaround(eb);
 
   // parse data from the text-ized params.
@@ -338,6 +326,7 @@
 
   if (!create_basic_plot_elements("GogPiePlot", &graph, &chart, &plot))
   {
+    printf("unable to create_basic_plot_elements\n");
     return FALSE;
   }
 
@@ -345,19 +334,11 @@
   GOG_STYLED_OBJECT(graph)->style->outline.color = RGBA_BLACK;
 
   series = gog_plot_new_series(plot);
-#ifdef HAVE_GOFFICE
   labelData = go_data_vector_str_new((char const * const *)labels, datasize, NULL);
-#else
-  labelData = go_data_vector_str_new((char const * const *)labels, datasize);
-#endif
   gog_series_set_dim(series, 0, labelData, NULL);
   go_data_emit_changed(GO_DATA(labelData));
 
-#ifdef HAVE_GOFFICE
   sliceData = go_data_vector_val_new(data, datasize, NULL);
-#else
-  sliceData = go_data_vector_val_new(data, datasize);
-#endif
   gog_series_set_dim(series, 1, sliceData, NULL);
   go_data_emit_changed(GO_DATA(sliceData));
 
@@ -449,11 +430,7 @@
                 "type",                         barType,
                 "overlap_percentage",           barOverlap, 
 		NULL);
-#ifdef HAVE_GOFFICE
   labelData = go_data_vector_str_new(  (char const * const *)col_labels, datacols, NULL );
-#else
-  labelData = go_data_vector_str_new(  (char const * const *)col_labels, datacols );
-#endif
   {
     // foreach row:
     //   series = row
@@ -474,11 +451,7 @@
       gog_series_set_dim( series, 0, labelData, NULL );
       go_data_emit_changed (GO_DATA (labelData));
 
-#ifdef HAVE_GOFFICE
       sliceData = go_data_vector_val_new( data + (i*datarows), datarows, NULL );
-#else
-      sliceData = go_data_vector_val_new( data + (i*datarows), datarows );
-#endif
       gog_series_set_dim( series, 1, sliceData, NULL );
       
       /*
@@ -539,19 +512,11 @@
 
   series = gog_plot_new_series( plot );
 
-#ifdef HAVE_GOFFICE
   sliceData = go_data_vector_val_new( xData, datasize, NULL );
-#else
-  sliceData = go_data_vector_val_new( xData, datasize );
-#endif
   gog_series_set_dim( series, 0, sliceData, NULL );
   go_data_emit_changed (GO_DATA (sliceData));
 
-#ifdef HAVE_GOFFICE
   sliceData = go_data_vector_val_new( yData, datasize, NULL );
-#else
-  sliceData = go_data_vector_val_new( yData, datasize );
-#endif
   gog_series_set_dim( series, 1, sliceData, NULL );
   go_data_emit_changed (GO_DATA (sliceData));
 



More information about the gnucash-changes mailing list